private static String generateTokenErrorMessage(TokenMgrError e, String functionString) {

		// HACKY SMACKY: we have to parse the error message to get out the bits we 
		//               desire.  If we could control the TokeyMgrError.java file 
		//               generation, then we could put the fields in it that we need.

		String message = e.getMessage();

		int errorIndex = getTokenMgrErrorIndexOfInvalidText(message, functionString);
		if (errorIndex < 0) {
			errorIndex = getTokenMgrErrorIndexUsingErrorColumn(message);
		}

		if (errorIndex < 0) {
			return null;
		}

		return generateParsingExceptionMessage(e.getMessage(), errorIndex, functionString);
	}
Given a throwable, attempt pull out the significant error parts to generate a 
user-friendly error message.

@param t the throwable to examine, originating from the {@link CParser}.
@param functionString the full function signature text that was parsed by the parser.
@return a user-friendly error message, or null if this class did not know how to 
        handle the given exception.
Ghidra/Features/Base/src/main/java/ghidra/app/util/cparser/C/CParserUtils.java