#-Xlint:ignore,error,warning will set the level for all Xlint warnings. -Xlint, alone, is an abbreviation for
     -Xlint:warning.

     The -Xlintfile:lint.properties allows fine-grained control. In tools.jar, see
     org/aspectj/weaver/XlintDefault.properties for the default behavior and a template to copy. 
### AspectJ-specific messages 
compiler.name = AspectJ Compiler 1.9.1
compiler.version = Eclipse Compiler #abe06abe4ce1(Apr2018), 3.14
compiler.copyright = 


## this next one superceded by above...
## configure.version = AspectJ Compiler 1.1 

configure.directoryNotExist = invalid option: {0}

### 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} info
compile.oneClassFileGenerated = [1 .class file generated]
compile.severalClassFilesGenerated = [{0} .class files generated]

### 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.source = source level should be comprised in between ''1.3'' and ''1.9'' (or ''5'', ''5.0'', ..., ''9'' or ''9.0''): {0}
configure.invalidSystem = invalid location for system libraries
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.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 JDK should be comprised in between ''1.1'' and ''1.4'': {0}
configure.incompatibleTargetForSource14 = ''1.4'' source mode requires ''-target 1.4'' : {0}
configure.incompatibleComplianceForSource14 = ''1.4'' source mode requires ''-1.4'' compliance mode: {0}
configure.incompatibleComplianceForTarget14 = ''1.4'' target mode requires ''-1.4'' compliance mode: {0}
configure.incompatibleComplianceForTarget11 = ''1.1'' target mode requires ''-1.3'' compliance mode: {0}
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.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.directoryNotExist = directory does not exist: {0}
configure.IOError = i/o error : unable to retrieve .JAVA files in directory: {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.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}

configure.invalidModuleName = invalid module name: {0}
### null annotations
configure.invalidNullAnnot = Token {0} is not in the expected format "nullAnnot(<non null annotation name> | <nullable 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}

### miscellaneous
misc.usage = {0}\n\
\n\
\tUsage: <options> <source file | @argfile>..\n\
\n\
AspectJ-specific options:\n\
\t-inpath <list>      use classes in dirs and jars/zips in <list> as source\n\
\t                    (<list> uses platform-specific path delimiter)\n\
\t-injars <jarList>   use classes in <jarList> zip files as source\n\
\t                    (<jarList> uses classpath delimiter)\n\
\t                    deprecated - use inpath instead.\n\
\t-aspectpath <list>  weave aspects in .class files from <list> dirs and jars/zip into sources\n\
\t                    (<list> uses classpath delimiter)\n\
\t-outjar <file>      put output classes in zip file <file>\n\
\t-outxml             generate META-INF/aop.xml\n\
\t-outxmlfile <file>  specify alternate destination output of -outxml\n\
\t-argfile <file>     specify line-delimited list of source files\n\
\t-showWeaveInfo      display information about weaving\n\
\t-incremental        continuously-running compiler, needs -sourceroots\n\
\t                    (reads stdin: enter to recompile and ''q'' to quit)\n\
\t-sourceroots <dirs> compile all .aj and .java files in <dirs>\n\
\t                    (<dirs> uses classpath delimiter)\n\
\t-crossrefs          generate .ajsym file into the output directory\n\
\t-emacssym           generate .ajesym symbol files for emacs support\n\
\t-Xlint              same as ''-Xlint:warning''\n\
\t-Xlint:<level>      set default level for crosscutting messages\n\
\t                    (<level> may be ignore, warning, or error)\n\
\t-Xlintfile <file>   specify properties file to set per-message levels\n\
\t                    (cf org/aspectj/weaver/XlintDefault.properties)\n\
\t-X                  print help on non-standard options\n\
\n\
Standard Eclipse compiler options:\n\
\ Options enabled by default are prefixed with ''+''\n\
\ \n\
\ Classpath options:\n\
\    -cp -classpath <directories and ZIP archives separated by ;>\n\
\                       specify location for application classes and sources\n\
\    -bootclasspath <directories and zip/jar files separated by ;>\n\
\                       specify location for system classes\n\
\    -d <dir>           destination directory (if omitted, no directory is created)\n\
\    -d none            generate no .class files\n\
\    -encoding <enc>    specify custom encoding for all sources. Each file/directory can override it\n\
\                       when suffixed with ''[''<enc>'']'' (e.g. X.java[utf8])\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\
\    -source <version>  set source level: 1.3 to 1.9 (or 6, 6.0, etc)\n\
\    -target <version>  set classfile target: 1.1 to 1.9 (or 6, 6.0, etc)\n\
\                       cldc1.1 can also be used to generate the StackMap\n\
\                       attribute\n\
\ \n\
\ Warning options:\n\
\    -deprecation     + deprecation outside deprecated code (equivalent to\n\
\                       -warn:+deprecation)\n\
\    -nowarn -warn:none disable all warnings\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\
\      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  validate non-visible references in javadoc\n\
\							tag args\n\
\      invalidJavadocVisibility(<visibility>)  specify visibility modifier\n\
\							for malformed javadoc 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>)  specify visibility modifier\n\
\							for missing javadoc tags warnings\n\
\      missingJavadocComments   missing Javadoc comments\n\
\      missingJavadocCommentsOverriding   missing Javadoc tags in overriding\n\
\							methods\n\
\      missingJavadocCommentsVisibility(<visibility>)  specify visibility\n\
\							modifier for missing javadoc comments warnings\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 |>)   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\
\      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
\ \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\
\ Advanced options:\n\
\    -log <file>        log to a file\n\
\    -proceedOnError    do not stop at first error, dumping class files with problem methods\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 if no error)\n\
\    -repeat <n>        repeat compilation process <n> times for perf analysis\n\
\    @<file>            read command line arguments from file\n\
\ \n\
\    -? -help           print this help message\n\
\    -v -version        print compiler version\n\
\    -showversion       print compiler version and continue\n

xoption.usage = {0} non-standard options:\n\
\n\
\t-XnoInline          don't inline advice\n\
\t-XlazyTjp           create thisJoinPoint objects lazily\n\
\t-Xreweavable        create class files that can be subsequently rewoven\n\
\t                    by AspectJ. Deprecated, this is now on by default.\n\
\t-Xreweavable:compress deprecated, reweavable is now default.\n\
\t-XnotReweavable     create class files that can't be subsequently rewoven\n\
\t                    by AspectJ.\n\
\t-XserializableAspects allows aspects to implement serializable\n\
\t-XterminateAfterCompilation compile classes then terminate before weaving\n\
\t-XaddSerialVersionUID calculates and adds the serialVersionUID to any\n\
\t                    serializable type woven by an aspect\n\
\t-Xajruntimetarget:<level> allows code to be generated that targets\n\
\t                    a 1.2 or a 1.5 level AspectJ runtime (default 1.5)\n\
\t-XhasMember         allow hasmethod() and hasfield type patterns in\n\
\t                    declare parents and declare @type\n\
\t-Xjoinpoints:       supply a comma separated list of new joinpoints\n\
\t                    that can be identified by pointcuts.  Values are:\n\
\t                    arrayconstruction, synchronization\n
## options not documented above (per ..ajdt.ajc.BuildArgParser.java):
# -XincrementalFile, -XjavadocsInModel

###############################################################################
# Copyright (c) 2000, 2004 IBM Corporation and others.
# All rights reserved. This program and the accompanying materials 
# are made available under the terms of the Eclipse Public License v1.0
# which accompanies this distribution, and is available at
# http://www.eclipse.org/legal/epl-v10.html
# 
# Contributors:
#     IBM Corporation - initial API and implementation
###############################################################################
### JavaBatchCompiler messages.

### compiler 
#compiler.name = Eclipse Java Compiler
#compiler.version = 0.396
#compiler.copyright = Copyright IBM Corp 2000, 2003. All rights reserved.

### scanning
scanning.start = Collecting source files inside {0}

### progress
progress.compiling = Compiling

### compile
compile.repetition = [repetition {0}/{1}]
compile.instantTime = [compiled {0} lines in {1} ms: {2} lines/s]
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.oneError = 1 error
compile.severalErrors = {0} errors
compile.oneWarning = 1 warning
compile.severalWarnings = {0} warnings
compile.oneClassFileGenerated = [1 .class file generated]
compile.severalClassFilesGenerated = [{0} .class files generated]

#compile.repetition = Repetition {0}/{1}
#compile.instantTime = Compiled {0} lines in {1} ms ({2} lines/s)
#compile.totalTime = Total compilation time: {0}
#compile.oneProblem = 1 problem
#compile.severalProblems = {0} problems
#compile.oneError = 1 error
#compile.severalErrors = {0} errors
#compile.oneWarning = 1 warning
#compile.severalWarnings = {0} warnings
#compile.oneClassFileGenerated = 1 .class file generated
#compile.severalClassFilesGenerated = {0} .class files generated

### configure
configure.requiresJDK1.2orAbove = Need to use a JVM >= 1.2
configure.duplicateLog = duplicate log specification: {0}
configure.duplicateRepeat = duplicate repeat specification: {0}
configure.duplicateCompliance = duplicate compliance setting specification: {0}
configure.source = invalid source option, source is either ''1.3'' or ''1.4'': {0}
configure.duplicateOutputPath = duplicate output path specification: {0}
configure.duplicateBootClasspath = duplicate bootclasspath specification: {0}
configure.invalidDebugOption = invalid debug option: {0}
configure.invalidWarningConfiguration = invalid warning configuration: {0}
configure.invalidWarning = invalid warning: {0}
configure.invalidWarningOption = invalid warning option: {0}
configure.targetJDK = target JDK should be comprised in between ''1.1'' and ''1.4'': {0}
configure.incompatibleTargetForSource14 = ''1.4'' source mode requires ''-target 1.4'' : {0}
configure.incompatibleComplianceForSource14 = ''1.4'' source mode requires ''-1.4'' compliance mode: {0}
configure.incompatibleComplianceForTarget14 = ''1.4'' target mode requires ''-1.4'' compliance mode: {0}
configure.incompatibleComplianceForTarget11 = ''1.1'' target mode requires ''-1.3'' compliance mode: {0}
configure.incompatibleComplianceForTarget = Compliance level ''{0}'' is incompatible with target level ''{1}''. A compliance level ''{1}'' or better is required
configure.invalidClasspathSection = invalid Class-Path header in manifest of jar file: {0}
configure.repetition = repetition must be a positive integer: {0}
configure.directoryNotExist = directory does not exist: {0}
configure.IOError = i/o error : unable to retrieve .JAVA files in directory: {0}
configure.noClasspath = no classpath defined, using default directory instead
configure.incorrectClasspath = incorrect classpath: {0}
configure.invalidexpansionargumentname = expansion argument file {0} doesn't exist or cannot be read
configure.cannotOpenLog = cannot open .log file
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

### requestor
requestor.error = ERROR
requestor.warning = WARNING
requestor.in = in {0}
requestor.notRetrieveErrorMessage = Cannot retrieve the error message for {0}

### 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 named {0} because of an IOException.

### miscellaneous
misc.version = {0} ({1}) - {2} {3}
