package Ġcom . github . y us aka 3 9 . slack bot . api . handler Ċ Ċ import Ġcom . github . y us aka 3 9 . slack bot . api . entity . Action Ċ import Ġcom . github . y us aka 3 9 . slack bot . api . entity . Message Ċ import Ġkotlin . reflect . K Callable Ċ import Ġkotlin . reflect . K Class Ċ import Ġkotlin . reflect . full . is Subclass Of Ċ import Ġkotlin . reflect . jvm . is Accessible Ċ Ċ abstract Ġclass ĠHandler Pack Handler Ġ: ĠHandler Ġ{ ĊĠĠĠ Ġprotected Ġabstract Ġval Ġk Callable : ĠK Callable < *> ĊĠĠĠ Ġprotected Ġabstract Ġval Ġk Class : ĠK Class < *> ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Action Provider ( message : ĠMessage ): Ġ() Ġ-> ĠAction Ġ= Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . k Callable . apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ}. call ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . k Class . instantiate Handler Pack ( message ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* this . get Arguments From Target Message ( message ) ĊĠĠĠĠĠĠĠ Ġ) Ġas ? ĠAction Ġ?: Ġthrow ĠIllegalStateException (" Handler Ġfunctions Ġmust Ġreturn ĠAction ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġabstract Ġfun Ġget Arguments From Target Message ( message : ĠMessage ): ĠArray < Any ?> ĊĊĠĠĠ Ġprivate Ġfun ĠK Class <* >. instantiate Handler Pack ( message : ĠMessage ? Ġ= Ġnull ): ĠAny Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! this . is Subclass Of ( Handler Pack :: class )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalStateException (" Classes Ġcontains Ġhandler Ġmust Ġextends ĠHandler Pack ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . construct ors . first OrNull Ġ{ Ġit . parameters . isEmpty () Ġ} ?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . is Accessible Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ?. call ()?. apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( this Ġas ĠHandler Pack ). set Received Message ( message ) ĊĠĠĠĠĠĠĠ Ġ} Ġ?: Ġthrow ĠIllegalStateException ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Classes Ġcontains Ġhandler Ġfunction Ġmust Ġhave Ġconstructor Ġwith Ġno Ġargs " ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }