Since these pids are created by the log reader/portfowarder implementations, they should be disposed by those implementations as well - adding `killSubProcesses` feels a bit leaky. I would suggest a slightly different arrangement:    1. Add a `dispose` method to the LogReader and PortForwarder interfaces.  2. Either cache the reader/port forwarder in the device, and likewise add a dispose to device, or otherwise hold onto these objects to dispose them.