@@ -0,0 +1,2318 @@
+package qub;%0A%0Apublic class VerboseChildProcessRunner implements ChildProcessRunner%0A%7B%0A    private final ChildProcessRunner innerChildProcessRunner;%0A    private final CharacterWriteStream writeStream;%0A%0A    private VerboseChildProcessRunner(ChildProcessRunner innerChildProcessRunner, CharacterWriteStream writeStream)%0A    %7B%0A        PreCondition.assertNotNull(innerChildProcessRunner, %22innerChildProcessRunner%22);%0A        PreCondition.assertNotNull(writeStream, %22writeStream%22);%0A%0A        this.innerChildProcessRunner = innerChildProcessRunner;%0A        this.writeStream = writeStream;%0A    %7D%0A%0A    public static VerboseChildProcessRunner create(DesktopProcess process, CharacterWriteStream writeStream)%0A    %7B%0A        PreCondition.assertNotNull(process, %22process%22);%0A        PreCondition.assertNotNull(writeStream, %22writeStream%22);%0A%0A        return VerboseChildProcessRunner.create(process.getChildProcessRunner(), writeStream);%0A    %7D%0A%0A    public static VerboseChildProcessRunner create(ChildProcessRunner innerChildProcessRunner, CharacterWriteStream writeStream)%0A    %7B%0A        PreCondition.assertNotNull(innerChildProcessRunner, %22innerChildProcessRunner%22);%0A        PreCondition.assertNotNull(writeStream, %22writeStream%22);%0A%0A        return new VerboseChildProcessRunner(innerChildProcessRunner, writeStream);%0A    %7D%0A%0A    @Override%0A    public Result%3C? extends ChildProcess%3E start(ChildProcessParameters parameters)%0A    %7B%0A        return Result.create(() -%3E%0A        %7B%0A            final Path workingFolderPath = parameters.getWorkingFolderPath();%0A            if (workingFolderPath != null)%0A            %7B%0A                writeStream.write(workingFolderPath.toString()).await();%0A                writeStream.write(%22: %22).await();%0A            %7D%0A%0A            writeStream.write(parameters.getExecutablePath().toString()).await();%0A%0A            final Iterable%3CString%3E arguments = parameters.getArguments();%0A            if (!Iterable.isNullOrEmpty(arguments))%0A            %7B%0A                for (final String argument : parameters.getArguments())%0A                %7B%0A                    writeStream.write(%22 %22).await();%0A                    writeStream.write(argument).await();%0A                %7D%0A            %7D%0A            writeStream.writeLine().await();%0A%0A            return this.innerChildProcessRunner.start(parameters).await();%0A        %7D);%0A    %7D%0A%7D%0A

Add VerboseChildProcessRunner