anchor.diff:      override this.GetValue source =
           let entityTds = source :?> EntityTypeDescriptorSource
           let entityLens = World.entity entityTds.Address
  -        let entity = get entityTds.RefRefWorld.Value.Value entityLens
  +        let entity = get entityTds.RefWorld.Value entityLens
           fieldInfo.GetValue entity
       override this.SetValue (source, value) =
           let entityTds = source :?> EntityTypeDescriptorSource
           let entityChange = { Address = entityTds.Address; FieldInfo = fieldInfo; Value = value }
  -        entityTds.RefRefWorld.Value := applyEntityChange entityTds.RefRefWorld.Value.Value entityChange
  +        entityTds.RefWorld := applyEntityChange entityTds.RefWorld.Value entityChange
           gEntityChanges.Add entityChange
   
   and EntityTypeDescriptor () =
       inherit CustomTypeDescriptor ()
       let Pdc =
  -        let ty = typeof<Entity>
  -        let fields = ty.GetFields (BindingFlags.Instance ||| BindingFlags.NonPublic)
  +        let aType = typeof<Entity>
  +        let fields = aType.GetFields (BindingFlags.Instance ||| BindingFlags.NonPublic)
           let propertyDescriptors = Array.map (fun field -> new EntityPropertyDescriptor (field) :> PropertyDescriptor) fields
           PropertyDescriptorCollection propertyDescriptors
       override this.GetProperties optAttributes = Pdc
  
positive.code:     let Etd = EntityTypeDescriptor () :> ICustomTypeDescriptor
      override this.GetTypeDescriptor (_, _) = Etd
  
  [<EntryPoint; STAThread>]
  let main _ =
      use form = new NuEditForm ()
      let sdlViewConfig = ExistingWindow form.displayPanel.Handle
      let sdlRenderFlags = enum<SDL.SDL_RendererFlags> (int SDL.SDL_RendererFlags.SDL_RENDERER_ACCELERATED ||| int SDL.SDL_RendererFlags.SDL_RENDERER_PRESENTVSYNC)
      let sdlConfig = makeSdlConfig sdlViewConfig 900 600 sdlRenderFlags 1024
      let refRefWorld = ref <| ref Unchecked.defaultof<World> // ugh
      run4
          (fun sdlDeps ->
  
              refRefWorld.Value := createEmptyWorld sdlDeps
  
              match tryGenerateAssetMetadataMap "AssetGraph.xml" with
              | Left errorMsg -> Left errorMsg
  
negative.code:                       IsVisible = true
                        EntitySemantic = Gui testTextBoxGui }
          
                  refWorld := addScreen testScreen testScreenAddress refWorld.Value
                  refWorld := setP (Some testScreenAddress) World.optActiveScreenAddress refWorld.Value
                  refWorld := addGroup testGroup testGroupAddress refWorld.Value
                  refWorld := addEntityGuiTextBox (testTextBoxGuiEntity, testTextBoxGui, testTextBox) testTextBoxAddress refWorld.Value
  
                  let testTypeSource = { Address = testTextBoxAddress; RefWorld = refWorld }
                  form.propertyGrid.SelectedObject <- testTypeSource
  
                  form.exitToolStripMenuItem.Click.Add (fun _ -> form.Close ())
                  form.Show ()
                  Right refWorld.Value)
          (fun world ->
              // NOTE: the old refWorld will be blown away here!
              refWorld := applyEntityChanges gEntityChanges world
              (not form.IsDisposed, refWorld.Value))
          (fun world ->
              form.displayPanel.Invalidate ()
              world)
  