package Ġcom . bad oo . reak t ive . maybe Ċ Ċ import Ġcom . bad oo . reak t ive . base . Error Callback Ċ import Ġcom . bad oo . reak t ive . dis posable . Composite Disposable Ċ import Ġcom . bad oo . reak t ive . dis posable . Disposable Ċ import Ġcom . bad oo . reak t ive . dis posable . minus Assign Ċ import Ġcom . bad oo . reak t ive . dis posable . plus Assign Ċ import Ġcom . bad oo . reak t ive . observable . Observable Ċ import Ġcom . bad oo . reak t ive . observable . observable Ċ import Ġcom . bad oo . reak t ive . observable . serialize Ċ import Ġcom . bad oo . reak t ive . utils . Object Reference Ċ import Ġcom . bad oo . reak t ive . utils . atomic . Atomic Int Ċ Ċ fun Ġ< T > ĠIterable < Maybe < T >> . merge (): ĠObservable < T > Ġ= ĊĠĠĠ Ġobservable Ġ{ Ġemitter Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġdis pos ables Ġ= ĠComposite Disposable () ĊĠĠĠĠĠĠĠ Ġemitter . set Disposable ( dis pos ables ) ĊĠĠĠĠĠĠĠ Ġval Ġserialized Emitter Ġ= Ġemitter . serialize () ĊĠĠĠĠĠĠĠ Ġval Ġactive Source Count Ġ= ĠAtomic Int ( 1 ) ĊĊĠĠĠĠĠĠĠ ĠforEach Ġ{ Ġupstream Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactive Source Count . add AndGet ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupstream . subscribe ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠObject Reference < Disposable ? >( null ), ĠMaybe Observer < T >, ĠError Callback Ġby Ġserialized Emitter Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Subscribe ( dis posable : ĠDis posable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġdis posable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdis pos ables Ġ+= Ġdis posable ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( value : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġserialized Emitter . onNext ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠonComplete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonComplete () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdis pos ables Ġ-= Ġrequire NotNull ( value ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( active Source Count . add AndGet (- 1 ) Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġemitter . onComplete () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( active Source Count . add AndGet (- 1 ) Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemitter . onComplete () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ fun Ġ< T > Ġmerge ( var arg Ġsources : ĠMaybe < T >): ĠObservable < T > Ġ= ĊĠĠĠ Ġsources ĊĠĠĠĠĠĠĠ Ġ. asList () ĊĠĠĠĠĠĠĠ Ġ. merge () Ċ