@Override
  public Result calculateResult(Expression @NotNull [] params, ExpressionContext context) {
    if (params.length != 1) return null;
    final Result result = params[0].calculateResult(context);
    if (result == null) return null;

    Project project = context.getProject();

    PsiExpression expr = MacroUtil.resultToPsiExpression(result, context);
    if (expr == null) return null;

    PsiType component = JavaGenericsUtil.getCollectionItemType(expr);
    if (component != null) {
      return new PsiTypeResult(GenericsUtil.getVariableTypeByExpressionType(component), project);
    }

    return null;
  }
@Override
  public Result calculateResult(Expression @NotNull [] params, ExpressionContext context)