// ĠOriginal Ġbug : ĠK T - 1 5 5 3 8 Ċ Ċ package Ġsolution Ċ Ċ import Ġjava . lang . reflect .* Ċ Ċ data Ġclass ĠDescriptor ( val Ġclazz : ĠClass <* >, Ġval Ġmodifiers : ĠInt , Ġval Ġinfo : ĠList < String >) Ġ{ Ċ ĉ constructor ( clazz : ĠClass <* >, Ġmodifiers : ĠInt , Ġvar arg Ġinfo : ĠList < String >) Ġ: Ċĉĉ ĉ this ( clazz , Ġmodifiers , Ġmutable ListOf < String >(). apply Ġ{ Ġinfo . forEach Ġ{ Ġthis @ apply . addAll ( it ) Ġ} Ġ}) Ċ } Ċ Ċ private Ġval ĠAnnot ated Element . info : ĠList < String > Ċ ĉ get () Ġ= Ġget Annotation ( Info :: class . java )?. values ?. toList () Ġ?: ĠlistOf < String >() Ċ Ċ annotation Ġclass ĠInfo ( val Ġvalues : ĠArray < String >) Ċ Ċ /** Ċ Ġ* ĠA Ġsimple Ġabstraction Ġof Ġcom . google . common . reflect . Inv ok able Ġof ĠGu ava Ġ 2 0 . 0 . Ċ Ġ* Ġhttps :// github . com / google / gu ava / blob / v 2 0 . 0 / gu ava / src / com / google / common / reflect / Inv ok able . java Ċ Ġ*/ Ċ abstract Ġclass ĠInv ok able < T , ĠR > Ġ: ĠAccess ible Object (), ĠMember , ĠGeneric Declaration Ċ Ċ val Ġ< T Ġ: ĠAccess ible Object > ĠT . descriptor : ĠDescriptor Ċ ĉ get () Ġ= Ġwhen Ġ( this ) Ġ{ Ċĉ ĉ is ĠInv ok able < *, Ġ*> Ġ-> Ġ{ Ċĉĉ ĉ val Ġo Ġ= Ġthis Ġ// Ġ< -------------------------------- - CHANG ES ĠBEGIN ĠFROM ĠTHIS ĠLINE Ċĉĉ ĉ Descriptor ( o . decl aring Class , Ċĉĉĉ ĠĠĠĠĠĠĠĠĠĠ Ġo . modifiers , Ċĉĉĉ ĠĠĠĠĠĠĠĠĠĠ Ġinfo , Ċĉĉĉ ĠĠĠĠĠĠĠĠĠĠ Ġo . decl aring Class . info ) Ċĉ ĉ } Ċĉ ĉ else Ġ-> Ġthrow ĠAssertionError () Ċ ĉ } ĊĊ