   if not name? then throw new Error("Asset evaluator requires a name")
 
   return {
+    # The getter does not clone the asset. This could be a potential source of problems.
     get: -> return constants.assets[name]
     set: (x) -> return new GE.NodeVisitorResult() # Noop. Cannot set asset
   }

  return {
    get: -> 
      [parent, key] = GE.getParentAndKey(constants.modelData, name.split("."))
      return parent[key]

    set: (x) -> 
      # TODO: create patch directly, rather than by comparison

      paramValue = defaultValue

    compiledParams[paramName] = GE.compileParameter(paramValue, constants, bindings)
    evaluatedParams[paramName] = compiledParams[paramName].get()
    
  locals = 
    params: evaluatedParams
    children: childNames
