Buggy code:
if ( ( length == 10 ) && ( warningOption . equals ( "-warn:none" ) ) ) { disableWarnings ( ) ; continue ; } if ( length < 6 ) throw new InvalidInputException ( Main . bind ( "configure.invalidWarningConfiguration" , warningOption ) ) ; StringTokenizer tokenizer = new StringTokenizer ( warningOption . substring ( 6 , warningOption . length ( ) ) , "," ) ; int tokenCounter = 0 ; disableWarnings ( ) ; while ( tokenizer . hasMoreTokens ( ) ) { String token = tokenizer . nextToken ( ) ; tokenCounter ++ ; if ( token . equals ( "constructorName" ) ) { options . put ( CompilerOptions . OPTION_ReportMethodWithConstructorName , CompilerOptions . WARNING ) ; } else if ( ( token . equals ( "pkgDefaultMethod" ) ) || ( token . equals ( "packageDefaultMethod" ) ) ) { options . put ( CompilerOptions . OPTION_ReportOverridingPackageDefaultMethod , CompilerOptions . WARNING ) ; } else if ( ( token . equals ( "maskedCatchBlock" ) ) || ( token . equals ( "maskedCatchBlocks" ) ) ) { options . put ( CompilerOptions . OPTION_ReportHiddenCatchBlock , CompilerOptions . WARNING ) ; } else if ( token . equals ( "deprecation" ) ) { options . put ( CompilerOptions . OPTION_ReportDeprecation , CompilerOptions . WARNING ) ; options . put ( CompilerOptions . OPTION_ReportDeprecationInDeprecatedCode , CompilerOptions . DISABLED ) ; } else if ( token . equals ( "allDeprecation" ) ) { options . put ( CompilerOptions . OPTION_ReportDeprecation , CompilerOptions . WARNING ) ; options . put ( CompilerOptions . OPTION_ReportDeprecationInDeprecatedCode , CompilerOptions . ENABLED ) ; } else if ( ( token . equals ( "unusedLocal" ) ) || ( token . equals ( "unusedLocals" ) ) ) { options . put ( CompilerOptions . OPTION_ReportUnusedLocal , CompilerOptions . WARNING ) ; } else if ( ( token . equals ( "unusedArgument" ) ) || ( token . equals ( "unusedArguments" ) ) ) { options . put ( CompilerOptions . OPTION_ReportUnusedParameter , CompilerOptions . WARNING ) ; } else if ( ( token . equals ( "unusedImport" ) ) || ( token . equals ( "unusedImports" ) ) ) { options . put ( CompilerOptions . OPTION_ReportUnusedImport , CompilerOptions . WARNING ) ; } else if ( token . equals ( "unusedPrivate" ) ) { options . put ( CompilerOptions . OPTION_ReportUnusedPrivateMember , CompilerOptions . WARNING ) ; } else if ( token . equals ( "localHiding" ) ) { options . put ( CompilerOptions . OPTION_ReportLocalVariableHiding , CompilerOptions . WARNING ) ; } else if ( token . equals ( "fieldHiding" ) ) { options . put ( CompilerOptions . OPTION_ReportFieldHiding , CompilerOptions . WARNING ) ; } else if ( token . equals ( "specialParamHiding" ) ) { options . put ( CompilerOptions . OPTION_ReportSpecialParameterHidingField , CompilerOptions . ENABLED ) ; } else if ( token . equals ( "conditionAssign" ) ) { options . put ( CompilerOptions . OPTION_ReportPossibleAccidentalBooleanAssignment , CompilerOptions . WARNING ) ; } else if ( token . equals ( "syntheticAccess" ) ) { options . put ( CompilerOptions . OPTION_ReportSyntheticAccessEmulation , CompilerOptions . WARNING ) ; } else if ( token . equals ( "nls" ) ) { options . put ( CompilerOptions . OPTION_ReportNonExternalizedStringLiteral , CompilerOptions . WARNING ) ; } else if ( token . equals ( "staticReceiver" ) ) { options . put ( CompilerOptions . OPTION_ReportNonStaticAccessToStatic , CompilerOptions . WARNING ) ; } else if ( token . equals ( "indirectStatic" ) ) { options . put ( CompilerOptions . OPTION_ReportIndirectStaticAccess , CompilerOptions . WARNING ) ; } else if ( token . equals ( "noEffectAssign" ) ) { options . put ( CompilerOptions . OPTION_ReportNoEffectAssignment , CompilerOptions . WARNING ) ; } else if ( ( token . equals ( "intfNonInherited" ) ) || ( token . equals ( "interfaceNonInherited" ) ) ) { options . put ( CompilerOptions . OPTION_ReportIncompatibleNonInheritedInterfaceMethod , CompilerOptions . WARNING ) ; } else if ( ( token . equals ( "charConcat" ) ) || ( token . equals ( "noImplicitStringConversion" ) ) ) { options . put ( CompilerOptions . OPTION_ReportNoImplicitStringConversion , CompilerOptions . WARNING ) ; } else if ( token . equals ( "semicolon" ) ) { options . put ( OPTION_ReportSuperfluousSemicolon , CompilerOptions . WARNING ) ; } else if ( token . equals ( "predicateThrow" ) ) { <START_BUG> options . put ( OPTION_ReportPredicateThrowingException , CompilerOptions . WARNING ) ; <END_BUG> } else if ( token . startsWith ( "tasks" ) ) { String taskTags = "" ; int start = token . indexOf ( '(' ) ; int end = token . indexOf ( ')' ) ; if ( ( ( start >= 0 ) && ( end >= 0 ) ) && ( start < end ) ) { taskTags = token . substring ( ( start + 1 ) , end ) . trim ( ) ; taskTags = taskTags . replace ( '|' , ',' ) ; } if ( ( taskTags . length ( ) ) == 0 ) { throw new InvalidInputException ( Main . bind ( "configure.invalidTaskTag" , token ) ) ; } options . put ( CompilerOptions . OPTION_TaskTags , taskTags ) ; } else if ( token . equals ( "assertIdentifier" ) ) { options . put ( CompilerOptions . OPTION_ReportAssertIdentifier , CompilerOptions . WARNING ) ; } else { throw new InvalidInputException ( Main . bind ( "configure.invalidWarning" , token ) ) ; } } if ( tokenCounter == 0 ) throw new InvalidInputException ( Main . bind ( "configure.invalidWarningOption" , currentArg ) ) ; continue ; } if ( currentArg . equals ( "-target" ) ) { mode = TargetSetting ; continue ; } if ( currentArg . equals ( "-preserveAllLocals" ) ) { options . put ( CompilerOptions . OPTION_PreserveUnusedLocal , CompilerOptions . PRESERVE ) ; continue ; } if ( mode == TargetSetting ) { didSpecifyTarget = true ;

Fix:
options . put ( OPTION_ReportBooleanMethodThrowingException , CompilerOptions . WARNING ) ;