code: def canonical_order(self):
          starting_vertex = max(
              (
                  -len(self.equivalent_vertices[vertex]),
                  self.get_vertex_string(vertex),
                  self.vertex_fingerprints[vertex].tobytes(),
                  vertex
              ) for vertex in self.central_vertices
          )[-1]
          l = [
              [
                  -distance,
                  -len(self.equivalent_vertices[vertex]),
                  self.get_vertex_string(vertex),
                  self.vertex_fingerprints[vertex].tobytes(),
                  vertex
              ] for vertex, distance in self.iter_breadth_first(starting_vertex)
              if len(self.neighbors[vertex]) > 0
          ]
          l.sort(reverse=True)
          for i in range(1, len(l)):
              if l[i][:-1] == l[i-1][:-1]:
                  raise NotImplementedError
          return [record[-1] for record in l]