package Ġcom . github . sam bl ake . me er kat . model Ċ Ċ import Ġkotlin . reflect . K Class Ċ import Ġkotlin . reflect . full . member Properties Ċ Ċ abstract Ġclass ĠViewModel ( val Ġid : ĠInt , Ġval Ġname : ĠString , Ġval Ġdescription : ĠString ) Ġ{ ĊĊĠĠĠ Ġabstract Ġval ĠbaseUrl : ĠString ĊĠĠĠ Ġabstract Ġval Ġicon : ĠString ĊĊĠĠĠ Ġfun ĠgetInstance Url () Ġ= Ġ"${ baseUrl }/${ id }" ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== Ġother ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( java Class Ġ!= Ġother ?. java Class ) Ġreturn Ġfalse ĊĊĠĠĠĠĠĠĠ Ġother Ġas ĠViewModel ĊĠĠĠĠĠĠĠ Ġreturn Ġid Ġ== Ġother . id ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġid ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun ĠgetList ings (): ĠMap < String , ĠString > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfields Ġ= Ġ( this :: class Ġas ĠK Class < ViewModel >). member Properties . filter Ġ{ Ġit . annotations . any Ġ{ Ġit Ġis ĠListing Ġ} Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfields . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPair (( it . annotations . first Ġ{ Ġit Ġis ĠListing Ġ} Ġas ĠListing ). name , Ġit . get ( this ). toString ()) ĊĠĠĠĠĠĠĠ Ġ}. toMap () ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ abstract Ġclass ĠView Type < T : ĠViewModel >( val Ġname : ĠString , Ġval Ġurl Segment : ĠString , Ġval Ġicon : ĠString ) ĊĊ Ċ @ Target ( Annotation Target . PROPERTY ) Ċ @ Retention ( Annotation Retention . RUNTIME ) Ċ @ Must Be Document ed Ċ annotation Ġclass ĠListing ( val Ġname : ĠString )