anchor.diff:  
     member this.AddFirst(key, value):unit =
       let mutable keepOrderVersion = false
  -    let entered = enterWriteLockIf &this.locker this.isSynchronized
  -    if entered then Interlocked.Increment(&this.nextVersion) |> ignore
  +    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
           this.Insert(0, key, value)
           keepOrderVersion <- true
  
positive.code:         | _ -> if this.state.MoveNext() then trueTask else falseTask
        
      member this.Clone() = 
        let entered = enterWriteLockIf &this.state.source.locker this.state.source.isSynchronized
        let clone = new SortedMapCursorAsync<'K,'V>(this.state.source)
        clone.state <- this.state
        exitWriteLockIf &this.state.source.locker entered
        clone
  
      member this.Dispose() = 
        this.state.Reset()
  
negative.code: 
  
    member this.Complete() =
      let mutable entered = false
      try
        entered <- enterWriteLockIf &this.locker true
        if not this.isReadOnly then 
            this.isReadOnly <- true
            // immutable doesn't need sync
  