docs: def validate_packing(self):
          """
          Check for collisions between rectangles, also check all are placed
          inside surface.
          """
          surface = Rectangle(0, 0, self.width, self.height)
  
          for r in self:
              if not surface.contains(r):
                  raise Exception("Rectangle placed outside surface")
  
          
          rectangles = [r for r in self]
          if len(rectangles) <= 1:
              return
  
          for r1 in range(0, len(rectangles)-2):
              for r2 in range(r1+1, len(rectangles)-1):
                  if rectangles[r1].intersects(rectangles[r2]):
                      raise Exception("Rectangle collision detected")