public MultiTermEnum(IndexReader topReader, IndexReader[] readers, int[] starts, Term t)
{
this.topReader = topReader;
queue = new SegmentMergeQueue(readers.Length);
matchingSegments = new SegmentMergeInfo[readers.Length + 1];
for (int i = 0; i < readers.Length; i++)
{
IndexReader reader = readers[i];
TermEnum termEnum = t != null ? reader.Terms(t) : reader.Terms();
var smi = new SegmentMergeInfo(starts[i], termEnum, reader) {ord = i};
if (t == null?smi.Next():termEnum.Term != null)
queue.Add(smi);
// initialize queue
else
smi.Dispose();
}
if (t != null && queue.Size() > 0)
{
Next();
}
}