protected String readUntilEndTag(InputStreamReader reader) throws IOException {
		StringBuffer sb = new StringBuffer();
		while (true) {
			char level1Char = readChar(reader);
			if (level1Char == '|') {
				char level2Char = readChar(reader);
				if (level2Char == 'E') {
					char level3Char = readChar(reader);
					if (level3Char == 'N') {
						char level4Char = readChar(reader);
						if (level4Char == 'D') {
							break;
						} else {
							sb.append(level1Char);
							sb.append(level2Char);
							sb.append(level3Char);
							sb.append(level4Char);
						}
					} else {
						sb.append(level1Char);
						sb.append(level2Char);
						sb.append(level3Char);
					}
				} else {
					sb.append(level1Char);
					sb.append(level2Char);
				}
			} else {
				sb.append(level1Char);
			}
		}

		// Utilities.log("Message size:" + sb.length());

		return sb.toString();
	}