internal Frame PushFrame(FST.Arc<BytesRef> arc, BytesRef frameData, int length)
{
ScratchReader.Reset((byte[])(Array)frameData.Bytes, frameData.Offset, frameData.Length);
long code = ScratchReader.ReadVLong();
long fpSeek = (long)((ulong)code >> BlockTreeTermsWriter.OUTPUT_FLAGS_NUM_BITS);
Frame f = GetFrame(1 + CurrentFrame.Ord);
f.HasTerms = (code & BlockTreeTermsWriter.OUTPUT_FLAG_HAS_TERMS) != 0;
f.HasTermsOrig = f.HasTerms;
f.IsFloor = (code & BlockTreeTermsWriter.OUTPUT_FLAG_IS_FLOOR) != 0;
if (f.IsFloor)
{
f.SetFloorData(ScratchReader, frameData);
}
PushFrame(arc, fpSeek, length);
return f;
}