package Ġkotlinx . atomic fu . test Ċ Ċ import Ġjava . lang . reflect . Modifier Ċ import Ġkotlin . test . assertEquals Ċ Ċ public Ġopen Ġclass ĠReflection TestBase Ġ{ ĊĠĠĠ Ġfun Ġcheck Declarations ( java Class : ĠClass <* >, Ġexpect : ĠList < Field Desc >) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertEquals ( expect . join ToString ("; "), ĠgetClass Declarations ( java Class )) ĊĊĠĠĠ Ġfun Ġcheck Class Modifiers ( java Class : ĠClass <* >, Ġmodifiers : ĠInt , Ġis Synt hetic : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ ĠassertEquals ( is Synt hetic , Ġjava Class . is Synt hetic ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( Modifier . toString ( modifiers ), ĠModifier . toString ( java Class . modifiers )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun ĠgetClass Declarations ( java Class : ĠClass <* >) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġjava Class . declared Fields . join ToString ( separator Ġ= Ġ"; ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ Modifier . toString ( it . modifiers )} Ġ${ if Ġ( it . is Synt hetic ) Ġ" synt hetic Ġ" Ġelse Ġ"" }${ it . type . name } Ġ${ it . name }" ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġdata Ġclass ĠField Desc ( val Ġmodifiers : ĠInt , Ġval Ġis Synt hetic : ĠBoolean , Ġval ĠtypeName : ĠString , Ġval Ġname : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= Ġ"${ Modifier . toString ( modifiers )} Ġ${ if Ġ( is Synt hetic ) Ġ" synt hetic Ġ" Ġelse Ġ"" }$ typeName Ġ$ name " ĊĠĠĠ Ġ} Ċ }