anchor.diff:              match box layer with
               | null -> address // HACK: this case is a hack to be able to insert events into the elmish event handler
               | _ -> acatff address layer.LayerAddress
  -    
  +
           /// Concatenate an address with a layer's address, forcing the type of first address.
           static member (-->) (address : 'a Address, layer : Layer) = Simulant.acatff address layer
  -        
  +
           /// Derive an entity from its layer.
           static member (/) (layer : Layer, entityName) = Entity (atoa<Layer, Entity> layer.LayerAddress --> ntoa entityName)
  -    
  +
       /// The type around which the whole game engine is based! Used in combination with dispatchers
       /// to implement things like buttons, characters, blocks, and things of that sort.
       /// OPTIMIZATION: Includes pre-constructed entity change and update event addresses to avoid
  
positive.code: 
      /// Dynamically augments an entity's behavior in a composable way.
      and Facet () =
      
          /// Register a facet when adding it to an entity.
          abstract Register : Entity * World -> World
          default this.Register (_, world) = world
      
          /// Unregister a facet when removing it from an entity.
          abstract Unregister : Entity * World -> World
          default this.Unregister (_, world) = world
  
negative.code:                 match that with
                  | :? Layer as that -> (this :> Layer IComparable).CompareTo that
                  | _ -> failwith "Invalid Layer comparison (comparee not of type Layer)."
  
          override this.ToString () = scstring this.LayerAddress
  
          /// Get the name of a layer.
          member this.Name = Address.getName this.LayerAddress
  
          /// Get the latest value of a layer's properties.
          [<DebuggerBrowsable (DebuggerBrowsableState.RootHidden)>]
          member private this.View = Debug.World.viewLayer (this :> obj) Debug.World.Chosen
  