package Ġio . app ium . espress oser ver . lib . model Ċ Ċ import Ġcom . google . gson .* Ċ import Ġcom . google . gson . annotations . Json Adapter Ċ import Ġio . app ium . espress oser ver . lib . handlers . exceptions . App ium Exception Ċ import Ġio . app ium . espress oser ver . lib . handlers . exceptions . Invalid Selector Exception Ċ import Ġjava . lang . reflect . Type Ċ import Ġorg . hamcrest . Matcher Ċ Ċ fun ĠString . toJson Matcher (): ĠMatcher Json Ġ{ ĊĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠGson (). fromJson ( this , ĠMatcher Json :: class . java ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠApp ium Exception ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠInvalid Selector Exception ( String . format (" Not Ġa Ġvalid Ġselector Ġ'% s '. ĠReason : Ġ'% s '", Ġthis , Ġe . cause ), Ġe ) ĊĠĠĠ Ġ} Ġcatch Ġ( e : ĠJson ParseException ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠInvalid Selector Exception ( String . format (" Could Ġnot Ġparse Ġselector Ġ'% s '. ĠReason : Ġ'% s '", Ġthis , Ġe . cause ), Ġe ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ @ Json Adapter ( Matcher Json Deserializer :: class ) Ċ data Ġclass ĠMatcher Json ( val Ġmatcher : ĠMatcher <* >) Ġ: ĠApp ium Params () Ċ Ċ class ĠMatcher Json Deserializer Ġ: ĠJson Deserializer < Matcher Json > Ġ{ ĊĠĠĠ Ġ@ Throws ( Json ParseException :: class ) ĊĠĠĠ Ġoverride Ġfun Ġdeserialize ( json : ĠJson Element , Ġparam Type : ĠType ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġparam Json Deserialization Context : ĠJson Deserialization Context ?): ĠMatcher Json Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! json . is JsonObject ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠJson ParseException (" Matcher Ġmust Ġbe Ġan Ġobject . ĠFound Ġ'${ json }' ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġmatcher Ġ= ĠH am crest Matcher . Ham crest Matcher Deserializer () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. deserialize ( json , Ġnull , Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. invoke () ĊĊĠĠĠĠĠĠĠ Ġreturn ĠMatcher Json ( matcher ) ĊĠĠĠ Ġ} Ċ }