trans.addEdge(toolkit.duplicateVertexKey(e.getTarget().getVertexKey()), toolkit.duplicateVertexKey(e.getSource().getVertexKey()), toolkit.duplicateEdgeKey(e.getEdgeKey()), toolkit);
VertexType transSource = m_origToTransposeMap.get(e.getTarget()); VertexType transTarget = m_origToTransposeMap.get(e.getSource());  trans.addEdge(transSource, transTarget);
	public GraphType transpose(GraphType orig,		GraphToolkit<GraphType, EdgeKey, VertexKey, EdgeType, VertexType> toolkit) {		GraphType trans = toolkit.createGraph();		// For each vertex in original graph, create an equivalent		// vertex in the transposed graph		for (Iterator<VertexType> i = orig.getVertexIterator(); i.hasNext(); ) {			VertexType v = (VertexType) i.next();			trans.addVertex(toolkit.duplicateVertexKey(v.getVertexKey()), toolkit);		}		// Ensure that vertex labels in the transposed graph		// match vertex labels in the original graph		LabelEquivalentVertices<GraphType, EdgeKey, VertexKey, EdgeType, VertexType> l =			new LabelEquivalentVertices<GraphType, EdgeKey, VertexKey, EdgeType, VertexType>();		l.labelEquivalentVertices(trans, orig);		// For each edge in the original graph, create a reversed edge		// in the transposed graph		for (Iterator<EdgeType> i = orig.getEdgeIterator(); i.hasNext(); ) {			EdgeType e = i.next();			trans.addEdge(toolkit.duplicateVertexKey(e.getTarget().getVertexKey()),						   toolkit.duplicateVertexKey(e.getSource().getVertexKey()),						   toolkit.duplicateEdgeKey(e.getEdgeKey()),						   toolkit);		}		return trans;	}