docs: def from_out_edges(cls, vertices, edge_mapper):
          """
          Create a DirectedGraph from a collection of vertices and
          a mapping giving the vertices that each vertex is connected to.
  
          """
          vertices = set(vertices)
          edges = set()
          heads = {}
          tails = {}
  
          # Number the edges arbitrarily.
          edge_identifier = itertools.count()
          for tail in vertices:
              for head in edge_mapper[tail]:
                  edge = next(edge_identifier)
                  edges.add(edge)
                  heads[edge] = head
                  tails[edge] = tail
  
          return cls._raw(
              vertices=vertices,
              edges=edges,
              heads=heads,
              tails=tails,
          )