anchor.diff:              entity.GetCelSize world
   
   [<AutoOpen>]
  +module EntityDispatcherModule =
  +
  +    type [<AbstractClass>] EntityDispatcher<'model, 'message, 'effect>
  +        (propertyFn : Entity -> PropertyTag<'model, World>) =
  +        inherit EntityDispatcher ()
  +
  +        override this.Register (entity, world) =
  +            let property = propertyFn entity
  +            let bindings = this.Binding (entity, world)
  +            let world =
  +                List.fold (fun world binding ->
  +                    match binding with
  +                    | Message binding ->
  +                        Stream.monitor (fun evt world ->
  +                            let model = property.Get world
  +                            let messageOpt = binding.MakeValueOpt evt
  +                            match messageOpt with
  +                            | Some message ->
  +                                let (model, effect) = this.Message (message, model, entity, world)
  +                                let world = property.Set model world
  +                                effect world
  +                            | None -> world)
  +                            entity binding.Stream world
  +                    | Effect binding ->
  +                        Stream.monitor (fun evt world ->
  +                            let model = property.Get world
  +                            let messageOpt = binding.MakeValueOpt evt
  +                            match messageOpt with
  +                            | Some message -> this.Effect (message, model, entity, world)
  +                            | None -> world)
  +                            entity binding.Stream world)
  +                    world bindings
  +            let model = property.Get world
  +            let world = this.View (Initialize, model, entity, world)
  +            world
  +            
  +        override this.Unregister (entity, world) =
  +            let property = propertyFn entity
  +            let model = property.Get world
  +            let world = this.View (Finalize, model, entity, world)
  +            world
  +
  +        override this.Actualize (entity, world) =
  +            let property = propertyFn entity
  +            let model = property.Get world
  +            this.View (Actualize, model, entity, world)
  +
  +        abstract member Binding : Entity * World -> Binding<'message, 'effect, Entity, World> list
  +        abstract member Message : 'message * 'model * Entity * World -> 'model * (World -> World)
  +        abstract member Effect : 'effect * 'model * Entity * World -> World
  +        abstract member View : ViewPhase * 'model * Entity * World -> World
  +
  +[<AutoOpen>]
   module ImperativeDispatcherModule =
   
       type ImperativeDispatcher () =
           inherit EntityDispatcher ()
           interface Imperative
   
  +    type [<AbstractClass>] ImperativeDispatcher<'model, 'message, 'effect> (propertyFn) =
  +        inherit EntityDispatcher<'model, 'message, 'effect> (propertyFn)
  +        interface Imperative
  +
   [<AutoOpen>]
   module EffectDispatcherModule =
   
  
positive.code:              Define? SwallowMouseLeft true]
  
          override dispatcher.Register (gui, world) =
              let world = World.monitorPlus handleMouseLeft Events.MouseLeftDown gui world |> snd
              let world = World.monitorPlus handleMouseLeft Events.MouseLeftUp gui world |> snd
              world
  
negative.code: 
      type NodeDispatcher () =
          inherit EntityDispatcher ()
  
          static member IntrinsicFacetNames =
              [typeof<NodeFacet>.Name]
  
      type [<AbstractClass>] NodeDispatcher<'model, 'message, 'effect> (propertyFn) =
          inherit EntityDispatcher<'model, 'message, 'effect> (propertyFn)
  
          static member IntrinsicFacetNames =
              [typeof<NodeFacet>.Name]
  