anchor.diff:              | Some entityModel ->
                   let entity = get entityModel entityModelEntity
                   let entityModelAddress = groupModelAddress @ [Lun.make entity.Name]
  -                form.propertyGrid.SelectedObject <- { Address = entityModelAddress; RefWorld = refWorld }
  +                form.propertyGrid.SelectedObject <- { Address = entityModelAddress; WorldChangers = worldChangers; RefWorld = refWorld }
                   let entityModelTransform = getEntityModelTransform true (!refWorld).Camera entityModel
                   let mouseState = (!refWorld).MouseState
                   let dragState = DragPosition (entityModelTransform.Position + mouseState.MousePosition, mouseState.MousePosition, entityModelAddress)
  
positive.code: 
      form.exitToolStripMenuItem.Click.Add (fun _ ->
          form.Close ())
  
      form.saveToolStripMenuItem.Click.Add (fun _ ->
          let saveFileResult = form.saveFileDialog.ShowDialog form
          match saveFileResult with
          | DialogResult.OK -> writeFile form.saveFileDialog.FileName !refWorld
          | _ -> ())
  
      form.openToolStripMenuItem.Click.Add (fun _ ->
          let openFileResult = form.openFileDialog.ShowDialog form
          match openFileResult with
          | DialogResult.OK ->
              let changer = readFile form.openFileDialog.FileName
              refWorld := changer !refWorld
              gWorldChangers.Add changer
          | _ -> ())
  
      form.createEntityButton.Click.Add (fun _ ->
          let changer = (fun world ->
  
negative.code:             | :? EntityModelTypeDescriptorSource as entityModelTds -> removeEntityModel entityModelTds.Address world
              | _ -> world)
          refWorld := changer !refWorld
          worldChangers.Add changer)
  
      form.saveToolStripMenuItem.Click.Add (fun _ ->
          let saveFileResult = form.saveFileDialog.ShowDialog form
          match saveFileResult with
          | DialogResult.OK -> writeFile form.saveFileDialog.FileName !refWorld
          | _ -> ())
  
      form.openToolStripMenuItem.Click.Add (fun _ ->
          let openFileResult = form.openFileDialog.ShowDialog form
          match openFileResult with
          | DialogResult.OK ->
              let changer = readFile form.openFileDialog.FileName
              refWorld := changer !refWorld
              worldChangers.Add changer
          | _ -> ())
  
      form
  
  let tryCreateEditorWorld form worldChangers refWorld sdlDeps =
      let screen = { Id = getNuId (); GroupModels = Map.empty }
      let group = { Id = getNuId (); EntityModels = Map.empty }
      refWorld := createEmptyWorld sdlDeps DragNone
      refWorld := addScreen Test.ScreenModelAddress screen !refWorld
      refWorld := set (Some Test.ScreenModelAddress) !refWorld worldOptSelectedScreenModelAddress
      refWorld := addGroup Test.GroupModelAddress group !refWorld
      refWorld := subscribe DownMouseLeftAddress [] (beginDrag form worldChangers refWorld) !refWorld
      refWorld := subscribe UpMouseLeftAddress [] (endDrag form) !refWorld
      Right !refWorld
  
  let updateEditorWorld form (worldChangers : WorldChangers) refWorld world =
      refWorld := updateDrag form world
      refWorld := Seq.fold (fun world changer -> changer world) !refWorld worldChangers
      worldChangers.Clear ()
      (not form.IsDisposed, !refWorld)
  
  let [<EntryPoint; STAThread>] main _ =
      initTypeConverters ()
      let worldChangers = WorldChangers ()
      let refWorld = ref Unchecked.defaultof<World> // uglaaayyyyyy!
      use form = createNuEditForm worldChangers refWorld
      form.Show ()
      let sdlViewConfig = ExistingWindow form.displayPanel.Handle
      let sdlRenderFlags = enum<SDL.SDL_RendererFlags> (int SDL.SDL_RendererFlags.SDL_RENDERER_ACCELERATED)
      let sdlConfig = makeSdlConfig sdlViewConfig form.displayPanel.MaximumSize.Width form.displayPanel.MaximumSize.Height sdlRenderFlags 1024
      run4
          (tryCreateEditorWorld form worldChangers refWorld)
          (updateEditorWorld form worldChangers refWorld)
          (fun world -> form.displayPanel.Invalidate (); world)
          sdlConfig