void (@Nullable HighlightInfo.Builder info, @NotNull TextRange fixRange, @NotNull PsiJvmMember refElement, @NotNull PsiJavaCodeReferenceElement place, @Nullable PsiElement fileResolveScope, @Nullable TextRange parentFixRange) { if (info == null) return; PsiClass accessObjectClass = null; PsiElement qualifier = place.getQualifier(); if (qualifier instanceof PsiExpression) { accessObjectClass = (PsiClass)PsiUtil.getAccessObjectClass((PsiExpression)qualifier).getElement(); } registerReplaceInaccessibleFieldWithGetterSetterFix(info, refElement, place, accessObjectClass, parentFixRange); if (refElement instanceof PsiCompiledElement) return; PsiModifierList modifierList = refElement.getModifierList(); if (modifierList == null) return; PsiClass packageLocalClassInTheMiddle = getPackageLocalClassInTheMiddle(place); if (packageLocalClassInTheMiddle != null) { List<IntentionAction> fixes = JvmElementActionFactories.createModifierActions(packageLocalClassInTheMiddle, MemberRequestsKt.modifierRequest(JvmModifier.PUBLIC, true)); QuickFixAction.registerQuickFixActions(info, parentFixRange, fixes); return; } try { Project project = refElement.getProject(); JavaPsiFacade facade = JavaPsiFacade.getInstance(project); PsiModifierList modifierListCopy = facade.getElementFactory().createFieldFromText("int a;", null).getModifierList(); assert modifierListCopy != null; modifierListCopy.setModifierProperty(PsiModifier.STATIC, modifierList.hasModifierProperty(PsiModifier.STATIC)); int minAccessLevel = PsiUtil.ACCESS_LEVEL_PACKAGE_LOCAL; if (refElement.hasModifierProperty(PsiModifier.PACKAGE_LOCAL)) { minAccessLevel = PsiUtil.ACCESS_LEVEL_PROTECTED; } if (refElement.hasModifierProperty(PsiModifier.PROTECTED)) { minAccessLevel = PsiUtil.ACCESS_LEVEL_PUBLIC; } PsiClass containingClass = refElement.getContainingClass(); if (containingClass != null && containingClass.isInterface()) { minAccessLevel = PsiUtil.ACCESS_LEVEL_PUBLIC; } int[] accessLevels = {PsiUtil.ACCESS_LEVEL_PACKAGE_LOCAL, PsiUtil.ACCESS_LEVEL_PROTECTED, PsiUtil.ACCESS_LEVEL_PUBLIC,}; for (int i = ArrayUtil.indexOf(accessLevels, minAccessLevel); i < accessLevels.length; i++) { @PsiUtil.AccessLevel int level = accessLevels[i]; modifierListCopy.setModifierProperty(PsiUtil.getAccessModifier(level), true); if (facade.getResolveHelper().isAccessible(refElement, modifierListCopy, place, accessObjectClass, fileResolveScope)) { List<IntentionAction> fixes = JvmElementActionFactories .createModifierActions(refElement, MemberRequestsKt.modifierRequest(JvmUtil.getAccessModifier(level), true)); PsiElement ref = place.getReferenceNameElement(); QuickFixAction.registerQuickFixActions(info, ref == null ? fixRange : fixRange.union(ref.getTextRange()), fixes); } } } catch (IncorrectOperationException e) { LOG.error(e); } }