* @param leftTransposed the left transpose MUM possibly null
	 * @param rightTransposed the right transpose MUM possibly null
	 * @return null or the best MUM
	 */
	private MUM getBest( MUM direct, MUM leftTransposed, 
		MUM rightTransposed )
	{
		MUM best = null;
		// decide which transpose MUM to use
		MUM transposed;
		if ( leftTransposed == null )
			transposed = rightTransposed;
		else if ( rightTransposed == null )
			transposed = leftTransposed;
		else if ( leftTransposed.compareTo(rightTransposed) > 0 )
			transposed = leftTransposed;
		else
			transposed = rightTransposed;
		// decide between direct and transpose MUM
		if ( direct != null && transposed != null )
		{
			int result = direct.compareTo( transposed );
			// remember, we nobbled the compareTo method
			// to produce reverse ordering in the specials
			// treemap, so "less than" is actually longer
			if ( result == 0 || result < 0 )
				best = direct;
			else
				best = transposed;
		}
		else if ( direct == null )
			best = transposed;
		else 
			best = direct;
		return best;
	}