anchor.diff:      member this.ContainsKey(key) = this.ContainsKey(key)
       member this.Contains(kvp:KeyValuePair<'K,'V>) = this.ContainsKey(kvp.Key)
       member this.CopyTo(array, arrayIndex) =
  -      let entered = enterWriteLockIf &this.locker this.isSynchronized
  +      let mutable entered = false
         try
  +        try ()
  +        finally
  +          entered <- enterWriteLockIf &this.locker this.isSynchronized
           if array = null then raise (ArgumentNullException("array"))
           if arrayIndex < 0 || arrayIndex > array.Length then raise (ArgumentOutOfRangeException("arrayIndex"))
           if array.Length - arrayIndex < this.Count then raise (ArgumentException("ArrayPlusOffTooSmall"))
  
positive.code:   member this.Comparer with get() = comparer
  
    member this.Clear() =
      let entered = enterWriteLockIf &this.locker this.isSynchronized
      if entered then Interlocked.Increment(&this.nextVersion) |> ignore
      try
        if couldHaveRegularKeys then
          Trace.Assert(this.keys.Length = 2)
          Array.Clear(this.keys, 0, 2)
  
negative.code:         else
            let index = this.IndexOfKeyUnchecked(key)
            if index >= 0 then // contains key
              //exitWriteLockIf &this.locker entered
              raise (ArgumentException("SortedMap.Add: key already exists: " + key.ToString()))
            else
              this.Insert(~~~index, key, value)
  