public WigItem next() {

        // return next Wig item in list
        if (wigItemIndex < wigItemList.size())
            return (wigItemList.get(wigItemIndex++));

            // 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 (wigItemList.get(wigItemIndex++)); // return 1st Data Block item
            } else {
                String result = String.format("Failed to find data for wig region (%d,%d,%d,%d)\n",
                        hitRegion.getStartChromID(), hitRegion.getStartBase(),
                        hitRegion.getEndChromID(), hitRegion.getEndBase());
                log.error(result);

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