package Ġorg . sp oof ax . te go . ater m Ċ Ċ /** Ċ Ġ* ĠAn Ġannotations Ġattachment . Ċ Ġ*/ Ċ class ĠAn notations ( ĊĠĠĠ Ġprivate Ġval Ġannotations : ĠList < Term > Ċ ) Ġ: ĠAttachment , ĠAbstract List < Term >() Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠAn Ġempty Ġannotations Ġattachment . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġempty (): ĠAn notations Ġ= ĠAn notations ( emptyList ()) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCreates Ġa Ġnew Ġannotations Ġattachment Ġwith Ġthe Ġspecified Ġannotation Ġterms . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġannotations Ġthe Ġannotations Ġto Ġinclude ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġthe Ġbuilt Ġannotations ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġof ( var arg Ġannotations : ĠTerm ): ĠAn notations Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠAn notations ( annotations . toList ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGets Ġthe Ġannotations Ġattachment Ġfor Ġthe Ġspecified Ġterm . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġthe Ġannotations Ġattachment ; Ġor Ġan Ġempty Ġannotations Ġattachment Ġif Ġit 's Ġnot Ġfound ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġget ( term : ĠTerm ): ĠAn notations Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġterm . attachments . get ( Annotations :: class . java ) Ġ?: Ġempty () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġsize : ĠInt Ġget () Ġ= Ġannotations . size ĊĊĠĠĠ Ġoverride Ġfun Ġget ( index : ĠInt ): ĠTerm Ġ= Ġannotations [ index ] ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGets Ġthe Ġfirst Ġconstructor Ġapplication Ġterm Ġwith Ġthe Ġspecified Ġconstructor Ġand Ġar ity . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġconstructor Ġthe Ġconstructor Ġname ; Ġor Ġ` null ` ĊĠĠĠĠ Ġ* Ġ@ param Ġar ity Ġthe Ġar ity ; Ġor Ġ- 1 ĊĠĠĠĠ Ġ* Ġ@ return Ġthe Ġconstructor Ġapplication Ġterm , Ġif Ġfound ; Ġotherwise , Ġ` null ` ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoperator Ġfun Ġget ( constructor : ĠString ?, Ġar ity : ĠInt Ġ= Ġ- 1 ): ĠAp pl Term ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġannotations . filter Is Instance < Ap pl Term >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. first OrNull Ġ{ Ġ( constructor Ġ== Ġnull Ġ|| Ġit . constructor Ġ== Ġconstructor ) Ġ&& Ġ( arity Ġ< Ġ 0 Ġ|| Ġit . arity Ġ== Ġar ity ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġannotations . join ToString (", Ġ", Ġ"{ ", Ġ" }") ĊĠĠĠ Ġ} Ċ Ċ } Ċ data Ġclass ĠAn notations 2 ( ĊĠĠĠ Ġval Ġannotations : ĠList < Term > Ċ ) Ġ: ĠAttachment Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠAn Ġempty Ġannotations Ġattachment . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġempty (): ĠAn notations Ġ= ĠAn notations ( emptyList ()) ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠCreates Ġa Ġnew Ġannotations Ġattachment Ġwith Ġthe Ġspecified Ġannotation Ġterms . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġannotations Ġthe Ġannotations Ġto Ġinclude ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġthe Ġbuilt Ġannotations ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġof ( var arg Ġannotations : ĠTerm ): ĠAn notations Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠAn notations ( annotations . toList ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠGets Ġthe Ġannotations Ġattachment Ġfor Ġthe Ġspecified Ġterm . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġthe Ġannotations Ġattachment ; Ġor Ġan Ġempty Ġannotations Ġattachment Ġif Ġit 's Ġnot Ġfound ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġget ( term : ĠTerm ): ĠAn notations Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġterm . attachments . get ( Annotations :: class . java ) Ġ?: Ġempty () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval ĠisEmpty : ĠBoolean Ġget () Ġ= Ġannotations . isEmpty () ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġannotations . join ToString (", Ġ", Ġ"{ ", Ġ" }") ĊĠĠĠ Ġ} Ċ Ċ }