public override FieldWriter AddField(FieldInfo field, long termsFilePointer)
        {
            _policy.NewField(field);
            var writer = new FstFieldWriter(field, termsFilePointer, this);

            _fields.Add(writer);
            return(writer);
        }
        public override void Dispose()
        {
            if (Output == null)
            {
                return;
            }

            try
            {
                long dirStart   = Output.FilePointer;
                int  fieldCount = _fields.Count;

                int nonNullFieldCount = 0;
                for (int i = 0; i < fieldCount; i++)
                {
                    FstFieldWriter field = _fields[i];
                    if (field.Fst != null)
                    {
                        nonNullFieldCount++;
                    }
                }

                Output.WriteVInt(nonNullFieldCount);
                for (int i = 0; i < fieldCount; i++)
                {
                    FstFieldWriter field = _fields[i];
                    if (field.Fst != null)
                    {
                        Output.WriteVInt(field.FieldInfo.Number);
                        Output.WriteVLong(field.IndexStart);
                    }
                }
                WriteTrailer(dirStart);
                CodecUtil.WriteFooter(Output);
            }
            finally
            {
                Output.Dispose();
                Output = null;
            }
        }
 public override FieldWriter AddField(FieldInfo field, long termsFilePointer)
 {
     _policy.NewField(field);
     var writer = new FstFieldWriter(field, termsFilePointer, this);
     _fields.Add(writer);
     return writer;
 }