code: def get_bounding_box(self):
          
          if len(self.elements) == 0:
              return None
          if not (self._bb_valid and
                  all(ref._bb_valid for ref in self.get_dependencies(True))):
              bb = numpy.array(((1e300, 1e300), (-1e300, -1e300)))
              all_polygons = []
              for element in self.elements:
                  if isinstance(element, PolygonSet):
                      all_polygons.extend(element.polygons)
                  elif isinstance(element, CellReference) or isinstance(
                          element, CellArray):
                      element_bb = element.get_bounding_box()
                      if element_bb is not None:
                          bb[0, 0] = min(bb[0, 0], element_bb[0, 0])
                          bb[0, 1] = min(bb[0, 1], element_bb[0, 1])
                          bb[1, 0] = max(bb[1, 0], element_bb[1, 0])
                          bb[1, 1] = max(bb[1, 1], element_bb[1, 1])
              if len(all_polygons) > 0:
                  all_points = numpy.concatenate(all_polygons).transpose()
                  bb[0, 0] = min(bb[0, 0], all_points[0].min())
                  bb[0, 1] = min(bb[0, 1], all_points[1].min())
                  bb[1, 0] = max(bb[1, 0], all_points[0].max())
                  bb[1, 1] = max(bb[1, 1], all_points[1].max())
              self._bb_valid = True
              _bounding_boxes[self] = bb
          return _bounding_boxes[self]
docs: Returns the bounding box for this cell.
  
          Returns
          -------
          out : Numpy array[2,2] or ``None``
              Bounding box of this cell [[x_min, y_min], [x_max, y_max]],
              or ``None`` if the cell is empty.