code: func (h *TermsHashPerFieldImpl) _constructor(spi TermsHashPerFieldSPI,
  	streamCount int, fieldState *FieldInvertState,
  	termsHash TermsHash, nextPerField TermsHashPerField,
  	fieldInfo *FieldInfo) {
  
  	termsHashImpl := termsHash.fields()
  
  	h.spi = spi
  	h.intPool = termsHashImpl.intPool
  	h.bytePool = termsHashImpl.bytePool
  	h.termBytePool = termsHashImpl.termBytePool
  	h.docState = termsHashImpl.docState
  	h.termsHash = termsHash
  	h.bytesUsed = termsHashImpl.bytesUsed
  	h.fieldState = fieldState
  	h.streamCount = streamCount
  	h.numPostingInt = 2 * streamCount
  	h.fieldInfo = fieldInfo
  	h.nextPerField = nextPerField
  	byteStarts := newPostingsBytesStartArray(h, h.bytesUsed)
  	h.bytesHash = util.NewBytesRefHash(termsHashImpl.termBytePool, HASH_INIT_SIZE, byteStarts)
  }
docs: /*
  streamCount: how many streams this field stores per term. E.g.
  doc(+freq) is 1 stream, prox+offset is a second.
  
  NOTE: due to Go's embedded inheritance, it has to be invoked after it
  is initialized and embedded by child class.
  */