docs: def from_edge_pairs(cls, vertices, edge_pairs):
          """
          Create a DirectedGraph from a collection of vertices
          and a collection of pairs giving links between the vertices.
  
          """
          vertices = set(vertices)
          edges = set()
          heads = {}
          tails = {}
  
          # Number the edges arbitrarily.
          edge_identifier = itertools.count()
          for tail, head in edge_pairs:
              edge = next(edge_identifier)
              edges.add(edge)
              heads[edge] = head
              tails[edge] = tail
  
          return cls._raw(
              vertices=vertices,
              edges=edges,
              heads=heads,
              tails=tails,
          )