public String getErrorInfo() {
		if (!specialConstructor) {
			try {
				return super.getMessage() + " at column " + currentToken.next.beginColumn + ".";
			}
			catch (Exception e) {
				return super.getMessage();
			}
		}
		int maxSize = 0;
		for (int i = 0; i < expectedTokenSequences.length; i++) {
			if (maxSize < expectedTokenSequences[i].length) {
				maxSize = expectedTokenSequences[i].length;
			}
		}

		String retval = "Unexpected \"";
		Token tok = currentToken.next;
		for (int i = 0; i < maxSize; i++) {
			if (i != 0)
				retval += " ";
			if (tok.kind == 0) {
				retval += tokenImage[0];
				break;
			}
			retval += add_escapes(tok.image);
			tok = tok.next;
		}
		retval += "\" at column " + currentToken.next.beginColumn + ".";
		return retval;
	}