 
                 @discardableResult
                 func run(function: Function, symbols: Symbols, arguments: [Any]) -> Any? {
-                    return run(function: function, symbols: symbols, stack: [Runtime(arguments: arguments)], callStack: [])
+                    return run(function: function, symbols: symbols, stack: [Runtime(arguments: arguments)], codePath: [])
                 }
             }\n\n
             """)

                    }
                }
                
                private func typecheck(function: Function, stack: [TypecheckRuntime], callStack: IndexPath) throws {
                    let runtime = stack.last!
                    for (i, step) in function.steps.enumerated() {
                        let callStack = callStack.appending(i)
                        guard let producer = step.producer else { throw DecodeError(cause: .invalidFormat, stack: callStack) }
                        switch producer {

                } else {
                    output.append("], returnType: .none")
                }
                output.append(")\n                    try typecheck(stack: stack + [nextRuntime], codePath: codePath, callStack: callStack)\n")
            }
        }
        output.append("""
                            default:
                                throw DecodeError(cause: .stepMismatch, stack: callStack)
                            }
                            runtime.results[Int(a.step)] = nil
                            runtime.releaseResult[Int(a.step)] = callStack[Int(a.level)]
                        }
                    } else {
