public void run() 
	{
		char[] data = arc.getData();
		while ( first < data.length 
			&& st.advance(pos,data[first]) )
		{
			first++;
			pathLen++;
		}
		if ( first < data.length )
		{
			// If we report a mismatch in the first byte then 
			// multiple recursions at the end of a fully matched arc 
			// might fail and they will all get reported as mismatches  
			// of the same (preceding) arc. This incorrectly turns MUMs 
			// into MEMs. Hence we only report a mismatch if we match 
			// at least one character. If we were the first such 
			// incarnation of run(), matching 0 characters is in any case
			// uninteresting. See also the updateArc method.
			if ( first > 0 )
				mismatch();
		}
		else
			updateArc();
	}