anchor.diff:      /// Returns a new IntMap with the binding added to this IntMap.
       member __.Add (key : int, value : 'T) : IntMap<'T> =
           IntMap (
  -            PatriciaMap.Insert (uint32 key, value, trie))
  +            PatriciaMap.Add (uint32 key, value, trie))
  +
  +    /// Returns a new IntMap with the binding added to this IntMap.
  +    member this.TryAdd (key : int, value : 'T) : IntMap<'T> =
  +        // If the tree wasn't modified, return the reference to this IntMap
  +        // instead of creating a new one.
  +        let trie' = PatriciaMap.TryAdd (uint32 key, value, trie)
  +        if trie === trie' then
  +            this
  +        else
  +            IntMap (trie')
   
       /// Removes an element from the domain of the IntMap.
       /// No exception is raised if the element is not present.
  
positive.code:             Br (p, m, t1, t0)
  
      /// Insert a binding (key-value pair) into a map, returning a new, updated map.
      static member Insert (key, value : 'T, map) =
          match map with
          | Empty ->
              Lf (key, value)
  
negative.code:         | Br (p, m, t0, t1) as t ->
              if matchPrefix (key, p, m) then
                  if zeroBit (key, m) then
                      let left = PatriciaMap.TryAdd (key, value, t0)
                      Br (p, m, left, t1)
                  else
                      let right = PatriciaMap.TryAdd (key, value, t1)
                      Br (p, m, t0, right)
              else
                  PatriciaMap.Join (key, Lf (key, value), p, t)
  
      /// Insert a binding (key-value pair) into a map, returning a new, updated map.
      static member Add (key, value : 'T, map) =
          match map with
          | Empty ->
              Lf (key, value)
  