private static void configureJavaCompiler(IJavaProject jp, AppConfig appConfig) {

		final String WARNING = JavaCore.WARNING;
		final String IGNORE = JavaCore.IGNORE;
		final String ERROR = JavaCore.ERROR;

		// Compliance
		jp.setOption(JavaCore.COMPILER_SOURCE, appConfig.getCompilerComplianceLevel());
		jp.setOption(JavaCore.COMPILER_COMPLIANCE, appConfig.getCompilerComplianceLevel());
		jp.setOption(JavaCore.COMPILER_CODEGEN_TARGET_PLATFORM,
			appConfig.getCompilerComplianceLevel());

		// Code style
		jp.setOption(JavaCore.COMPILER_PB_STATIC_ACCESS_RECEIVER, WARNING);
		jp.setOption(JavaCore.COMPILER_PB_INDIRECT_STATIC_ACCESS, WARNING);
		jp.setOption(JavaCore.COMPILER_PB_UNQUALIFIED_FIELD_ACCESS, IGNORE);
		jp.setOption(JavaCore.COMPILER_PB_UNDOCUMENTED_EMPTY_BLOCK, IGNORE);
		jp.setOption(JavaCore.COMPILER_PB_SYNTHETIC_ACCESS_EMULATION, IGNORE);
		jp.setOption(JavaCore.COMPILER_PB_METHOD_WITH_CONSTRUCTOR_NAME, WARNING);
		jp.setOption(JavaCore.COMPILER_PB_PARAMETER_ASSIGNMENT, IGNORE);
		jp.setOption(JavaCore.COMPILER_PB_NON_NLS_STRING_LITERAL, IGNORE);

		// Potential programming problems
		jp.setOption(JavaCore.COMPILER_PB_MISSING_SERIAL_VERSION, IGNORE);
		jp.setOption(JavaCore.COMPILER_PB_NO_EFFECT_ASSIGNMENT, WARNING);
		jp.setOption(JavaCore.COMPILER_PB_POSSIBLE_ACCIDENTAL_BOOLEAN_ASSIGNMENT, WARNING);
		jp.setOption(JavaCore.COMPILER_PB_FINALLY_BLOCK_NOT_COMPLETING, WARNING);
		jp.setOption(JavaCore.COMPILER_PB_EMPTY_STATEMENT, WARNING);
		jp.setOption(JavaCore.COMPILER_PB_HIDDEN_CATCH_BLOCK, ERROR);
		jp.setOption(JavaCore.COMPILER_PB_VARARGS_ARGUMENT_NEED_CAST, WARNING);
		jp.setOption(JavaCore.COMPILER_PB_AUTOBOXING, IGNORE);
		jp.setOption(JavaCore.COMPILER_PB_INCOMPLETE_ENUM_SWITCH, WARNING);
		jp.setOption(JavaCore.COMPILER_PB_FALLTHROUGH_CASE, IGNORE);
		jp.setOption(JavaCore.COMPILER_PB_NULL_REFERENCE, WARNING);

		// Name shadowing and conflicts
		jp.setOption(JavaCore.COMPILER_PB_FIELD_HIDING, WARNING);
		jp.setOption(JavaCore.COMPILER_PB_LOCAL_VARIABLE_HIDING, WARNING);
		jp.setOption(JavaCore.COMPILER_PB_TYPE_PARAMETER_HIDING, WARNING);
		jp.setOption(JavaCore.COMPILER_PB_OVERRIDING_PACKAGE_DEFAULT_METHOD, WARNING);
		jp.setOption(JavaCore.COMPILER_PB_INCOMPATIBLE_NON_INHERITED_INTERFACE_METHOD, ERROR);

		// Deprecated and restricted API
		jp.setOption(JavaCore.COMPILER_PB_DEPRECATION, WARNING);
		jp.setOption(JavaCore.COMPILER_PB_FORBIDDEN_REFERENCE, ERROR);
		jp.setOption(JavaCore.COMPILER_PB_DISCOURAGED_REFERENCE, WARNING);

		// Unnecessary code
		jp.setOption(JavaCore.COMPILER_PB_UNUSED_LOCAL, WARNING);
		jp.setOption(JavaCore.COMPILER_PB_UNUSED_PARAMETER, IGNORE);
		jp.setOption(JavaCore.COMPILER_PB_UNUSED_IMPORT, WARNING);
		jp.setOption(JavaCore.COMPILER_PB_UNUSED_PRIVATE_MEMBER, WARNING);
		jp.setOption(JavaCore.COMPILER_PB_UNNECESSARY_ELSE, WARNING);
		jp.setOption(JavaCore.COMPILER_PB_UNNECESSARY_TYPE_CHECK, WARNING);
		jp.setOption(JavaCore.COMPILER_PB_UNUSED_DECLARED_THROWN_EXCEPTION, WARNING);
		jp.setOption(JavaCore.COMPILER_PB_UNUSED_LABEL, WARNING);

		// Generic types
		jp.setOption(JavaCore.COMPILER_PB_UNCHECKED_TYPE_OPERATION, WARNING);
		jp.setOption(JavaCore.COMPILER_PB_RAW_TYPE_REFERENCE, WARNING);
		jp.setOption(JavaCore.COMPILER_PB_FINAL_PARAMETER_BOUND, WARNING);

		// Annotations
		jp.setOption(JavaCore.COMPILER_PB_MISSING_OVERRIDE_ANNOTATION, IGNORE);
		jp.setOption(JavaCore.COMPILER_PB_MISSING_DEPRECATED_ANNOTATION, IGNORE);
		jp.setOption(JavaCore.COMPILER_PB_ANNOTATION_SUPER_INTERFACE, ERROR);
		jp.setOption(JavaCore.COMPILER_PB_UNHANDLED_WARNING_TOKEN, WARNING);
		jp.setOption(JavaCore.COMPILER_PB_SUPPRESS_WARNINGS, JavaCore.ENABLED);
	}
Configures the default Java compiler behavior for the given java project.

@param jp The Java project to configure.
@param appConfig Ghidra's application configuration.
GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/src/main/java/ghidradev/ghidraprojectcreator/utils/GhidraProjectUtils.java