private boolean getDataBlock(int leafItemIndex) {

        // check for valid data block
        if (leafHitList == null || leafItemIndex >= leafHitList.size())
            return false;

        // Perform a block read for indexed leaf item
        leafHitItem = leafHitList.get(leafItemIndex);

        // get the chromosome names associated with the hit region ID's
        int startChromID = leafHitItem.getChromosomeBounds().getStartChromID();
        int endChromID = leafHitItem.getChromosomeBounds().getEndChromID();
        chromosomeMap = chromIDTree.getChromosomeIDMap(startChromID, endChromID);

        boolean isLowToHigh = zoomDataTree.isIsLowToHigh();
        int uncompressBufSize = zoomDataTree.getUncompressBuffSize();

        // decompress leaf item data block for feature extraction
        zoomDataBlock = new ZoomDataBlock(zoomLevel, fis, leafHitItem, chromosomeMap,
                isLowToHigh, uncompressBufSize);

        // get data block zoom data record list and set next index to first item
        zoomRecordList = zoomDataBlock.getZoomData(selectionRegion, isContained);
        zoomRecordIndex = 0;

        // data block items available for iterator
        if (zoomRecordList.size() > 0)
            return true;
        else
            return false;
    }