protected override TOutStream CreateOutputStream(WaitWhenDoneArgs <TOut, TOutStream> args)
        {
            var outputStream = args.Input.Observable;

            if (args.Input1ToWait != null)
            {
                outputStream = outputStream.CombineWithLatest(args.Input1ToWait.Observable.Map(i => new object()).Completed(), (i, _) => i, true);
            }
            if (args.Input2ToWait != null)
            {
                outputStream = outputStream.CombineWithLatest(args.Input2ToWait.Observable.Map(i => new object()).Completed(), (i, _) => i, true);
            }
            if (args.Input3ToWait != null)
            {
                outputStream = outputStream.CombineWithLatest(args.Input3ToWait.Observable.Map(i => new object()).Completed(), (i, _) => i, true);
            }
            if (args.Input4ToWait != null)
            {
                outputStream = outputStream.CombineWithLatest(args.Input4ToWait.Observable.Map(i => new object()).Completed(), (i, _) => i, true);
            }
            if (args.Input5ToWait != null)
            {
                outputStream = outputStream.CombineWithLatest(args.Input5ToWait.Observable.Map(i => new object()).Completed(), (i, _) => i, true);
            }
            if (args.Input6ToWait != null)
            {
                outputStream = outputStream.CombineWithLatest(args.Input6ToWait.Observable.Map(i => new object()).Completed(), (i, _) => i, true);
            }
            if (args.Input7ToWait != null)
            {
                outputStream = outputStream.CombineWithLatest(args.Input7ToWait.Observable.Map(i => new object()).Completed(), (i, _) => i, true);
            }
            if (args.Input8ToWait != null)
            {
                outputStream = outputStream.CombineWithLatest(args.Input8ToWait.Observable.Map(i => new object()).Completed(), (i, _) => i, true);
            }
            if (args.Input9ToWait != null)
            {
                outputStream = outputStream.CombineWithLatest(args.Input9ToWait.Observable.Map(i => new object()).Completed(), (i, _) => i, true);
            }
            if (args.Input10ToWait != null)
            {
                outputStream = outputStream.CombineWithLatest(args.Input10ToWait.Observable.Map(i => new object()).Completed(), (i, _) => i, true);
            }
            return(base.CreateMatchingStream(outputStream, args.Input));
        }
 public WaitWhenDoneStreamNode(string name, WaitWhenDoneArgs <TOut, TOutStream> args) : base(name, args)
 {
 }