package Ġai . flow storm . core . type Ċ Ċ class ĠAttributes Ġ: ĠLinkedHashMap < String , ĠAttributes . Namespace >() Ġ{ ĊĊĠĠĠ Ġclass ĠNamespace Ġ: ĠLinkedHashMap < String , ĠMem orable >() Ġ{ ĊĠĠĠĠĠĠĠ Ġfun Ġset ( key : ĠString , Ġvalue : ĠAny ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( containsKey ( key ) Ġ&& Ġget ( key ) Ġis ĠMemory <* >) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ( get ( key ) !! Ġas ĠMemory < Any >). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(_ type Ġ!= Ġvalue :: class . simple Name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġerror (" Attribute Ġ$ key Ġtype Ġcannot Ġbe Ġchanged Ġfrom Ġ$_ type Ġto Ġ${ value :: class . simple Name }") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis . value Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġput ( key , Ġif Ġ( value Ġis ĠMem orable ) Ġvalue Ġelse ĠMemory ( value )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġoperator Ġfun Ġget ( key : ĠString ): ĠNamespace Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! containsKey ( key )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput ( key , ĠNamespace ()) ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . get ( key ) !! ĊĠĠĠ Ġ} Ċ }