anchor.diff:      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_)
  +            if property.Name = "Name" then
  +                let valueStr = str value
  +                if Int64.TryParse (valueStr, ref 0L) then
  +                    trace <| "Invalid entity model name '" + valueStr + "' (must not be a number)."
  +                    world_
  +                else
  +                    let entityModelAddress_ = entityModelTds.Address
  +                    let entityModel_ = get world_ <| worldEntityModel entityModelAddress_
  +                    let world_ = removeEntityModel entityModelTds.Address world_
  +                    let entity_ = get entityModel_ entityModelEntity
  +                    let entity_ = { entity_ with Name = valueStr }
  +                    let entityModel_ = set entity_ entityModel_ entityModelEntity
  +                    let entityModelAddress_ = Test.GroupModelAddress @ [Lun.make <| valueStr]
  +                    let world_ = addEntityModel entityModelAddress_ entityModel_ world_
  +                    entityModelTds.RefWorld := world_ // must be set for property grid
  +                    entityModelTds.Form.propertyGrid.SelectedObject <- { entityModelTds with Address = entityModelAddress_ }
  +                    world_
  +            else
  +                let entityModelAddress = entityModelTds.Address
  +                let world_ = setEntityModelPropertyValue entityModelAddress property value world_
  +                let entityModel = get world_ <| worldEntityModel entityModelAddress
  +                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
  
positive.code: 
  type [<TypeDescriptionProvider (typeof<EntityModelTypeDescriptorProvider>)>] EntityModelTypeDescriptorSource =
      { Address : Address
        WorldChangers : WorldChangers
        RefWorld : World ref }
  
  
negative.code:             let entityModel_ = setEntityModelTransform true world.Camera 0 0 entityModelTransform entityModel_
              let entity = get entityModel_ entityModelEntity
              let entityModelAddress = Test.GroupModelAddress @ [Lun.make entity.Name]
              refWorld := addEntityModel entityModelAddress entityModel_ world // must be set for property grid
              form.propertyGrid.SelectedObject <- { Address = entityModelAddress; Form = form; WorldChangers = worldChangers; RefWorld = refWorld }
              !refWorld)
          refWorld := changer !refWorld
          worldChangers.Add changer)
  