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: 
      /// Concatenate two addresses of the same type.
      let acat<'a> (address : 'a Address) (address2 : 'a Address) =
          Address<'a>.makeFromKeys (address.NameKeys @ address2.NameKeys)
  
      /// Concatenate two addresses, taking the type of first address.
      let acatf<'a> (address : 'a Address) (address2 : obj Address) =
          Address<'a>.makeFromKeys (address.NameKeys @ address2.NameKeys)
      
      /// Concatenate two addresses, forcing the type of first address.
      let acatff<'a, 'b> (address : 'a Address) (address2 : 'b Address) =
  
negative.code:         
      /// Take the tail of an address.
      let tail<'a> address =
          Address<'a>.makeFromNameKeys <| List.tail address.NameKeys
  
      /// Take a name key of an address.
      let at index address =
          List.at index address.NameKeys
  
      /// Take an address composed of the name keys of an address minus a skipped amount of name keys.
      let skip<'a, 'b> n (address : 'a Address) =
          Address<'b>.makeFromNameKeys <| List.skip n address.NameKeys
  
      /// Take an address composed of the given number of name keys of an address.
      let take<'a, 'b> n (address : 'a Address) =
          Address<'b>.makeFromNameKeys <| List.take n address.NameKeys
  
      /// Take the last name key of an address.
      let last address =
          List.last address.NameKeys
  
      /// Take an address composed of all but the last name of an address.
      let allButLast<'a, 'b> (address : 'a Address) =
          Address<'b>.makeFromNameKeys <| List.allButLast address.NameKeys
  
      /// Get the length of an address by its name keys.
      let length address =
          List.length address.NameKeys
  
      /// Query that an address is devoid of name keys.
      let isEmpty address =
          List.isEmpty address.NameKeys