Source:
private static RelaxationAction makeAccessibleFrom( @Nonnull final JMethod method, @CheckForNull final JType accessedVia, @Nonnull final JDefinedClassOrInterface accessor) { JDefinedClassOrInterface declType = method.getEnclosingType(); int currentModifier = method.getModifier(); if (declType instanceof JInterface) { assert JModifier.isPublic(currentModifier); return NO_OP_ACTION; } if (AccessibilityAnalyzer.isAccessibleFrom(method, accessedVia, accessor)) { return NO_OP_ACTION; } assert !JModifier.isPublic(currentModifier); if (method instanceof JConstructor) { final int requiredAccess = getRequiredMemberAccess(currentModifier, declType, accessedVia, accessor); return new RelaxationAction() { @Override public void relax() { relaxMethodAccess(method, requiredAccess, false); } }; } assert !JMethod.isClinit(method); String signature = getSignature(method); if (JModifier.isProtected(currentModifier)) { final List<JMethod> methods = collectOverrides((JDefinedClass) declType, signature); return new RelaxationAction() { @Override public void relax() { for (JMethod method : methods) { relaxMethodAccess(method, JModifier.PUBLIC, false); } } }; } Set<JDefinedInterface> interfaces = new HashSet<>(); final boolean isStatic = method.isStatic(); if (notImplementedInSuperclasses(declType.getSuperClass(), signature, isStatic, interfaces) && notImplementedInDerivedClasses((JDefinedClass) declType, signature, isStatic, interfaces)) { final int requiredAccess = getRequiredMemberAccess(currentModifier, declType, accessedVia, accessor); return new RelaxationAction() { @Override public void relax() { relaxMethodAccess(method, requiredAccess, !isStatic); } }; } return null; }

Target:
private static RelaxationAction makeAccessibleFrom( @Nonnull final JMethod method, @CheckForNull final JType accessedVia, @Nonnull final JDefinedClassOrInterface accessor) { JDefinedClassOrInterface declType = method.getEnclosingType(); int currentModifier = method.getModifier(); if (declType instanceof JInterface) { assert JModifier.isPublic(currentModifier); return NO_OP_ACTION; } if (AccessibilityAnalyzer.isAccessibleFrom(method, accessedVia, accessor)) { return NO_OP_ACTION; } assert !JModifier.isPublic(currentModifier); if (method instanceof JConstructor) { final int requiredAccess = getRequiredMemberAccess(currentModifier, declType, accessedVia, accessor); return new RelaxationAction() { @Override public void relax() { relaxMethodAccess(method, requiredAccess, false); } }; } assert !JMethod.isClinit(method); String signature = getSignature(method); if (JModifier.isProtected(currentModifier)) { final List<JMethod> methods = collectOverrides((JDefinedClass) declType, signature); return new RelaxationAction() { @Override public void relax() { for (JMethod method : methods) { relaxMethodAccess(method, JModifier.PUBLIC, false); } } }; } Set<JDefinedInterface> interfaces = new HashSet<>(); final boolean isStatic = method.isStatic(); if (signatureIsNotInherited(declType.getSuperClass(), signature, isStatic, interfaces) && signatureIsNotOverridden((JDefinedClass) declType, signature, isStatic, interfaces)) { final int requiredAccess = getRequiredMemberAccess(currentModifier, declType, accessedVia, accessor); return new RelaxationAction() { @Override public void relax() { relaxMethodAccess(method, requiredAccess, !isStatic); } }; } return null; }