                 let decoderRuntime = DecoderRuntime()
                 return {
             """)
-        if functionType.argumentTypes.count > 0 {
-            output.append(" ")
-            writeCommaSeparated(functionType.argumentTypes.indices, to: &output) {
-                output.append("o\($0 + 1)")
-            }
-            output.append(" in")
-        }
         if let type = functionType.returnType, case .function? = parser.typesMap[type] {
             output.append("\n        let result = decoderRuntime.run(function: function, symbols: symbols, arguments: [")
             writeCommaSeparated(functionType.argumentTypes.indices, to: &output) {
-                output.append("o\($0 + 1)")
+                output.append("$\($0)")
             }
             output.append("""
                 ])

        } else {
            output.append(" decoderRuntime.run(function: function, symbols: symbols, arguments: [")
            writeCommaSeparated(functionType.argumentTypes.indices, to: &output) {
                output.append("o\($0 + 1)")
            }
            if let type = functionType.returnType {
                output.append("]) as! \(nativeType(for: type)) }\n}\n\n")

    
    private func writeRun(name: String, functionType: Parser.FunctionType, to output: inout String) {
        output.append("private func \(name)Run(_ function: @escaping ([Any]) -> Any) -> \(name) {\n    return { ")
        if functionType.returnType == nil {
            output.append("_ = ")
        }
        output.append("function([")
        writeCommaSeparated(functionType.argumentTypes.indices, to: &output) {
            output.append("$\($0)")
        }
        if let type = functionType.returnType {
            output.append("]) as! \(nativeType(for: type)) }\n}\n\n")
