code: def polygons_full(self):
          
          # pre- allocate the list to avoid indexing problems
          full = [None] * len(self.root)
          # store the graph to avoid cache thrashing
          enclosure = self.enclosure_directed
          # store closed polygons to avoid cache hits
          closed = self.polygons_closed
  
          # loop through root curves
          for i, root in enumerate(self.root):
              # a list of multiple Polygon objects that
              # are fully contained by the root curve
              children = [closed[child]
                          for child in enclosure[root].keys()]
              # all polygons_closed are CCW, so for interiors reverse them
              holes = [np.array(p.exterior.coords)[::-1]
                       for p in children]
              # a single Polygon object
              shell = closed[root].exterior
              # create a polygon with interiors
              full[i] = polygons.repair_invalid(Polygon(shell=shell,
                                                        holes=holes))
          # so we can use advanced indexing
          full = np.array(full)
  
          return full
docs: A list of shapely.geometry.Polygon objects with interiors created
          by checking which closed polygons enclose which other polygons.
  
          Returns
          ---------
          full : (len(self.root),) shapely.geometry.Polygon
              Polygons containing interiors