private boolean getDataBlock(int leafItemIndex){

        // check for valid data block
        if(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 = chromDataTree.isIsLowToHigh();
        int uncompressBufSize = chromDataTree.getUncompressBuffSize();

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

        // get data block Bed feature list and set next index to first item
        bedFeatureList =  bedDataBlock.getBedData(selectionRegion, contained);
        bedFeatureIndex = 0;

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