returns the next result
        
        :return:
            The next result.
        :rtype: dict
        :raises StopIteration: If no more result is left.

def next(self):
        """returns the next result
        
        :return:
            The next result.
        :rtype: dict
        :raises StopIteration: If no more result is left.
            
        """
        if self._orderByPQ.size() > 0:
            
            targetRangeExContext = self._orderByPQ.pop()
            res = next(targetRangeExContext)
            
            try:
                """TODO: we can also use more_itertools.peekable to be more python friendly"""
                targetRangeExContext.peek()
                self._orderByPQ.push(targetRangeExContext)

            except StopIteration:
                pass
                
            return res
        raise StopIteration