/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 2 0 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġandroidx . room . compiler . processing . javac Ċ Ċ import Ġandroidx . room . compiler . processing . X Annotation Ċ import Ġandroidx . room . compiler . processing . X Annotation Value Ċ import Ġandroidx . room . compiler . processing . X Element Ċ import Ġandroidx . room . compiler . processing . X Mess ager Ċ import Ġjavax . annotation . processing . Mess ager Ċ import Ġjavax . lang . model . element . Element Ċ import Ġjavax . tools . Diagnostic Ċ Ċ internal Ġclass ĠJ av ac Processing Env Mess ager ( ĊĠĠĠ Ġval Ġdelegate : ĠMess ager Ċ ) Ġ: ĠX Mess ager () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġon Print Message ( ĊĠĠĠĠĠĠĠ Ġkind : ĠDiagnostic . Kind , ĊĠĠĠĠĠĠĠ Ġmsg : ĠString , ĊĠĠĠĠĠĠĠ Ġelement : ĠXElement ?, ĊĠĠĠĠĠĠĠ Ġannotation : ĠX Annotation ?, ĊĠĠĠĠĠĠĠ Ġannotation Value : ĠX Annotation Value ? ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( element Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelegate . print Message ( kind , Ġmsg ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġjav ac Element Ġ= Ġ( element Ġas ĠJ av ac Element ). element ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" NAME _ SH ADO WING ") Ġ// Ġintention al Ġto Ġavoid Ġreporting Ġwithout Ġlocation ĊĠĠĠĠĠĠĠ Ġval Ġmsg Ġ= Ġif Ġ( javac Element . is From Compiled Class ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ msg Ġ- Ġ${ element . fallback Location Text }" ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmsg ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( annotation Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelegate . print Message ( kind , Ġmsg , Ġjav ac Element ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġjav ac Annotation Ġ= Ġ( annotation Ġas ĠJ av ac Annotation ). mirror ĊĠĠĠĠĠĠĠ Ġif Ġ( annotation Value Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelegate . print Message ( kind , Ġmsg , Ġjav ac Element , Ġjav ac Annotation ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġjav ac Annotation Value Ġ= Ġ( annotation Value Ġas ĠJ av ac Annotation Value ). annotation Value ĊĠĠĠĠĠĠĠ Ġdelegate . print Message ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkind , Ġmsg , Ġjav ac Element , Ġjav ac Annotation , Ġjav ac Annotation Value ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠIndicates Ġwhether Ġan Ġelement Ġcomes Ġfrom Ġa Ġcompiled Ġclass . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠIf Ġthis Ġmethod Ġfails Ġto Ġidentify Ġif Ġthe Ġelement Ġcomes Ġfrom Ġa Ġcompiled Ġclass Ġit Ġwill ĊĠĠĠĠĠĠĠĠ Ġ* Ġdefault Ġto Ġreturning Ġfalse . ĠNote Ġthat Ġthis Ġis Ġa Ġpoor - man 's Ġmethod Ġof Ġidentifying Ġif ĊĠĠĠĠĠĠĠĠ Ġ* Ġthe Ġjava Ġsource Ġof Ġthe Ġelement Ġis Ġavailable Ġwithout Ġdepending Ġon Ġcompiler Ġtools . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġprivate Ġfun ĠElement . is From Compiled Class (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun ĠgetClass File String ( symbol : ĠAny ): ĠString Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsymbol . java Class . getDeclared Field (" class file "). get ( symbol ). toString () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠNoSuch Field Exception ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetClass File String ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsymbol . java Class . super class . getDeclared Field (" owner "). get ( symbol ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠgetClass File String ( this ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġit . contains (". jar ") Ġ|| Ġit . contains (". class ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠThrowable ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }