method private sleep =
    List.iter
      (fun { transition = transition ; source = s } ->
         s#leave ~dynamic:true (self:>source) ;
         Lang.iter_sources (fun s -> s#leave ~dynamic:true (self:>source))
           transition)
      cases ;
    match selected with
      | None -> ()
      | Some (_,s) -> s#leave (self:>source)