code: def _split_classes_by_kind(self, class_name_to_definition):
          
          for class_name in class_name_to_definition:
              inheritance_set = self._inheritance_sets[class_name]
  
              is_vertex = ORIENTDB_BASE_VERTEX_CLASS_NAME in inheritance_set
              is_edge = ORIENTDB_BASE_EDGE_CLASS_NAME in inheritance_set
  
              if is_vertex and is_edge:
                  raise AssertionError(u'Class {} appears to be both a vertex and an edge class: '
                                       u'{}'.format(class_name, inheritance_set))
              elif is_vertex:
                  self._vertex_class_names.add(class_name)
              elif is_edge:
                  self._edge_class_names.add(class_name)
              else:
                  self._non_graph_class_names.add(class_name)
  
          # Freeze the classname sets so they cannot be modified again.
          self._vertex_class_names = frozenset(self._vertex_class_names)
          self._edge_class_names = frozenset(self._edge_class_names)
          self._non_graph_class_names = frozenset(self._non_graph_class_names)
docs: Assign each class to the vertex, edge or non-graph type sets based on its kind.