package Ġdk . cache t . car p . test Ċ Ċ import Ġorg . reflection s . Reflection s Ċ import Ġjava . lang . reflect . Modifier Ċ import Ġkotlin . reflect . K Class ĊĊ Ċ /** Ċ Ġ* ĠFind Ġall Ġextending Ġtypes Ġof Ġthe Ġinterface Ġor Ġabstract Ġclass Ġ[ T ]. Ċ Ġ* ĠIt Ġis Ġassumed Ġall Ġextending Ġclasses Ġare Ġlocated Ġin Ġthe Ġsame Ġnamespace . Ċ Ġ*/ Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠAny > Ġfind Concrete Types (): ĠList < K Class < out ĠT >> Ċ { ĊĠĠĠ Ġval Ġklass Ġ= ĠT :: class ĊĠĠĠ Ġcheck ( Ġklass . is Abstract Ġ) ĊĠĠĠ Ġval Ġnamespace Ġ= Ġklass . java .` package `. name ĊĊĠĠĠ Ġreturn ĠReflection s ( Ġnamespace Ġ) ĊĠĠĠĠĠĠĠ Ġ. getSub Types Of ( Ġklass . java Ġ) ĊĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġtype Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠOnly Ġverify Ġconcrete Ġtypes . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ! Modifier . is Abstract ( Ġtype . modifiers Ġ) Ġ&& Ġ! Modifier . is Interface ( Ġtype . modifiers Ġ) Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠIgnore Ġprivate Ġtypes Ġsince Ġthey Ġare Ġnot Ġpart Ġof Ġthe ĠAPI . ĊĠĠĠĠĠĠĠĠĠĠĠ ĠModifier . is Public ( Ġtype . modifiers Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . kotlin Ġ} Ċ } Ċ