code: def next(self):
          
          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
docs: returns the next result
          
          :return:
              The next result.
          :rtype: dict
          :raises StopIteration: If no more result is left.