@NotNull
    DfType fromInitializer(PsiExpression initializer) {
      if (initializer instanceof PsiArrayInitializerExpression) {
        return DfTypes.intValue(((PsiArrayInitializerExpression)initializer).getInitializers().length);
      }
      if (initializer instanceof PsiNewExpression) {
        PsiArrayInitializerExpression arrayInitializer = ((PsiNewExpression)initializer).getArrayInitializer();
        if (arrayInitializer != null) {
          return DfTypes.intValue(arrayInitializer.getInitializers().length);
        }
        PsiExpression[] dimensions = ((PsiNewExpression)initializer).getArrayDimensions();
        if (dimensions.length > 0) {
          Object length = ExpressionUtils.computeConstantExpression(dimensions[0]);
          if (length instanceof Integer) {
            return DfTypes.intValue(((Integer)length).intValue());
          }
        }
      }
      return DfType.TOP;
    }
@NotNull
    DfType fromInitializer(PsiExpression initializer)