private void appendSource(int position) {
		final int limit = 4;
		int start;
		final int skip = position - limit + 1;
		if (skip <= 0) {
			start = 0;
		} else {
			if (skip == 1) {
				htmlStrings.add("... (skipping 1 line) ...");
				plainStrings.add("... (skipping 1 line) ...");
			} else {
				htmlStrings.add("... (skipping " + skip + " lines) ...");
				plainStrings.add("... (skipping " + skip + " lines) ...");
			}
			start = position - limit + 1;
		}
		for (int i = start; i < position; i++) {
			htmlStrings.add(StringUtils.hideComparatorCharacters(getSource().getLine(i)));
			plainStrings.add(getSource().getLine(i));
		}
		final String errorLine = getSource().getLine(position);
		htmlStrings.add("<w:red>" + StringUtils.hideComparatorCharacters(errorLine) + "</w>");
		plainStrings.add(StringUtils.hideComparatorCharacters(errorLine));
		final StringBuilder underscore = new StringBuilder();
		for (int i = 0; i < errorLine.length(); i++) {
			underscore.append("^");
		}
		plainStrings.add(underscore.toString());
		final Collection<String> textErrors = new LinkedHashSet<String>();
		for (ErrorUml er : printedErrors) {
			textErrors.add(er.getError());
		}
		for (String er : textErrors) {
			htmlStrings.add(" <color:red>" + er);
			plainStrings.add(" " + er);
		}
		boolean first = true;
		for (String s : getSuggest()) {
			if (first) {
				htmlStrings.add(" <color:white><i>" + s);
			} else {
				htmlStrings.add("<color:white>" + StringUtils.hideComparatorCharacters(s));
			}
			first = false;
		}
	}