package Ġde . j ens k ling en berg . mp apt . common Ċ Ċ import Ġde . j ens k ling en berg . mp apt . Abstract Processor Ċ import Ġde . j ens k ling en berg . mp apt . Round Environment Ċ import Ġde . j ens k ling en berg . mp apt . model . Element Ċ import Ġorg . jetbrains . kotlin . descriptors . Class Descriptor Ċ import Ġorg . jetbrains . kotlin . descriptors . Function Descriptor Ċ import Ġorg . jetbrains . kotlin . name . Fq Name Ċ import Ġorg . jetbrains . kotlin . resolve . descriptor Util . module Ċ Ċ class ĠClass Parser () Ġ{ ĊĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġfun Ġparse ( descriptor : ĠClass Descriptor , Ġgenerator : ĠAbstract Processor , Ġround Environment : ĠRound Environment ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġbuild Folder Ġ= Ġdescriptor . guess ing Project Folder () Ġ+ Ġ" build /" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerator . processing Env . project Folder Ġ= Ġdescriptor . guess ing Project Folder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerator . processing Env . build Folder Ġ= Ġbuild Folder ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerator . get Supported Annotation Types (). forEach Ġ{ Ġannotation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( descriptor . has Annotation ( annotation )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġround Environment . module Ġ= Ġdescriptor . module ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġround Environment . elements . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠElement . Class Element ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescriptor . name . asString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġannotation Ġ= Ġdescriptor . find Annotation ( annotation ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass Descriptor Ġ= Ġdescriptor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgenerator . process ( round Environment ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġfun Ġparse Method ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescriptor : ĠClass Descriptor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfunction : ĠFunction Descriptor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgenerator : ĠAbstract Processor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġround Environment : ĠRound Environment ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġgenerator . get Supported Annotation Types (). forEach Ġ{ Ġannotation Names Ġ-> ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( function . annotations . has Annotation ( Fq Name ( annotation Names ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġannotation Ġ= Ġfunction . annotations . find Annotation ( Fq Name ( annotation Names )) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġround Environment . also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . module Ġ= Ġdescriptor . module ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . elements . add ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠElement . Function Element ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsimple Name Ġ= Ġfunction . name . asString (), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġannotation Ġ= Ġannotation , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdescriptor Ġ= Ġdescriptor , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfunc Ġ= Ġfunction ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgenerator . process ( round Environment ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊ Ċ }