package Ġu y . ko hes ive . iac . model . aws Ċ Ċ import Ġcom . amazonaws . Amazon WebService Request Ċ import Ġjava . util .* Ċ Ċ interface ĠKo hes ive Ident ifiable Ġ{ ĊĊĠĠĠ Ġval Ġobjects To Names : ĠIdentity HashMap < Any , ĠString > ĊĊĠĠĠ Ġfun ĠgetName ( obj : ĠAny ) Ġ= Ġobjects To Names [ obj ] ĊĠĠĠ Ġfun ĠgetName Strict ( obj : ĠAny ) Ġ= Ġobjects To Names [ obj ] Ġ?: Ġthrow ĠIllegalStateException (" Unknown Ġobject Ġ$ obj ") ĊĊĠĠĠ Ġfun Ġ< T Ġ: ĠAny > ĠT . register WithName ( name : ĠString ): ĠT Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠ Ġobjects To Names [ this @ register WithName ] Ġ= Ġname ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< T Ġ: ĠAny > ĠT . register With Same Name As ( another : ĠAny ): ĠT Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠ Ġobjects To Names [ this @ register With Same Name As ] Ġ= ĠgetName Strict ( another ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġ< T Ġ: ĠAmazon WebService Request > ĠT . register With Auto Name (): ĠT Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠ Ġregister WithName ( Auto Naming . getName ( this ) Ġ?: Ġthrow ĠIllegalArgumentException (" Unknown Ġrequest ")) ĊĠĠĠ Ġ} Ċ Ċ } Ċ Ċ interface ĠTag Aware < out ĠT Ġ: ĠAny > Ġ{ ĊĠĠĠ Ġfun Ġcreate Tag ( key : ĠString , Ġvalue : ĠString ): ĠT ĊĠĠĠ Ġfun Ġtags ( var arg Ġkeys To Values : ĠPair < String , ĠString >): ĠList < T > Ġ= ĊĠĠĠĠĠĠĠ Ġkeys To Values . map Ġ{ Ġcreate Tag ( it . first , Ġit . second ) Ġ} Ċ }