code: def _link_vertex_and_edge_types(self):
          
          for edge_class_name in self._edge_class_names:
              edge_element = self._elements[edge_class_name]
  
              if (EDGE_SOURCE_PROPERTY_NAME not in edge_element.properties or
                      EDGE_DESTINATION_PROPERTY_NAME not in edge_element.properties):
                  if edge_element.abstract:
                      continue
                  else:
                      raise AssertionError(u'Found a non-abstract edge class with undefined '
                                           u'endpoint types: {}'.format(edge_element))
  
              from_class_name = edge_element.properties[EDGE_SOURCE_PROPERTY_NAME].qualifier
              to_class_name = edge_element.properties[EDGE_DESTINATION_PROPERTY_NAME].qualifier
  
              edge_schema_element = self._elements[edge_class_name]
  
              # Link from_class_name with edge_class_name
              for from_class in self._subclass_sets[from_class_name]:
                  from_schema_element = self._elements[from_class]
                  from_schema_element.out_connections.add(edge_class_name)
                  edge_schema_element.in_connections.add(from_class)
  
              # Link edge_class_name with to_class_name
              for to_class in self._subclass_sets[to_class_name]:
                  to_schema_element = self._elements[to_class]
                  edge_schema_element.out_connections.add(to_class)
                  to_schema_element.in_connections.add(edge_class_name)
docs: For each edge, link it to the vertex types it connects to each other.