Get an iterator which will iterate over those objects in the tree which
    intersect the given interval - sorted in order of start index

    :param start: find intervals in the tree that intersect an interval with
                  with this start index (inclusive)
    :param end:   find intervals in the tree that intersect an interval with
                  with this end index (exclusive)
    :return: an iterator that will yield intersected intervals

def intersectingIntervalIterator(self, start, end):
    """
    Get an iterator which will iterate over those objects in the tree which
    intersect the given interval - sorted in order of start index

    :param start: find intervals in the tree that intersect an interval with
                  with this start index (inclusive)
    :param end:   find intervals in the tree that intersect an interval with
                  with this end index (exclusive)
    :return: an iterator that will yield intersected intervals
    """
    items = self.intersectingInterval(start, end)
    items.sort(key=lambda x: x.start)
    for item in items:
      yield item