protected static String combineActualExpected(String actual, String expected) {
		// pad the space between actual and expected with spaces or dots
		String space = "                                                  ";
		String fill = "..................................................";

		// the resulting String
		StringBuilder combined = new StringBuilder("");

		// setup the parsing of the expected and actual values
		StringTokenizer actLine = new StringTokenizer(actual, "\n");
		StringTokenizer expLine = new StringTokenizer(expected, "\n");

		// prime the while loop below with the first lines to compare and align
		String actString = actLine.nextToken();
		String expString = expLine.nextToken();

		// print the values side-by-side while they are matching
		while ((expString.equals(actString))) {
			// combine the matching lines with space between them
			combined.append(combineSpaceFill(actString, expString, space));

			// if no more lines in the expected print the rest of the actual
			if (!expLine.hasMoreTokens())
				return finishActual(combined, actLine);

			// if no more lines in the actual print the rest of the expected
			if (!actLine.hasMoreTokens())
				return finishExpected(combined, expLine);

			// get next lines for both, actual and expected
			actString = actLine.nextToken();
			expString = expLine.nextToken();
		}

		// produce the first differing line
		combined.append(combineSpaceFill(actString, expString, fill));

		// print the remaining values side-by-side
		// we get here only after a differing line has been printed
		while (expLine.hasMoreTokens() && actLine.hasMoreTokens()) {
			// get next lines for both, actual and expected
			actString = actLine.nextToken();
			expString = expLine.nextToken();

			// we only print spaces between lines after the first mis-match
			combined.append(combineSpaceFill(actString, expString, space));
		}

		// if no more lines in the expected print the rest of the actual
		if (!expLine.hasMoreTokens())
			return finishActual(combined, actLine);

		// if no more lines in the actual print the rest of the expected
		if (!actLine.hasMoreTokens())
			return finishExpected(combined, expLine);

		return combined.toString();
	}