anchor.diff:                                          let world = World.incrementUpdateCount world
   
                                           // recur
  -                                        World.runWithoutCleanUp runWhile pre post sdlDeps liveness rendererTaskOpt audioPlayerTaskOpt world
  +                                        World.runWithoutCleanUp runWhile pre post sdlDeps liveness rendererThreadOpt audioPlayerThreadOpt world
   
                                       | Exiting -> world
                                   | Exiting -> world
  
positive.code: 
                                          // attempt to finish threads
                                          let world =
                                              match (rendererTaskOpt, audioPlayerTaskOpt) with
                                              | ((Some rendererTask), (Some audioPlayerTask)) ->
  
                                                  // finish all threads
                                                  let rendererResult = rendererTask |> Async.AwaitTask |> Async.RunSynchronously
                                                  let audioPlayerResult = audioPlayerTask |> Async.AwaitTask |> Async.RunSynchronously
  
                                                  // apply their results
                                                  let world = Subsystem.applyResult rendererResult (World.getRenderer world) world
  
negative.code:             World.cleanUpSubsystems world |> ignore
  
          /// Run the game engine with the given handlers, but don't clean up at the end, and return the world.
          static member runWithoutCleanUp runWhile pre post sdlDeps liveness rendererThreadOpt audioPlayerThreadOpt world =
              if runWhile world then
                  let world = pre world
                  match liveness with
  