@NotNull
  public static String getDefaultValueOfType(@Nullable PsiType type, boolean customDefaultValues) {
    if (type instanceof PsiPrimitiveType) {
      return PsiTypes.booleanType().equals(type) ? PsiKeyword.FALSE : "0";
    }
    if (customDefaultValues) {
      if (type instanceof PsiArrayType) {
        int count = type.getArrayDimensions() - 1;
        PsiType componentType = type.getDeepComponentType();

        if (componentType instanceof PsiClassType) {
          final PsiClassType classType = (PsiClassType)componentType;
          if (classType.resolve() instanceof PsiTypeParameter) {
            return PsiKeyword.NULL;
          }
        }

        PsiType erasedComponentType = TypeConversionUtil.erasure(componentType);
        StringBuilder buffer = new StringBuilder();
        buffer.append(PsiKeyword.NEW);
        buffer.append(" ");
        buffer.append(erasedComponentType.getCanonicalText());
        buffer.append("[0]");
        for (int i = 0; i < count; i++) {
          buffer.append("[]");
        }
        return buffer.toString();
      }

      PsiClass psiClass = PsiUtil.resolveClassInClassTypeOnly(type);
      if (psiClass != null) {
        String typeText = psiClass.getQualifiedName();
        if (typeText != null) {
          switch (typeText) {
            case CommonClassNames.JAVA_UTIL_OPTIONAL:
            case "java.util.OptionalInt":
            case "java.util.OptionalLong":
            case "java.util.OptionalDouble":
            case CommonClassNames.JAVA_UTIL_STREAM_STREAM:
            case CommonClassNames.JAVA_UTIL_STREAM_INT_STREAM:
            case CommonClassNames.JAVA_UTIL_STREAM_LONG_STREAM:
            case CommonClassNames.JAVA_UTIL_STREAM_DOUBLE_STREAM:
              return typeText + ".empty()";
            case CommonClassNames.JAVA_LANG_STRING:
              return "\"\"";
            case CommonClassNames.JAVA_LANG_INTEGER:
            case CommonClassNames.JAVA_LANG_LONG:
            case CommonClassNames.JAVA_LANG_SHORT:
            case CommonClassNames.JAVA_LANG_BYTE:
              return "0";
            case CommonClassNames.JAVA_LANG_FLOAT:
              return "0f";
            case CommonClassNames.JAVA_LANG_DOUBLE:
              return "0.0";
            case CommonClassNames.JAVA_UTIL_SET:
              return PsiUtil.isAvailable(JavaFeature.COLLECTION_FACTORIES, psiClass) ? "java.util.Set.of()" : "java.util.Collections.emptySet()";
            case CommonClassNames.JAVA_UTIL_COLLECTION:
            case CommonClassNames.JAVA_UTIL_LIST:
              return PsiUtil.isAvailable(JavaFeature.COLLECTION_FACTORIES, psiClass) ? "java.util.List.of()" : "java.util.Collections.emptyList()";
            case CommonClassNames.JAVA_UTIL_MAP:
              return PsiUtil.isAvailable(JavaFeature.COLLECTION_FACTORIES, psiClass) ? "java.util.Map.of()" : "java.util.Collections.emptyMap()";
          }
        }
      }
    }
    return PsiKeyword.NULL;
  }
@NotNull
  public static String getDefaultValueOfType(@Nullable PsiType type, boolean customDefaultValues)