anchor.diff:          let seg = Map.find g segs
           let lastBlock = List.head seg.blocks
           let rootPage = lastBlock.lastPage
  -        let fs = io.OpenForReading() // TODO pool and reuse these?
  +        let fs = io.OpenForReading()
           let hook (csr:ICursor) =
               fs.Close()
               lock critSectionCursors (fun () -> 
  
positive.code:             GC.SuppressFinalize(this)
  
          member this.WriteSegmentFromSortedSequence(pairs:seq<kvp>) =
              use fs = io.OpenForWriting() // TODO pool and reuse?
              let (g,_) = BTreeSegment.CreateFromSortedSequence(fs, pageManager, pairs)
              g
  
          member this.WriteSegment(pairs:System.Collections.Generic.IDictionary<byte[],Stream>) =
              use fs = io.OpenForWriting() // TODO pool and reuse?
              let (g,_) = BTreeSegment.SortAndCreate(fs, pageManager, pairs)
              g
  
  
negative.code:                         //printfn "queue has %d waiting.  next." (Queue.length waiting)
                          let f = Queue.head waiting
                          waiting <- Queue.tail waiting
                          //printfn "giving writeLock to next"
                          Some f
                  )
                  match next with
                  | Some f ->
                      f()
                      //printfn "done giving writeLock to next"
                  | None -> ()
              {
              new System.Object() with
  