@Override
  public List<TextRange> getRanges() {
    List<TextRange> list = new ArrayList<TextRange>();
    JetValueArgumentList valueArgumentList = getExpression().getValueArgumentList();
    if (valueArgumentList != null) {
      if (valueArgumentList.getArguments().size() > 0) {
        ASTNode valueArgumentListNode = valueArgumentList.getNode();
        ASTNode lPar = valueArgumentListNode.findChildByType(JetTokens.LPAR);
        if (lPar != null) {
          list.add(getRange(lPar));
        }

        ASTNode rPar = valueArgumentListNode.findChildByType(JetTokens.RPAR);
        if (rPar != null) {
          list.add(getRange(rPar));
        }
      } else {
        list.add(getRange(valueArgumentList.getNode()));
      }
    }

    List<JetExpression> functionLiteralArguments = getExpression().getFunctionLiteralArguments();
    for (JetExpression functionLiteralArgument : functionLiteralArguments) {
      while (functionLiteralArgument instanceof JetPrefixExpression) {
        functionLiteralArgument =
            ((JetPrefixExpression) functionLiteralArgument).getBaseExpression();
      }

      if (functionLiteralArgument instanceof JetFunctionLiteralExpression) {
        JetFunctionLiteralExpression functionLiteralExpression =
            (JetFunctionLiteralExpression) functionLiteralArgument;
        list.add(getRange(functionLiteralExpression.getLeftCurlyBrace()));
        ASTNode rightCurlyBrace = functionLiteralExpression.getRightCurlyBrace();
        if (rightCurlyBrace != null) {
          list.add(getRange(rightCurlyBrace));
        }
      }
    }

    return list;
  }
 @Override
 public void updateParameterInfo(
     @NotNull JetValueArgumentList argumentList, @NotNull UpdateParameterInfoContext context) {
   if (context.getParameterOwner() != argumentList) context.removeHint();
   int offset = context.getOffset();
   ASTNode child = argumentList.getNode().getFirstChildNode();
   int i = 0;
   while (child != null && child.getStartOffset() < offset) {
     if (child.getElementType() == JetTokens.COMMA) ++i;
     child = child.getTreeNext();
   }
   context.setCurrentParameter(i);
 }