code: func evaluateStream(node ast.Node, ext vmExtMap, tla vmExtMap, nativeFuncs map[string]*NativeFunction,
  	maxStack int, importer Importer) ([]string, error) {
  
  	i, err := buildInterpreter(ext, nativeFuncs, maxStack, importer)
  	if err != nil {
  		return nil, err
  	}
  
  	result, manifestationTrace, err := evaluateAux(i, node, tla)
  	if err != nil {
  		return nil, err
  	}
  
  	return i.manifestAndSerializeYAMLStream(manifestationTrace, result)
  }
docs: // TODO(sbarzowski) this function takes far too many arguments - build interpreter in vm instead