anchor.diff:  
   type [<TypeDescriptionProvider (typeof<EntityModelTypeDescriptorProvider>)>] EntityModelTypeDescriptorSource =
       { Address : Address
  +      Form : NuEditForm
         WorldChangers : WorldChangers
         RefWorld : World ref }
   
  
positive.code:     override this.SetValue (source, value) =
          let entityModelTds = source :?> EntityModelTypeDescriptorSource
          let changer = (fun world_ ->
              let world_ = setEntityModelPropertyValue entityModelTds.Address property value world_
              let entityModel = get world_ <| worldEntityModel entityModelTds.Address
              propagateEntityModelProperties entityModel world_)
          // NOTE: even though this ref world will eventually get blown away, it must still be
          // updated here so that the change is reflected immediately by the property grid.
          entityModelTds.RefWorld := changer !entityModelTds.RefWorld
  
negative.code:     ignore <| Single.TryParse (form.creationDepthTextBox.Text, creationDepth)
      !creationDepth
  
  let beginDrag (form : NuEditForm) worldChangers refWorld _ _ message world_ =
      match message.Data with
      | MouseButtonData (position, _) ->
          if form.InteractButton.Checked then (message, world_)
          else
              let groupModelAddress = Test.GroupModelAddress
              let groupModel = get world_ (worldGroupModel groupModelAddress)
              let entityModels = Map.toValueList <| (get groupModel groupModelGroup).EntityModels
              let optPicked = tryPick position entityModels world_
              match optPicked with
              | None -> (handle message, world_)
              | Some entityModel ->
                  let entity = get entityModel entityModelEntity
                  let entityModelAddress = groupModelAddress @ [Lun.make entity.Name]
                  refWorld := world_ // must be set for property grid
                  form.propertyGrid.SelectedObject <- { Address = entityModelAddress; Form = form; WorldChangers = worldChangers; RefWorld = refWorld }
                  let entityModelTransform = getEntityModelTransform true world_.Camera entityModel
                  let dragState = DragPosition (entityModelTransform.Position + world_.MouseState.MousePosition, world_.MouseState.MousePosition, entityModelAddress)
                  let world_ = { world_ with ExtData = dragState }
                  (handle message, world_)
      | _ -> failwith <| "Expected MouseButtonData in message '" + str message + "'."
  
  let endDrag (form : NuEditForm) _ _ message world =
  