--- old/src/java.base/share/classes/java/lang/invoke/MethodHandles.java 2017-10-03 06:49:50.691173830 -0400 +++ new/src/java.base/share/classes/java/lang/invoke/MethodHandles.java 2017-10-03 06:49:48.539050904 -0400 @@ -1395,13 +1395,7 @@ checkSpecialCaller(specialCaller, refc); Lookup specialLookup = this.in(specialCaller); MemberName method = specialLookup.resolveOrFail(REF_invokeSpecial, refc, name, type); - Class callerCls = findBoundCallerClass(method); - boolean restrict = !(method.isPrivate() && Reflection.areNestMates(specialCaller, refc)); - - if (restrict) - return specialLookup.getDirectMethod(REF_invokeSpecial, refc, method, callerCls); - else - return specialLookup.getDirectMethodNoRestrictInvokeSpecial(refc, method, callerCls); + return specialLookup.getDirectMethod(REF_invokeSpecial, refc, method, findBoundCallerClass(method)); } /**