@Nullable
      private static String getCharsetString(PsiExpression charsetExpression) {
        charsetExpression = PsiUtil.skipParenthesizedExprDown(charsetExpression);
        String charsetString = ObjectUtils.tryCast(ExpressionUtils.computeConstantExpression(charsetExpression), String.class);
        if (charsetString == null && charsetExpression instanceof PsiMethodCallExpression) {
          if (CHARSET_NAME.matches(charsetExpression)) {
            PsiExpression qualifier = ((PsiMethodCallExpression)charsetExpression).getMethodExpression().getQualifierExpression();
            if (qualifier != null) {
              return qualifier.getText();
            }
          }
        }
        if (charsetString == null) return null;
        charsetString = StringUtil.toUpperCase(charsetString);
        String constantName = SUPPORTED_CHARSETS.get(charsetString);
        if (constantName == null) return null;
        String finalExpression = "java.nio.charset.StandardCharsets." + constantName;
        if (charsetExpression instanceof PsiLiteralExpression) return finalExpression;
        if (charsetExpression instanceof PsiReferenceExpression) {
          String name = ((PsiReferenceExpression)charsetExpression).getReferenceName();
          if (name == null) return null;
          String baseName = StringUtil.toLowerCase(name.replaceAll("[^A-Z0-9]", ""));
          String baseCharset = StringUtil.toLowerCase(charsetString.replaceAll("[^A-Z0-9]", ""));
          // Do not report constants which name is not based on charset name (like "ENCODING", "DEFAULT_ENCODING", etc.)
          // because replacement might not be well-suitable
          if (!baseName.contains(baseCharset)) return null;
          return finalExpression;
        }
        return null;
      }
@Nullable
      private static String getCharsetString(PsiExpression charsetExpression)