anchor.diff:      let private FLAG_BOUNDARY_NODE:byte = 2uy
       let private FLAG_ENDS_ON_BOUNDARY:byte = 4uy
   
  +
  +    type writeParentPagesState = 
  +        { 
  +            sofar:int; 
  +            first:int;
  +            //items:(int32*byte[]) list; 
  +            nextPage:int; 
  +            boundaryPage:int; 
  +            //children:(int32*byte[]); 
  +            //overflows:Map<byte[],int32>;
  +        }
  +
       let Create(fs:Stream, pageManager:IPages, csr:ICursor) :int32 = 
           let pageSize = pageManager.PageSize
           let token = pageManager.Begin()
  
positive.code:                                     let kRange = writeOverflow nextPageNumber boundaryPageNumber (new MemoryStream(k))
                                      overflows.[i] <- keyOverflowFirstPage
                                      (neededForOverflow, (fst kRange), (snd kRange))
                              (sf1 + sf2, first, nextN, nextB)
  
  
                      // this is the body of the folder function
  
negative.code:                     let couldBeRoot = (nextGeneration.Count = 0)
  
                      let maybeFlush args = 
                          let {sofar=sofar; first=first; nextPage=nextPageNumber; boundaryPage=boundaryPageNumber} = args
                          // TODO flush logic used to be guarded by if sofar > 0.  should it still be?
                          let available = calcAvailable sofar couldBeRoot
                          let fitsInline = (available >= neededForInline)
  