anchor.diff:          let fs = io.OpenForReading()
           let hook (csr:ICursor) =
               fs.Close()
  -            // TODO remove csr from cursors list
  +            // TODO remove csr from cursors list.  which means we need
  +            // a way to get the guid for a cursor.
           let csr = BTreeSegment.OpenCursor(fs, pageSize, rootPage, new Action<ICursor>(hook))
           lock critSectionCursors (fun () -> cursors <- (g,csr) :: cursors; )
           csr
  
positive.code:             // all the segments we just committed can now be removed from
              // the segments in waiting list
              lock critSectionSegmentsInWaiting (fun () ->
                  let remainingSegmentsInWaiting = Map.filter (fun g _ -> Map.containsKey g newGuidsAsMap |> not) segmentsInWaiting
                  segmentsInWaiting <- remainingSegmentsInWaiting
              )
  
  
negative.code:             // no way for the code to be here unless the caller is holding the
              // lock.
              inTransaction <- false
              // TODO we could have Rollback accept a seq<Guid> so we could release
              // any segments in waiting that got written before the owner of the tx
              // decided to rollback.
  
  
      interface IDatabase with
  