package Ġcom . bad oo . reak t ive . single Ċ Ċ import Ġcom . bad oo . reak t ive . base . Composite Disposable Observer Ċ import Ġcom . bad oo . reak t ive . utils . atomic . Atomic Boolean Ċ Ċ /** Ċ Ġ* ĠRuns Ġmultiple Ġ[ Single ] s Ġand Ġsignals Ġthe Ġevents Ġof Ġthe Ġfirst Ġone Ġ( disposing Ċ Ġ* Ġthe Ġrest ). Ċ Ġ* Ċ Ġ* ĠPlease Ġrefer Ġto Ġthe Ġcorresponding ĠRx Java Ġ[ document ]( http :// reactivex . io / Rx Java / javadoc / io / reactivex / Single . html # amb - java . lang . Iterable - ). Ċ Ġ*/ Ċ fun Ġ< T > ĠIterable < Single < T >> . amb (): ĠSingle < T > Ġ= ĊĠĠĠ Ġcom . bad oo . reak t ive . single . single Ġ{ Ġemitter Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġsources Ġ= Ġto List () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( sources . isEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġemitter . onError ( NoSuch ElementException ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ single ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġdis posable Observer Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobject Ġ: ĠComposite Disposable Observer (), ĠSingle Observer < T > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġis Finished Ġ= ĠAtomic Boolean () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonSuccess ( value : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrace Ġ{ Ġemitter . on Success ( value ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonError ( error : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrace Ġ{ Ġemitter . onError ( error ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġinline Ġfun Ġrace ( block : Ġ() Ġ-> ĠUnit ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( is Finished . compare AndSet ( false , Ġtrue )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġblock () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġemitter . set Disposable ( dis posable Observer ) ĊĊĠĠĠĠĠĠĠ Ġsources . forEach Ġ{ Ġit . subscribe ( dis posable Observer ) Ġ} ĊĠĠĠ Ġ} Ċ Ċ /** Ċ Ġ* ĠRuns Ġmultiple Ġ[ Single ] s Ġand Ġsignals Ġthe Ġevents Ġof Ġthe Ġfirst Ġone Ġ( disposing Ċ Ġ* Ġthe Ġrest ). Ċ Ġ* Ċ Ġ* ĠPlease Ġrefer Ġto Ġthe Ġcorresponding ĠRx Java Ġ[ document ]( http :// reactivex . io / Rx Java / javadoc / io / reactivex / Single . html # amb Array - io . reactivex . Single Source ... - ). Ċ Ġ*/ Ċ fun Ġ< T > Ġamb ( var arg Ġsources : ĠSingle < T >): ĠSingle < T > Ġ= Ġsources . asList (). amb () Ċ