docs: def intersectingInterval(self, start, end):
      """
      given an interval, get intervals in the tree that are intersected.
  
      :param start: start of the intersecting interval
      :param end:   end of the intersecting interval
      :return:      the list of intersected intervals
      """
      # find all intervals in this node that intersect start and end
      l = []
      for x in self.data.starts:
        xStartsAfterInterval = (x.start > end and not self.openEnded) or \
                               (x.start >= end and self.openEnded)
        xEndsBeforeInterval = (x.end < start and not self.openEnded) or \
                              (x.end <= start and self.openEnded)
        if ((not xStartsAfterInterval) and (not xEndsBeforeInterval)):
          l.append(x)
  
      # process left subtree (if we have one) if the requested interval begins
      # before mid
      if self.left is not None and start <= self.data.mid:
        l += self.left.intersectingInterval(start, end)
  
      # process right subtree (if we have one) if the requested interval ends
      # after mid
      if self.right is not None and end >= self.data.mid:
        l += self.right.intersectingInterval(start, end)
  
      return l