package Ġcom . sab gil . saf eb undle Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Context Ċ Ċ interface ĠContext Based Cre atable Ġ: ĠCre atable Ċ Ċ interface ĠActivity Based Cre atable Ġ: ĠCre atable Ċ Ċ interface ĠCre atable Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠCre atable > Ġparse To Impl Class (): ĠClass < *> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠpackageName Ġ= ĠT :: class . java .` package ` ?. name ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġpackage LastName Ġ= ĠpackageName ?. split (".") ?. last () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠfullName Ġ= ĠT :: class . java . canonical Name ?. split (".") Ġ?: Ġempty List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠindexOf FullName Ġ= Ġif Ġ( package LastName Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfullName . indexOf ( package LastName ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsimple Name Ġ= Ġif Ġ( indexOf FullName Ġ!= Ġ- 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfullName . sub List ( indexOf FullName Ġ+ Ġ 1 , ĠfullName . size ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : Ġadd Ġerror Ġreport ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval ĠstringBuilder Ġ= ĠStringBuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( packageName Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstringBuilder . append ( packageName ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠstringBuilder . append (".") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstringBuilder . append ( simple Name . join ToString ("_ ")) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠstringBuilder . append ("_ Safe Bundle Impl ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠClass . forName ( string Builder . toString ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠContext Based Cre atable > ĠContext . create () Ġ= ĊĠĠĠ ĠCre atable . parse To Impl Class < T >() ĊĠĠĠĠĠĠĠ Ġ. getDeclared Constructor ( Context :: class . java ) ĊĠĠĠĠĠĠĠ Ġ. newInstance ( this ) Ġas ĠT Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠActivity Based Cre atable > ĠActivity . create () Ġ= ĊĠĠĠ ĠCre atable . parse To Impl Class < T >() ĊĠĠĠĠĠĠĠ Ġ. getDeclared Constructor ( Activity :: class . java ) ĊĠĠĠĠĠĠĠ Ġ. newInstance ( this ) Ġas ĠT Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠCre atable > Ġcreate () Ġ= ĊĠĠĠ ĠCre atable . parse To Impl Class < T >() ĊĠĠĠĠĠĠĠ Ġ. newInstance () Ġas ĠT