IEnumerable<Task> CreateAfterLaunchTasks() {
var tasks = new List<Task>();
if (StartInfo.RedirectStandardOutput)
tasks.Add(ReadStreamToEnd(StandardOutput, _standardOutputObservable));
if (StartInfo.RedirectStandardError)
tasks.Add(ReadStreamToEnd(StandardError, _standardErrorObservable));
tasks.Add(ProcessExtensions.WaitForExitAsync(this));
return tasks;
}