anchor.diff:      inherit IDisposable
       abstract member WriteSegmentFromSortedSequence : seq<kvp> -> Guid
       abstract member WriteSegment : System.Collections.Generic.IDictionary<byte[],Stream> -> Guid
  +    abstract member ForgetWaitingSegments : seq<Guid> -> unit
   
       abstract member OpenCursor : unit->ICursor 
       // TODO consider name such as OpenLivingCursorOnCurrentState()
       // TODO consider OpenCursorOnSegmentsInWaiting(seq<Guid>)
       // TODO consider ListSegmentsInCurrentState()
       // TODO consider OpenCursorOnSpecificSegment(seq<Guid>)
  -
  -    // TODO consider NeverMind(seq<Guid>) which explicitly 
  -    // frees segments in waiting.
   
       abstract member RequestWriteLock : unit->Async<IWriteLock>
   
  
positive.code:         member this.BackgroundMergeJobs() = 
              backgroundMergeJobs
  
          member this.OpenCursor() =
              // TODO this cursor needs to expose the changeCounter and segment list
              // on which it is based. for optimistic writes. caller can grab a cursor,
  
negative.code:             with get() = autoMerge 
              and set(b) = autoMerge <- b
  
  