private void Initialize(IndexReader[] subReaders, bool closeSubReaders) { // Deep copy this.subReaders = subReaders.ToArray(); starts = new int[subReaders.Length + 1]; // build starts array decrefOnClose = new bool[subReaders.Length]; for (int i = 0; i < subReaders.Length; i++) { starts[i] = maxDoc; maxDoc += subReaders[i].MaxDoc; // compute maxDocs if (!closeSubReaders) { subReaders[i].IncRef(); decrefOnClose[i] = true; } else { decrefOnClose[i] = false; } if (subReaders[i].HasDeletions) hasDeletions = true; } starts[subReaders.Length] = maxDoc; }