Buggy code:
public class Main implements ProblemSeverities { private boolean noWarn = false ; PrintWriter out ; boolean systemExitWhenFinished = true ; boolean proceedOnError = false ; boolean verbose = false ; boolean produceRefInfo = false ; boolean timer = false ; boolean showProgress = false ; public long time = 0 ; long lineCount ; Hashtable options ; String [ ] filenames ; String [ ] classpaths ; String destinationPath ; String log ; int repetitions ; int globalProblemsCount ; int globalErrorsCount ; int globalWarningsCount ; private static final char [ ] CLASS_FILE_EXTENSION = ".class" . toCharArray ( ) ; private static final char [ ] DOUBLE_QUOTES = "''" . toCharArray ( ) ; private static final char [ ] SINGLE_QUOTE = "'" . toCharArray ( ) ; int exportedClassFilesCounter ; private static boolean JDK1_1 = false ; protected static ResourceBundle bundle ; private static final String bundleName = "org.eclipse.jdt.internal.compiler.batch.messages" ; private boolean proceed = true ; protected Main ( PrintWriter writer , boolean systemExitWhenFinished ) { } protected void compile ( String [ ] argv ) { } public static void compile ( String commandLine ) { } public static void compile ( String commandLine , PrintWriter writer ) { } private void configure ( String [ ] argv ) throws InvalidInputException { if ( ( argv == null ) || ( ( argv . length ) == 0 ) ) throw new InvalidInputException ( Main . bind ( "configure.noSourceFile" ) ) ; final int InsideClasspath = 1 ; final int InsideDestinationPath = 2 ; final int TargetSetting = 4 ; final int InsideLog = 8 ; final int InsideRepetition = 16 ; final int InsideSource = 32 ; final int InsideJCK = 64 ; final int Default = 0 ; int DEFAULT_SIZE_CLASSPATH = 4 ; boolean warnOptionInUsed = false ; boolean noWarnOptionInUsed = false ; int pathCount = 0 ; int index = - 1 ; int filesCount = 0 ; int argCount = argv . length ; int mode = Default ; repetitions = 0 ; boolean versionIDRequired = false ; boolean printUsageRequired = false ; boolean didSpecifyCompliance = false ; while ( ( ++ index ) < argCount ) { String currentArg = argv [ index ] . trim ( ) ; if ( currentArg . endsWith ( ".java" ) ) { if ( ( filenames ) == null ) { filenames = new String [ argCount - index ] ; } else if ( filesCount == ( filenames . length ) ) { int length = filenames . length ; System . arraycopy ( filenames , 0 , ( filenames = new String [ ( length + argCount ) - index ] ) , 0 , length ) ; } filenames [ ( filesCount ++ ) ] = currentArg ; mode = Default ; continue ; } if ( currentArg . equals ( "-log" ) ) { if ( ( log ) != null ) throw new InvalidInputException ( Main . bind ( "configure.duplicateLog" , currentArg ) ) ; mode = InsideLog ; continue ; } if ( currentArg . equals ( "-repeat" ) ) { if ( ( repetitions ) > 0 ) throw new InvalidInputException ( Main . bind ( "configure.duplicateRepeat" , currentArg ) ) ; mode = InsideRepetition ; continue ; } if ( currentArg . equals ( "-source" ) ) { mode = InsideSource ; continue ; } if ( currentArg . equals ( "-1.3" ) ) { if ( didSpecifyCompliance ) { throw new InvalidInputException ( Main . bind ( "configure.duplicateCompliance" , currentArg ) ) ; } didSpecifyCompliance = true ; options . put ( CompilerOptions . OPTION_Compliance , CompilerOptions . VERSION_1_3 ) ; mode = Default ; continue ; } if ( currentArg . equals ( "-1.4" ) ) { if ( didSpecifyCompliance ) { throw new InvalidInputException ( Main . bind ( "configure.duplicateCompliance" , currentArg ) ) ; } didSpecifyCompliance = true ; <START_BUG> options . put ( CompilerOptions . OPTION_Compliance , CompilerOptions . VERSION_1_3 ) ; <END_BUG> mode = Default ; continue ; } if ( currentArg . equals ( "-d" ) ) { if ( ( destinationPath ) != null ) throw new InvalidInputException ( Main . bind ( "configure.duplicateOutputPath" , currentArg ) ) ; mode = InsideDestinationPath ; continue ; } if ( ( currentArg . equals ( "-classpath" ) ) || ( currentArg . equals ( "-cp" ) ) ) { if ( pathCount > 0 ) throw new InvalidInputException ( Main . bind ( "configure.duplicateClasspath" , currentArg ) ) ; classpaths = new String [ DEFAULT_SIZE_CLASSPATH ] ; mode = InsideClasspath ; continue ; } if ( currentArg . equals ( "-progress" ) ) { mode = Default ; showProgress = true ; continue ; } if ( currentArg . equals ( "-proceedOnError" ) ) { mode = Default ; proceedOnError = true ; continue ; } if ( currentArg . equals ( "-time" ) ) { mode = Default ; timer = true ; continue ; } if ( ( currentArg . equals ( "-version" ) ) || ( currentArg . equals ( "-v" ) ) ) { versionIDRequired = true ; continue ; } if ( currentArg . equals ( "-help" ) ) { printUsageRequired = true ; continue ; } if ( currentArg . equals ( "-noImportError" ) ) { mode = Default ; options . put ( OPTION_ReportInvalidImport , CompilerOptions . WARNING ) ; continue ; } if ( currentArg . equals ( "-noExit" ) ) { mode = Default ; systemExitWhenFinished = false ; continue ; } if ( currentArg . equals ( "-verbose" ) ) { mode = Default ; verbose = true ; continue ; } if ( currentArg . equals ( "-referenceInfo" ) ) { mode = Default ; produceRefInfo = true ; continue ; } if ( currentArg . startsWith ( "-g" ) ) { mode = Default ; String debugOption = currentArg ; int length = currentArg . length ( ) ;

Fix:
options . put ( CompilerOptions . OPTION_Compliance , CompilerOptions . VERSION_1_4 ) ;