// query must be positive
protected DocSet getDocSetNC(Query query, DocSet filter, TermDocsState tdState) throws IOException {
int smallSetSize = maxDoc()>>6;
int largestPossible = tdState.tenum.docFreq();
int[] docs = new int[Math.min(smallSetSize, largestPossible)];
OpenBitSet obs = null;
int upto=0;
int numBits = 0;
if (tdState.tdocs == null) {
tdState.tdocs = reader.termDocs();
}
tdState.tdocs.seek(tdState.tenum);
int[] arr = new int[Math.min(largestPossible, 256)];
int[] freq = new int[arr.length];
for(;;) {
int num = tdState.tdocs.read(arr, freq);
if (num==0) break;
if (upto + num > docs.length) {
if (obs == null) obs = new OpenBitSet(maxDoc());
for (int i = 0; i<num; i++) {
obs.fastSet(arr[i]);
}
numBits += num;
} else {
System.arraycopy(arr, 0, docs, upto, num);
upto += num;
}
}
if (obs != null) {
for (int i=0; i<upto; i++) {
obs.fastSet(docs[i]);
}
numBits += upto;
return new BitDocSet(obs, numBits);
}