int (PsiMethod referrer) { PsiClass aClass = Objects.requireNonNull(referrer.getContainingClass()); boolean isStatic = referrer.hasModifierProperty(PsiModifier.STATIC); for (PsiField field : aClass.getFields()) { if (field.hasModifierProperty(PsiModifier.STATIC) != isStatic) continue; PsiExpression initializer = field.getInitializer(); Predicate<PsiExpression> callToMethod = (PsiExpression e) -> { if (!(e instanceof PsiMethodCallExpression call)) return false; return call.getMethodExpression().isReferenceTo(referrer) && (isStatic || ExpressionUtil.isEffectivelyUnqualified(call.getMethodExpression())); }; if (ExpressionUtils.isMatchingChildAlwaysExecuted(initializer, callToMethod)) { // current method is definitely called from some field initialization return field.getTextRange().getStartOffset(); } } return Integer.MAX_VALUE; // accessed after initialization or at unknown moment }