anchor.diff:  module NameKeyModule =
   
       /// A name key for optimized look-up in hashing containers.
  +    /// OPTIMIZATION: OptHashCode is lazy for speed.
       type [<CustomEquality; NoComparison>] NameKey =
           { Name : string
             mutable OptHashCode : int option }
  
positive.code: module AddressModule =
  
      /// Specifies the address of an element in a game, or name of an event.
      /// OPTIMIZATION: Comparison is done using the full string of names for speed.
      /// OPTIMIZATION: In the face of using a PersistentHashMap for simulant storage, I've made the
      /// NameKeys field available for faster look-ups.
      /// OPTIMIZATION: At little cost, I've also added the Hash field for fast keying directly
      /// on addresses.
      type [<CustomEquality; CustomComparison; TypeConverter (typeof<AddressConverter>)>] 'a Address =
          { NameKeys : NameKey list
            mutable OptNamesStr : string option
  
negative.code:                 if targetType.IsInstanceOfType source then source
                  else failwith "Invalid AddressConverter conversion from source."
  
      /// Convert a names string into an address.
      let stoa<'a> namesStr =
          Address<'a>.stoa namesStr
  
      /// Convert a name keys into an address.
      let ktoa<'a> nameKeys =
          Address<'a>.makeFromNameKeys nameKeys
  
      /// Convert a names list into an address.
      let ltoa<'a> namesList =
          Address<'a>.makeFromNamesList namesList
  
      /// Convert a name string into an address.
      let ntoa<'a> nameStr =
          ltoa<'a> [nameStr]
  
      /// Convert any address to an obj Address.
      let atooa<'a> (address : 'a Address) =
  