@NotNull
  static DfType fromInitializer(@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;
  }
@NotNull
  static DfType fromInitializer(@NotNull DfaVariableValue thisValue,
                                @Nullable PsiElement context,
                                @NotNull Function<PsiExpression, DfType> typeByInitializer)