anchor.diff:  
     member this.Remove(key): bool =
       if this.isKeyReferenceType && EqualityComparer<'K>.Default.Equals(key, Unchecked.defaultof<'K>) then raise (ArgumentNullException("key"))
  -    let entered = enterWriteLockIf &this.locker this.isSynchronized
  -    if entered then Interlocked.Increment(&this.nextVersion) |> ignore
       let mutable removed = false
  +    let mutable entered = false
       try
  +      try ()
  +      finally
  +        entered <- enterWriteLockIf &this.locker this.isSynchronized
  +        if entered then Interlocked.Increment(&this.nextVersion) |> ignore
         if this.isReadOnly then invalidOp "SortedMap is read-only"
         let index = this.IndexOfKeyUnchecked(key)
         if index >= 0 then 
  
positive.code:             // NB expect huge amount of idle tasks. Spinning on all of them is questionable.
              //failwith "TODO exit spinning on some condition"
              if this.onUpdateHandler = Unchecked.defaultof<_> then
                let entered = enterWriteLockIf &this.state.source.locker this.state.source.isSynchronized
                this.semaphore <- new SemaphoreSlim(0,Int32.MaxValue)
                this.onUpdateHandler <- OnUpdateHandler(fun _ ->
                    if this.semaphore.CurrentCount <> Int32.MaxValue then this.semaphore.Release() |> ignore
                )
                this.state.source.onUpdateEvent.Publish.AddHandler this.onUpdateHandler
                Interlocked.Increment(&this.state.source.subscribersCounter) |> ignore
                exitWriteLockIf &this.state.source.locker entered
              if this.state.MoveNext() then trueTask
              else
                this.tcs <- Runtime.CompilerServices.AsyncTaskMethodBuilder<bool>.Create()
  
negative.code: 
  
    member this.RemoveLast([<Out>]result: byref<KeyValuePair<'K, 'V>>):bool =
      let mutable removed = false
      let mutable entered = false
      try
        try ()
        finally
          entered <- enterWriteLockIf &this.locker this.isSynchronized
          if entered then Interlocked.Increment(&this.nextVersion) |> ignore
        if this.size > 0 then
          result <-
            if couldHaveRegularKeys && this.size > 1 then
  