anchor.diff:                              if nextPageNumber <> (thisPageNumber+1) then utils.SeekPage(fs, pageSize, nextPageNumber)
                               nextGeneration.Add(thisPageNumber, snd children.[i-1])
                               sofar <- 0
  -                            first <- 0
  +                            firstChildOnThisParentPage <- 0
                               overflows.Clear()
                       if not isLastChild then 
                           if sofar = 0 then
  -                            first <- i
  +                            firstChildOnThisParentPage <- i
                               overflows.Clear()
                               sofar <- PARENT_PAGE_OVERHEAD
                           if calcAvailable sofar (nextGeneration.Count = 0) >= neededForInline then
  
positive.code: 
                          if flushThisPage then
                              let thisPageNumber = nextPageNumber
                              buildParentPage overflows children i first
                              if isRootNode then
                                  pb.SetPageFlag(FLAG_ROOT_NODE)
                                  // assert pb.Position <= (pageSize - 8)
  
negative.code:                         sofar <- sofar + 1 + Varint.SpaceNeededFor(int64 k.Length) + Varint.SpaceNeededFor(int64 pagenum)
                  (nextPageNumber,boundaryPageNumber,nextGeneration)
  
              let rec writeOneLayerOfParentPages next boundary (children:System.Collections.Generic.List<int32 * byte[]>) :int32 =
                  if children.Count > 1 then
                      let (newNext,newBoundary,newChildren) = writeParentNodes children next boundary 
                      writeOneLayerOfParentPages newNext newBoundary newChildren
                  else
                      fst children.[0]
  
              let rootPage = writeOneLayerOfParentPages pageAfterLeaves boundaryAfterLeaves leaves
  
              pageManager.End(token, rootPage)
              rootPage
  