anchor.diff:  open Nu.Game
   open Nu.Simulation
   
  -type EntityPropertyChange =
  +type EntityChange =
       { Address : Address
         FieldInfo : FieldInfo
         Value : obj }
   
  -// NOTE: I believe .NET's lack of parameterization in one aspect is forcing me to use this global.
  -let gEntityChanges = List<EntityPropertyChange> ()
  -
  -let applyEntityChange world (change : EntityPropertyChange) =
  +let applyEntityChange world (change : EntityChange) =
       let entityLens = World.entity change.Address
       let entity = get world entityLens
       let entity2 = { entity with Id = entity.Id } // NOTE: this is just a hacky way to copy an entity in lieu of reflection
       change.FieldInfo.SetValue (entity2, change.Value)
       set entity2 world entityLens
   
  -let applyEntityChanges entityChanges world =
  -    Seq.fold applyEntityChange world entityChanges
  +let applyEntityChanges changes world =
  +    Seq.fold applyEntityChange world changes
  +
  +// NOTE: I believe .NET's lack of parameterization in one aspect is forcing me to use this global-
  +// style variable (but perhaps I've merely overlooked how to parameterize this?)
  +let private gEntityChanges = List<EntityChange> ()
   
   type [<TypeDescriptionProvider (typeof<EntityTypeDescriptorProvider>)>] EntityTypeDescriptorSource =
       { Address : Address
  
positive.code:     override this.GetTypeDescriptor (_, _) = Etd
  
  let [<EntryPoint; STAThread>] main _ =
      let refWorld = ref Unchecked.defaultof<World>
      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
      run4
          (fun sdlDeps ->
  
  
negative.code:     override this.CanResetValue source = false
      override this.ResetValue source = ()
      override this.ShouldSerializeValue source = true
      override this.IsReadOnly
          // NOTE: we make entity id read-only
          with get () = fieldInfo.Name = "Id@"
      override this.GetValue source =
          let entityTds = source :?> EntityTypeDescriptorSource
          let entityLens = World.entity entityTds.Address
  