protected void advanceSubIterator() { try { if (mCurrentOffset < mOffsets.size()) { if (mOffsets.start(mCurrentOffset) != mPreviousVirtualOffsetStart) { // Diagnostic.developerLog("After region " + mCurrentOffset + " " + mCurrentRegion + ", // opening new reader at offset " + // VirtualOffsets.offsetToString(mOffsets.start(mCurrentOffset)) + " for region " + // mOffsets.region(mCurrentOffset)); mReader.seek(mOffsets.start(mCurrentOffset)); mBuffered = false; // } else { // Diagnostic.developerLog("After region " + mCurrentOffset + " " + mCurrentRegion + ", // re-using existing reader for region " + mOffsets.region(mCurrentOffset)); } mCurrentRegion = mOffsets.region(mCurrentOffset); final int newTemplate = mSequenceLookup.get(mCurrentRegion.getSequenceName()); if (newTemplate != mCurrentTemplate) { mPreviousAlignmentStart = Integer.MIN_VALUE; } mPreviousVirtualOffsetStart = mOffsets.start(mCurrentOffset); mCurrentTemplate = newTemplate; } mCurrentOffset++; } catch (IOException e) { throw new RuntimeIOException(e.getMessage(), e); } }