--- old/src/java.base/share/classes/java/lang/reflect/Constructor.java 2017-05-19 14:03:56.439820452 -0700 +++ new/src/java.base/share/classes/java/lang/reflect/Constructor.java 2017-05-19 14:03:56.327764458 -0700 @@ -588,19 +588,18 @@ } @Override - void handleParameterNumberMismatch(int resultLength, int numParameters) { + boolean handleParameterNumberMismatch(int resultLength, int numParameters) { Class declaringClass = getDeclaringClass(); if (declaringClass.isEnum() || declaringClass.isAnonymousClass() || declaringClass.isLocalClass() ) - return ; // Can't do reliable parameter counting + return false; // Can't do reliable parameter counting else { - if (!declaringClass.isMemberClass() || // top-level - // Check for the enclosing instance parameter for - // non-static member classes - (declaringClass.isMemberClass() && - ((declaringClass.getModifiers() & Modifier.STATIC) == 0) && - resultLength + 1 != numParameters) ) { + if (declaringClass.isMemberClass() && + ((declaringClass.getModifiers() & Modifier.STATIC) == 0) && + resultLength + 1 == numParameters) { + return true; + } else { throw new AnnotationFormatError( "Parameter annotations don't match number of parameters"); }