/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 9 ĠGoogle ĠLLC Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ */ Ċ Ċ package Ġcom . ul . ims . g mdl . cb or data . generic Ċ Ċ import Ġco . n st ant .` in `. cb or . model .* Ċ import Ġco . n st ant .` in `. cb or . model . Map Ċ import Ġcom . ul . ims . g mdl . cb or data . IC bor Structure Builder Ċ Ċ abstract Ġclass ĠAbstract Cb or Structure Builder Ġ: ĠI Cb or Structure Builder Ġ{ ĊĠĠĠ Ġ// ĠConvert Ġfrom Ġa Ġcb or Ġspecific Ġtype Ġto Ġa Ġkotlin Ġtype ĊĠĠĠ Ġoverride Ġfun Ġfrom Data Item ( data Item : ĠData Item ): ĠAny Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ( data Item . major Type ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMajor Type . UNSIGNED _ INTEGER Ġ-> Ġ( data Item Ġas ĠUnsigned Integer ). value . toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMajor Type . UNICODE _ STRING Ġ-> Ġ( data Item Ġas ĠUnicode String ). string ĊĠĠĠĠĠĠĠĠĠĠĠ ĠMajor Type . BYTE _ STRING Ġ-> Ġ( data Item Ġas ĠByte String ). bytes ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġdata Item ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġas Map ( cb or Data Items Ġ: ĠMutable List < Data Item >, Ġposition : ĠInt ) Ġ: ĠMap Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġoptions Map Ġ= ĠMap () ĊĠĠĠĠĠĠĠ Ġval Ġelement Values Ġ= Ġcb or Data Items . get OrNull ( position ) Ġas ? ĠMap ĊĠĠĠĠĠĠĠ Ġelement Values ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoptions Map Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġoptions Map ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġas String ( cb or Data Items Ġ: ĠMutable List < Data Item >, Ġposition : ĠInt ) Ġ: ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġelement Value Ġ= ĠUnicode String ("") ĊĠĠĠĠĠĠĠ Ġval Ġelement Values Ġ= Ġcb or Data Items . get OrNull ( position ) Ġas ? ĠUnicode String ĊĠĠĠĠĠĠĠ Ġelement Values ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelement Value Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġelement Value . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġas Boolean ( cb or Data Items : ĠMutable List < Data Item >, Ġposition : ĠInt ) Ġ: ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġelement Values Ġ= Ġcb or Data Items . get OrNull ( position ) Ġas ? ĠSimple Value ĊĠĠĠĠĠĠĠ Ġelement Values ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( element Values . simple ValueType ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSimple ValueType . TRUE Ġ-> Ġreturn Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠSimple ValueType . FALSE Ġ-> Ġreturn Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO : ĠCheck Ġif Ġit 's Ġneeded Ġto Ġthrow Ġspecific Ġexception ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠRuntimeException (" Invalid Ġage _ over _ NN ĠIss uer Signed Item .") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġas ByteString ( cb or Data Items : ĠMutable List < Data Item >, Ġposition : ĠInt ) Ġ: ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġbyte String Ġ= ĠByte String ( null ) ĊĠĠĠĠĠĠĠ Ġval Ġbyte Strings Ġ= Ġcb or Data Items . get OrNull ( position ) Ġas ? ĠByte String ĊĠĠĠĠĠĠĠ Ġbyte Strings ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbyte String Ġ= Ġit ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġbyte String . bytes ĊĠĠĠ Ġ} Ċ }