code: func (e *SegmentTermsEnum) pushFrame(arc *fst.Arc, frameData []byte, length int) (f *segmentTermsEnumFrame, err error) {
  	// fmt.Println("Pushing frame...")
  	e.scratchReader.Reset(frameData)
  	code, err := e.scratchReader.ReadVLong()
  	if err != nil {
  		return nil, err
  	}
  	fpSeek := int64(uint64(code) >> BTT_OUTPUT_FLAGS_NUM_BITS)
  	f = e.frame(1 + e.currentFrame.ord)
  	f.hasTerms = (code & BTT_OUTPUT_FLAG_HAS_TERMS) != 0
  	f.hasTermsOrig = f.hasTerms
  	f.isFloor = (code & BTT_OUTPUT_FLAG_IS_FLOOR) != 0
  	if f.isFloor {
  		f.setFloorData(e.scratchReader, frameData)
  	}
  	e.pushFrameAt(arc, fpSeek, length)
  	return f, err
  }
docs: // Pushes a frame we seek'd to