DfType (@NotNull DfaVariableValue thisValue, @Nullable PsiElement context, @NotNull Function<PsiExpression, DfType> typeByInitializer) { DfaVariableValue qualifier = thisValue.getQualifier(); if (qualifier != null) { PsiField psiVariable = ObjectUtils.tryCast(qualifier.getPsiVariable(), PsiField.class); if (psiVariable != null && FieldChecker.getChecker(context).canTrustFieldInitializer(psiVariable) && psiVariable.hasModifierProperty(PsiModifier.STATIC) && psiVariable.hasModifierProperty(PsiModifier.FINAL)) { PsiExpression initializer = PsiFieldImpl.getDetachedInitializer(psiVariable); if (initializer != null) { return typeByInitializer.apply(initializer); } } } return DfType.TOP; }