anchor.diff:          override dispatcher.Register (address, world) =
               let world = base.Register (address, world)
               world |>
  -                World.observe TickEventName address -<| CustomSub movementHandler |>
  +                World.observe TickEventName address -<| CustomSub tickHandler |>
                   World.observe (CollisionEventName @ address) address -<| CustomSub collisionHandler
   
           override dispatcher.Unregister (address, world) =
  
positive.code:     type EnemyDispatcher () =
          inherit SimpleBodyDispatcher
              (fun (enemy : Entity) -> CapsuleShape { Height = enemy.Size.Y * 0.5f; Radius = enemy.Size.Y * 0.25f; Center = Vector2.Zero })
              
          let playHitSound world =
              let soundAsset = { SoundAssetName = "Hit"; PackageName = StagePackageName; PackageFileName = AssetGraphFileName }
              let sound = PlaySoundMessage { Volume = 1.0f; Sound = soundAsset }
  
negative.code:                 let collider = World.getEntity colliderAddress world
                  let isBullet = Entity.dispatchesAs typeof<BulletDispatcher> collider world
                  if isBullet then
                      let world = World.withEntity (fun enemy -> Entity.setHealth (enemy.Health - 1) enemy) event.Subscriber world
                      let world = playHitSound world
                      (Unhandled, world)
                  else (Unhandled, world)
              | _ -> failwith <| "Expected CollisionData from event '" + addrToStr event.Name + "'."
  
  