@Override
 public void forEachOrdinalInDoc(int docId, OrdinalInDocProc proc) {
   int pointer = lookup[docId];
   if (pointer >= 0) {
     proc.onOrdinal(docId, pointer);
   } else {
     pointer = -pointer;
     int allOrdsIndex = pointer >> parent.storageShift;
     int ordsIndex = (pointer & ((1 << parent.storageShift) - 1));
     int[] ords = ordinals[allOrdsIndex];
     int i = ordsIndex;
     for (; ords[i] > 0; i++) {
       proc.onOrdinal(docId, ords[i]);
     }
     proc.onOrdinal(docId, -ords[i]);
   }
 }
 @Override
 public void forEachOrdinalInDoc(int docId, OrdinalInDocProc proc) {
   for (int[] ordinal : ordinals) {
     proc.onOrdinal(docId, ordinal[docId]);
   }
 }