/* Ċ Ġ* ĠCopyright Ġ 2 0 1 9 Ġ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 Ġandroidx . ui . core . semantics Ċ Ċ import Ġandroidx . ui . core . Unicode Ċ import Ġandroidx . ui . text . Text Selection Ċ import Ġandroidx . ui . text . style . Text Direction Ċ import Ġkotlin . properties . ReadWrite Property Ċ import Ġkotlin . reflect . K Property Ċ Ċ /** Ċ Ġ* ĠDescri bes Ġthe Ġsemantic Ġinformation Ġassociated Ġwith Ġthe Ġow ning Ġcomponent Ċ Ġ* Ċ Ġ* ĠThe Ġinformation Ġprovided Ġin Ġthe Ġconfiguration Ġis Ġused Ġto Ġto Ġgenerate Ġthe Ċ Ġ* Ġsemantics Ġtree . Ċ Ġ*/ Ċ class ĠSem antics Configuration Ġ{ ĊĠĠĠ Ġ// ĠS EM ANT IC ĠBO UND ARY ĠBE HAV IOR ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhether Ġthe Ġowner Ġof Ġthis Ġconfiguration Ġwants Ġto Ġown Ġits ĊĠĠĠĠ Ġ* Ġown Ġ[ Semantics Node ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠWhen Ġset Ġto Ġtrue Ġsemantic Ġinformation Ġassociated Ġwith Ġthe ĊĠĠĠĠ Ġ* Ġowner Ġof Ġthis Ġconfiguration Ġor Ġany Ġof Ġits Ġdesc endants Ġwill Ġnot Ġleak Ġinto ĊĠĠĠĠ Ġ* Ġparents . ĠThe Ġ[ Semantics Node ] Ġgenerated Ġout Ġof Ġthis Ġconfiguration Ġwill ĊĠĠĠĠ Ġ* Ġact Ġas Ġa Ġboundary . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠWhether Ġdesc endants Ġof Ġthe Ġow ning Ġcomponent Ġcan Ġadd Ġtheir Ġsemantic ĊĠĠĠĠ Ġ* Ġinformation Ġto Ġthe Ġ[ Semantics Node ] Ġintroduced Ġby Ġthis Ġconfiguration ĊĠĠĠĠ Ġ* Ġis Ġcontrolled Ġby Ġ[ explicit Child Nodes ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġhas Ġto Ġbe Ġtrue Ġif Ġ[ is Mer ging Semantics Of Desc endants ] Ġis Ġalso Ġtrue . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġis Semantic Boundary : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġassert (! is Mer ging Semantics Of Desc endants Ġ|| Ġvalue ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhether Ġthe Ġconfiguration Ġforces Ġall Ġchildren Ġof Ġthe Ġow ning Ġcomponent ĊĠĠĠĠ Ġ* Ġthat Ġwant Ġto Ġcontribute Ġsemantic Ġinformation Ġto Ġthe Ġsemantics Ġtree Ġto Ġdo ĊĠĠĠĠ Ġ* Ġso Ġin Ġthe Ġform Ġof Ġexplicit Ġ[ Semantics Node ] s . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠWhen Ġset Ġto Ġfalse Ġchildren Ġof Ġthe Ġow ning Ġcomponent Ġare Ġallowed Ġto ĊĠĠĠĠ Ġ* Ġannotate Ġ[ Semantic Node ] s Ġof Ġtheir Ġparent Ġwith Ġthe Ġsemantic Ġinformation ĊĠĠĠĠ Ġ* Ġthey Ġwant Ġto Ġcontribute Ġto Ġthe Ġsemantic Ġtree . ĊĠĠĠĠ Ġ* ĠWhen Ġset Ġto Ġtrue Ġthe Ġonly Ġway Ġfor Ġchildren Ġof Ġthe Ġow ning Ġcomponent ĊĠĠĠĠ Ġ* Ġto Ġcontribute Ġsemantic Ġinformation Ġto Ġthe Ġsemantic Ġtree Ġis Ġto Ġintroduce ĊĠĠĠĠ Ġ* Ġnew Ġexplicit Ġ[ Semantic Node ] s Ġto Ġthe Ġtree . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġsetting Ġis Ġoften Ġused Ġin Ġcombination Ġwith Ġ[ is Semantic Boundary ] Ġto ĊĠĠĠĠ Ġ* Ġcreate Ġsemantic Ġboundaries Ġthat Ġare Ġeither Ġwritable Ġor Ġnot Ġfor Ġchildren . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġexplicit Child Nodes Ġ= Ġfalse ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhether Ġthe Ġow ning Ġcomponent Ġmakes Ġother Ġcomponents Ġpreviously ĊĠĠĠĠ Ġ* Ġpaint ed Ġwithin Ġthe Ġsame Ġsemantic Ġboundary Ġunreachable Ġfor Ġaccessibility ĊĠĠĠĠ Ġ* Ġpurposes . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIf Ġset Ġto Ġtrue , Ġthe Ġsemantic Ġinformation Ġfor Ġall Ġs iblings Ġand Ġco us ins Ġof ĊĠĠĠĠ Ġ* Ġthis Ġnode , Ġthat Ġare Ġearlier Ġin Ġa Ġdepth - first Ġpre - order Ġtraversal , Ġare ĊĠĠĠĠ Ġ* Ġdropped Ġfrom Ġthe Ġsemantics Ġtree Ġup Ġuntil Ġa Ġsemantic Ġboundary Ġ( as Ġdefined ĊĠĠĠĠ Ġ* Ġby Ġ[ is Semantic Boundary ]) Ġis Ġreached . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIf Ġ[ is Semantic Boundary ] Ġand Ġ[ is Blocking Semantics Of Previous ly Paint ed Nodes ] ĊĠĠĠĠ Ġ* Ġis Ġset Ġon Ġthe Ġsame Ġnode , Ġall Ġpreviously Ġpaint ed Ġs iblings Ġand Ġco us ins Ġup ĊĠĠĠĠ Ġ* Ġuntil Ġthe Ġnext Ġancestor Ġthat Ġis Ġa Ġsemantic Ġboundary Ġare Ġdropped . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠPaint Ġorder Ġas Ġestablished Ġby Ġ[ visit Children For Semantics ] Ġis Ġused Ġto ĊĠĠĠĠ Ġ* Ġdetermine Ġif Ġa Ġnode Ġis Ġprevious Ġto Ġthis Ġone . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġis Blocking Semantics Of Previous ly Paint ed Nodes Ġ= Ġfalse ĊĊĠĠĠ Ġ// ĠS EM ANT IC ĠAN NOT ATIONS ĊĠĠĠ Ġ// ĠThese Ġwill Ġend Ġup Ġon Ġ[ Semantic Node ] s Ġgenerated Ġfrom Ġ[ Semantics Configuration ] s . ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhether Ġthis Ġconfiguration Ġis Ġempty . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠAn Ġempty Ġconfiguration Ġdoesn 't Ġcontain Ġany Ġsemantic Ġinformation Ġthat Ġit ĊĠĠĠĠ Ġ* Ġwants Ġto Ġcontribute Ġto Ġthe Ġsemantics Ġtree . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġhas Been Annotated : ĠBoolean Ġ= Ġfalse ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġactions Ġ( with Ġassociated Ġaction Ġhandlers ) Ġthat Ġthis Ġconfiguration ĊĠĠĠĠ Ġ* Ġwould Ġlike Ġto Ġcontribute Ġto Ġthe Ġsemantics Ġtree . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠSee Ġalso : ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ* Ġ[ addAction ] Ġto Ġadd Ġan Ġaction . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġvar Ġ_ actions : ĠMutable Map < Semantics ActionType <* >, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSem antics Action <* >> Ġ= Ġmutable Map Of () ĊĊĠĠĠ Ġvar Ġactions : ĠList < Semantics Action <* >> ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġ_ actions . values . toList () ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO ( ry an ment ley ): ĠThis Ġis Ġna ive , Ġwe Ġcould Ġbe Ġs mar ter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactions As Bits Ġ= Ġ 0 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ_ actions . clear () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( action Ġin Ġvalue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd Action ( action ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġvar Ġactions As Bits : ĠInt Ġ= Ġ 0 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdds Ġan Ġ` action ` Ġto Ġthe Ġsemantics Ġtree . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġprovided Ġ` handler ` Ġis Ġcalled Ġto Ġrespond Ġto Ġthe Ġuser Ġtriggered ĊĠĠĠĠ Ġ* Ġ` action `. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġadd Action ( action : ĠSem antics Action <* >) Ġ{ ĊĠĠĠĠĠĠĠ Ġ_ actions [ action . type ] Ġ= Ġaction ĊĠĠĠĠĠĠĠ Ġactions As Bits Ġ= Ġactions As Bits Ġor Ġaction . type . bit mask ĊĠĠĠĠĠĠĠ Ġhas Been Annotated Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġproperty Ġthat Ġmarks Ġthe Ġconfiguration Ġas Ġhaving Ġbeen Ġannotated ĊĠĠĠĠ Ġ* Ġ( i . e ., Ġcontaining Ġinformation ) ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġclass ĠAnnotation Property < T >( initial Value : ĠT ) Ġ: ĊĠĠĠĠĠĠĠ ĠRead Write Property < Semantics Configuration , ĠT > Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġvar Ġvalue Ġ= Ġinitial Value ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetValue ( this Ref : ĠSem antics Configuration , Ġproperty : ĠK Property < *> ): ĠT Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġvalue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠsetValue ( this Ref : ĠSem antics Configuration , Ġproperty : ĠK Property <* >, Ġvalue : ĠT ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . value Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ref . has Been Annotated Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhether Ġthe Ġsemantic Ġinformation Ġprovided Ġby Ġthe Ġow ning Ġcomponent Ġand ĊĠĠĠĠ Ġ* Ġall Ġof Ġits Ġdesc endants Ġshould Ġbe Ġtreated Ġas Ġone Ġlogical Ġentity . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠIf Ġset Ġto Ġtrue , Ġthe Ġdesc endants Ġof Ġthe Ġow ning Ġcomponent 's ĊĠĠĠĠ Ġ* Ġ[ Semantics Node ] Ġwill Ġmerge Ġtheir Ġsemantic Ġinformation Ġinto Ġthe ĊĠĠĠĠ Ġ* Ġ[ Semantics Node ] Ġrepresenting Ġthe Ġow ning Ġcomponent . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠSetting Ġthis Ġto Ġtrue Ġrequires Ġthat Ġ[ is Semantic Boundary ] Ġis Ġalso Ġtrue . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġis Mer ging Semantics Of Desc endants : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠTODO ( Migration / ry an ment ley ): ĠChanged Ġthis , Ġconfirm Ġit 's Ġcorrect ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġassert ( is Semantic Boundary ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhas Been Annotated Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġlabel : ĠString ? Ġby ĠAnnotation Property ("") ĊĊĠĠĠ Ġvar Ġvalue : ĠString ? Ġby ĠAnnotation Property ("") ĊĊĠĠĠ Ġ// ĠTODO ( ry an ment ley ): ĠAdded Ġin ĠAPI Ġ 2 6 Ġand Ġbackport ed Ġvia Ġandroidx , Ġintegrate Ġthis ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġbrief Ġdescription Ġof Ġthe Ġresult Ġof Ġperforming Ġan Ġaction Ġon Ġthis Ġnode . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠOn ĠiOS Ġthis Ġis Ġused Ġfor Ġthe Ġ` accessibility Hint ` Ġproperty Ġdefined Ġin Ġthe ĊĠĠĠĠ Ġ* Ġ` UI Accessibility ` ĠProtocol . ĠOn ĠAndroid Ġit Ġis Ġconcaten ated Ġtogether Ġwith ĊĠĠĠĠ Ġ* Ġ[ label ] Ġand Ġ[ value ] Ġin Ġthe Ġfollowing Ġorder : Ġ[ value ], Ġ[ label ], Ġ[ hint ]. ĊĠĠĠĠ Ġ* ĠThe Ġconcaten ated Ġvalue Ġis Ġthen Ġused Ġas Ġthe Ġ` Text ` Ġdescription . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġreading Ġdirection Ġis Ġgiven Ġby Ġ[ text Direction ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġhint : ĠString ? Ġby ĠAnnotation Property ("") ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠProvides Ġhint Ġvalues Ġwhich Ġoverride Ġthe Ġdefault Ġhints Ġon Ġsupported ĊĠĠĠĠ Ġ* Ġplatforms . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġhint Overrides : ĠSem antics Hint Overrides ? Ġby ĠAnnotation Property ( null ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhether Ġthe Ġsemantics Ġnode Ġis Ġthe Ġroot Ġof Ġa Ġsubtree Ġfor Ġwhich Ġvalues ĊĠĠĠĠ Ġ* Ġshould Ġbe Ġanno unced . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠSee Ġalso : ĊĠĠĠĠ Ġ* Ġ Ġ* Ġ[ Semantics Flag . Scopes Route ], Ġfor Ġa Ġfull Ġdescription Ġof Ġroute Ġsco ping . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġscopes Route : ĠBoolean Ġby ĠSimple Flag Property ( Semantics Flag . Scopes Route ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhether Ġthe Ġsemantics Ġnode Ġcontains Ġthe Ġlabel Ġof Ġa Ġroute . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠSee Ġalso : ĊĠĠĠĠ Ġ* Ġ Ġ* Ġ[ Semantics Flag . Names Route ], Ġfor Ġa Ġfull Ġdescription Ġof Ġroute Ġnaming . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġnames Route : ĠBoolean Ġby ĠSimple Flag Property ( Semantics Flag . Names Route ) ĊĊĠĠĠ Ġ/** ĠWhether Ġthe Ġsemantics Ġnode Ġrepresents Ġan Ġimage . Ġ*/ ĊĠĠĠ Ġvar Ġis Image : ĠBoolean Ġby ĠSimple Flag Property ( Semantics Flag . Is Image ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhether Ġthe Ġsemantics Ġnode Ġis Ġa Ġlive Ġregion . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠOn ĠAndroid , Ġwhen Ġa Ġlive Ġregion Ġsemantics Ġnode Ġis Ġfirst Ġcreated ĠTalk Back ĊĠĠĠĠ Ġ* Ġwill Ġmake Ġa Ġpol ite Ġanno uncement Ġof Ġthe Ġcurrent Ġlabel . ĠThis Ġanno uncement ĊĠĠĠĠ Ġ* Ġoccurs Ġeven Ġif Ġthe Ġnode Ġis Ġnot Ġfocused . ĠSub sequent Ġpol ite Ġannounce ments ĊĠĠĠĠ Ġ* Ġcan Ġbe Ġmade Ġby Ġsending Ġa Ġ[ Update Live Region Event ] Ġsemantics Ġevent . ĠThe ĊĠĠĠĠ Ġ* Ġanno uncement Ġwill Ġonly Ġbe Ġmade Ġif Ġthe Ġnode 's Ġlabel Ġhas Ġchanged Ġsince Ġthe ĊĠĠĠĠ Ġ* Ġlast Ġupdate . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠAn Ġexample Ġof Ġa Ġlive Ġregion Ġis Ġthe Ġ[ Snackbar ] Ġwidget . ĠWhen Ġit Ġappears ĊĠĠĠĠ Ġ* Ġon Ġthe Ġscreen Ġit Ġmay Ġbe Ġdifficult Ġto Ġfocus Ġto Ġread Ġthe Ġlabel . ĠA Ġlive ĊĠĠĠĠ Ġ* Ġregion Ġcauses Ġan Ġinitial Ġpol ite Ġanno uncement Ġto Ġbe Ġgenerated ĊĠĠĠĠ Ġ* Ġautomatically . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠSee Ġalso : ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠĠ Ġ* Ġ[ Semantics Flag . Is Live Region ], Ġthe Ġsemantics Ġflag Ġthat Ġthis Ġsetting Ġcontrols . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġlive Region : ĠBoolean Ġby ĠSimple Flag Property ( Semantics Flag . Is Live Region ) ĊĊĠĠĠ Ġvar Ġtext Direction : ĠText Direction ? Ġby ĠAnnotation Property ( null ) ĊĊĠĠĠ Ġvar Ġis Selected : ĠBoolean Ġby ĠSimple Flag Property ( ĊĠĠĠĠĠĠĠ ĠSem antics Flag . Is Selected ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġvar Ġis Enabled : ĠBoolean ? ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( has Flag ( Semantics Flag . Has Enabled State )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Flag ( Semantics Flag . IsEnabled ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Flag ( Semantics Flag . Has Enabled State , Ġvalue Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Flag ( Semantics Flag . IsEnabled , Ġvalue Ġ?: Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġis Checked : ĠBoolean ? ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( has Flag ( Semantics Flag . Has Checked State )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Flag ( Semantics Flag . Is Checked ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Flag ( Semantics Flag . Has Checked State , Ġvalue Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Flag ( Semantics Flag . Is Checked , Ġvalue Ġ?: Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIf Ġthis Ġnode Ġhas ĠBoolean Ġstate Ġthat Ġcan Ġbe Ġcontrolled Ġby Ġthe Ġuser , Ġwhether ĊĠĠĠĠ Ġ* Ġthat Ġstate Ġis Ġon Ġor Ġoff , Ġcorresponding Ġto Ġtrue Ġand Ġfalse , Ġrespectively . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠDo Ġnot Ġcall Ġthe Ġsetter Ġfor Ġthis Ġfield Ġif Ġthe Ġow ning Ġcomponent Ġdoesn 't ĊĠĠĠĠ Ġ* Ġhave Ġon / off Ġstate Ġthat Ġcan Ġbe Ġcontrolled Ġby Ġthe Ġuser . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġgetter Ġreturns Ġnull Ġif Ġthe Ġow ning Ġcomponent Ġdoes Ġnot Ġhave ĊĠĠĠĠ Ġ* Ġon / off Ġstate . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġis Toggle d : ĠBoolean ? ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( has Flag ( Semantics Flag . Has Toggle d State )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhas Flag ( Semantics Flag . Is Toggle d ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Flag ( Semantics Flag . Has Toggle d State , Ġvalue Ġ!= Ġnull ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset Flag ( Semantics Flag . Is Toggle d , Ġvalue Ġ?: Ġfalse ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġvar ĠisIn Mut ually Exclusive Group : ĠBoolean ĊĠĠĠĠĠĠĠĠĠĠĠ Ġby ĠSimple Flag Property ( Semantics Flag . IsIn Mut ually Exclusive Group ) ĊĊĠĠĠ Ġ/** ĠWhether Ġthe Ġcomponent Ġrepresented Ġby Ġthis Ġconfiguration Ġcurrently Ġholds Ġthe Ġuser 's Ġfocus . Ġ*/ ĊĠĠĠ Ġvar Ġis Focused : ĠBoolean Ġby ĠSimple Flag Property ( Semantics Flag . Is Focused ) ĊĊĠĠĠ Ġvar Ġis Button : ĠBoolean Ġby ĠSimple Flag Property ( Semantics Flag . Is Button ) ĊĊĠĠĠ Ġ/** ĠWhether Ġthe Ġcomponent Ġrepresented Ġby Ġthis Ġconfiguration Ġis Ġa Ġheader Ġ( true ) Ġor Ġnot Ġ( false ). Ġ*/ ĊĠĠĠ Ġvar Ġis Header : ĠBoolean Ġby ĠSimple Flag Property ( Semantics Flag . Is Header ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhether Ġthe Ġthe Ġcomponent Ġrepresented Ġby Ġthis Ġconfiguration Ġis Ġconsidered Ġhidden . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠHidden Ġelements Ġare Ġcurrently Ġnot Ġvisible Ġon Ġscreen . ĠThey Ġmay Ġbe Ġcovered ĊĠĠĠĠ Ġ* Ġby Ġother Ġelements Ġor Ġposition ed Ġoutside Ġof Ġthe Ġvisible Ġarea Ġof Ġa Ġviewport . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠHidden Ġelements Ġcannot Ġgain Ġaccessibility Ġfocus Ġthough Ġregular Ġtouch . ĠThe ĊĠĠĠĠ Ġ* Ġonly Ġway Ġthey Ġcan Ġbe Ġfocused Ġis Ġby Ġmoving Ġthe Ġfocus Ġto Ġthem Ġvia Ġlinear ĊĠĠĠĠ Ġ* Ġnavigation . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠPlatform s Ġare Ġfree Ġto Ġcompletely Ġignore Ġhidden Ġelements Ġand Ġnew Ġplatforms ĊĠĠĠĠ Ġ* Ġare Ġencour aged Ġto Ġdo Ġso . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠInstead Ġof Ġmarking Ġan Ġelement Ġas Ġhidden Ġit Ġshould Ġusually Ġbe Ġexcluded Ġfrom ĊĠĠĠĠ Ġ* Ġthe Ġsemantics Ġtree Ġal together . ĠHidden Ġelements Ġare Ġonly Ġincluded Ġin Ġthe ĊĠĠĠĠ Ġ* Ġsemantics Ġtree Ġto Ġwork Ġaround Ġplatform Ġlimitations Ġand Ġthey Ġare Ġmainly ĊĠĠĠĠ Ġ* Ġused Ġto Ġimplement Ġaccessibility Ġscrolling Ġon ĠiOS . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġis Hidden : ĠBoolean Ġby ĠSimple Flag Property ( Semantics Flag . Is Hidden ) ĊĊĠĠĠ Ġ/** ĠWhether Ġthe Ġow ning Ġcomponent Ġis Ġa Ġtext Ġfield . Ġ*/ ĊĠĠĠ Ġvar Ġis TextField : ĠBoolean Ġby ĠSimple Flag Property ( Semantics Flag . Is TextField ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhether Ġthe Ġ[ value ] Ġshould Ġbe Ġob sc ured . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġoption Ġis Ġusually Ġset Ġin Ġcombination Ġwith Ġ[ is TextField ] Ġto Ġindicate ĊĠĠĠĠ Ġ* Ġthat Ġthe Ġtext Ġfield Ġcontains Ġa Ġpassword Ġ( or Ġother Ġsensitive Ġinformation ). ĊĠĠĠĠ Ġ* ĠDo ing Ġso Ġin structs Ġscreen Ġreaders Ġto Ġnot Ġread Ġout Ġthe Ġ[ value ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġis Ob sc ured : ĠBoolean Ġby ĠSimple Flag Property ( Semantics Flag . Is Ob sc ured ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhether Ġthe Ġplatform Ġcan Ġscroll Ġthe Ġsemantics Ġnode Ġwhen Ġthe Ġuser Ġattempts ĊĠĠĠĠ Ġ* Ġto Ġmove Ġfocus Ġto Ġan Ġoff screen Ġchild . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠFor Ġexample , Ġa Ġ[ ListView ] Ġwidget Ġhas Ġimplicit Ġscrolling Ġso Ġthat Ġusers Ġcan ĊĠĠĠĠ Ġ* Ġeasily Ġmove Ġto Ġthe Ġnext Ġvisible Ġset Ġof Ġchildren . ĠA Ġ[ TabBar ] Ġwidget Ġdoes ĊĠĠĠĠ Ġ* Ġnot Ġhave Ġimplicit Ġscrolling , Ġso Ġthat Ġusers Ġcan Ġnavigate Ġinto Ġthe Ġtab ĊĠĠĠĠ Ġ* Ġbody Ġwhen Ġre aching Ġthe Ġend Ġof Ġthe Ġtab Ġbar . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġhas Implicit Scrolling : ĠBoolean Ġby ĠSimple Flag Property ( Semantics Flag . Has Implicit Scrolling ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġcurrently Ġselected Ġtext Ġ( or Ġthe Ġposition Ġof Ġthe Ġcursor ) Ġwithin Ġ[ value ] ĊĠĠĠĠ Ġ* Ġif Ġthis Ġnode Ġrepresents Ġa Ġtext Ġfield . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġtext Selection : ĠText Selection ? Ġby ĠAnnotation Property ( null ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIndicates Ġthe Ġcurrent Ġscrolling Ġposition Ġin Ġlogical Ġpixels Ġif Ġthe Ġnode Ġis ĊĠĠĠĠ Ġ* Ġscroll able . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġproperties Ġ[ scroll Extent Min ] Ġand Ġ[ scroll Extent Max ] Ġindicate Ġthe Ġvalid ĊĠĠĠĠ Ġ* Ġin - range Ġvalues Ġfor Ġthis Ġproperty . ĠThe Ġvalue Ġfor Ġ[ scroll Position ] Ġmay ĊĠĠĠĠ Ġ* Ġ( temp or arily ) Ġbe Ġoutside Ġthat Ġrange , Ġe . g . Ġduring Ġan Ġover scroll . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠSee Ġalso : ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ* Ġ[ Scroll Position . pixels ], Ġfrom Ġwhere Ġthis Ġvalue Ġis Ġusually Ġtaken . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġscroll Position : ĠFloat ? Ġby ĠAnnotation Property ( null ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIndicates Ġthe Ġmaximum Ġin - range Ġvalue Ġfor Ġ[ scroll Position ] Ġif Ġthe Ġnode Ġis ĊĠĠĠĠ Ġ* Ġscroll able . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġvalue Ġmay Ġbe Ġinfinity Ġif Ġthe Ġscroll Ġis Ġun bound . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠSee Ġalso : ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ* Ġ[ Scroll Position . max Scroll Extent ], Ġfrom Ġwhere Ġthis Ġvalue Ġis Ġusually Ġtaken . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġscroll Extent Max : ĠFloat ? Ġby ĠAnnotation Property ( null ) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠIndicates Ġthe Ġminimum Ġin - range Ġvalue Ġfor Ġ[ scroll Position ] Ġif Ġthe Ġnode Ġis ĊĠĠĠĠ Ġ* Ġscroll able . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġvalue Ġmay Ġbe Ġinfinity Ġif Ġthe Ġscroll Ġis Ġun bound . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠSee Ġalso : ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ Ġ* Ġ[ Scroll Position . min Scroll Extent ], Ġfrom Ġwhere Ġthis Ġvalue Ġis Ġusually Ġtaken . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġscroll Extent Min : ĠFloat ? Ġby ĠAnnotation Property ( null ) ĊĊĠĠĠ Ġvar Ġtest Tag : ĠString ? Ġby ĠAnnotation Property ( null ) ĊĊĠĠĠ Ġ// ĠINTERNAL ĠFLAG ĠMAN AGE MENT ĊĊĠĠĠ Ġprivate Ġvar Ġflags Ġ= Ġ 0 ĊĊĠĠĠ Ġprivate Ġfun Ġset Flag ( flag : ĠSem antics Flag , Ġvalue : ĠBoolean ) Ġ{ ĊĠĠĠĠĠĠĠ Ġflags Ġ= Ġif Ġ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflags Ġor Ġflag . bit mask ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġflags Ġand Ġflag . bit mask . inv () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġhas Been Annotated Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhas Flag ( flag : ĠSem antics Flag ): ĠBoolean Ġ= Ġ( flags Ġand Ġflag . bit mask ) Ġ!= Ġ 0 ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġproperty Ġthat Ġprovides Ġan Ġabstraction Ġover Ġ[ set Flag ] Ġand Ġ[ has Flag ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġclass ĠSimple Flag Property ( ĊĠĠĠĠĠĠĠ Ġval Ġflag : ĠSem antics Flag ĊĠĠĠ Ġ) Ġ: ĠRead Write Property < Semantics Configuration , ĠBoolean > Ġ{ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetValue ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ref : ĠSem antics Configuration , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperty : ĠK Property < *> ĊĠĠĠĠĠĠĠ Ġ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis Ref . has Flag ( flag ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠsetValue ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ref : ĠSem antics Configuration , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġproperty : ĠK Property <* >, ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue : ĠBoolean ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Ref . set Flag ( flag , Ġvalue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠCONFIG URATION ĠCOMB INATION ĠLOG IC ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhether Ġthis Ġconfiguration Ġis Ġcompatible Ġwith Ġthe Ġprovided Ġ` other ` Ġconfiguration . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠTwo Ġconfigurations Ġare Ġsaid Ġto Ġbe Ġcompatible Ġif Ġthey Ġcan Ġbe Ġadded Ġto Ġthe Ġsame Ġ[ Semantics Node ] ĊĠĠĠĠ Ġ* Ġwithout Ġlo sing Ġany Ġsemantics Ġinformation . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġis Compatible With ( other : ĠSem antics Configuration ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġ== Ġnull Ġ|| Ġ! other . has Been Annotated Ġ|| Ġ! has Been Annotated ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( actions As Bits Ġand Ġother . actions As Bits Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(( flags Ġand Ġother . flags ) Ġ!= Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ(! value . isNull OrEmpty () Ġ&& Ġ! value . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAb sor b Ġthe Ġsemantic Ġinformation Ġfrom Ġ` other ` Ġinto Ġthis Ġconfiguration . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġadds Ġthe Ġsemantic Ġinformation Ġof Ġboth Ġconfigurations Ġand Ġsaves Ġthe Ġresult Ġin Ġthis ĊĠĠĠĠ Ġ* Ġconfiguration . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠOnly Ġconfigurations Ġthat Ġhave Ġ[ explicit Child Nodes ] Ġset Ġto Ġfalse Ġcan Ġabsor b Ġother ĊĠĠĠĠ Ġ* Ġconfigurations . Ġ ĠThe Ġ[ other ] Ġconfiguration Ġmust Ġbe Ġcompatible Ġas Ġdetermined Ġby ĊĠĠĠĠ Ġ* Ġ[ is Compatible With ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġfun Ġabsor b ( other : ĠSem antics Configuration ) Ġ{ ĊĠĠĠĠĠĠĠ Ġassert (! explicit Child Nodes ) ĊĠĠĠĠĠĠĠ Ġassert ( is Compatible With (( other ))) ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! other . has Been Annotated ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ_ actions . put All ( other ._ actions ) ĊĠĠĠĠĠĠĠ Ġactions As Bits Ġ= Ġactions As Bits Ġor Ġother . actions As Bits ĊĠĠĠĠĠĠĠ Ġflags Ġ= Ġflags Ġor Ġother . flags ĊĊĠĠĠĠĠĠĠ Ġtext Selection Ġ= Ġtext Selection Ġ?: Ġother . text Selection ĊĠĠĠĠĠĠĠ Ġscroll Position Ġ= Ġscroll Position Ġ?: Ġother . scroll Position ĊĠĠĠĠĠĠĠ Ġscroll Extent Max Ġ= Ġscroll Extent Max Ġ?: Ġother . scroll Extent Max ĊĠĠĠĠĠĠĠ Ġscroll Extent Min Ġ= Ġscroll Extent Min Ġ?: Ġother . scroll Extent Min ĊĠĠĠĠĠĠĠ Ġhint Overrides Ġ= Ġhint Overrides Ġ?: Ġother . hint Overrides ĊĊĠĠĠĠĠĠĠ Ġtext Direction Ġ= Ġtext Direction Ġ?: Ġother . text Direction ĊĊĠĠĠĠĠĠĠ Ġlabel Ġ= Ġconcat Strings ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis String Ġ= Ġlabel , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Text Direction Ġ= Ġtext Direction , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġother String Ġ= Ġother . label , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġother Text Direction Ġ= Ġother . text Direction ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġif Ġ( value . isNull OrEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvalue Ġ= Ġother . value ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġhint Ġ= Ġconcat Strings ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis String Ġ= Ġhint , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis Text Direction Ġ= Ġtext Direction , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġother String Ġ= Ġother . hint , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġother Text Direction Ġ= Ġother . text Direction ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġhas Been Annotated Ġ= Ġhas Been Annotated Ġor Ġother . has Been Annotated ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĠReturns Ġan Ġexact Ġcopy Ġof Ġthis Ġconfiguration . Ġ*/ ĊĠĠĠ Ġfun Ġcopy (): ĠSem antics Configuration Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcopy Ġ= ĠSem antics Configuration () ĊĠĠĠĠĠĠĠ Ġcopy . is Semantic Boundary Ġ= Ġis Semantic Boundary ĊĠĠĠĠĠĠĠ Ġcopy . explicit Child Nodes Ġ= Ġexplicit Child Nodes ĊĠĠĠĠĠĠĠ Ġcopy . is Blocking Semantics Of Previous ly Paint ed Nodes Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Blocking Semantics Of Previous ly Paint ed Nodes ĊĠĠĠĠĠĠĠ Ġcopy . is Mer ging Semantics Of Desc endants Ġ= Ġis Mer ging Semantics Of Desc endants ĊĠĠĠĠĠĠĠ Ġcopy . text Direction Ġ= Ġtext Direction ĊĠĠĠĠĠĠĠ Ġcopy . label Ġ= Ġlabel ĊĠĠĠĠĠĠĠ Ġcopy . value Ġ= Ġvalue ĊĠĠĠĠĠĠĠ Ġcopy . hint Ġ= Ġhint ĊĠĠĠĠĠĠĠ Ġcopy . hint Overrides Ġ= Ġhint Overrides ĊĠĠĠĠĠĠĠ Ġcopy . flags Ġ= Ġflags ĊĠĠĠĠĠĠĠ Ġcopy . text Selection Ġ= Ġtext Selection ĊĠĠĠĠĠĠĠ Ġcopy . scroll Position Ġ= Ġscroll Position ĊĠĠĠĠĠĠĠ Ġcopy . scroll Extent Max Ġ= Ġscroll Extent Max ĊĠĠĠĠĠĠĠ Ġcopy . scroll Extent Min Ġ= Ġscroll Extent Min ĊĠĠĠĠĠĠĠ Ġcopy . actions As Bits Ġ= Ġactions As Bits ĊĠĠĠĠĠĠĠ Ġcopy ._ actions . put All (_ actions ) ĊĠĠĠĠĠĠĠ Ġ// ĠDo Ġthis Ġlast Ġso Ġit 's Ġnot Ġoverwritten Ġby Ġsetting Ġthe Ġother Ġproperties ĊĠĠĠĠĠĠĠ Ġcopy . has Been Annotated Ġ= Ġhas Been Annotated ĊĠĠĠĠĠĠĠ Ġreturn Ġcopy ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠChecks Ġthat Ġall Ġproperties Ġare Ġthe Ġsame Ġand Ġthat Ġthe Ġset Ġof Ġactions Ġ( though Ġnot Ġnecessarily ĊĠĠĠĠ Ġ* Ġthe Ġexact Ġfunctions Ġimplementing Ġthem ) Ġare Ġthe Ġsame ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinternal Ġfun Ġis Semantic ally Different From ( other : ĠSem antics Configuration ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġthis . label Ġ!= Ġother . label Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . hint Ġ!= Ġother . hint Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . value Ġ!= Ġother . value Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . flags Ġ!= Ġother . flags Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . text Direction Ġ!= Ġother . text Direction Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . text Selection Ġ!= Ġother . text Selection Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . scroll Position Ġ!= Ġother . scroll Position Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . scroll Extent Max Ġ!= Ġother . scroll Extent Max Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . scroll Extent Min Ġ!= Ġother . scroll Extent Min Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . actions As Bits Ġ!= Ġother . actions As Bits ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġfun Ġupdate With ( source Config : ĠSem antics Configuration ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . label Ġ= Ġsource Config . label ĊĠĠĠĠĠĠĠ Ġthis . value Ġ= Ġsource Config . value ĊĠĠĠĠĠĠĠ Ġthis . hint Ġ= Ġsource Config . hint ĊĠĠĠĠĠĠĠ Ġthis . flags Ġ= Ġsource Config . flags ĊĠĠĠĠĠĠĠ Ġthis . text Direction Ġ= Ġsource Config . text Direction ĊĠĠĠĠĠĠĠ Ġthis ._ actions Ġ= Ġsource Config ._ actions ĊĠĠĠĠĠĠĠ Ġthis . actions As Bits Ġ= Ġsource Config . actions As Bits ĊĠĠĠĠĠĠĠ Ġthis . text Selection Ġ= Ġsource Config . text Selection ĊĠĠĠĠĠĠĠ Ġthis . scroll Position Ġ= Ġsource Config . scroll Position ĊĠĠĠĠĠĠĠ Ġthis . scroll Extent Max Ġ= Ġsource Config . scroll Extent Max ĊĠĠĠĠĠĠĠ Ġthis . scroll Extent Min Ġ= Ġsource Config . scroll Extent Min ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun Ġconcat Strings ( ĊĠĠĠ Ġthis String : ĠString ?, ĊĠĠĠ Ġother String : ĠString ?, ĊĠĠĠ Ġthis Text Direction : ĠText Direction ?, ĊĠĠĠ Ġother Text Direction : ĠText Direction ? Ċ ): ĠString ? Ġ{ ĊĠĠĠ Ġif Ġ( other String . isNull OrEmpty ()) ĊĠĠĠĠĠĠĠ Ġreturn Ġthis String ĊĠĠĠ Ġvar Ġnested Label Ġ= Ġother String ĊĠĠĠ Ġif Ġ( this Text Direction Ġ!= Ġother Text Direction Ġ&& Ġother Text Direction Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġnested Label Ġ= Ġwhen Ġ( other Text Direction ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText Direction . R tl Ġ-> Ġ"${ Unicode . R LE }$ nested Label ${ Unicode . PDF }" ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText Direction . L tr Ġ-> Ġ"${ Unicode . L RE }$ nested Label ${ Unicode . PDF }" ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ( this String . isNull OrEmpty ()) ĊĠĠĠĠĠĠĠ Ġreturn Ġnested Label ĊĠĠĠ Ġreturn Ġ"$ this String \ n $ nested Label " Ċ }