def _split(self, rect):
        """
        Split all max_rects intersecting the rectangle rect into up to
        4 new max_rects.
        
        Arguments:
            rect (Rectangle): Rectangle

        Returns:
            split (Rectangle list): List of rectangles resulting from the split
        """
        max_rects = collections.deque()

        for r in self._max_rects:
            if r.intersects(rect):
                max_rects.extend(self._generate_splits(r, rect))
            else:
                max_rects.append(r)

        # Add newly generated max_rects
        self._max_rects = list(max_rects)
Split all max_rects intersecting the rectangle rect into up to
        4 new max_rects.
        
        Arguments:
            rect (Rectangle): Rectangle

        Returns:
            split (Rectangle list): List of rectangles resulting from the split