code: def supernodes(self, reordered = True):
          
          if reordered:
              return [list(self.snode[self.snptr[k]:self.snptr[k+1]]) for k in range(self.Nsn)]
          else:
              return [list(self.__p[self.snode[self.snptr[k]:self.snptr[k+1]]]) for k in range(self.Nsn)]
docs: Returns a list of supernode sets