package Ġcom . bad oo . mv ic ore . binder Ċ Ċ import Ġcom . bad oo . mv ic ore . extension . map NotNull Ċ import Ġio . reactivex . Observable Ċ import Ġio . reactivex . Observable Source Ċ import Ġio . reactivex . functions . Consumer Ċ Ċ data Ġclass ĠConnection < T >( ĊĠĠĠ Ġval Ġfrom : ĠObservable Source < out ĠT >? Ġ= Ġnull , ĊĠĠĠ Ġval Ġto : ĠConsumer < T >, ĊĠĠĠ Ġval Ġname : ĠString ? Ġ= Ġnull Ċ ) Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠAN ONY MO US : ĠString Ġ= Ġ" anonymous " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġis Anonymous (): ĠBoolean Ġ= ĊĠĠĠĠĠĠĠ Ġname Ġ== Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ= ĊĠĠĠĠĠĠĠ Ġ"< ${ name Ġ?: ĠAN ONY MO US }> Ġ(${ from Ġ?: Ġ"? "} Ġ--> Ġ$ to )" Ċ } Ċ Ċ infix Ġfun Ġ< Out , ĠIn > ĠPair < Observable Source < out ĠOut >, ĠConsumer < In >> . using ( transformer : Ġ( Out ) Ġ-> ĠIn ?): ĠConnection < In > Ġ= ĊĠĠĠ ĠConnection ( ĊĠĠĠĠĠĠĠ Ġfrom Ġ= ĠObservable ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. wrap ( first ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map NotNull ( transformer ), ĊĠĠĠĠĠĠĠ Ġto Ġ= Ġsecond ĊĠĠĠ Ġ) Ċ Ċ infix Ġfun Ġ< T > ĠPair < Observable Source < out ĠT >, ĠConsumer < T >> . named ( name : ĠString ): ĠConnection < T > Ġ= ĊĠĠĠ ĠConnection ( ĊĠĠĠĠĠĠĠ Ġfrom Ġ= Ġfirst , ĊĠĠĠĠĠĠĠ Ġto Ġ= Ġsecond , ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġname ĊĠĠĠ Ġ) Ċ Ċ infix Ġfun Ġ< T > ĠConnection < T >. named ( name : ĠString ) Ġ= ĊĠĠĠ Ġcopy ( ĊĠĠĠĠĠĠĠ Ġname Ġ= Ġname ĊĠĠĠ Ġ) Ċ