anchor.diff:  open Nu.Game
   open Nu.Simulation
   
  -let TestScreenAddress = [Lun.make "testScreen"]
  -let TestGroupAddress = TestScreenAddress @ [Lun.make "testGroup"]
  -let TestFeelerAddress = TestGroupAddress @ [Lun.make "testFeeler"]
  -let TestTextBoxAddress = TestGroupAddress @ [Lun.make "testTextBox"]
  -let TestToggleAddress = TestGroupAddress @ [Lun.make "testToggle"]
  -let TestLabelAddress = TestGroupAddress @ [Lun.make "testLabel"]
  -let TestButtonAddress = TestGroupAddress @ [Lun.make "testButton"]
  +let TestScreenAddress = [Lun.make "screen"]
  +let TestGroupAddress = TestScreenAddress @ [Lun.make "group"]
  +let TestFeelerAddress = TestGroupAddress @ [Lun.make "feeler"]
  +let TestTextBoxAddress = TestGroupAddress @ [Lun.make "textBox"]
  +let TestToggleAddress = TestGroupAddress @ [Lun.make "toggle"]
  +let TestLabelAddress = TestGroupAddress @ [Lun.make "label"]
  +let TestButtonAddress = TestGroupAddress @ [Lun.make "button"]
   let TestBlockAddress = TestGroupAddress @ [Lun.make "testBlock"]
  -let TestTileMapAddress = TestGroupAddress @ [Lun.make "testTileMap"]
  -let TestFloorAddress = TestGroupAddress @ [Lun.make "testFloor"]
  -let TestAvatarAddress = TestGroupAddress @ [Lun.make "testAvatar"]
  -let TouchFeelerAddress = Lun.make "touch" :: TestFeelerAddress
  +let TestTileMapAddress = TestGroupAddress @ [Lun.make "tileMap"]
  +let TestFloorAddress = TestGroupAddress @ [Lun.make "floor"]
  +let TestAvatarAddress = TestGroupAddress @ [Lun.make "avatar"]
   let ClickTestButtonAddress = Lun.make "click" :: TestButtonAddress
   
   let createTestBlock assetMetadataMap =
  
positive.code:         let playSong = PlaySong { Song = { SongAssetName = Lun.make "Song"; PackageName = Lun.make "Misc"; PackageFileName = "AssetGraph.xml" }; FadeOutCurrentSong = true }
  
          // scripting convention
          let tw_ = testWorld
          let tw_ = subscribe TickAddress [] moveAvatar tw_
          let tw_ = subscribe ClickTestButtonAddress [] addBoxes tw_
          let tw_ = addScreen testScreen TestScreenAddress tw_
          let tw_ = setP (Some TestScreenAddress) World.optActiveScreenAddress tw_
          let tw_ = addGroup testGroup TestGroupAddress tw_
          let tw_ = addEntityGuiFeeler (testFeelerGuiEntity, testFeelerGui, testFeeler) TestFeelerAddress tw_
          let tw_ = addEntityGuiTextBox (testTextBoxGuiEntity, testTextBoxGui, testTextBox) TestTextBoxAddress tw_
          let tw_ = addEntityGuiToggle (testToggleGuiEntity, testToggleGui, testToggle) TestToggleAddress tw_
          let tw_ = addEntityGuiLabel (testLabelGuiEntity, testLabelGui, testLabel) TestLabelAddress tw_
          let tw_ = addEntityGuiButton (testButtonGuiEntity, testButtonGui, testButton) TestButtonAddress tw_
          let tw_ = addEntityActorTileMap (testTileMapActorEntity, testTileMapActor, testTileMap) TestTileMapAddress tw_
          let tw_ = addEntityActorBlock (testFloorActorEntity, testFloorActor, testFloor) TestFloorAddress tw_
          let tw_ = addEntityActorAvatar (testAvatarActorEntity, testAvatarActor, testAvatar) TestAvatarAddress tw_
          let tw_ = { tw_ with PhysicsMessages = SetGravityMessage Vector2.Zero :: tw_.PhysicsMessages }
          let tw_ = { tw_ with RenderMessages = hintRenderingPackageUse :: tw_.RenderMessages }
          Right { tw_ with AudioMessages = FadeOutSong :: playSong :: tw_.AudioMessages }
  
  let testHandleUpdate world =
      let (_, actor, _) = get world (World.entityActorAvatar TestAvatarAddress)
  
negative.code:               PhysicsMessages = []
                Components = [] }
  
          let screen =
              { Id = getNuId ()
                Groups = Map.empty }
  
          let group =
              { Id = getNuId ()
                Entities = Map.empty }
            
          let feeler =
              { IsTouched = false }
  
          let feelerGui =
              { Position = Vector2.Zero
                Depth = -0.1f
                Size = Vector2 (single sdlDeps.Config.ViewW, single sdlDeps.Config.ViewH)
                GuiSemantic = Feeler feeler }
  
          let feelerEntity =
              { Id = getNuId ()
                Enabled = true
                Visible = true
                EntitySemantic = Gui feelerGui }
            
          let textBox =
              { BoxSprite = { SpriteAssetName = Lun.make "Image3"; PackageName = Lun.make "Misc"; PackageFileName = "AssetGraph.xml" }
                Text = "Hi!"
                TextFont = { FontAssetName = Lun.make "Font"; PackageName = Lun.make "Misc"; PackageFileName = "AssetGraph.xml" }
                TextOffset = Vector2 4.0f
                TextColor = Vector4.One }
  
          let textBoxGui =
              { Position = Vector2 (120.0f, 50.0f)
                Depth = 0.1f
                Size = getTextureSizeAsVector2 (Lun.make "Image3") (Lun.make "Misc") assetMetadataMap
                GuiSemantic = TextBox textBox }
  
          let textBoxEntity =
              { Id = getNuId ()
                Enabled = true
                Visible = true
                EntitySemantic = Gui textBoxGui }
            
          let toggle =
              { IsOn = false
                IsPressed = false
                OffSprite = { SpriteAssetName = Lun.make "Image3"; PackageName = Lun.make "Misc"; PackageFileName = "AssetGraph.xml" }
                OnSprite = { SpriteAssetName = Lun.make "Image6"; PackageName = Lun.make "Misc"; PackageFileName = "AssetGraph.xml" }
                ToggleSound = { SoundAssetName = Lun.make "Sound"; PackageName = Lun.make "Misc"; PackageFileName = "AssetGraph.xml" }}
  
          let toggleGui =
              { Position = Vector2 (720.0f, 50.0f)
                Depth = 0.1f
                Size = getTextureSizeAsVector2 (Lun.make "Image3") (Lun.make "Misc") assetMetadataMap
                GuiSemantic = Toggle toggle }
  
          let toggleEntity =
              { Id = getNuId ()
                Enabled = true
                Visible = true
                EntitySemantic = Gui toggleGui }
            
          let label =
              { LabelSprite = { SpriteAssetName = Lun.make "Image5"; PackageName = Lun.make "Misc"; PackageFileName = "AssetGraph.xml" }}
  
          let labelGui =
              { Position = Vector2.Zero
                Depth = -0.1f
                Size = getTextureSizeAsVector2 (Lun.make "Image5") (Lun.make "Misc") assetMetadataMap
                GuiSemantic = Label label }
  
          let labelEntity =
              { Id = getNuId ()
                Enabled = true
                Visible = true
                EntitySemantic = Gui labelGui }
            
          let button =
              { IsDown = false
                UpSprite = { SpriteAssetName = Lun.make "Image"; PackageName = Lun.make "Misc"; PackageFileName = "AssetGraph.xml" }
                DownSprite = { SpriteAssetName = Lun.make "Image2"; PackageName = Lun.make "Misc"; PackageFileName = "AssetGraph.xml" }
                ClickSound = { SoundAssetName = Lun.make "Sound"; PackageName = Lun.make "Misc"; PackageFileName = "AssetGraph.xml" }}
  
          let buttonGui =
              { Position = Vector2 (310.0f, 20.0f)
                Depth = 0.1f
                Size = getTextureSizeAsVector2 (Lun.make "Image") (Lun.make "Misc") assetMetadataMap
                GuiSemantic = Button button }
  
          let buttonEntity =
              { Id = getNuId ()
                Enabled = true
                Visible = true
                EntitySemantic = Gui buttonGui }
      
          let tmxMap =
              TmxMap "TileMap.tmx"
  
          let tileMap =
              { PhysicsIds = [getPhysicsId ()]
                Density = NormalDensity
                TileMapAsset = { TileMapAssetName = Lun.make "TileMap"; PackageName = Lun.make "Misc"; PackageFileName = "AssetGraph.xml" }
                TmxMap = tmxMap
                TileMapMetadata = getTileMapMetadata (Lun.make "TileMap") (Lun.make "Misc") assetMetadataMap }
  
          let tileMapActor =
              { Position = Vector2.Zero
                Depth = -0.1f
                Size = Vector2 (single (tmxMap.Width * tmxMap.TileWidth), single (tmxMap.Height * tmxMap.TileHeight))
                Rotation = 0.0f
                ActorSemantic = TileMap tileMap }
  
          let tileMapEntity =
              { Id = getNuId ()
                Enabled = true
                Visible = true
                EntitySemantic = Actor tileMapActor }
      
          let floor =
              { PhysicsId = getPhysicsId ()
                Density = NormalDensity
                BodyType = Static
                Sprite = { SpriteAssetName = Lun.make "Image4"; PackageName = Lun.make "Misc"; PackageFileName = "AssetGraph.xml" }}
  
          let floorActor =
              { Position = Vector2 (120.0f, 520.0f)
                Depth = 0.0f
                Size = getTextureSizeAsVector2 (Lun.make "Image4") (Lun.make "Misc") assetMetadataMap
                Rotation = 0.0f
                ActorSemantic = Block floor }
  
          let floorEntity =
              { Id = getNuId ()
                Enabled = true
                Visible = true
                EntitySemantic = Actor floorActor }
      
          let avatar =
              { PhysicsId = getPhysicsId ()
                Density = NormalDensity
                Sprite = { SpriteAssetName = Lun.make "Image7"; PackageName = Lun.make "Misc"; PackageFileName = "AssetGraph.xml" }}
  
          let avatarActor =
              { Position = Vector2 (300.0f, 300.0f)
                Depth = 0.0f
                Size = getTextureSizeAsVector2 (Lun.make "Image7") (Lun.make "Misc") assetMetadataMap
                Rotation = 0.0f
                ActorSemantic = Avatar avatar }
  
          let avatarEntity =
              { Id = getNuId ()
                Enabled = true
                Visible = true
                EntitySemantic = Actor avatarActor }
  
          let moveAvatar address _ message world =
              let (_, _, feeler) = get world (World.entityGuiFeeler TestFeelerAddress)
  