code: func (native *NativeFunction) EvalCall(arguments callArguments, i *interpreter, trace TraceElement) (value, error) {
  	flatArgs := flattenArgs(arguments, native.Parameters())
  	nativeArgs := make([]interface{}, 0, len(flatArgs))
  	for _, arg := range flatArgs {
  		v, err := i.evaluatePV(arg, trace)
  		if err != nil {
  			return nil, err
  		}
  		json, err := i.manifestJSON(trace, v)
  		if err != nil {
  			return nil, err
  		}
  		nativeArgs = append(nativeArgs, json)
  	}
  	resultJSON, err := native.Func(nativeArgs)
  	if err != nil {
  		return nil, i.Error(err.Error(), trace)
  	}
  	return jsonToValue(i, trace, resultJSON)
  }
docs: // EvalCall evaluates a call to a NativeFunction and returns the result.