/* Ċ Ġ* ĠCopyright ĠAmazon . com , ĠInc . Ġor Ġits Ġaffiliates . ĠAll ĠRights ĠReserved . Ċ Ġ* ĠSPDX - License - Identifier : ĠApache - 2 . 0 . Ċ Ġ*/ Ċ Ċ package Ġsoftware . amazon . smithy . swift . codegen Ċ Ċ import Ġsoftware . amazon . smithy . codegen . core . Code gen Exception Ċ import Ġsoftware . amazon . smithy . model . node . Node Ċ import Ġsoftware . amazon . smithy . model . shapes . Shape Id Ċ import Ġsoftware . amazon . smithy . model . traits . Abstract Trait Ċ import Ġsoftware . amazon . smithy . model . traits . Abstract Trait Builder Ċ import Ġsoftware . amazon . smithy . utils . Sm ithy Builder Ċ import Ġsoftware . amazon . smithy . utils . To Sm ithy Builder Ċ Ċ /** Ċ Ġ* ĠDefines Ġa Ġshape Ġas Ġbeing Ġa Ġclone Ġof Ġanother Ġmode led Ġshape . Ċ Ġ* Ċ Ġ* ĠMust Ġonly Ġbe Ġused Ġas Ġa Ġruntime Ġtrait - only Ġapplied Ġto Ġshapes Ġbased Ġon Ġmodel Ġprocessing Ċ Ġ*/ Ċ class ĠSynt hetic Clone Ġprivate Ġconstructor ( builder : ĠBuilder ) Ġ: ĠAbstract Trait ( ID , Ġbuilder . source Location ), ĠTo Sm ithy Builder < Synt hetic Clone > Ġ{ ĊĠĠĠ Ġval Ġar che type : ĠShape Id ĊĊĠĠĠ Ġoverride Ġfun Ġcreate Node (): ĠNode Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠCode gen Exception (" at tempted Ġto Ġserialize Ġruntime Ġonly Ġtrait ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġto Builder (): ĠSm ithy Builder < Synt hetic Clone > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġbuilder () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. ar che type ( ar che type ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠBuilder Ġfor Ġ[ Synt hetic Clone ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġclass ĠBuilder Ġ: ĠAbstract Trait Builder < Synt hetic Clone , ĠBuilder >() Ġ{ ĊĠĠĠĠĠĠĠ Ġlateinit Ġvar Ġar che type : ĠShape Id ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġbuild (): ĠSynt hetic Clone Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠSynt hetic Clone ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġfun Ġar che type ( ar che type : ĠShape Id ): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . ar che type Ġ= Ġar che type ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠID Ġ= ĠShape Id . from (" smithy . swift . traits # Synt hetic Clone ") ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠARCH ET YPE Ġ= Ġ" ar che type " ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠReturns Ġa Ġbuilder Ġused Ġto Ġcreate Ġ[ Synt hetic Clone ]. ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġbuilder (): ĠBuilder Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠBuilder () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġar che type Ġ= Ġbuilder . ar che type ĊĠĠĠ Ġ} Ċ } Ċ