anchor.diff:          |> Map.filter (fun key _ ->
               Set.contains key keys)
   
  -/// Applies a function to each binding in the map, in decreasing key order.
  +/// <summary>Applies a function to each binding in the map, in decreasing key order.</summary>
  +/// <param name="action"></param>
  +/// <param name="map"></param>
   [<CompiledName("IterBack")>]
   let iterBack (action : 'Key -> 'T -> unit) (map : Map<'Key, 'T>) : unit =
       // Preconditions
  
positive.code: open ExtCore
  
  
  /// Determines the number of items in the map.
  [<CompiledName("Count")>]
  let inline count (map : Map<'Key, 'Value>) =
      map.Count
  
  /// Lookup a key in the map, and if found, return it's corresponding value.
  /// Otherwise, returns the given default value.
  [<CompiledName("FindOrDefault")>]
  let inline findOrDefault defaultValue key (map : Map<'Key, 'T>) =
      defaultArg (Map.tryFind key map) defaultValue
  
  /// The Map containing the given binding.
  [<CompiledName("Singleton")>]
  let inline singleton key value : Map<'Key, 'T> =
      Map.empty
      |> Map.add key value
  
  /// Creates a map with the same elements as the vector.
  [<CompiledName("OfVector")>]
  let ofVector (vector : vector<'Key * 'T>) : Map<'Key, 'T> =
      // Preconditions
  
negative.code:         // Return the original map.
          map
  
  /// <summary>
  /// Like Map.add, but only overwrites the value of an existing entry.
  /// If the map does not contain the given key, <see cref="KeyNotFoundException"/> is raised.
  /// </summary>
  /// <param name="key"></param>
  /// <param name="value"></param>
  /// <param name="map"></param>
  /// <returns></returns>
  [<CompiledName("Update")>]
  let update key value (map : Map<'Key, 'T>) : Map<'Key, 'T> =
      // Preconditions
  