Result (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; }