Buggy code:
public static final long Bit32L = 2147483648L ; public static final long Bit33L = 4294967296L ; public static final long Bit34L = 8589934592L ; public static final long Bit35L = 17179869184L ; public static final long Bit36L = 34359738368L ; public static final long Bit37L = 68719476736L ; public static final long Bit38L = 137438953472L ; public static final long Bit39L = 274877906944L ; public static final long Bit40L = 549755813888L ; public int bits = ASTNode . IsReachableMASK ; public static final int ReturnTypeIDMASK = ( ( ( ASTNode . Bit1 ) | ( ASTNode . Bit2 ) ) | ( ASTNode . Bit3 ) ) | ( ASTNode . Bit4 ) ; public static final int OperatorSHIFT = 6 ; public static final int OperatorMASK = ( ( ( ( ( ASTNode . Bit7 ) | ( ASTNode . Bit8 ) ) | ( ASTNode . Bit9 ) ) | ( ASTNode . Bit10 ) ) | ( ASTNode . Bit11 ) ) | ( ASTNode . Bit12 ) ; public static final int ValueForReturnMASK = ASTNode . Bit5 ; public static final int OnlyValueRequiredMASK = ASTNode . Bit6 ; public static final int UnnecessaryCastMask = ASTNode . Bit15 ; public static final int NeedRuntimeCheckCastMASK = ASTNode . Bit7 ; public static final int IgnoreNeedForCastCheckMASK = ASTNode . Bit6 ; public static final int RestrictiveFlagMASK = ( ( ASTNode . Bit1 ) | ( ASTNode . Bit2 ) ) | ( ASTNode . Bit3 ) ; public static final int FirstAssignmentToLocalMASK = ASTNode . Bit4 ; public static final int IsImplicitThisMask = ASTNode . Bit3 ; public static final int DepthSHIFT = 5 ; public static final int DepthMASK = ( ( ( ( ( ( ( ASTNode . Bit6 ) | ( ASTNode . Bit7 ) ) | ( ASTNode . Bit8 ) ) | ( ASTNode . Bit9 ) ) | ( ASTNode . Bit10 ) ) | ( ASTNode . Bit11 ) ) | ( ASTNode . Bit12 ) ) | ( ASTNode . Bit13 ) ; public static final int IsReachableMASK = ASTNode . Bit32 ; public static final int IsLocalDeclarationReachableMASK = ASTNode . Bit31 ; public static final int AddAssertionMASK = ASTNode . Bit1 ; public static final int IsLocalTypeMASK = ASTNode . Bit9 ; public static final int IsAnonymousTypeMASK = ASTNode . Bit10 ; public static final int AnonymousAndLocalMask = ( ASTNode . IsAnonymousTypeMASK ) | ( ASTNode . IsLocalTypeMASK ) ; public static final int IsMemberTypeMASK = ASTNode . Bit11 ; public static final int HasLocalTypeMASK = ASTNode . Bit2 ; public static final int ParenthesizedSHIFT = 21 ; public static final int ParenthesizedMASK = ( ( ( ( ( ( ( ASTNode . Bit22 ) | ( ASTNode . Bit23 ) ) | ( ASTNode . Bit24 ) ) | ( ASTNode . Bit25 ) ) | ( ASTNode . Bit26 ) ) | ( ASTNode . Bit27 ) ) | ( ASTNode . Bit28 ) ) | ( ASTNode . Bit29 ) ; public static final int IsAssignmentWithNoEffectMASK = ASTNode . Bit30 ; public static final int IsStrictlyAssignedMASK = ASTNode . Bit14 ; public static final int IsCompoundAssignedMASK = ASTNode . Bit17 ; public static final int IsUsefulEmptyStatementMASK = ASTNode . Bit1 ; public static final int UndocumentedEmptyBlockMASK = ASTNode . Bit4 ; public static final int HasAllMethodBodies = ASTNode . Bit5 ; public static final int InsideJavadoc = ASTNode . Bit16 ; public static final int IsElseIfStatement = ASTNode . Bit30 ; public static final int IsSuperType = ASTNode . Bit5 ; public ASTNode ( ) { } public static boolean checkInvocationArgument ( BlockScope scope , Expression argument , TypeBinding parameterType , TypeBinding argumentType ) { } public static void checkInvocationArguments ( BlockScope scope , Expression receiver , TypeBinding receiverType , MethodBinding method , Expression [ ] arguments , TypeBinding [ ] argumentTypes , boolean argsContainCast , InvocationSite invocationSite ) { boolean unsafeWildcardInvocation = false ; TypeBinding [ ] params = method . parameters ; <START_BUG> if ( method . isVararg ( ) ) { <END_BUG> int lastIndex = ( params . length ) - 1 ; for ( int i = 0 ; i < lastIndex ; i ++ ) if ( ASTNode . checkInvocationArgument ( scope , arguments [ i ] , params [ i ] , argumentTypes [ i ] ) ) unsafeWildcardInvocation = true ; int argLength = arguments . length ; if ( lastIndex < argLength ) { TypeBinding parameterType = params [ lastIndex ] ; if ( ( ( params . length ) != argLength ) || ( ( parameterType . dimensions ( ) ) != ( argumentTypes [ lastIndex ] . dimensions ( ) ) ) ) parameterType = ( ( ArrayBinding ) ( parameterType ) ) . elementsType ( ) ; for ( int i = lastIndex ; i < argLength ; i ++ ) if ( ASTNode . checkInvocationArgument ( scope , arguments [ i ] , parameterType , argumentTypes [ i ] ) ) unsafeWildcardInvocation = true ; } } else { for ( int i = 0 , argLength = arguments . length ; i < argLength ; i ++ ) if ( ASTNode . checkInvocationArgument ( scope , arguments [ i ] , params [ i ] , argumentTypes [ i ] ) ) unsafeWildcardInvocation = true ; } if ( argsContainCast ) { CastExpression . checkNeedForArgumentCasts ( scope , receiver , receiverType , method , arguments , argumentTypes , invocationSite ) ; } if ( unsafeWildcardInvocation ) { scope . problemReporter ( ) . wildcardInvocation ( ( ( ASTNode ) ( invocationSite ) ) , receiverType , method , argumentTypes ) ; } else if ( ( receiverType . isRawType ( ) ) && ( method . hasSubstitutedParameters ( ) ) ) { scope . problemReporter ( ) . unsafeRawInvocation ( ( ( ASTNode ) ( invocationSite ) ) , receiverType , method ) ; } }

Fix:
if ( method . isVarargs ( ) ) {