package Ġorg . me ch d ancer . data flow . core . internal Ċ Ċ import Ġorg . me ch d ancer . data flow . core . Feedback . Decl ining Per manently Ċ import Ġorg . me ch d ancer . data flow . core . int ef aces . IL ink Ċ import Ġorg . me ch d ancer . data flow . core . int ef aces . IS ource Ċ import Ġorg . me ch d ancer . data flow . core . int ef aces . IT arget Ċ import Ġorg . me ch d ancer . data flow . core . options . Link Options Ċ import Ġjava . util . concurrent . Concurrent Skip List Set Ċ Ċ /** Ċ Ġ* ĠLink Ġmanager Ċ Ġ* Ċ Ġ* Ġ éĵ¾æİ¥ ç®¡çĲĨ Ċ Ġ* Ċ Ġ* Ġ@ param Ġowner Ġwhich Ġsource Ġthe Ġmanager Ġaffili ate Ġ ç®¡çĲĨ åĻ¨ ä»İ å±ŀ çļĦ æºĲ Ċ Ġ*/ Ċ internal Ġclass ĠLink Manager < T >( private Ġval Ġowner : ĠI Source < T >) Ġ{ ĊĠĠĠ Ġ// Ġ éĵ¾æİ¥ è¡¨ ĊĠĠĠ Ġprivate Ġval Ġ_ set Ġ= ĠConcurrent Skip List Set < IL ink < T >>() ĊĊĠĠĠ Ġval Ġset Ġ= Ġobject Ġ: ĠSet < IL ink < T >> Ġby Ġ_ set Ġ{} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ å»ºç«ĭ ä¸Ģä¸ª æĸ°çļĦ éĵ¾æİ¥ ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġtarget Ġ Ġtarget Ġblock Ġ çĽ®æłĩ å® ¿ ĊĠĠĠĠ Ġ* Ġ@ param Ġoptions Ġlin Ġoptions éĵ¾æİ¥ éĢīé¡¹ ĊĠĠĠĠ Ġ* Ġ@ return Ġnewly Ġbuilt Ġ[ IL ink ] Ġ æĸ° éĵ¾æİ¥ çļĦ å¼ķçĶ¨ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġlink To ( target : ĠI Target < T >, Ġoptions : ĠLink Options < T >): ĠI Link < T > Ġ= ĊĠĠĠĠĠĠĠ ĠLink ( owner , Ġtarget , Ġoptions ). also (_ set :: plus Assign ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSend Ġ[ value ] Ġto Ġall Ġlinks ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ åĲĳ æīĢæľī éĵ¾æİ¥ åıĳéĢģ åĢ¼ ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġoffer ( id : ĠLong , Ġvalue : ĠT ) Ġ= ĊĠĠĠĠĠĠĠ Ġ_ set . filter Ġ{ Ġit . options . predicate ( value ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. groupBy Ġ{ Ġit Ġoffer Ġid Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ Ġit [ Decl ining Per manently ]?. let (_ set :: removeAll ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. keys ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () Ċ } Ċ