code: def _raw(cls, vertices, edges, heads, tails):
          
          self = object.__new__(cls)
          self._vertices = vertices
          self._edges = edges
          self._heads = heads
          self._tails = tails
  
          # For future use, map each vertex to its outward and inward edges.
          # These could be computed on demand instead of precomputed.
          self._out_edges = collections.defaultdict(set)
          self._in_edges = collections.defaultdict(set)
          for edge in self._edges:
              self._out_edges[self._tails[edge]].add(edge)
              self._in_edges[self._heads[edge]].add(edge)
          return self
docs: Private constructor for direct construction of
          a DirectedGraph from its consituents.