anchor.diff:              LivingCursor.Create mc
   
           member this.RequestWriteLock() =
  -            getWriteLock2() |> Async.StartAsTask
  +            getWriteLock() |> Async.StartAsTask
   
           member this.RequestWriteLock2() =
  -            getWriteLock2()
  -
  -
  +            getWriteLock()
  +
  +
  
positive.code:                 }
              )
  
      let getWriteLock() =
          let whence = Environment.StackTrace
          lock critSectionInTransaction (fun () -> 
              if inTransaction then 
                  let t = TaskCompletionSource<IWriteLock>()
                  let cb (lck:IWriteLock) = 
                      lck.Tag <- whence
                      t.SetResult(lck)
                  waiting <- Queue.conj cb waiting
                  t.Task
              else 
                  inTransaction <- true
                  Async.StartAsTask(async { 
                      let lck = createWriteLockObject() 
                      lck.Tag <- whence
                      return lck
                  })
              )
  
      override this.Finalize() =
          dispose false
  
  
negative.code:                 // the lock.  the lock gets released when you Dispose() it.
          }
  
      let getWriteLock() =
          let whence = Environment.StackTrace
          lock critSectionInTransaction (fun () -> 
              if inTransaction then 
  