package Ġcom . uit est core . driver utils Ċ Ċ import Ġcom . uit est core . containers . Abstract Container Ċ import Ġcom . uit est core . containers . Container Ċ import Ġcom . uit est core . containers . Default Container Factory Ċ import Ġcom . uit est core . element objects . Element Ċ import Ġcom . uit est core . impl . Default Element Factory Ċ import Ġorg . openqa . selenium . WebElement Ċ import Ġorg . openqa . selenium . support . Page Factory Ċ import Ġkotlin . reflect . K Class Ċ import Ġkotlin . reflect . full . is Subclass Of Ċ Ċ @ Suppress (" UN CHECK ED _ CAST ") Ċ class ĠWeb Element Decorator Ġ{ ĊĠĠĠ Ġprivate Ġval Ġelement Factory Ġ= ĠDefault Element Factory () ĊĠĠĠ Ġprivate Ġval Ġcontainer Factory Ġ= ĠDefault Container Factory () ĊĊĠĠĠ Ġfun Ġ< T Ġ: ĠAny > Ġdecor ate ( clazz : ĠK Class < T >, Ġwrapped Element : ĠWeb Element ): ĠT Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( clazz . is Subclass Of ( Abstract Container :: class )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdecor ate Container ( clazz , Ġwrapped Element ) Ġas ĠT ĊĠĠĠĠĠĠĠ Ġelse Ġif Ġ( clazz . is Subclass Of ( Element :: class )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġelement Factory . create ( clazz . java Ġas ĠClass < out ĠElement >, Ġwrapped Element ) Ġas ĠT ĊĠĠĠĠĠĠĠ Ġelse Ġthrow ĠException (" Cannot Ġfind Ġelement ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< T Ġ: ĠAny > Ġdecor ate ( clazz : ĠK Class < T >, Ġwrapped Element : ĠList < WebElement >): ĠList < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġdecor ate List ( clazz , Ġwrapped Element ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ< T Ġ: ĠAny > Ġdecor ate Container ( clazz : ĠK Class < T >, Ġwrapped Element : ĠWeb Element ): ĠAny Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontainer Ġ= Ġcontainer Factory . create ( clazz . java Ġas ĠClass < out ĠContainer >, Ġwrapped Element ) ĊĊĠĠĠĠĠĠĠ ĠPage Factory . init Elements ( Extended Field Decorator ( wrapped Element ), Ġcontainer ) ĊĠĠĠĠĠĠĠ Ġcontainer . init ( wrapped Element ) ĊĠĠĠĠĠĠĠ Ġreturn Ġcontainer ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġ< T Ġ: ĠAny > Ġdecor ate List ( clazz : ĠK Class < T >, Ġwrapped Element List : ĠList < WebElement >): ĠList < T > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( clazz . is Subclass Of ( Abstract Container :: class )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreturn List Ġ= Ġmutable ListOf < Any >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( wrapped Element Ġin Ġwrapped Element List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcontainer Ġ= Ġcontainer Factory . create ( clazz . java Ġas ĠClass < out ĠContainer >, Ġwrapped Element ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn List . add ( container ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠPage Factory . init Elements ( Extended Field Decorator ( wrapped Element ), Ġcontainer ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer . init ( wrapped Element ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġreturn List . toList () Ġas ĠList < T > ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( clazz . is Subclass Of ( Element :: class )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġreturn List Ġ= Ġmutable ListOf < T >() ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( wrapped Element Ġin Ġwrapped Element List ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġelement Ġ= Ġelement Factory . create ( clazz . java Ġas ĠClass < out ĠElement >, Ġwrapped Element ) Ġas ĠT ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn List . add ( element ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġreturn List . toList () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthrow ĠException (" Cannot Ġfind Ġlist Ġof Ġelements ") ĊĠĠĠ Ġ} Ċ } Ċ