                     output.append("$\($0)")
                 }
                 if let type = functionType.returnType {
-                    output.append("])], stepStack: stepStack) as! \(nativeType(for: type)) }\n")
+                    output.append("])], callStack: callStack) as! \(nativeType(for: type)) }\n")
                 } else {
-                    output.append("])], stepStack: stepStack) }\n")
+                    output.append("])], callStack: callStack) }\n")
                 }
                 output.append("""
                             } else {

            if functionType.argumentTypes.count > 0 {
                output.append("            case .\(name)(let a):\n")
                for (i, type) in functionType.argumentTypes.enumerated() {
                    output.append("                try check(a.o\(i + 1), with: .\(type)Type, function: function, stack: stack, stepStack: stepStack)\n")
                }
            } else {
                output.append("            case .\(name):\n")


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