private Node getIntersectingNode( Node u, Arc a ) throws Exception
	{
		Node v;
		Arc b = unattached.getIntersectingArc( a );
		if ( b != null )
		{
			if ( b.isHint() )
			{
				v = b.from;
				if ( unattached.removeEmptyArc(b,a.versions) )
					nArcs--;
			}
			else
				v = u;
		}
		else
		{
			v = u;
			Iterator<Node> iter = incomplete.iterator();
			while ( iter.hasNext() )
			{
				v = iter.next();
				if ( v.wants(a) )
					break;
			}
		}
		return v;
	}