anchor.diff:                      // if the current token uses the same context as requested
                       // we don't need to perform any operations here since
                       // the outer token will take care of everything
  -                    { new IDisposable with member x.Dispose() = () }
  +                    nopDisposable
   
                   else
                       // if the current token is using a different context
  
positive.code:     member x.Release() = 
          isObtained <- false
          release x
          handle <- None
  
      member x.Obtain() = 
          handle <- Some <| obtain x
  
negative.code:             | Some token ->
                  // if the calling thread already posesses the token
                  // simply return a dummy disposable and do no perform any operation
                  nopDisposable
  
              | None -> 
                  // create a token for the obtained context
  