anchor.diff:               define Entity.ClickSoundOpt (Some Assets.DefaultSound)
                define Entity.ClickSoundVolume Constants.Audio.DefaultSoundVolume]
   
  -        override this.Register (button, world) =
  -            let world = World.monitor handleMouseLeftDown Events.MouseLeftDown button world
  -            let world = World.monitor handleMouseLeftUp Events.MouseLeftUp button world
  +        override this.Register (entity, world) =
  +            let world = World.monitor handleMouseLeftDown Events.MouseLeftDown entity world
  +            let world = World.monitor handleMouseLeftUp Events.MouseLeftUp entity world
               world
   
  -        override this.Actualize (button, world) =
  -            if button.GetVisible world then
  -                let transform = button.GetTransform world
  -                let image = if button.GetDown world then button.GetDownImage world else button.GetUpImage world
  +        override this.Actualize (entity, world) =
  +            if entity.GetVisible world then
  +                let transform = entity.GetTransform world
  +                let image = if entity.GetDown world then entity.GetDownImage world else entity.GetUpImage world
                   World.enqueueRenderMessage
                       (LayeredDescriptorMessage
                           { Depth = transform.Depth
  
positive.code:                                   Offset = Vector2.Zero
                                    InsetOpt = None
                                    Image = image
                                    Color = if button.GetEnabled world then Color.White else button.GetDisabledColor world
                                    Glow = Color.Zero
                                    Flip = FlipNone }})
                      world
              else world
  
          override this.GetQuickSize (button, world) =
              match Metadata.tryGetTextureSizeF (button.GetUpImage world) (World.getMetadata world) with
              | Some size -> size
              | None -> Constants.Engine.DefaultEntitySize
  
  
negative.code:         inherit EntityDispatcher ()
  
          static let handleMouseLeft evt world =
              let entity = evt.Subscriber : Entity
              let data = evt.Data : MouseButtonData
              let handling =
                  if entity.GetSelected world && entity.GetVisible world then
                      let mousePositionWorld = World.mouseToWorld (entity.GetAbsolute world) data.Position world
                      if data.Down &&
                         entity.GetSwallowMouseLeft world &&
                         Math.isPointInBounds mousePositionWorld (entity.GetBounds world) then
                         Resolve
                      else Cascade
                  else Cascade
  