package Ġcc . crypt op unk s . crypt on Ċ Ċ open Ġclass ĠRed undant Dependencies Task Ġ: ĠAbstract Dependencies Task () Ġ{ ĊĊĠĠĠ Ġoverride Ġfun ĠMap < String , ĠSet < String >> . on Module Dependencies () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġmap To Modules (). get Red undant Dependencies (). map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . name Ġto Ġit . red undant ĊĠĠĠĠĠĠĠ Ġ}. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . quiet ( it . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun ĠMap < String , ĠSet < String >> . map To Modules (): ĠMutable Map < String , ĠModule > Ġ= ĊĠĠĠ Ġmap Ġ{ Ġ( name , Ġdependencies ) Ġ-> ĊĠĠĠĠĠĠĠ Ġname Ġto ĠModule ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġname Ġ= Ġname , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdependencies Ġ= Ġdependencies . to Mutable Set (), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnested Dependencies Ġ= Ġmutable Set Of () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ}. toMap (). to Mutable Map () Ċ Ċ fun ĠMap < String , ĠModule >. get Red undant Dependencies () Ġ= Ġrun Ġ{ ĊĠĠĠ Ġfill Nested Dependencies () ĊĠĠĠ Ġfind Red undant Dependencies () ĊĠĠĠ Ġvalues . filter Ġ{ Ġit . red undant . isNotEmpty () Ġ} Ċ } Ċ Ċ fun ĠMap < String , ĠModule >. fill Nested Dependencies ( ĊĠĠĠ Ġlist : ĠMutable List < String > Ġ= Ġkeys . to Mutable List (), ĊĠĠĠ Ġremoved : ĠMutable Set < String > Ġ= Ġmutable Set Of () Ċ ) Ġ{ ĊĠĠĠ Ġwhile Ġ( list . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ ĠgetValue ( list . remove At ( 0 )). run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfill Nested Dependencies ( dependencies . to Mutable List (), Ġremoved ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnested Dependencies Ġ+= Ġdependencies . flatMap Ġ{ ĠgetValue ( it ). all Dependencies Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠMap < String , ĠModule >. find Red undant Dependencies () Ġ{ ĊĠĠĠ Ġvalues . forEach Ġ{ Ġdep Ġ-> ĊĠĠĠĠĠĠĠ Ġdep . run Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġredundant Ġ+= Ġdependencies . filter ( nested Dependencies :: contains ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ data Ġclass ĠModule ( ĊĠĠĠ Ġval Ġname : ĠString , ĊĠĠĠ Ġval Ġdependencies : ĠMutable Set < String >, ĊĠĠĠ Ġval Ġnested Dependencies : ĠMutable Set < String >, ĊĠĠĠ Ġval Ġredundant : ĠMutable Set < String > Ġ= Ġmutable Set Of () Ċ ) Ġ{ ĊĠĠĠ Ġval Ġall Dependencies Ġget () Ġ= Ġdependencies Ġ+ Ġnested Dependencies Ċ } ĊĊ