public void addEdge(T v, T w) throws InvalidEdgeException,
			SelfLoopExistsException, ParallelEdgeExistsException
	{
		// / Insert names into the hash table. Associate current size as the
		// value
		if (!contains(v))
			st.put(v, st.size());
		if (!contains(w))
			st.put(w, st.size());

		// Reverse index
		keys.set(st.get(v), v);
		keys.set(st.get(w), w);
		
		G.addEdge(st.get(v), st.get(w));
	}