long byteOffset = pages.getByteOffestForPage(page);
long byteOffsetCap = pages.getByteOffestForPage(page+1);
long intOffset = pages.getIntOffestForPage(page);
if (isSingleValued) {
pageBi.putInt(intOffset, SINGLE_MASK);
VarPosition vp = new VarPosition(byteOffset + 4);
for(TermInDocRec rec : bucket) {
pageBi.putVLong(vp, rec.docId, byteOffsetCap);
}
pageBi.putVLong(vp, 0, byteOffsetCap);
} else {
pageBi.putByte(byteOffset++, (byte)0);
VarPosition vp = new VarPosition(byteOffset);
for(TermInDocRec rec : bucket) {
pageBi.putVLong(vp, rec.docId, byteOffsetCap);
pageBi.putVLong(vp, rec.term.length, byteOffsetCap);
byteOffsetCap -= rec.term.length;
pageBi.putBytes(byteOffsetCap, rec.term.length, rec.term, 0);