         source_1            = PS.new_push_source()
         source_2            = PS.new_push_source()
         #...................................................................................................
-        bystream            = []
-        bystream.push source_2
-        bystream.push PS.$watch ( d ) -> whisper '10191-2', d
-        bystream = PS.pull bystream...
+        bysource            = []
+        bysource.push source_2
+        bysource.push PS.$watch ( d ) -> whisper '10191-5', 'bysource', jr d
+        # bysource.push PS.$defer()
+        bysource = PS.pull bysource...
         #...................................................................................................
         mainstream          = []
         mainstream.push source_1
-        mainstream.push PS.$watch ( d ) -> whisper '10191-1', d
-        mainstream.push PS.$wye bystream
+        mainstream.push PS.$watch ( d ) -> whisper '10191-6', 'mainstream', jr d
+        mainstream.push PS.$wye bysource
         mainstream.push PS.$watch ( d ) -> R.push d
-        mainstream.push PS.$watch ( d ) -> urge '10191-3', d
+        mainstream.push PS.$watch ( d ) -> urge CND.white '10191-7', 'confluence', jr d
         mainstream.push PS.$drain drainer
         PS.pull mainstream...
         max_idx = ( Math.max probe[ 0 ].length, probe[ 1 ].length ) - 1

        #...................................................................................................
        pipeline_1          = []
        pipeline_1.push source_1
        pipeline_1.push PS.$watch ( d ) -> whisper '10191-1', d
        #...................................................................................................
        pipeline_2          = []
        pipeline_2.push source_2
        pipeline_2.push PS.$watch ( d ) -> whisper '10191-2', d
        #...................................................................................................
        pipeline_3          = []
        pipeline_3.push PS.$merge ( PS.pull pipeline_1... ), ( PS.pull pipeline_2... )
        pipeline_3.push PS.$watch ( d ) -> R.push d
        pipeline_3.push PS.$watch ( d ) -> urge '10191-3', d
        pipeline_3.push PS.$drain drainer
        PS.pull pipeline_3...
        max_idx = ( Math.max probe[ 0 ].length, probe[ 1 ].length ) - 1

  done()
  return null

#-----------------------------------------------------------------------------------------------------------
@[ "$wye 2" ] = ( T, done ) ->
  probes_and_matchers = [
    [[true,true,["a","b","c"],[1,2,3,4,5,6]],["a",1,"b",2,"c",3,4,5,6],null]
    [[false,true,["a","b","c"],[1,2,3,4,5,6]],["a",1,"b",2,"c",3,4,5,6],null]
    [[false,false,["a","b","c"],[1,2,3,4,5,6]],["a",1,"b",2,"c",3,4,5,6],null]
    [[true,false,["a","b","c"],[1,2,3,4,5,6]],["a",1,"b",2,"c",3,4,5,6],null]
    ]
  #.........................................................................................................
  for [ probe, matcher, error, ] in probes_and_matchers
    matcher = matcher.sort()
    await T.perform probe, matcher, error, ->
      return new Promise ( resolve, reject ) ->
        [ defer_mainstream
          defer_bystream
          mainstream_values
          bystream_values ] = probe
        R                   = []
        drainer             = -> R = R.sort(); resolve R
        mainsource          = PS.new_push_source()
        bysource            = PS.new_push_source()
        #...................................................................................................
        bystream            = []
        bystream.push bysource
        bystream.push PS.$watch ( d ) -> whisper '10191-5', 'bysource', jr d
        bystream.push PS.$defer() if defer_bystream
        bystream = PS.pull bystream...
        #...................................................................................................
        mainstream          = []
        mainstream.push mainsource
        mainstream.push PS.$defer() if defer_mainstream
        mainstream.push PS.$watch ( d ) -> whisper '10191-6', 'mainstream', jr d
        mainstream.push PS.$wye bystream
        mainstream.push PS.$watch ( d ) -> R.push d
        mainstream.push PS.$watch ( d ) -> urge CND.white '10191-7', 'confluence', jr d
        mainstream.push PS.$drain drainer
        PS.pull mainstream...
        max_idx = ( Math.max mainstream_values.length, bystream_values.length ) - 1
        for idx in [ 0 .. max_idx ]
          mainsource.push x if ( x = mainstream_values[ idx ] )?
          bysource.push   x if ( x = bystream_values[   idx ] )?
        mainsource.end()
        bysource.end()
        return null
  done()
  return null




############################################################################################################
unless module.parent?
  test @
  # test @[ "$wye 1" ]
  # test @[ "$wye 2" ]

