package Ġio . android al atan . lifecycle . handler . internal Ċ Ċ import Ġio . android al atan . lifecycle . handler . internal . model . Lifecycle Constant Ċ import Ġio . android al atan . lifecycle . handler . internal . model . MethodInfo Ċ import Ġio . android al atan . lifecycle . handler . api . Lifecycle Listener Ċ import Ġjava . lang . reflect . Modifier Ċ Ċ class ĠListener Analyzer Ġ{ ĊĊĠĠĠ Ġval Ġmethod Cache Ġ= ĠListener Method Cache () ĊĊĠĠĠ Ġfun Ġanalyze ( lifecycle Listener : ĠLifecycle Listener ): ĠSet < MethodInfo > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( lifecycle Listener :: class Ġ! in Ġmethod Cache ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlifecycle Listener . java Class . declared Methods ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ ĠModifier . is Public ( it . modifiers ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map NotNull Ġ{ Ġmethod Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmethod . declared Annotations . first OrNull Ġ{ Ġis Supported Annotation ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġannotation Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠMethodInfo ( annotation . annotation Class , Ġmethod ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. take If Ġ{ Ġit . isNotEmpty () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . to HashSet () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ? . let Ġ{ Ġmethod Cache . add ( lifecycle Listener :: class , Ġit ) Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġmethod Cache [ lifecycle Listener :: class ] ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġis Supported Annotation ( annotation : ĠAnnotation ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġk Class Ġ= Ġannotation . annotation Class ĊĠĠĠĠĠĠĠ Ġreturn Ġ( k Class Ġin ĠLifecycle Constant . GROUP _ OF _ ASYNC _ AN NOT ATION ) Ġor Ġ( k Class Ġin ĠLifecycle Constant . GROUP _ OF _ SYNC _ AN NOT ATION ) ĊĠĠĠ Ġ} Ċ }