anchor.diff:      
       /// The screen type that allows transitioning to and from other screens, and also hosts the
       /// currently interactive layers of entities.
  -    and [<StructuralEquality; NoComparison>] Screen =
  +    and [<CustomEquality; NoComparison>] Screen =
           { ScreenAddress : Screen Address }
       
           interface Simulant with
               member this.ParticipantAddress = atoa<Screen, Participant> this.ScreenAddress
               member this.SimulantAddress = atoa<Screen, Simulant> this.ScreenAddress
               end
  -    
  -        /// View as address string.
  +
  +        override this.Equals that =
  +            match that with
  +            | :? Screen as that -> this.ScreenAddress == that.ScreenAddress
  +            | _ -> failwithumf ()
  +
  +        override this.GetHashCode () = this.ScreenAddress.GetHashCode ()
  +    
           override this.ToString () = scstring this.ScreenAddress
       
           /// Get the name of a screen proxy.
  
positive.code:     /// to implement things like buttons, characters, blocks, and things of that sort.
      /// OPTIMIZATION: Includes pre-constructed entity change and update event addresses to avoid
      /// reconstructing new ones for each entity every frame.
      and [<StructuralEquality; NoComparison>] Entity =
          { EntityAddress : Entity Address
            UpdateAddress : unit Address
            PostUpdateAddress : unit Address
  
negative.code:             end
      
      /// The game type that hosts the various screens used to navigate through a game.
      and [<CustomEquality; NoComparison>] Game =
          { GameAddress : Game Address }
      
          interface Simulant with
              member this.ParticipantAddress = atoa<Game, Participant> this.GameAddress
              member this.SimulantAddress = atoa<Game, Simulant> this.GameAddress
              end
  
          override this.Equals that =
              match that with
              | :? Game as that -> this.GameAddress == that.GameAddress
              | _ -> failwithumf ()
  
          override this.GetHashCode () = this.GameAddress.GetHashCode ()
  
          override this.ToString () = scstring this.GameAddress
      
          /// Get the latest value of a game's properties.
  