public ZoomDataRecord next() {

        // Is there a need to fetch next data block?
        if (zoomRecordIndex < zoomRecordList.size())
            return (zoomRecordList.get(zoomRecordIndex++));

            // attempt to get next leaf item data block
        else {
            int nHits = getHitRegion(selectionRegion, isContained);

            if (nHits > 0) {
                // Note: getDataBlock initializes bed feature index to 0
                return (zoomRecordList.get(zoomRecordIndex++)); // return 1st Data Block item
            } else {
                String result = String.format("Failed to find data for zoom region (%d,%d,%d,%d)\n",
                        hitRegion.getStartChromID(), hitRegion.getStartBase(),
                        hitRegion.getEndChromID(), hitRegion.getEndBase());
                log.error(result);

                return null;
                //throw new NoSuchElementException(result);
            }
        }

    }