@NotNull
  @RequiresBackgroundThread
  private static List<Object> collectParameterInfo(@NotNull GroovyPsiElement place) {
    GroovyResolveResult[] variants = ResolveUtil.getCallVariants(place);

    final List<Object> elementToShow = new ArrayList<>();
    final PsiElement parent = place.getParent();
    if (parent instanceof GrMethodCall) {
      final GrExpression invoked = ((GrMethodCall)parent).getInvokedExpression();
      if (isPropertyOrVariableInvoked(invoked)) {
        final PsiType type = invoked.getType();
        if (type instanceof GrClosureType) {
          addSignatureVariant(elementToShow, (GrClosureType)type);
        }
        else if (type != null) {
          addMethodAndClosureVariants(elementToShow,
                                      ResolveUtil.getMethodCandidates(type, "call", invoked, PsiUtil.getArgumentTypes(place, true)));
        }
      }
      else {
        addMethodAndClosureVariants(elementToShow, variants);
      }
    }
    else {
      elementToShow.addAll(Arrays.asList(variants));
    }

    filterOutReflectedMethods(elementToShow);
    return elementToShow;
  }
@NotNull
  @RequiresBackgroundThread
  private static List<Object> collectParameterInfo(@NotNull GroovyPsiElement place)