/* Ċ Ġ* ĠCopyright Ġ 2 0 1 0 - 2 0 1 9 ĠJetBrains Ġs . r . o . Ġand ĠKotlin ĠProgramming ĠLanguage Ġcontributors . Ċ Ġ* ĠUse Ġof Ġthis Ġsource Ġcode Ġis Ġgoverned Ġby Ġthe ĠApache Ġ 2 . 0 Ġlicense Ġthat Ġcan Ġbe Ġfound Ġin Ġthe Ġlicense / LICENSE . txt Ġfile . Ċ Ġ*/ Ċ Ċ package Ġorg . jetbrains . kotlin . descriptors . common izer . builder Ċ Ċ import Ġorg . jetbrains . kotlin . descriptors . Package Fragment Descriptor Ċ import Ġorg . jetbrains . kotlin . descriptors . Package Fragment Provider Ċ import Ġorg . jetbrains . kotlin . descriptors . Package Fragment Provider Optim ized Ċ import Ġorg . jetbrains . kotlin . name . Fq Name Ċ import Ġorg . jetbrains . kotlin . name . Name Ċ Ċ internal Ġclass ĠCommon ized Package Fragment Provider Ġ: ĠPackage Fragment Provider Optim ized Ġ{ ĊĠĠĠ Ġprivate Ġval Ġpackage Fragments Ġ= ĠArrayList < Package Fragment Descriptor >() ĊĊĠĠĠ Ġoperator Ġfun Ġplus Assign ( package Fragment : ĠPackage Fragment Descriptor ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . package Fragments Ġ+= Ġpackage Fragment ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġcollect Package Fragments ( fq Name : ĠF q Name , Ġpackage Fragments : ĠMutable Collection < Package Fragment Descriptor >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . package Fragments . filter To ( package Fragments ) Ġ{ Ġit . fq Name Ġ== Ġfq Name Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Package Fragments ( fq Name : ĠF q Name ): ĠList < Package Fragment Descriptor > Ġ= ĊĠĠĠĠĠĠĠ Ġpackage Fragments . filter Ġ{ Ġit . fq Name Ġ== Ġfq Name Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Sub Packages Of ( fq Name : ĠF q Name , Ġname Filter : Ġ( Name ) Ġ-> ĠBoolean ): ĠCollection < Fq Name > Ġ= ĊĠĠĠĠĠĠĠ Ġpackage Fragments . as Sequence () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . fq Name Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġ! it . is Root Ġ&& Ġit . parent () Ġ== Ġfq Name Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. toList () ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġcreate Array ( size : ĠInt ) Ġ= ĠArray ( size ) Ġ{ ĠCommon ized Package Fragment Provider () Ġ} ĊĊĠĠĠĠĠĠĠ Ġoperator Ġfun ĠArray < Common ized Package Fragment Provider >. plus Assign ( package Fragments : ĠList < Package Fragment Descriptor ?> ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Fragments . forEach Indexed Ġ{ Ġindex , Ġpackage Fragment Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis [ index ] Ġ+= Ġpackage Fragment Ġ?: Ġreturn @ forEach Indexed ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ