         // Set up a pipe for receiving free-form text output from the plugin on its stderr.
         let stderrPipe = Pipe()
         let stderrLock = Lock()
+        var stderrData = Data()
         stderrPipe.fileHandleForReading.readabilityHandler = { fileHandle in
             // Pass on any available data to the delegate.
             stderrLock.withLock {
                 let newData = fileHandle.availableData
                 if newData.isEmpty { return }
-                //print("[output] \(String(decoding: newData, as: UTF8.self))")
+                stderrData.append(contentsOf: newData)
                 callbackQueue.async { delegate.pluginEmittedOutput(newData) }
             }
         }

        }
        catch {
            callbackQueue.async {
                completion(.failure(DefaultPluginScriptRunnerError.invocationFailed(error, command: command)))
            }
        }


    ) {
#if os(iOS) || os(watchOS) || os(tvOS)
        callbackQueue.async {
            completion(.failure(DefaultPluginScriptRunnerError.pluginUnavailable(reason: "subprocess invocations are unavailable on this platform")))
        }
#else
        // Construct the command line. Currently we just invoke the executable built from the plugin without any parameters.
