###############################################################################
# Copyright (c) 2000, 2021 IBM Corporation and others.
#
# This program and the accompanying materials
# are made available under the terms of the Eclipse Public License 2.0
# which accompanies this distribution, and is available at
# https://www.eclipse.org/legal/epl-2.0/
#
# SPDX-License-Identifier: EPL-2.0
#
# Contributors:
#   IBM Corporation - initial API and implementation
#   Benjamin Muskalla - Contribution for bug 239066
#   Stephan Herrmann - Contributions for
#     bug 236385 - [compiler] Warn for potential programming problem if an object is created but not used
#     bug 295551 - Add option to automatically promote all warnings to errors
#     bug 359721 - [options] add command line option for new warning token "resource"
#     bug 365208 - [compiler][batch] command line options for annotation based null analysis
#     bug 374605 - Unreasonable warning for enum-based switch statements
#     bug 388281 - [compiler][null] inheritance of null annotations as an option
#     bug 440687 - [compiler][batch][null] improve command line option for external annotations
#     Bug 408815 - [batch][null] Add CLI option for COMPILER_PB_SYNTACTIC_NULL_ANALYSIS_FOR_FIELDS
#   Alan Moraes <alan@kelon.org> - Contribution for bug 383644
#   Jesper S Moller - Contribution for bug 407297 - [1.8][compiler] Control generation of parameter names by option
###############################################################################
### JavaBatchCompiler messages.

### compiler
#Format: compiler.name = word1 word2 word3
compiler.name = Eclipse Compiler for Java(TM)
#Format: compiler.version = (The place holders will be automatically filled. Do not remove or alter it)
compiler.version = bundle_qualifier, bundle_version
compiler.copyright = Copyright IBM Corp 2000, 2020. All rights reserved.

### progress
progress.compiling = Compiling

### compile
compile.repetition = [repetition {0}/{1}]
compile.instantTime = [compiled {0} lines in {1} ms: {2} lines/s]
compile.detailedTime = [parse: {0} ms ({1}%), resolve: {2} ms ({3}%), analyze: {4} ms ({5}%), generate: {6} ms ({7}%) ]
compile.ioTime = [i/o: read: {0} ms ({1}%), write: {2} ms ({3}%)]
compile.averageTime = [average, excluding min-max {0} lines in {1} ms: {2} lines/s]
compile.totalTime = [total compilation time: {0}]
compile.oneProblem = 1 problem ({0})
compile.severalProblemsErrorsOrWarnings = {0} problems ({1})
compile.severalProblemsErrorsAndWarnings = {0} problems ({1}, {2})
compile.severalProblems = {0} problems ({1}, {2}, {3})
compile.oneError = 1 error
compile.severalErrors = {0} errors
compile.oneWarning = 1 warning
compile.severalWarnings = {0} warnings
compile.oneInfo = 1 info
compile.severalInfos = {0} infos
compile.oneClassFileGenerated = [1 .class file generated]
compile.severalClassFilesGenerated = [{0} .class files generated]
compile.failOnWarning = error: warnings found and -failOnWarning specified

### configure
configure.requiresJDK1.2orAbove = Need to use a JVM >= 1.2
configure.duplicateLog = duplicate log specification: {0}
configure.duplicateRepeat = duplicate repeat specification: {0}
configure.duplicateMaxProblems = duplicate max problems specification: {0}
configure.duplicateCompliance = duplicate compliance setting specification: {0}
configure.duplicateSource = duplicate source compliance setting specification: {0}
configure.duplicateTarget = duplicate target compliance setting specification: {0}
configure.unsupportedReleaseOption = option --release is supported only when run with JDK 9 or above
configure.unsupportedWithRelease = option {0} is not supported when --release is used
configure.unsupportedReleaseVersion = release version {0} is not supported
configure.source = source level should be in ''1.1''...''1.8'',''9''...''17'' (or ''5.0''..''17.0''): {0}
configure.invalidSystem = invalid location for system libraries: {0}
configure.unsupportedOption = option {0} not supported at compliance level 9 and above
configure.duplicateOutputPath = duplicate output path specification: {0}
configure.duplicateModulePath = duplicate module path specification: {0}
configure.duplicateModuleSourcepath = duplicate source module path specification: {0}
configure.invalidModuleDescriptor = cannot open the module descriptor from {0}
configure.invalidModuleOption = incorrectly formatted option: {0}
configure.duplicateExport = can specify a package in a module only once with --add-export
configure.OneOfModuleOrSourcePath = cannot specify both -source-path and --module-source-path
configure.duplicateBootClasspath = duplicate bootclasspath specification: {0}
configure.duplicateExtDirs = duplicate extdirs specification: {0}
configure.duplicateSourcepath = duplicate sourcepath specification: {0}
configure.invalidDebugOption = invalid debug option: {0}
configure.invalidWarningConfiguration = invalid warning configuration: ''{0}''
configure.invalidWarning = invalid warning token: ''{0}''. Ignoring warning and compiling
configure.invalidWarningOption = invalid warning option: ''{0}''. Must specify a warning token
configure.targetJDK = target level should be in ''1.1''...''1.8'',''9''...''17'' (or ''5.0''..''17.0'') or cldc1.1: {0}
configure.incompatibleTargetForSource = Target level ''{0}'' is incompatible with source level ''{1}''. A target level ''{1}'' or better is required
configure.incompatibleTargetForGenericSource = Target level ''{0}'' is incompatible with source level ''{1}''. A source level ''1.5'' or better is required
configure.incompatibleComplianceForSource = Compliance level ''{0}'' is incompatible with source level ''{1}''. A compliance level ''{1}'' or better is required
configure.incompatibleComplianceForTarget = Compliance level ''{0}'' is incompatible with target level ''{1}''. A compliance level ''{1}'' or better is required
configure.repetition = repetition must be a positive integer: {0}
configure.maxProblems = max problems must be a positive integer: {0}
configure.invalidNowarnOption = invalid syntax for nowarn option: {0}
configure.unsupportedPreview = Preview of features is supported only at the latest source level

configure.invalidErrorConfiguration = invalid error configuration: ''{0}''
configure.invalidError = invalid error token: ''{0}''. Ignoring this error token and compiling
configure.invalidErrorOption = invalid error option: ''{0}''. Must specify an error token

configure.invalidInfoConfiguration = invalid info configuration: ''{0}''
configure.invalidInfo = invalid info token: ''{0}''. Ignoring this info token and compiling
configure.invalidInfoOption = invalid info option: ''{0}''. Must specify an info token

configure.notOnModuleSourcePath = ''{0}'' does not belong to a module on the module source path
configure.no.ModuleDescriptorVersionparse = Could not invoke method java.lang.module.ModuleDescriptor.Version.parse(), cannot validate module version.

## configure.directoryNotExist = directory does not exist: {0}
configure.unrecognizedOption = Unrecognized option : {0}
configure.noClasspath = no classpath defined, using default directory instead
configure.incorrectClasspath = incorrect classpath: {0}
configure.invalidexpansionargumentname = expansion argument file {0} does not exist or cannot be read
configure.cannotOpenLog = cannot open .log file: {0}
configure.cannotOpenLogInvalidEncoding = cannot open .log file: {0}; because UTF-8 is not supported
configure.unexpectedCustomEncoding = unexpected custom encoding specification: {0}[{1}]
configure.unsupportedEncoding = unsupported encoding format: {0}
configure.duplicateDefaultEncoding = duplicate default encoding format specification: {0}
configure.invalidTaskTag ={0} is an invalid task tag
configure.incorrectExtDirsEntry = incorrect ext dir entry; {0} must be a directory
configure.incorrectEndorsedDirsEntry = incorrect endorsed dir entry; {0} must be a directory
configure.duplicateEndorsedDirs = duplicate endorseddirs specification: {0}
configure.missingDestinationPath = destination path must be provided with module source path
configure.incorrectDestinationPathEntry = incorrect destination path entry: {0}
configure.unexpectedBracket = unexpected bracket: {0}
configure.unexpectedDestinationPathEntry = unexpected destination path entry in {0} option
configure.unexpectedDestinationPathEntryFile = unexpected destination path entry for file: {0}
configure.accessRuleAfterDestinationPath = access rules cannot follow destination path entries: {0}
configure.duplicateDestinationPathEntry = duplicate destination path entry in {0} option
configure.invalidClassName = invalid class name: {0}
configure.invalidModuleName = invalid module name: {0}
configure.packageConflict = The package {0} is accessible from more than one module: {1}, {2}
configure.unavailableAPT = Unable to load annotation processing manager {0} from classpath.
configure.incorrectVMVersionforAPT = Annotation processing got disabled, since it requires a 1.6 compliant JVM
configure.incompatibleSourceForCldcTarget=Target level ''{0}'' is incompatible with source level ''{1}''. A source level ''1.3'' or lower is required
configure.incompatibleComplianceForCldcTarget=Target level ''{0}'' is incompatible with compliance level ''{1}''. A compliance level ''1.4''or lower is required
configure.invalidClasspathSection = invalid Class-Path header in manifest of jar file: {0}
configure.multipleClasspathSections = multiple Class-Path headers in manifest of jar file: {0}
configure.missingwarningspropertiesfile=properties file {0} does not exist
configure.ioexceptionwarningspropertiesfile=An IOException occurred while reading the properties file {0}
configure.multipleencodings=Multiple encoding specified: {1}. The default encoding has been set to {0}
configure.differentencodings=Found encoding {0}. Different encodings were specified: {1}
configure.differentencoding=Found encoding {0}. A different encoding was specified: {1}

### null annotations
configure.invalidNullAnnot = Token {0} is not in the expected format "nullAnnot(<nullable annotation name> | <non null annotation name> | <non-null by default annotation name>)"
configure.missingAnnotationPath = Missing argument to -annotationpath at ''{0}''

### requestor
requestor.error = {0}. ERROR in {1}
requestor.warning = {0}. WARNING in {1}
requestor.info = {0}. INFO in {1}
requestor.extraerror = {0}. ERROR:
requestor.extrawarning = {0}. WARNING:
requestor.extrainfo = {0}. INFO:
requestor.notRetrieveErrorMessage = Cannot retrieve the error message for {0}
requestor.noFileNameSpecified = (original file name is not available)

### EMACS STYLE
output.emacs.error=error
output.emacs.warning=warning
output.emacs.info=info

### unit
unit.more = File {0} is specified more than once
unit.missing = File {0} is missing

### output
output.noClassFileCreated = No .class file created for file {1} in {0} because of an IOException: {2}

### miscellaneous
misc.version = {0} {1}, {2}
misc.usage = {1} {2}\n\
{3}\n\
\ \n\
\ Usage: <options> <source files | directories>\n\
\ If directories are specified, then their source contents are compiled.\n\
\ Possible options are listed below. Options enabled by default are prefixed\n\
\ with ''+''.\n\
\ \n\
\ Classpath options:\n\
\    -cp -classpath <directories and ZIP archives separated by {0}>\n\
\                       specify location for application classes and sources.\n\
\                       Each directory or file can specify access rules for\n\
\                       types between ''['' and '']'' (e.g. [-X] to forbid\n\
\                       access to type X, [~X] to discourage access to type X,\n\
\                       [+p/X{0}-p/*] to forbid access to all types in package p\n\
\                       but allow access to p/X)\n\
\    -bootclasspath <directories and ZIP archives separated by {0}>\n\
\                       specify location for system classes. Each directory or\n\
\                       file can specify access rules for types between ''[''\n\
\                       and '']''\n\
\    -sourcepath <directories and ZIP archives separated by {0}>\n\
\                       specify location for application sources. Each directory\n\
\                       or file can specify access rules for types between ''[''\n\
\                       and '']''. Each directory can further specify a specific\n\
\                       destination directory using a ''-d'' option between ''[''\n\
\                       and '']''; this overrides the general ''-d'' option.\n\
\                       .class files created from source files contained in a\n\
\                       jar file are put in the user.dir folder in case no\n\
\                       general ''-d'' option is specified. ZIP archives cannot\n\
\                       override the general ''-d'' option\n\
\    -extdirs <directories separated by {0}>\n\
\                       specify location for extension ZIP archives\n\
\    -endorseddirs <directories separated by {0}>\n\
\                       specify location for endorsed ZIP archives\n\
\    -d <dir>           destination directory (if omitted, no directory is\n\
\                       created); this option can be overridden per source\n\
\                       directory\n\
\    -d none            generate no .class files\n\
\    -encoding <enc>    specify default encoding for all source files. Each\n\
\                       file/directory can override it when suffixed with\n\
\                       ''[''<enc>'']'' (e.g. X.java[utf8]).\n\
\                       If multiple default encodings are specified, the last\n\
\                       one will be used.\n\
\ \n\
\ Module compilation options:\n\
\   These options are meaningful only in Java 9 environment or later.\n\
\    --module-source-path <directories separated by {0}>\n\
\                       specify where to find source files for multiple modules\n\
\    -p --module-path <directories separated by {0}>\n\
\                       specify where to find application modules\n\
\    --processor-module-path <directories separated by {0}>\n\
\                       specify module path where annotation processors\n\
\                       can be found\n\
\    --system <jdk>     Override location of system modules\n\
\    --add-exports <module>/<package>=<other-module>(,<other-module>)*\n\
\                       specify additional package exports clauses to the\n\
\                       given modules\n\
\    --add-reads <module>=<other-module>(,<other-module>)*\n\
\                       specify additional modules to be considered as required\n\
\                       by given modules\n\
\    --add-modules  <module>(,<module>)*\n\
\                       specify the additional module names that should be\n\
\                       resolved to be root modules\n\
\    --limit-modules <module>(,<module>)*\n\
\                       specify the observable module names\n\
\    --release <release> compile for a specific VM version\n\
\ \n\
\ Compliance options:\n\
\    -1.3               use 1.3 compliance (-source 1.3 -target 1.1)\n\
\    -1.4             + use 1.4 compliance (-source 1.3 -target 1.2)\n\
\    -1.5 -5 -5.0       use 1.5 compliance (-source 1.5 -target 1.5)\n\
\    -1.6 -6 -6.0       use 1.6 compliance (-source 1.6 -target 1.6)\n\
\    -1.7 -7 -7.0       use 1.7 compliance (-source 1.7 -target 1.7)\n\
\    -1.8 -8 -8.0       use 1.8 compliance (-source 1.8 -target 1.8)\n\
\    -1.9 -9 -9.0       use 1.9 compliance (-source 1.9 -target 1.9)\n\
\    -10 -10.0          use 10  compliance (-source 10  -target 10)\n\
\    -11 -11.0          use 11  compliance (-source 11  -target 11)\n\
\    -12 -12.0          use 12  compliance (-source 12  -target 12)\n\
\    -13 -13.0          use 13  compliance (-source 13  -target 13)\n\
\    -14 -14.0          use 14  compliance (-source 14  -target 14)\n\
\    -15 -15.0          use 15  compliance (-source 15  -target 15)\n\
\    -16 -16.0          use 16  compliance (-source 16  -target 16)\n\
\    -17 -17.0          use 17  compliance (-source 17  -target 17)\n\
\    -source <version>  set source level: 1.3 to 1.9, 10 to 17\n\
\                       (or 6, 6.0, etc)\n\
\    -target <version>  set classfile target: 1.3 to 1.9, 10 to 17\n\
\                       (or 6, 6.0, etc)\n\
\                       cldc1.1 can also be used to generate the StackMap\n\
\                       attribute\n\
\    --enable-preview   enable support for preview features of the\n\
\                       latest Java release\n\
\ \n\
\ Warning options:\n\
\    -deprecation     + deprecation outside deprecated code (equivalent to\n\
\                       -warn:+deprecation)\n\
\    -nowarn -warn:none disable all warnings\n\
\    -nowarn:[<directories separated by {0}>]\n\
\                       specify directories from which optional problems should\n\
\                       be ignored\n\
\    -?:warn -help:warn display advanced warning options\n\
\ \n\
\ Error options:\n\
\    -err:<warnings separated by ,>    convert exactly the listed warnings\n\
\                                      to be reported as errors\n\
\    -err:+<warnings separated by ,>   enable additional warnings to be\n\
\                                      reported as errors\n\
\    -err:-<warnings separated by ,>   disable specific warnings to be\n\
\                                      reported as errors\n\
\ \n\
\ Info options:\n\
\    -info:<warnings separated by ,>   convert exactly the listed warnings\n\
\                                      to be reported as infos\n\
\    -info:+<warnings separated by ,>  enable additional warnings to be\n\
\                                      reported as infos\n\
\    -info:-<warnings separated by ,>  disable specific warnings to be\n\
\                                      reported as infos\n\
\ \n\
\ Setting warning, error or info options using properties file:\n\
\    -properties <file>   set warnings/errors/info option based on the properties\n\
\                         file contents. This option can be used with -nowarn,\n\
\                         -err:.., -info: or -warn:.. options, but the last one\n\
\                         on the command line sets the options to be used.\n\
\ \n\
\ Debug options:\n\
\    -g[:lines,vars,source] custom debug info\n\
\    -g:lines,source  + both lines table and source debug info\n\
\    -g                 all debug info\n\
\    -g:none            no debug info\n\
\    -preserveAllLocals preserve unused local vars for debug purpose\n\
\ \n\
\ Annotation processing options:\n\
\   These options are meaningful only in a 1.6 environment.\n\
\    -Akey[=value]        options that are passed to annotation processors\n\
\    -processorpath <directories and ZIP archives separated by {0}>\n\
\                         specify locations where to find annotation processors.\n\
\                         If this option is not used, the classpath will be\n\
\                         searched for processors\n\
\    -processor <class1[,class2,...]>\n\
\                         qualified names of the annotation processors to run.\n\
\                         This bypasses the default annotation discovery process\n\
\    -proc:only           run annotation processors, but do not compile\n\
\    -proc:none           perform compilation but do not run annotation\n\
\                         processors\n\
\    -s <dir>             destination directory for generated source files\n\
\    -XprintProcessorInfo print information about which annotations and elements\n\
\                         a processor is asked to process\n\
\    -XprintRounds        print information about annotation processing rounds\n\
\    -classNames <className1[,className2,...]>\n\
\                         qualified names of binary classes to process\n\
\ \n\
\ Advanced options:\n\
\    @<file>            read command line arguments from file\n\
\    -maxProblems <n>   max number of problems per compilation unit (100 by\n\
\                       default)\n\
\    -log <file>        log to a file. If the file extension is ''.xml'', then\n\
\                       the log will be a xml file.\n\
\    -proceedOnError[:Fatal]\n\
\                       do not stop at first error, dumping class files with\n\
\                       problem methods\n\
\                       With ":Fatal", all optional errors are treated as fatal\n\
\    -failOnWarning     fail compilation if there are warnings\n\
\    -verbose           enable verbose output\n\
\    -referenceInfo     compute reference info\n\
\    -progress          show progress (only in -log mode)\n\
\    -time              display speed information \n\
\    -noExit            do not call System.exit(n) at end of compilation (n==0\n\
\                       if no error)\n\
\    -repeat <n>        repeat compilation process <n> times for perf analysis\n\
\    -inlineJSR         inline JSR bytecode (implicit if target >= 1.5)\n\
\    -enableJavadoc     consider references in javadoc\n\
\    -parameters        generate method parameters attribute (for target >= 1.8)\n\
\    -genericsignature  generate generic signature for lambda expressions\n\
\    -Xemacs            used to enable emacs-style output in the console.\n\
\                       It does not affect the xml log output\n\
\    -missingNullDefault  report missing default nullness annotation\n\
\    -annotationpath <directories and ZIP archives separated by {0}>\n\
\                       specify locations where to find external annotations\n\
\                       to support annotation-based null analysis.\n\
\                       The special name CLASSPATH will cause lookup of\n\
\                       external annotations from the classpath and sourcepath.\n\
\ \n\
\    -? -help           print this help message\n\
\    -v -version        print compiler version\n\
\    -showversion       print compiler version and continue\n\
\ \n\
\ Ignored options:\n\
\    -J<option>         pass option to virtual machine (ignored)\n\
\    -X<option>         specify non-standard option (ignored\n\
\                       except for listed -X options)\n\
\    -X                 print non-standard options and exit (ignored)\n\
\    -O                 optimize for execution time (ignored)\n
misc.usage.warn = {1} {2}\n\
{3}\n\
\ \n\
\ Warning options:\n\
\    -deprecation         + deprecation outside deprecated code\n\
\    -nowarn -warn:none disable all warnings and infos\n\
\    -nowarn:[<directories separated by {0}>]\n\
\                           specify directories from which optional problems\n\
\                           should be ignored\n\
\    -warn:<warnings separated by ,>   enable exactly the listed warnings\n\
\    -warn:+<warnings separated by ,>  enable additional warnings\n\
\    -warn:-<warnings separated by ,>  disable specific warnings\n\
\      all                  enable all warnings\n\
\      allDeadCode          dead code including trivial if(DEBUG) check\n\
\      allDeprecation       deprecation including inside deprecated code\n\
\      allJavadoc           invalid or missing javadoc\n\
\      allOver-ann          all missing @Override annotations\n\
\      all-static-method    all method can be declared as static warnings\n\
\      assertIdentifier   + ''assert'' used as identifier\n\
\      boxing               autoboxing conversion\n\
\      charConcat         + char[] in String concat\n\
\      compareIdentical   + comparing identical expressions\n\
\      conditionAssign      possible accidental boolean assignment\n\
\      constructorName    + method with constructor name\n\
\      deadCode           + dead code excluding trivial if (DEBUG) check\n\
\      dep-ann              missing @Deprecated annotation\n\
\      deprecation        + deprecation outside deprecated code\n\
\      discouraged        + use of types matching a discouraged access rule\n\
\      emptyBlock           undocumented empty block\n\
\      enumIdentifier       ''enum'' used as identifier\n\
\      enumSwitch           incomplete enum switch\n\
\      enumSwitchPedantic + report missing enum switch cases even\n\
\                           in the presence of a default case\n\
\      fallthrough          possible fall-through case\n\
\      fieldHiding          field hiding another variable\n\
\      finalBound           type parameter with final bound\n\
\      finally            + finally block not completing normally\n\
\      forbidden          + use of types matching a forbidden access rule\n\
\      hashCode             missing hashCode() method when overriding equals()\n\
\      hiding               macro for fieldHiding, localHiding, typeHiding and\n\
\                           maskedCatchBlock\n\
\      includeAssertNull    raise null warnings for variables\n\
\                           that got tainted in an assert expression\n\
\      indirectStatic       indirect reference to static member\n\
\      inheritNullAnnot     inherit null annotations\n\
\      intfAnnotation     + annotation type used as super interface\n\
\      intfNonInherited   + interface non-inherited method compatibility\n\
\      intfRedundant        find redundant superinterfaces\n\
\      invalidJavadoc       all warnings for malformed javadoc tags\n\
\      invalidJavadocTag    validate javadoc tag arguments\n\
\      invalidJavadocTagDep validate deprecated references in javadoc tag args\n\
\      invalidJavadocTagNotVisible\n\
\                           validate non-visible references in javadoc tag args\n\
\      invalidJavadocVisibility(<visibility>)\n\
\                           specify visibility modifier for malformed javadoc\n\
\                           tag warnings\n\
\      javadoc              invalid javadoc\n\
\      localHiding          local variable hiding another variable\n\
\      maskedCatchBlock   + hidden catch block\n\
\      missingJavadocTags   missing Javadoc tags\n\
\      missingJavadocTagsOverriding missing Javadoc tags in overriding methods\n\
\      missingJavadocTagsMethod missing Javadoc tags for method type parameter\n\
\      missingJavadocTagsVisibility(<visibility>)\n\
\                           specify visibility modifier for missing javadoc\n\
\                           tags warnings\n\
\      missingJavadocComments  missing Javadoc comments\n\
\      missingJavadocCommentsOverriding\n\
\                           missing Javadoc tags in overriding methods\n\
\      missingJavadocCommentsVisibility(<visibility>)  specify visibility\n\
\                           modifier for missing javadoc comments warnings\n\
\      module             + module related problems.\n\
\      nls                  string literal lacking non-nls tag //$NON-NLS-<n>$\n\
\      noEffectAssign     + assignment without effect\n\
\      null                 potential missing or redundant null check\n\
\      nullAnnot(<annot. names separated by |>)\n\
\                           annotation based null analysis,\n\
\                           nullable|nonnull|nonnullbydefault annotation types\n\
\                           optionally specified using fully qualified names.\n\
\                           Enabling this option enables all null-annotation\n\
\                           related sub-options. These can be individually\n\
\                           controlled using options listed below.\n\
\      nullAnnotConflict    conflict between null annotation specified\n\
\                           and nullness inferred. Is effective only with\n\
\                           nullAnnot option enabled.\n\
\      nullAnnotRedundant   redundant specification of null annotation. Is\n\
\                           effective only with nullAnnot option enabled.\n\
\      nullDereference    + missing null check\n\
\      nullUncheckedConversion  unchecked conversion from non-annotated type\n\
\                           to @NonNull type. Is effective only with\n\
\                           nullAnnot option enabled.\n\
\      over-ann             missing @Override annotation (superclass)\n\
\      paramAssign          assignment to a parameter\n\
\      pkgDefaultMethod   + attempt to override package-default method\n\
\      raw                + usage of raw type\n\
\      removal            + deprecation marked for removal\n\
\      resource           + (pot.) unsafe usage of resource of type Closeable\n\
\      semicolon            unnecessary semicolon, empty statement\n\
\      serial             + missing serialVersionUID\n\
\      specialParamHiding   constructor or setter parameter hiding a field\n\
\      static-method        method can be declared as static\n\
\      static-access        macro for indirectStatic and staticReceiver\n\
\      staticReceiver     + non-static reference to static member\n\
\      super                overriding a method without making a super invocation\n\
\      suppress           + enable @SuppressWarnings\n\
\                           When used with -err:, it can also silence optional\n\
\                           errors and warnings\n\
\      switchDefault        switch statement lacking a default case\n\
\      syncOverride         missing synchronized in synchr. method override\n\
\      syntacticAnalysis    perform syntax-based null analysis for fields\n\
\      syntheticAccess      synthetic access for innerclass\n\
\      tasks(<tags separated by |>)  tasks identified by tags inside comments\n\
\      typeHiding         + type parameter hiding another type\n\
\      unavoidableGenericProblems  + ignore unavoidable type safety problems\n\
\                           due to raw APIs\n\
\      unchecked          + unchecked type operation\n\
\      unlikelyCollectionMethodArgumentType\n\
\                         + unlikely argument type for collection method\n\
\                           declaring an Object parameter\n\
\      unlikelyEqualsArgumentType  unlikely argument type for method equals()\n\
\      unnecessaryElse      unnecessary else clause\n\
\      unqualifiedField     unqualified reference to field\n\
\      unused               macro for unusedAllocation, unusedArgument,\n\
\                           unusedImport, unusedLabel, unusedLocal,\n\
\                           unusedPrivate, unusedThrown, and unusedTypeArgs,\n\
\                           unusedExceptionParam\n\
\      unusedAllocation     allocating an object that is not used\n\
\      unusedArgument       unread method parameter\n\
\      unusedExceptionParam unread exception parameter\n\
\      unusedImport       + unused import declaration\n\
\      unusedLabel        + unused label\n\
\      unusedLocal        + unread local variable\n\
\      unusedParam          unused parameter\n\
\      unusedParamOverriding  unused parameter for overriding method\n\
\      unusedParamImplementing  unused parameter for implementing method\n\
\      unusedParamIncludeDoc  unused parameter documented in comment tag\n\
\      unusedPrivate      + unused private member declaration\n\
\      unusedThrown         unused declared thrown exception\n\
\      unusedThrownWhenOverriding  unused declared thrown exception in \n\
\                           overriding method\n\
\      unusedThrownIncludeDocComment  unused declared thrown exception,\n\
\                           documented in a comment tag\n\
\      unusedThrownExemptExceptionThrowable  unused declared thrown exception,\n\
\                           exempt Exception and Throwable\n\
\      unusedTypeArgs     + unused type arguments for method and constructor\n\
\      uselessTypeCheck     unnecessary cast/instanceof operation\n\
\      varargsCast        + varargs argument need explicit cast\n\
\      warningToken       + unsupported or unnecessary @SuppressWarnings\n
