package Ġdev . the code war ri or . mirror . impl . type Ċ Ċ import Ġdev . the code war ri or . mirror . Invalid Special ization Exception Ċ import Ġdev . the code war ri or . mirror . impl . Mirror Cache Ċ import Ġdev . the code war ri or . mirror . impl . core types . Core Type Utils Ċ import Ġdev . the code war ri or . mirror . type . Type Mirror Ċ import Ġdev . the code war ri or . mirror . type . Wildcard Mirror Ċ import Ġdev . the code war ri or . mirror . impl . utils . Unt ested Ċ import Ġjava . lang . reflect . Annotated Wildcard Type Ċ import Ġjava . lang . reflect . Wildcard Type Ċ Ċ internal Ġclass ĠW ildcard Mirror Impl Ġinternal Ġconstructor ( ĊĠĠĠ Ġoverride Ġval Ġcache : ĠM irror Cache , ĊĠĠĠ Ġoverride Ġval Ġcore Type : ĠW ildcard Type , ĊĠĠĠ Ġ// Ġyou Ġcan 't Ġannotate Ġwildcard Ġtypes , Ġso Ġtype Ġannotations Ġare Ġignored , Ġall Ġwe Ġcare Ġabout Ġare Ġthe Ġannotated Ġbounds ĊĠĠĠ Ġprivate Ġval Ġannotated : ĠAnnot ated Wildcard Type ?, ĊĠĠĠ Ġraw : ĠW ildcard Mirror ?, ĊĠĠĠ Ġoverride Ġval Ġspecial ization : ĠType Special ization . Wildcard ? Ċ ): ĠType Mirror Impl (), ĠW ildcard Mirror Ġ{ ĊĊĠĠĠ Ġoverride Ġval Ġcore Annotated Type : ĠAnnot ated Wildcard Type Ġ= Ġif ( annotated Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠ ĠCore Type Utils . replace Annotations ( annotated , Ġtype Annotations . to Typed Array ()) ĊĠĠĠ Ġelse ĊĠĠĠĠĠĠĠ ĠCore Type Utils . annotate ( core Type , Ġtype Annotations . to Typed Array ()) Ġas ĠAnnot ated Wildcard Type ĊĊĠĠĠ Ġoverride Ġval Ġraw : ĠW ildcard Mirror Ġ= Ġraw Ġ?: Ġthis ĊĊĠĠĠ Ġoverride Ġval Ġlower Bounds : ĠList < Type Mirror > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġannotated ?. annotated Lower Bounds ?. map Ġ{ Ġcache . types . reflect ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthis . core Type . lower Bounds . map Ġ{ Ġcache . types . reflect ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Unt ested ĊĠĠĠ Ġoverride Ġval Ġlower Bound : ĠType Mirror ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġlower Bounds . get OrNull ( 0 ) ĊĊĠĠĠ Ġoverride Ġval Ġupper Bounds : ĠList < Type Mirror > Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġannotated ?. annotated Upper Bounds ?. map Ġ{ Ġcache . types . reflect ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthis . core Type . upper Bounds . map Ġ{ Ġcache . types . reflect ( it ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Unt ested ĊĠĠĠ Ġoverride Ġval Ġupper Bound : ĠType Mirror ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġupper Bounds . get OrNull ( 0 ) ĊĊĠĠĠ Ġoverride Ġfun Ġdefault Special ization () Ġ= ĠType Special ization . Wildcard . DEFAULT ĊĊĠĠĠ Ġ@ Unt ested ĊĠĠĠ Ġoverride Ġfun Ġwith Bounds ( upper Bounds : ĠList < Type Mirror > ?, Ġlower Bounds : ĠList < Type Mirror >? ): ĠW ildcard Mirror Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( upper Bounds Ġ!= Ġnull Ġ&& Ġ( upper Bounds . size Ġ!= Ġraw . upper Bounds . size Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġraw . upper Bounds . zip ( upper Bounds ). any Ġ{ Ġ( raw , Ġspecialized ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! raw . isAssignableFrom ( special ized ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInvalid Special ization Exception (" Passed Ġupper Ġbounds Ġ$ upper Bounds Ġare Ġnot Ġassignable Ġto Ġraw Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" upper Ġbounds Ġ${ raw . upper Bounds }") ĊĠĠĠĠĠĠĠ Ġif ( lower Bounds Ġ!= Ġnull Ġ&& Ġ( lower Bounds . size Ġ!= Ġraw . lower Bounds . size Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġraw . lower Bounds . zip ( lower Bounds ). any Ġ{ Ġ( raw , Ġspecialized ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ! raw . isAssignableFrom ( special ized ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInvalid Special ization Exception (" Passed Ġlower Ġbounds Ġ$ lower Bounds Ġare Ġnot Ġassignable Ġto Ġraw Ġ" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" lower Ġbounds Ġ${ raw . lower Bounds }") ĊĠĠĠĠĠĠĠ Ġval Ġnew Special ization Ġ= Ġ( special ization Ġ?: Ġdefault Special ization ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. copy ( upper Bounds Ġ= Ġupper Bounds , Ġlower Bounds Ġ= Ġlower Bounds ) ĊĠĠĠĠĠĠĠ Ġreturn Ġcache . types . special ize ( this , Ġnew Special ization ) Ġas ĠW ildcard Mirror ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġwith Type Annotations ( annotations : ĠList < Annotation >): ĠW ildcard Mirror Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwith Type Annotations Impl ( annotations ) Ġas ĠW ildcard Mirror ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġapply Special ization ( special ization : ĠType Special ization ): ĠType Mirror Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdefault Apply Special ization < Type Special ization . Wildcard >( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġspecial ization , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ{ Ġtrue Ġ} ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠW ildcard Mirror Impl ( cache , Ġcore Type , Ġannotated , Ġraw , Ġit ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġis AssignableFrom ( other : ĠType Mirror ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif ( other Ġ== Ġthis ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġif ( other Ġis ĠW ildcard Mirror ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis . upper Bounds . zip ( other . upper Bounds ). all Ġ{ Ġ( ours , Ġtheir s ) Ġ-> Ġour s . isAssignableFrom ( the irs ) Ġ} Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . lower Bounds . zip ( other . lower Bounds ). all Ġ{ Ġ( ours , Ġtheir s ) Ġ-> Ġour s . isAssignableFrom ( the irs ) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġupper Bounds . all Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . isAssignableFrom ( other ) ĊĠĠĠĠĠĠĠ Ġ} Ġ&& Ġlower Bounds . all Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġother . isAssignableFrom ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Unt ested ĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġto Java String () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Unt ested ĊĠĠĠ Ġoverride Ġfun Ġto Java String (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġstr Ġ= Ġ" ?" ĊĠĠĠĠĠĠĠ Ġif ( upper Bounds . isNotEmpty () Ġ&& Ġupper Bounds Ġ!= ĠlistOf ( cache . types . reflect ( Any :: class . java ))) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġjava Ġspec Ġdoesn 't Ġhave Ġmulti - bounded Ġwild cards , Ġbut Ġwe Ġdon 't Ġwant Ġto Ġthrow Ġaway Ġdata , Ġso Ġjoin Ġto Ġ` Ġ& Ġ` ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr Ġ+= Ġ" Ġextends Ġ${ upper Bounds . join ToString (" Ġ& Ġ") }" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif ( lower Bounds . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġjava Ġspec Ġdoesn 't Ġhave Ġmulti - bounded Ġwild cards , Ġbut Ġwe Ġdon 't Ġwant Ġto Ġthrow Ġaway Ġdata , Ġso Ġjoin Ġto Ġ` Ġ& Ġ` ĊĠĠĠĠĠĠĠĠĠĠĠ Ġstr Ġ+= Ġ" Ġsuper Ġ${ lower Bounds . join ToString (" Ġ& Ġ") }" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġstr ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Unt ested ĊĠĠĠ Ġoverride Ġfun Ġto Kotlin String (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ ĠTODO (" Not Ġyet Ġimplemented ") ĊĠĠĠ Ġ} Ċ } Ċ