/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 7 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* Ġ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 Ġio . mock k . proxy . android . transformation Ċ Ċ import Ġio . mock k . proxy . Mock K Agent Exception Ċ import Ġio . mock k . proxy . common . transformation . Class Transformation Spec Map Ċ import Ġjava . util .* Ċ Ċ internal Ġclass ĠIn lining Class Transformer ( ĊĠĠĠ Ġprivate Ġval Ġspec Map : ĠClass Transformation Spec Map Ċ ) Ġ{ ĊĠĠĠ Ġval Ġidentifier Ġ= Ġnew Id () ĊĊĠĠĠ Ġ@ Suppress (" unused ") Ġ// ĠJNI Ġcall ĊĠĠĠ Ġfun Ġtransform ( class Being Re defined : ĠClass < *> ?, Ġclass file Buffer : ĠByteArray ): ĠByteArray ? Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( class Being Re defined Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġclass file Buffer ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġspec Ġ= Ġspec Map [ class Being Re defined ] ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġreturn Ġclass file Buffer ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsynchronized ( lock ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnative Re define ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġidentifier , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass file Buffer , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspec . should Do Simple Intercept , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspec . should Do Static Intercept , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġspec . should Do Constructor Intercept ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠMock K Agent Exception (" Transformation Ġissue ", Ġex ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshould Transform ( class Being Re defined : ĠClass <* >) Ġ= Ġspec Map . should Transform ( class Being Re defined ) ĊĊĠĠĠ Ġprivate Ġexternal Ġfun Ġnative Re define ( ĊĠĠĠĠĠĠĠ Ġidentifier : ĠString , ĊĠĠĠĠĠĠĠ Ġoriginal : ĠByteArray , ĊĠĠĠĠĠĠĠ Ġmock k : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġstatic Mock k : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġconstructor Mock k : ĠBoolean ĊĠĠĠ Ġ): ĠByteArray ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġlock Ġ= ĠAny () ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġrng Ġ= ĠRandom () ĊĠĠĠĠĠĠĠ Ġprivate Ġfun Ġnew Id () Ġ= ĠMath . abs ( rng . next Long ()). toString ( 1 6 ) ĊĠĠĠ Ġ} Ċ } Ċ