code: public Graph<K, VV, EV> addEdge(Vertex<K, VV> source, Vertex<K, VV> target, EV edgeValue) {
  		Graph<K, VV, EV> partialGraph = fromCollection(Arrays.asList(source, target),
  				Collections.singletonList(new Edge<>(source.f0, target.f0, edgeValue)),
  				this.context);
  		return this.union(partialGraph);
  	}
docs: Adds the given edge to the graph. If the source and target vertices do
  not exist in the graph, they will also be added.
  
  @param source the source vertex of the edge
  @param target the target vertex of the edge
  @param edgeValue the edge value
  @return the new graph containing the existing vertices and edges plus the
  newly added edge