code: @Override
    protected void visitCallNode(CallNode node) {
  
      // If this node has any CallParamContentNode children those contents are not computable as JS
      // expressions, visit them to generate code to define their respective 'param<n>' variables.
      for (CallParamNode child : node.getChildren()) {
        if (child instanceof CallParamContentNode && !isComputableAsJsExprsVisitor.exec(child)) {
          visit(child);
        }
      }
  
      // Add the call's result to the current output var.
      Expression call =
          genCallCodeUtils.gen(
              node, templateAliases, templateTranslationContext, errorReporter, getExprTranslator());
      jsCodeBuilder.addChunkToOutputVar(call);
    }
docs: Example:
  
  <pre>
  {call some.func data="all" /}
  {call some.func data="$boo.foo" /}
  {call some.func}
  {param goo: 88 /}
  {/call}
  {call some.func data="$boo"}
  {param goo}
  Hello {$name}
  {/param}
  {/call}
  </pre>
  
  might generate
  
  <pre>
  output += some.func(opt_data);
  output += some.func(opt_data.boo.foo);
  output += some.func({goo: 88});
  output += some.func(soy.$$assignDefaults({goo: 'Hello ' + opt_data.name}, opt_data.boo);
  </pre>