code: def split(self):
          
          self._annotate_groups()
          index = 0
  
          for group in range(self._max_group):
              subgraph = copy(self)
              subgraph.metadata = self.metadata[:]
              subgraph.edges = self.edges.copy()
  
              if subgraph._filter_group(group):
                  subgraph.total_size = sum([x.size for x in subgraph.metadata])
                  subgraph.index = index
                  index += 1
                  yield subgraph
docs: Split the graph into sub-graphs. Only connected objects belong to the
          same graph. `split` yields copies of the Graph object. Shallow copies
          are used that only replicate the meta-information, but share the same
          object list ``self.objects``.
  
          >>> from pympler.refgraph import ReferenceGraph
          >>> a = 42
          >>> b = 'spam'
          >>> c = {a: b}
          >>> t = (1,2,3)
          >>> rg = ReferenceGraph([a,b,c,t])
          >>> for subgraph in rg.split():
          ...   print subgraph.index
          0
          1