anchor.diff:                  i <- i + 1
           if i>len then result else (xlen - ylen)
   
  +// TODO this could move into BTreeSegment.Create.
  +// and it doesn't need to be a class.
   type private PageBuilder(pgsz:int) =
       let mutable cur = 0
       let buf:byte[] = Array.zeroCreate pgsz
  
positive.code:     let private FLAG_BOUNDARY_NODE:byte = 2uy
      let private FLAG_ENDS_ON_BOUNDARY:byte = 4uy
  
      let private putArrayWithLength (pb:PageBuilder) (ba:byte[]) =
          if null = ba then
              pb.PutByte(FLAG_TOMBSTONE)
              pb.PutVarint(0L)
          else
              pb.PutByte(0uy)
              pb.PutVarint(int64 ba.Length)
              pb.PutArray(ba)
  
      let private putStreamWithLength (pb:PageBuilder) (ba:Stream) vlen =
          if null = ba then
              pb.PutByte(FLAG_TOMBSTONE)
              pb.PutVarint(0L)
          else
              pb.PutByte(0uy)
              pb.PutVarint(int64 vlen)
              pb.PutStream(ba, int vlen)
  
      let private writeOverflow (pageManager:IPages) token startingNextPageNumber startingBoundaryPageNumber (pb:PageBuilder) (fs:Stream) (ba:Stream) =
          let len = (int ba.Length)
          let pageSize = pb.PageSize
  
negative.code:                             pb.PutVarint(int64 k.Length)
                              pb.PutInt32(overflows.[q])
                          else
                              putKeyWithLength k
  
                  // assert children.Count > 1
                  for i in 0 .. children.Count-1 do
  