anchor.diff:              let world = synchronizeEventSignals forgeOld forge origin screen world
               let world = synchronizeEventHandlers forgeOld forge origin screen world
               let world = synchronizeProperties forgeOld forge screen world
  -            let (groupsAdded, groupsRemoved, groupsPotentiallyAltered) = differentiateChildren<Group, GroupForge> forgeOld forge screen
  -            let world = Seq.fold (fun world group -> World.destroyGroup group world) world groupsRemoved
  -            let world =
  -                Seq.fold (fun world (kvp : KeyValuePair<Group, _>) ->
  -                    let (group, groupForge) = (kvp.Key, kvp.Value)
  -                    let groupForgeOld = forgeOld.GroupForges.[group.Name]
  -                    synchronizeGroup groupForgeOld groupForge origin group world)
  -                    world groupsPotentiallyAltered
  -            let world =
  -                Seq.fold (fun world (group : Group, groupForge : GroupForge) ->
  -                    let (group, world) = World.createGroup4 groupForge.GroupDispatcherName (Some group.Name) group.Screen world
  -                    synchronizeGroup GroupForge.empty groupForge origin group world)
  -                    world groupsAdded
  -            world
  +            match tryDifferentiateChildren<Group, GroupForge> forgeOld forge screen with
  +            | Some (groupsAdded, groupsRemoved, groupsPotentiallyAltered) ->
  +                let world = Seq.fold (fun world group -> World.destroyGroup group world) world groupsRemoved
  +                let world =
  +                    Seq.fold (fun world (kvp : KeyValuePair<Group, _>) ->
  +                        let (group, groupForge) = (kvp.Key, kvp.Value)
  +                        let groupForgeOld = forgeOld.GroupForges.[group.Name]
  +                        synchronizeGroup groupForgeOld groupForge origin group world)
  +                        world groupsPotentiallyAltered
  +                let world =
  +                    Seq.fold (fun world (group : Group, groupForge : GroupForge) ->
  +                        let (group, world) = World.createGroup4 groupForge.GroupDispatcherName (Some group.Name) group.Screen world
  +                        synchronizeGroup GroupForge.empty groupForge origin group world)
  +                        world groupsAdded
  +                world
  +            | None -> world
           else world
   
       ///
  
positive.code:                     let childSimulant = World.derive (Address.makeFromArray (Array.add childEntry.Key simulant.SimulantAddress.Names)) :?> 'child
                      childrenRemoved.Add childSimulant
                      childrenPotentiallyAltered.Remove childSimulant |> ignore
              (childrenAdded, childrenRemoved, childrenPotentiallyAltered)
          else (List (), List (), OrderedDictionary ())
  
      ///
      let rec synchronizeEntity (forgeOld : EntityForge) (forge : EntityForge) (origin : Simulant) (entity : Entity) world =
  
negative.code:             let world = synchronizeEventSignals forgeOld forge origin game world
              let world = synchronizeEventHandlers forgeOld forge origin game world
              let world = synchronizeProperties forgeOld forge game world
              match tryDifferentiateChildren<Screen, ScreenForge> forgeOld forge game with
              | Some (screensAdded, screensRemoved, screensPotentiallyAltered) ->
                  let world = Seq.fold (fun world screen -> World.destroyScreen screen world) world screensRemoved
                  let world =
                      Seq.fold (fun world (kvp : KeyValuePair<Screen, _>) ->
                          let (screen, screenForge) = (kvp.Key, kvp.Value)
                          let screenForgeOld = forgeOld.ScreenForges.[screen.Name]
                          synchronizeScreen screenForgeOld screenForge origin screen world)
                          world screensPotentiallyAltered
                  let world =
                      Seq.fold (fun world (screen : Screen, screenForge : ScreenForge) ->
                          let (screen, world) = World.createScreen3 screenForge.ScreenDispatcherName (Some screen.Name) world
                          let world = World.applyScreenBehavior setScreenSplash screenForge.ScreenBehavior screen world
                          synchronizeScreen ScreenForge.empty screenForge origin screen world)
                          world screensAdded
                  (forge.InitialScreenNameOpt |> Option.map Screen, world)
              | None -> (forge.InitialScreenNameOpt |> Option.map Screen, world)
          else (forge.InitialScreenNameOpt |> Option.map Screen, world)
  
      ///
  