anchor.diff:              let newSill = saveSegmentInfoList newSegments
               let newHeader = {currentState=newState; segments=newSegments; sill = newSill;}
               writeHeader newHeader
  -            // TODO add oldSill to freeBlocks
  +            let oldSill = header.sill
               header <- newHeader
  +            oldSill
           )
           removePendingMerge newGuid
           // the segment we just committed can now be removed from
  
positive.code:             let remainingSegmentsInWaiting = Map.filter (fun g _ -> Set.contains g newGuidsAsSet |> not) segmentsInWaiting
              segmentsInWaiting <- remainingSegmentsInWaiting
          )
          // note that we intentionally do not release the lock here.
          // you can change the segment list more than once while holding
          // the lock.  the lock gets released when you Dispose() it.
  
negative.code:         let segmentsToBeFreed = Map.filter (fun g _ -> not (Map.containsKey g cursors)) segmentsBeingReplaced
          //printfn "segmentsToBeFreed: %A" segmentsToBeFreed
          let blocksToBeFreed = Seq.fold (fun acc info -> info.blocks @ acc) List.empty (Map.values segmentsToBeFreed)
          if oldSill.firstPage > 0 && oldSill.lastPage >= oldSill.firstPage then
              let blocksToBeFreed' = PageBlock(oldSill.firstPage, oldSill.lastPage) :: blocksToBeFreed
              addFreeBlocks blocksToBeFreed'
          else
              addFreeBlocks blocksToBeFreed
          // note that we intentionally do not release the lock here.
          // you can change the segment list more than once while holding
          // the lock.  the lock gets released when you Dispose() it.
  