package Ġorg . open rnd r . extra . parameters Ċ Ċ import Ġorg . open rnd r . math . Vector 2 Ċ import Ġkotlin . reflect . K Callable Ċ import Ġkotlin . reflect . K Mutable Property 1 Ċ import Ġkotlin . reflect . full . find Annotation Ċ import Ġkotlin . reflect . K Visibility Ċ import Ġkotlin . reflect . full . declared Member Functions Ċ import Ġkotlin . reflect . full . member Properties Ċ Ċ fun ĠParameter Type . Companion . for Parameter Annotation Class ( annotation : ĠAnnotation ): ĠParameter Type Ġ= ĊĠĠĠĠĠĠĠ ĠParameter Type . values (). find Ġ{ Ġit . annotation Class Ġ== Ġannotation . annotation Class Ġ} Ġ?: Ġerror (" no Ġtype Ġfor Ġ$ annotation ") Ċ Ċ val ĠParameter Type . Companion . parameter Annotation Classes Ġget () Ġ= ĠParameter Type . values (). map Ġ{ Ġit . annotation Class Ġ} Ċ Ċ fun ĠAny . list Parameters (): ĠList < Parameter > Ġ{ ĊĠĠĠ Ġreturn Ġ( this :: class . member Properties . filter Ġ{ Ġproperty Ġ-> ĊĠĠĠĠĠĠĠ Ġ! property . is Const Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproperty Ġis ĠK Mutable Property 1 < *, Ġ*> Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproperty . visibility Ġ== ĠK Visibility . PUBLIC Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġproperty . annotations . map Ġ{ Ġit . annotation Class Ġ}. intersect ( ParameterType . parameter Annotation Classes ). isNotEmpty () ĊĠĠĠ Ġ}. map Ġ{ Ġproperty Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġannotations Ġ= Ġproperty . annotations . filter Ġ{ Ġit . annotation Class Ġin ĠParameter Type . parameter Annotation Classes Ġ} ĊĠĠĠĠĠĠĠ Ġvar Ġint Range : ĠInt Range ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġdouble Range : ĠClosed Range < Double >? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġsize Range : ĠClosed Range < Int >? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġorder : ĠInt Ġ= ĠInt . MAX _ VALUE ĊĠĠĠĠĠĠĠ Ġvar Ġlabel Ġ= Ġ"" ĊĠĠĠĠĠĠĠ Ġvar Ġprecision : ĠInt ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġtype : ĠParameter Type ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġvector Range Ġ= ĠPair ( Vector 2 (- 1 . 0 , Ġ- 1 . 0 ), ĠVector 2 ( 1 . 0 , Ġ 1 . 0 )) ĊĠĠĠĠĠĠĠ Ġvar Ġinvert Y : ĠBoolean ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġvar Ġshow Vector : ĠBoolean ? Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġfor Ġ( it Ġin Ġannotations ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype Ġ= ĠParameter Type . for Parameter Annotation Class ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠBoolean Parameter Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Ġ= Ġit . label ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorder Ġ= Ġit . order ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDouble Parameter Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Ġ= Ġit . label ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdouble Range Ġ= Ġit . low .. it . high ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprecision Ġ= Ġit . precision ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorder Ġ= Ġit . order ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠInt Parameter Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Ġ= Ġit . label ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġint Range Ġ= Ġit . low .. it . high ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorder Ġ= Ġit . order ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠText Parameter Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Ġ= Ġit . label ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorder Ġ= Ġit . order ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠColor Parameter Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Ġ= Ġit . label ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorder Ġ= Ġit . order ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠXY Parameter Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Ġ= Ġit . label ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorder Ġ= Ġit . order ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvector Range Ġ= ĠPair ( Vector 2 ( it . min X , Ġit . min Y ), ĠVector 2 ( it . max X , Ġit . max Y )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprecision Ġ= Ġit . precision ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvert Y Ġ= Ġit . invert Y ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Vector Ġ= Ġit . show Vector ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠDouble List Parameter Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Ġ= Ġit . label ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorder Ġ= Ġit . order ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdouble Range Ġ= Ġit . low .. it . high ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprecision Ġ= Ġit . precision ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsize Range Ġ= Ġit . minimum List Length .. it . maximum List Length ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠVector 2 Parameter Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Ġ= Ġit . label ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorder Ġ= Ġit . order ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdouble Range Ġ= Ġit . min .. it . max ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprecision Ġ= Ġit . precision ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠVector 3 Parameter Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Ġ= Ġit . label ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorder Ġ= Ġit . order ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdouble Range Ġ= Ġit . min .. it . max ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprecision Ġ= Ġit . precision ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠVector 4 Parameter Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Ġ= Ġit . label ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorder Ġ= Ġit . order ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdouble Range Ġ= Ġit . min .. it . max ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprecision Ġ= Ġit . precision ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis ĠOption Parameter Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Ġ= Ġit . label ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġorder Ġ= Ġit . order ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠParameter ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġparameter Type Ġ= Ġtype Ġ?: Ġerror (" no Ġtype "), ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperty Ġ= Ġproperty Ġas ĠK Mutable Property 1 < out ĠAny , ĠAny ? >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfunction Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Ġ= Ġlabel , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdouble Range Ġ= Ġdouble Range , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvector Range Ġ= Ġvector Range , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Range Ġ= Ġsize Range , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġint Range Ġ= Ġint Range , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprecision Ġ= Ġprecision , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Vector Ġ= Ġshow Vector , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvert Y Ġ= Ġinvert Y , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorder Ġ= Ġorder ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ġ+ Ġthis :: class . declared Member Functions . filter Ġ{ ĊĠĠĠĠĠĠĠ Ġit . find Annotation < Action Parameter >() Ġ!= Ġnull ĊĠĠĠ Ġ}. map Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġannotation Ġ= Ġit . find Annotation < Action Parameter >() !! ĊĠĠĠĠĠĠĠ Ġval Ġlabel Ġ= Ġannotation . label ĊĠĠĠĠĠĠĠ Ġval Ġorder Ġ= Ġannotation . order ĊĠĠĠĠĠĠĠ Ġval Ġtype Ġ= ĠParameter Type . Action ĊĠĠĠĠĠĠĠ ĠParameter ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperty Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfunction Ġ= Ġit Ġas ĠK Callable < Unit >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġlabel Ġ= Ġlabel , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdouble Range Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġint Range Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsize Range Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvector Range Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprecision Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Vector Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvert Y Ġ= Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġorder Ġ= Ġorder ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ}). sorted By Ġ{ Ġit . order Ġ} Ċ } Ċ Ċ actual Ġfun ĠAny . title () Ġ= Ġthis :: class . find Annotation < Description >() ?. title Ċ Ċ actual Ġfun ĠAny . description (): ĠString ? Ġ= Ġthis :: class . find Annotation < Description >() ?. description ĊĊĊ