private static int diff_commonOverlap(String text1, String text2)
	{
		// Cache the text lengths to prevent multiple calls.
		final int text1_length = text1.length();
		final int text2_length = text2.length();
		// Eliminate the null case.
		if (text1_length == 0 || text2_length == 0)
		{
			return 0;
		}
		// Truncate the longer string.
		if (text1_length > text2_length)
		{
			text1 = text1.substring(text1_length - text2_length);
		}
		else if (text1_length < text2_length)
		{
			text2 = text2.substring(0, text1_length);
		}
		final int text_length = Math.min(text1_length, text2_length);
		// Quick check for the worst case.
		if (text1.equals(text2))
		{
			return text_length;
		}

		// Start by looking for a single character match
		// and increase length until no match is found.
		// Performance analysis: http://neil.fraser.name/news/2010/11/04/
		int best = 0;
		int length = 1;
		while (true)
		{
			final String pattern = text1.substring(text_length - length);
			final int found = text2.indexOf(pattern);
			if (found == -1)
			{
				return best;
			}
			length += found;
			if (found == 0 || text1.substring(text_length - length).equals(
					text2.substring(0, length)))
					{
				best = length;
				length++;
			}
		}
	}