package Ġnet . cord a . plugins . cp k Ċ Ċ import Ġorg . gradle . api . Default Task Ċ import Ġorg . gradle . api . Invalid UserData Exception Ċ import Ġorg . gradle . api . artifacts . Configuration Ċ import Ġorg . gradle . api . artifacts . Dependency Ċ import Ġorg . gradle . api . artifacts . File Collection Dependency Ċ import Ġorg . gradle . api . artifacts . Module Version Identifier Ċ import Ġorg . gradle . api . artifacts . Project Dependency Ċ import Ġorg . gradle . api . artifacts . Resolved Artifact Ċ import Ġorg . gradle . api . artifacts . Resolved Configuration Ċ import Ġorg . gradle . api . file . Configurable File Collection Ċ import Ġorg . gradle . api . file . FileSystem Location Ċ import Ġorg . gradle . api . model . ObjectFactory Ċ import Ġorg . gradle . api . provider . Provider Ċ import Ġorg . gradle . api . specs . Specs . satisf y None Ċ import Ġorg . gradle . api . tasks . Output Files Ċ import Ġorg . gradle . api . tasks . Task Action Ċ import Ġjava . io . File Ċ import Ġjava . util . Collections . unmodifiable Set Ċ import Ġjavax . inject . Inject Ċ Ċ @ Suppress (" Un stable Api Usage ") Ċ open Ġclass ĠDependency Calculator Ġ@ Inject Ġconstructor ( objects : ĠObject Factory ) Ġ: ĠDefault Task () Ġ{ ĊĠĠĠ Ġprivate Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠNON _ C ORD A Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠC ORD A Ġ= Ġtrue ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠH ARD CODE D _ EXCL UDE S : ĠSet < Pair < String , ĠString >> Ġ= Ġun modifiable Set ( set Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" org . jetbrains " Ġto Ġ" annotations ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" org . jetbrains . kotlin " Ġto Ġ"*", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" net . cord a . kotlin " Ġto Ġ"*", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" org . osgi " Ġto Ġ"*", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" org . slf 4 j " Ġto Ġ" slf 4 j - api ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" org . slf 4 j " Ġto Ġ" j cl - over - slf 4 j ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" commons - logging " Ġto Ġ" commons - logging ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" co . parallel universe " Ġto Ġ" qu asar - core ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" co . parallel universe " Ġto Ġ" qu asar - core - osgi " ĊĠĠĠĠĠĠĠ Ġ)) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġdescription Ġ= Ġ" Comp utes Ġthis ĠCor D app 's Ġdependencies ." ĊĠĠĠĠĠĠĠ Ġgroup Ġ= ĠC ORD APP _ TASK _ GROUP ĊĊĠĠĠĠĠĠĠ Ġ// ĠForce Ġthis Ġtask Ġto Ġexecute ! ĊĠĠĠĠĠĠĠ Ġoutputs . up ToDate When ( satisf y None ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGradle 's Ġconfiguration Ġcache Ġfor bids Ġinvoking Ġ[ org . gradle . api . Task . getProject ] ĊĠĠĠĠ Ġ* Ġduring Ġthe Ġtask Ġexecution Ġphase . ĠAlthough Ġto Ġbe Ġbl unt , ĠGradle Ġcannot Ġserial ise ĊĠĠĠĠ Ġ* Ġa Ġ[ Configuration Container ][ org . gradle . api . artifacts . Configuration Container ] ĊĠĠĠĠ Ġ* Ġfield Ġyet Ġeither ! ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġconfigurations Ġ= Ġproject . configurations ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThese Ġj ars Ġare Ġadded Ġto Ġthe ĠC PK 's Ġlib / Ġfolder . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġ_ libraries : ĠConfigur able File Collection Ġ= Ġobjects . file Collection () ĊĠĠĠ Ġval Ġlibraries : ĠProvider < Set < FileSystem Location >> ĊĠĠĠĠĠĠĠ Ġ@ Output Files ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ libraries . elements ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThese Ġare Ġthe Ġ" main " Ġj ars Ġfrom Ġall Ġof Ġour Ġdependent ĠCor D app ĠC PK s , ĊĠĠĠĠ Ġ* Ġincluding Ġany Ġtrans itive ĠC PK Ġdependencies . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġ_ project C ord apps : ĠConfigur able File Collection Ġ= Ġobjects . file Collection () ĊĠĠĠ Ġval Ġproject C ord apps : ĠProvider < Set < FileSystem Location >> ĊĠĠĠĠĠĠĠ Ġ@ Output Files ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ project C ord apps . elements ĊĊĠĠĠ Ġprivate Ġval Ġ_ remote C ord apps : ĠConfigur able File Collection Ġ= Ġobjects . file Collection () ĊĠĠĠ Ġval Ġremote C ord apps : ĠProvider < Set < FileSystem Location >> ĊĠĠĠĠĠĠĠ Ġ@ Output Files ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ remote C ord apps . elements ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThis Ġis Ġthe Ġresolved Ġcontents Ġof Ġthe Ġ` cord a All Provided ` Ġconfiguration , ĊĠĠĠĠ Ġ* Ġwhich Ġshould Ġcontain Ġall Ġof Ġthe ĠC ord a ĠAPI Ġj ars Ġthat Ġthis ĠCor D app Ġuses . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġ_ provided J ars : ĠConfigur able File Collection Ġ= Ġobjects . file Collection () ĊĠĠĠ Ġval Ġprovided J ars : ĠProvider < Set < FileSystem Location >> ĊĠĠĠĠĠĠĠ Ġ@ Output Files ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ provided J ars . elements ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThese Ġj ars Ġare Ġembedded Ġinto Ġthe Ġ" main " Ġjar Ġand ĊĠĠĠĠ Ġ* Ġthen Ġadded Ġto Ġits ĠBundle - Classpath . ĠUsed Ġfor Ġj ars ĊĠĠĠĠ Ġ* Ġwhose ĠOS Gi Ġmetadata Ġis Ġeither Ġbroken Ġor Ġmissing . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġ_ embedded J ars : ĠConfigur able File Collection Ġ= Ġobjects . file Collection () ĊĠĠĠ Ġval Ġembedded J ars : ĠProvider < Set < FileSystem Location >> ĊĠĠĠĠĠĠĠ Ġ@ Output Files ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ embedded J ars . elements ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThese Ġj ars Ġhave Ġbeen Ġmigrated Ġoff Ġthe ĠBundle - Classpath ĊĠĠĠĠ Ġ* Ġand Ġrestored Ġto ĠB nd 's Ġregular Ġclasspath . Ġ( We Ġonly Ġuse ĊĠĠĠĠ Ġ* Ġthis Ġproperty Ġinternally .) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġ_ un bund led J ars : ĠConfigur able File Collection Ġ= Ġobjects . file Collection () ĊĠĠĠ Ġval Ġun bund led J ars : ĠProvider < Set < FileSystem Location >> ĊĠĠĠĠĠĠĠ Ġ@ Output Files ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ un bund led J ars . elements ĊĊĠĠĠ Ġ@ Task Action ĊĠĠĠ Ġfun Ġcalculate () Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠCompute Ġthe Ġ( un resolved ) Ġdependencies Ġon Ġthe Ġpackaging Ġclasspath ĊĠĠĠĠĠĠĠ Ġ// Ġthat Ġthe Ġuser Ġhas Ġselected Ġfor Ġthis ĠC PK Ġarchive . ĠWe Ġignore Ġany ĊĠĠĠĠĠĠĠ Ġ// Ġdependencies Ġfrom Ġthe Ġc ord a Runtime Only Ġconfiguration Ġbecause ĊĠĠĠĠĠĠĠ Ġ// Ġthese Ġwill Ġbe Ġprovided Ġby ĠC ord a . ĠAlso Ġignore Ġanything Ġfrom Ġthe ĊĠĠĠĠĠĠĠ Ġ// Ġc ord a Embedded Ġconfiguration , Ġbecause Ġthese Ġwill Ġbe Ġadded Ġto Ġthe ĊĠĠĠĠĠĠĠ Ġ// Ġbundle Ġclasspath . ĊĠĠĠĠĠĠĠ Ġval Ġruntime Configuration Ġ= Ġconfigurations . get ByName ( C ORD APP _ PACK AGING _ CONFIGURATION _ NAME ) ĊĠĠĠĠĠĠĠ Ġval Ġruntime Deps Ġ= ĠDependency Collector ( C ORD A _ RUNTIME _ ONLY _ CONFIGURATION _ NAME , ĠC ORD A _ EMB ED DED _ CONFIGURATION _ NAME ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. collect From ( runtime Configuration ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠThere Ġare Ġsome Ġdependencies Ġthat ĠC ord a ĠMUST Ġalways Ġprovide , ĊĠĠĠĠĠĠĠ Ġ// Ġeven Ġif Ġthe ĠCor D app Ġalso Ġdecl ares Ġthem Ġitself . ĊĠĠĠĠĠĠĠ Ġ// ĠExtract Ġany Ġof Ġthese Ġfrom Ġthe Ġuser 's Ġruntime Ġdependencies . ĊĠĠĠĠĠĠĠ Ġval Ġ( cord a Deps , Ġnon C ord a Deps ) Ġ= Ġruntime Deps . groupBy Ġ{ Ġdep Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis C ord a Provided ( dep . group , Ġdep . name ) ĊĠĠĠĠĠĠĠ Ġ}. let Ġ{ Ġgroup Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair ( group [ C ORD A ] Ġ?: Ġempty Set < Dependency >(), Ġgroup [ NON _ C ORD A ] Ġ?: Ġempty Set < Dependency >()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠCompute Ġthe Ġset Ġof Ġresolved Ġartifacts Ġthat Ġwill Ġdefine Ġthis ĠCor D app . ĊĠĠĠĠĠĠĠ Ġval Ġpackaging Configuration Ġ= Ġruntime Configuration . resolved Configuration ĊĠĠĠĠĠĠĠ Ġval Ġpackage Files Ġ= Ġ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpackaging Configuration . resolve Without C ord a ( non C ord a Deps ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ- Ġpackaging Configuration . resolve All ( cord a Deps ) ĊĠĠĠĠĠĠĠ Ġ). to Files () Ġ+ Ġnon C ord a Deps . to File Collection Files () ĊĊĠĠĠĠĠĠĠ Ġ// ĠSepar ate Ġout Ġany Ġj ars Ġwhich Ġwe Ġwant Ġto Ġembed Ġinstead . ĊĠĠĠĠĠĠĠ Ġ// ĠAvoid Ġembedding Ġanything Ġwhich Ġanother ĠCor D app Ġdepends Ġon . ĊĠĠĠĠĠĠĠ Ġval Ġembedded Deps Ġ= Ġconfigurations . get ByName ( C ORD A _ EMB ED DED _ CONFIGURATION _ NAME ). all Dependencies Ġ- Ġruntime Deps ĊĠĠĠĠĠĠĠ Ġval Ġembedded Files Ġ= Ġpackaging Configuration . resolve Without C ord a ( embedded Deps ). to Files () Ġ+ Ġembedded Deps . to File Collection Files () ĊĊĠĠĠĠĠĠĠ Ġ// ĠThe Ġuser Ġhas Ġexplicitly Ġasked Ġto Ġembed Ġthese Ġartifacts . ĊĠĠĠĠĠĠĠ Ġval Ġmust Embed Files Ġ= Ġpackaging Configuration . resolve First Level Files For ( embedded Deps ) ĊĊĠĠĠĠĠĠĠ Ġval Ġbundled Files Ġ= Ġembedded Files Ġ- Ġpackage Files Ġ+ Ġmust Embed Files ĊĠĠĠĠĠĠĠ Ġ_ embedded J ars . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset From ( bund led Files ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdis allow Changes () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ_ un bund led J ars . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset From ( embedded Files Ġ- Ġbundled Files ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdis allow Changes () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ_ libraries . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset From ( package Files Ġ- Ġbundled Files ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdis allow Changes () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// ĠFinally , Ġwork Ġout Ġwhich Ġj ars Ġwe Ġhave Ġused Ġthat Ġhave Ġnot Ġbeen Ġpackaged Ġinto Ġour ĠC PK . ĊĠĠĠĠĠĠĠ Ġ// ĠWe Ġstill Ġignore Ġanything Ġthat Ġwas Ġfor Ġ" compile Ġonly ", Ġbecause Ġwe Ġonly Ġwant Ġto Ġvalidate Ġpackages ĊĠĠĠĠĠĠĠ Ġ// Ġthat Ġwill Ġbe Ġavailable Ġat Ġruntime . ĊĠĠĠĠĠĠĠ Ġval Ġexternal Configuration Ġ= Ġconfigurations . get ByName ( C ORD APP _ EXTERNAL _ CONFIGURATION _ NAME ). resolved Configuration ĊĠĠĠĠĠĠĠ Ġval Ġc ord app Deps Ġ= Ġconfigurations . get ByName ( ALL _ C ORD APPS _ CONFIGURATION _ NAME ). all Dependencies ĊĠĠĠĠĠĠĠ Ġval Ġc ord app Files Ġ= Ġexternal Configuration . resolve First Level Files For ( cord app Deps ) ĊĠĠĠĠĠĠĠ Ġval Ġproject C ord app Deps Ġ= Ġc ord app Deps . filter Is Instance < Project Dependency >() ĊĠĠĠĠĠĠĠ Ġval Ġproject C ord app Files Ġ= Ġexternal Configuration . resolve First Level ( project C ord app Deps ). to Files () ĊĠĠĠĠĠĠĠ Ġ_ project C ord apps . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset From ( project C ord app Files ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdis allow Changes () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ_ remote C ord apps . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset From ( cord app Files Ġ- Ġproject C ord app Files ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdis allow Changes () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġprovided Deps Ġ= Ġconfigurations . get ByName ( C ORD A _ ALL _ PROVIDED _ CONFIGURATION _ NAME ). all Dependencies ĊĠĠĠĠĠĠĠ Ġval Ġprovided Files Ġ= Ġexternal Configuration . resolve All Files For ( provided Deps ) ĊĠĠĠĠĠĠĠ Ġ_ provided J ars . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset From ( provided Files ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdis allow Changes () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠResolved Configuration . resolve All Files For ( dependencies : ĠCollection < Dependency >): ĠSet < File > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġresolve All ( dependencies ). to Files () Ġ+ Ġdependencies . to File Collection Files () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠResolved Configuration . resolve First Level Files For ( dependencies : ĠCollection < Dependency >): ĠSet < File > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġresolve First Level ( dependencies ). to Files () Ġ+ Ġdependencies . to File Collection Files () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠCollection < Resolved Artifact >. to Files (): ĠSet < File > Ġ= Ġmap To ( Linked HashSet (), ĠResolved Artifact :: getFile ) ĊĊĠĠĠ Ġprivate Ġfun ĠCollection < Dependency >. to File Collection Files (): ĠSet < File > ĊĠĠĠĠĠĠĠ Ġ= Ġfilter Is Instance < File Collection Dependency >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap To ( Linked HashSet (), ĠFile Collection Dependency :: resolve ) ĊĊĠĠĠ Ġprivate Ġfun ĠResolved Configuration . resolve Without C ord a ( dependencies : ĠCollection < Dependency >): ĠList < Resolved Artifact > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġresolve All ( dependencies ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Not Ġ{ Ġartifact Ġ-> Ġis C ord a Provided ( artifact . module Version . id ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. also Ġ{ Ġartifacts Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠC ord a Ġartifacts Ġshould Ġnot Ġbe Ġincluded , Ġeither Ġdirectly Ġor Ġtransit ively . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwarn About C ord a Artifacts ( C ORD A _ API _ GROUP , Ġartifacts ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwarn About C ord a Artifacts ( ENTER PRI SE _ API _ GROUP , Ġartifacts ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġwarn About C ord a Artifacts ( packageName : ĠString , Ġartifacts : ĠIterable < Resolved Artifact >) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġname Length Ġ= ĠpackageName . length ĊĠĠĠĠĠĠĠ Ġfor Ġ( artifact Ġin Ġartifacts ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġgroup Ġ= Ġartifact . module Version . id . group ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( group . startsWith ( packageName )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname Length Ġ== Ġgroup . length Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInvalid UserData Exception (" Cor D app Ġmust Ġnot Ġcontain Ġ'${ artifact . module Version }' Ġ(${ artifact . file . name }) ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgroup . length Ġ> Ġname Length Ġ&& Ġgroup [ name Length ] Ġ== Ġ'.' Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlogger . warn (" You Ġappear Ġto Ġhave Ġincluded Ġa ĠC ord a Ġplatform Ġcomponent Ġ'${ artifact . module Version }' Ġ(${ artifact . file . name }). Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" You Ġprobably Ġwant Ġto Ġuse Ġeither Ġthe Ġ$ C ORD A _ PROVIDED _ CONFIGURATION _ NAME Ġor Ġthe Ġ$ C ORD APP _ CONFIGURATION _ NAME Ġconfiguration Ġhere . Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ+ Ġ" See Ġ$ C ORD APP _ DOCUMENT ATION _ URL " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis C ord a Provided ( id : ĠModule Version Identifier ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġis C ord a Provided ( id . group , Ġid . name ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis C ord a Provided ( group : ĠString ?, Ġname : ĠString ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠH ARD CODE D _ EXCL UDE S . any Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexclude Ġ-> Ġ( exclude . first Ġ== Ġgroup ) Ġ&& Ġ( exclude . second Ġ== Ġ"*" Ġ|| Ġexclude . second Ġ== Ġname ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġclass ĠDependency Collector ( var arg Ġexclude Name : ĠString ) Ġ{ ĊĠĠĠ Ġprivate Ġval Ġexclude Names Ġ= Ġmutable Set Of (* exclude Name ) ĊĊĠĠĠ Ġfun Ġcollect From ( source : ĠConfiguration ): ĠSet < Dependency > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġmutable Set Of < Dependency >() ĊĠĠĠĠĠĠĠ Ġcollect From ( source , Ġresult ) ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcollect From ( source : ĠConfiguration , Ġresult : ĠMutable Set < Dependency >) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! exclude Names . add ( source . name )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġresult . addAll ( source . dependencies ) ĊĠĠĠĠĠĠĠ Ġfor Ġ( parent Ġin Ġsource . extends From ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcollect From ( parent , Ġresult ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ