/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 ĠAmazon . com , ĠInc . Ġor Ġits Ġaffiliates . Ġ ĠAll Ġrights Ġreserved . Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "). Ċ Ġ* Ġ ĠYou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠA Ġcopy Ġof Ġthe ĠLicense Ġis Ġlocated Ġat : Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// aws . amazon . com / apache 2 . 0 / Ċ Ġ* Ċ Ġ* Ġ Ġor Ġin Ġthe Ġ" license " Ġfile Ġaccompanying Ġthis Ġfile . ĠThis Ġfile Ġ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 Ġorg . part i ql . test framework . test driver Ċ Ċ import Ġcom . amazon . ion .* ĊĊĊ Ċ fun ĠIon Value . interpolate ( variables : ĠIon Struct , Ġ ions : ĠIon System ): ĠIon Value Ġ= ĊĠĠĠ Ġwhen Ġ( this ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠIon Symbol Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsymbol Text Ġ= Ġsymbol Value (). text ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( symbol Text . startsWith ('$ ')) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġvariable Name Ġ= Ġsymbol Text . substring ( 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvariables [ variable Name ] Ġ?: Ġthrow ĠUndefined Variable Interpolation Exception ( variable Name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. clone () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġis ĠIon String Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ ions . new String ( stringValue (). interpolate ( variables , Ġ ions )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġis ĠIon List , Ġis ĠIon S exp Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew List Ġ= Ġif Ġ( type Ġ== ĠIon Type . LIST ) Ġ ions . new Empty List () Ġelse Ġ ions . new Empty S exp () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold List Ġ= Ġthis Ġas ĠIon Container ĊĠĠĠĠĠĠĠĠĠĠĠ Ġold List . forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew List . add ( it . interpolate ( variables , Ġ ions )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew List ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġis ĠIon Struct Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnew Struct Ġ= Ġ ions . new Empty Struct () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠforEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnew Struct . add ( it . fieldName , Ġit . interpolate ( variables , Ġ ions )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnew Struct ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . clone () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ