code: def _minute_exclusion_tree(self):
          
          itree = IntervalTree()
          for market_open, early_close in self._minutes_to_exclude():
              start_pos = self._find_position_of_minute(early_close) + 1
              end_pos = (
                  self._find_position_of_minute(market_open)
                  +
                  self._minutes_per_day
                  -
                  1
              )
              data = (start_pos, end_pos)
              itree[start_pos:end_pos + 1] = data
          return itree
docs: Build an interval tree keyed by the start and end of each range
          of positions should be dropped from windows. (These are the minutes
          between an early close and the minute which would be the close based
          on the regular period if there were no early close.)
          The value of each node is the same start and end position stored as
          a tuple.
  
          The data is stored as such in support of a fast answer to the question,
          does a given start and end position overlap any of the exclusion spans?
  
          Returns
          -------
          IntervalTree containing nodes which represent the minutes to exclude
          because of early closes.