package Ġde . jos hu agle it ze . transformation network . met ame tam odel Ċ Ċ interface ĠModel Ġ{ ĊĠĠĠ Ġval Ġmet amodel : ĠMet amodel ĊĠĠĠ Ġval Ġname : ĠString ĊĠĠĠ Ġval Ġobjects : ĠSet < Any Model Object > ĊĠĠĠ Ġval Ġidentity : ĠModel Identity ĊĊĠĠĠ Ġfun Ġadd Object ( model Object : ĠAny Model Object ): ĠModel Ġ= Ġapply Ġ{ Ġplus Assign ( model Object ) Ġ} ĊĠĠĠ Ġfun Ġremove Object ( model Object : ĠAny Model Object ): ĠModel Ġ= Ġapply Ġ{ Ġminus Assign ( model Object ) Ġ} ĊĠĠĠ Ġoperator Ġfun Ġplus Assign ( model Object : ĠAny Model Object ) ĊĠĠĠ Ġoperator Ġfun Ġminus Assign ( model Object : ĠAny Model Object ) Ġ= Ġminus Assign ( model Object . identity ) ĊĠĠĠ Ġoperator Ġfun Ġminus Assign ( model Object : ĠAny Model Object Identity ) ĊĠĠĠ Ġfun Ġcontains Object ( identifier : ĠAny Model Object Identifier ): ĠBoolean Ġ= ĠgetObject ( identifier ) Ġ!= Ġnull ĊĠĠĠ Ġfun Ġ< O Ġ: ĠModel Object < O >> ĠgetObject ( identifier : ĠModel Object Identifier < O >): ĠO ? ĊĠĠĠ Ġfun Ġ< O Ġ: ĠModel Object < O >> Ġrequire Object ( identifier : ĠModel Object Identifier < O >): ĠO Ġ= ĊĠĠĠĠĠĠĠ ĠgetObject ( identifier ) Ġ?: Ġerror (" cannot Ġfind Ġthe Ġobject Ġidentified Ġby Ġ$ identifier !") ĊĊĠĠĠ Ġfun Ġcopy (): ĠModel Ċ } Ċ