@Nullable
  private static DfaValue getConstantFromVariable(DfaValueFactory factory, PsiVariable variable) {
    if (!variable.hasModifierProperty(PsiModifier.FINAL) || ignoreInitializer(variable)) return null;
    Object value = variable.computeConstantValue();
    PsiType type = variable.getType();
    if (value == null) {
      Boolean boo = computeJavaLangBooleanFieldReference(variable);
      if (boo != null) {
        DfaValue unboxed = factory.fromDfType(DfTypes.booleanValue(boo));
        return factory.getWrapperFactory().createWrapper(DfTypes.typedObject(type, Nullability.NOT_NULL), SpecialField.UNBOX, unboxed);
      }
      if (DfaUtil.isEmptyCollectionConstantField(variable)) {
        return factory.fromDfType(DfTypes.constant(variable, type));
      }
      PsiExpression initializer = PsiFieldImpl.getDetachedInitializer(variable);
      initializer = PsiUtil.skipParenthesizedExprDown(initializer);
      if (initializer instanceof PsiLiteralExpression && initializer.textMatches(PsiKeyword.NULL)) {
        return factory.fromDfType(DfTypes.NULL);
      }
      if (variable instanceof PsiField && variable.hasModifierProperty(PsiModifier.STATIC) && ExpressionUtils.isNewObject(initializer)) {
        return factory.fromDfType(DfTypes.constant(variable, type));
      }
      return null;
    }
    return factory.fromDfType(DfTypes.constant(value, type));
  }
@Nullable
  private static DfaValue getConstantFromVariable(DfaValueFactory factory, PsiVariable variable)