def items(self):
        """
            Returns an iterator with each item being
            ((low_bound,high_bound), value). The items are returned
            in order.
        """
        previous_bound = None
        for b,v in izip(self._bounds,self._items):
            if v is not None:
                yield (previous_bound,b), v
            previous_bound = b
        if self._upperitem is not None:
            yield (previous_bound,None), self._upperitem

            Returns an iterator with each item being
            ((low_bound,high_bound), value). The items are returned
            in order.
        
recipes/Python/457411_interval_mapping/recipe-457411.py