anchor.diff:                  let collider = World.getEntity colliderAddress world
                   let isBullet = Entity.dispatchesAs typeof<BulletDispatcher> collider world
                   if isBullet then
  -                    let enemy = World.getEntity event.Subscriber world
  -                    let enemy = Entity.setHealth (enemy.Health - 1) enemy
  -                    let world = World.setEntity event.Subscriber enemy world
  -                    if enemy.Health = 0 then
  -                        let world = World.removeEntity event.Subscriber world
  -                        let world = playEnemyExplosionSound world
  -                        (Unhandled, world)
  -                    else
  -                        let world = playHitSound world
  -                        (Unhandled, world)
  +                    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 + "'."
   
  
positive.code:             let sound = PlaySoundMessage { Volume = 1.0f; Sound = soundAsset }
              { world with AudioMessages = sound :: world.AudioMessages }
  
          let movementHandler event world =
              if World.gamePlaying world then
                  let enemy = World.getEntity event.Subscriber world
                  let hasAppeared = enemy.Position.X - (world.Camera.EyeCenter.X + world.Camera.EyeSize.X * 0.5f) < 0.0f
                  if hasAppeared then
                      let physicsId = Entity.getPhysicsId enemy
                      let optGroundTangent = Physics.getOptGroundContactTangent physicsId world.Integrator
                      let force =
                          match optGroundTangent with
                          | None -> Vector2 (-2000.0f, -30000.0f)
                          | Some groundTangent -> Vector2.Multiply (groundTangent, Vector2 (-2000.0f, if groundTangent.Y > 0.0f then 8000.0f else 0.0f))
                      let applyForceMessage = ApplyForceMessage { PhysicsId = physicsId; Force = force }
                      let world = { world with PhysicsMessages = applyForceMessage :: world.PhysicsMessages }
                      (Unhandled, world)
                  else (Unhandled, world)
              else (Unhandled, world)
  
          let collisionHandler event world =
  
negative.code:         override dispatcher.Register (address, world) =
              let world = base.Register (address, world)
              world |>
                  World.observe TickEventName address -<| CustomSub tickHandler |>
                  World.observe (CollisionEventName @ address) address -<| CustomSub collisionHandler
  
          override dispatcher.Unregister (address, world) =
  