package Ġcom . dz ir bel . k otify Ċ Ċ import Ġcom . google . common . truth . Truth . assertThat Ċ Ċ /** Ċ Ġ* Ġ[ zip ] s Ġthis Ġ[ List ] Ġwith Ġ[ other ], Ġpair ing Ġvalues Ġone - to - one Ġwhen Ġ[ matcher ] Ġis Ġtrue . Ċ Ġ* Ċ Ġ* ĠThis Ġ[ List ] Ġand Ġ[ other ] Ġmust Ġhave Ġthe Ġsame Ġsize , Ġand Ġthere Ġmust Ġbe Ġa Ġone - to - one Ġassociation Ġbetween Ġthe Ġtwo Ġlists Ċ Ġ* Ġgiven Ġby Ġ[ matcher ]; Ġthat Ġis : Ċ Ġ* Ġ- Ġfor Ġeach Ġelement ĠA Ġof Ġthis Ġ[ List ] Ċ Ġ* Ġ- Ġthere Ġmust Ġexist Ġa Ġunique Ġelement ĠB Ġof Ġ[ other ] Ċ Ġ* Ġ- Ġfor Ġwhich Ġmatcher ( A , ĠB ) Ġis Ġtrue ; Ġmatcher ( A , ĠC ) Ġfor Ġall Ġother Ġelements ĠC Ġof Ġ[ other ] Ġmust Ġbe Ġfalse Ċ Ġ* Ċ Ġ* ĠThis Ġis Ġtypically Ġused Ġto Ġjoin Ġtwo Ġlists Ġby Ġunique ĠID , Ġwhere Ġmatcher Ġchecks Ġfor ĠID Ġequality . Ċ Ġ*/ Ċ fun Ġ< T , ĠR > ĠList < T >. zip With By ( other : ĠList < R >, Ġmatcher : Ġ( T , ĠR ) Ġ-> ĠBoolean ): ĠList < Pair < T , ĠR >> Ġ{ ĊĠĠĠ ĠassertThat ( this ). has Size ( other . size ) ĊĠĠĠ Ġreturn Ġmap Ġ{ Ġthis Element Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġmatching Ġ= Ġother . filter Ġ{ Ġmatcher ( this Element , Ġit ) Ġ} ĊĠĠĠĠĠĠĠ ĠassertThat ( matching ). has Size ( 1 ) ĊĊĠĠĠĠĠĠĠ Ġthis Element Ġto Ġmatching . first () ĊĠĠĠ Ġ} Ċ } Ċ