blob: d59e2fd4385a403c9beb95d0f254cc771002e1ac [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/5" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/5 pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA">
<uml:Model xmi:id="_o8I_sGvaEdq4DLWZOhbdEA" name="UML">
<eAnnotations xmi:id="_MY-JIIkxEeOMQ5AKLd10lA" source="http://www.eclipse.org/uml2/2.0.0/UML">
<eAnnotations xmi:id="_MY-JIYkxEeOMQ5AKLd10lA" source="UML::Actions" references="_MJe7qYkxEeOMQ5AKLd10lA _MJe7q4kxEeOMQ5AKLd10lA _MJe7oIkxEeOMQ5AKLd10lA _MJkbNokxEeOMQ5AKLd10lA _MJkbMIkxEeOMQ5AKLd10lA _MJlCQIkxEeOMQ5AKLd10lA _MJnej4kxEeOMQ5AKLd10lA _MJnekokxEeOMQ5AKLd10lA _MJnegIkxEeOMQ5AKLd10lA _MJoFmYkxEeOMQ5AKLd10lA _MJoFkIkxEeOMQ5AKLd10lA _MJosoIkxEeOMQ5AKLd10lA _MJpTvIkxEeOMQ5AKLd10lA _MJpTsIkxEeOMQ5AKLd10lA _MJp60okxEeOMQ5AKLd10lA _MJp61YkxEeOMQ5AKLd10lA _MJqh0IkxEeOMQ5AKLd10lA _MJp6wIkxEeOMQ5AKLd10lA _MJrI4IkxEeOMQ5AKLd10lA _MJrI44kxEeOMQ5AKLd10lA _MJrI54kxEeOMQ5AKLd10lA _MJrI6okxEeOMQ5AKLd10lA _MJrv8IkxEeOMQ5AKLd10lA _MJrv9IkxEeOMQ5AKLd10lA _CroQsLLREeCsYvaJqFFivQ _MJxPgIkxEeOMQ5AKLd10lA _MJx2kIkxEeOMQ5AKLd10lA _MJydoIkxEeOMQ5AKLd10lA _6WKakLLQEeCsYvaJqFFivQ _MJzrzIkxEeOMQ5AKLd10lA _MJzrwIkxEeOMQ5AKLd10lA _MJ056YkxEeOMQ5AKLd10lA _MJ057IkxEeOMQ5AKLd10lA _MJ054IkxEeOMQ5AKLd10lA _MJ2vGYkxEeOMQ5AKLd10lA _MJ2vHIkxEeOMQ5AKLd10lA _MJ2vEIkxEeOMQ5AKLd10lA _MJ3WLIkxEeOMQ5AKLd10lA _MJ3WIIkxEeOMQ5AKLd10lA _MJ7nnIkxEeOMQ5AKLd10lA _MJ7nn4kxEeOMQ5AKLd10lA _MJ7no4kxEeOMQ5AKLd10lA _MJ7nqIkxEeOMQ5AKLd10lA _MJ7nkIkxEeOMQ5AKLd10lA _MJ81tokxEeOMQ5AKLd10lA _MJ81uIkxEeOMQ5AKLd10lA _MJ81v4kxEeOMQ5AKLd10lA _MJ81sIkxEeOMQ5AKLd10lA _MJ9cxokxEeOMQ5AKLd10lA _MJ9cyIkxEeOMQ5AKLd10lA _MJ9cyokxEeOMQ5AKLd10lA _MJ9c0YkxEeOMQ5AKLd10lA _MJ9cwIkxEeOMQ5AKLd10lA _MJ_R_IkxEeOMQ5AKLd10lA _MJ_SAIkxEeOMQ5AKLd10lA _MJ_SBIkxEeOMQ5AKLd10lA _MJ_SBokxEeOMQ5AKLd10lA _MJ_SCokxEeOMQ5AKLd10lA _MJ_SDokxEeOMQ5AKLd10lA _MJ_R8IkxEeOMQ5AKLd10lA _MJ_5CYkxEeOMQ5AKLd10lA _MJ_5C4kxEeOMQ5AKLd10lA _MJ_5AIkxEeOMQ5AKLd10lA _MKAgGYkxEeOMQ5AKLd10lA _MKAgEIkxEeOMQ5AKLd10lA _MKBHIIkxEeOMQ5AKLd10lA _MKCVVYkxEeOMQ5AKLd10lA _MKCVWIkxEeOMQ5AKLd10lA _MKCVW4kxEeOMQ5AKLd10lA _MKCVXokxEeOMQ5AKLd10lA _MKCVYokxEeOMQ5AKLd10lA _MKCVQIkxEeOMQ5AKLd10lA _MKC8VokxEeOMQ5AKLd10lA _MKC8UIkxEeOMQ5AKLd10lA _MKDjbIkxEeOMQ5AKLd10lA _MKDjYIkxEeOMQ5AKLd10lA _MKEKf4kxEeOMQ5AKLd10lA _MKEKgYkxEeOMQ5AKLd10lA _MKEKcIkxEeOMQ5AKLd10lA _MKExg4kxEeOMQ5AKLd10lA _MKExgIkxEeOMQ5AKLd10lA _MKFYmYkxEeOMQ5AKLd10lA _MKFYnIkxEeOMQ5AKLd10lA _MKFYn4kxEeOMQ5AKLd10lA _MKFYkIkxEeOMQ5AKLd10lA _MKF_pokxEeOMQ5AKLd10lA _MKF_qYkxEeOMQ5AKLd10lA _MKF_oIkxEeOMQ5AKLd10lA _MKHNw4kxEeOMQ5AKLd10lA _MKHNxokxEeOMQ5AKLd10lA _MKHNyYkxEeOMQ5AKLd10lA _MKHNwIkxEeOMQ5AKLd10lA _MKHNzYkxEeOMQ5AKLd10lA _MKH004kxEeOMQ5AKLd10lA _MKH014kxEeOMQ5AKLd10lA _MKH00IkxEeOMQ5AKLd10lA _MKJC_IkxEeOMQ5AKLd10lA _MKJDAIkxEeOMQ5AKLd10lA _MKJDA4kxEeOMQ5AKLd10lA _MKJC8IkxEeOMQ5AKLd10lA _MKJqBokxEeOMQ5AKLd10lA _MKJqCYkxEeOMQ5AKLd10lA _MKJqDIkxEeOMQ5AKLd10lA _MKJqAIkxEeOMQ5AKLd10lA _MKK4MokxEeOMQ5AKLd10lA _MKK4NIkxEeOMQ5AKLd10lA _MKK4OIkxEeOMQ5AKLd10lA _MKK4O4kxEeOMQ5AKLd10lA _MKK4IIkxEeOMQ5AKLd10lA _MKMGRokxEeOMQ5AKLd10lA _MKMGSYkxEeOMQ5AKLd10lA _MKMGTIkxEeOMQ5AKLd10lA _MKMGQIkxEeOMQ5AKLd10lA _MKN7dIkxEeOMQ5AKLd10lA _MKOigIkxEeOMQ5AKLd10lA _MKOihIkxEeOMQ5AKLd10lA _MKOihokxEeOMQ5AKLd10lA _bHinUGqEEeKQJv6i-sSgBw _MKPJkokxEeOMQ5AKLd10lA _MKPJlokxEeOMQ5AKLd10lA _MKPwoIkxEeOMQ5AKLd10lA _MKPwpIkxEeOMQ5AKLd10lA _MKQXsIkxEeOMQ5AKLd10lA _MKQXt4kxEeOMQ5AKLd10lA _Oc6u0GqEEeKQJv6i-sSgBw __pbPMbG4EeCDe8CO90iVKQ _MKSz8IkxEeOMQ5AKLd10lA __pbPNLG4EeCDe8CO90iVKQ _MKTbAIkxEeOMQ5AKLd10lA __pbPMLG4EeCDe8CO90iVKQ _jvcRQGqEEeKQJv6i-sSgBw _MKVQOokxEeOMQ5AKLd10lA _MKVQMIkxEeOMQ5AKLd10lA _MKWeXIkxEeOMQ5AKLd10lA _MKWeXokxEeOMQ5AKLd10lA _MKWeUIkxEeOMQ5AKLd10lA _MKXFY4kxEeOMQ5AKLd10lA _MKXFYIkxEeOMQ5AKLd10lA _MKXseYkxEeOMQ5AKLd10lA _MKXse4kxEeOMQ5AKLd10lA _MKXscIkxEeOMQ5AKLd10lA _MKY6n4kxEeOMQ5AKLd10lA _MKY6oYkxEeOMQ5AKLd10lA _MKY6pIkxEeOMQ5AKLd10lA _MKY6pokxEeOMQ5AKLd10lA _MKY6kIkxEeOMQ5AKLd10lA _MKaIwokxEeOMQ5AKLd10lA _MKaIxIkxEeOMQ5AKLd10lA _MKaIsIkxEeOMQ5AKLd10lA _MKb9-IkxEeOMQ5AKLd10lA _MKb9-okxEeOMQ5AKLd10lA _MKb9_IkxEeOMQ5AKLd10lA _MKb94IkxEeOMQ5AKLd10lA _MKdzK4kxEeOMQ5AKLd10lA _MKdzLYkxEeOMQ5AKLd10lA _MKdzL4kxEeOMQ5AKLd10lA _MKdzEIkxEeOMQ5AKLd10lA _MKfBP4kxEeOMQ5AKLd10lA _MKfBMIkxEeOMQ5AKLd10lA _MKgPUIkxEeOMQ5AKLd10lA _MKfoQIkxEeOMQ5AKLd10lA _MKg2Y4kxEeOMQ5AKLd10lA _MKgPUokxEeOMQ5AKLd10lA _MKhdfIkxEeOMQ5AKLd10lA _MKhdf4kxEeOMQ5AKLd10lA _MKhdg4kxEeOMQ5AKLd10lA _MKhdhYkxEeOMQ5AKLd10lA _MKhdcIkxEeOMQ5AKLd10lA _MKirnIkxEeOMQ5AKLd10lA _MKirnokxEeOMQ5AKLd10lA _MKiroYkxEeOMQ5AKLd10lA _MKiro4kxEeOMQ5AKLd10lA _MKirkIkxEeOMQ5AKLd10lA _MKjSpokxEeOMQ5AKLd10lA _MKjSqYkxEeOMQ5AKLd10lA _MKjSoIkxEeOMQ5AKLd10lA _MKj5tokxEeOMQ5AKLd10lA _MKj5uYkxEeOMQ5AKLd10lA _MKj5sIkxEeOMQ5AKLd10lA _MKlH1YkxEeOMQ5AKLd10lA _MKlH14kxEeOMQ5AKLd10lA _MKlH24kxEeOMQ5AKLd10lA _MKkgwIkxEeOMQ5AKLd10lA _MKlu5okxEeOMQ5AKLd10lA _MKlu6IkxEeOMQ5AKLd10lA _MKlu4IkxEeOMQ5AKLd10lA _MKmV_IkxEeOMQ5AKLd10lA _MKmV_okxEeOMQ5AKLd10lA _MKmV8IkxEeOMQ5AKLd10lA _MKm9A4kxEeOMQ5AKLd10lA _MKm9AIkxEeOMQ5AKLd10lA _MKnkGYkxEeOMQ5AKLd10lA _MKnkEIkxEeOMQ5AKLd10lA _MKpZTIkxEeOMQ5AKLd10lA _MKpZTokxEeOMQ5AKLd10lA _MKpZVYkxEeOMQ5AKLd10lA _MKpZXIkxEeOMQ5AKLd10lA _MKpZQIkxEeOMQ5AKLd10lA _MKqncokxEeOMQ5AKLd10lA _MKqndIkxEeOMQ5AKLd10lA _MKqnYIkxEeOMQ5AKLd10lA _gnnw0AtZEeGV4NAcunjVqQ _MKr1g4kxEeOMQ5AKLd10lA _MKsckIkxEeOMQ5AKLd10lA _MKsck4kxEeOMQ5AKLd10lA _MKscl4kxEeOMQ5AKLd10lA _MKtDoIkxEeOMQ5AKLd10lA _MKtDpIkxEeOMQ5AKLd10lA _MKtDqIkxEeOMQ5AKLd10lA _MKtqtokxEeOMQ5AKLd10lA _MKuRwIkxEeOMQ5AKLd10lA _MKuRx4kxEeOMQ5AKLd10lA _MKu40IkxEeOMQ5AKLd10lA _w1_2cLLREeCsYvaJqFFivQ _MKwuDIkxEeOMQ5AKLd10lA _MKwuDokxEeOMQ5AKLd10lA _MKwuEIkxEeOMQ5AKLd10lA _MKwuAIkxEeOMQ5AKLd10lA _MKxVIokxEeOMQ5AKLd10lA _MKxVJIkxEeOMQ5AKLd10lA _MKxVJ4kxEeOMQ5AKLd10lA _MKxVEIkxEeOMQ5AKLd10lA _MKx8KYkxEeOMQ5AKLd10lA _MKx8IIkxEeOMQ5AKLd10lA _MKyjMYkxEeOMQ5AKLd10lA _MKyjMIkxEeOMQ5AKLd10lA _MKyjNIkxEeOMQ5AKLd10lA _MKyjM4kxEeOMQ5AKLd10lA _MKyjN4kxEeOMQ5AKLd10lA _MKyjNokxEeOMQ5AKLd10lA _MKyjO4kxEeOMQ5AKLd10lA _MKyjOokxEeOMQ5AKLd10lA _MKzKQYkxEeOMQ5AKLd10lA _MKzKQIkxEeOMQ5AKLd10lA _MKzKRIkxEeOMQ5AKLd10lA _MKzKQ4kxEeOMQ5AKLd10lA _MKzKR4kxEeOMQ5AKLd10lA _MKzKRokxEeOMQ5AKLd10lA _MKzxUYkxEeOMQ5AKLd10lA _MKzxUIkxEeOMQ5AKLd10lA _MKzxVIkxEeOMQ5AKLd10lA _MKzxU4kxEeOMQ5AKLd10lA _MKzxVokxEeOMQ5AKLd10lA _MKzxV4kxEeOMQ5AKLd10lA _MK0YYIkxEeOMQ5AKLd10lA _MK0YYokxEeOMQ5AKLd10lA _MK0YYYkxEeOMQ5AKLd10lA _MK0YZYkxEeOMQ5AKLd10lA _MK0YZIkxEeOMQ5AKLd10lA _MK0_cYkxEeOMQ5AKLd10lA _MK0_cIkxEeOMQ5AKLd10lA _MK0_dIkxEeOMQ5AKLd10lA _MK0_c4kxEeOMQ5AKLd10lA _MK1mgYkxEeOMQ5AKLd10lA _MK1mgIkxEeOMQ5AKLd10lA _MK1mhIkxEeOMQ5AKLd10lA _MK1mg4kxEeOMQ5AKLd10lA _MK2NkYkxEeOMQ5AKLd10lA _MK2NkIkxEeOMQ5AKLd10lA _MK2NlYkxEeOMQ5AKLd10lA _MK2Nk4kxEeOMQ5AKLd10lA _MK20oYkxEeOMQ5AKLd10lA _MK20oIkxEeOMQ5AKLd10lA _MK20pIkxEeOMQ5AKLd10lA _MK20o4kxEeOMQ5AKLd10lA _MK20p4kxEeOMQ5AKLd10lA _MK20pokxEeOMQ5AKLd10lA _MK3bsYkxEeOMQ5AKLd10lA _MK3bsIkxEeOMQ5AKLd10lA _MK3btIkxEeOMQ5AKLd10lA _MK3bs4kxEeOMQ5AKLd10lA _MK4CwYkxEeOMQ5AKLd10lA _MK4CwIkxEeOMQ5AKLd10lA _MK4CxIkxEeOMQ5AKLd10lA _MK4Cw4kxEeOMQ5AKLd10lA _MK4p0YkxEeOMQ5AKLd10lA _MK4p0IkxEeOMQ5AKLd10lA _MK4p1YkxEeOMQ5AKLd10lA _MK4p1IkxEeOMQ5AKLd10lA _MK5Q4IkxEeOMQ5AKLd10lA _MK4p14kxEeOMQ5AKLd10lA _MK5Q44kxEeOMQ5AKLd10lA _MK5Q4okxEeOMQ5AKLd10lA _MK5Q54kxEeOMQ5AKLd10lA _MK5Q5okxEeOMQ5AKLd10lA _MK538YkxEeOMQ5AKLd10lA _MK538IkxEeOMQ5AKLd10lA _MK539IkxEeOMQ5AKLd10lA _MK5384kxEeOMQ5AKLd10lA _MK5394kxEeOMQ5AKLd10lA _MK539okxEeOMQ5AKLd10lA _MK6fAYkxEeOMQ5AKLd10lA _MK6fAIkxEeOMQ5AKLd10lA _MK6fBIkxEeOMQ5AKLd10lA _MK6fA4kxEeOMQ5AKLd10lA _MK6fB4kxEeOMQ5AKLd10lA _MK6fBokxEeOMQ5AKLd10lA _MK7GEYkxEeOMQ5AKLd10lA _MK7GEIkxEeOMQ5AKLd10lA _MK7GFIkxEeOMQ5AKLd10lA _MK7GE4kxEeOMQ5AKLd10lA _MK7tIYkxEeOMQ5AKLd10lA _MK7tIIkxEeOMQ5AKLd10lA _MK7tJIkxEeOMQ5AKLd10lA _MK7tI4kxEeOMQ5AKLd10lA _MK8UMYkxEeOMQ5AKLd10lA _MK8UMIkxEeOMQ5AKLd10lA _MK8UNYkxEeOMQ5AKLd10lA _MK8UNIkxEeOMQ5AKLd10lA _MK8UOIkxEeOMQ5AKLd10lA _MK8UN4kxEeOMQ5AKLd10lA _MK87QYkxEeOMQ5AKLd10lA _MK87QIkxEeOMQ5AKLd10lA _MK87RIkxEeOMQ5AKLd10lA _MK87Q4kxEeOMQ5AKLd10lA _MK9iUYkxEeOMQ5AKLd10lA _MK9iUIkxEeOMQ5AKLd10lA _MK-JYYkxEeOMQ5AKLd10lA _MK-JYIkxEeOMQ5AKLd10lA _MK-wcYkxEeOMQ5AKLd10lA _MK-wcIkxEeOMQ5AKLd10lA _MK-wdIkxEeOMQ5AKLd10lA _MK-wc4kxEeOMQ5AKLd10lA _MK_XgYkxEeOMQ5AKLd10lA _MK_XgIkxEeOMQ5AKLd10lA _MK_-kYkxEeOMQ5AKLd10lA _MK_-kIkxEeOMQ5AKLd10lA _MK_-lIkxEeOMQ5AKLd10lA _MK_-k4kxEeOMQ5AKLd10lA _MLAloYkxEeOMQ5AKLd10lA _MLAloIkxEeOMQ5AKLd10lA _MLAlpIkxEeOMQ5AKLd10lA _MLAlo4kxEeOMQ5AKLd10lA _MLAlp4kxEeOMQ5AKLd10lA _MLAlpokxEeOMQ5AKLd10lA _MLBMsYkxEeOMQ5AKLd10lA _MLBMsIkxEeOMQ5AKLd10lA _MLBMtIkxEeOMQ5AKLd10lA _MLBMs4kxEeOMQ5AKLd10lA _MLBzwYkxEeOMQ5AKLd10lA _MLBzwIkxEeOMQ5AKLd10lA _MLBzxIkxEeOMQ5AKLd10lA _MLBzw4kxEeOMQ5AKLd10lA _MLCa0YkxEeOMQ5AKLd10lA _MLCa0IkxEeOMQ5AKLd10lA _MLCa1IkxEeOMQ5AKLd10lA _MLCa04kxEeOMQ5AKLd10lA _MLDB4YkxEeOMQ5AKLd10lA _MLDB4IkxEeOMQ5AKLd10lA _MLDB44kxEeOMQ5AKLd10lA _MLDB4okxEeOMQ5AKLd10lA _MLDB5okxEeOMQ5AKLd10lA _MLDB5YkxEeOMQ5AKLd10lA _MLDo8YkxEeOMQ5AKLd10lA _MLDo8IkxEeOMQ5AKLd10lA _MLDo84kxEeOMQ5AKLd10lA _MLDo8okxEeOMQ5AKLd10lA _MLDo9okxEeOMQ5AKLd10lA _MLDo9YkxEeOMQ5AKLd10lA _MLEQAIkxEeOMQ5AKLd10lA _MLEQAYkxEeOMQ5AKLd10lA _MLEQA4kxEeOMQ5AKLd10lA _MLEQAokxEeOMQ5AKLd10lA _MLEQB4kxEeOMQ5AKLd10lA _MLEQBYkxEeOMQ5AKLd10lA _MLE3EYkxEeOMQ5AKLd10lA _MLE3EIkxEeOMQ5AKLd10lA _MLE3FYkxEeOMQ5AKLd10lA _MLE3FIkxEeOMQ5AKLd10lA _MLE3GIkxEeOMQ5AKLd10lA _MLE3F4kxEeOMQ5AKLd10lA _MLE3HIkxEeOMQ5AKLd10lA _MLE3GokxEeOMQ5AKLd10lA _MLFeIYkxEeOMQ5AKLd10lA _MLFeIIkxEeOMQ5AKLd10lA _MLFeI4kxEeOMQ5AKLd10lA _MLFeIokxEeOMQ5AKLd10lA _MLFeJokxEeOMQ5AKLd10lA _MLFeJYkxEeOMQ5AKLd10lA _MLFeKYkxEeOMQ5AKLd10lA _MLFeKIkxEeOMQ5AKLd10lA _MLGFMYkxEeOMQ5AKLd10lA _MLGFMIkxEeOMQ5AKLd10lA _MLGFNIkxEeOMQ5AKLd10lA _MLGFM4kxEeOMQ5AKLd10lA _MLGFN4kxEeOMQ5AKLd10lA _MLGFNokxEeOMQ5AKLd10lA _MLGFO4kxEeOMQ5AKLd10lA _MLGFOokxEeOMQ5AKLd10lA _MLGsQYkxEeOMQ5AKLd10lA _MLGsQIkxEeOMQ5AKLd10lA _MLGsQ4kxEeOMQ5AKLd10lA _MLGsRYkxEeOMQ5AKLd10lA _MLGsRIkxEeOMQ5AKLd10lA _MLGsSIkxEeOMQ5AKLd10lA _MLGsR4kxEeOMQ5AKLd10lA _MLHTUYkxEeOMQ5AKLd10lA _MLHTUIkxEeOMQ5AKLd10lA _MLHTVYkxEeOMQ5AKLd10lA _MLHTVIkxEeOMQ5AKLd10lA _MLHTWIkxEeOMQ5AKLd10lA _MLHTV4kxEeOMQ5AKLd10lA _MLHTXIkxEeOMQ5AKLd10lA _MLHTW4kxEeOMQ5AKLd10lA _MLH6YYkxEeOMQ5AKLd10lA _MLH6YIkxEeOMQ5AKLd10lA _MLH6ZIkxEeOMQ5AKLd10lA _MLH6Y4kxEeOMQ5AKLd10lA _MLH6Z4kxEeOMQ5AKLd10lA _MLH6ZokxEeOMQ5AKLd10lA _MLIhcYkxEeOMQ5AKLd10lA _MLIhcIkxEeOMQ5AKLd10lA _MLIhdYkxEeOMQ5AKLd10lA _MLIhdIkxEeOMQ5AKLd10lA _MLIheIkxEeOMQ5AKLd10lA _MLIhd4kxEeOMQ5AKLd10lA _MLJIgYkxEeOMQ5AKLd10lA _MLJIgIkxEeOMQ5AKLd10lA _MLJIhIkxEeOMQ5AKLd10lA _MLJIg4kxEeOMQ5AKLd10lA _MLJIh4kxEeOMQ5AKLd10lA _MLJIhokxEeOMQ5AKLd10lA _MLJIiokxEeOMQ5AKLd10lA _MLJIiYkxEeOMQ5AKLd10lA _MLJvkYkxEeOMQ5AKLd10lA _MLJvkIkxEeOMQ5AKLd10lA _MLJvlIkxEeOMQ5AKLd10lA _MLJvk4kxEeOMQ5AKLd10lA _MLKWoYkxEeOMQ5AKLd10lA _MLKWoIkxEeOMQ5AKLd10lA _MLKWpIkxEeOMQ5AKLd10lA _MLKWo4kxEeOMQ5AKLd10lA _MLKWqIkxEeOMQ5AKLd10lA _MLKWp4kxEeOMQ5AKLd10lA _MLK9sYkxEeOMQ5AKLd10lA _MLK9sIkxEeOMQ5AKLd10lA"/>
<eAnnotations xmi:id="_MZJvUIkxEeOMQ5AKLd10lA" source="UML::Activities" references="_MLYZEIkxEeOMQ5AKLd10lA _PCvjoAs_EeGcpbeCPJfCmw _MLZAIIkxEeOMQ5AKLd10lA _MLZAI4kxEeOMQ5AKLd10lA _RoJfoAs_EeGcpbeCPJfCmw _-_c7oAs9EeGcpbeCPJfCmw _EOSYAAs-EeGcpbeCPJfCmw _MLaOQIkxEeOMQ5AKLd10lA _eGtFwLLREeCsYvaJqFFivQ _MLbcZokxEeOMQ5AKLd10lA _MLbcaYkxEeOMQ5AKLd10lA _MLbcbIkxEeOMQ5AKLd10lA _MLbccIkxEeOMQ5AKLd10lA _MLbcdIkxEeOMQ5AKLd10lA _MLbcd4kxEeOMQ5AKLd10lA _MLbceokxEeOMQ5AKLd10lA _MLbcfokxEeOMQ5AKLd10lA _MLbcgIkxEeOMQ5AKLd10lA _MLbcgokxEeOMQ5AKLd10lA _MLbchYkxEeOMQ5AKLd10lA _MLbcYIkxEeOMQ5AKLd10lA _MLcDcIkxEeOMQ5AKLd10lA _MLcqhIkxEeOMQ5AKLd10lA _MLcqiIkxEeOMQ5AKLd10lA _5V2SAAtBEeGcpbeCPJfCmw _MLdRlIkxEeOMQ5AKLd10lA _MLdRmIkxEeOMQ5AKLd10lA _MLd4oIkxEeOMQ5AKLd10lA _aZICgAs-EeGcpbeCPJfCmw _X0ZfIAtCEeGcpbeCPJfCmw _MLeftIkxEeOMQ5AKLd10lA _MLfGwIkxEeOMQ5AKLd10lA _MLfGxIkxEeOMQ5AKLd10lA _MLfGyIkxEeOMQ5AKLd10lA _MLft0IkxEeOMQ5AKLd10lA _MLft1IkxEeOMQ5AKLd10lA _MLft2IkxEeOMQ5AKLd10lA _MLgU4IkxEeOMQ5AKLd10lA _MLgU5okxEeOMQ5AKLd10lA _WpiyYAs-EeGcpbeCPJfCmw _MLhjEokxEeOMQ5AKLd10lA _MLhjAIkxEeOMQ5AKLd10lA _MLixJIkxEeOMQ5AKLd10lA _MLixKIkxEeOMQ5AKLd10lA _MLjYMIkxEeOMQ5AKLd10lA _MLjYM4kxEeOMQ5AKLd10lA _MLjYN4kxEeOMQ5AKLd10lA _MLj_QIkxEeOMQ5AKLd10lA _MLj_RIkxEeOMQ5AKLd10lA _MIhqsAs-EeGcpbeCPJfCmw _MLkmUIkxEeOMQ5AKLd10lA _MLlNYIkxEeOMQ5AKLd10lA _MLlNZokxEeOMQ5AKLd10lA _MLl0cIkxEeOMQ5AKLd10lA _MLnCq4kxEeOMQ5AKLd10lA _MLnCrokxEeOMQ5AKLd10lA _MLnCkIkxEeOMQ5AKLd10lA _MLoQxYkxEeOMQ5AKLd10lA _MLoQx4kxEeOMQ5AKLd10lA _MLoQyokxEeOMQ5AKLd10lA _MLoQzIkxEeOMQ5AKLd10lA _MLoQsIkxEeOMQ5AKLd10lA _MLpe04kxEeOMQ5AKLd10lA _MLpe0IkxEeOMQ5AKLd10lA _MLpe14kxEeOMQ5AKLd10lA _MLqF4IkxEeOMQ5AKLd10lA _MLqF44kxEeOMQ5AKLd10lA _MLqs8IkxEeOMQ5AKLd10lA _MLrUBokxEeOMQ5AKLd10lA _MLrUCokxEeOMQ5AKLd10lA _MLrUAIkxEeOMQ5AKLd10lA _MLr7GYkxEeOMQ5AKLd10lA _MLr7HIkxEeOMQ5AKLd10lA _MLr7EIkxEeOMQ5AKLd10lA _MLsiIIkxEeOMQ5AKLd10lA _MLtwW4kxEeOMQ5AKLd10lA _MLtwXokxEeOMQ5AKLd10lA _MLtwYYkxEeOMQ5AKLd10lA _MLtwZIkxEeOMQ5AKLd10lA _MLtwQIkxEeOMQ5AKLd10lA _MLu-bYkxEeOMQ5AKLd10lA _MLu-cYkxEeOMQ5AKLd10lA _MLu-dIkxEeOMQ5AKLd10lA _MLu-d4kxEeOMQ5AKLd10lA _MLu-eokxEeOMQ5AKLd10lA _MLu-YIkxEeOMQ5AKLd10lA _MLwMg4kxEeOMQ5AKLd10lA _MLwMhokxEeOMQ5AKLd10lA _MLwMiYkxEeOMQ5AKLd10lA _MLvlcIkxEeOMQ5AKLd10lA _MLwMj4kxEeOMQ5AKLd10lA _MLwzmYkxEeOMQ5AKLd10lA _MLwzmIkxEeOMQ5AKLd10lA _MLwznYkxEeOMQ5AKLd10lA _MLwznIkxEeOMQ5AKLd10lA _MLxaoYkxEeOMQ5AKLd10lA _MLxaoIkxEeOMQ5AKLd10lA _MLxapIkxEeOMQ5AKLd10lA _MLxao4kxEeOMQ5AKLd10lA _MLxaqIkxEeOMQ5AKLd10lA _MLxap4kxEeOMQ5AKLd10lA _MLyBsYkxEeOMQ5AKLd10lA _MLyBsIkxEeOMQ5AKLd10lA _MLyBs4kxEeOMQ5AKLd10lA _MLyBtIkxEeOMQ5AKLd10lA _MLyBtokxEeOMQ5AKLd10lA _MLyBtYkxEeOMQ5AKLd10lA _MLyowYkxEeOMQ5AKLd10lA _MLyowIkxEeOMQ5AKLd10lA _MLyoxYkxEeOMQ5AKLd10lA _MLyoxIkxEeOMQ5AKLd10lA _MLyoyYkxEeOMQ5AKLd10lA _MLyoyIkxEeOMQ5AKLd10lA _MLzP0YkxEeOMQ5AKLd10lA _MLzP0IkxEeOMQ5AKLd10lA _MLzP1IkxEeOMQ5AKLd10lA _MLzP04kxEeOMQ5AKLd10lA _MLzP14kxEeOMQ5AKLd10lA _MLzP2IkxEeOMQ5AKLd10lA _MLzP2okxEeOMQ5AKLd10lA _MLzP2YkxEeOMQ5AKLd10lA _MLz24IkxEeOMQ5AKLd10lA _MLz24YkxEeOMQ5AKLd10lA _MLz24okxEeOMQ5AKLd10lA _MLz244kxEeOMQ5AKLd10lA _MLz25YkxEeOMQ5AKLd10lA _MLz25IkxEeOMQ5AKLd10lA _MLz26IkxEeOMQ5AKLd10lA _MLz26YkxEeOMQ5AKLd10lA _ML0d8IkxEeOMQ5AKLd10lA _ML0d8okxEeOMQ5AKLd10lA _ML0d8YkxEeOMQ5AKLd10lA _ML0d9okxEeOMQ5AKLd10lA _ML0d9YkxEeOMQ5AKLd10lA _ML1FAYkxEeOMQ5AKLd10lA _ML1FAIkxEeOMQ5AKLd10lA _w4820AtEEeGcpbeCPJfCmw _DwV68AtCEeGcpbeCPJfCmw _RFCrMAtCEeGcpbeCPJfCmw _ML1FA4kxEeOMQ5AKLd10lA _ML1sEIkxEeOMQ5AKLd10lA __DOZoAtDEeGcpbeCPJfCmw _3Ik3QAtDEeGcpbeCPJfCmw"/>
<eAnnotations xmi:id="_MZNZsIkxEeOMQ5AKLd10lA" source="UML::Classification" references="_ML7Lo4kxEeOMQ5AKLd10lA _ML7LpYkxEeOMQ5AKLd10lA _ML7LoIkxEeOMQ5AKLd10lA _ML7LrYkxEeOMQ5AKLd10lA _ML7ysIkxEeOMQ5AKLd10lA _ML7ys4kxEeOMQ5AKLd10lA _ML7yt4kxEeOMQ5AKLd10lA _ML7yu4kxEeOMQ5AKLd10lA _ML7yv4kxEeOMQ5AKLd10lA _ML8Zw4kxEeOMQ5AKLd10lA _ML8ZyokxEeOMQ5AKLd10lA _ML9A0IkxEeOMQ5AKLd10lA _rHT3YKOsEdqi_5gqUMOQtA _ML-O9IkxEeOMQ5AKLd10lA _ML-O-IkxEeOMQ5AKLd10lA _ML-2AIkxEeOMQ5AKLd10lA _ML-2BIkxEeOMQ5AKLd10lA _ML-2CIkxEeOMQ5AKLd10lA _ML-2DIkxEeOMQ5AKLd10lA _ML_dEIkxEeOMQ5AKLd10lA _ML_dE4kxEeOMQ5AKLd10lA _ML_dFokxEeOMQ5AKLd10lA _ML_dGYkxEeOMQ5AKLd10lA _ML_dHYkxEeOMQ5AKLd10lA _ML_dIYkxEeOMQ5AKLd10lA _MMAEIIkxEeOMQ5AKLd10lA _MMAEI4kxEeOMQ5AKLd10lA _MMAEJ4kxEeOMQ5AKLd10lA _MMAEKokxEeOMQ5AKLd10lA _MMAELokxEeOMQ5AKLd10lA _MMArMIkxEeOMQ5AKLd10lA _MMArN4kxEeOMQ5AKLd10lA _wKRjcLLSEeCsYvaJqFFivQ _MMBSQokxEeOMQ5AKLd10lA _MMB5UIkxEeOMQ5AKLd10lA _MMB5WokxEeOMQ5AKLd10lA _A3QeILLTEeCsYvaJqFFivQ _MMCgYokxEeOMQ5AKLd10lA _MMCgZ4kxEeOMQ5AKLd10lA _MMDHcIkxEeOMQ5AKLd10lA _MMDHd4kxEeOMQ5AKLd10lA _MMDHfokxEeOMQ5AKLd10lA _MMDugIkxEeOMQ5AKLd10lA _MMDuh4kxEeOMQ5AKLd10lA _MMDujokxEeOMQ5AKLd10lA _MMDuk4kxEeOMQ5AKLd10lA _MMEVkYkxEeOMQ5AKLd10lA _6UV2QGwJEdq7X4sGURiZYA _MMGx5YkxEeOMQ5AKLd10lA _MMGx6IkxEeOMQ5AKLd10lA _MMGx7IkxEeOMQ5AKLd10lA _MMGx0IkxEeOMQ5AKLd10lA _YUdlwLbAEeCRxrN1JUGuxA _MMHY4YkxEeOMQ5AKLd10lA _UL0VYLbAEeCRxrN1JUGuxA _MMH_8IkxEeOMQ5AKLd10lA _MMH_8okxEeOMQ5AKLd10lA _MMH_9okxEeOMQ5AKLd10lA _MMH_-okxEeOMQ5AKLd10lA _C7AF4GwREdq14q0ETb1t3g _MMInCYkxEeOMQ5AKLd10lA _MMInDYkxEeOMQ5AKLd10lA _MMInEIkxEeOMQ5AKLd10lA _MMInE4kxEeOMQ5AKLd10lA _MMInAIkxEeOMQ5AKLd10lA _MMJ1MYkxEeOMQ5AKLd10lA _MMJ1NYkxEeOMQ5AKLd10lA _MMJ1OYkxEeOMQ5AKLd10lA _MMJ1IIkxEeOMQ5AKLd10lA _MMJ1PokxEeOMQ5AKLd10lA _PyCx8GveEdq4DLWZOhbdEA _MMLDQYkxEeOMQ5AKLd10lA _MMLDRIkxEeOMQ5AKLd10lA _MMLDR4kxEeOMQ5AKLd10lA _MMLDSokxEeOMQ5AKLd10lA _MMLqUIkxEeOMQ5AKLd10lA _MMLqUokxEeOMQ5AKLd10lA _msu7YIRQEeOnobsWSpJONg _2DzzEIRQEeOnobsWSpJONg _MMMRYIkxEeOMQ5AKLd10lA _MMMRZIkxEeOMQ5AKLd10lA _MMMRaIkxEeOMQ5AKLd10lA _MMMRbIkxEeOMQ5AKLd10lA _MMMRcIkxEeOMQ5AKLd10lA _MMM4cIkxEeOMQ5AKLd10lA _MMM4c4kxEeOMQ5AKLd10lA _2DzzEoRQEeOnobsWSpJONg _MMNfgIkxEeOMQ5AKLd10lA _MMNfiIkxEeOMQ5AKLd10lA _MMNfjYkxEeOMQ5AKLd10lA _ho5pgFYLEdqrn7iZ0eqieg _MMOGkokxEeOMQ5AKLd10lA _CytvwLKHEeCwDd6B2NQzWA _ljsEEFYLEdqrn7iZ0eqieg _M4X2IGveEdq4DLWZOhbdEA _MMQi1okxEeOMQ5AKLd10lA _MMQi0IkxEeOMQ5AKLd10lA _ZSw9sLG1EeCDe8CO90iVKQ _MMSYAokxEeOMQ5AKLd10lA _MMS_EIkxEeOMQ5AKLd10lA _rkJDULG1EeCDe8CO90iVKQ _MMTmIIkxEeOMQ5AKLd10lA _MMTmI4kxEeOMQ5AKLd10lA _lHJ7gLbIEeCRxrN1JUGuxA _MMTmKIkxEeOMQ5AKLd10lA _7UJKkFYJEdqrn7iZ0eqieg _KyaPMGveEdq4DLWZOhbdEA _MMWCbIkxEeOMQ5AKLd10lA _MMWCcIkxEeOMQ5AKLd10lA _MMWCYIkxEeOMQ5AKLd10lA _MMYeoYkxEeOMQ5AKLd10lA _MMYepIkxEeOMQ5AKLd10lA _MMYep4kxEeOMQ5AKLd10lA _Ef_yMLa_EeCRxrN1JUGuxA _06bWELa_EeCRxrN1JUGuxA _MMZFsokxEeOMQ5AKLd10lA _68HLsLa_EeCRxrN1JUGuxA _MMZswIkxEeOMQ5AKLd10lA _MMZsw4kxEeOMQ5AKLd10lA _MMZsxokxEeOMQ5AKLd10lA _MMZsyYkxEeOMQ5AKLd10lA _MMaT0IkxEeOMQ5AKLd10lA _MMaT04kxEeOMQ5AKLd10lA _MMaT1okxEeOMQ5AKLd10lA _MMaT2okxEeOMQ5AKLd10lA _MMa64IkxEeOMQ5AKLd10lA _MMa65IkxEeOMQ5AKLd10lA _MMa66YkxEeOMQ5AKLd10lA _MMbh8IkxEeOMQ5AKLd10lA _MMbh9YkxEeOMQ5AKLd10lA _MMcJAIkxEeOMQ5AKLd10lA _meukALL6EeCBifIhhuFqZA _MMcwEIkxEeOMQ5AKLd10lA _Jp_1oGveEdq4DLWZOhbdEA _MMfMUYkxEeOMQ5AKLd10lA _MMfMVIkxEeOMQ5AKLd10lA _zYrE4La-EeCRxrN1JUGuxA _MMfzYIkxEeOMQ5AKLd10lA _MMfzaIkxEeOMQ5AKLd10lA _uCRA4La-EeCRxrN1JUGuxA _MMhBgokxEeOMQ5AKLd10lA _MMhBhIkxEeOMQ5AKLd10lA _MMhokIkxEeOMQ5AKLd10lA _FvJUYFYLEdqrn7iZ0eqieg _MMiPoIkxEeOMQ5AKLd10lA _9keOQGvdEdq4DLWZOhbdEA _MMi2s4kxEeOMQ5AKLd10lA _MMi2tYkxEeOMQ5AKLd10lA _MMi2t4kxEeOMQ5AKLd10lA _MMi2sIkxEeOMQ5AKLd10lA _MMjdxYkxEeOMQ5AKLd10lA _MMjdwIkxEeOMQ5AKLd10lA _B3q9cGwNEdq7X4sGURiZYA _MMkE0okxEeOMQ5AKLd10lA _MMkr4IkxEeOMQ5AKLd10lA _oNLHgLG1EeCDe8CO90iVKQ _MMl6AYkxEeOMQ5AKLd10lA _MMl6AIkxEeOMQ5AKLd10lA _MMl6BYkxEeOMQ5AKLd10lA _MMl6BIkxEeOMQ5AKLd10lA _MMl6CIkxEeOMQ5AKLd10lA _MMl6B4kxEeOMQ5AKLd10lA _MMmhEYkxEeOMQ5AKLd10lA _MMmhEIkxEeOMQ5AKLd10lA _MMmhFYkxEeOMQ5AKLd10lA _MMmhFIkxEeOMQ5AKLd10lA _MMmhGYkxEeOMQ5AKLd10lA _MMmhGIkxEeOMQ5AKLd10lA _MMnIIIkxEeOMQ5AKLd10lA _MMnIIokxEeOMQ5AKLd10lA _MMnIIYkxEeOMQ5AKLd10lA _MMnvMYkxEeOMQ5AKLd10lA _MMnvMIkxEeOMQ5AKLd10lA _MMnvNIkxEeOMQ5AKLd10lA _MMnvM4kxEeOMQ5AKLd10lA _MMnvN4kxEeOMQ5AKLd10lA _MMnvNokxEeOMQ5AKLd10lA _MMoWQYkxEeOMQ5AKLd10lA _MMoWQIkxEeOMQ5AKLd10lA _MMoWQ4kxEeOMQ5AKLd10lA _MMoWRYkxEeOMQ5AKLd10lA _MMoWRIkxEeOMQ5AKLd10lA _MMoWSIkxEeOMQ5AKLd10lA _MMoWR4kxEeOMQ5AKLd10lA _MMoWS4kxEeOMQ5AKLd10lA _MMo9UYkxEeOMQ5AKLd10lA _MMo9UIkxEeOMQ5AKLd10lA _MMo9VIkxEeOMQ5AKLd10lA _MMo9U4kxEeOMQ5AKLd10lA _MMo9V4kxEeOMQ5AKLd10lA _MMo9VokxEeOMQ5AKLd10lA _MMpkYYkxEeOMQ5AKLd10lA _MMpkYIkxEeOMQ5AKLd10lA _MMpkZYkxEeOMQ5AKLd10lA _MMpkZIkxEeOMQ5AKLd10lA _MMpkZ4kxEeOMQ5AKLd10lA _MMpkaYkxEeOMQ5AKLd10lA _MMpkaIkxEeOMQ5AKLd10lA _MMpkbYkxEeOMQ5AKLd10lA _MMpkbIkxEeOMQ5AKLd10lA _MMqLcIkxEeOMQ5AKLd10lA _MMqLcokxEeOMQ5AKLd10lA _MMqLcYkxEeOMQ5AKLd10lA _MMqLdIkxEeOMQ5AKLd10lA _MMqLdokxEeOMQ5AKLd10lA _MMqLdYkxEeOMQ5AKLd10lA _MMqygYkxEeOMQ5AKLd10lA _MMqygIkxEeOMQ5AKLd10lA _MMqyhIkxEeOMQ5AKLd10lA _MMqyhYkxEeOMQ5AKLd10lA _MMqyhokxEeOMQ5AKLd10lA _MMqyiIkxEeOMQ5AKLd10lA _MMqyh4kxEeOMQ5AKLd10lA _MMqyi4kxEeOMQ5AKLd10lA _MMrZkIkxEeOMQ5AKLd10lA _MMrZk4kxEeOMQ5AKLd10lA _MMrZkYkxEeOMQ5AKLd10lA _MMrZlYkxEeOMQ5AKLd10lA _MMrZl4kxEeOMQ5AKLd10lA _MMrZlokxEeOMQ5AKLd10lA _MMsAoYkxEeOMQ5AKLd10lA _MMsAoIkxEeOMQ5AKLd10lA _MMsApYkxEeOMQ5AKLd10lA _MMsApIkxEeOMQ5AKLd10lA _MMsAqIkxEeOMQ5AKLd10lA _MMsAp4kxEeOMQ5AKLd10lA _MMsAq4kxEeOMQ5AKLd10lA _MMsAqokxEeOMQ5AKLd10lA _MMsnsIkxEeOMQ5AKLd10lA _MMsArYkxEeOMQ5AKLd10lA _MMsns4kxEeOMQ5AKLd10lA _MMsnsokxEeOMQ5AKLd10lA _MMsnt4kxEeOMQ5AKLd10lA _MMsntokxEeOMQ5AKLd10lA _MMsnuYkxEeOMQ5AKLd10lA _MMsnu4kxEeOMQ5AKLd10lA _MMsnuokxEeOMQ5AKLd10lA"/>
<eAnnotations xmi:id="_MZS5QIkxEeOMQ5AKLd10lA" source="UML::CommonBehavior" references="_MMyHQIkxEeOMQ5AKLd10lA _MMyuWokxEeOMQ5AKLd10lA _Q1JqkNwaEeCT5O2F6sGn5g _MMz8cIkxEeOMQ5AKLd10lA _MMz8dIkxEeOMQ5AKLd10lA _MMz8eIkxEeOMQ5AKLd10lA _MM0jgIkxEeOMQ5AKLd10lA _MM0jhIkxEeOMQ5AKLd10lA _MM0jh4kxEeOMQ5AKLd10lA _Zp2iwFYgEdqB6vblk3tuMA _MM1KkIkxEeOMQ5AKLd10lA _MM1Kl4kxEeOMQ5AKLd10lA _MM1KnokxEeOMQ5AKLd10lA _TUPtYGveEdq4DLWZOhbdEA _MM2Ys4kxEeOMQ5AKLd10lA _MM2YsIkxEeOMQ5AKLd10lA _MM2YuIkxEeOMQ5AKLd10lA _MM2YtYkxEeOMQ5AKLd10lA _MM2YuokxEeOMQ5AKLd10lA _MM2_yYkxEeOMQ5AKLd10lA _MM2_wIkxEeOMQ5AKLd10lA _MM2_z4kxEeOMQ5AKLd10lA _k9tagbG4EeCDe8CO90iVKQ _k9tahLG4EeCDe8CO90iVKQ _k9tagLG4EeCDe8CO90iVKQ _MM5cA4kxEeOMQ5AKLd10lA _MM5cAIkxEeOMQ5AKLd10lA _MM6DFokxEeOMQ5AKLd10lA _MM6DGYkxEeOMQ5AKLd10lA _MM6DEIkxEeOMQ5AKLd10lA _MM6qJokxEeOMQ5AKLd10lA _MM6qKIkxEeOMQ5AKLd10lA _MM6qIIkxEeOMQ5AKLd10lA _MM6qLYkxEeOMQ5AKLd10lA _MM6qLIkxEeOMQ5AKLd10lA _MM6qMYkxEeOMQ5AKLd10lA _MM6qMIkxEeOMQ5AKLd10lA _MM7RMYkxEeOMQ5AKLd10lA _MM7RMIkxEeOMQ5AKLd10lA _MM7RNIkxEeOMQ5AKLd10lA _MM7RM4kxEeOMQ5AKLd10lA _MM7ROIkxEeOMQ5AKLd10lA _MM7RN4kxEeOMQ5AKLd10lA _MM74QYkxEeOMQ5AKLd10lA _MM74QIkxEeOMQ5AKLd10lA _MM74RYkxEeOMQ5AKLd10lA _MM74RIkxEeOMQ5AKLd10lA _MM8fUIkxEeOMQ5AKLd10lA _MM74R4kxEeOMQ5AKLd10lA _MM8fVIkxEeOMQ5AKLd10lA _MM8fU4kxEeOMQ5AKLd10lA _MM8fV4kxEeOMQ5AKLd10lA _MM8fVokxEeOMQ5AKLd10lA _MM8fWokxEeOMQ5AKLd10lA _MM8fWYkxEeOMQ5AKLd10lA _MM9GYYkxEeOMQ5AKLd10lA _MM9GYIkxEeOMQ5AKLd10lA"/>
<eAnnotations xmi:id="_MZUucIkxEeOMQ5AKLd10lA" source="UML::CommonStructure" references="_MM-Ug4kxEeOMQ5AKLd10lA _MM-UgIkxEeOMQ5AKLd10lA _MM-7kYkxEeOMQ5AKLd10lA _WiuJ4LGzEeCDe8CO90iVKQ _Q8DcULGzEeCDe8CO90iVKQ _MNAJvIkxEeOMQ5AKLd10lA _MNAJwIkxEeOMQ5AKLd10lA _MNAJw4kxEeOMQ5AKLd10lA _MNAJsIkxEeOMQ5AKLd10lA _sD4acEzSEeO2z-YY6ENIIA _MNBX0IkxEeOMQ5AKLd10lA _rEDGkGwKEdq7X4sGURiZYA _MNB-4IkxEeOMQ5AKLd10lA _MNB-44kxEeOMQ5AKLd10lA _JBgfoKPAEdqi_5gqUMOQtA _MNCl84kxEeOMQ5AKLd10lA _GDD2YAtAEeGcpbeCPJfCmw _N3hRMAtAEeGcpbeCPJfCmw _MNDNAIkxEeOMQ5AKLd10lA _MNDNB4kxEeOMQ5AKLd10lA _kl90MGvbEdq4DLWZOhbdEA _fO7PkLG0EeCDe8CO90iVKQ _MNFpQIkxEeOMQ5AKLd10lA _MNFpQokxEeOMQ5AKLd10lA _MNFpRIkxEeOMQ5AKLd10lA _MNFpR4kxEeOMQ5AKLd10lA _RPl78GwIEdq7X4sGURiZYA _MNG3Z4kxEeOMQ5AKLd10lA _MNG3aokxEeOMQ5AKLd10lA _5i6zsIRPEeOnobsWSpJONg _MNHecIkxEeOMQ5AKLd10lA _ZQJacIRQEeOnobsWSpJONg _MNHedIkxEeOMQ5AKLd10lA _MNHed4kxEeOMQ5AKLd10lA _MNIFgIkxEeOMQ5AKLd10lA _MNIFiIkxEeOMQ5AKLd10lA _MNIskIkxEeOMQ5AKLd10lA _Y8IpELL3EeCBifIhhuFqZA _MNJToIkxEeOMQ5AKLd10lA _a_qnELL3EeCBifIhhuFqZA _MNJ6sIkxEeOMQ5AKLd10lA _Gjgl0GveEdq4DLWZOhbdEA _A9YUsIUBEeOxOrTbpQATOA _8n2t4LGzEeCDe8CO90iVKQ _MNLv4IkxEeOMQ5AKLd10lA _1vzv0LbIEeCRxrN1JUGuxA _MNLv5YkxEeOMQ5AKLd10lA _PfdtELG0EeCDe8CO90iVKQ _MNMW8okxEeOMQ5AKLd10lA _MNM-AIkxEeOMQ5AKLd10lA _MNM-B4kxEeOMQ5AKLd10lA _8RZtgLL3EeCBifIhhuFqZA _MNNlE4kxEeOMQ5AKLd10lA _uR4xEIRfEeOrzvVsV3Q4sA _csVgUGvtEdqG6fBIPwe-mw _MNPaS4kxEeOMQ5AKLd10lA _MNQBUIkxEeOMQ5AKLd10lA _MNQBVIkxEeOMQ5AKLd10lA _MNQBWIkxEeOMQ5AKLd10lA _MNQBXIkxEeOMQ5AKLd10lA _MNQBYIkxEeOMQ5AKLd10lA _MNQoYIkxEeOMQ5AKLd10lA _MNQoaokxEeOMQ5AKLd10lA _MNQocokxEeOMQ5AKLd10lA _OanVoLL4EeCBifIhhuFqZA _MNR2gIkxEeOMQ5AKLd10lA _ZiwkoGwLEdq7X4sGURiZYA _MNSdlokxEeOMQ5AKLd10lA _jKxnwGwLEdq7X4sGURiZYA _MNTEoIkxEeOMQ5AKLd10lA _MNTEookxEeOMQ5AKLd10lA _MNTEpIkxEeOMQ5AKLd10lA _SnNPIGwIEdq7X4sGURiZYA _MNTEqokxEeOMQ5AKLd10lA _MNTErYkxEeOMQ5AKLd10lA _MNTEsIkxEeOMQ5AKLd10lA _MNTEtokxEeOMQ5AKLd10lA _MNTEp4kxEeOMQ5AKLd10lA _MNTrsYkxEeOMQ5AKLd10lA _MNTrtokxEeOMQ5AKLd10lA _DH62EKPAEdqi_5gqUMOQtA _MNUSw4kxEeOMQ5AKLd10lA _MNUSxokxEeOMQ5AKLd10lA _MNUSyokxEeOMQ5AKLd10lA _MNUSz4kxEeOMQ5AKLd10lA _MNUSwIkxEeOMQ5AKLd10lA _MNUS34kxEeOMQ5AKLd10lA _MNUS4YkxEeOMQ5AKLd10lA _MNUS5YkxEeOMQ5AKLd10lA _MNUS1okxEeOMQ5AKLd10lA _MNU51YkxEeOMQ5AKLd10lA _MNU52IkxEeOMQ5AKLd10lA _MNU524kxEeOMQ5AKLd10lA _MNU53okxEeOMQ5AKLd10lA _MNU54IkxEeOMQ5AKLd10lA _KxRzgGvuEdqG6fBIPwe-mw _MNVg5okxEeOMQ5AKLd10lA _MNVg6IkxEeOMQ5AKLd10lA _MNVg6okxEeOMQ5AKLd10lA _MNVg7YkxEeOMQ5AKLd10lA _MNVg4IkxEeOMQ5AKLd10lA _MNVg-IkxEeOMQ5AKLd10lA _MNWH8okxEeOMQ5AKLd10lA _MNWH9YkxEeOMQ5AKLd10lA _MNVg74kxEeOMQ5AKLd10lA _uvHaoLbQEeCRxrN1JUGuxA _MNWH-4kxEeOMQ5AKLd10lA _ynRtoGvtEdqG6fBIPwe-mw _MNWvA4kxEeOMQ5AKLd10lA _MNWvAIkxEeOMQ5AKLd10lA _h18oENlrEduDKPkA-0jJZg _AyM_oGwMEdq7X4sGURiZYA _MNX9IYkxEeOMQ5AKLd10lA _MNX9IIkxEeOMQ5AKLd10lA _MNX9JIkxEeOMQ5AKLd10lA _MNX9JokxEeOMQ5AKLd10lA _MNX9JYkxEeOMQ5AKLd10lA _MNYkMYkxEeOMQ5AKLd10lA _MNYkMIkxEeOMQ5AKLd10lA _MNYkNokxEeOMQ5AKLd10lA _MNYkNIkxEeOMQ5AKLd10lA _MNYkOYkxEeOMQ5AKLd10lA _MNYkOIkxEeOMQ5AKLd10lA _MNZLQokxEeOMQ5AKLd10lA _MNZLQIkxEeOMQ5AKLd10lA _MNZLRIkxEeOMQ5AKLd10lA _MNZLRokxEeOMQ5AKLd10lA _MNZLRYkxEeOMQ5AKLd10lA _MNZLSYkxEeOMQ5AKLd10lA _MNZyUYkxEeOMQ5AKLd10lA _MNZyUIkxEeOMQ5AKLd10lA _MNZyVIkxEeOMQ5AKLd10lA _MNZyVYkxEeOMQ5AKLd10lA _MNZyVokxEeOMQ5AKLd10lA _MNZyWIkxEeOMQ5AKLd10lA _MNZyV4kxEeOMQ5AKLd10lA _MNaZYYkxEeOMQ5AKLd10lA _MNaZYIkxEeOMQ5AKLd10lA _MNaZZIkxEeOMQ5AKLd10lA _MNaZZYkxEeOMQ5AKLd10lA _MNaZZokxEeOMQ5AKLd10lA _MNaZZ4kxEeOMQ5AKLd10lA _MNbAcYkxEeOMQ5AKLd10lA _MNbAcIkxEeOMQ5AKLd10lA _MNbAdYkxEeOMQ5AKLd10lA _MNbAdIkxEeOMQ5AKLd10lA _MNbAeYkxEeOMQ5AKLd10lA _MNbAeIkxEeOMQ5AKLd10lA _epbu4EzPEeO2z-YY6ENIIA _MNbngYkxEeOMQ5AKLd10lA _MNbngIkxEeOMQ5AKLd10lA _MNbnhIkxEeOMQ5AKLd10lA _MNbng4kxEeOMQ5AKLd10lA _MNbnh4kxEeOMQ5AKLd10lA _MNbnhokxEeOMQ5AKLd10lA _bU41QAtAEeGcpbeCPJfCmw _MNcOkYkxEeOMQ5AKLd10lA _MNcOkIkxEeOMQ5AKLd10lA _MNcOlIkxEeOMQ5AKLd10lA _MNcOk4kxEeOMQ5AKLd10lA _MNcOmIkxEeOMQ5AKLd10lA _MNcOl4kxEeOMQ5AKLd10lA _MNc1oYkxEeOMQ5AKLd10lA _MNc1oIkxEeOMQ5AKLd10lA _MNc1pokxEeOMQ5AKLd10lA _MNc1pYkxEeOMQ5AKLd10lA _MNdcsYkxEeOMQ5AKLd10lA _MNdcsIkxEeOMQ5AKLd10lA _MNdctIkxEeOMQ5AKLd10lA _MNdcs4kxEeOMQ5AKLd10lA _MNeDwYkxEeOMQ5AKLd10lA _MNeDwIkxEeOMQ5AKLd10lA"/>
<eAnnotations xmi:id="_MZaOAIkxEeOMQ5AKLd10lA" source="UML::Deployments" references="_wvc1ILG2EeCDe8CO90iVKQ _MNiVMIkxEeOMQ5AKLd10lA _MNiVNIkxEeOMQ5AKLd10lA _MNiVOIkxEeOMQ5AKLd10lA _MNiVPIkxEeOMQ5AKLd10lA _-lGRgHLzEdqziYxiZo0YtA _E-7IoKJ9EdywJr5C4uHLKw _MNkKYIkxEeOMQ5AKLd10lA _MNkKZokxEeOMQ5AKLd10lA _MNkKaokxEeOMQ5AKLd10lA _MNkKbokxEeOMQ5AKLd10lA _MNkKY4kxEeOMQ5AKLd10lA _MNkxdIkxEeOMQ5AKLd10lA _at8FwLG2EeCDe8CO90iVKQ _lncl8LG2EeCDe8CO90iVKQ _W2CnILG2EeCDe8CO90iVKQ _MNl_kokxEeOMQ5AKLd10lA _MNmmoIkxEeOMQ5AKLd10lA _7EO9ULLXEeCsYvaJqFFivQ _PkmfgLLXEeCsYvaJqFFivQ _MNnNsIkxEeOMQ5AKLd10lA _MNn0wIkxEeOMQ5AKLd10lA _MNn0xokxEeOMQ5AKLd10lA _MNn0w4kxEeOMQ5AKLd10lA _MNob0YkxEeOMQ5AKLd10lA _5YOyUKJ8EdywJr5C4uHLKw _MNob1okxEeOMQ5AKLd10lA _MNob1YkxEeOMQ5AKLd10lA _MNob2YkxEeOMQ5AKLd10lA _MNob2IkxEeOMQ5AKLd10lA _MNpC4YkxEeOMQ5AKLd10lA _MNpC4IkxEeOMQ5AKLd10lA _MNpC5IkxEeOMQ5AKLd10lA _MNpC5okxEeOMQ5AKLd10lA _MNpC5YkxEeOMQ5AKLd10lA _MNpC6YkxEeOMQ5AKLd10lA _MNpC64kxEeOMQ5AKLd10lA _MNpC6okxEeOMQ5AKLd10lA _MNpC7okxEeOMQ5AKLd10lA _MNpC7YkxEeOMQ5AKLd10lA _MNpC8YkxEeOMQ5AKLd10lA _MNpC8IkxEeOMQ5AKLd10lA _MNpp8YkxEeOMQ5AKLd10lA _MNpp8IkxEeOMQ5AKLd10lA"/>
<eAnnotations xmi:id="_MZcqQIkxEeOMQ5AKLd10lA" source="UML::InformationFlows" references="_MNqRDYkxEeOMQ5AKLd10lA _MNqREIkxEeOMQ5AKLd10lA _MNqRE4kxEeOMQ5AKLd10lA _MNqRFokxEeOMQ5AKLd10lA _MNqRGokxEeOMQ5AKLd10lA _MNqRHokxEeOMQ5AKLd10lA _MNqRIokxEeOMQ5AKLd10lA _MNqRAIkxEeOMQ5AKLd10lA _MNq4HIkxEeOMQ5AKLd10lA _MNq4EIkxEeOMQ5AKLd10lA _MNq4IYkxEeOMQ5AKLd10lA _MNq4IIkxEeOMQ5AKLd10lA _MNq4JYkxEeOMQ5AKLd10lA _MNq4JIkxEeOMQ5AKLd10lA _MNrfIYkxEeOMQ5AKLd10lA _MNrfIIkxEeOMQ5AKLd10lA _MNrfJYkxEeOMQ5AKLd10lA _MNrfJIkxEeOMQ5AKLd10lA _MNrfKYkxEeOMQ5AKLd10lA _MNrfKIkxEeOMQ5AKLd10lA _MNrfLYkxEeOMQ5AKLd10lA _MNrfLIkxEeOMQ5AKLd10lA _MNrfMYkxEeOMQ5AKLd10lA _MNrfMIkxEeOMQ5AKLd10lA _MNrfNYkxEeOMQ5AKLd10lA _MNrfNIkxEeOMQ5AKLd10lA"/>
<eAnnotations xmi:id="_MZd4YIkxEeOMQ5AKLd10lA" source="UML::Interactions" references="_MNsGNokxEeOMQ5AKLd10lA _MNsGMIkxEeOMQ5AKLd10lA _MNsGO4kxEeOMQ5AKLd10lA _MNsGOIkxEeOMQ5AKLd10lA _MNstTIkxEeOMQ5AKLd10lA _MNstUIkxEeOMQ5AKLd10lA _MNstU4kxEeOMQ5AKLd10lA _MNstQIkxEeOMQ5AKLd10lA _MNtUWYkxEeOMQ5AKLd10lA _MNtUUIkxEeOMQ5AKLd10lA _MNtUaYkxEeOMQ5AKLd10lA _MNtUXYkxEeOMQ5AKLd10lA _MNtUbIkxEeOMQ5AKLd10lA _MNt7Y4kxEeOMQ5AKLd10lA _MNt7YIkxEeOMQ5AKLd10lA _MNt7a4kxEeOMQ5AKLd10lA _MNt7bYkxEeOMQ5AKLd10lA _MNt7ZYkxEeOMQ5AKLd10lA _MNvJmIkxEeOMQ5AKLd10lA _MNvJnYkxEeOMQ5AKLd10lA _MNvJookxEeOMQ5AKLd10lA _MNvJp4kxEeOMQ5AKLd10lA _MNvJrYkxEeOMQ5AKLd10lA _MNvJsokxEeOMQ5AKLd10lA _MNvJuIkxEeOMQ5AKLd10lA _MNvJv4kxEeOMQ5AKLd10lA _MNvJgIkxEeOMQ5AKLd10lA _MNvwlokxEeOMQ5AKLd10lA _MNvwmIkxEeOMQ5AKLd10lA _MNvwkIkxEeOMQ5AKLd10lA _MNwXp4kxEeOMQ5AKLd10lA _MNwXq4kxEeOMQ5AKLd10lA _MNwXr4kxEeOMQ5AKLd10lA _MNwXs4kxEeOMQ5AKLd10lA _MNwXt4kxEeOMQ5AKLd10lA _MNwXoIkxEeOMQ5AKLd10lA _MNw-uokxEeOMQ5AKLd10lA _MNw-vYkxEeOMQ5AKLd10lA _MNwXu4kxEeOMQ5AKLd10lA _MNw-w4kxEeOMQ5AKLd10lA _MNw-x4kxEeOMQ5AKLd10lA _MNw-yokxEeOMQ5AKLd10lA _MNw-zYkxEeOMQ5AKLd10lA _MNw-wIkxEeOMQ5AKLd10lA _MNxlyokxEeOMQ5AKLd10lA _MNxlzokxEeOMQ5AKLd10lA _MNxlwIkxEeOMQ5AKLd10lA _MNyM5YkxEeOMQ5AKLd10lA _MNyM6YkxEeOMQ5AKLd10lA _MNyM7YkxEeOMQ5AKLd10lA _MNyM74kxEeOMQ5AKLd10lA _MNyM8okxEeOMQ5AKLd10lA _MNyM0IkxEeOMQ5AKLd10lA _MNyz4IkxEeOMQ5AKLd10lA _MNyz5IkxEeOMQ5AKLd10lA _MNyz54kxEeOMQ5AKLd10lA _MNyz6YkxEeOMQ5AKLd10lA _MNyz7IkxEeOMQ5AKLd10lA _MwekcFU2EeKpypMay8ANnw _MNzbBokxEeOMQ5AKLd10lA _MNzbCokxEeOMQ5AKLd10lA _MN0CAIkxEeOMQ5AKLd10lA __1Qw8IROEeOnobsWSpJONg _MN0CA4kxEeOMQ5AKLd10lA _MN0CBokxEeOMQ5AKLd10lA _MN0CCYkxEeOMQ5AKLd10lA _MN0CDIkxEeOMQ5AKLd10lA _8U6CAFYfEdqB6vblk3tuMA _MN0pEIkxEeOMQ5AKLd10lA _gfgNwGveEdq4DLWZOhbdEA _MN1QI4kxEeOMQ5AKLd10lA _MN1QJokxEeOMQ5AKLd10lA _MN1QL4kxEeOMQ5AKLd10lA _MN1QNokxEeOMQ5AKLd10lA _MN1QPokxEeOMQ5AKLd10lA _MN1QIIkxEeOMQ5AKLd10lA _MN13MIkxEeOMQ5AKLd10lA _MN13NokxEeOMQ5AKLd10lA _MN13OIkxEeOMQ5AKLd10lA _MN13PIkxEeOMQ5AKLd10lA _4kmhAFU1EeKpypMay8ANnw _MN2eQIkxEeOMQ5AKLd10lA _MN2eT4kxEeOMQ5AKLd10lA _MN2eUYkxEeOMQ5AKLd10lA _MN2eTIkxEeOMQ5AKLd10lA _MN3sYIkxEeOMQ5AKLd10lA _Y_jskGvtEdqG6fBIPwe-mw _MN46gIkxEeOMQ5AKLd10lA _MN5hkYkxEeOMQ5AKLd10lA _MN5hkIkxEeOMQ5AKLd10lA _MN5hlIkxEeOMQ5AKLd10lA _MN5hk4kxEeOMQ5AKLd10lA _MN5hmIkxEeOMQ5AKLd10lA _MN5hl4kxEeOMQ5AKLd10lA _MN5hm4kxEeOMQ5AKLd10lA _MN6IoYkxEeOMQ5AKLd10lA _MN6IoIkxEeOMQ5AKLd10lA _MN6IpYkxEeOMQ5AKLd10lA _MN6IpIkxEeOMQ5AKLd10lA _MN6IqYkxEeOMQ5AKLd10lA _MN6IqIkxEeOMQ5AKLd10lA _MN6IrYkxEeOMQ5AKLd10lA _MN6IrIkxEeOMQ5AKLd10lA _MN6vsYkxEeOMQ5AKLd10lA _MN6vsIkxEeOMQ5AKLd10lA _MN6vtIkxEeOMQ5AKLd10lA _MN6vs4kxEeOMQ5AKLd10lA _MN6vt4kxEeOMQ5AKLd10lA _MN6vtokxEeOMQ5AKLd10lA _MN6vuokxEeOMQ5AKLd10lA _MN6vuYkxEeOMQ5AKLd10lA _MN7WwokxEeOMQ5AKLd10lA _MN7WwIkxEeOMQ5AKLd10lA _MN7WxokxEeOMQ5AKLd10lA _MN7WxYkxEeOMQ5AKLd10lA _MN7WyokxEeOMQ5AKLd10lA _MN7WyYkxEeOMQ5AKLd10lA _MN7WzokxEeOMQ5AKLd10lA _MN7WzYkxEeOMQ5AKLd10lA _MN790YkxEeOMQ5AKLd10lA _MN790IkxEeOMQ5AKLd10lA _MN791IkxEeOMQ5AKLd10lA _MN7904kxEeOMQ5AKLd10lA _MN791okxEeOMQ5AKLd10lA _MN792IkxEeOMQ5AKLd10lA _MN7914kxEeOMQ5AKLd10lA _MN792okxEeOMQ5AKLd10lA _MN792YkxEeOMQ5AKLd10lA _MN8k4IkxEeOMQ5AKLd10lA _MN8k44kxEeOMQ5AKLd10lA _MN8k4okxEeOMQ5AKLd10lA _MN8k5okxEeOMQ5AKLd10lA _MN8k5YkxEeOMQ5AKLd10lA _MN8k6YkxEeOMQ5AKLd10lA _MN8k6IkxEeOMQ5AKLd10lA _MN9L8YkxEeOMQ5AKLd10lA _MN9L8IkxEeOMQ5AKLd10lA _MN9L84kxEeOMQ5AKLd10lA _MN9L9IkxEeOMQ5AKLd10lA _MN9L9YkxEeOMQ5AKLd10lA _MN9L9okxEeOMQ5AKLd10lA _MN9L-YkxEeOMQ5AKLd10lA _MN9L94kxEeOMQ5AKLd10lA _MN9zAokxEeOMQ5AKLd10lA _MN9zAIkxEeOMQ5AKLd10lA _MN9zBokxEeOMQ5AKLd10lA _MN9zBYkxEeOMQ5AKLd10lA _MN9zCokxEeOMQ5AKLd10lA _MN9zCYkxEeOMQ5AKLd10lA _MN9zDokxEeOMQ5AKLd10lA _MN9zDYkxEeOMQ5AKLd10lA _MN9zEYkxEeOMQ5AKLd10lA _MN9zEIkxEeOMQ5AKLd10lA _MN9zFIkxEeOMQ5AKLd10lA _MN9zE4kxEeOMQ5AKLd10lA _MN-aEYkxEeOMQ5AKLd10lA _MN-aEIkxEeOMQ5AKLd10lA"/>
<eAnnotations xmi:id="_MZj_AIkxEeOMQ5AKLd10lA" source="UML::Packages" references="_MOCEeIkxEeOMQ5AKLd10lA _MOCEeokxEeOMQ5AKLd10lA _MOCrgIkxEeOMQ5AKLd10lA _MOCrgokxEeOMQ5AKLd10lA __PcocLL2EeCBifIhhuFqZA _MODSkIkxEeOMQ5AKLd10lA _skHGwGvsEdqG6fBIPwe-mw _MOD5p4kxEeOMQ5AKLd10lA _MOD5qokxEeOMQ5AKLd10lA _MOD5rIkxEeOMQ5AKLd10lA _2QuT0GvdEdq4DLWZOhbdEA _N4PwQLG3EeCDe8CO90iVKQ _j4KkMLG3EeCDe8CO90iVKQ _ZCc-4LG3EeCDe8CO90iVKQ _nDq0wJPzEdqpjIDDFZ2Hgw _vyLfILG3EeCDe8CO90iVKQ _NVhqMGv0Edq7X4sGURiZYA _MOG88okxEeOMQ5AKLd10lA _MOG89YkxEeOMQ5AKLd10lA _XSjCgLbQEeCRxrN1JUGuxA _MOG8-4kxEeOMQ5AKLd10lA _MOHkAIkxEeOMQ5AKLd10lA _MOHkBIkxEeOMQ5AKLd10lA _MOHkCIkxEeOMQ5AKLd10lA _MOHkDIkxEeOMQ5AKLd10lA _MOILEIkxEeOMQ5AKLd10lA _MOILF4kxEeOMQ5AKLd10lA _MOILHYkxEeOMQ5AKLd10lA _MOIyIIkxEeOMQ5AKLd10lA __wMTILL4EeCBifIhhuFqZA _kWuyMLL5EeCBifIhhuFqZA _yfRaMLL5EeCBifIhhuFqZA _MOKnUIkxEeOMQ5AKLd10lA _-cvRAGvzEdq7X4sGURiZYA _MOMcg4kxEeOMQ5AKLd10lA _MOMchYkxEeOMQ5AKLd10lA _MOMcgIkxEeOMQ5AKLd10lA _MOMcj4kxEeOMQ5AKLd10lA _MONDkIkxEeOMQ5AKLd10lA __pew8GvzEdq7X4sGURiZYA _MONqookxEeOMQ5AKLd10lA _MOORsIkxEeOMQ5AKLd10lA _MOORsokxEeOMQ5AKLd10lA _uY5yQGv5Edq7X4sGURiZYA _MOPf0IkxEeOMQ5AKLd10lA _MOPf1IkxEeOMQ5AKLd10lA _MOPf1okxEeOMQ5AKLd10lA _jDbsYLL7EeCBifIhhuFqZA _A7vDAGv0Edq7X4sGURiZYA _MORVAIkxEeOMQ5AKLd10lA _MOQt8IkxEeOMQ5AKLd10lA _MORVBIkxEeOMQ5AKLd10lA _MORVA4kxEeOMQ5AKLd10lA _MORVB4kxEeOMQ5AKLd10lA _MORVBokxEeOMQ5AKLd10lA _MORVC4kxEeOMQ5AKLd10lA _MORVCokxEeOMQ5AKLd10lA _MOR8EYkxEeOMQ5AKLd10lA _MOR8EIkxEeOMQ5AKLd10lA _MOR8FIkxEeOMQ5AKLd10lA _MOR8E4kxEeOMQ5AKLd10lA _MOR8GIkxEeOMQ5AKLd10lA _MOR8F4kxEeOMQ5AKLd10lA _MOSjIIkxEeOMQ5AKLd10lA _MOSjIYkxEeOMQ5AKLd10lA _MOSjIokxEeOMQ5AKLd10lA _MOSjI4kxEeOMQ5AKLd10lA _MOSjJokxEeOMQ5AKLd10lA _MOSjJIkxEeOMQ5AKLd10lA _MOTKMYkxEeOMQ5AKLd10lA _MOTKMIkxEeOMQ5AKLd10lA _MOTKNYkxEeOMQ5AKLd10lA _MOTKNIkxEeOMQ5AKLd10lA"/>
<eAnnotations xmi:id="_MZl0MIkxEeOMQ5AKLd10lA" source="UML::SimpleClassifiers" references="_MOUYVYkxEeOMQ5AKLd10lA _MOUYWIkxEeOMQ5AKLd10lA _MOU_YIkxEeOMQ5AKLd10lA _iY7sMGvsEdqG6fBIPwe-mw _MOU_ZokxEeOMQ5AKLd10lA _MOU_aokxEeOMQ5AKLd10lA __1ap4HLzEdqziYxiZo0YtA _MOVmc4kxEeOMQ5AKLd10lA _I6N3UGwGEdq7X4sGURiZYA _MOVmeYkxEeOMQ5AKLd10lA _MOVme4kxEeOMQ5AKLd10lA _dgJcQLL2EeCBifIhhuFqZA _OQcbgGwOEdq7X4sGURiZYA _MOWNhYkxEeOMQ5AKLd10lA _MOWNiYkxEeOMQ5AKLd10lA _MOW0kIkxEeOMQ5AKLd10lA _MOW0lIkxEeOMQ5AKLd10lA _MOW0mIkxEeOMQ5AKLd10lA _MOW0m4kxEeOMQ5AKLd10lA _8Ugn8GvtEdqG6fBIPwe-mw _MOW0oYkxEeOMQ5AKLd10lA _MOW0o4kxEeOMQ5AKLd10lA _l2mXcHLzEdqziYxiZo0YtA _V6vuYGwGEdq7X4sGURiZYA _MOXbrIkxEeOMQ5AKLd10lA _MOXbo4kxEeOMQ5AKLd10lA _MOXbsIkxEeOMQ5AKLd10lA _Pu3O0HL0EdqziYxiZo0YtA _MOYCsYkxEeOMQ5AKLd10lA _MOYCsIkxEeOMQ5AKLd10lA _MOYCtIkxEeOMQ5AKLd10lA _MOYCs4kxEeOMQ5AKLd10lA _MOYCuIkxEeOMQ5AKLd10lA _MOYCt4kxEeOMQ5AKLd10lA _MOYCvIkxEeOMQ5AKLd10lA _MOYCu4kxEeOMQ5AKLd10lA _MOYpwYkxEeOMQ5AKLd10lA _MOYpwIkxEeOMQ5AKLd10lA _MOYpxIkxEeOMQ5AKLd10lA _MOYpw4kxEeOMQ5AKLd10lA _MOYpyIkxEeOMQ5AKLd10lA _MOYpx4kxEeOMQ5AKLd10lA _MOYpyokxEeOMQ5AKLd10lA _MOYpy4kxEeOMQ5AKLd10lA _MOYpzokxEeOMQ5AKLd10lA _MOYpzIkxEeOMQ5AKLd10lA _MOZQ0IkxEeOMQ5AKLd10lA _MOZQ0YkxEeOMQ5AKLd10lA _MOZQ0okxEeOMQ5AKLd10lA _MOZQ1IkxEeOMQ5AKLd10lA _MOZQ04kxEeOMQ5AKLd10lA _MOZQ2IkxEeOMQ5AKLd10lA _MOZQ1okxEeOMQ5AKLd10lA _MOZQ2okxEeOMQ5AKLd10lA"/>
<eAnnotations xmi:id="_MZnpYIkxEeOMQ5AKLd10lA" source="UML::StateMachines" references="_MOZ36YkxEeOMQ5AKLd10lA _MOZ37YkxEeOMQ5AKLd10lA _MOZ38YkxEeOMQ5AKLd10lA _MOZ34IkxEeOMQ5AKLd10lA _MOae8IkxEeOMQ5AKLd10lA _MOafCIkxEeOMQ5AKLd10lA _MOafCokxEeOMQ5AKLd10lA _MOafBYkxEeOMQ5AKLd10lA _MObGD4kxEeOMQ5AKLd10lA _MObGAIkxEeOMQ5AKLd10lA _MObtEIkxEeOMQ5AKLd10lA _MObtE4kxEeOMQ5AKLd10lA _MObtFokxEeOMQ5AKLd10lA _IZYEkLL7EeCBifIhhuFqZA _Dtp8ULL7EeCBifIhhuFqZA _MOc7TokxEeOMQ5AKLd10lA _MOc7UYkxEeOMQ5AKLd10lA _MOc7VIkxEeOMQ5AKLd10lA _MOc7MIkxEeOMQ5AKLd10lA _MOdiUIkxEeOMQ5AKLd10lA _MOdiU4kxEeOMQ5AKLd10lA _MOdiVYkxEeOMQ5AKLd10lA _MOdiWIkxEeOMQ5AKLd10lA _MOdiW4kxEeOMQ5AKLd10lA _MOdiX4kxEeOMQ5AKLd10lA _MOdiY4kxEeOMQ5AKLd10lA _MOdiaIkxEeOMQ5AKLd10lA _MOdibYkxEeOMQ5AKLd10lA _MOdidYkxEeOMQ5AKLd10lA _MOdie4kxEeOMQ5AKLd10lA _MOdiQIkxEeOMQ5AKLd10lA _MOewYYkxEeOMQ5AKLd10lA _MOewZYkxEeOMQ5AKLd10lA _MOewaYkxEeOMQ5AKLd10lA _MOewbYkxEeOMQ5AKLd10lA _MOewcIkxEeOMQ5AKLd10lA _MOewc4kxEeOMQ5AKLd10lA _MOewdokxEeOMQ5AKLd10lA _MOeweIkxEeOMQ5AKLd10lA _ECR5EIRREeOnobsWSpJONg _MOfXcYkxEeOMQ5AKLd10lA _MOfXc4kxEeOMQ5AKLd10lA _MOfXdokxEeOMQ5AKLd10lA _MOfXeIkxEeOMQ5AKLd10lA _MOfXfIkxEeOMQ5AKLd10lA _MOfXf4kxEeOMQ5AKLd10lA _MOf-gIkxEeOMQ5AKLd10lA _MOf-hYkxEeOMQ5AKLd10lA _MOf-iokxEeOMQ5AKLd10lA _MOf-kokxEeOMQ5AKLd10lA _MOf-l4kxEeOMQ5AKLd10lA _MOglkIkxEeOMQ5AKLd10lA _MOgllYkxEeOMQ5AKLd10lA _MOglmokxEeOMQ5AKLd10lA _AjbzoIRREeOnobsWSpJONg _MOhzv4kxEeOMQ5AKLd10lA _MOhzw4kxEeOMQ5AKLd10lA _MOhzx4kxEeOMQ5AKLd10lA _MOhzyokxEeOMQ5AKLd10lA _MOhzzokxEeOMQ5AKLd10lA _MOhz1YkxEeOMQ5AKLd10lA _MOhz3IkxEeOMQ5AKLd10lA _MOhz4okxEeOMQ5AKLd10lA _MOhz6IkxEeOMQ5AKLd10lA _MOhzsIkxEeOMQ5AKLd10lA _MOjB0YkxEeOMQ5AKLd10lA _MOjB04kxEeOMQ5AKLd10lA _MOjB1okxEeOMQ5AKLd10lA _MOjB2YkxEeOMQ5AKLd10lA _MOjB3IkxEeOMQ5AKLd10lA _MOjB34kxEeOMQ5AKLd10lA _JPYJofnmEdunWsS3se92JQ _EhVtMPnmEdunWsS3se92JQ _MOjo4IkxEeOMQ5AKLd10lA _MOjo5IkxEeOMQ5AKLd10lA _MOjo6YkxEeOMQ5AKLd10lA _MOjo8YkxEeOMQ5AKLd10lA _ykKV8PnlEdunWsS3se92JQ _MOkP8YkxEeOMQ5AKLd10lA _MOkP9IkxEeOMQ5AKLd10lA _MOkP-IkxEeOMQ5AKLd10lA _MOkP_IkxEeOMQ5AKLd10lA _ZdMVcLL8EeCBifIhhuFqZA _982T8LL9EeCBifIhhuFqZA _MOleEIkxEeOMQ5AKLd10lA _MOleFokxEeOMQ5AKLd10lA _xM1WoPnlEdunWsS3se92JQ _WTCRYC-TEeO5Ur9hrpFPZA _MOmsMIkxEeOMQ5AKLd10lA _EhL8MPnmEdunWsS3se92JQ _JPYJoPnmEdunWsS3se92JQ _MOmsOYkxEeOMQ5AKLd10lA _MOmsOIkxEeOMQ5AKLd10lA _MOmsPIkxEeOMQ5AKLd10lA _MOmsO4kxEeOMQ5AKLd10lA _MOnTQYkxEeOMQ5AKLd10lA _MOnTQIkxEeOMQ5AKLd10lA _MOnTRokxEeOMQ5AKLd10lA _MOnTRIkxEeOMQ5AKLd10lA _MOnTSokxEeOMQ5AKLd10lA _MOnTSYkxEeOMQ5AKLd10lA _MOnTTIkxEeOMQ5AKLd10lA _MOn6UIkxEeOMQ5AKLd10lA _MOn6UYkxEeOMQ5AKLd10lA _MOn6U4kxEeOMQ5AKLd10lA _MOn6UokxEeOMQ5AKLd10lA _MOn6WIkxEeOMQ5AKLd10lA _MOn6VokxEeOMQ5AKLd10lA _MOn6W4kxEeOMQ5AKLd10lA _MOn6XYkxEeOMQ5AKLd10lA _MOn6XIkxEeOMQ5AKLd10lA _MOohYYkxEeOMQ5AKLd10lA _MOohYIkxEeOMQ5AKLd10lA _MOohZYkxEeOMQ5AKLd10lA _MOohZIkxEeOMQ5AKLd10lA _MOohZ4kxEeOMQ5AKLd10lA _MOohaYkxEeOMQ5AKLd10lA _MOohaIkxEeOMQ5AKLd10lA _MOoha4kxEeOMQ5AKLd10lA _MOohbYkxEeOMQ5AKLd10lA _MOohbIkxEeOMQ5AKLd10lA _MOpIcYkxEeOMQ5AKLd10lA _MOpIcIkxEeOMQ5AKLd10lA _MOpIdIkxEeOMQ5AKLd10lA _MOpIc4kxEeOMQ5AKLd10lA _MOpId4kxEeOMQ5AKLd10lA _MOpIeokxEeOMQ5AKLd10lA _MOpIeIkxEeOMQ5AKLd10lA _MOpIfYkxEeOMQ5AKLd10lA _MOpIf4kxEeOMQ5AKLd10lA _MOpIfokxEeOMQ5AKLd10lA _MOpvgokxEeOMQ5AKLd10lA _MOpvgIkxEeOMQ5AKLd10lA _MOpvhYkxEeOMQ5AKLd10lA _MOpvhIkxEeOMQ5AKLd10lA _MOpvh4kxEeOMQ5AKLd10lA _MOpviYkxEeOMQ5AKLd10lA _MOpviIkxEeOMQ5AKLd10lA _MOpvjYkxEeOMQ5AKLd10lA _MOpvjIkxEeOMQ5AKLd10lA _MOpvkIkxEeOMQ5AKLd10lA _MOpvj4kxEeOMQ5AKLd10lA"/>
<eAnnotations xmi:id="_MZtI8IkxEeOMQ5AKLd10lA" source="UML::StructuredClassifiers" references="_MOsLz4kxEeOMQ5AKLd10lA _MOsL0okxEeOMQ5AKLd10lA _MOsL1YkxEeOMQ5AKLd10lA _MOsy0IkxEeOMQ5AKLd10lA _MOsy1IkxEeOMQ5AKLd10lA _6VRNQLLREeCsYvaJqFFivQ _AwvxoGwNEdq7X4sGURiZYA _MOtZ4IkxEeOMQ5AKLd10lA _MOuA8IkxEeOMQ5AKLd10lA _MOuA9IkxEeOMQ5AKLd10lA _MOuA94kxEeOMQ5AKLd10lA _MOuA-okxEeOMQ5AKLd10lA _MOuA_okxEeOMQ5AKLd10lA _MOuBAokxEeOMQ5AKLd10lA _MOuBBokxEeOMQ5AKLd10lA _MOuBCokxEeOMQ5AKLd10lA _4xcu4FYKEdqrn7iZ0eqieg _hIWcYLLSEeCsYvaJqFFivQ _00owUGvdEdq4DLWZOhbdEA _MOvPFIkxEeOMQ5AKLd10lA _MOvPEIkxEeOMQ5AKLd10lA _MOv2LIkxEeOMQ5AKLd10lA _MOv2MIkxEeOMQ5AKLd10lA _MOv2IIkxEeOMQ5AKLd10lA _MOwdMYkxEeOMQ5AKLd10lA _MOwdNIkxEeOMQ5AKLd10lA _MOwdOIkxEeOMQ5AKLd10lA _MOwdPIkxEeOMQ5AKLd10lA _MOwdQIkxEeOMQ5AKLd10lA _PGB0gLLUEeCsYvaJqFFivQ _lHjyALLUEeCsYvaJqFFivQ _DAbfwa69EdqjppZik4kD8A _MOySY4kxEeOMQ5AKLd10lA _MOySZokxEeOMQ5AKLd10lA _MOySYIkxEeOMQ5AKLd10lA _MOySbIkxEeOMQ5AKLd10lA _MOyScIkxEeOMQ5AKLd10lA _ETr20LLVEeCsYvaJqFFivQ _0dB44PnhEdunWsS3se92JQ _MOy5d4kxEeOMQ5AKLd10lA _MOy5dIkxEeOMQ5AKLd10lA _MOzgh4kxEeOMQ5AKLd10lA _MOzgi4kxEeOMQ5AKLd10lA _MOzgj4kxEeOMQ5AKLd10lA _MOzgkYkxEeOMQ5AKLd10lA _MOzglYkxEeOMQ5AKLd10lA _lgjO4LLWEeCsYvaJqFFivQ _YxC2YLLWEeCsYvaJqFFivQ _MO1VsYkxEeOMQ5AKLd10lA _MO1VtIkxEeOMQ5AKLd10lA _81UZgfnhEdunWsS3se92JQ _QT7XMFYKEdqrn7iZ0eqieg _aOgw0GveEdq4DLWZOhbdEA _MO2j0YkxEeOMQ5AKLd10lA _O9x_ALL2EeCBifIhhuFqZA _HiSd0LL2EeCBifIhhuFqZA _MO3x94kxEeOMQ5AKLd10lA _MO3x-okxEeOMQ5AKLd10lA _MO3x_YkxEeOMQ5AKLd10lA _MO4ZAIkxEeOMQ5AKLd10lA _MO4ZA4kxEeOMQ5AKLd10lA _MO4ZB4kxEeOMQ5AKLd10lA _MO4ZC4kxEeOMQ5AKLd10lA _gtr8cFYhEdqB6vblk3tuMA _mxt7cFYhEdqB6vblk3tuMA _MO5nIIkxEeOMQ5AKLd10lA _MO5nJ4kxEeOMQ5AKLd10lA _ZAuvEGveEdq4DLWZOhbdEA _MO6OMYkxEeOMQ5AKLd10lA _MO6ONYkxEeOMQ5AKLd10lA _MO6OOYkxEeOMQ5AKLd10lA _MO6OPYkxEeOMQ5AKLd10lA _ATcCwLL8EeCBifIhhuFqZA _MO61RIkxEeOMQ5AKLd10lA _FQiVsGwYEdqHKKVoxc0dlA _echygLLWEeCsYvaJqFFivQ _MO8DYYkxEeOMQ5AKLd10lA _MO8DYIkxEeOMQ5AKLd10lA _MO8DZIkxEeOMQ5AKLd10lA _MO8DY4kxEeOMQ5AKLd10lA _MO8DaIkxEeOMQ5AKLd10lA _MO8DZokxEeOMQ5AKLd10lA _MO8Da4kxEeOMQ5AKLd10lA _MO8DaokxEeOMQ5AKLd10lA _MO8Db4kxEeOMQ5AKLd10lA _MO8DbokxEeOMQ5AKLd10lA _MO8qcYkxEeOMQ5AKLd10lA _MO8qcIkxEeOMQ5AKLd10lA _MO8qdYkxEeOMQ5AKLd10lA _MO8qdIkxEeOMQ5AKLd10lA _MO9RgIkxEeOMQ5AKLd10lA _MO8qeIkxEeOMQ5AKLd10lA _MO9RhIkxEeOMQ5AKLd10lA _MO9Rg4kxEeOMQ5AKLd10lA _MO9Rh4kxEeOMQ5AKLd10lA _MO9RhokxEeOMQ5AKLd10lA _MO9Ri4kxEeOMQ5AKLd10lA _MO9RiokxEeOMQ5AKLd10lA _MO9Rj4kxEeOMQ5AKLd10lA _MO9RjokxEeOMQ5AKLd10lA _MO9RkYkxEeOMQ5AKLd10lA _MO9RkIkxEeOMQ5AKLd10lA _MO94kYkxEeOMQ5AKLd10lA _MO94kIkxEeOMQ5AKLd10lA _MO94lYkxEeOMQ5AKLd10lA _MO94lIkxEeOMQ5AKLd10lA _MO94mIkxEeOMQ5AKLd10lA _81UZgPnhEdunWsS3se92JQ _MO94mokxEeOMQ5AKLd10lA _MO94mYkxEeOMQ5AKLd10lA _MO94nokxEeOMQ5AKLd10lA _MO94nYkxEeOMQ5AKLd10lA _MO94ookxEeOMQ5AKLd10lA _MO94oYkxEeOMQ5AKLd10lA _MO-foIkxEeOMQ5AKLd10lA _MO-fookxEeOMQ5AKLd10lA _MO-foYkxEeOMQ5AKLd10lA _MO_GsYkxEeOMQ5AKLd10lA _MO_GsIkxEeOMQ5AKLd10lA _MO_GtYkxEeOMQ5AKLd10lA _MO_GtIkxEeOMQ5AKLd10lA _MO_GuIkxEeOMQ5AKLd10lA _MO_Gt4kxEeOMQ5AKLd10lA _MO_Gu4kxEeOMQ5AKLd10lA _MO_GvYkxEeOMQ5AKLd10lA _MO_GvIkxEeOMQ5AKLd10lA _MO_twIkxEeOMQ5AKLd10lA _MO_twYkxEeOMQ5AKLd10lA _MO_tw4kxEeOMQ5AKLd10lA _MO_twokxEeOMQ5AKLd10lA _MO_txokxEeOMQ5AKLd10lA _MO_txYkxEeOMQ5AKLd10lA _MO_tyIkxEeOMQ5AKLd10lA _MO_tyokxEeOMQ5AKLd10lA _MO_tyYkxEeOMQ5AKLd10lA _MO_tzYkxEeOMQ5AKLd10lA _MPAU0YkxEeOMQ5AKLd10lA _MPAU0IkxEeOMQ5AKLd10lA"/>
<eAnnotations xmi:id="_MZxaYIkxEeOMQ5AKLd10lA" source="UML::UseCases" references="_MPCKAIkxEeOMQ5AKLd10lA _MPCKEIkxEeOMQ5AKLd10lA _MPCKE4kxEeOMQ5AKLd10lA _MPCKFYkxEeOMQ5AKLd10lA _MPCKF4kxEeOMQ5AKLd10lA _MPCKCYkxEeOMQ5AKLd10lA _MPCxFokxEeOMQ5AKLd10lA _MPCxEIkxEeOMQ5AKLd10lA _MPCxHIkxEeOMQ5AKLd10lA _MPCxHokxEeOMQ5AKLd10lA _MPCxGIkxEeOMQ5AKLd10lA _MPDYL4kxEeOMQ5AKLd10lA _MPDYM4kxEeOMQ5AKLd10lA _MPDYN4kxEeOMQ5AKLd10lA _MPDYO4kxEeOMQ5AKLd10lA _MPDYP4kxEeOMQ5AKLd10lA _MPDYIIkxEeOMQ5AKLd10lA _MPD_MIkxEeOMQ5AKLd10lA _MPD_MYkxEeOMQ5AKLd10lA _MPD_MokxEeOMQ5AKLd10lA _MPD_M4kxEeOMQ5AKLd10lA _MPD_NYkxEeOMQ5AKLd10lA _MPD_NIkxEeOMQ5AKLd10lA _MPEmQYkxEeOMQ5AKLd10lA _MPEmQIkxEeOMQ5AKLd10lA _MPEmRYkxEeOMQ5AKLd10lA _MPEmRIkxEeOMQ5AKLd10lA _MPEmSIkxEeOMQ5AKLd10lA _MPEmR4kxEeOMQ5AKLd10lA"/>
<eAnnotations xmi:id="_MZyBcIkxEeOMQ5AKLd10lA" source="UML::Values" references="_MPFNVYkxEeOMQ5AKLd10lA _MPFNWIkxEeOMQ5AKLd10lA _-Ixo8H4XEdq7cMP_l1l5Gg _MPF0aYkxEeOMQ5AKLd10lA _MPF0bYkxEeOMQ5AKLd10lA _MPF0YIkxEeOMQ5AKLd10lA _MPF0cokxEeOMQ5AKLd10lA _MPF0dIkxEeOMQ5AKLd10lA _MPF0b4kxEeOMQ5AKLd10lA _MPGbdokxEeOMQ5AKLd10lA _MPGbeYkxEeOMQ5AKLd10lA _MPGbcIkxEeOMQ5AKLd10lA _MPGbf4kxEeOMQ5AKLd10lA _-NPagLG3EeCDe8CO90iVKQ _8QuDcLG3EeCDe8CO90iVKQ _MPHCg4kxEeOMQ5AKLd10lA _MPHChYkxEeOMQ5AKLd10lA _MPHCgIkxEeOMQ5AKLd10lA _MPHCiokxEeOMQ5AKLd10lA _MPHCh4kxEeOMQ5AKLd10lA _MPHpkIkxEeOMQ5AKLd10lA _MPHpk4kxEeOMQ5AKLd10lA _MPHpmIkxEeOMQ5AKLd10lA _FFMNsGveEdq4DLWZOhbdEA _MPHpn4kxEeOMQ5AKLd10lA _MPIQoIkxEeOMQ5AKLd10lA _MPIQpYkxEeOMQ5AKLd10lA _Dy77oGveEdq4DLWZOhbdEA _MPI3s4kxEeOMQ5AKLd10lA _MPI3uIkxEeOMQ5AKLd10lA _MPI3sIkxEeOMQ5AKLd10lA _MPI3v4kxEeOMQ5AKLd10lA _MPI3wYkxEeOMQ5AKLd10lA _MPI3xokxEeOMQ5AKLd10lA _KF5QYK3PEeCff5DsMzqH0w _MPI3y4kxEeOMQ5AKLd10lA _RFmAkLG4EeCDe8CO90iVKQ _MPJexIkxEeOMQ5AKLd10lA _MPJeyYkxEeOMQ5AKLd10lA _5jXJsTEkEdu9VoNTbEBQkQ _MPKF0okxEeOMQ5AKLd10lA _MPKF1YkxEeOMQ5AKLd10lA _MPKs4IkxEeOMQ5AKLd10lA _Q-yR4GveEdq4DLWZOhbdEA _MPKs5YkxEeOMQ5AKLd10lA _MPKs84kxEeOMQ5AKLd10lA _w__dcLG0EeCDe8CO90iVKQ _D0kWwLG1EeCDe8CO90iVKQ _MPL7AIkxEeOMQ5AKLd10lA _MPL7A4kxEeOMQ5AKLd10lA _MPL7CIkxEeOMQ5AKLd10lA _MPL7D4kxEeOMQ5AKLd10lA _mv9LcFYiEdqB6vblk3tuMA _MPMiEIkxEeOMQ5AKLd10lA _ChRfcGveEdq4DLWZOhbdEA _MPNJKokxEeOMQ5AKLd10lA _MPNJLYkxEeOMQ5AKLd10lA _MPNJMYkxEeOMQ5AKLd10lA _MPNJIIkxEeOMQ5AKLd10lA _MPNwNokxEeOMQ5AKLd10lA _MPNwOokxEeOMQ5AKLd10lA _MPNwMIkxEeOMQ5AKLd10lA _MPNwQYkxEeOMQ5AKLd10lA _MPNwRIkxEeOMQ5AKLd10lA _DylKEH4YEdq7cMP_l1l5Gg _MPOXQ4kxEeOMQ5AKLd10lA _MPOXRYkxEeOMQ5AKLd10lA _MPOXQIkxEeOMQ5AKLd10lA _MPOXSokxEeOMQ5AKLd10lA _MPOXTIkxEeOMQ5AKLd10lA _MPOXR4kxEeOMQ5AKLd10lA _MPO-VIkxEeOMQ5AKLd10lA _MPO-WokxEeOMQ5AKLd10lA _MPO-YIkxEeOMQ5AKLd10lA _MPO-ZokxEeOMQ5AKLd10lA _MPO-a4kxEeOMQ5AKLd10lA _MPO-cIkxEeOMQ5AKLd10lA _MPO-dokxEeOMQ5AKLd10lA _MPO-fIkxEeOMQ5AKLd10lA _MPO-UIkxEeOMQ5AKLd10lA _MPPlYYkxEeOMQ5AKLd10lA _MPPlYIkxEeOMQ5AKLd10lA _MPQMcokxEeOMQ5AKLd10lA _MPQMcIkxEeOMQ5AKLd10lA _MPQMd4kxEeOMQ5AKLd10lA _MPQMdYkxEeOMQ5AKLd10lA _MPQMe4kxEeOMQ5AKLd10lA _MPQMeokxEeOMQ5AKLd10lA _MPQMfokxEeOMQ5AKLd10lA _MPQMfYkxEeOMQ5AKLd10lA _MPQzgokxEeOMQ5AKLd10lA _MPQzgIkxEeOMQ5AKLd10lA _MPQzhIkxEeOMQ5AKLd10lA _MPQzhokxEeOMQ5AKLd10lA _MPQzhYkxEeOMQ5AKLd10lA _MPQziokxEeOMQ5AKLd10lA _MPQziYkxEeOMQ5AKLd10lA _MPRakokxEeOMQ5AKLd10lA _MPRakIkxEeOMQ5AKLd10lA _MPRalYkxEeOMQ5AKLd10lA _MPRalIkxEeOMQ5AKLd10lA _MPRamYkxEeOMQ5AKLd10lA _MPRamIkxEeOMQ5AKLd10lA _MPRanYkxEeOMQ5AKLd10lA _MPRanIkxEeOMQ5AKLd10lA _MPRaoIkxEeOMQ5AKLd10lA _MPRan4kxEeOMQ5AKLd10lA _MPSBookxEeOMQ5AKLd10lA _MPSBoIkxEeOMQ5AKLd10lA _MPSBp4kxEeOMQ5AKLd10lA _MPSBpYkxEeOMQ5AKLd10lA _MPSBrIkxEeOMQ5AKLd10lA _MPSBqokxEeOMQ5AKLd10lA _MPSosYkxEeOMQ5AKLd10lA _MPSosIkxEeOMQ5AKLd10lA _MPSotIkxEeOMQ5AKLd10lA _MPSos4kxEeOMQ5AKLd10lA"/>
</eAnnotations>
<packageImport xmi:id="__as3cGvaEdq4DLWZOhbdEA">
<importedPackage xmi:type="uml:Model" href="Ecore.uml#_SeWiQMX_EduPJbEsMYXjUQ"/>
</packageImport>
<packageImport xmi:id="_WPl70C-TEeO5Ur9hrpFPZA">
<importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
</packageImport>
<packagedElement xmi:type="uml:Interface" xmi:id="_9d3z0EzMEeO2z-YY6ENIIA" name="ActivityContent" isAbstract="true">
<ownedOperation xmi:id="_HACtoEzNEeO2z-YY6ENIIA" name="containingActivity">
<ownedParameter xmi:id="_M8qdEEzNEeO2z-YY6ENIIA" name="containingActivity" type="_eGtFwLLREeCsYvaJqFFivQ" direction="return" effect="read">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PtJnsEzNEeO2z-YY6ENIIA"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MJe7oIkxEeOMQ5AKLd10lA" name="ValueSpecificationAction">
<ownedComment xmi:id="_MJe7oYkxEeOMQ5AKLd10lA" annotatedElement="_MJe7oIkxEeOMQ5AKLd10lA">
<body>A ValueSpecificationAction is an Action that evaluates a ValueSpecification and provides a result.</body>
</ownedComment>
<ownedRule xmi:id="_MJe7ookxEeOMQ5AKLd10lA" name="multiplicity" constrainedElement="_MJe7oIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJe7o4kxEeOMQ5AKLd10lA" annotatedElement="_MJe7ookxEeOMQ5AKLd10lA">
<body>The multiplicity of the result OutputPin is 1..1</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJe7pIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result.is(1,1)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MJe7pYkxEeOMQ5AKLd10lA" name="compatible_type" constrainedElement="_MJe7oIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJe7pokxEeOMQ5AKLd10lA" annotatedElement="_MJe7pYkxEeOMQ5AKLd10lA">
<body>The type of the value ValueSpecification must conform to the type of the result OutputPin.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJe7p4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>value.type.conformsTo(result.type)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MJe7qIkxEeOMQ5AKLd10lA" general="_6WKakLLQEeCsYvaJqFFivQ"/>
<ownedAttribute xmi:id="_MJe7qYkxEeOMQ5AKLd10lA" name="result" type="_jvcRQGqEEeKQJv6i-sSgBw" aggregation="composite" subsettedProperty="_MJrv9IkxEeOMQ5AKLd10lA" association="_MLKWp4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJe7qokxEeOMQ5AKLd10lA" annotatedElement="_MJe7qYkxEeOMQ5AKLd10lA">
<body>The OutputPin on which the result value is placed.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MJe7q4kxEeOMQ5AKLd10lA" name="value" type="_MPO-UIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MLK9sIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJe7rIkxEeOMQ5AKLd10lA" annotatedElement="_MJe7q4kxEeOMQ5AKLd10lA">
<body>The ValueSpecification to be evaluated.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MJkbMIkxEeOMQ5AKLd10lA" name="VariableAction" isAbstract="true">
<ownedComment xmi:id="_MJkbMYkxEeOMQ5AKLd10lA" annotatedElement="_MJkbMIkxEeOMQ5AKLd10lA">
<body>VariableAction is an abstract class for Actions that operate on a specified Variable.</body>
</ownedComment>
<ownedRule xmi:id="_MJkbMokxEeOMQ5AKLd10lA" name="scope_of_variable" constrainedElement="_MJkbMIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJkbM4kxEeOMQ5AKLd10lA" annotatedElement="_MJkbMokxEeOMQ5AKLd10lA">
<body>The VariableAction must be in the scope of the variable.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJkbNIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>variable.isAccessibleBy(self)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MJkbNYkxEeOMQ5AKLd10lA" general="_6WKakLLQEeCsYvaJqFFivQ"/>
<ownedAttribute xmi:id="_MJkbNokxEeOMQ5AKLd10lA" name="variable" type="_MLvlcIkxEeOMQ5AKLd10lA" association="_MLKWo4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJkbN4kxEeOMQ5AKLd10lA" annotatedElement="_MJkbNokxEeOMQ5AKLd10lA">
<body>The Variable to be read or written.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MJlCQIkxEeOMQ5AKLd10lA" name="WriteLinkAction" isAbstract="true">
<ownedComment xmi:id="_MJlCQYkxEeOMQ5AKLd10lA" annotatedElement="_MJlCQIkxEeOMQ5AKLd10lA">
<body>WriteLinkAction is an abstract class for LinkActions that create and destroy links.</body>
</ownedComment>
<ownedRule xmi:id="_MJlCQokxEeOMQ5AKLd10lA" name="allow_access" constrainedElement="_MJlCQIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJlCQ4kxEeOMQ5AKLd10lA" annotatedElement="_MJlCQokxEeOMQ5AKLd10lA">
<body>The visibility of at least one end must allow access from the context Classifier of the WriteLinkAction.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJlCRIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>endData.end->exists(end |&#xD;
end.type=_'context' or&#xD;
end.visibility=VisibilityKind::public or &#xD;
end.visibility=VisibilityKind::protected and&#xD;
endData.end->exists(other | &#xD;
other&lt;>end and _'context'.conformsTo(other.type.oclAsType(Classifier))))</body>
</specification>
</ownedRule>
<generalization xmi:id="_MJlCRYkxEeOMQ5AKLd10lA" general="_MKJC8IkxEeOMQ5AKLd10lA"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MJnegIkxEeOMQ5AKLd10lA" name="WriteStructuralFeatureAction" isAbstract="true">
<ownedComment xmi:id="_MJnegYkxEeOMQ5AKLd10lA" annotatedElement="_MJnegIkxEeOMQ5AKLd10lA">
<body>WriteStructuralFeatureAction is an abstract class for StructuralFeatureActions that change StructuralFeature values.</body>
</ownedComment>
<ownedRule xmi:id="_MJnegokxEeOMQ5AKLd10lA" name="multiplicity_of_result" constrainedElement="_MJnegIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJneg4kxEeOMQ5AKLd10lA" annotatedElement="_MJnegokxEeOMQ5AKLd10lA">
<body>The multiplicity of the result OutputPin must be 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJnehIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result &lt;> null implies result.is(1,1)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MJnehYkxEeOMQ5AKLd10lA" name="type_of_value" constrainedElement="_MJnegIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJnehokxEeOMQ5AKLd10lA" annotatedElement="_MJnehYkxEeOMQ5AKLd10lA">
<body>The type of the value InputPin must conform to the type of the structuralFeature.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJneh4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>value &lt;> null implies value.type.conformsTo(structuralFeature.type)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MJneiIkxEeOMQ5AKLd10lA" name="multiplicity_of_value" constrainedElement="_MJnegIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJneiYkxEeOMQ5AKLd10lA" annotatedElement="_MJneiIkxEeOMQ5AKLd10lA">
<body>The multiplicity of the value InputPin is 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJneiokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>value&lt;>null implies value.is(1,1)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MJnei4kxEeOMQ5AKLd10lA" name="type_of_result" constrainedElement="_MJnegIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJnejIkxEeOMQ5AKLd10lA" annotatedElement="_MJnei4kxEeOMQ5AKLd10lA">
<body>The type of the result OutputPin is the same as the type of the inherited object InputPin.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJnejYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result &lt;> null implies result.type = object.type</body>
</specification>
</ownedRule>
<generalization xmi:id="_MJnejokxEeOMQ5AKLd10lA" general="_MKqnYIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MJnej4kxEeOMQ5AKLd10lA" name="result" type="_jvcRQGqEEeKQJv6i-sSgBw" aggregation="composite" subsettedProperty="_MJrv9IkxEeOMQ5AKLd10lA" association="_MLJvk4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJnekIkxEeOMQ5AKLd10lA" annotatedElement="_MJnej4kxEeOMQ5AKLd10lA">
<body>The OutputPin on which is put the input object as modified by the WriteStructuralFeatureAction.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MJnekYkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MJnekokxEeOMQ5AKLd10lA" name="value" type="_MKHNzYkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MJrI44kxEeOMQ5AKLd10lA" association="_MLKWoIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJnek4kxEeOMQ5AKLd10lA" annotatedElement="_MJnekokxEeOMQ5AKLd10lA">
<body>The InputPin that provides the value to be added or removed from the StructuralFeature.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MJnelIkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MJoFkIkxEeOMQ5AKLd10lA" name="WriteVariableAction" isAbstract="true">
<ownedComment xmi:id="_MJoFkYkxEeOMQ5AKLd10lA" annotatedElement="_MJoFkIkxEeOMQ5AKLd10lA">
<body>WriteVariableAction is an abstract class for VariableActions that change Variable values.</body>
</ownedComment>
<ownedRule xmi:id="_MJoFkokxEeOMQ5AKLd10lA" name="value_type" constrainedElement="_MJoFkIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJoFk4kxEeOMQ5AKLd10lA" annotatedElement="_MJoFkokxEeOMQ5AKLd10lA">
<body>The type of the value InputPin must conform to the type of the variable.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJoFlIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>value &lt;> null implies value.type.conformsTo(variable.type)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MJoFlYkxEeOMQ5AKLd10lA" name="multiplicity" constrainedElement="_MJoFkIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJoFlokxEeOMQ5AKLd10lA" annotatedElement="_MJoFlYkxEeOMQ5AKLd10lA">
<body>The multiplicity of the value InputPin is 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJoFl4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>value&lt;>null implies value.is(1,1)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MJoFmIkxEeOMQ5AKLd10lA" general="_MJkbMIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MJoFmYkxEeOMQ5AKLd10lA" name="value" type="_MKHNzYkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MJrI44kxEeOMQ5AKLd10lA" association="_MLJvkIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJoFmokxEeOMQ5AKLd10lA" annotatedElement="_MJoFmYkxEeOMQ5AKLd10lA">
<body>The InputPin that gives the value to be added or removed from the Variable.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MJoFm4kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Enumeration" xmi:id="_MJosoIkxEeOMQ5AKLd10lA" name="ExpansionKind">
<ownedComment xmi:id="_MJosoYkxEeOMQ5AKLd10lA" annotatedElement="_MJosoIkxEeOMQ5AKLd10lA">
<body>ExpansionKind is an enumeration type used to specify how an ExpansionRegion executes its contents.</body>
</ownedComment>
<ownedLiteral xmi:id="_MJosookxEeOMQ5AKLd10lA" name="parallel">
<ownedComment xmi:id="_MJoso4kxEeOMQ5AKLd10lA" annotatedElement="_MJosookxEeOMQ5AKLd10lA">
<body>The content of the ExpansionRegion is executed concurrently for the elements of the input collections.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_MJospIkxEeOMQ5AKLd10lA" name="iterative">
<ownedComment xmi:id="_MJospYkxEeOMQ5AKLd10lA" annotatedElement="_MJospIkxEeOMQ5AKLd10lA">
<body>The content of the ExpansionRegion is executed iteratively for the elements of the input collections, in the order of the input elements, if the collections are ordered.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_MJospokxEeOMQ5AKLd10lA" name="stream">
<ownedComment xmi:id="_MJosp4kxEeOMQ5AKLd10lA" annotatedElement="_MJospokxEeOMQ5AKLd10lA">
<body>A stream of input collection elements flows into a single execution of the content of the ExpansionRegion, in the order of the collection elements if the input collections are ordered.</body>
</ownedComment>
</ownedLiteral>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MJpTsIkxEeOMQ5AKLd10lA" name="AcceptCallAction">
<ownedComment xmi:id="_MJpTsYkxEeOMQ5AKLd10lA" annotatedElement="_MJpTsIkxEeOMQ5AKLd10lA">
<body>An AcceptCallAction is an AcceptEventAction that handles the receipt of a synchronous call request. In addition to the values from the Operation input parameters, the Action produces an output that is needed later to supply the information to the ReplyAction necessary to return control to the caller. An AcceptCallAction is for synchronous calls. If it is used to handle an asynchronous call, execution of the subsequent ReplyAction will complete immediately with no effect.</body>
</ownedComment>
<ownedRule xmi:id="_MJpTsokxEeOMQ5AKLd10lA" name="result_pins" constrainedElement="_MJpTsIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJpTs4kxEeOMQ5AKLd10lA" annotatedElement="_MJpTsokxEeOMQ5AKLd10lA">
<body>The number of result OutputPins must be the same as the number of input (in and inout) ownedParameters of the Operation specified by the trigger Event. The type, ordering and multiplicity of each result OutputPin must be consistent with the corresponding input Parameter.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJpTtIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>let parameter: OrderedSet(Parameter) = trigger.event->asSequence()->first().oclAsType(CallEvent).operation.inputParameters() in&#xD;
result->size() = parameter->size() and&#xD;
Sequence{1..result->size()}->forAll(i | &#xD;
parameter->at(i).type.conformsTo(result->at(i).type) and &#xD;
parameter->at(i).isOrdered = result->at(i).isOrdered and&#xD;
parameter->at(i).compatibleWith(result->at(i)))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MJpTtYkxEeOMQ5AKLd10lA" name="trigger_call_event" constrainedElement="_MJpTsIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJpTtokxEeOMQ5AKLd10lA" annotatedElement="_MJpTtYkxEeOMQ5AKLd10lA">
<body>The action must have exactly one trigger, which must be for a CallEvent.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJpTt4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>trigger->size()=1 and&#xD;
trigger->asSequence()->first().event.oclIsKindOf(CallEvent)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MJpTuIkxEeOMQ5AKLd10lA" name="unmarshall" constrainedElement="_MJpTsIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJpTuYkxEeOMQ5AKLd10lA" annotatedElement="_MJpTuIkxEeOMQ5AKLd10lA">
<body>isUnmrashall must be true for an AcceptCallAction.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJpTuokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>isUnmarshall = true</body>
</specification>
</ownedRule>
<generalization xmi:id="_MJpTu4kxEeOMQ5AKLd10lA" general="_MJp6wIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MJpTvIkxEeOMQ5AKLd10lA" name="returnInformation" type="_jvcRQGqEEeKQJv6i-sSgBw" aggregation="composite" subsettedProperty="_MJrv9IkxEeOMQ5AKLd10lA" association="_MLJIiYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJpTvYkxEeOMQ5AKLd10lA" annotatedElement="_MJpTvIkxEeOMQ5AKLd10lA">
<body>An OutputPin where a value is placed containing sufficient information to perform a subsequent ReplyAction and return control to the caller. The contents of this value are opaque. It can be passed and copied but it cannot be manipulated by the model.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MJp6wIkxEeOMQ5AKLd10lA" name="AcceptEventAction">
<ownedComment xmi:id="_MJp6wYkxEeOMQ5AKLd10lA" annotatedElement="_MJp6wIkxEeOMQ5AKLd10lA">
<body>An AcceptEventAction is an Action that waits for the occurrence of one or more specific Events.</body>
</ownedComment>
<ownedRule xmi:id="_MJp6wokxEeOMQ5AKLd10lA" name="one_output_pin" constrainedElement="_MJp6wIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJp6w4kxEeOMQ5AKLd10lA" annotatedElement="_MJp6wokxEeOMQ5AKLd10lA">
<body>If isUnmarshall=false and any of the triggers are for SignalEvents or TimeEvents, there must be exactly one result OutputPin with multiplicity 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJp6xIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>not isUnmarshall and trigger->exists(event.oclIsKindOf(SignalEvent) or event.oclIsKindOf(TimeEvent)) implies &#xD;
output->size() = 1 and output->first().is(1,1)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MJp6xYkxEeOMQ5AKLd10lA" name="no_input_pins" constrainedElement="_MJp6wIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJp6xokxEeOMQ5AKLd10lA" annotatedElement="_MJp6xYkxEeOMQ5AKLd10lA">
<body>AcceptEventActions may have no input pins.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJp6x4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>input->size() = 0</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MJp6yIkxEeOMQ5AKLd10lA" name="no_output_pins" constrainedElement="_MJp6wIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJp6yYkxEeOMQ5AKLd10lA" annotatedElement="_MJp6yIkxEeOMQ5AKLd10lA">
<body>There are no OutputPins if the trigger events are only ChangeEvents and/or CallEvents when this action is an instance of AcceptEventAction and not an instance of a descendant of AcceptEventAction (such as AcceptCallAction).</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJp6yokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(self.oclIsTypeOf(AcceptEventAction) and&#xD;
(trigger->forAll(event.oclIsKindOf(ChangeEvent) or &#xD;
event.oclIsKindOf(CallEvent))))&#xD;
implies output->size() = 0</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MJp6y4kxEeOMQ5AKLd10lA" name="unmarshall_signal_events" constrainedElement="_MJp6wIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJp6zIkxEeOMQ5AKLd10lA" annotatedElement="_MJp6y4kxEeOMQ5AKLd10lA">
<body>If isUnmarshall is true (and this is not an AcceptCallAction), there must be exactly one trigger, which is for a SignalEvent. The number of result output pins must be the same as the number of attributes of the signal. The type and ordering of each result output pin must be the same as the corresponding attribute of the signal. The multiplicity of each result output pin must be compatible with the multiplicity of the corresponding attribute.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJp6zYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>isUnmarshall and self.oclIsTypeOf(AcceptEventAction) implies&#xD;
trigger->size()=1 and&#xD;
trigger->asSequence()->first().event.oclIsKindOf(SignalEvent) and&#xD;
let attribute: OrderedSet(Property) = trigger->asSequence()->first().event.oclAsType(SignalEvent).signal.allAttributes() in&#xD;
attribute->size()>0 and result->size() = attribute->size() and&#xD;
Sequence{1..result->size()}->forAll(i | &#xD;
result->at(i).type = attribute->at(i).type and &#xD;
result->at(i).isOrdered = attribute->at(i).isOrdered and&#xD;
result->at(i).includesMultiplicity(attribute->at(i)))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MJp6zokxEeOMQ5AKLd10lA" name="conforming_type" constrainedElement="_MJp6wIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJp6z4kxEeOMQ5AKLd10lA" annotatedElement="_MJp6zokxEeOMQ5AKLd10lA">
<body>If isUnmarshall=false and all the triggers are for SignalEvents, then the type of the single result OutputPin must either be null or all the signals must conform to it.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJp60IkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>not isUnmarshall implies &#xD;
result->isEmpty() or&#xD;
let type: Type = result->first().type in&#xD;
type=null or &#xD;
(trigger->forAll(event.oclIsKindOf(SignalEvent)) and &#xD;
trigger.event.oclAsType(SignalEvent).signal->forAll(s | s.conformsTo(type)))</body>
</specification>
</ownedRule>
<generalization xmi:id="_MJp60YkxEeOMQ5AKLd10lA" general="_6WKakLLQEeCsYvaJqFFivQ"/>
<ownedAttribute xmi:id="_MJp60okxEeOMQ5AKLd10lA" name="isUnmarshall">
<ownedComment xmi:id="_MJp604kxEeOMQ5AKLd10lA" annotatedElement="_MJp60okxEeOMQ5AKLd10lA">
<body>Indicates whether there is a single OutputPin for a SignalEvent occurrence, or multiple OutputPins for attribute values of the instance of the Signal associated with a SignalEvent occurrence.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MJp61IkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MJp61YkxEeOMQ5AKLd10lA" name="result" type="_jvcRQGqEEeKQJv6i-sSgBw" isOrdered="true" aggregation="composite" subsettedProperty="_MJrv9IkxEeOMQ5AKLd10lA" association="_MLJIhokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJp61okxEeOMQ5AKLd10lA" annotatedElement="_MJp61YkxEeOMQ5AKLd10lA">
<body>OutputPins holding the values received from an Event occurrence.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MJp614kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MJp62IkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MJqh0IkxEeOMQ5AKLd10lA" name="trigger" type="_MM6qIIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MLJIg4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJqh0YkxEeOMQ5AKLd10lA" annotatedElement="_MJqh0IkxEeOMQ5AKLd10lA">
<body>The Triggers specifying the Events of which the AcceptEventAction waits for occurrences.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MJqh0okxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_6WKakLLQEeCsYvaJqFFivQ" name="Action" isAbstract="true">
<ownedComment xmi:id="_MJqh04kxEeOMQ5AKLd10lA" annotatedElement="_6WKakLLQEeCsYvaJqFFivQ">
<body>An Action is the fundamental unit of executable functionality. The execution of an Action represents some transformation or processing in the modeled system. Actions provide the ExecutableNodes within Activities and may also be used within Interactions.</body>
</ownedComment>
<generalization xmi:id="_MJqh1IkxEeOMQ5AKLd10lA" general="_MLpe0IkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MJrI4IkxEeOMQ5AKLd10lA" name="context" type="_6UV2QGwJEdq7X4sGURiZYA" isReadOnly="true" isDerived="true" association="_MLIhcIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJrI4YkxEeOMQ5AKLd10lA" annotatedElement="_MJrI4IkxEeOMQ5AKLd10lA">
<body>The context Classifier of the Behavior that contains this Action, or the Behavior itself if it has no context.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MJrI4okxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MJrI44kxEeOMQ5AKLd10lA" name="input" type="_MKHNzYkxEeOMQ5AKLd10lA" isOrdered="true" isReadOnly="true" aggregation="composite" isDerived="true" isDerivedUnion="true" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MLIhdIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJrI5IkxEeOMQ5AKLd10lA" annotatedElement="_MJrI44kxEeOMQ5AKLd10lA">
<body>The ordered set of InputPins representing the inputs to the Action.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MJrI5YkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MJrI5okxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MJrI54kxEeOMQ5AKLd10lA" name="isLocallyReentrant">
<ownedComment xmi:id="_MJrI6IkxEeOMQ5AKLd10lA" annotatedElement="_MJrI54kxEeOMQ5AKLd10lA">
<body>If true, the Action can begin a new, concurrent execution, even if there is already another execution of the Action ongoing. If false, the Action cannot begin a new execution until any previous execution has completed.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MJrI6YkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MJrI6okxEeOMQ5AKLd10lA" name="localPostcondition" type="_MNAJsIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MLJIgIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJrI64kxEeOMQ5AKLd10lA" annotatedElement="_MJrI6okxEeOMQ5AKLd10lA">
<body>A Constraint that must be satisfied when execution of the Action is completed.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MJrI7IkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MJrI7YkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MJrv8IkxEeOMQ5AKLd10lA" name="localPrecondition" type="_MNAJsIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MLIhd4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJrv8YkxEeOMQ5AKLd10lA" annotatedElement="_MJrv8IkxEeOMQ5AKLd10lA">
<body>A Constraint that must be satisfied when execution of the Action is started.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MJrv8okxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MJrv84kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MJrv9IkxEeOMQ5AKLd10lA" name="output" type="_jvcRQGqEEeKQJv6i-sSgBw" isOrdered="true" isReadOnly="true" aggregation="composite" isDerived="true" isDerivedUnion="true" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MLH6ZokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJrv9YkxEeOMQ5AKLd10lA" annotatedElement="_MJrv9IkxEeOMQ5AKLd10lA">
<body>The ordered set of OutputPins representing outputs from the Action.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MJrv9okxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MJrv94kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedOperation xmi:id="_CroQsLLREeCsYvaJqFFivQ" name="context" visibility="protected" bodyCondition="_MJuMMIkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MJs-EIkxEeOMQ5AKLd10lA" annotatedElement="_CroQsLLREeCsYvaJqFFivQ">
<body>The derivation for the context property.</body>
</ownedComment>
<ownedRule xmi:id="_MJuMMIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_CroQsLLREeCsYvaJqFFivQ _MJrI4IkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJuMMYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (let behavior: Behavior = self.containingBehavior() in&#xD;
if behavior=null then null&#xD;
else if behavior._'context' = null then behavior&#xD;
else behavior._'context'&#xD;
endif&#xD;
endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_EGwx8LLREeCsYvaJqFFivQ" name="result" type="_6UV2QGwJEdq7X4sGURiZYA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MJuMMokxEeOMQ5AKLd10lA"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MJxPgIkxEeOMQ5AKLd10lA" name="allActions" bodyCondition="_MJxPgokxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MJxPgYkxEeOMQ5AKLd10lA" annotatedElement="_MJxPgIkxEeOMQ5AKLd10lA">
<body>Return this Action and all Actions contained directly or indirectly in it. By default only the Action itself is returned, but the operation is overridden for StructuredActivityNodes.</body>
</ownedComment>
<ownedRule xmi:id="_MJxPgokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MJxPgIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJxPg4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (self->asSet())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MJxPhIkxEeOMQ5AKLd10lA" name="result" type="_6WKakLLQEeCsYvaJqFFivQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MJxPhYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MJxPhokxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MJx2kIkxEeOMQ5AKLd10lA" name="allOwnedNodes" bodyCondition="_MJx2kokxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MJx2kYkxEeOMQ5AKLd10lA" annotatedElement="_MJx2kIkxEeOMQ5AKLd10lA">
<body>Returns all the ActivityNodes directly or indirectly owned by this Action. This includes at least all the Pins of the Action.</body>
</ownedComment>
<ownedRule xmi:id="_MJx2kokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MJx2kIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJx2k4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (input.oclAsType(Pin)->asSet()->union(output->asSet()))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MJx2lIkxEeOMQ5AKLd10lA" name="result" type="_WpiyYAs-EeGcpbeCPJfCmw" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MJx2lYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MJx2lokxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MJydoIkxEeOMQ5AKLd10lA" name="containingBehavior" bodyCondition="_MJydoYkxEeOMQ5AKLd10lA" isQuery="true">
<ownedRule xmi:id="_MJydoYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MJydoIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJydookxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if inStructuredNode&lt;>null then inStructuredNode.containingBehavior() &#xD;
else if activity&lt;>null then activity&#xD;
else interaction &#xD;
endif&#xD;
endif&#xD;
)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MJydo4kxEeOMQ5AKLd10lA" name="result" type="_TUPtYGveEdq4DLWZOhbdEA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MJydpIkxEeOMQ5AKLd10lA"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MJzrwIkxEeOMQ5AKLd10lA" name="ActionInputPin">
<ownedComment xmi:id="_MJzrwYkxEeOMQ5AKLd10lA" annotatedElement="_MJzrwIkxEeOMQ5AKLd10lA">
<body>An ActionInputPin is a kind of InputPin that executes an Action to determine the values to input to another Action.</body>
</ownedComment>
<ownedRule xmi:id="_MJzrwokxEeOMQ5AKLd10lA" name="input_pin" constrainedElement="_MJzrwIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJzrw4kxEeOMQ5AKLd10lA" annotatedElement="_MJzrwokxEeOMQ5AKLd10lA">
<body>The fromAction of an ActionInputPin must only have ActionInputPins as InputPins.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJzrxIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>fromAction.input->forAll(oclIsKindOf(ActionInputPin))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MJzrxYkxEeOMQ5AKLd10lA" name="one_output_pin" constrainedElement="_MJzrwIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJzrxokxEeOMQ5AKLd10lA" annotatedElement="_MJzrxYkxEeOMQ5AKLd10lA">
<body>The fromAction of an ActionInputPin must have exactly one OutputPin.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJzrx4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>fromAction.output->size() = 1</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MJzryIkxEeOMQ5AKLd10lA" name="no_control_or_object_flow" constrainedElement="_MJzrwIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJzryYkxEeOMQ5AKLd10lA" annotatedElement="_MJzryIkxEeOMQ5AKLd10lA">
<body>The fromAction of an ActionInputPin cannot have ActivityEdges coming into or out of it or its Pins.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJzryokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>fromAction.incoming->union(outgoing)->isEmpty() and&#xD;
fromAction.input.incoming->isEmpty() and&#xD;
fromAction.output.outgoing->isEmpty()</body>
</specification>
</ownedRule>
<generalization xmi:id="_MJzry4kxEeOMQ5AKLd10lA" general="_MKHNzYkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MJzrzIkxEeOMQ5AKLd10lA" name="fromAction" type="_6WKakLLQEeCsYvaJqFFivQ" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MLH6Y4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJzrzYkxEeOMQ5AKLd10lA" annotatedElement="_MJzrzIkxEeOMQ5AKLd10lA">
<body>The Action used to provide the values of the ActionInputPin.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MJ054IkxEeOMQ5AKLd10lA" name="AddStructuralFeatureValueAction">
<ownedComment xmi:id="_MJ054YkxEeOMQ5AKLd10lA" annotatedElement="_MJ054IkxEeOMQ5AKLd10lA">
<body>An AddStructuralFeatureValueAction is a WriteStructuralFeatureAction for adding values to a StructuralFeature.</body>
</ownedComment>
<ownedRule xmi:id="_MJ054okxEeOMQ5AKLd10lA" name="required_value" constrainedElement="_MJ054IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJ0544kxEeOMQ5AKLd10lA" annotatedElement="_MJ054okxEeOMQ5AKLd10lA">
<body>A value InputPin is required.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJ055IkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>value&lt;>null</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MJ055YkxEeOMQ5AKLd10lA" name="insertAt_pin" constrainedElement="_MJ054IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJ055okxEeOMQ5AKLd10lA" annotatedElement="_MJ055YkxEeOMQ5AKLd10lA">
<body>AddStructuralFeatureActions adding a value to ordered StructuralFeatures must have a single InputPin for the insertion point with type UnlimitedNatural and multiplicity of 1..1 if isReplaceAll=false, and must have no Input Pin for the insertion point when the StructuralFeature is unordered.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJ0554kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>if not structuralFeature.isOrdered then insertAt = null
else
not isReplaceAll implies
insertAt&lt;>null and
insertAt->forAll(type=UnlimitedNatural and is(1,1.oclAsType(UnlimitedNatural)))
endif</body>
</specification>
</ownedRule>
<generalization xmi:id="_MJ056IkxEeOMQ5AKLd10lA" general="_MJnegIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MJ056YkxEeOMQ5AKLd10lA" name="insertAt" type="_MKHNzYkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MJrI44kxEeOMQ5AKLd10lA" association="_MLH6YIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJ056okxEeOMQ5AKLd10lA" annotatedElement="_MJ056YkxEeOMQ5AKLd10lA">
<body>The InputPin that gives the position at which to insert the value in an ordered StructuralFeature. The type of the insertAt InputPin is UnlimitedNatural, but the value cannot be zero. It is omitted for unordered StructuralFeatures.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MJ0564kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MJ057IkxEeOMQ5AKLd10lA" name="isReplaceAll">
<ownedComment xmi:id="_MJ057YkxEeOMQ5AKLd10lA" annotatedElement="_MJ057IkxEeOMQ5AKLd10lA">
<body>Specifies whether existing values of the StructuralFeature should be removed before adding the new value.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MJ057okxEeOMQ5AKLd10lA"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MJ2vEIkxEeOMQ5AKLd10lA" name="AddVariableValueAction">
<ownedComment xmi:id="_MJ2vEYkxEeOMQ5AKLd10lA" annotatedElement="_MJ2vEIkxEeOMQ5AKLd10lA">
<body>An AddVariableValueAction is a WriteVariableAction for adding values to a Variable.</body>
</ownedComment>
<ownedRule xmi:id="_MJ2vEokxEeOMQ5AKLd10lA" name="required_value" constrainedElement="_MJ2vEIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJ2vE4kxEeOMQ5AKLd10lA" annotatedElement="_MJ2vEokxEeOMQ5AKLd10lA">
<body>A value InputPin is required.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJ2vFIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>value &lt;> null</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MJ2vFYkxEeOMQ5AKLd10lA" name="insertAt_pin" constrainedElement="_MJ2vEIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJ2vFokxEeOMQ5AKLd10lA" annotatedElement="_MJ2vFYkxEeOMQ5AKLd10lA">
<body>AddVariableValueActions for ordered Variables must have a single InputPin for the insertion point with type UnlimtedNatural and multiplicity of 1..1 if isReplaceAll=false, otherwise the Action has no InputPin for the insertion point.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJ2vF4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>if not variable.isOrdered then insertAt = null
else
not isReplaceAll implies
insertAt&lt;>null and
insertAt->forAll(type=UnlimitedNatural and is(1,1.oclAsType(UnlimitedNatural)))
endif</body>
</specification>
</ownedRule>
<generalization xmi:id="_MJ2vGIkxEeOMQ5AKLd10lA" general="_MJoFkIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MJ2vGYkxEeOMQ5AKLd10lA" name="insertAt" type="_MKHNzYkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MJrI44kxEeOMQ5AKLd10lA" association="_MLHTW4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJ2vGokxEeOMQ5AKLd10lA" annotatedElement="_MJ2vGYkxEeOMQ5AKLd10lA">
<body>The InputPin that gives the position at which to insert a new value or move an existing value in ordered Variables. The type of the insertAt InputPin is UnlimitedNatural, but the value cannot be zero. It is omitted for unordered Variables.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MJ2vG4kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MJ2vHIkxEeOMQ5AKLd10lA" name="isReplaceAll">
<ownedComment xmi:id="_MJ2vHYkxEeOMQ5AKLd10lA" annotatedElement="_MJ2vHIkxEeOMQ5AKLd10lA">
<body>Specifies whether existing values of the Variable should be removed before adding the new value.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MJ2vHokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MJ3WIIkxEeOMQ5AKLd10lA" name="BroadcastSignalAction">
<ownedComment xmi:id="_MJ3WIYkxEeOMQ5AKLd10lA" annotatedElement="_MJ3WIIkxEeOMQ5AKLd10lA">
<body>A BroadcastSignalAction is an InvocationAction that transmits a Signal instance to all the potential target objects in the system. Values from the argument InputPins are used to provide values for the attributes of the Signal. The requestor continues execution immediately after the Signal instances are sent out and cannot receive reply values.</body>
</ownedComment>
<ownedRule xmi:id="_MJ3WIokxEeOMQ5AKLd10lA" name="number_of_arguments" constrainedElement="_MJ3WIIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJ3WI4kxEeOMQ5AKLd10lA" annotatedElement="_MJ3WIokxEeOMQ5AKLd10lA">
<body>The number of argument InputPins must be the same as the number of attributes in the signal.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJ3WJIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>argument->size() = signal.allAttributes()->size()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MJ3WJYkxEeOMQ5AKLd10lA" name="type_ordering_multiplicity" constrainedElement="_MJ3WIIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJ3WJokxEeOMQ5AKLd10lA" annotatedElement="_MJ3WJYkxEeOMQ5AKLd10lA">
<body>The type, ordering, and multiplicity of an argument InputPin must be the same as the corresponding attribute of the signal.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJ3WJ4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>let attribute: OrderedSet(Property) = signal.allAttributes() in&#xD;
Sequence{1..argument->size()}->forAll(i | &#xD;
argument->at(i).type.conformsTo(attribute->at(i).type) and &#xD;
argument->at(i).isOrdered = attribute->at(i).isOrdered and&#xD;
argument->at(i).compatibleWith(attribute->at(i)))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MJ3WKIkxEeOMQ5AKLd10lA" name="no_onport" constrainedElement="_MJ3WIIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJ3WKYkxEeOMQ5AKLd10lA" annotatedElement="_MJ3WKIkxEeOMQ5AKLd10lA">
<body>A BroadcaseSignalAction may not specify onPort.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJ3WKokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>onPort=null</body>
</specification>
</ownedRule>
<generalization xmi:id="_MJ3WK4kxEeOMQ5AKLd10lA" general="_MKH00IkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MJ3WLIkxEeOMQ5AKLd10lA" name="signal" type="_Pu3O0HL0EdqziYxiZo0YtA" association="_MLHTV4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJ3WLYkxEeOMQ5AKLd10lA" annotatedElement="_MJ3WLIkxEeOMQ5AKLd10lA">
<body>The Signal whose instances are to be sent.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MJ7nkIkxEeOMQ5AKLd10lA" name="CallAction" isAbstract="true">
<ownedComment xmi:id="_MJ7nkYkxEeOMQ5AKLd10lA" annotatedElement="_MJ7nkIkxEeOMQ5AKLd10lA">
<body>CallAction is an abstract class for Actions that invoke a Behavior with given argument values and (if the invocation is synchronous) receive reply values.</body>
</ownedComment>
<ownedRule xmi:id="_MJ7nkokxEeOMQ5AKLd10lA" name="argument_pins" constrainedElement="_MJ7nkIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJ7nk4kxEeOMQ5AKLd10lA" annotatedElement="_MJ7nkokxEeOMQ5AKLd10lA">
<body>The number of argument InputPins must be the same as the number of input (in and inout) ownedParameters of the called Behavior or Operation. The type, ordering and multiplicity of each argument InputPin must be consistent with the corresponding input Parameter.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJ7nlIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>let parameter: OrderedSet(Parameter) = self.inputParameters() in&#xD;
argument->size() = parameter->size() and&#xD;
Sequence{1..argument->size()}->forAll(i | &#xD;
argument->at(i).type.conformsTo(parameter->at(i).type) and &#xD;
argument->at(i).isOrdered = parameter->at(i).isOrdered and&#xD;
argument->at(i).compatibleWith(parameter->at(i)))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MJ7nlYkxEeOMQ5AKLd10lA" name="result_pins" constrainedElement="_MJ7nkIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJ7nlokxEeOMQ5AKLd10lA" annotatedElement="_MJ7nlYkxEeOMQ5AKLd10lA">
<body>The number of result OutputPins must be the same as the number of output (inout, out and return) ownedParameters of the called Behavior or Operation. The type, ordering and multiplicity of each result OutputPin must be consistent with the corresponding input Parameter.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJ7nl4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>let parameter: OrderedSet(Parameter) = self.outputParameters() in&#xD;
result->size() = parameter->size() and&#xD;
Sequence{1..result->size()}->forAll(i | &#xD;
parameter->at(i).type.conformsTo(result->at(i).type) and &#xD;
parameter->at(i).isOrdered = result->at(i).isOrdered and&#xD;
parameter->at(i).compatibleWith(result->at(i)))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MJ7nmIkxEeOMQ5AKLd10lA" name="synchronous_call" constrainedElement="_MJ7nkIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJ7nmYkxEeOMQ5AKLd10lA" annotatedElement="_MJ7nmIkxEeOMQ5AKLd10lA">
<body>Only synchronous CallActions can have result OutputPins.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJ7nmokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result->notEmpty() implies isSynchronous</body>
</specification>
</ownedRule>
<generalization xmi:id="_MJ7nm4kxEeOMQ5AKLd10lA" general="_MKH00IkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MJ7nnIkxEeOMQ5AKLd10lA" name="isSynchronous">
<ownedComment xmi:id="_MJ7nnYkxEeOMQ5AKLd10lA" annotatedElement="_MJ7nnIkxEeOMQ5AKLd10lA">
<body>If true, the call is synchronous and the caller waits for completion of the invoked Behavior. If false, the call is asynchronous and the caller proceeds immediately and cannot receive return values.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MJ7nnokxEeOMQ5AKLd10lA" value="true"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MJ7nn4kxEeOMQ5AKLd10lA" name="result" type="_jvcRQGqEEeKQJv6i-sSgBw" isOrdered="true" aggregation="composite" subsettedProperty="_MJrv9IkxEeOMQ5AKLd10lA" association="_MLHTVIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJ7noIkxEeOMQ5AKLd10lA" annotatedElement="_MJ7nn4kxEeOMQ5AKLd10lA">
<body>The OutputPins on which the reply values from the invocation are placed (if the call is synchronous).</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MJ7noYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MJ7nookxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedOperation xmi:id="_MJ7no4kxEeOMQ5AKLd10lA" name="inputParameters" isAbstract="true" isQuery="true">
<ownedComment xmi:id="_MJ7npIkxEeOMQ5AKLd10lA" annotatedElement="_MJ7no4kxEeOMQ5AKLd10lA">
<body>Return the in and inout ownedParameters of the Behavior or Operation being called. (This operation is abstract and should be overridden by subclasses of CallAction.)</body>
</ownedComment>
<ownedParameter xmi:id="_MJ7npYkxEeOMQ5AKLd10lA" name="result" type="_KyaPMGveEdq4DLWZOhbdEA" isOrdered="true" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MJ7npokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MJ7np4kxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MJ7nqIkxEeOMQ5AKLd10lA" name="outputParameters" isAbstract="true" isQuery="true">
<ownedComment xmi:id="_MJ7nqYkxEeOMQ5AKLd10lA" annotatedElement="_MJ7nqIkxEeOMQ5AKLd10lA">
<body>Return the inout, out and return ownedParameters of the Behavior or Operation being called. (This operation is abstract and should be overridden by subclasses of CallAction.)</body>
</ownedComment>
<ownedParameter xmi:id="_MJ7nqokxEeOMQ5AKLd10lA" name="result" type="_KyaPMGveEdq4DLWZOhbdEA" isOrdered="true" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MJ7nq4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MJ7nrIkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MJ81sIkxEeOMQ5AKLd10lA" name="CallBehaviorAction">
<ownedComment xmi:id="_MJ81sYkxEeOMQ5AKLd10lA" annotatedElement="_MJ81sIkxEeOMQ5AKLd10lA">
<body>A CallBehaviorAction is a CallAction that invokes a Behavior directly. The argument values of the CallBehaviorAction are passed on the input Parameters of the invoked Behavior. If the call is synchronous, the execution of the CallBehaviorAction waits until the execution of the invoked Behavior completes and the values of output Parameters of the Behavior are placed on the result OutputPins. If the call is asynchronous, the CallBehaviorAction completes immediately and no results values can be provided.</body>
</ownedComment>
<ownedRule xmi:id="_MJ81sokxEeOMQ5AKLd10lA" name="no_onport" constrainedElement="_MJ81sIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJ81s4kxEeOMQ5AKLd10lA" annotatedElement="_MJ81sokxEeOMQ5AKLd10lA">
<body>A CallBehaviorAction may not specify onPort.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJ81tIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>onPort=null</body>
</specification>
</ownedRule>
<generalization xmi:id="_MJ81tYkxEeOMQ5AKLd10lA" general="_MJ7nkIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MJ81tokxEeOMQ5AKLd10lA" name="behavior" type="_TUPtYGveEdq4DLWZOhbdEA" association="_MLHTUIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJ81t4kxEeOMQ5AKLd10lA" annotatedElement="_MJ81tokxEeOMQ5AKLd10lA">
<body>The Behavior being invoked.</body>
</ownedComment>
</ownedAttribute>
<ownedOperation xmi:id="_MJ81uIkxEeOMQ5AKLd10lA" name="outputParameters" bodyCondition="_MJ81uokxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MJ7nqIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJ81uYkxEeOMQ5AKLd10lA" annotatedElement="_MJ81uIkxEeOMQ5AKLd10lA">
<body>Return the inout, out and return ownedParameters of the Behavior being called.</body>
</ownedComment>
<ownedRule xmi:id="_MJ81uokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MJ81uIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJ81u4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (behavior.outputParameters())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MJ81vIkxEeOMQ5AKLd10lA" name="result" type="_KyaPMGveEdq4DLWZOhbdEA" isOrdered="true" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MJ81vYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MJ81vokxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MJ81v4kxEeOMQ5AKLd10lA" name="inputParameters" bodyCondition="_MJ81wYkxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MJ7no4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJ81wIkxEeOMQ5AKLd10lA" annotatedElement="_MJ81v4kxEeOMQ5AKLd10lA">
<body>Return the in and inout ownedParameters of the Behavior being called.</body>
</ownedComment>
<ownedRule xmi:id="_MJ81wYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MJ81v4kxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJ81wokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (behavior.inputParameters())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MJ81w4kxEeOMQ5AKLd10lA" name="result" type="_KyaPMGveEdq4DLWZOhbdEA" isOrdered="true" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MJ81xIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MJ81xYkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MJ9cwIkxEeOMQ5AKLd10lA" name="CallOperationAction">
<ownedComment xmi:id="_MJ9cwYkxEeOMQ5AKLd10lA" annotatedElement="_MJ9cwIkxEeOMQ5AKLd10lA">
<body>A CallOperationAction is a CallAction that transmits an Operation call request to the target object, where it may cause the invocation of associated Behavior. The argument values of the CallOperationAction are passed on the input Parameters of the Operation. If call is synchronous, the execution of the CallOperationAction waits until the execution of the invoked Operation completes and the values of output Parameters of the Operation are placed on the result OutputPins. If the call is asynchronous, the CallOperationAction completes immediately and no results values can be provided.</body>
</ownedComment>
<ownedRule xmi:id="_MJ9cwokxEeOMQ5AKLd10lA" name="type_target_pin" constrainedElement="_MJ9cwIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJ9cw4kxEeOMQ5AKLd10lA" annotatedElement="_MJ9cwokxEeOMQ5AKLd10lA">
<body>If onPort has no value, the operation must be an owned or inherited feature of the type of the target InputPin, otherwise the Port given by onPort must be an owned or inherited feature of the type of the target InputPin, and the Port must have a required or provided Interface with the operation as an owned or inherited feature.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJ9cxIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>if onPort=null then target.type.oclAsType(Classifier).allFeatures()->includes(operation)&#xD;
else target.type.oclAsType(Classifier).allFeatures()->includes(onPort) and onPort.provided->union(onPort.required).allFeatures()->includes(operation)&#xD;
endif</body>
</specification>
</ownedRule>
<generalization xmi:id="_MJ9cxYkxEeOMQ5AKLd10lA" general="_MJ7nkIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MJ9cxokxEeOMQ5AKLd10lA" name="operation" type="_M4X2IGveEdq4DLWZOhbdEA" association="_MLGsR4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJ9cx4kxEeOMQ5AKLd10lA" annotatedElement="_MJ9cxokxEeOMQ5AKLd10lA">
<body>The Operation being invoked.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MJ9cyIkxEeOMQ5AKLd10lA" name="target" type="_MKHNzYkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MJrI44kxEeOMQ5AKLd10lA" association="_MLGsRIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJ9cyYkxEeOMQ5AKLd10lA" annotatedElement="_MJ9cyIkxEeOMQ5AKLd10lA">
<body>The InputPin that provides the target object to which the Operation call request is sent.</body>
</ownedComment>
</ownedAttribute>
<ownedOperation xmi:id="_MJ9cyokxEeOMQ5AKLd10lA" name="outputParameters" bodyCondition="_MJ9czIkxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MJ7nqIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJ9cy4kxEeOMQ5AKLd10lA" annotatedElement="_MJ9cyokxEeOMQ5AKLd10lA">
<body>Return the inout, out and return ownedParameters of the Operation being called.</body>
</ownedComment>
<ownedRule xmi:id="_MJ9czIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MJ9cyokxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJ9czYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (operation.outputParameters())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MJ9czokxEeOMQ5AKLd10lA" name="result" type="_KyaPMGveEdq4DLWZOhbdEA" isOrdered="true" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MJ9cz4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MJ9c0IkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MJ9c0YkxEeOMQ5AKLd10lA" name="inputParameters" bodyCondition="_MJ9c04kxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MJ7no4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJ9c0okxEeOMQ5AKLd10lA" annotatedElement="_MJ9c0YkxEeOMQ5AKLd10lA">
<body>Return the in and inout ownedParameters of the Operation being called.</body>
</ownedComment>
<ownedRule xmi:id="_MJ9c04kxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MJ9c0YkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJ9c1IkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (operation.inputParameters())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MJ9c1YkxEeOMQ5AKLd10lA" name="result" type="_KyaPMGveEdq4DLWZOhbdEA" isOrdered="true" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MJ9c1okxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MJ9c14kxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MJ_R8IkxEeOMQ5AKLd10lA" name="Clause">
<ownedComment xmi:id="_MJ_R8YkxEeOMQ5AKLd10lA" annotatedElement="_MJ_R8IkxEeOMQ5AKLd10lA">
<body>A Clause is an Element that represents a single branch of a ConditionalNode, including a test and a body section. The body section is executed only if (but not necessarily if) the test section evaluates to true.</body>
</ownedComment>
<ownedRule xmi:id="_MJ_R8okxEeOMQ5AKLd10lA" name="body_output_pins" constrainedElement="_MJ_R8IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJ_R84kxEeOMQ5AKLd10lA" annotatedElement="_MJ_R8okxEeOMQ5AKLd10lA">
<body>The bodyOutput Pins are OutputPins on Actions in the body of the Clause.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJ_R9IkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>_'body'.oclAsType(Action).allActions().output->includesAll(bodyOutput)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MJ_R9YkxEeOMQ5AKLd10lA" name="decider_output" constrainedElement="_MJ_R8IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJ_R9okxEeOMQ5AKLd10lA" annotatedElement="_MJ_R9YkxEeOMQ5AKLd10lA">
<body>The decider Pin must be on an Action in the test section of the Clause and must be of type Boolean with multiplicity 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJ_R94kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>test.oclAsType(Action).allActions().output->includes(decider) and&#xD;
decider.type = Boolean and&#xD;
decider.is(1,1)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MJ_R-IkxEeOMQ5AKLd10lA" name="test_and_body" constrainedElement="_MJ_R8IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJ_R-YkxEeOMQ5AKLd10lA" annotatedElement="_MJ_R-IkxEeOMQ5AKLd10lA">
<body>The test and body parts of a ConditionalNode must be disjoint with each other.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJ_R-okxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>test->intersection(_'body')->isEmpty()</body>
</specification>
</ownedRule>
<generalization xmi:id="_MJ_R-4kxEeOMQ5AKLd10lA" general="_kl90MGvbEdq4DLWZOhbdEA"/>
<ownedAttribute xmi:id="_MJ_R_IkxEeOMQ5AKLd10lA" name="body" type="_MLpe0IkxEeOMQ5AKLd10lA" association="_MLGsQIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJ_R_YkxEeOMQ5AKLd10lA" annotatedElement="_MJ_R_IkxEeOMQ5AKLd10lA">
<body>The set of ExecutableNodes that are executed if the test evaluates to true and the Clause is chosen over other Clauses within the ConditionalNode that also have tests that evaluate to true.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MJ_R_okxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MJ_R_4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MJ_SAIkxEeOMQ5AKLd10lA" name="bodyOutput" type="_jvcRQGqEEeKQJv6i-sSgBw" isOrdered="true" association="_MLGFNokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJ_SAYkxEeOMQ5AKLd10lA" annotatedElement="_MJ_SAIkxEeOMQ5AKLd10lA">
<body>The OutputPins on Actions within the body section whose values are moved to the result OutputPins of the containing ConditionalNode after execution of the body.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MJ_SAokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MJ_SA4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MJ_SBIkxEeOMQ5AKLd10lA" name="decider" type="_jvcRQGqEEeKQJv6i-sSgBw" association="_MLGFM4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJ_SBYkxEeOMQ5AKLd10lA" annotatedElement="_MJ_SBIkxEeOMQ5AKLd10lA">
<body>An OutputPin on an Action in the test section whose Boolean value determines the result of the test.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MJ_SBokxEeOMQ5AKLd10lA" name="predecessorClause" type="_MJ_R8IkxEeOMQ5AKLd10lA" association="_MLGsQ4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJ_SB4kxEeOMQ5AKLd10lA" annotatedElement="_MJ_SBokxEeOMQ5AKLd10lA">
<body>A set of Clauses whose tests must all evaluate to false before this Clause can evaluate its test.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MJ_SCIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MJ_SCYkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MJ_SCokxEeOMQ5AKLd10lA" name="successorClause" type="_MJ_R8IkxEeOMQ5AKLd10lA" association="_MLGsQ4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJ_SC4kxEeOMQ5AKLd10lA" annotatedElement="_MJ_SCokxEeOMQ5AKLd10lA">
<body>A set of Clauses that may not evaluate their tests unless the test for this Clause evaluates to false.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MJ_SDIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MJ_SDYkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MJ_SDokxEeOMQ5AKLd10lA" name="test" type="_MLpe0IkxEeOMQ5AKLd10lA" association="_MLGFOokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJ_SD4kxEeOMQ5AKLd10lA" annotatedElement="_MJ_SDokxEeOMQ5AKLd10lA">
<body>The set of ExecutableNodes that are executed in order to provide a test result for the Clause.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MJ_SEIkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MJ_5AIkxEeOMQ5AKLd10lA" name="ClearAssociationAction">
<ownedComment xmi:id="_MJ_5AYkxEeOMQ5AKLd10lA" annotatedElement="_MJ_5AIkxEeOMQ5AKLd10lA">
<body>A ClearAssociationAction is an Action that destroys all links of an Association in which a particular object participates.</body>
</ownedComment>
<ownedRule xmi:id="_MJ_5AokxEeOMQ5AKLd10lA" name="multiplicity" constrainedElement="_MJ_5AIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJ_5A4kxEeOMQ5AKLd10lA" annotatedElement="_MJ_5AokxEeOMQ5AKLd10lA">
<body>The multiplicity of the object InputPin is 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJ_5BIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>object.is(1,1)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MJ_5BYkxEeOMQ5AKLd10lA" name="same_type" constrainedElement="_MJ_5AIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJ_5BokxEeOMQ5AKLd10lA" annotatedElement="_MJ_5BYkxEeOMQ5AKLd10lA">
<body>The type of the InputPin must conform to the type of at least one of the memberEnds of the association.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MJ_5B4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>association.memberEnd->exists(self.object.type.conformsTo(type))</body>
</specification>
</ownedRule>
<generalization xmi:id="_MJ_5CIkxEeOMQ5AKLd10lA" general="_6WKakLLQEeCsYvaJqFFivQ"/>
<ownedAttribute xmi:id="_MJ_5CYkxEeOMQ5AKLd10lA" name="association" type="_AwvxoGwNEdq7X4sGURiZYA" association="_MLGFMIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJ_5CokxEeOMQ5AKLd10lA" annotatedElement="_MJ_5CYkxEeOMQ5AKLd10lA">
<body>The Association to be cleared.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MJ_5C4kxEeOMQ5AKLd10lA" name="object" type="_MKHNzYkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MJrI44kxEeOMQ5AKLd10lA" association="_MLFeKIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MJ_5DIkxEeOMQ5AKLd10lA" annotatedElement="_MJ_5C4kxEeOMQ5AKLd10lA">
<body>The InputPin that gives the object whose participation in the Association is to be cleared.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MKAgEIkxEeOMQ5AKLd10lA" name="ClearStructuralFeatureAction">
<ownedComment xmi:id="_MKAgEYkxEeOMQ5AKLd10lA" annotatedElement="_MKAgEIkxEeOMQ5AKLd10lA">
<body>A ClearStructuralFeatureAction is a StructuralFeatureAction that removes all values of a StructuralFeature.</body>
</ownedComment>
<ownedRule xmi:id="_MKAgEokxEeOMQ5AKLd10lA" name="type_of_result" constrainedElement="_MKAgEIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKAgE4kxEeOMQ5AKLd10lA" annotatedElement="_MKAgEokxEeOMQ5AKLd10lA">
<body>The type of the result OutputPin is the same as the type of the inherited object InputPin.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKAgFIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result&lt;>null implies result.type = object.type</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKAgFYkxEeOMQ5AKLd10lA" name="multiplicity_of_result" constrainedElement="_MKAgEIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKAgFokxEeOMQ5AKLd10lA" annotatedElement="_MKAgFYkxEeOMQ5AKLd10lA">
<body>The multiplicity of the result OutputPin must be 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKAgF4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result&lt;>null implies result.is(1,1)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MKAgGIkxEeOMQ5AKLd10lA" general="_MKqnYIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MKAgGYkxEeOMQ5AKLd10lA" name="result" type="_jvcRQGqEEeKQJv6i-sSgBw" aggregation="composite" subsettedProperty="_MJrv9IkxEeOMQ5AKLd10lA" association="_MLFeJYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKAgGokxEeOMQ5AKLd10lA" annotatedElement="_MKAgGYkxEeOMQ5AKLd10lA">
<body>The OutputPin on which is put the input object as modified by the ClearStructuralFeatureAction.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKAgG4kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MKBHIIkxEeOMQ5AKLd10lA" name="ClearVariableAction">
<ownedComment xmi:id="_MKBHIYkxEeOMQ5AKLd10lA" annotatedElement="_MKBHIIkxEeOMQ5AKLd10lA">
<body>A ClearVariableAction is a VariableAction that removes all values of a Variable.</body>
</ownedComment>
<generalization xmi:id="_MKBHIokxEeOMQ5AKLd10lA" general="_MJkbMIkxEeOMQ5AKLd10lA"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MKCVQIkxEeOMQ5AKLd10lA" name="ConditionalNode">
<ownedComment xmi:id="_MKCVQYkxEeOMQ5AKLd10lA" annotatedElement="_MKCVQIkxEeOMQ5AKLd10lA">
<body>A ConditionalNode is a StructuredActivityNode that chooses one among some number of alternative collections of ExecutableNodes to execute.</body>
</ownedComment>
<ownedRule xmi:id="_MKCVQokxEeOMQ5AKLd10lA" name="result_no_incoming" constrainedElement="_MKCVQIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKCVQ4kxEeOMQ5AKLd10lA" annotatedElement="_MKCVQokxEeOMQ5AKLd10lA">
<body>The result OutputPins have no incoming edges.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKCVRIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result.incoming->isEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKCVRYkxEeOMQ5AKLd10lA" name="no_input_pins" constrainedElement="_MKCVQIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKCVRokxEeOMQ5AKLd10lA" annotatedElement="_MKCVRYkxEeOMQ5AKLd10lA">
<body>A ConditionalNode has no InputPins.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKCVR4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>input->isEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKCVSIkxEeOMQ5AKLd10lA" name="one_clause_with_executable_node" constrainedElement="_MKCVQIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKCVSYkxEeOMQ5AKLd10lA" annotatedElement="_MKCVSIkxEeOMQ5AKLd10lA">
<body>No ExecutableNode in the ConditionNode may appear in the test or body part of more than one clause of a ConditionalNode.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKCVSokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>node->select(oclIsKindOf(ExecutableNode)).oclAsType(ExecutableNode)->forAll(n | &#xD;
self.clause->select(test->union(_'body')->includes(n))->size()=1)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKCVS4kxEeOMQ5AKLd10lA" name="matching_output_pins" constrainedElement="_MKCVQIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKCVTIkxEeOMQ5AKLd10lA" annotatedElement="_MKCVS4kxEeOMQ5AKLd10lA">
<body>Each clause of a ConditionalNode must have the same number of bodyOutput pins as the ConditionalNode has result OutputPins, and each clause bodyOutput Pin must be compatible with the corresponding result OutputPin (by positional order) in type, multiplicity, ordering, and uniqueness.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKCVTYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>clause->forAll(&#xD;
bodyOutput->size()=self.result->size() and&#xD;
Sequence{1..self.result->size()}->forAll(i |&#xD;
bodyOutput->at(i).type.conformsTo(result->at(i).type) and&#xD;
bodyOutput->at(i).isOrdered = result->at(i).isOrdered and&#xD;
bodyOutput->at(i).isUnique = result->at(i).isUnique and&#xD;
bodyOutput->at(i).compatibleWith(result->at(i))))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKCVTokxEeOMQ5AKLd10lA" name="executable_nodes" constrainedElement="_MKCVQIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKCVT4kxEeOMQ5AKLd10lA" annotatedElement="_MKCVTokxEeOMQ5AKLd10lA">
<body>The union of the ExecutableNodes in the test and body parts of all clauses must be the same as the subset of nodes contained in the ConditionalNode (considered as a StructuredActivityNode) that are ExecutableNodes.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKCVUIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>clause.test->union(clause._'body') = node->select(oclIsKindOf(ExecutableNode)).oclAsType(ExecutableNode)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKCVUYkxEeOMQ5AKLd10lA" name="clause_no_predecessor" constrainedElement="_MKCVQIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKCVUokxEeOMQ5AKLd10lA" annotatedElement="_MKCVUYkxEeOMQ5AKLd10lA">
<body>No two clauses within a ConditionalNode may be predecessorClauses of each other, either directly or indirectly.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKCVU4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>clause->closure(predecessorClause)->intersection(clause)->isEmpty()</body>
</specification>
</ownedRule>
<generalization xmi:id="_MKCVVIkxEeOMQ5AKLd10lA" general="_w1_2cLLREeCsYvaJqFFivQ"/>
<ownedAttribute xmi:id="_MKCVVYkxEeOMQ5AKLd10lA" name="clause" type="_MJ_R8IkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MLFeIIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKCVVokxEeOMQ5AKLd10lA" annotatedElement="_MKCVVYkxEeOMQ5AKLd10lA">
<body>The set of Clauses composing the ConditionalNode.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKCVV4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MKCVWIkxEeOMQ5AKLd10lA" name="isAssured">
<ownedComment xmi:id="_MKCVWYkxEeOMQ5AKLd10lA" annotatedElement="_MKCVWIkxEeOMQ5AKLd10lA">
<body>If true, the modeler asserts that the test for at least one Clause of the ConditionalNode will succeed.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MKCVWokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MKCVW4kxEeOMQ5AKLd10lA" name="isDeterminate">
<ownedComment xmi:id="_MKCVXIkxEeOMQ5AKLd10lA" annotatedElement="_MKCVW4kxEeOMQ5AKLd10lA">
<body>If true, the modeler asserts that the test for at most one Clause of the ConditionalNode will succeed.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MKCVXYkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MKCVXokxEeOMQ5AKLd10lA" name="result" type="_jvcRQGqEEeKQJv6i-sSgBw" isOrdered="true" aggregation="composite" redefinedProperty="_MKtDoIkxEeOMQ5AKLd10lA" association="_MLFeIokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKCVX4kxEeOMQ5AKLd10lA" annotatedElement="_MKCVXokxEeOMQ5AKLd10lA">
<body>The OutputPins that onto which are moved values from the bodyOutputs of the Clause selected for execution.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKCVYIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKCVYYkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedOperation xmi:id="_MKCVYokxEeOMQ5AKLd10lA" name="allActions" bodyCondition="_MKCVZIkxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MJxPgIkxEeOMQ5AKLd10lA _MKtDqIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKCVY4kxEeOMQ5AKLd10lA" annotatedElement="_MKCVYokxEeOMQ5AKLd10lA">
<body>Return only this ConditionalNode. This prevents Actions within the ConditionalNode from having their OutputPins used as bodyOutputs or decider Pins in containing LoopNodes or ConditionalNodes.</body>
</ownedComment>
<ownedRule xmi:id="_MKCVZIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MKCVYokxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKCVZYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (self->asSet())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MKCVZokxEeOMQ5AKLd10lA" name="result" type="_6WKakLLQEeCsYvaJqFFivQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKCVZ4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKCVaIkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MKC8UIkxEeOMQ5AKLd10lA" name="CreateLinkAction">
<ownedComment xmi:id="_MKC8UYkxEeOMQ5AKLd10lA" annotatedElement="_MKC8UIkxEeOMQ5AKLd10lA">
<body>A CreateLinkAction is a WriteLinkAction for creating links.</body>
</ownedComment>
<ownedRule xmi:id="_MKC8UokxEeOMQ5AKLd10lA" name="association_not_abstract" constrainedElement="_MKC8UIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKC8U4kxEeOMQ5AKLd10lA" annotatedElement="_MKC8UokxEeOMQ5AKLd10lA">
<body>The Association cannot be an abstract Classifier.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKC8VIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>not self.association().isAbstract</body>
</specification>
</ownedRule>
<generalization xmi:id="_MKC8VYkxEeOMQ5AKLd10lA" general="_MJlCQIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MKC8VokxEeOMQ5AKLd10lA" name="endData" type="_MKJqAIkxEeOMQ5AKLd10lA" aggregation="composite" redefinedProperty="_MKJC_IkxEeOMQ5AKLd10lA" association="_MLE3GokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKC8V4kxEeOMQ5AKLd10lA" annotatedElement="_MKC8VokxEeOMQ5AKLd10lA">
<body>The LinkEndData that specifies the values to be placed on the Association ends for the new link.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKC8WIkxEeOMQ5AKLd10lA" value="2"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKC8WYkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MKDjYIkxEeOMQ5AKLd10lA" name="CreateLinkObjectAction">
<ownedComment xmi:id="_MKDjYYkxEeOMQ5AKLd10lA" annotatedElement="_MKDjYIkxEeOMQ5AKLd10lA">
<body>A CreateLinkObjectAction is a CreateLinkAction for creating link objects (AssociationClasse instances).</body>
</ownedComment>
<ownedRule xmi:id="_MKDjYokxEeOMQ5AKLd10lA" name="multiplicity" constrainedElement="_MKDjYIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKDjY4kxEeOMQ5AKLd10lA" annotatedElement="_MKDjYokxEeOMQ5AKLd10lA">
<body>The multiplicity of the OutputPin is 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKDjZIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result.is(1,1)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKDjZYkxEeOMQ5AKLd10lA" name="type_of_result" constrainedElement="_MKDjYIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKDjZokxEeOMQ5AKLd10lA" annotatedElement="_MKDjZYkxEeOMQ5AKLd10lA">
<body>The type of the result OutputPin must be the same as the Association of the CreateLinkObjectAction.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKDjZ4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result.type = association()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKDjaIkxEeOMQ5AKLd10lA" name="association_class" constrainedElement="_MKDjYIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKDjaYkxEeOMQ5AKLd10lA" annotatedElement="_MKDjaIkxEeOMQ5AKLd10lA">
<body>The Association must be an AssociationClass.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKDjaokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>self.association().oclIsKindOf(AssociationClass)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MKDja4kxEeOMQ5AKLd10lA" general="_MKC8UIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MKDjbIkxEeOMQ5AKLd10lA" name="result" type="_jvcRQGqEEeKQJv6i-sSgBw" aggregation="composite" subsettedProperty="_MJrv9IkxEeOMQ5AKLd10lA" association="_MLE3F4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKDjbYkxEeOMQ5AKLd10lA" annotatedElement="_MKDjbIkxEeOMQ5AKLd10lA">
<body>The output pin on which the newly created link object is placed.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MKEKcIkxEeOMQ5AKLd10lA" name="CreateObjectAction">
<ownedComment xmi:id="_MKEKcYkxEeOMQ5AKLd10lA" annotatedElement="_MKEKcIkxEeOMQ5AKLd10lA">
<body>A CreateObjectAction is an Action that creates an instance of the specified Classifier.</body>
</ownedComment>
<ownedRule xmi:id="_MKEKcokxEeOMQ5AKLd10lA" name="classifier_not_abstract" constrainedElement="_MKEKcIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKEKc4kxEeOMQ5AKLd10lA" annotatedElement="_MKEKcokxEeOMQ5AKLd10lA">
<body>The classifier cannot be abstract.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKEKdIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>not classifier.isAbstract</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKEKdYkxEeOMQ5AKLd10lA" name="multiplicity" constrainedElement="_MKEKcIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKEKdokxEeOMQ5AKLd10lA" annotatedElement="_MKEKdYkxEeOMQ5AKLd10lA">
<body>The multiplicity of the result OutputPin is 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKEKd4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result.is(1,1)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKEKeIkxEeOMQ5AKLd10lA" name="classifier_not_association_class" constrainedElement="_MKEKcIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKEKeYkxEeOMQ5AKLd10lA" annotatedElement="_MKEKeIkxEeOMQ5AKLd10lA">
<body>The classifier cannot be an AssociationClass.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKEKeokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>not classifier.oclIsKindOf(AssociationClass)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKEKe4kxEeOMQ5AKLd10lA" name="same_type" constrainedElement="_MKEKcIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKEKfIkxEeOMQ5AKLd10lA" annotatedElement="_MKEKe4kxEeOMQ5AKLd10lA">
<body>The type of the result OutputPin must be the same as the classifier of the CreateObjectAction.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKEKfYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result.type = classifier</body>
</specification>
</ownedRule>
<generalization xmi:id="_MKEKfokxEeOMQ5AKLd10lA" general="_6WKakLLQEeCsYvaJqFFivQ"/>
<ownedAttribute xmi:id="_MKEKf4kxEeOMQ5AKLd10lA" name="classifier" type="_6UV2QGwJEdq7X4sGURiZYA" association="_MLE3EIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKEKgIkxEeOMQ5AKLd10lA" annotatedElement="_MKEKf4kxEeOMQ5AKLd10lA">
<body>The Classifier to be instantiated.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MKEKgYkxEeOMQ5AKLd10lA" name="result" type="_jvcRQGqEEeKQJv6i-sSgBw" aggregation="composite" subsettedProperty="_MJrv9IkxEeOMQ5AKLd10lA" association="_MLE3FIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKEKgokxEeOMQ5AKLd10lA" annotatedElement="_MKEKgYkxEeOMQ5AKLd10lA">
<body>The OutputPin on which the newly created object is placed.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MKExgIkxEeOMQ5AKLd10lA" name="DestroyLinkAction">
<ownedComment xmi:id="_MKExgYkxEeOMQ5AKLd10lA" annotatedElement="_MKExgIkxEeOMQ5AKLd10lA">
<body>A DestroyLinkAction is a WriteLinkAction that destroys links (including link objects).</body>
</ownedComment>
<generalization xmi:id="_MKExgokxEeOMQ5AKLd10lA" general="_MJlCQIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MKExg4kxEeOMQ5AKLd10lA" name="endData" type="_MKMGQIkxEeOMQ5AKLd10lA" aggregation="composite" redefinedProperty="_MKJC_IkxEeOMQ5AKLd10lA" association="_MLEQBYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKExhIkxEeOMQ5AKLd10lA" annotatedElement="_MKExg4kxEeOMQ5AKLd10lA">
<body>The LinkEndData that the values of the Association ends for the links to be destroyed.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKExhYkxEeOMQ5AKLd10lA" value="2"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKExhokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MKFYkIkxEeOMQ5AKLd10lA" name="DestroyObjectAction">
<ownedComment xmi:id="_MKFYkYkxEeOMQ5AKLd10lA" annotatedElement="_MKFYkIkxEeOMQ5AKLd10lA">
<body>A DestroyObjectAction is an Action that destroys objects.</body>
</ownedComment>
<ownedRule xmi:id="_MKFYkokxEeOMQ5AKLd10lA" name="multiplicity" constrainedElement="_MKFYkIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKFYk4kxEeOMQ5AKLd10lA" annotatedElement="_MKFYkokxEeOMQ5AKLd10lA">
<body>The multiplicity of the targe IinputPin is 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKFYlIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>target.is(1,1)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKFYlYkxEeOMQ5AKLd10lA" name="no_type" constrainedElement="_MKFYkIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKFYlokxEeOMQ5AKLd10lA" annotatedElement="_MKFYlYkxEeOMQ5AKLd10lA">
<body>The target InputPin has no type.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKFYl4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>target.type= null</body>
</specification>
</ownedRule>
<generalization xmi:id="_MKFYmIkxEeOMQ5AKLd10lA" general="_6WKakLLQEeCsYvaJqFFivQ"/>
<ownedAttribute xmi:id="_MKFYmYkxEeOMQ5AKLd10lA" name="isDestroyLinks">
<ownedComment xmi:id="_MKFYmokxEeOMQ5AKLd10lA" annotatedElement="_MKFYmYkxEeOMQ5AKLd10lA">
<body>Specifies whether links in which the object participates are destroyed along with the object.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MKFYm4kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MKFYnIkxEeOMQ5AKLd10lA" name="isDestroyOwnedObjects">
<ownedComment xmi:id="_MKFYnYkxEeOMQ5AKLd10lA" annotatedElement="_MKFYnIkxEeOMQ5AKLd10lA">
<body>Specifies whether objects owned by the object (via composition) are destroyed along with the object.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MKFYnokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MKFYn4kxEeOMQ5AKLd10lA" name="target" type="_MKHNzYkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MJrI44kxEeOMQ5AKLd10lA" association="_MLEQAokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKFYoIkxEeOMQ5AKLd10lA" annotatedElement="_MKFYn4kxEeOMQ5AKLd10lA">
<body>The InputPin providing the object to be destroyed.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MKF_oIkxEeOMQ5AKLd10lA" name="ExpansionNode">
<ownedComment xmi:id="_MKF_oYkxEeOMQ5AKLd10lA" annotatedElement="_MKF_oIkxEeOMQ5AKLd10lA">
<body>An ExpansionNode is an ObjectNode used to indicate a collection input or output for an ExpansionRegion. A collection input of an ExpansionRegion contains a collection that is broken into its individual elements inside the region, whose content is executed once per element. A collection output of an ExpansionRegion combines individual elements produced by the execution of the region into a collection for use outside the region.</body>
</ownedComment>
<ownedRule xmi:id="_MKF_ookxEeOMQ5AKLd10lA" name="region_as_input_or_output" constrainedElement="_MKF_oIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKF_o4kxEeOMQ5AKLd10lA" annotatedElement="_MKF_ookxEeOMQ5AKLd10lA">
<body>One of regionAsInput or regionAsOutput must be non-empty, but not both.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKF_pIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>regionAsInput->notEmpty() xor regionAsOutput->notEmpty()</body>
</specification>
</ownedRule>
<generalization xmi:id="_MKF_pYkxEeOMQ5AKLd10lA" general="_MLu-YIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MKF_pokxEeOMQ5AKLd10lA" name="regionAsInput" type="_MKHNwIkxEeOMQ5AKLd10lA" association="_MLEQAIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKF_p4kxEeOMQ5AKLd10lA" annotatedElement="_MKF_pokxEeOMQ5AKLd10lA">
<body>The ExpansionRegion for which the ExpansionNode is an input.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKF_qIkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MKF_qYkxEeOMQ5AKLd10lA" name="regionAsOutput" type="_MKHNwIkxEeOMQ5AKLd10lA" association="_MLEQAYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKF_qokxEeOMQ5AKLd10lA" annotatedElement="_MKF_qYkxEeOMQ5AKLd10lA">
<body>The ExpansionRegion for which the ExpansionNode is an output.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKF_q4kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MKHNwIkxEeOMQ5AKLd10lA" name="ExpansionRegion">
<ownedComment xmi:id="_MKHNwYkxEeOMQ5AKLd10lA" annotatedElement="_MKHNwIkxEeOMQ5AKLd10lA">
<body>An ExpansionRegion is a StructuredActivityNode that executes its content multiple times corresponding to elements of input collection(s).</body>
</ownedComment>
<generalization xmi:id="_MKHNwokxEeOMQ5AKLd10lA" general="_w1_2cLLREeCsYvaJqFFivQ"/>
<ownedAttribute xmi:id="_MKHNw4kxEeOMQ5AKLd10lA" name="inputElement" type="_MKF_oIkxEeOMQ5AKLd10lA" association="_MLEQAIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKHNxIkxEeOMQ5AKLd10lA" annotatedElement="_MKHNw4kxEeOMQ5AKLd10lA">
<body>The ExpansionNodes that hold the input collections for the ExpansionRegion.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKHNxYkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MKHNxokxEeOMQ5AKLd10lA" name="mode" type="_MJosoIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKHNx4kxEeOMQ5AKLd10lA" annotatedElement="_MKHNxokxEeOMQ5AKLd10lA">
<body>The mode in which the ExpansionRegion executes its contents. If parallel, executions are concurrent. If iterative, executions are sequential. If stream, a stream of values flows into a single execution.</body>
</ownedComment>
<defaultValue xmi:type="uml:InstanceValue" xmi:id="_MKHNyIkxEeOMQ5AKLd10lA" type="_MJosoIkxEeOMQ5AKLd10lA" instance="_MJospIkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MKHNyYkxEeOMQ5AKLd10lA" name="outputElement" type="_MKF_oIkxEeOMQ5AKLd10lA" association="_MLEQAYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKHNyokxEeOMQ5AKLd10lA" annotatedElement="_MKHNyYkxEeOMQ5AKLd10lA">
<body>The ExpansionNodes that form the output collections of the ExpansionRegion.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKHNy4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKHNzIkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MKHNzYkxEeOMQ5AKLd10lA" name="InputPin">
<ownedComment xmi:id="_MKHNzokxEeOMQ5AKLd10lA" annotatedElement="_MKHNzYkxEeOMQ5AKLd10lA">
<body>An InputPin is a Pin that holds input values to be consumed by an Action.</body>
</ownedComment>
<ownedRule xmi:id="_MKHNz4kxEeOMQ5AKLd10lA" name="outgoing_edges_structured_only" constrainedElement="_MKHNzYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKHN0IkxEeOMQ5AKLd10lA" annotatedElement="_MKHNz4kxEeOMQ5AKLd10lA">
<body>An InputPin may have outgoing ActivityEdges only when it is owned by a StructuredActivityNode, and these edges must target a node contained (directly or indirectly) in the owning StructuredActivityNode.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKHN0YkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>outgoing->notEmpty() implies&#xD;
action&lt;>null and&#xD;
action.oclIsKindOf(StructuredActivityNode) and&#xD;
action.oclAsType(StructuredActivityNode).allOwnedNodes()->includesAll(outgoing.target)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MKHN0okxEeOMQ5AKLd10lA" general="_MKVQMIkxEeOMQ5AKLd10lA"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MKH00IkxEeOMQ5AKLd10lA" name="InvocationAction" isAbstract="true">
<ownedComment xmi:id="_MKH00YkxEeOMQ5AKLd10lA" annotatedElement="_MKH00IkxEeOMQ5AKLd10lA">
<body>InvocationAction is an abstract class for the various actions that request Behavior invocation.</body>
</ownedComment>
<generalization xmi:id="_MKH00okxEeOMQ5AKLd10lA" general="_6WKakLLQEeCsYvaJqFFivQ"/>
<ownedAttribute xmi:id="_MKH004kxEeOMQ5AKLd10lA" name="argument" type="_MKHNzYkxEeOMQ5AKLd10lA" isOrdered="true" aggregation="composite" subsettedProperty="_MJrI44kxEeOMQ5AKLd10lA" association="_MLDo8okxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKH01IkxEeOMQ5AKLd10lA" annotatedElement="_MKH004kxEeOMQ5AKLd10lA">
<body>The InputPins that provide the argument values passed in the invocation request.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKH01YkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKH01okxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MKH014kxEeOMQ5AKLd10lA" name="onPort" type="_ZAuvEGveEdq4DLWZOhbdEA" association="_MLDo9YkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKH02IkxEeOMQ5AKLd10lA" annotatedElement="_MKH014kxEeOMQ5AKLd10lA">
<body>For CallOperationActions, SendSignalActions, and SendObjectActions, an optional Port of the target object through which the invocation request is sent.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKH02YkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MKJC8IkxEeOMQ5AKLd10lA" name="LinkAction" isAbstract="true">
<ownedComment xmi:id="_MKJC8YkxEeOMQ5AKLd10lA" annotatedElement="_MKJC8IkxEeOMQ5AKLd10lA">
<body>LinkAction is an abstract class for all Actions that identify the links to be acted on using LinkEndData.</body>
</ownedComment>
<ownedRule xmi:id="_MKJC8okxEeOMQ5AKLd10lA" name="same_pins" constrainedElement="_MKJC8IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKJC84kxEeOMQ5AKLd10lA" annotatedElement="_MKJC8okxEeOMQ5AKLd10lA">
<body>The inputValue InputPins is the same as the union of all the InputPins referenced by the endData.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKJC9IkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>inputValue->asBag()=endData.allPins()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKJC9YkxEeOMQ5AKLd10lA" name="same_association" constrainedElement="_MKJC8IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKJC9okxEeOMQ5AKLd10lA" annotatedElement="_MKJC9YkxEeOMQ5AKLd10lA">
<body>The ends of the endData must all be from the same Association and include all and only the memberEnds of that association.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKJC94kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>endData.end = self.association().memberEnd->asBag()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKJC-IkxEeOMQ5AKLd10lA" name="not_static" constrainedElement="_MKJC8IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKJC-YkxEeOMQ5AKLd10lA" annotatedElement="_MKJC-IkxEeOMQ5AKLd10lA">
<body>The ends of the endData must not be static.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKJC-okxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>endData->forAll(not end.isStatic)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MKJC-4kxEeOMQ5AKLd10lA" general="_6WKakLLQEeCsYvaJqFFivQ"/>
<ownedAttribute xmi:id="_MKJC_IkxEeOMQ5AKLd10lA" name="endData" type="_MKK4IIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MLDo8IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKJC_YkxEeOMQ5AKLd10lA" annotatedElement="_MKJC_IkxEeOMQ5AKLd10lA">
<body>The LinkEndData identifying the values on the ends of the links acting on by this LinkAction.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKJC_okxEeOMQ5AKLd10lA" value="2"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKJC_4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MKJDAIkxEeOMQ5AKLd10lA" name="inputValue" type="_MKHNzYkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MJrI44kxEeOMQ5AKLd10lA" association="_MLDB5YkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKJDAYkxEeOMQ5AKLd10lA" annotatedElement="_MKJDAIkxEeOMQ5AKLd10lA">
<body>InputPins used by the LinkEndData of the LinkAction.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKJDAokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedOperation xmi:id="_MKJDA4kxEeOMQ5AKLd10lA" name="association" bodyCondition="_MKJDBYkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MKJDBIkxEeOMQ5AKLd10lA" annotatedElement="_MKJDA4kxEeOMQ5AKLd10lA">
<body>Returns the Association acted on by this LinkAction.</body>
</ownedComment>
<ownedRule xmi:id="_MKJDBYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MKJDA4kxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKJDBokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (endData->asSequence()->first().end.association)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MKJDB4kxEeOMQ5AKLd10lA" name="result" type="_AwvxoGwNEdq7X4sGURiZYA" direction="return"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MKJqAIkxEeOMQ5AKLd10lA" name="LinkEndCreationData">
<ownedComment xmi:id="_MKJqAYkxEeOMQ5AKLd10lA" annotatedElement="_MKJqAIkxEeOMQ5AKLd10lA">
<body>LinkEndCreationData is LinkEndData used to provide values for one end of a link to be created by a CreateLinkAction.</body>
</ownedComment>
<ownedRule xmi:id="_MKJqAokxEeOMQ5AKLd10lA" name="insertAt_pin" constrainedElement="_MKJqAIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKJqA4kxEeOMQ5AKLd10lA" annotatedElement="_MKJqAokxEeOMQ5AKLd10lA">
<body>LinkEndCreationData for ordered Association ends must have a single insertAt InputPin for the insertion point with type UnlimitedNatural and multiplicity of 1..1, if isReplaceAll=false, and must have no InputPin for the insertion point when the association ends are unordered.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKJqBIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>if not end.isOrdered
then insertAt = null
else
not isReplaceAll=false implies
insertAt &lt;> null and insertAt->forAll(type=UnlimitedNatural and is(1,1))
endif</body>
</specification>
</ownedRule>
<generalization xmi:id="_MKJqBYkxEeOMQ5AKLd10lA" general="_MKK4IIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MKJqBokxEeOMQ5AKLd10lA" name="insertAt" type="_MKHNzYkxEeOMQ5AKLd10lA" association="_MLDB4okxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKJqB4kxEeOMQ5AKLd10lA" annotatedElement="_MKJqBokxEeOMQ5AKLd10lA">
<body>For ordered Association ends, the InputPin that provides the position where the new link should be inserted or where an existing link should be moved to. The type of the insertAt InputPin is UnlimitedNatural, but the input cannot be zero. It is omitted for Association ends that are not ordered.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKJqCIkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MKJqCYkxEeOMQ5AKLd10lA" name="isReplaceAll">
<ownedComment xmi:id="_MKJqCokxEeOMQ5AKLd10lA" annotatedElement="_MKJqCYkxEeOMQ5AKLd10lA">
<body>Specifies whether the existing links emanating from the object on this end should be destroyed before creating a new link.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MKJqC4kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedOperation xmi:id="_MKJqDIkxEeOMQ5AKLd10lA" name="allPins" bodyCondition="_MKJqDokxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MKK4O4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKJqDYkxEeOMQ5AKLd10lA" annotatedElement="_MKJqDIkxEeOMQ5AKLd10lA">
<body>Adds the insertAt InputPin (if any) to the set of all Pins.</body>
</ownedComment>
<ownedRule xmi:id="_MKJqDokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MKJqDIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKJqD4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (self.LinkEndData::allPins()->including(insertAt))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MKJqEIkxEeOMQ5AKLd10lA" name="result" type="_MKHNzYkxEeOMQ5AKLd10lA" isUnique="false" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKJqEYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKJqEokxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MKK4IIkxEeOMQ5AKLd10lA" name="LinkEndData">
<ownedComment xmi:id="_MKK4IYkxEeOMQ5AKLd10lA" annotatedElement="_MKK4IIkxEeOMQ5AKLd10lA">
<body>LinkEndData is an Element that identifies on end of a link to be read or written by a LinkAction. As a link (that is not a link object) cannot be passed as a runtime value to or from an Action, it is instead identified by its end objects and qualifier values, if any. A LinkEndData instance provides these values for a single Association end.</body>
</ownedComment>
<ownedRule xmi:id="_MKK4IokxEeOMQ5AKLd10lA" name="same_type" constrainedElement="_MKK4IIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKK4I4kxEeOMQ5AKLd10lA" annotatedElement="_MKK4IokxEeOMQ5AKLd10lA">
<body>The type of the value InputPin conforms to the type of the Association end.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKK4JIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>value&lt;>null implies value.type.conformsTo(end.type)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKK4JYkxEeOMQ5AKLd10lA" name="multiplicity" constrainedElement="_MKK4IIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKK4JokxEeOMQ5AKLd10lA" annotatedElement="_MKK4JYkxEeOMQ5AKLd10lA">
<body>The multiplicity of the value InputPin must be 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKK4J4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>value&lt;>null implies value.is(1,1)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKK4KIkxEeOMQ5AKLd10lA" name="end_object_input_pin" constrainedElement="_MKK4IIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKK4KYkxEeOMQ5AKLd10lA" annotatedElement="_MKK4KIkxEeOMQ5AKLd10lA">
<body>The value InputPin is not also the qualifier value InputPin.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKK4KokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>value->excludesAll(qualifier.value)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKK4K4kxEeOMQ5AKLd10lA" name="property_is_association_end" constrainedElement="_MKK4IIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKK4LIkxEeOMQ5AKLd10lA" annotatedElement="_MKK4K4kxEeOMQ5AKLd10lA">
<body>The Property must be an Association memberEnd.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKK4LYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>end.association &lt;> null</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKK4LokxEeOMQ5AKLd10lA" name="qualifiers" constrainedElement="_MKK4IIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKK4L4kxEeOMQ5AKLd10lA" annotatedElement="_MKK4LokxEeOMQ5AKLd10lA">
<body>The qualifiers must be qualifiers of the Association end.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKK4MIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>end.qualifier->includesAll(qualifier.qualifier)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MKK4MYkxEeOMQ5AKLd10lA" general="_kl90MGvbEdq4DLWZOhbdEA"/>
<ownedAttribute xmi:id="_MKK4MokxEeOMQ5AKLd10lA" name="end" type="_Jp_1oGveEdq4DLWZOhbdEA" association="_MLCa04kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKK4M4kxEeOMQ5AKLd10lA" annotatedElement="_MKK4MokxEeOMQ5AKLd10lA">
<body>The Association end for which this LinkEndData specifies values.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MKK4NIkxEeOMQ5AKLd10lA" name="qualifier" type="_MKWeUIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MLDB4IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKK4NYkxEeOMQ5AKLd10lA" annotatedElement="_MKK4NIkxEeOMQ5AKLd10lA">
<body>A set of QualifierValues used to provide values for the qualifiers of the end.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKK4NokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKK4N4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MKK4OIkxEeOMQ5AKLd10lA" name="value" type="_MKHNzYkxEeOMQ5AKLd10lA" association="_MLCa0IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKK4OYkxEeOMQ5AKLd10lA" annotatedElement="_MKK4OIkxEeOMQ5AKLd10lA">
<body>The InputPin that provides the specified value for the given end. This InputPin is omitted if the LinkEndData specifies the &quot;open&quot; end for a ReadLinkAction.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKK4OokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedOperation xmi:id="_MKK4O4kxEeOMQ5AKLd10lA" name="allPins" bodyCondition="_MKK4PYkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MKK4PIkxEeOMQ5AKLd10lA" annotatedElement="_MKK4O4kxEeOMQ5AKLd10lA">
<body>Returns all the InputPins referenced by this LinkEndData. By default this includes the value and qualifier InputPins, but subclasses may override the operation to add other InputPins.</body>
</ownedComment>
<ownedRule xmi:id="_MKK4PYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MKK4O4kxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKK4PokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (value->asBag()->union(qualifier.value))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MKK4P4kxEeOMQ5AKLd10lA" name="result" type="_MKHNzYkxEeOMQ5AKLd10lA" isUnique="false" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKK4QIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKK4QYkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MKMGQIkxEeOMQ5AKLd10lA" name="LinkEndDestructionData">
<ownedComment xmi:id="_MKMGQYkxEeOMQ5AKLd10lA" annotatedElement="_MKMGQIkxEeOMQ5AKLd10lA">
<body>LinkEndDestructionData is LinkEndData used to provide values for one end of a link to be destroyed by a DestroyLinkAction.</body>
</ownedComment>
<ownedRule xmi:id="_MKMGQokxEeOMQ5AKLd10lA" name="destroyAt_pin" constrainedElement="_MKMGQIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKMGQ4kxEeOMQ5AKLd10lA" annotatedElement="_MKMGQokxEeOMQ5AKLd10lA">
<body>LinkEndDestructionData for ordered, nonunique Association ends must have a single destroyAt InputPin if isDestroyDuplicates is false, which must be of type UnlimitedNatural and have a multiplicity of 1..1. Otherwise, the action has no destroyAt input pin.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKMGRIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>if not end.isOrdered or end.isUnique or isDestroyDuplicates&#xD;
then destroyAt = null&#xD;
else&#xD;
destroyAt &lt;> null and &#xD;
destroyAt->forAll(type=UnlimitedNatural and is(1,1))&#xD;
endif</body>
</specification>
</ownedRule>
<generalization xmi:id="_MKMGRYkxEeOMQ5AKLd10lA" general="_MKK4IIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MKMGRokxEeOMQ5AKLd10lA" name="destroyAt" type="_MKHNzYkxEeOMQ5AKLd10lA" association="_MLBzw4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKMGR4kxEeOMQ5AKLd10lA" annotatedElement="_MKMGRokxEeOMQ5AKLd10lA">
<body>The InputPin that provides the position of an existing link to be destroyed in an ordered, nonunique Association end. The type of the destroyAt InputPin is UnlimitedNatural, but the value cannot be zero or unlimited.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKMGSIkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MKMGSYkxEeOMQ5AKLd10lA" name="isDestroyDuplicates">
<ownedComment xmi:id="_MKMGSokxEeOMQ5AKLd10lA" annotatedElement="_MKMGSYkxEeOMQ5AKLd10lA">
<body>Specifies whether to destroy duplicates of the value in nonunique Association ends.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MKMGS4kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedOperation xmi:id="_MKMGTIkxEeOMQ5AKLd10lA" name="allPins" bodyCondition="_MKMGTokxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MKK4O4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKMGTYkxEeOMQ5AKLd10lA" annotatedElement="_MKMGTIkxEeOMQ5AKLd10lA">
<body>Adds the destroyAt InputPin (if any) to the set of all Pins.</body>
</ownedComment>
<ownedRule xmi:id="_MKMGTokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MKMGTIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKMGT4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (self.LinkEndData::allPins()->including(destroyAt))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MKMGUIkxEeOMQ5AKLd10lA" name="result" type="_MKHNzYkxEeOMQ5AKLd10lA" isUnique="false" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKMGUYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKMGUokxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_Oc6u0GqEEeKQJv6i-sSgBw" name="LoopNode">
<ownedComment xmi:id="_MKMGU4kxEeOMQ5AKLd10lA" annotatedElement="_Oc6u0GqEEeKQJv6i-sSgBw">
<body>A LoopNode is a StructuredActivityNode that represents an iterative loop with setup, test, and body sections.</body>
</ownedComment>
<ownedRule xmi:id="_MKMtUIkxEeOMQ5AKLd10lA" name="result_no_incoming" constrainedElement="_Oc6u0GqEEeKQJv6i-sSgBw">
<ownedComment xmi:id="_MKMtUYkxEeOMQ5AKLd10lA" annotatedElement="_MKMtUIkxEeOMQ5AKLd10lA">
<body>The result OutputPins have no incoming edges.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKMtUokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result.incoming->isEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKMtU4kxEeOMQ5AKLd10lA" name="input_edges" constrainedElement="_Oc6u0GqEEeKQJv6i-sSgBw">
<ownedComment xmi:id="_MKMtVIkxEeOMQ5AKLd10lA" annotatedElement="_MKMtU4kxEeOMQ5AKLd10lA">
<body>The loopVariableInputs must not have outgoing edges.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKMtVYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>loopVariableInput.outgoing->isEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKMtVokxEeOMQ5AKLd10lA" name="executable_nodes" constrainedElement="_Oc6u0GqEEeKQJv6i-sSgBw">
<ownedComment xmi:id="_MKMtV4kxEeOMQ5AKLd10lA" annotatedElement="_MKMtVokxEeOMQ5AKLd10lA">
<body>The union of the ExecutableNodes in the setupPart, test and bodyPart of a LoopNode must be the same as the subset of nodes contained in the LoopNode (considered as a StructuredActivityNode) that are ExecutableNodes.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKMtWIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>setupPart->union(test)->union(bodyPart)=node->select(oclIsKindOf(ExecutableNode)).oclAsType(ExecutableNode)->asSet()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKMtWYkxEeOMQ5AKLd10lA" name="body_output_pins" constrainedElement="_Oc6u0GqEEeKQJv6i-sSgBw">
<ownedComment xmi:id="_MKMtWokxEeOMQ5AKLd10lA" annotatedElement="_MKMtWYkxEeOMQ5AKLd10lA">
<body>The bodyOutput pins are OutputPins on Actions in the body of the LoopNode.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKMtW4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>bodyPart.oclAsType(Action).allActions().output->includesAll(bodyOutput)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKNUYIkxEeOMQ5AKLd10lA" name="setup_test_and_body" constrainedElement="_Oc6u0GqEEeKQJv6i-sSgBw">
<ownedComment xmi:id="_MKNUYYkxEeOMQ5AKLd10lA" annotatedElement="_MKNUYIkxEeOMQ5AKLd10lA">
<body>The test and body parts of a ConditionalNode must be disjoint with each other.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKNUYokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>setupPart->intersection(test)->isEmpty() and&#xD;
setupPart->intersection(bodyPart)->isEmpty() and&#xD;
test->intersection(bodyPart)->isEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKNUY4kxEeOMQ5AKLd10lA" name="matching_output_pins" constrainedElement="_Oc6u0GqEEeKQJv6i-sSgBw">
<ownedComment xmi:id="_MKNUZIkxEeOMQ5AKLd10lA" annotatedElement="_MKNUY4kxEeOMQ5AKLd10lA">
<body>A LoopNode must have the same number of bodyOutput Pins as loopVariables, and each bodyOutput Pin must be compatible with the corresponding loopVariable (by positional order) in type, multiplicity, ordering and uniqueness.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKNUZYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>bodyOutput->size()=loopVariable->size() and&#xD;
Sequence{1..loopVariable->size()}->forAll(i |&#xD;
bodyOutput->at(i).type.conformsTo(loopVariable->at(i).type) and&#xD;
bodyOutput->at(i).isOrdered = loopVariable->at(i).isOrdered and&#xD;
bodyOutput->at(i).isUnique = loopVariable->at(i).isUnique and&#xD;
loopVariable->at(i).includesMultiplicity(bodyOutput->at(i)))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKNUZokxEeOMQ5AKLd10lA" name="matching_loop_variables" constrainedElement="_Oc6u0GqEEeKQJv6i-sSgBw">
<ownedComment xmi:id="_MKNUZ4kxEeOMQ5AKLd10lA" annotatedElement="_MKNUZokxEeOMQ5AKLd10lA">
<body>A LoopNode must have the same number of loopVariableInputs and loopVariables, and they must match in type, uniqueness and multiplicity.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKNUaIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>loopVariableInput->size()=loopVariable->size() and&#xD;
loopVariableInput.type=loopVariable.type and&#xD;
loopVariableInput.isUnique=loopVariable.isUnique and&#xD;
loopVariableInput.lower=loopVariable.lower and&#xD;
loopVariableInput.upper=loopVariable.upper</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKNUaYkxEeOMQ5AKLd10lA" name="matching_result_pins" constrainedElement="_Oc6u0GqEEeKQJv6i-sSgBw">
<ownedComment xmi:id="_MKNUaokxEeOMQ5AKLd10lA" annotatedElement="_MKNUaYkxEeOMQ5AKLd10lA">
<body>A LoopNode must have the same number of result OutputPins and loopVariables, and they must match in type, uniqueness and multiplicity.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKNUa4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result->size()=loopVariable->size() and&#xD;
result.type=loopVariable.type and&#xD;
result.isUnique=loopVariable.isUnique and&#xD;
result.lower=loopVariable.lower and&#xD;
result.upper=loopVariable.upper</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKN7cIkxEeOMQ5AKLd10lA" name="loop_variable_outgoing" constrainedElement="_Oc6u0GqEEeKQJv6i-sSgBw">
<ownedComment xmi:id="_MKN7cYkxEeOMQ5AKLd10lA" annotatedElement="_MKN7cIkxEeOMQ5AKLd10lA">
<body>All ActivityEdges outgoing from loopVariable OutputPins must have targets within the LoopNode.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKN7cokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>allOwnedNodes()->includesAll(loopVariable.outgoing.target)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MKN7c4kxEeOMQ5AKLd10lA" general="_w1_2cLLREeCsYvaJqFFivQ"/>
<ownedAttribute xmi:id="_MKN7dIkxEeOMQ5AKLd10lA" name="bodyOutput" type="_jvcRQGqEEeKQJv6i-sSgBw" isOrdered="true" association="_MLAlpokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKN7dYkxEeOMQ5AKLd10lA" annotatedElement="_MKN7dIkxEeOMQ5AKLd10lA">
<body>The OutputPins on Actions within the bodyPart, the values of which are moved to the loopVariable OutputPins after the completion of each execution of the bodyPart, before the next iteration of the loop begins or before the loop exits.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKN7dokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKN7d4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MKOigIkxEeOMQ5AKLd10lA" name="bodyPart" type="_MLpe0IkxEeOMQ5AKLd10lA" association="_MK_-k4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKOigYkxEeOMQ5AKLd10lA" annotatedElement="_MKOigIkxEeOMQ5AKLd10lA">
<body>The set of ExecutableNodes that perform the repetitive computations of the loop. The bodyPart is executed as long as the test section produces a true value.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKOigokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKOig4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MKOihIkxEeOMQ5AKLd10lA" name="decider" type="_jvcRQGqEEeKQJv6i-sSgBw" association="_MLBzwIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKOihYkxEeOMQ5AKLd10lA" annotatedElement="_MKOihIkxEeOMQ5AKLd10lA">
<body>An OutputPin on an Action in the test section whose Boolean value determines whether to continue executing the loop bodyPart.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MKOihokxEeOMQ5AKLd10lA" name="isTestedFirst">
<ownedComment xmi:id="_MKOih4kxEeOMQ5AKLd10lA" annotatedElement="_MKOihokxEeOMQ5AKLd10lA">
<body>If true, the test is performed before the first execution of the bodyPart. If false, the bodyPart is executed once before the test is performed.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MKOiiIkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_bHinUGqEEeKQJv6i-sSgBw" name="loopVariable" type="_jvcRQGqEEeKQJv6i-sSgBw" isOrdered="true" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MLAloIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKOiiYkxEeOMQ5AKLd10lA" annotatedElement="_bHinUGqEEeKQJv6i-sSgBw">
<body>A list of OutputPins that hold the values of the loop variables during an execution of the loop. When the test fails, the values are moved to the result OutputPins of the loop.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKPJkIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKPJkYkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MKPJkokxEeOMQ5AKLd10lA" name="loopVariableInput" type="_MKHNzYkxEeOMQ5AKLd10lA" isOrdered="true" aggregation="composite" redefinedProperty="_MKscl4kxEeOMQ5AKLd10lA" association="_MLBMsIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKPJk4kxEeOMQ5AKLd10lA" annotatedElement="_MKPJkokxEeOMQ5AKLd10lA">
<body>A list of InputPins whose values are moved into the loopVariable Pins before the first iteration of the loop.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKPJlIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKPJlYkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MKPJlokxEeOMQ5AKLd10lA" name="result" type="_jvcRQGqEEeKQJv6i-sSgBw" isOrdered="true" aggregation="composite" redefinedProperty="_MKtDoIkxEeOMQ5AKLd10lA" association="_MLAlo4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKPJl4kxEeOMQ5AKLd10lA" annotatedElement="_MKPJlokxEeOMQ5AKLd10lA">
<body>A list of OutputPins that receive the loopVariable values after the last iteration of the loop and constitute the output of the LoopNode.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKPJmIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKPJmYkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MKPwoIkxEeOMQ5AKLd10lA" name="setupPart" type="_MLpe0IkxEeOMQ5AKLd10lA" association="_MK_-kIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKPwoYkxEeOMQ5AKLd10lA" annotatedElement="_MKPwoIkxEeOMQ5AKLd10lA">
<body>The set of ExecutableNodes executed before the first iteration of the loop, in order to initialize values or perform other setup computations.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKPwookxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKPwo4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MKPwpIkxEeOMQ5AKLd10lA" name="test" type="_MLpe0IkxEeOMQ5AKLd10lA" association="_MLBMs4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKPwpYkxEeOMQ5AKLd10lA" annotatedElement="_MKPwpIkxEeOMQ5AKLd10lA">
<body>The set of ExecutableNodes executed in order to provide the test result for the loop.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKPwpokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedOperation xmi:id="_MKQXsIkxEeOMQ5AKLd10lA" name="allActions" bodyCondition="_MKQXsokxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MJxPgIkxEeOMQ5AKLd10lA _MKtDqIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKQXsYkxEeOMQ5AKLd10lA" annotatedElement="_MKQXsIkxEeOMQ5AKLd10lA">
<body>Return only this LoopNode. This prevents Actions within the LoopNode from having their OutputPins used as bodyOutputs or decider Pins in containing LoopNodes or ConditionalNodes.</body>
</ownedComment>
<ownedRule xmi:id="_MKQXsokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MKQXsIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKQXs4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (self->asSet())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MKQXtIkxEeOMQ5AKLd10lA" name="result" type="_6WKakLLQEeCsYvaJqFFivQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKQXtYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKQXtokxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MKQXt4kxEeOMQ5AKLd10lA" name="sourceNodes" bodyCondition="_MKQXuYkxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MKuRwIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKQXuIkxEeOMQ5AKLd10lA" annotatedElement="_MKQXt4kxEeOMQ5AKLd10lA">
<body>Return the loopVariable OutputPins in addition to other source nodes for the LoopNode as a StructuredActivityNode.</body>
</ownedComment>
<ownedRule xmi:id="_MKQXuYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MKQXt4kxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKQXuokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (self.StructuredActivityNode::sourceNodes()->union(loopVariable))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MKQXu4kxEeOMQ5AKLd10lA" name="result" type="_WpiyYAs-EeGcpbeCPJfCmw" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKQXvIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKQXvYkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="__pbPMLG4EeCDe8CO90iVKQ" name="OpaqueAction">
<ownedComment xmi:id="_MKRl0IkxEeOMQ5AKLd10lA" annotatedElement="__pbPMLG4EeCDe8CO90iVKQ">
<body>An OpaqueAction is an Action whose functionality is not specified within UML.</body>
</ownedComment>
<ownedRule xmi:id="_MKRl0YkxEeOMQ5AKLd10lA" name="language_body_size" constrainedElement="__pbPMLG4EeCDe8CO90iVKQ">
<ownedComment xmi:id="_MKRl0okxEeOMQ5AKLd10lA" annotatedElement="_MKRl0YkxEeOMQ5AKLd10lA">
<body>If the language attribute is not empty, then the size of the body and language lists must be the same.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKRl04kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>language->notEmpty() implies (_'body'->size() = language->size())</body>
</specification>
</ownedRule>
<generalization xmi:id="_MKRl1IkxEeOMQ5AKLd10lA" general="_6WKakLLQEeCsYvaJqFFivQ"/>
<ownedAttribute xmi:id="__pbPMbG4EeCDe8CO90iVKQ" name="body" isOrdered="true" isUnique="false">
<ownedComment xmi:id="_MKRl1YkxEeOMQ5AKLd10lA" annotatedElement="__pbPMbG4EeCDe8CO90iVKQ">
<body>Provides a textual specification of the functionality of the Action, in one or more languages other than UML.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKRl1okxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKSM4IkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MKSz8IkxEeOMQ5AKLd10lA" name="inputValue" type="_MKHNzYkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MJrI44kxEeOMQ5AKLd10lA" association="_MK_XgIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKSz8YkxEeOMQ5AKLd10lA" annotatedElement="_MKSz8IkxEeOMQ5AKLd10lA">
<body>The InputPins providing inputs to the OpaqueAction.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKSz8okxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKSz84kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="__pbPNLG4EeCDe8CO90iVKQ" name="language" isOrdered="true">
<ownedComment xmi:id="_MKSz9IkxEeOMQ5AKLd10lA" annotatedElement="__pbPNLG4EeCDe8CO90iVKQ">
<body>If provided, a specification of the language used for each of the body Strings.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKSz9YkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKSz9okxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MKTbAIkxEeOMQ5AKLd10lA" name="outputValue" type="_jvcRQGqEEeKQJv6i-sSgBw" aggregation="composite" subsettedProperty="_MJrv9IkxEeOMQ5AKLd10lA" association="_MK-wc4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKTbAYkxEeOMQ5AKLd10lA" annotatedElement="_MKTbAIkxEeOMQ5AKLd10lA">
<body>The OutputPins on which the OpaqueAction provides outputs.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKTbAokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKTbA4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_jvcRQGqEEeKQJv6i-sSgBw" name="OutputPin">
<ownedComment xmi:id="_MKUCEIkxEeOMQ5AKLd10lA" annotatedElement="_jvcRQGqEEeKQJv6i-sSgBw">
<body>An OutputPin is a Pin that holds output values produced by an Action.</body>
</ownedComment>
<ownedRule xmi:id="_MKUCEYkxEeOMQ5AKLd10lA" name="incoming_edges_structured_only" constrainedElement="_jvcRQGqEEeKQJv6i-sSgBw">
<ownedComment xmi:id="_MKUCEokxEeOMQ5AKLd10lA" annotatedElement="_MKUCEYkxEeOMQ5AKLd10lA">
<body>An OutputPin may have incoming ActivityEdges only when it is owned by a StructuredActivityNode, and these edges must have sources contained (directly or indirectly) in the owning StructuredActivityNode.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKUCE4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>incoming->notEmpty() implies&#xD;
action&lt;>null and&#xD;
action.oclIsKindOf(StructuredActivityNode) and&#xD;
action.oclAsType(StructuredActivityNode).allOwnedNodes()->includesAll(incoming.source)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MKUCFIkxEeOMQ5AKLd10lA" general="_MKVQMIkxEeOMQ5AKLd10lA"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MKVQMIkxEeOMQ5AKLd10lA" name="Pin" isAbstract="true">
<ownedComment xmi:id="_MKVQMYkxEeOMQ5AKLd10lA" annotatedElement="_MKVQMIkxEeOMQ5AKLd10lA">
<body>A Pin is an ObjectNode and MultiplicityElement that provides input values to an Action or accepts output values from an Action.</body>
</ownedComment>
<ownedRule xmi:id="_MKVQMokxEeOMQ5AKLd10lA" name="control_pins" constrainedElement="_MKVQMIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKVQM4kxEeOMQ5AKLd10lA" annotatedElement="_MKVQMokxEeOMQ5AKLd10lA">
<body>A control Pin has a control type.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKVQNIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>isControl implies isControlType</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKVQNYkxEeOMQ5AKLd10lA" name="not_unique" constrainedElement="_MKVQMIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKVQNokxEeOMQ5AKLd10lA" annotatedElement="_MKVQNYkxEeOMQ5AKLd10lA">
<body>Pin multiplicity is not unique.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKVQN4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>not isUnique</body>
</specification>
</ownedRule>
<generalization xmi:id="_MKVQOIkxEeOMQ5AKLd10lA" general="_MLu-YIkxEeOMQ5AKLd10lA"/>
<generalization xmi:id="_MKVQOYkxEeOMQ5AKLd10lA" general="_Gjgl0GveEdq4DLWZOhbdEA"/>
<ownedAttribute xmi:id="_MKVQOokxEeOMQ5AKLd10lA" name="isControl">
<ownedComment xmi:id="_MKVQO4kxEeOMQ5AKLd10lA" annotatedElement="_MKVQOokxEeOMQ5AKLd10lA">
<body>Indicates whether the Pin provides data to the Action or just controls how the Action executes.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MKVQPIkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MKWeUIkxEeOMQ5AKLd10lA" name="QualifierValue">
<ownedComment xmi:id="_MKWeUYkxEeOMQ5AKLd10lA" annotatedElement="_MKWeUIkxEeOMQ5AKLd10lA">
<body>A QualifierValue is an Element that is used as part of LinkEndData to provide the value for a single qualifier of the end given by the LinkEndData.</body>
</ownedComment>
<ownedRule xmi:id="_MKWeUokxEeOMQ5AKLd10lA" name="multiplicity_of_qualifier" constrainedElement="_MKWeUIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKWeU4kxEeOMQ5AKLd10lA" annotatedElement="_MKWeUokxEeOMQ5AKLd10lA">
<body>The multiplicity of the value InputPin is 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKWeVIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>value.is(1,1)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKWeVYkxEeOMQ5AKLd10lA" name="type_of_qualifier" constrainedElement="_MKWeUIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKWeVokxEeOMQ5AKLd10lA" annotatedElement="_MKWeVYkxEeOMQ5AKLd10lA">
<body>The type of the value InputPin conforms to the type of the qualifier Property.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKWeV4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>value.type.conformsTo(qualifier.type)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKWeWIkxEeOMQ5AKLd10lA" name="qualifier_attribute" constrainedElement="_MKWeUIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKWeWYkxEeOMQ5AKLd10lA" annotatedElement="_MKWeWIkxEeOMQ5AKLd10lA">
<body>The qualifier must be a qualifier of the Association end of the linkEndData that owns this QualifierValue.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKWeWokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>linkEndData.end.qualifier->includes(qualifier)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MKWeW4kxEeOMQ5AKLd10lA" general="_kl90MGvbEdq4DLWZOhbdEA"/>
<ownedAttribute xmi:id="_MKWeXIkxEeOMQ5AKLd10lA" name="qualifier" type="_Jp_1oGveEdq4DLWZOhbdEA" association="_MK-JYIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKWeXYkxEeOMQ5AKLd10lA" annotatedElement="_MKWeXIkxEeOMQ5AKLd10lA">
<body>The qualifier Property for which the value is to be specified.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MKWeXokxEeOMQ5AKLd10lA" name="value" type="_MKHNzYkxEeOMQ5AKLd10lA" association="_MK-wcIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKWeX4kxEeOMQ5AKLd10lA" annotatedElement="_MKWeXokxEeOMQ5AKLd10lA">
<body>The InputPin from which the specified value for the qualifier is taken.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MKXFYIkxEeOMQ5AKLd10lA" name="RaiseExceptionAction">
<ownedComment xmi:id="_MKXFYYkxEeOMQ5AKLd10lA" annotatedElement="_MKXFYIkxEeOMQ5AKLd10lA">
<body>A RaiseExceptionAction is an Action that causes an exception to occur. The input value becomes the exception object.</body>
</ownedComment>
<generalization xmi:id="_MKXFYokxEeOMQ5AKLd10lA" general="_6WKakLLQEeCsYvaJqFFivQ"/>
<ownedAttribute xmi:id="_MKXFY4kxEeOMQ5AKLd10lA" name="exception" type="_MKHNzYkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MJrI44kxEeOMQ5AKLd10lA" association="_MK9iUIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKXFZIkxEeOMQ5AKLd10lA" annotatedElement="_MKXFY4kxEeOMQ5AKLd10lA">
<body>An InputPin whose value becomes the exception object.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MKXscIkxEeOMQ5AKLd10lA" name="ReadExtentAction">
<ownedComment xmi:id="_MKXscYkxEeOMQ5AKLd10lA" annotatedElement="_MKXscIkxEeOMQ5AKLd10lA">
<body>A ReadExtentAction is an Action that retrieves the current instances of a Classifier.</body>
</ownedComment>
<ownedRule xmi:id="_MKXscokxEeOMQ5AKLd10lA" name="type_is_classifier" constrainedElement="_MKXscIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKXsc4kxEeOMQ5AKLd10lA" annotatedElement="_MKXscokxEeOMQ5AKLd10lA">
<body>The type of the result OutputPin is the classifier.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKXsdIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result.type = classifier</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKXsdYkxEeOMQ5AKLd10lA" name="multiplicity_of_result" constrainedElement="_MKXscIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKXsdokxEeOMQ5AKLd10lA" annotatedElement="_MKXsdYkxEeOMQ5AKLd10lA">
<body>The multiplicity of the result OutputPin is 0..*.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKXsd4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result.is(0,*)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MKXseIkxEeOMQ5AKLd10lA" general="_6WKakLLQEeCsYvaJqFFivQ"/>
<ownedAttribute xmi:id="_MKXseYkxEeOMQ5AKLd10lA" name="classifier" type="_6UV2QGwJEdq7X4sGURiZYA" association="_MK87Q4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKXseokxEeOMQ5AKLd10lA" annotatedElement="_MKXseYkxEeOMQ5AKLd10lA">
<body>The Classifier whose instances are to be retrieved.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MKXse4kxEeOMQ5AKLd10lA" name="result" type="_jvcRQGqEEeKQJv6i-sSgBw" aggregation="composite" subsettedProperty="_MJrv9IkxEeOMQ5AKLd10lA" association="_MK87QIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKXsfIkxEeOMQ5AKLd10lA" annotatedElement="_MKXse4kxEeOMQ5AKLd10lA">
<body>The OutputPin on which the Classifier instances are placed.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MKY6kIkxEeOMQ5AKLd10lA" name="ReadIsClassifiedObjectAction">
<ownedComment xmi:id="_MKY6kYkxEeOMQ5AKLd10lA" annotatedElement="_MKY6kIkxEeOMQ5AKLd10lA">
<body>A ReadIsClassifiedObjectAction is an Action that determines whether an object is classified by a given Classifier.</body>
</ownedComment>
<ownedRule xmi:id="_MKY6kokxEeOMQ5AKLd10lA" name="no_type" constrainedElement="_MKY6kIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKY6k4kxEeOMQ5AKLd10lA" annotatedElement="_MKY6kokxEeOMQ5AKLd10lA">
<body>The object InputPin has no type.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKY6lIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>object.type = null</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKY6lYkxEeOMQ5AKLd10lA" name="multiplicity_of_output" constrainedElement="_MKY6kIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKY6lokxEeOMQ5AKLd10lA" annotatedElement="_MKY6lYkxEeOMQ5AKLd10lA">
<body>The multiplicity of the result OutputPin is 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKY6l4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result.is(1,1)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKY6mIkxEeOMQ5AKLd10lA" name="boolean_result" constrainedElement="_MKY6kIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKY6mYkxEeOMQ5AKLd10lA" annotatedElement="_MKY6mIkxEeOMQ5AKLd10lA">
<body>The type of the result OutputPin is Boolean.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKY6mokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result.type = Boolean</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKY6m4kxEeOMQ5AKLd10lA" name="multiplicity_of_input" constrainedElement="_MKY6kIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKY6nIkxEeOMQ5AKLd10lA" annotatedElement="_MKY6m4kxEeOMQ5AKLd10lA">
<body>The multiplicity of the object InputPin is 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKY6nYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>object.is(1,1)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MKY6nokxEeOMQ5AKLd10lA" general="_6WKakLLQEeCsYvaJqFFivQ"/>
<ownedAttribute xmi:id="_MKY6n4kxEeOMQ5AKLd10lA" name="classifier" type="_6UV2QGwJEdq7X4sGURiZYA" association="_MK8UMIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKY6oIkxEeOMQ5AKLd10lA" annotatedElement="_MKY6n4kxEeOMQ5AKLd10lA">
<body>The Classifier against which the classification of the input object is tested.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MKY6oYkxEeOMQ5AKLd10lA" name="isDirect">
<ownedComment xmi:id="_MKY6ookxEeOMQ5AKLd10lA" annotatedElement="_MKY6oYkxEeOMQ5AKLd10lA">
<body>Indicates whether the input object must be directly classified by the given Classifier or whether it may also be an instance of a specialization of the given Classifier.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MKY6o4kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MKY6pIkxEeOMQ5AKLd10lA" name="object" type="_MKHNzYkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MJrI44kxEeOMQ5AKLd10lA" association="_MK8UN4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKY6pYkxEeOMQ5AKLd10lA" annotatedElement="_MKY6pIkxEeOMQ5AKLd10lA">
<body>The InputPin that holds the object whose classification is to be tested.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MKY6pokxEeOMQ5AKLd10lA" name="result" type="_jvcRQGqEEeKQJv6i-sSgBw" aggregation="composite" subsettedProperty="_MJrv9IkxEeOMQ5AKLd10lA" association="_MK8UNIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKY6p4kxEeOMQ5AKLd10lA" annotatedElement="_MKY6pokxEeOMQ5AKLd10lA">
<body>The OutputPin that holds the Boolean result of the test.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MKaIsIkxEeOMQ5AKLd10lA" name="ReadLinkAction">
<ownedComment xmi:id="_MKaIsYkxEeOMQ5AKLd10lA" annotatedElement="_MKaIsIkxEeOMQ5AKLd10lA">
<body>A ReadLinkAction is a LinkAction that navigates across an Association to retrieve the objects on one end.</body>
</ownedComment>
<ownedRule xmi:id="_MKaIsokxEeOMQ5AKLd10lA" name="type_and_ordering" constrainedElement="_MKaIsIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKaIs4kxEeOMQ5AKLd10lA" annotatedElement="_MKaIsokxEeOMQ5AKLd10lA">
<body>The type and ordering of the result OutputPin are same as the type and ordering of the open Association end.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKaItIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>self.openEnd()->forAll(type=result.type and isOrdered=result.isOrdered)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKaItYkxEeOMQ5AKLd10lA" name="compatible_multiplicity" constrainedElement="_MKaIsIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKaItokxEeOMQ5AKLd10lA" annotatedElement="_MKaItYkxEeOMQ5AKLd10lA">
<body>The multiplicity of the open Association end must be compatible with the multiplicity of the result OutputPin.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKaIt4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>self.openEnd()->first().compatibleWith(result)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKaIuIkxEeOMQ5AKLd10lA" name="visibility" constrainedElement="_MKaIsIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKaIuYkxEeOMQ5AKLd10lA" annotatedElement="_MKaIuIkxEeOMQ5AKLd10lA">
<body>Visibility of the open end must allow access from the object performing the action.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKaIuokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>let openEnd : Property = self.openEnd()->first() in
openEnd.visibility = VisibilityKind::public or
endData->exists(oed |
oed.end&lt;>openEnd and
(_'context' = oed.end.type or
(openEnd.visibility = VisibilityKind::protected and
_'context'.conformsTo(oed.end.type.oclAsType(Classifier)))))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKaIu4kxEeOMQ5AKLd10lA" name="one_open_end" constrainedElement="_MKaIsIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKaIvIkxEeOMQ5AKLd10lA" annotatedElement="_MKaIu4kxEeOMQ5AKLd10lA">
<body>Exactly one linkEndData specification (corresponding to the &quot;open&quot; end) must not have an value InputPin.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKaIvYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>self.openEnd()->size() = 1</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKaIvokxEeOMQ5AKLd10lA" name="navigable_open_end" constrainedElement="_MKaIsIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKaIv4kxEeOMQ5AKLd10lA" annotatedElement="_MKaIvokxEeOMQ5AKLd10lA">
<body>The open end must be navigable.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKaIwIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>self.openEnd()->first().isNavigable()</body>
</specification>
</ownedRule>
<generalization xmi:id="_MKaIwYkxEeOMQ5AKLd10lA" general="_MKJC8IkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MKaIwokxEeOMQ5AKLd10lA" name="result" type="_jvcRQGqEEeKQJv6i-sSgBw" aggregation="composite" subsettedProperty="_MJrv9IkxEeOMQ5AKLd10lA" association="_MK7tI4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKaIw4kxEeOMQ5AKLd10lA" annotatedElement="_MKaIwokxEeOMQ5AKLd10lA">
<body>The OutputPin on which the objects retrieved from the &quot;open&quot; end of those links whose values on other ends are given by the endData.</body>
</ownedComment>
</ownedAttribute>
<ownedOperation xmi:id="_MKaIxIkxEeOMQ5AKLd10lA" name="openEnd" bodyCondition="_MKavwYkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MKavwIkxEeOMQ5AKLd10lA" annotatedElement="_MKaIxIkxEeOMQ5AKLd10lA">
<body>Returns the ends corresponding to endData with no value InputPin. (A well-formed ReadLinkAction is constrained to have only one of these.)</body>
</ownedComment>
<ownedRule xmi:id="_MKavwYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MKaIxIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKavwokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (endData->select(value=null).end->asOrderedSet())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MKavw4kxEeOMQ5AKLd10lA" name="result" type="_Jp_1oGveEdq4DLWZOhbdEA" isOrdered="true" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKavxIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKavxYkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MKb94IkxEeOMQ5AKLd10lA" name="ReadLinkObjectEndAction">
<ownedComment xmi:id="_MKb94YkxEeOMQ5AKLd10lA" annotatedElement="_MKb94IkxEeOMQ5AKLd10lA">
<body>A ReadLinkObjectEndAction is an Action that retrieves an end object from a link object.</body>
</ownedComment>
<ownedRule xmi:id="_MKb94okxEeOMQ5AKLd10lA" name="property" constrainedElement="_MKb94IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKb944kxEeOMQ5AKLd10lA" annotatedElement="_MKb94okxEeOMQ5AKLd10lA">
<body>The end Property must be an Association memberEnd.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKb95IkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>end.association &lt;> null</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKb95YkxEeOMQ5AKLd10lA" name="multiplicity_of_object" constrainedElement="_MKb94IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKb95okxEeOMQ5AKLd10lA" annotatedElement="_MKb95YkxEeOMQ5AKLd10lA">
<body>The multiplicity of the object InputPin is 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKb954kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>object.is(1,1)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKb96IkxEeOMQ5AKLd10lA" name="ends_of_association" constrainedElement="_MKb94IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKb96YkxEeOMQ5AKLd10lA" annotatedElement="_MKb96IkxEeOMQ5AKLd10lA">
<body>The ends of the association must not be static.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKb96okxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>end.association.memberEnd->forAll(e | not e.isStatic)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKb964kxEeOMQ5AKLd10lA" name="type_of_result" constrainedElement="_MKb94IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKb97IkxEeOMQ5AKLd10lA" annotatedElement="_MKb964kxEeOMQ5AKLd10lA">
<body>The type of the result OutputPin is the same as the type of the end Property.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKb97YkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result.type = end.type</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKb97okxEeOMQ5AKLd10lA" name="multiplicity_of_result" constrainedElement="_MKb94IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKb974kxEeOMQ5AKLd10lA" annotatedElement="_MKb97okxEeOMQ5AKLd10lA">
<body>The multiplicity of the result OutputPin is 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKb98IkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result.is(1,1)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKb98YkxEeOMQ5AKLd10lA" name="type_of_object" constrainedElement="_MKb94IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKb98okxEeOMQ5AKLd10lA" annotatedElement="_MKb98YkxEeOMQ5AKLd10lA">
<body>The type of the object InputPin is the AssociationClass that owns the end Property.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKb984kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>object.type = end.association</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKb99IkxEeOMQ5AKLd10lA" name="association_of_association" constrainedElement="_MKb94IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKb99YkxEeOMQ5AKLd10lA" annotatedElement="_MKb99IkxEeOMQ5AKLd10lA">
<body>The association of the end must be an AssociationClass.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKb99okxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>end.association.oclIsKindOf(AssociationClass)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MKb994kxEeOMQ5AKLd10lA" general="_6WKakLLQEeCsYvaJqFFivQ"/>
<ownedAttribute xmi:id="_MKb9-IkxEeOMQ5AKLd10lA" name="end" type="_Jp_1oGveEdq4DLWZOhbdEA" association="_MK7GE4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKb9-YkxEeOMQ5AKLd10lA" annotatedElement="_MKb9-IkxEeOMQ5AKLd10lA">
<body>The Association end to be read.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MKb9-okxEeOMQ5AKLd10lA" name="object" type="_MKHNzYkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MJrI44kxEeOMQ5AKLd10lA" association="_MK7GEIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKb9-4kxEeOMQ5AKLd10lA" annotatedElement="_MKb9-okxEeOMQ5AKLd10lA">
<body>The input pin from which the link object is obtained.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MKb9_IkxEeOMQ5AKLd10lA" name="result" type="_jvcRQGqEEeKQJv6i-sSgBw" aggregation="composite" subsettedProperty="_MJrv9IkxEeOMQ5AKLd10lA" association="_MK7tIIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKb9_YkxEeOMQ5AKLd10lA" annotatedElement="_MKb9_IkxEeOMQ5AKLd10lA">
<body>The OutputPin where the result value is placed.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MKdzEIkxEeOMQ5AKLd10lA" name="ReadLinkObjectEndQualifierAction">
<ownedComment xmi:id="_MKdzEYkxEeOMQ5AKLd10lA" annotatedElement="_MKdzEIkxEeOMQ5AKLd10lA">
<body>A ReadLinkObjectEndQualifierAction is an Action that retrieves a qualifier end value from a link object.</body>
</ownedComment>
<ownedRule xmi:id="_MKdzEokxEeOMQ5AKLd10lA" name="multiplicity_of_object" constrainedElement="_MKdzEIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKdzE4kxEeOMQ5AKLd10lA" annotatedElement="_MKdzEokxEeOMQ5AKLd10lA">
<body>The multiplicity of the object InputPin is 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKdzFIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>object.is(1,1)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKdzFYkxEeOMQ5AKLd10lA" name="type_of_object" constrainedElement="_MKdzEIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKdzFokxEeOMQ5AKLd10lA" annotatedElement="_MKdzFYkxEeOMQ5AKLd10lA">
<body>The type of the object InputPin is the AssociationClass that owns the Association end that has the given qualifier Property.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKdzF4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>object.type = qualifier.associationEnd.association</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKdzGIkxEeOMQ5AKLd10lA" name="multiplicity_of_qualifier" constrainedElement="_MKdzEIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKdzGYkxEeOMQ5AKLd10lA" annotatedElement="_MKdzGIkxEeOMQ5AKLd10lA">
<body>The multiplicity of the qualifier Property is 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKdzGokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>qualifier.is(1,1)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKdzG4kxEeOMQ5AKLd10lA" name="ends_of_association" constrainedElement="_MKdzEIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKdzHIkxEeOMQ5AKLd10lA" annotatedElement="_MKdzG4kxEeOMQ5AKLd10lA">
<body>The ends of the Association must not be static.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKdzHYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>qualifier.associationEnd.association.memberEnd->forAll(e | not e.isStatic)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKdzHokxEeOMQ5AKLd10lA" name="multiplicity_of_result" constrainedElement="_MKdzEIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKdzH4kxEeOMQ5AKLd10lA" annotatedElement="_MKdzHokxEeOMQ5AKLd10lA">
<body>The multiplicity of the result OutputPin is 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKdzIIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result.is(1,1)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKdzIYkxEeOMQ5AKLd10lA" name="same_type" constrainedElement="_MKdzEIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKdzIokxEeOMQ5AKLd10lA" annotatedElement="_MKdzIYkxEeOMQ5AKLd10lA">
<body>The type of the result OutputPin is the same as the type of the qualifier Property.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKdzI4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result.type = qualifier.type</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKdzJIkxEeOMQ5AKLd10lA" name="association_of_association" constrainedElement="_MKdzEIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKdzJYkxEeOMQ5AKLd10lA" annotatedElement="_MKdzJIkxEeOMQ5AKLd10lA">
<body>The association of the Association end of the qualifier Property must be an AssociationClass.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKdzJokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>qualifier.associationEnd.association.oclIsKindOf(AssociationClass)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKdzJ4kxEeOMQ5AKLd10lA" name="qualifier_attribute" constrainedElement="_MKdzEIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKdzKIkxEeOMQ5AKLd10lA" annotatedElement="_MKdzJ4kxEeOMQ5AKLd10lA">
<body>The qualifier Property must be a qualifier of an Association end.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKdzKYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>qualifier.associationEnd &lt;> null</body>
</specification>
</ownedRule>
<generalization xmi:id="_MKdzKokxEeOMQ5AKLd10lA" general="_6WKakLLQEeCsYvaJqFFivQ"/>
<ownedAttribute xmi:id="_MKdzK4kxEeOMQ5AKLd10lA" name="object" type="_MKHNzYkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MJrI44kxEeOMQ5AKLd10lA" association="_MK6fA4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKdzLIkxEeOMQ5AKLd10lA" annotatedElement="_MKdzK4kxEeOMQ5AKLd10lA">
<body>The InputPin from which the link object is obtained.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MKdzLYkxEeOMQ5AKLd10lA" name="qualifier" type="_Jp_1oGveEdq4DLWZOhbdEA" association="_MK6fAIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKdzLokxEeOMQ5AKLd10lA" annotatedElement="_MKdzLYkxEeOMQ5AKLd10lA">
<body>The qualifier Property to be read.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MKdzL4kxEeOMQ5AKLd10lA" name="result" type="_jvcRQGqEEeKQJv6i-sSgBw" aggregation="composite" subsettedProperty="_MJrv9IkxEeOMQ5AKLd10lA" association="_MK6fBokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKdzMIkxEeOMQ5AKLd10lA" annotatedElement="_MKdzL4kxEeOMQ5AKLd10lA">
<body>The OutputPin where the result value is placed.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MKfBMIkxEeOMQ5AKLd10lA" name="ReadSelfAction">
<ownedComment xmi:id="_MKfBMYkxEeOMQ5AKLd10lA" annotatedElement="_MKfBMIkxEeOMQ5AKLd10lA">
<body>A ReadSelfAction is an Action that retrieves the context object of the Behavior execution within which the ReadSelfAction execution is taking place.</body>
</ownedComment>
<ownedRule xmi:id="_MKfBMokxEeOMQ5AKLd10lA" name="contained" constrainedElement="_MKfBMIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKfBM4kxEeOMQ5AKLd10lA" annotatedElement="_MKfBMokxEeOMQ5AKLd10lA">
<body>A ReadSelfAction must have a context Classifier.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKfBNIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>_'context' &lt;> null</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKfBNYkxEeOMQ5AKLd10lA" name="multiplicity" constrainedElement="_MKfBMIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKfBNokxEeOMQ5AKLd10lA" annotatedElement="_MKfBNYkxEeOMQ5AKLd10lA">
<body>The multiplicity of the result OutputPin is 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKfBN4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result.is(1,1)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKfBOIkxEeOMQ5AKLd10lA" name="not_static" constrainedElement="_MKfBMIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKfBOYkxEeOMQ5AKLd10lA" annotatedElement="_MKfBOIkxEeOMQ5AKLd10lA">
<body>If the ReadSelfAction is contained in an Behavior that is acting as a method, then the Operation of the method must not be static.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKfBOokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>let behavior: Behavior = self.containingBehavior() in&#xD;
behavior.specification&lt;>null implies not behavior.specification.isStatic</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKfBO4kxEeOMQ5AKLd10lA" name="type" constrainedElement="_MKfBMIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKfBPIkxEeOMQ5AKLd10lA" annotatedElement="_MKfBO4kxEeOMQ5AKLd10lA">
<body>The type of the result OutputPin is the context Classifier.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKfBPYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result.type = _'context'</body>
</specification>
</ownedRule>
<generalization xmi:id="_MKfBPokxEeOMQ5AKLd10lA" general="_6WKakLLQEeCsYvaJqFFivQ"/>
<ownedAttribute xmi:id="_MKfBP4kxEeOMQ5AKLd10lA" name="result" type="_jvcRQGqEEeKQJv6i-sSgBw" aggregation="composite" subsettedProperty="_MJrv9IkxEeOMQ5AKLd10lA" association="_MK539okxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKfBQIkxEeOMQ5AKLd10lA" annotatedElement="_MKfBP4kxEeOMQ5AKLd10lA">
<body>The OutputPin on which the context object is placed.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MKfoQIkxEeOMQ5AKLd10lA" name="ReadStructuralFeatureAction">
<ownedComment xmi:id="_MKfoQYkxEeOMQ5AKLd10lA" annotatedElement="_MKfoQIkxEeOMQ5AKLd10lA">
<body>A ReadStructuralFeatureAction is a StructuralFeatureAction that retrieves the values of a StructuralFeature.</body>
</ownedComment>
<ownedRule xmi:id="_MKfoQokxEeOMQ5AKLd10lA" name="multiplicity" constrainedElement="_MKfoQIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKfoQ4kxEeOMQ5AKLd10lA" annotatedElement="_MKfoQokxEeOMQ5AKLd10lA">
<body>The multiplicity of the StructuralFeature must be compatible with the multiplicity of the result OutputPin.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKfoRIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>structuralFeature.compatibleWith(result)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKfoRYkxEeOMQ5AKLd10lA" name="type_and_ordering" constrainedElement="_MKfoQIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKfoRokxEeOMQ5AKLd10lA" annotatedElement="_MKfoRYkxEeOMQ5AKLd10lA">
<body>The type and ordering of the result OutputPin are the same as the type and ordering of the StructuralFeature.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKfoR4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result.type =structuralFeature.type and
result.isOrdered = structuralFeature.isOrdered</body>
</specification>
</ownedRule>
<generalization xmi:id="_MKfoSIkxEeOMQ5AKLd10lA" general="_MKqnYIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MKgPUIkxEeOMQ5AKLd10lA" name="result" type="_jvcRQGqEEeKQJv6i-sSgBw" aggregation="composite" subsettedProperty="_MJrv9IkxEeOMQ5AKLd10lA" association="_MK5384kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKgPUYkxEeOMQ5AKLd10lA" annotatedElement="_MKgPUIkxEeOMQ5AKLd10lA">
<body>The OutputPin on which the result values are placed.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MKgPUokxEeOMQ5AKLd10lA" name="ReadVariableAction">
<ownedComment xmi:id="_MKgPU4kxEeOMQ5AKLd10lA" annotatedElement="_MKgPUokxEeOMQ5AKLd10lA">
<body>A ReadVariableAction is a VariableAction that retrieves the values of a Variable.</body>
</ownedComment>
<ownedRule xmi:id="_MKgPVIkxEeOMQ5AKLd10lA" name="type_and_ordering" constrainedElement="_MKgPUokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKgPVYkxEeOMQ5AKLd10lA" annotatedElement="_MKgPVIkxEeOMQ5AKLd10lA">
<body>The type and ordering of the result OutputPin are the same as the type and ordering of the variable.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKgPVokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result.type =variable.type and
result.isOrdered = variable.isOrdered</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKgPV4kxEeOMQ5AKLd10lA" name="compatible_multiplicity" constrainedElement="_MKgPUokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKg2YIkxEeOMQ5AKLd10lA" annotatedElement="_MKgPV4kxEeOMQ5AKLd10lA">
<body>The multiplicity of the variable must be compatible with the multiplicity of the output pin.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKg2YYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>variable.compatibleWith(result)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MKg2YokxEeOMQ5AKLd10lA" general="_MJkbMIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MKg2Y4kxEeOMQ5AKLd10lA" name="result" type="_jvcRQGqEEeKQJv6i-sSgBw" aggregation="composite" subsettedProperty="_MJrv9IkxEeOMQ5AKLd10lA" association="_MK538IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKg2ZIkxEeOMQ5AKLd10lA" annotatedElement="_MKg2Y4kxEeOMQ5AKLd10lA">
<body>The OutputPin on which the result values are placed.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MKhdcIkxEeOMQ5AKLd10lA" name="ReclassifyObjectAction">
<ownedComment xmi:id="_MKhdcYkxEeOMQ5AKLd10lA" annotatedElement="_MKhdcIkxEeOMQ5AKLd10lA">
<body>A ReclassifyObjectAction is an Action that changes the Classifiers that classify an object.</body>
</ownedComment>
<ownedRule xmi:id="_MKhdcokxEeOMQ5AKLd10lA" name="input_pin" constrainedElement="_MKhdcIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKhdc4kxEeOMQ5AKLd10lA" annotatedElement="_MKhdcokxEeOMQ5AKLd10lA">
<body>The object InputPin has no type.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKhddIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>object.type = null</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKhddYkxEeOMQ5AKLd10lA" name="classifier_not_abstract" constrainedElement="_MKhdcIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKhddokxEeOMQ5AKLd10lA" annotatedElement="_MKhddYkxEeOMQ5AKLd10lA">
<body>None of the newClassifiers may be abstract.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKhdd4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>not newClassifier->exists(isAbstract)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKhdeIkxEeOMQ5AKLd10lA" name="multiplicity" constrainedElement="_MKhdcIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKhdeYkxEeOMQ5AKLd10lA" annotatedElement="_MKhdeIkxEeOMQ5AKLd10lA">
<body>The multiplicity of the object InputPin is 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKhdeokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>object.is(1,1)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MKhde4kxEeOMQ5AKLd10lA" general="_6WKakLLQEeCsYvaJqFFivQ"/>
<ownedAttribute xmi:id="_MKhdfIkxEeOMQ5AKLd10lA" name="isReplaceAll">
<ownedComment xmi:id="_MKhdfYkxEeOMQ5AKLd10lA" annotatedElement="_MKhdfIkxEeOMQ5AKLd10lA">
<body>Specifies whether existing Classifiers should be removed before adding the new Classifiers.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MKhdfokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MKhdf4kxEeOMQ5AKLd10lA" name="newClassifier" type="_6UV2QGwJEdq7X4sGURiZYA" association="_MK5Q4okxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKhdgIkxEeOMQ5AKLd10lA" annotatedElement="_MKhdf4kxEeOMQ5AKLd10lA">
<body>A set of Classifiers to be added to the Classifiers of the given object.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKhdgYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKhdgokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MKhdg4kxEeOMQ5AKLd10lA" name="object" type="_MKHNzYkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MJrI44kxEeOMQ5AKLd10lA" association="_MK4p14kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKhdhIkxEeOMQ5AKLd10lA" annotatedElement="_MKhdg4kxEeOMQ5AKLd10lA">
<body>The InputPin that holds the object to be reclassified.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MKhdhYkxEeOMQ5AKLd10lA" name="oldClassifier" type="_6UV2QGwJEdq7X4sGURiZYA" association="_MK5Q5okxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKhdhokxEeOMQ5AKLd10lA" annotatedElement="_MKhdhYkxEeOMQ5AKLd10lA">
<body>A set of Classifiers to be removed from the Classifiers of the given object.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKhdh4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKhdiIkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MKirkIkxEeOMQ5AKLd10lA" name="ReduceAction">
<ownedComment xmi:id="_MKirkYkxEeOMQ5AKLd10lA" annotatedElement="_MKirkIkxEeOMQ5AKLd10lA">
<body>A ReduceAction is an Action that reduces a collection to a single value by repeatedly combining the elements of the collection using a reducer Behavior.</body>
</ownedComment>
<ownedRule xmi:id="_MKirkokxEeOMQ5AKLd10lA" name="reducer_inputs_output" constrainedElement="_MKirkIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKirk4kxEeOMQ5AKLd10lA" annotatedElement="_MKirkokxEeOMQ5AKLd10lA">
<body>The reducer Behavior must have two input ownedParameters and one output ownedParameter, where the type of the output Parameter and the type of elements of the input collection conform to the types of the input Parameters.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKirlIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>let inputs: OrderedSet(Parameter) = reducer.inputParameters() in&#xD;
let outputs: OrderedSet(Parameter) = reducer.outputParameters() in&#xD;
inputs->size()=2 and outputs->size()=1 and&#xD;
inputs.type->forAll(t | &#xD;
outputs.type->forAll(conformsTo(t)) and &#xD;
-- Note that the following only checks the case when the collection is via multiple tokens.&#xD;
collection.upperBound()>1 implies collection.type.conformsTo(t))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKirlYkxEeOMQ5AKLd10lA" name="input_type_is_collection" constrainedElement="_MKirkIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKirlokxEeOMQ5AKLd10lA" annotatedElement="_MKirlYkxEeOMQ5AKLd10lA">
<body>The type of the collection InputPin must be a collection.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKirl4kxEeOMQ5AKLd10lA" language=""/>
</ownedRule>
<ownedRule xmi:id="_MKirmIkxEeOMQ5AKLd10lA" name="output_types_are_compatible" constrainedElement="_MKirkIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKirmYkxEeOMQ5AKLd10lA" annotatedElement="_MKirmIkxEeOMQ5AKLd10lA">
<body>The type of the output of the reducer Behavior must conform to the type of the result OutputPin.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKirmokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>reducer.outputParameters().type->forAll(conformsTo(result.type))</body>
</specification>
</ownedRule>
<generalization xmi:id="_MKirm4kxEeOMQ5AKLd10lA" general="_6WKakLLQEeCsYvaJqFFivQ"/>
<ownedAttribute xmi:id="_MKirnIkxEeOMQ5AKLd10lA" name="collection" type="_MKHNzYkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MJrI44kxEeOMQ5AKLd10lA" association="_MK4Cw4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKirnYkxEeOMQ5AKLd10lA" annotatedElement="_MKirnIkxEeOMQ5AKLd10lA">
<body>The InputPin that provides the collection to be reduced.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MKirnokxEeOMQ5AKLd10lA" name="isOrdered">
<ownedComment xmi:id="_MKirn4kxEeOMQ5AKLd10lA" annotatedElement="_MKirnokxEeOMQ5AKLd10lA">
<body>Indicates whether the order of the input collection should determine the order in which the reducer Behavior is applied to its elements.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MKiroIkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MKiroYkxEeOMQ5AKLd10lA" name="reducer" type="_TUPtYGveEdq4DLWZOhbdEA" association="_MK4p0IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKirookxEeOMQ5AKLd10lA" annotatedElement="_MKiroYkxEeOMQ5AKLd10lA">
<body>A Behavior that is repreatedly applied to two elements of the input collection to produce a value that is of the same type as elements of the collection.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MKiro4kxEeOMQ5AKLd10lA" name="result" type="_jvcRQGqEEeKQJv6i-sSgBw" aggregation="composite" subsettedProperty="_MJrv9IkxEeOMQ5AKLd10lA" association="_MK4p1IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKirpIkxEeOMQ5AKLd10lA" annotatedElement="_MKiro4kxEeOMQ5AKLd10lA">
<body>The output pin on which the result value is placed.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MKjSoIkxEeOMQ5AKLd10lA" name="RemoveStructuralFeatureValueAction">
<ownedComment xmi:id="_MKjSoYkxEeOMQ5AKLd10lA" annotatedElement="_MKjSoIkxEeOMQ5AKLd10lA">
<body>A RemoveStructuralFeatureValueAction is a WriteStructuralFeatureAction that removes values from a StructuralFeature.</body>
</ownedComment>
<ownedRule xmi:id="_MKjSookxEeOMQ5AKLd10lA" name="removeAt_and_value" constrainedElement="_MKjSoIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKjSo4kxEeOMQ5AKLd10lA" annotatedElement="_MKjSookxEeOMQ5AKLd10lA">
<body>RemoveStructuralFeatureValueActions removing a value from ordered, non-unique StructuralFeatures must have a single removeAt InputPin and no value InputPin, if isRemoveDuplicates is false. The removeAt InputPin must be of type Unlimited Natural with multiplicity 1..1. Otherwise, the Action has a value InputPin and no removeAt InputPin.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKjSpIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>if structuralFeature.isOrdered and not structuralFeature.isUnique and not isRemoveDuplicates then&#xD;
value = null and&#xD;
removeAt &lt;> null and&#xD;
removeAt.type = UnlimitedNatural and&#xD;
removeAt.is(1,1)&#xD;
else&#xD;
removeAt = null and value &lt;> null&#xD;
endif</body>
</specification>
</ownedRule>
<generalization xmi:id="_MKjSpYkxEeOMQ5AKLd10lA" general="_MJnegIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MKjSpokxEeOMQ5AKLd10lA" name="isRemoveDuplicates">
<ownedComment xmi:id="_MKjSp4kxEeOMQ5AKLd10lA" annotatedElement="_MKjSpokxEeOMQ5AKLd10lA">
<body>Specifies whether to remove duplicates of the value in nonunique StructuralFeatures.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MKjSqIkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MKjSqYkxEeOMQ5AKLd10lA" name="removeAt" type="_MKHNzYkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MJrI44kxEeOMQ5AKLd10lA" association="_MK4CwIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKjSqokxEeOMQ5AKLd10lA" annotatedElement="_MKjSqYkxEeOMQ5AKLd10lA">
<body>An InputPin that provides the position of an existing value to remove in ordered, nonunique structural features. The type of the removeAt InputPin is UnlimitedNatural, but the value cannot be zero or unlimited.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKjSq4kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MKj5sIkxEeOMQ5AKLd10lA" name="RemoveVariableValueAction">
<ownedComment xmi:id="_MKj5sYkxEeOMQ5AKLd10lA" annotatedElement="_MKj5sIkxEeOMQ5AKLd10lA">
<body>A RemoveVariableValueAction is a WriteVariableAction that removes values from a Variables.</body>
</ownedComment>
<ownedRule xmi:id="_MKj5sokxEeOMQ5AKLd10lA" name="removeAt_and_value" constrainedElement="_MKj5sIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKj5s4kxEeOMQ5AKLd10lA" annotatedElement="_MKj5sokxEeOMQ5AKLd10lA">
<body>ReadVariableActions removing a value from ordered, non-unique Variables must have a single removeAt InputPin and no value InputPin, if isRemoveDuplicates is false. The removeAt InputPin must be of type Unlimited Natural with multiplicity 1..1. Otherwise, the Action has a value InputPin and no removeAt InputPin.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKj5tIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>if variable.isOrdered and not variable.isUnique and not isRemoveDuplicates then &#xD;
value = null and&#xD;
removeAt &lt;> null and&#xD;
removeAt.type = UnlimitedNatural and&#xD;
removeAt.is(1,1)&#xD;
else&#xD;
removeAt = null and value &lt;> null&#xD;
endif</body>
</specification>
</ownedRule>
<generalization xmi:id="_MKj5tYkxEeOMQ5AKLd10lA" general="_MJoFkIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MKj5tokxEeOMQ5AKLd10lA" name="isRemoveDuplicates">
<ownedComment xmi:id="_MKj5t4kxEeOMQ5AKLd10lA" annotatedElement="_MKj5tokxEeOMQ5AKLd10lA">
<body>Specifies whether to remove duplicates of the value in nonunique Variables.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MKj5uIkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MKj5uYkxEeOMQ5AKLd10lA" name="removeAt" type="_MKHNzYkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MJrI44kxEeOMQ5AKLd10lA" association="_MK3bs4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKj5uokxEeOMQ5AKLd10lA" annotatedElement="_MKj5uYkxEeOMQ5AKLd10lA">
<body>An InputPin that provides the position of an existing value to remove in ordered, nonunique Variables. The type of the removeAt InputPin is UnlimitedNatural, but the value cannot be zero or unlimited.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKj5u4kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MKkgwIkxEeOMQ5AKLd10lA" name="ReplyAction">
<ownedComment xmi:id="_MKkgwYkxEeOMQ5AKLd10lA" annotatedElement="_MKkgwIkxEeOMQ5AKLd10lA">
<body>A ReplyAction is an Action that accepts a set of reply values and a value containing return information produced by a previous AcceptCallAction. The ReplyAction returns the values to the caller of the previous call, completing execution of the call.</body>
</ownedComment>
<ownedRule xmi:id="_MKkgwokxEeOMQ5AKLd10lA" name="pins_match_parameter" constrainedElement="_MKkgwIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKkgw4kxEeOMQ5AKLd10lA" annotatedElement="_MKkgwokxEeOMQ5AKLd10lA">
<body>The replyValue InputPins must match the output (return, out, and inout) parameters of the operation of the event of the replyToCall Trigger in number, type, ordering, and multiplicity.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKlH0IkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>let parameter:OrderedSet(Parameter) = replyToCall.event.oclAsType(CallEvent).operation.outputParameters() in&#xD;
replyValue->size()=parameter->size() and&#xD;
Sequence{1..replyValue->size()}->forAll(i |&#xD;
replyValue->at(i).type.conformsTo(parameter->at(i).type) and&#xD;
replyValue->at(i).isOrdered=parameter->at(i).isOrdered and&#xD;
replyValue->at(i).compatibleWith(parameter->at(i)))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKlH0YkxEeOMQ5AKLd10lA" name="event_on_reply_to_call_trigger" constrainedElement="_MKkgwIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKlH0okxEeOMQ5AKLd10lA" annotatedElement="_MKlH0YkxEeOMQ5AKLd10lA">
<body>The event of the replyToCall Trigger must be a CallEvent.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKlH04kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>replyToCall.event.oclIsKindOf(CallEvent)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MKlH1IkxEeOMQ5AKLd10lA" general="_6WKakLLQEeCsYvaJqFFivQ"/>
<ownedAttribute xmi:id="_MKlH1YkxEeOMQ5AKLd10lA" name="replyToCall" type="_MM6qIIkxEeOMQ5AKLd10lA" association="_MK20pokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKlH1okxEeOMQ5AKLd10lA" annotatedElement="_MKlH1YkxEeOMQ5AKLd10lA">
<body>The Trigger specifying the Operation whose call is being replied to.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MKlH14kxEeOMQ5AKLd10lA" name="replyValue" type="_MKHNzYkxEeOMQ5AKLd10lA" isOrdered="true" aggregation="composite" subsettedProperty="_MJrI44kxEeOMQ5AKLd10lA" association="_MK3bsIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKlH2IkxEeOMQ5AKLd10lA" annotatedElement="_MKlH14kxEeOMQ5AKLd10lA">
<body>A list of InputPins providing the values for the output (inout, out, and return) Parameters of the Operation. These values are returned to the caller.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKlH2YkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKlH2okxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MKlH24kxEeOMQ5AKLd10lA" name="returnInformation" type="_MKHNzYkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MJrI44kxEeOMQ5AKLd10lA" association="_MK20o4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKlH3IkxEeOMQ5AKLd10lA" annotatedElement="_MKlH24kxEeOMQ5AKLd10lA">
<body>An InputPin that holds the return information value produced by an earlier AcceptCallAction.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MKlu4IkxEeOMQ5AKLd10lA" name="SendObjectAction">
<ownedComment xmi:id="_MKlu4YkxEeOMQ5AKLd10lA" annotatedElement="_MKlu4IkxEeOMQ5AKLd10lA">
<body>A SendObjectAction is an InvocationAction that transmits an input object to the target object, which is handled as a request message by the target object. The requestor continues execution immediately after the object is sent out and cannot receive reply values.</body>
</ownedComment>
<ownedRule xmi:id="_MKlu4okxEeOMQ5AKLd10lA" name="type_target_pin" constrainedElement="_MKlu4IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKlu44kxEeOMQ5AKLd10lA" annotatedElement="_MKlu4okxEeOMQ5AKLd10lA">
<body>If onPort is not empty, the Port given by onPort must be an owned or inherited feature of the type of the target InputPin.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKlu5IkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>onPort&lt;>null implies target.type.oclAsType(Classifier).allFeatures()->includes(onPort)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MKlu5YkxEeOMQ5AKLd10lA" general="_MKH00IkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MKlu5okxEeOMQ5AKLd10lA" name="request" type="_MKHNzYkxEeOMQ5AKLd10lA" aggregation="composite" redefinedProperty="_MKH004kxEeOMQ5AKLd10lA" association="_MK2Nk4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKlu54kxEeOMQ5AKLd10lA" annotatedElement="_MKlu5okxEeOMQ5AKLd10lA">
<body>The request object, which is transmitted to the target object. The object may be copied in transmission, so identity might not be preserved.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MKlu6IkxEeOMQ5AKLd10lA" name="target" type="_MKHNzYkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MJrI44kxEeOMQ5AKLd10lA" association="_MK20oIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKlu6YkxEeOMQ5AKLd10lA" annotatedElement="_MKlu6IkxEeOMQ5AKLd10lA">
<body>The target object to which the object is sent.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MKmV8IkxEeOMQ5AKLd10lA" name="SendSignalAction">
<ownedComment xmi:id="_MKmV8YkxEeOMQ5AKLd10lA" annotatedElement="_MKmV8IkxEeOMQ5AKLd10lA">
<body>A SendSignalAction is an InvocationAction that creates a Signal instance and transmits it to the target object. Values from the argument InputPins are used to provide values for the attributes of the Signal. The requestor continues execution immediately after the Signal instance is sent out and cannot receive reply values.</body>
</ownedComment>
<ownedRule xmi:id="_MKmV8okxEeOMQ5AKLd10lA" name="type_ordering_multiplicity" constrainedElement="_MKmV8IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKmV84kxEeOMQ5AKLd10lA" annotatedElement="_MKmV8okxEeOMQ5AKLd10lA">
<body>The type, ordering, and multiplicity of an argument InputPin must be the same as the corresponding attribute of the signal.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKmV9IkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>let attribute: OrderedSet(Property) = signal.allAttributes() in&#xD;
Sequence{1..argument->size()}->forAll(i | &#xD;
argument->at(i).type.conformsTo(attribute->at(i).type) and &#xD;
argument->at(i).isOrdered = attribute->at(i).isOrdered and&#xD;
argument->at(i).compatibleWith(attribute->at(i)))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKmV9YkxEeOMQ5AKLd10lA" name="number_order" constrainedElement="_MKmV8IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKmV9okxEeOMQ5AKLd10lA" annotatedElement="_MKmV9YkxEeOMQ5AKLd10lA">
<body>The number and order of argument InputPins must be the same as the number and order of attributes of the signal.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKmV94kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>argument->size()=signal.allAttributes()->size()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKmV-IkxEeOMQ5AKLd10lA" name="type_target_pin" constrainedElement="_MKmV8IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKmV-YkxEeOMQ5AKLd10lA" annotatedElement="_MKmV-IkxEeOMQ5AKLd10lA">
<body>If onPort is not empty, the Port given by onPort must be an owned or inherited feature of the type of the target InputPin.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKmV-okxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>not onPort->isEmpty() implies target.type.oclAsType(Classifier).allFeatures()->includes(onPort)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MKmV-4kxEeOMQ5AKLd10lA" general="_MKH00IkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MKmV_IkxEeOMQ5AKLd10lA" name="signal" type="_Pu3O0HL0EdqziYxiZo0YtA" association="_MK1mg4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKmV_YkxEeOMQ5AKLd10lA" annotatedElement="_MKmV_IkxEeOMQ5AKLd10lA">
<body>The Signal whose instance is transmitted to the target.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MKmV_okxEeOMQ5AKLd10lA" name="target" type="_MKHNzYkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MJrI44kxEeOMQ5AKLd10lA" association="_MK2NkIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKmV_4kxEeOMQ5AKLd10lA" annotatedElement="_MKmV_okxEeOMQ5AKLd10lA">
<body>The InputPin that provides the target object to which the Signal instance is sent.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MKm9AIkxEeOMQ5AKLd10lA" name="SequenceNode">
<ownedComment xmi:id="_MKm9AYkxEeOMQ5AKLd10lA" annotatedElement="_MKm9AIkxEeOMQ5AKLd10lA">
<body>A SequenceNode is a StructuredActivityNode that executes a sequence of ExecutableNodes in order.</body>
</ownedComment>
<generalization xmi:id="_MKm9AokxEeOMQ5AKLd10lA" general="_w1_2cLLREeCsYvaJqFFivQ"/>
<ownedAttribute xmi:id="_MKm9A4kxEeOMQ5AKLd10lA" name="executableNode" type="_MLpe0IkxEeOMQ5AKLd10lA" isOrdered="true" aggregation="composite" redefinedProperty="_MKsck4kxEeOMQ5AKLd10lA" association="_MK1mgIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKm9BIkxEeOMQ5AKLd10lA" annotatedElement="_MKm9A4kxEeOMQ5AKLd10lA">
<body>The ordered set of ExecutableNodes to be sequenced.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKm9BYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKm9BokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MKnkEIkxEeOMQ5AKLd10lA" name="StartClassifierBehaviorAction">
<ownedComment xmi:id="_MKnkEYkxEeOMQ5AKLd10lA" annotatedElement="_MKnkEIkxEeOMQ5AKLd10lA">
<body>A StartClassifierBehaviorAction is an Action that starts the classifierBehavior of the input object.</body>
</ownedComment>
<ownedRule xmi:id="_MKnkEokxEeOMQ5AKLd10lA" name="multiplicity" constrainedElement="_MKnkEIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKnkE4kxEeOMQ5AKLd10lA" annotatedElement="_MKnkEokxEeOMQ5AKLd10lA">
<body>The multiplicity of the object InputPin is 1..1</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKnkFIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>object.is(1,1)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKnkFYkxEeOMQ5AKLd10lA" name="type_has_classifier" constrainedElement="_MKnkEIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKnkFokxEeOMQ5AKLd10lA" annotatedElement="_MKnkFYkxEeOMQ5AKLd10lA">
<body>If the InputPin has a type, then the type or one of its ancestors must have a classifierBehavior.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKnkF4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>object.type->notEmpty() implies &#xD;
(object.type.oclIsKindOf(BehavioredClassifier) and object.type.oclAsType(BehavioredClassifier).classifierBehavior&lt;>null)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MKnkGIkxEeOMQ5AKLd10lA" general="_6WKakLLQEeCsYvaJqFFivQ"/>
<ownedAttribute xmi:id="_MKnkGYkxEeOMQ5AKLd10lA" name="object" type="_MKHNzYkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MJrI44kxEeOMQ5AKLd10lA" association="_MK0_c4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKnkGokxEeOMQ5AKLd10lA" annotatedElement="_MKnkGYkxEeOMQ5AKLd10lA">
<body>The InputPin that holds the object whose classifierBehavior is to be started.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MKpZQIkxEeOMQ5AKLd10lA" name="StartObjectBehaviorAction">
<ownedComment xmi:id="_MKpZQYkxEeOMQ5AKLd10lA" annotatedElement="_MKpZQIkxEeOMQ5AKLd10lA">
<body>A StartObjectBehaviorAction is an InvocationAction that starts the execution either of a directly instantiated Behavior or of the classifierBehavior of an object. Argument values may be supplied for the input Parameters of the Behavior. If the Behavior is invoked synchronously, then output values may be obtained for output Parameters.</body>
</ownedComment>
<ownedRule xmi:id="_MKpZQokxEeOMQ5AKLd10lA" name="multiplicity_of_object" constrainedElement="_MKpZQIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKpZQ4kxEeOMQ5AKLd10lA" annotatedElement="_MKpZQokxEeOMQ5AKLd10lA">
<body>The multiplicity of the object InputPin must be 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKpZRIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>object.is(1,1)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKpZRYkxEeOMQ5AKLd10lA" name="type_of_object" constrainedElement="_MKpZQIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKpZRokxEeOMQ5AKLd10lA" annotatedElement="_MKpZRYkxEeOMQ5AKLd10lA">
<body>The type of the object InputPin must be either a Behavior or a BehavioredClassifier with a classifierBehavior.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKpZR4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>self.behavior()&lt;>null</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKpZSIkxEeOMQ5AKLd10lA" name="no_onport" constrainedElement="_MKpZQIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKpZSYkxEeOMQ5AKLd10lA" annotatedElement="_MKpZSIkxEeOMQ5AKLd10lA">
<body>A StartObjectBehaviorAction may not specify onPort.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKpZSokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>onPort->isEmpty()</body>
</specification>
</ownedRule>
<generalization xmi:id="_MKpZS4kxEeOMQ5AKLd10lA" general="_MJ7nkIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MKpZTIkxEeOMQ5AKLd10lA" name="object" type="_MKHNzYkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MJrI44kxEeOMQ5AKLd10lA" association="_MK0_cIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKpZTYkxEeOMQ5AKLd10lA" annotatedElement="_MKpZTIkxEeOMQ5AKLd10lA">
<body>An InputPin that holds the object that is either a Behavior to be started or has a classifierBehavior to be started.</body>
</ownedComment>
</ownedAttribute>
<ownedOperation xmi:id="_MKpZTokxEeOMQ5AKLd10lA" name="outputParameters" bodyCondition="_MKpZUIkxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MJ7nqIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKpZT4kxEeOMQ5AKLd10lA" annotatedElement="_MKpZTokxEeOMQ5AKLd10lA">
<body>Return the inout, out and return ownedParameters of the Behavior being called.</body>
</ownedComment>
<ownedRule xmi:id="_MKpZUIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MKpZTokxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKpZUYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (self.behavior().outputParameters())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MKpZUokxEeOMQ5AKLd10lA" name="result" type="_KyaPMGveEdq4DLWZOhbdEA" isOrdered="true" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKpZU4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKpZVIkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MKpZVYkxEeOMQ5AKLd10lA" name="inputParameters" bodyCondition="_MKpZV4kxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MJ7no4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKpZVokxEeOMQ5AKLd10lA" annotatedElement="_MKpZVYkxEeOMQ5AKLd10lA">
<body>Return the in and inout ownedParameters of the Behavior being called.</body>
</ownedComment>
<ownedRule xmi:id="_MKpZV4kxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MKpZVYkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKpZWIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (self.behavior().inputParameters())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MKpZWYkxEeOMQ5AKLd10lA" name="result" type="_KyaPMGveEdq4DLWZOhbdEA" isOrdered="true" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKpZWokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKpZW4kxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MKpZXIkxEeOMQ5AKLd10lA" name="behavior" bodyCondition="_MKpZXokxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MKpZXYkxEeOMQ5AKLd10lA" annotatedElement="_MKpZXIkxEeOMQ5AKLd10lA">
<body>If the type of the object InputPin is a Behavior, then that Behavior. Otherwise, if the type of the object InputPin is a BehavioredClassifier, then the classifierBehavior of that BehavioredClassifier.</body>
</ownedComment>
<ownedRule xmi:id="_MKpZXokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MKpZXIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKpZX4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if object.type.oclIsKindOf(Behavior) then&#xD;
object.type.oclAsType(Behavior)&#xD;
else if object.type.oclIsKindOf(BehavioredClassifier) then&#xD;
object.type.oclAsType(BehavioredClassifier).classifierBehavior&#xD;
else&#xD;
null&#xD;
endif&#xD;
endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MKpZYIkxEeOMQ5AKLd10lA" name="result" type="_TUPtYGveEdq4DLWZOhbdEA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKpZYYkxEeOMQ5AKLd10lA"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MKqnYIkxEeOMQ5AKLd10lA" name="StructuralFeatureAction" isAbstract="true">
<ownedComment xmi:id="_MKqnYYkxEeOMQ5AKLd10lA" annotatedElement="_MKqnYIkxEeOMQ5AKLd10lA">
<body>StructuralFeatureAction is an abstract class for all Actions that operate on StructuralFeatures.</body>
</ownedComment>
<ownedRule xmi:id="_MKqnYokxEeOMQ5AKLd10lA" name="multiplicity" constrainedElement="_MKqnYIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKqnY4kxEeOMQ5AKLd10lA" annotatedElement="_MKqnYokxEeOMQ5AKLd10lA">
<body>The multiplicity of the object InputPin must be 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKqnZIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>object.is(1,1)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKqnZYkxEeOMQ5AKLd10lA" name="object_type" constrainedElement="_MKqnYIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKqnZokxEeOMQ5AKLd10lA" annotatedElement="_MKqnZYkxEeOMQ5AKLd10lA">
<body>The structuralFeature must either be an owned or inherited feature of the type of the object InputPin, or it must be an owned end of a binary Association whose opposite end had as a type to which the type of the object InputPin conforms.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKqnZ4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>object.type.oclAsType(Classifier).allFeatures()->includes(structuralFeature) or&#xD;
object.type.conformsTo(structuralFeature.oclAsType(Property).opposite.type)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKqnaIkxEeOMQ5AKLd10lA" name="visibility" constrainedElement="_MKqnYIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKqnaYkxEeOMQ5AKLd10lA" annotatedElement="_MKqnaIkxEeOMQ5AKLd10lA">
<body>The visibility of the structuralFeature must allow access from the object performing the ReadStructuralFeatureAction.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKqnaokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>structuralFeature.visibility = VisibilityKind::public or
_'context'.allFeatures()->includes(structuralFeature) or
structuralFeature.visibility=VisibilityKind::protected and
_'context'.conformsTo(structuralFeature.oclAsType(Property).opposite.type.oclAsType(Classifier))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKqna4kxEeOMQ5AKLd10lA" name="not_static" constrainedElement="_MKqnYIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKqnbIkxEeOMQ5AKLd10lA" annotatedElement="_MKqna4kxEeOMQ5AKLd10lA">
<body>The structuralFeature must not be static.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKqnbYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>not structuralFeature.isStatic</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKqnbokxEeOMQ5AKLd10lA" name="one_featuring_classifier" constrainedElement="_MKqnYIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKqnb4kxEeOMQ5AKLd10lA" annotatedElement="_MKqnbokxEeOMQ5AKLd10lA">
<body>The structuralFeature must have exactly one featuringClassifier.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKqncIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>structuralFeature.featuringClassifier->size() = 1</body>
</specification>
</ownedRule>
<generalization xmi:id="_MKqncYkxEeOMQ5AKLd10lA" general="_6WKakLLQEeCsYvaJqFFivQ"/>
<ownedAttribute xmi:id="_MKqncokxEeOMQ5AKLd10lA" name="object" type="_MKHNzYkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MJrI44kxEeOMQ5AKLd10lA" association="_MK0YYYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKqnc4kxEeOMQ5AKLd10lA" annotatedElement="_MKqncokxEeOMQ5AKLd10lA">
<body>The InputPin from which the object whose StructuralFeature is to be read or written is obtained.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MKqndIkxEeOMQ5AKLd10lA" name="structuralFeature" type="_MMjdwIkxEeOMQ5AKLd10lA" association="_MK0YZIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKqndYkxEeOMQ5AKLd10lA" annotatedElement="_MKqndIkxEeOMQ5AKLd10lA">
<body>The StructuralFeature to be read or written.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_w1_2cLLREeCsYvaJqFFivQ" name="StructuredActivityNode">
<ownedComment xmi:id="_MKqndokxEeOMQ5AKLd10lA" annotatedElement="_w1_2cLLREeCsYvaJqFFivQ">
<body>A StructuredActivityNode is an Action that is also an ActivityGroup and whose behavior is specified by the ActivityNodes and ActivityEdges it so contains. Unlike other kinds of ActivityGroup, a StructuredActivityNode owns the ActivityNodes and ActivityEdges it contains, and so a node or edge can only be directly contained in one StructuredActivityNode, though StructuredActivityNodes may be nested.</body>
</ownedComment>
<ownedRule xmi:id="_MKqnd4kxEeOMQ5AKLd10lA" name="output_pin_edges" constrainedElement="_w1_2cLLREeCsYvaJqFFivQ">
<ownedComment xmi:id="_MKqneIkxEeOMQ5AKLd10lA" annotatedElement="_MKqnd4kxEeOMQ5AKLd10lA">
<body>The outgoing ActivityEdges of the OutputPins of a StructuredActivityNode must have targets that are not within the StructuredActivityNode.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKqneYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>output.outgoing.target->excludesAll(allOwnedNodes()-input)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKrOcIkxEeOMQ5AKLd10lA" name="edges" constrainedElement="_w1_2cLLREeCsYvaJqFFivQ">
<ownedComment xmi:id="_MKrOcYkxEeOMQ5AKLd10lA" annotatedElement="_MKrOcIkxEeOMQ5AKLd10lA">
<body>The edges of a StructuredActivityNode are all the ActivityEdges with source and target ActivityNodes contained directly or indirectly within the StructuredActivityNode and at least one of the source or target not contained in any more deeply nested StructuredActivityNode.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKrOcokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>edge=self.sourceNodes().outgoing->intersection(self.allOwnedNodes().incoming)->&#xD;
union(self.targetNodes().incoming->intersection(self.allOwnedNodes().outgoing))->asSet()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKrOc4kxEeOMQ5AKLd10lA" name="input_pin_edges" constrainedElement="_w1_2cLLREeCsYvaJqFFivQ">
<ownedComment xmi:id="_MKrOdIkxEeOMQ5AKLd10lA" annotatedElement="_MKrOc4kxEeOMQ5AKLd10lA">
<body>The incoming ActivityEdges of an InputPin of a StructuredActivityNode must have sources that are not within the StructuredActivityNode.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKrOdYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>input.incoming.source->excludesAll(allOwnedNodes()-output)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MKrOdokxEeOMQ5AKLd10lA" general="_ZiwkoGwLEdq7X4sGURiZYA"/>
<generalization xmi:id="_MKrOd4kxEeOMQ5AKLd10lA" general="_aZICgAs-EeGcpbeCPJfCmw"/>
<generalization xmi:id="_MKr1gIkxEeOMQ5AKLd10lA" general="_6WKakLLQEeCsYvaJqFFivQ"/>
<ownedAttribute xmi:id="_gnnw0AtZEeGV4NAcunjVqQ" name="activity" visibility="protected" type="_eGtFwLLREeCsYvaJqFFivQ" isDerived="true" redefinedProperty="_5V2SAAtBEeGcpbeCPJfCmw _X0ZfIAtCEeGcpbeCPJfCmw" association="_w4820AtEEeGcpbeCPJfCmw">
<ownedComment xmi:id="_MKr1gYkxEeOMQ5AKLd10lA" annotatedElement="_gnnw0AtZEeGV4NAcunjVqQ">
<body>The Activity immediately containing the StructuredActivityNode, if it is not contained in another StructuredActivityNode.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKr1gokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MKr1g4kxEeOMQ5AKLd10lA" name="edge" type="_MLbcYIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MLcqhIkxEeOMQ5AKLd10lA _GDD2YAtAEeGcpbeCPJfCmw" association="_MKzxVokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKr1hIkxEeOMQ5AKLd10lA" annotatedElement="_MKr1g4kxEeOMQ5AKLd10lA">
<body>The ActivityEdges immediately contained in the StructuredActivityNode.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKr1hYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKr1hokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MKsckIkxEeOMQ5AKLd10lA" name="mustIsolate">
<ownedComment xmi:id="_MKsckYkxEeOMQ5AKLd10lA" annotatedElement="_MKsckIkxEeOMQ5AKLd10lA">
<body>If true, then any object used by an Action within the StructuredActivityNode cannot be accessed by any Action outside the node until the StructuredActivityNode as a whole completes. Any concurrent Actions that would result in accessing such objects are required to have their execution deferred until the completion of the StructuredActivityNode.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MKsckokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MKsck4kxEeOMQ5AKLd10lA" name="node" type="_WpiyYAs-EeGcpbeCPJfCmw" aggregation="composite" subsettedProperty="_MLcqiIkxEeOMQ5AKLd10lA _GDD2YAtAEeGcpbeCPJfCmw" association="_MKzxV4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKsclIkxEeOMQ5AKLd10lA" annotatedElement="_MKsck4kxEeOMQ5AKLd10lA">
<body>The ActivityNodes immediately contained in the StructuredActivityNode.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKsclYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKsclokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MKscl4kxEeOMQ5AKLd10lA" name="structuredNodeInput" type="_MKHNzYkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MJrI44kxEeOMQ5AKLd10lA" association="_MKzxU4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKscmIkxEeOMQ5AKLd10lA" annotatedElement="_MKscl4kxEeOMQ5AKLd10lA">
<body>The InputPins owned by the StructuredActivityNode.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKscmYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKscmokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MKtDoIkxEeOMQ5AKLd10lA" name="structuredNodeOutput" type="_jvcRQGqEEeKQJv6i-sSgBw" aggregation="composite" subsettedProperty="_MJrv9IkxEeOMQ5AKLd10lA" association="_MKzxUIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKtDoYkxEeOMQ5AKLd10lA" annotatedElement="_MKtDoIkxEeOMQ5AKLd10lA">
<body>The OutputPins owned by the StructuredActivityNode.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKtDookxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKtDo4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MKtDpIkxEeOMQ5AKLd10lA" name="variable" type="_MLvlcIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MNQBWIkxEeOMQ5AKLd10lA" association="_MK0YYIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKtDpYkxEeOMQ5AKLd10lA" annotatedElement="_MKtDpIkxEeOMQ5AKLd10lA">
<body>The Variables defined in the scope of the StructuredActivityNode.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKtDpokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKtDp4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedOperation xmi:id="_MKtDqIkxEeOMQ5AKLd10lA" name="allActions" bodyCondition="_MKtqsYkxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MJxPgIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKtqsIkxEeOMQ5AKLd10lA" annotatedElement="_MKtDqIkxEeOMQ5AKLd10lA">
<body>Returns this StructuredActivityNode and all Actions contained in it.</body>
</ownedComment>
<ownedRule xmi:id="_MKtqsYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MKtDqIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKtqsokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (node->select(oclIsKindOf(Action)).oclAsType(Action).allActions()->including(self)->asSet())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MKtqs4kxEeOMQ5AKLd10lA" name="result" type="_6WKakLLQEeCsYvaJqFFivQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKtqtIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKtqtYkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MKtqtokxEeOMQ5AKLd10lA" name="allOwnedNodes" bodyCondition="_MKtquIkxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MJx2kIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKtqt4kxEeOMQ5AKLd10lA" annotatedElement="_MKtqtokxEeOMQ5AKLd10lA">
<body>Returns all the ActivityNodes contained directly or indirectly within this StructuredActivityNode, in addition to the Pins of the StructuredActivityNode.</body>
</ownedComment>
<ownedRule xmi:id="_MKtquIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MKtqtokxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKtquYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (self.Action::allOwnedNodes()->union(node)->union(node->select(oclIsKindOf(Action)).oclAsType(Action).allOwnedNodes())->asSet())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MKtquokxEeOMQ5AKLd10lA" name="result" type="_WpiyYAs-EeGcpbeCPJfCmw" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKtqu4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKtqvIkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MKuRwIkxEeOMQ5AKLd10lA" name="sourceNodes" bodyCondition="_MKuRwokxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MKuRwYkxEeOMQ5AKLd10lA" annotatedElement="_MKuRwIkxEeOMQ5AKLd10lA">
<body>Return those ActivityNodes contained immediately within the StructuredActivityNode that may act as sources of edges owned by the StructuredActivityNode.</body>
</ownedComment>
<ownedRule xmi:id="_MKuRwokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MKuRwIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKuRw4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (node->union(input.oclAsType(ActivityNode)->asSet())->&#xD;
union(node->select(oclIsKindOf(Action)).oclAsType(Action).output)->asSet())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MKuRxIkxEeOMQ5AKLd10lA" name="result" type="_WpiyYAs-EeGcpbeCPJfCmw" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKuRxYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKuRxokxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MKuRx4kxEeOMQ5AKLd10lA" name="targetNodes" bodyCondition="_MKuRyYkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MKuRyIkxEeOMQ5AKLd10lA" annotatedElement="_MKuRx4kxEeOMQ5AKLd10lA">
<body>Return those ActivityNodes contained immediately within the StructuredActivityNode that may act as targets of edges owned by the StructuredActivityNode.</body>
</ownedComment>
<ownedRule xmi:id="_MKuRyYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MKuRx4kxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKuRyokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (node->union(output.oclAsType(ActivityNode)->asSet())->&#xD;
union(node->select(oclIsKindOf(Action)).oclAsType(Action).input)->asSet())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MKuRy4kxEeOMQ5AKLd10lA" name="result" type="_WpiyYAs-EeGcpbeCPJfCmw" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKuRzIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKuRzYkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MKu40IkxEeOMQ5AKLd10lA" name="containingActivity" bodyCondition="_MKu40okxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MLd4oIkxEeOMQ5AKLd10lA _MLgU4IkxEeOMQ5AKLd10lA _HACtoEzNEeO2z-YY6ENIIA">
<ownedComment xmi:id="_MKu40YkxEeOMQ5AKLd10lA" annotatedElement="_MKu40IkxEeOMQ5AKLd10lA">
<body>The Activity that directly or indirectly contains this StructuredActivityNode (considered as an Action).</body>
</ownedComment>
<ownedRule xmi:id="_MKu40okxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MKu40IkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKu404kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (self.Action::containingActivity())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MKu41IkxEeOMQ5AKLd10lA" name="result" type="_eGtFwLLREeCsYvaJqFFivQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKu41YkxEeOMQ5AKLd10lA"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MKwuAIkxEeOMQ5AKLd10lA" name="TestIdentityAction">
<ownedComment xmi:id="_MKwuAYkxEeOMQ5AKLd10lA" annotatedElement="_MKwuAIkxEeOMQ5AKLd10lA">
<body>A TestIdentityAction is an Action that tests if two values are identical objects.</body>
</ownedComment>
<ownedRule xmi:id="_MKwuAokxEeOMQ5AKLd10lA" name="multiplicity" constrainedElement="_MKwuAIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKwuA4kxEeOMQ5AKLd10lA" annotatedElement="_MKwuAokxEeOMQ5AKLd10lA">
<body>The multiplicity of the InputPins is 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKwuBIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>first.is(1,1) and second.is(1,1)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKwuBYkxEeOMQ5AKLd10lA" name="no_type" constrainedElement="_MKwuAIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKwuBokxEeOMQ5AKLd10lA" annotatedElement="_MKwuBYkxEeOMQ5AKLd10lA">
<body>The InputPins have no type.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKwuB4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>first.type= null and second.type = null</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKwuCIkxEeOMQ5AKLd10lA" name="result_is_boolean" constrainedElement="_MKwuAIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKwuCYkxEeOMQ5AKLd10lA" annotatedElement="_MKwuCIkxEeOMQ5AKLd10lA">
<body>The type of the result OutputPin is Boolean.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKwuCokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result.type=Boolean</body>
</specification>
</ownedRule>
<generalization xmi:id="_MKwuC4kxEeOMQ5AKLd10lA" general="_6WKakLLQEeCsYvaJqFFivQ"/>
<ownedAttribute xmi:id="_MKwuDIkxEeOMQ5AKLd10lA" name="first" type="_MKHNzYkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MJrI44kxEeOMQ5AKLd10lA" association="_MKzKQIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKwuDYkxEeOMQ5AKLd10lA" annotatedElement="_MKwuDIkxEeOMQ5AKLd10lA">
<body>The InputPin on which the first input object is placed.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MKwuDokxEeOMQ5AKLd10lA" name="result" type="_jvcRQGqEEeKQJv6i-sSgBw" aggregation="composite" subsettedProperty="_MJrv9IkxEeOMQ5AKLd10lA" association="_MKzKRokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKwuD4kxEeOMQ5AKLd10lA" annotatedElement="_MKwuDokxEeOMQ5AKLd10lA">
<body>The OutputPin whose Boolean value indicates whether the two input objects are identical.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MKwuEIkxEeOMQ5AKLd10lA" name="second" type="_MKHNzYkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MJrI44kxEeOMQ5AKLd10lA" association="_MKzKQ4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKwuEYkxEeOMQ5AKLd10lA" annotatedElement="_MKwuEIkxEeOMQ5AKLd10lA">
<body>The OutputPin on which the second input object is placed.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MKxVEIkxEeOMQ5AKLd10lA" name="UnmarshallAction">
<ownedComment xmi:id="_MKxVEYkxEeOMQ5AKLd10lA" annotatedElement="_MKxVEIkxEeOMQ5AKLd10lA">
<body>An UnmarshallAction is an Action that retrieves the values of the StructuralFeatures of an object and places them on OutputPins.</body>
</ownedComment>
<ownedRule xmi:id="_MKxVEokxEeOMQ5AKLd10lA" name="structural_feature" constrainedElement="_MKxVEIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKxVE4kxEeOMQ5AKLd10lA" annotatedElement="_MKxVEokxEeOMQ5AKLd10lA">
<body>The unmarshallType must have at least one StructuralFeature.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKxVFIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>unmarshallType.allAttributes()->size() >= 1</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKxVFYkxEeOMQ5AKLd10lA" name="number_of_result" constrainedElement="_MKxVEIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKxVFokxEeOMQ5AKLd10lA" annotatedElement="_MKxVFYkxEeOMQ5AKLd10lA">
<body>The number of result outputPins must be the same as the number of attributes of the unmarshallType.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKxVF4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>unmarshallType.allAttributes()->size() = result->size()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKxVGIkxEeOMQ5AKLd10lA" name="type_ordering_and_multiplicity" constrainedElement="_MKxVEIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKxVGYkxEeOMQ5AKLd10lA" annotatedElement="_MKxVGIkxEeOMQ5AKLd10lA">
<body>The type, ordering and multiplicity of each attribute of the unmarshallType must be compatible with the type, ordering and multiplicity of the corresponding result OutputPin.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKxVGokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>let attribute:OrderedSet(Property) = unmarshallType.allAttributes() in&#xD;
Sequence{1..result->size()}->forAll(i | &#xD;
attribute->at(i).type.conformsTo(result->at(i).type) and&#xD;
attribute->at(i).isOrdered=result->at(i).isOrdered and&#xD;
attribute->at(i).compatibleWith(result->at(i)))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKxVG4kxEeOMQ5AKLd10lA" name="multiplicity_of_object" constrainedElement="_MKxVEIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKxVHIkxEeOMQ5AKLd10lA" annotatedElement="_MKxVG4kxEeOMQ5AKLd10lA">
<body>The multiplicity of the object InputPin is 1..1</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKxVHYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>object.is(1,1)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKxVHokxEeOMQ5AKLd10lA" name="object_type" constrainedElement="_MKxVEIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKxVH4kxEeOMQ5AKLd10lA" annotatedElement="_MKxVHokxEeOMQ5AKLd10lA">
<body>The type of the object InputPin conform to the unmarshallType.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKxVIIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>object.type.conformsTo(unmarshallType)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MKxVIYkxEeOMQ5AKLd10lA" general="_6WKakLLQEeCsYvaJqFFivQ"/>
<ownedAttribute xmi:id="_MKxVIokxEeOMQ5AKLd10lA" name="object" type="_MKHNzYkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MJrI44kxEeOMQ5AKLd10lA" association="_MKyjOokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKxVI4kxEeOMQ5AKLd10lA" annotatedElement="_MKxVIokxEeOMQ5AKLd10lA">
<body>The InputPin that gives the object to be unmarshalled.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MKxVJIkxEeOMQ5AKLd10lA" name="result" type="_jvcRQGqEEeKQJv6i-sSgBw" isOrdered="true" aggregation="composite" subsettedProperty="_MJrv9IkxEeOMQ5AKLd10lA" association="_MKyjM4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKxVJYkxEeOMQ5AKLd10lA" annotatedElement="_MKxVJIkxEeOMQ5AKLd10lA">
<body>The OutputPins on which are placed the values of the StructuralFeatures of the input object.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKxVJokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MKxVJ4kxEeOMQ5AKLd10lA" name="unmarshallType" type="_6UV2QGwJEdq7X4sGURiZYA" association="_MKyjNokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKxVKIkxEeOMQ5AKLd10lA" annotatedElement="_MKxVJ4kxEeOMQ5AKLd10lA">
<body>The type of the object to be unmarshalled.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MKx8IIkxEeOMQ5AKLd10lA" name="ValuePin">
<ownedComment xmi:id="_MKx8IYkxEeOMQ5AKLd10lA" annotatedElement="_MKx8IIkxEeOMQ5AKLd10lA">
<body>A ValuePin is an InputPin that provides a value by evaluating a ValueSpecification.</body>
</ownedComment>
<ownedRule xmi:id="_MKx8IokxEeOMQ5AKLd10lA" name="no_incoming_edges" constrainedElement="_MKx8IIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKx8I4kxEeOMQ5AKLd10lA" annotatedElement="_MKx8IokxEeOMQ5AKLd10lA">
<body>A ValuePin may have no incoming ActivityEdges.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKx8JIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>incoming->isEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MKx8JYkxEeOMQ5AKLd10lA" name="compatible_type" constrainedElement="_MKx8IIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKx8JokxEeOMQ5AKLd10lA" annotatedElement="_MKx8JYkxEeOMQ5AKLd10lA">
<body>The type of the value ValueSpecification must conform to the type of the ValuePin.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MKx8J4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>value.type.conformsTo(type)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MKx8KIkxEeOMQ5AKLd10lA" general="_MKHNzYkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MKx8KYkxEeOMQ5AKLd10lA" name="value" type="_MPO-UIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MKyjMIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MKx8KokxEeOMQ5AKLd10lA" annotatedElement="_MKx8KYkxEeOMQ5AKLd10lA">
<body>The ValueSpecification that is evaluated to obtain the value that the ValuePin will provide.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MKyjMIkxEeOMQ5AKLd10lA" name="A_value_valuePin" memberEnd="_MKx8KYkxEeOMQ5AKLd10lA _MKyjMYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MKyjMYkxEeOMQ5AKLd10lA" name="valuePin" type="_MKx8IIkxEeOMQ5AKLd10lA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MKyjMIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKyjMokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MKyjM4kxEeOMQ5AKLd10lA" name="A_result_unmarshallAction" memberEnd="_MKxVJIkxEeOMQ5AKLd10lA _MKyjNIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MKyjNIkxEeOMQ5AKLd10lA" name="unmarshallAction" type="_MKxVEIkxEeOMQ5AKLd10lA" subsettedProperty="_MLH6Z4kxEeOMQ5AKLd10lA" association="_MKyjM4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKyjNYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MKyjNokxEeOMQ5AKLd10lA" name="A_unmarshallType_unmarshallAction" memberEnd="_MKxVJ4kxEeOMQ5AKLd10lA _MKyjN4kxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MKyjN4kxEeOMQ5AKLd10lA" name="unmarshallAction" type="_MKxVEIkxEeOMQ5AKLd10lA" association="_MKyjNokxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKyjOIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MKyjOYkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MKyjOokxEeOMQ5AKLd10lA" name="A_object_unmarshallAction" memberEnd="_MKxVIokxEeOMQ5AKLd10lA _MKyjO4kxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MKyjO4kxEeOMQ5AKLd10lA" name="unmarshallAction" type="_MKxVEIkxEeOMQ5AKLd10lA" subsettedProperty="_MLIhdYkxEeOMQ5AKLd10lA" association="_MKyjOokxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKyjPIkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MKzKQIkxEeOMQ5AKLd10lA" name="A_first_testIdentityAction" memberEnd="_MKwuDIkxEeOMQ5AKLd10lA _MKzKQYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MKzKQYkxEeOMQ5AKLd10lA" name="testIdentityAction" type="_MKwuAIkxEeOMQ5AKLd10lA" subsettedProperty="_MLIhdYkxEeOMQ5AKLd10lA" association="_MKzKQIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKzKQokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MKzKQ4kxEeOMQ5AKLd10lA" name="A_second_testIdentityAction" memberEnd="_MKwuEIkxEeOMQ5AKLd10lA _MKzKRIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MKzKRIkxEeOMQ5AKLd10lA" name="testIdentityAction" type="_MKwuAIkxEeOMQ5AKLd10lA" subsettedProperty="_MLIhdYkxEeOMQ5AKLd10lA" association="_MKzKQ4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKzKRYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MKzKRokxEeOMQ5AKLd10lA" name="A_result_testIdentityAction" memberEnd="_MKwuDokxEeOMQ5AKLd10lA _MKzKR4kxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MKzKR4kxEeOMQ5AKLd10lA" name="testIdentityAction" type="_MKwuAIkxEeOMQ5AKLd10lA" subsettedProperty="_MLH6Z4kxEeOMQ5AKLd10lA" association="_MKzKRokxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKzKSIkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MKzxUIkxEeOMQ5AKLd10lA" name="A_structuredNodeOutput_structuredActivityNode" memberEnd="_MKtDoIkxEeOMQ5AKLd10lA _MKzxUYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MKzxUYkxEeOMQ5AKLd10lA" name="structuredActivityNode" type="_w1_2cLLREeCsYvaJqFFivQ" subsettedProperty="_MLH6Z4kxEeOMQ5AKLd10lA" association="_MKzxUIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKzxUokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MKzxU4kxEeOMQ5AKLd10lA" name="A_structuredNodeInput_structuredActivityNode" memberEnd="_MKscl4kxEeOMQ5AKLd10lA _MKzxVIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MKzxVIkxEeOMQ5AKLd10lA" name="structuredActivityNode" type="_w1_2cLLREeCsYvaJqFFivQ" subsettedProperty="_MLIhdYkxEeOMQ5AKLd10lA" association="_MKzxU4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MKzxVYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MKzxVokxEeOMQ5AKLd10lA" name="A_edge_inStructuredNode" memberEnd="_MKr1g4kxEeOMQ5AKLd10lA _MLbcdIkxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MKzxV4kxEeOMQ5AKLd10lA" name="A_node_inStructuredNode" memberEnd="_MKsck4kxEeOMQ5AKLd10lA _MLfGyIkxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MK0YYIkxEeOMQ5AKLd10lA" name="A_variable_scope" memberEnd="_MKtDpIkxEeOMQ5AKLd10lA _MLwMhokxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MK0YYYkxEeOMQ5AKLd10lA" name="A_object_structuralFeatureAction" memberEnd="_MKqncokxEeOMQ5AKLd10lA _MK0YYokxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MK0YYokxEeOMQ5AKLd10lA" name="structuralFeatureAction" type="_MKqnYIkxEeOMQ5AKLd10lA" subsettedProperty="_MLIhdYkxEeOMQ5AKLd10lA" association="_MK0YYYkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK0YY4kxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MK0YZIkxEeOMQ5AKLd10lA" name="A_structuralFeature_structuralFeatureAction" memberEnd="_MKqndIkxEeOMQ5AKLd10lA _MK0YZYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MK0YZYkxEeOMQ5AKLd10lA" name="structuralFeatureAction" type="_MKqnYIkxEeOMQ5AKLd10lA" association="_MK0YZIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK0YZokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MK0YZ4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MK0_cIkxEeOMQ5AKLd10lA" name="A_object_startObjectBehaviorAction" memberEnd="_MKpZTIkxEeOMQ5AKLd10lA _MK0_cYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MK0_cYkxEeOMQ5AKLd10lA" name="startObjectBehaviorAction" type="_MKpZQIkxEeOMQ5AKLd10lA" subsettedProperty="_MLIhdYkxEeOMQ5AKLd10lA" association="_MK0_cIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK0_cokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MK0_c4kxEeOMQ5AKLd10lA" name="A_object_startClassifierBehaviorAction" memberEnd="_MKnkGYkxEeOMQ5AKLd10lA _MK0_dIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MK0_dIkxEeOMQ5AKLd10lA" name="startClassifierBehaviorAction" type="_MKnkEIkxEeOMQ5AKLd10lA" subsettedProperty="_MLIhdYkxEeOMQ5AKLd10lA" association="_MK0_c4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK0_dYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MK1mgIkxEeOMQ5AKLd10lA" name="A_executableNode_sequenceNode" memberEnd="_MKm9A4kxEeOMQ5AKLd10lA _MK1mgYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MK1mgYkxEeOMQ5AKLd10lA" name="sequenceNode" type="_MKm9AIkxEeOMQ5AKLd10lA" subsettedProperty="_MLfGyIkxEeOMQ5AKLd10lA" association="_MK1mgIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK1mgokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MK1mg4kxEeOMQ5AKLd10lA" name="A_signal_sendSignalAction" memberEnd="_MKmV_IkxEeOMQ5AKLd10lA _MK1mhIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MK1mhIkxEeOMQ5AKLd10lA" name="sendSignalAction" type="_MKmV8IkxEeOMQ5AKLd10lA" association="_MK1mg4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK1mhYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MK1mhokxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MK2NkIkxEeOMQ5AKLd10lA" name="A_target_sendSignalAction" memberEnd="_MKmV_okxEeOMQ5AKLd10lA _MK2NkYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MK2NkYkxEeOMQ5AKLd10lA" name="sendSignalAction" type="_MKmV8IkxEeOMQ5AKLd10lA" subsettedProperty="_MLIhdYkxEeOMQ5AKLd10lA" association="_MK2NkIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK2NkokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MK2Nk4kxEeOMQ5AKLd10lA" name="A_request_sendObjectAction" memberEnd="_MKlu5okxEeOMQ5AKLd10lA _MK2NlYkxEeOMQ5AKLd10lA">
<generalization xmi:id="_MK2NlIkxEeOMQ5AKLd10lA" general="_MLDo8okxEeOMQ5AKLd10lA"/>
<ownedEnd xmi:id="_MK2NlYkxEeOMQ5AKLd10lA" name="sendObjectAction" type="_MKlu4IkxEeOMQ5AKLd10lA" redefinedProperty="_MLDo84kxEeOMQ5AKLd10lA" association="_MK2Nk4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK2NlokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MK20oIkxEeOMQ5AKLd10lA" name="A_target_sendObjectAction" memberEnd="_MKlu6IkxEeOMQ5AKLd10lA _MK20oYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MK20oYkxEeOMQ5AKLd10lA" name="sendObjectAction" type="_MKlu4IkxEeOMQ5AKLd10lA" subsettedProperty="_MLIhdYkxEeOMQ5AKLd10lA" association="_MK20oIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK20ookxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MK20o4kxEeOMQ5AKLd10lA" name="A_returnInformation_replyAction" memberEnd="_MKlH24kxEeOMQ5AKLd10lA _MK20pIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MK20pIkxEeOMQ5AKLd10lA" name="replyAction" type="_MKkgwIkxEeOMQ5AKLd10lA" subsettedProperty="_MLIhdYkxEeOMQ5AKLd10lA" association="_MK20o4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK20pYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MK20pokxEeOMQ5AKLd10lA" name="A_replyToCall_replyAction" memberEnd="_MKlH1YkxEeOMQ5AKLd10lA _MK20p4kxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MK20p4kxEeOMQ5AKLd10lA" name="replyAction" type="_MKkgwIkxEeOMQ5AKLd10lA" association="_MK20pokxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK20qIkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MK3bsIkxEeOMQ5AKLd10lA" name="A_replyValue_replyAction" memberEnd="_MKlH14kxEeOMQ5AKLd10lA _MK3bsYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MK3bsYkxEeOMQ5AKLd10lA" name="replyAction" type="_MKkgwIkxEeOMQ5AKLd10lA" subsettedProperty="_MLIhdYkxEeOMQ5AKLd10lA" association="_MK3bsIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK3bsokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MK3bs4kxEeOMQ5AKLd10lA" name="A_removeAt_removeVariableValueAction" memberEnd="_MKj5uYkxEeOMQ5AKLd10lA _MK3btIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MK3btIkxEeOMQ5AKLd10lA" name="removeVariableValueAction" type="_MKj5sIkxEeOMQ5AKLd10lA" subsettedProperty="_MLIhdYkxEeOMQ5AKLd10lA" association="_MK3bs4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK3btYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MK4CwIkxEeOMQ5AKLd10lA" name="A_removeAt_removeStructuralFeatureValueAction" memberEnd="_MKjSqYkxEeOMQ5AKLd10lA _MK4CwYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MK4CwYkxEeOMQ5AKLd10lA" name="removeStructuralFeatureValueAction" type="_MKjSoIkxEeOMQ5AKLd10lA" subsettedProperty="_MLIhdYkxEeOMQ5AKLd10lA" association="_MK4CwIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK4CwokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MK4Cw4kxEeOMQ5AKLd10lA" name="A_collection_reduceAction" memberEnd="_MKirnIkxEeOMQ5AKLd10lA _MK4CxIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MK4CxIkxEeOMQ5AKLd10lA" name="reduceAction" type="_MKirkIkxEeOMQ5AKLd10lA" subsettedProperty="_MLIhdYkxEeOMQ5AKLd10lA" association="_MK4Cw4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK4CxYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MK4p0IkxEeOMQ5AKLd10lA" name="A_reducer_reduceAction" memberEnd="_MKiroYkxEeOMQ5AKLd10lA _MK4p0YkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MK4p0YkxEeOMQ5AKLd10lA" name="reduceAction" type="_MKirkIkxEeOMQ5AKLd10lA" association="_MK4p0IkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK4p0okxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MK4p04kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MK4p1IkxEeOMQ5AKLd10lA" name="A_result_reduceAction" memberEnd="_MKiro4kxEeOMQ5AKLd10lA _MK4p1YkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MK4p1YkxEeOMQ5AKLd10lA" name="reduceAction" type="_MKirkIkxEeOMQ5AKLd10lA" subsettedProperty="_MLH6Z4kxEeOMQ5AKLd10lA" association="_MK4p1IkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK4p1okxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MK4p14kxEeOMQ5AKLd10lA" name="A_object_reclassifyObjectAction" memberEnd="_MKhdg4kxEeOMQ5AKLd10lA _MK5Q4IkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MK5Q4IkxEeOMQ5AKLd10lA" name="reclassifyObjectAction" type="_MKhdcIkxEeOMQ5AKLd10lA" subsettedProperty="_MLIhdYkxEeOMQ5AKLd10lA" association="_MK4p14kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK5Q4YkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MK5Q4okxEeOMQ5AKLd10lA" name="A_newClassifier_reclassifyObjectAction" memberEnd="_MKhdf4kxEeOMQ5AKLd10lA _MK5Q44kxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MK5Q44kxEeOMQ5AKLd10lA" name="reclassifyObjectAction" type="_MKhdcIkxEeOMQ5AKLd10lA" association="_MK5Q4okxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK5Q5IkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MK5Q5YkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MK5Q5okxEeOMQ5AKLd10lA" name="A_oldClassifier_reclassifyObjectAction" memberEnd="_MKhdhYkxEeOMQ5AKLd10lA _MK5Q54kxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MK5Q54kxEeOMQ5AKLd10lA" name="reclassifyObjectAction" type="_MKhdcIkxEeOMQ5AKLd10lA" association="_MK5Q5okxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK5Q6IkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MK5Q6YkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MK538IkxEeOMQ5AKLd10lA" name="A_result_readVariableAction" memberEnd="_MKg2Y4kxEeOMQ5AKLd10lA _MK538YkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MK538YkxEeOMQ5AKLd10lA" name="readVariableAction" type="_MKgPUokxEeOMQ5AKLd10lA" subsettedProperty="_MLH6Z4kxEeOMQ5AKLd10lA" association="_MK538IkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK538okxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MK5384kxEeOMQ5AKLd10lA" name="A_result_readStructuralFeatureAction" memberEnd="_MKgPUIkxEeOMQ5AKLd10lA _MK539IkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MK539IkxEeOMQ5AKLd10lA" name="readStructuralFeatureAction" type="_MKfoQIkxEeOMQ5AKLd10lA" subsettedProperty="_MLH6Z4kxEeOMQ5AKLd10lA" association="_MK5384kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK539YkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MK539okxEeOMQ5AKLd10lA" name="A_result_readSelfAction" memberEnd="_MKfBP4kxEeOMQ5AKLd10lA _MK5394kxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MK5394kxEeOMQ5AKLd10lA" name="readSelfAction" type="_MKfBMIkxEeOMQ5AKLd10lA" subsettedProperty="_MLH6Z4kxEeOMQ5AKLd10lA" association="_MK539okxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK53-IkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MK6fAIkxEeOMQ5AKLd10lA" name="A_qualifier_readLinkObjectEndQualifierAction" memberEnd="_MKdzLYkxEeOMQ5AKLd10lA _MK6fAYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MK6fAYkxEeOMQ5AKLd10lA" name="readLinkObjectEndQualifierAction" type="_MKdzEIkxEeOMQ5AKLd10lA" association="_MK6fAIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK6fAokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MK6fA4kxEeOMQ5AKLd10lA" name="A_object_readLinkObjectEndQualifierAction" memberEnd="_MKdzK4kxEeOMQ5AKLd10lA _MK6fBIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MK6fBIkxEeOMQ5AKLd10lA" name="readLinkObjectEndQualifierAction" type="_MKdzEIkxEeOMQ5AKLd10lA" subsettedProperty="_MLIhdYkxEeOMQ5AKLd10lA" association="_MK6fA4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK6fBYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MK6fBokxEeOMQ5AKLd10lA" name="A_result_readLinkObjectEndQualifierAction" memberEnd="_MKdzL4kxEeOMQ5AKLd10lA _MK6fB4kxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MK6fB4kxEeOMQ5AKLd10lA" name="readLinkObjectEndQualifierAction" type="_MKdzEIkxEeOMQ5AKLd10lA" subsettedProperty="_MLH6Z4kxEeOMQ5AKLd10lA" association="_MK6fBokxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK6fCIkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MK7GEIkxEeOMQ5AKLd10lA" name="A_object_readLinkObjectEndAction" memberEnd="_MKb9-okxEeOMQ5AKLd10lA _MK7GEYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MK7GEYkxEeOMQ5AKLd10lA" name="readLinkObjectEndAction" type="_MKb94IkxEeOMQ5AKLd10lA" subsettedProperty="_MLIhdYkxEeOMQ5AKLd10lA" association="_MK7GEIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK7GEokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MK7GE4kxEeOMQ5AKLd10lA" name="A_end_readLinkObjectEndAction" memberEnd="_MKb9-IkxEeOMQ5AKLd10lA _MK7GFIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MK7GFIkxEeOMQ5AKLd10lA" name="readLinkObjectEndAction" type="_MKb94IkxEeOMQ5AKLd10lA" association="_MK7GE4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK7GFYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MK7tIIkxEeOMQ5AKLd10lA" name="A_result_readLinkObjectEndAction" memberEnd="_MKb9_IkxEeOMQ5AKLd10lA _MK7tIYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MK7tIYkxEeOMQ5AKLd10lA" name="readLinkObjectEndAction" type="_MKb94IkxEeOMQ5AKLd10lA" subsettedProperty="_MLH6Z4kxEeOMQ5AKLd10lA" association="_MK7tIIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK7tIokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MK7tI4kxEeOMQ5AKLd10lA" name="A_result_readLinkAction" memberEnd="_MKaIwokxEeOMQ5AKLd10lA _MK7tJIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MK7tJIkxEeOMQ5AKLd10lA" name="readLinkAction" type="_MKaIsIkxEeOMQ5AKLd10lA" subsettedProperty="_MLH6Z4kxEeOMQ5AKLd10lA" association="_MK7tI4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK7tJYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MK8UMIkxEeOMQ5AKLd10lA" name="A_classifier_readIsClassifiedObjectAction" memberEnd="_MKY6n4kxEeOMQ5AKLd10lA _MK8UMYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MK8UMYkxEeOMQ5AKLd10lA" name="readIsClassifiedObjectAction" type="_MKY6kIkxEeOMQ5AKLd10lA" association="_MK8UMIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK8UMokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MK8UM4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MK8UNIkxEeOMQ5AKLd10lA" name="A_result_readIsClassifiedObjectAction" memberEnd="_MKY6pokxEeOMQ5AKLd10lA _MK8UNYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MK8UNYkxEeOMQ5AKLd10lA" name="readIsClassifiedObjectAction" type="_MKY6kIkxEeOMQ5AKLd10lA" subsettedProperty="_MLH6Z4kxEeOMQ5AKLd10lA" association="_MK8UNIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK8UNokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MK8UN4kxEeOMQ5AKLd10lA" name="A_object_readIsClassifiedObjectAction" memberEnd="_MKY6pIkxEeOMQ5AKLd10lA _MK8UOIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MK8UOIkxEeOMQ5AKLd10lA" name="readIsClassifiedObjectAction" type="_MKY6kIkxEeOMQ5AKLd10lA" subsettedProperty="_MLIhdYkxEeOMQ5AKLd10lA" association="_MK8UN4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK8UOYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MK87QIkxEeOMQ5AKLd10lA" name="A_result_readExtentAction" memberEnd="_MKXse4kxEeOMQ5AKLd10lA _MK87QYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MK87QYkxEeOMQ5AKLd10lA" name="readExtentAction" type="_MKXscIkxEeOMQ5AKLd10lA" subsettedProperty="_MLH6Z4kxEeOMQ5AKLd10lA" association="_MK87QIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK87QokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MK87Q4kxEeOMQ5AKLd10lA" name="A_classifier_readExtentAction" memberEnd="_MKXseYkxEeOMQ5AKLd10lA _MK87RIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MK87RIkxEeOMQ5AKLd10lA" name="readExtentAction" type="_MKXscIkxEeOMQ5AKLd10lA" association="_MK87Q4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK87RYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MK9iUIkxEeOMQ5AKLd10lA" name="A_exception_raiseExceptionAction" memberEnd="_MKXFY4kxEeOMQ5AKLd10lA _MK9iUYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MK9iUYkxEeOMQ5AKLd10lA" name="raiseExceptionAction" type="_MKXFYIkxEeOMQ5AKLd10lA" subsettedProperty="_MLIhdYkxEeOMQ5AKLd10lA" association="_MK9iUIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK9iUokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MK-JYIkxEeOMQ5AKLd10lA" name="A_qualifier_qualifierValue" memberEnd="_MKWeXIkxEeOMQ5AKLd10lA _MK-JYYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MK-JYYkxEeOMQ5AKLd10lA" name="qualifierValue" type="_MKWeUIkxEeOMQ5AKLd10lA" association="_MK-JYIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK-JYokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MK-JY4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MK-wcIkxEeOMQ5AKLd10lA" name="A_value_qualifierValue" memberEnd="_MKWeXokxEeOMQ5AKLd10lA _MK-wcYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MK-wcYkxEeOMQ5AKLd10lA" name="qualifierValue" type="_MKWeUIkxEeOMQ5AKLd10lA" association="_MK-wcIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK-wcokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MK-wc4kxEeOMQ5AKLd10lA" name="A_outputValue_opaqueAction" memberEnd="_MKTbAIkxEeOMQ5AKLd10lA _MK-wdIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MK-wdIkxEeOMQ5AKLd10lA" name="opaqueAction" type="__pbPMLG4EeCDe8CO90iVKQ" subsettedProperty="_MLH6Z4kxEeOMQ5AKLd10lA" association="_MK-wc4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK-wdYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MK_XgIkxEeOMQ5AKLd10lA" name="A_inputValue_opaqueAction" memberEnd="_MKSz8IkxEeOMQ5AKLd10lA _MK_XgYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MK_XgYkxEeOMQ5AKLd10lA" name="opaqueAction" type="__pbPMLG4EeCDe8CO90iVKQ" subsettedProperty="_MLIhdYkxEeOMQ5AKLd10lA" association="_MK_XgIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK_XgokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MK_-kIkxEeOMQ5AKLd10lA" name="A_setupPart_loopNode" memberEnd="_MKPwoIkxEeOMQ5AKLd10lA _MK_-kYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MK_-kYkxEeOMQ5AKLd10lA" name="loopNode" type="_Oc6u0GqEEeKQJv6i-sSgBw" association="_MK_-kIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK_-kokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MK_-k4kxEeOMQ5AKLd10lA" name="A_bodyPart_loopNode" memberEnd="_MKOigIkxEeOMQ5AKLd10lA _MK_-lIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MK_-lIkxEeOMQ5AKLd10lA" name="loopNode" type="_Oc6u0GqEEeKQJv6i-sSgBw" association="_MK_-k4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MK_-lYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLAloIkxEeOMQ5AKLd10lA" name="A_loopVariable_loopNode" memberEnd="_bHinUGqEEeKQJv6i-sSgBw _MLAloYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLAloYkxEeOMQ5AKLd10lA" name="loopNode" type="_Oc6u0GqEEeKQJv6i-sSgBw" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MLAloIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLAlookxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLAlo4kxEeOMQ5AKLd10lA" name="A_result_loopNode" memberEnd="_MKPJlokxEeOMQ5AKLd10lA _MLAlpIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLAlpIkxEeOMQ5AKLd10lA" name="loopNode" type="_Oc6u0GqEEeKQJv6i-sSgBw" subsettedProperty="_MKzxUYkxEeOMQ5AKLd10lA" association="_MLAlo4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLAlpYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLAlpokxEeOMQ5AKLd10lA" name="A_bodyOutput_loopNode" memberEnd="_MKN7dIkxEeOMQ5AKLd10lA _MLAlp4kxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLAlp4kxEeOMQ5AKLd10lA" name="loopNode" type="_Oc6u0GqEEeKQJv6i-sSgBw" association="_MLAlpokxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLAlqIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLAlqYkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLBMsIkxEeOMQ5AKLd10lA" name="A_loopVariableInput_loopNode" memberEnd="_MKPJkokxEeOMQ5AKLd10lA _MLBMsYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLBMsYkxEeOMQ5AKLd10lA" name="loopNode" type="_Oc6u0GqEEeKQJv6i-sSgBw" subsettedProperty="_MKzxVIkxEeOMQ5AKLd10lA" association="_MLBMsIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLBMsokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLBMs4kxEeOMQ5AKLd10lA" name="A_test_loopNode" memberEnd="_MKPwpIkxEeOMQ5AKLd10lA _MLBMtIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLBMtIkxEeOMQ5AKLd10lA" name="loopNode" type="_Oc6u0GqEEeKQJv6i-sSgBw" association="_MLBMs4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLBMtYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLBzwIkxEeOMQ5AKLd10lA" name="A_decider_loopNode" memberEnd="_MKOihIkxEeOMQ5AKLd10lA _MLBzwYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLBzwYkxEeOMQ5AKLd10lA" name="loopNode" type="_Oc6u0GqEEeKQJv6i-sSgBw" association="_MLBzwIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLBzwokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLBzw4kxEeOMQ5AKLd10lA" name="A_destroyAt_linkEndDestructionData" memberEnd="_MKMGRokxEeOMQ5AKLd10lA _MLBzxIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLBzxIkxEeOMQ5AKLd10lA" name="linkEndDestructionData" type="_MKMGQIkxEeOMQ5AKLd10lA" association="_MLBzw4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLBzxYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLCa0IkxEeOMQ5AKLd10lA" name="A_value_linkEndData" memberEnd="_MKK4OIkxEeOMQ5AKLd10lA _MLCa0YkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLCa0YkxEeOMQ5AKLd10lA" name="linkEndData" type="_MKK4IIkxEeOMQ5AKLd10lA" association="_MLCa0IkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLCa0okxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLCa04kxEeOMQ5AKLd10lA" name="A_end_linkEndData" memberEnd="_MKK4MokxEeOMQ5AKLd10lA _MLCa1IkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLCa1IkxEeOMQ5AKLd10lA" name="linkEndData" type="_MKK4IIkxEeOMQ5AKLd10lA" association="_MLCa04kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLCa1YkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLCa1okxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLDB4IkxEeOMQ5AKLd10lA" name="A_qualifier_linkEndData" memberEnd="_MKK4NIkxEeOMQ5AKLd10lA _MLDB4YkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLDB4YkxEeOMQ5AKLd10lA" name="linkEndData" type="_MKK4IIkxEeOMQ5AKLd10lA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MLDB4IkxEeOMQ5AKLd10lA"/>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLDB4okxEeOMQ5AKLd10lA" name="A_insertAt_linkEndCreationData" memberEnd="_MKJqBokxEeOMQ5AKLd10lA _MLDB44kxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLDB44kxEeOMQ5AKLd10lA" name="linkEndCreationData" type="_MKJqAIkxEeOMQ5AKLd10lA" association="_MLDB4okxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLDB5IkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLDB5YkxEeOMQ5AKLd10lA" name="A_inputValue_linkAction" memberEnd="_MKJDAIkxEeOMQ5AKLd10lA _MLDB5okxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLDB5okxEeOMQ5AKLd10lA" name="linkAction" type="_MKJC8IkxEeOMQ5AKLd10lA" subsettedProperty="_MLIhdYkxEeOMQ5AKLd10lA" association="_MLDB5YkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLDB54kxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLDo8IkxEeOMQ5AKLd10lA" name="A_endData_linkAction" memberEnd="_MKJC_IkxEeOMQ5AKLd10lA _MLDo8YkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLDo8YkxEeOMQ5AKLd10lA" name="linkAction" type="_MKJC8IkxEeOMQ5AKLd10lA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MLDo8IkxEeOMQ5AKLd10lA"/>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLDo8okxEeOMQ5AKLd10lA" name="A_argument_invocationAction" memberEnd="_MKH004kxEeOMQ5AKLd10lA _MLDo84kxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLDo84kxEeOMQ5AKLd10lA" name="invocationAction" type="_MKH00IkxEeOMQ5AKLd10lA" subsettedProperty="_MLIhdYkxEeOMQ5AKLd10lA" association="_MLDo8okxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLDo9IkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLDo9YkxEeOMQ5AKLd10lA" name="A_onPort_invocationAction" memberEnd="_MKH014kxEeOMQ5AKLd10lA _MLDo9okxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLDo9okxEeOMQ5AKLd10lA" name="invocationAction" type="_MKH00IkxEeOMQ5AKLd10lA" association="_MLDo9YkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLDo94kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLDo-IkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLEQAIkxEeOMQ5AKLd10lA" name="A_inputElement_regionAsInput" memberEnd="_MKHNw4kxEeOMQ5AKLd10lA _MKF_pokxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MLEQAYkxEeOMQ5AKLd10lA" name="A_outputElement_regionAsOutput" memberEnd="_MKHNyYkxEeOMQ5AKLd10lA _MKF_qYkxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MLEQAokxEeOMQ5AKLd10lA" name="A_target_destroyObjectAction" memberEnd="_MKFYn4kxEeOMQ5AKLd10lA _MLEQA4kxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLEQA4kxEeOMQ5AKLd10lA" name="destroyObjectAction" type="_MKFYkIkxEeOMQ5AKLd10lA" subsettedProperty="_MLIhdYkxEeOMQ5AKLd10lA" association="_MLEQAokxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLEQBIkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLEQBYkxEeOMQ5AKLd10lA" name="A_endData_destroyLinkAction" memberEnd="_MKExg4kxEeOMQ5AKLd10lA _MLEQB4kxEeOMQ5AKLd10lA">
<generalization xmi:id="_MLEQBokxEeOMQ5AKLd10lA" general="_MLDo8IkxEeOMQ5AKLd10lA"/>
<ownedEnd xmi:id="_MLEQB4kxEeOMQ5AKLd10lA" name="destroyLinkAction" type="_MKExgIkxEeOMQ5AKLd10lA" redefinedProperty="_MLDo8YkxEeOMQ5AKLd10lA" association="_MLEQBYkxEeOMQ5AKLd10lA"/>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLE3EIkxEeOMQ5AKLd10lA" name="A_classifier_createObjectAction" memberEnd="_MKEKf4kxEeOMQ5AKLd10lA _MLE3EYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLE3EYkxEeOMQ5AKLd10lA" name="createObjectAction" type="_MKEKcIkxEeOMQ5AKLd10lA" association="_MLE3EIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLE3EokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLE3E4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLE3FIkxEeOMQ5AKLd10lA" name="A_result_createObjectAction" memberEnd="_MKEKgYkxEeOMQ5AKLd10lA _MLE3FYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLE3FYkxEeOMQ5AKLd10lA" name="createObjectAction" type="_MKEKcIkxEeOMQ5AKLd10lA" subsettedProperty="_MLH6Z4kxEeOMQ5AKLd10lA" association="_MLE3FIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLE3FokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLE3F4kxEeOMQ5AKLd10lA" name="A_result_createLinkObjectAction" memberEnd="_MKDjbIkxEeOMQ5AKLd10lA _MLE3GIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLE3GIkxEeOMQ5AKLd10lA" name="createLinkObjectAction" type="_MKDjYIkxEeOMQ5AKLd10lA" subsettedProperty="_MLH6Z4kxEeOMQ5AKLd10lA" association="_MLE3F4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLE3GYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLE3GokxEeOMQ5AKLd10lA" name="A_endData_createLinkAction" memberEnd="_MKC8VokxEeOMQ5AKLd10lA _MLE3HIkxEeOMQ5AKLd10lA">
<generalization xmi:id="_MLE3G4kxEeOMQ5AKLd10lA" general="_MLDo8IkxEeOMQ5AKLd10lA"/>
<ownedEnd xmi:id="_MLE3HIkxEeOMQ5AKLd10lA" name="createLinkAction" type="_MKC8UIkxEeOMQ5AKLd10lA" redefinedProperty="_MLDo8YkxEeOMQ5AKLd10lA" association="_MLE3GokxEeOMQ5AKLd10lA"/>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLFeIIkxEeOMQ5AKLd10lA" name="A_clause_conditionalNode" memberEnd="_MKCVVYkxEeOMQ5AKLd10lA _MLFeIYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLFeIYkxEeOMQ5AKLd10lA" name="conditionalNode" type="_MKCVQIkxEeOMQ5AKLd10lA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MLFeIIkxEeOMQ5AKLd10lA"/>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLFeIokxEeOMQ5AKLd10lA" name="A_result_conditionalNode" memberEnd="_MKCVXokxEeOMQ5AKLd10lA _MLFeI4kxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLFeI4kxEeOMQ5AKLd10lA" name="conditionalNode" type="_MKCVQIkxEeOMQ5AKLd10lA" subsettedProperty="_MKzxUYkxEeOMQ5AKLd10lA" association="_MLFeIokxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLFeJIkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLFeJYkxEeOMQ5AKLd10lA" name="A_result_clearStructuralFeatureAction" memberEnd="_MKAgGYkxEeOMQ5AKLd10lA _MLFeJokxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLFeJokxEeOMQ5AKLd10lA" name="clearStructuralFeatureAction" type="_MKAgEIkxEeOMQ5AKLd10lA" subsettedProperty="_MLH6Z4kxEeOMQ5AKLd10lA" association="_MLFeJYkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLFeJ4kxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLFeKIkxEeOMQ5AKLd10lA" name="A_object_clearAssociationAction" memberEnd="_MJ_5C4kxEeOMQ5AKLd10lA _MLFeKYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLFeKYkxEeOMQ5AKLd10lA" name="clearAssociationAction" type="_MJ_5AIkxEeOMQ5AKLd10lA" subsettedProperty="_MLIhdYkxEeOMQ5AKLd10lA" association="_MLFeKIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLFeKokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLGFMIkxEeOMQ5AKLd10lA" name="A_association_clearAssociationAction" memberEnd="_MJ_5CYkxEeOMQ5AKLd10lA _MLGFMYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLGFMYkxEeOMQ5AKLd10lA" name="clearAssociationAction" type="_MJ_5AIkxEeOMQ5AKLd10lA" association="_MLGFMIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLGFMokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLGFM4kxEeOMQ5AKLd10lA" name="A_decider_clause" memberEnd="_MJ_SBIkxEeOMQ5AKLd10lA _MLGFNIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLGFNIkxEeOMQ5AKLd10lA" name="clause" type="_MJ_R8IkxEeOMQ5AKLd10lA" association="_MLGFM4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLGFNYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLGFNokxEeOMQ5AKLd10lA" name="A_bodyOutput_clause" memberEnd="_MJ_SAIkxEeOMQ5AKLd10lA _MLGFN4kxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLGFN4kxEeOMQ5AKLd10lA" name="clause" type="_MJ_R8IkxEeOMQ5AKLd10lA" association="_MLGFNokxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLGFOIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLGFOYkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLGFOokxEeOMQ5AKLd10lA" name="A_test_clause" memberEnd="_MJ_SDokxEeOMQ5AKLd10lA _MLGFO4kxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLGFO4kxEeOMQ5AKLd10lA" name="clause" type="_MJ_R8IkxEeOMQ5AKLd10lA" association="_MLGFOokxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLGFPIkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLGsQIkxEeOMQ5AKLd10lA" name="A_body_clause" memberEnd="_MJ_R_IkxEeOMQ5AKLd10lA _MLGsQYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLGsQYkxEeOMQ5AKLd10lA" name="clause" type="_MJ_R8IkxEeOMQ5AKLd10lA" association="_MLGsQIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLGsQokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLGsQ4kxEeOMQ5AKLd10lA" name="A_predecessorClause_successorClause" memberEnd="_MJ_SBokxEeOMQ5AKLd10lA _MJ_SCokxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MLGsRIkxEeOMQ5AKLd10lA" name="A_target_callOperationAction" memberEnd="_MJ9cyIkxEeOMQ5AKLd10lA _MLGsRYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLGsRYkxEeOMQ5AKLd10lA" name="callOperationAction" type="_MJ9cwIkxEeOMQ5AKLd10lA" subsettedProperty="_MLIhdYkxEeOMQ5AKLd10lA" association="_MLGsRIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLGsRokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLGsR4kxEeOMQ5AKLd10lA" name="A_operation_callOperationAction" memberEnd="_MJ9cxokxEeOMQ5AKLd10lA _MLGsSIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLGsSIkxEeOMQ5AKLd10lA" name="callOperationAction" type="_MJ9cwIkxEeOMQ5AKLd10lA" association="_MLGsR4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLGsSYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLGsSokxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLHTUIkxEeOMQ5AKLd10lA" name="A_behavior_callBehaviorAction" memberEnd="_MJ81tokxEeOMQ5AKLd10lA _MLHTUYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLHTUYkxEeOMQ5AKLd10lA" name="callBehaviorAction" type="_MJ81sIkxEeOMQ5AKLd10lA" association="_MLHTUIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLHTUokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLHTU4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLHTVIkxEeOMQ5AKLd10lA" name="A_result_callAction" memberEnd="_MJ7nn4kxEeOMQ5AKLd10lA _MLHTVYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLHTVYkxEeOMQ5AKLd10lA" name="callAction" type="_MJ7nkIkxEeOMQ5AKLd10lA" subsettedProperty="_MLH6Z4kxEeOMQ5AKLd10lA" association="_MLHTVIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLHTVokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLHTV4kxEeOMQ5AKLd10lA" name="A_signal_broadcastSignalAction" memberEnd="_MJ3WLIkxEeOMQ5AKLd10lA _MLHTWIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLHTWIkxEeOMQ5AKLd10lA" name="broadcastSignalAction" type="_MJ3WIIkxEeOMQ5AKLd10lA" association="_MLHTV4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLHTWYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLHTWokxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLHTW4kxEeOMQ5AKLd10lA" name="A_insertAt_addVariableValueAction" memberEnd="_MJ2vGYkxEeOMQ5AKLd10lA _MLHTXIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLHTXIkxEeOMQ5AKLd10lA" name="addVariableValueAction" type="_MJ2vEIkxEeOMQ5AKLd10lA" subsettedProperty="_MLIhdYkxEeOMQ5AKLd10lA" association="_MLHTW4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLHTXYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLH6YIkxEeOMQ5AKLd10lA" name="A_insertAt_addStructuralFeatureValueAction" memberEnd="_MJ056YkxEeOMQ5AKLd10lA _MLH6YYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLH6YYkxEeOMQ5AKLd10lA" name="addStructuralFeatureValueAction" type="_MJ054IkxEeOMQ5AKLd10lA" subsettedProperty="_MLIhdYkxEeOMQ5AKLd10lA" association="_MLH6YIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLH6YokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLH6Y4kxEeOMQ5AKLd10lA" name="A_fromAction_actionInputPin" memberEnd="_MJzrzIkxEeOMQ5AKLd10lA _MLH6ZIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLH6ZIkxEeOMQ5AKLd10lA" name="actionInputPin" type="_MJzrwIkxEeOMQ5AKLd10lA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MLH6Y4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLH6ZYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLH6ZokxEeOMQ5AKLd10lA" name="A_output_action" isDerived="true" memberEnd="_MJrv9IkxEeOMQ5AKLd10lA _MLH6Z4kxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLH6Z4kxEeOMQ5AKLd10lA" name="action" type="_6WKakLLQEeCsYvaJqFFivQ" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MLH6ZokxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLH6aIkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLIhcIkxEeOMQ5AKLd10lA" name="A_context_action" isDerived="true" memberEnd="_MJrI4IkxEeOMQ5AKLd10lA _MLIhcYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLIhcYkxEeOMQ5AKLd10lA" name="action" type="_6WKakLLQEeCsYvaJqFFivQ" association="_MLIhcIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLIhcokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLIhc4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLIhdIkxEeOMQ5AKLd10lA" name="A_input_action" isDerived="true" memberEnd="_MJrI44kxEeOMQ5AKLd10lA _MLIhdYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLIhdYkxEeOMQ5AKLd10lA" name="action" type="_6WKakLLQEeCsYvaJqFFivQ" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MLIhdIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLIhdokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLIhd4kxEeOMQ5AKLd10lA" name="A_localPrecondition_action" memberEnd="_MJrv8IkxEeOMQ5AKLd10lA _MLIheIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLIheIkxEeOMQ5AKLd10lA" name="action" type="_6WKakLLQEeCsYvaJqFFivQ" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MLIhd4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLIheYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLJIgIkxEeOMQ5AKLd10lA" name="A_localPostcondition_action" memberEnd="_MJrI6okxEeOMQ5AKLd10lA _MLJIgYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLJIgYkxEeOMQ5AKLd10lA" name="action" type="_6WKakLLQEeCsYvaJqFFivQ" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MLJIgIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLJIgokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLJIg4kxEeOMQ5AKLd10lA" name="A_trigger_acceptEventAction" memberEnd="_MJqh0IkxEeOMQ5AKLd10lA _MLJIhIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLJIhIkxEeOMQ5AKLd10lA" name="acceptEventAction" type="_MJp6wIkxEeOMQ5AKLd10lA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MLJIg4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLJIhYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLJIhokxEeOMQ5AKLd10lA" name="A_result_acceptEventAction" memberEnd="_MJp61YkxEeOMQ5AKLd10lA _MLJIh4kxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLJIh4kxEeOMQ5AKLd10lA" name="acceptEventAction" type="_MJp6wIkxEeOMQ5AKLd10lA" subsettedProperty="_MLH6Z4kxEeOMQ5AKLd10lA" association="_MLJIhokxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLJIiIkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLJIiYkxEeOMQ5AKLd10lA" name="A_returnInformation_acceptCallAction" memberEnd="_MJpTvIkxEeOMQ5AKLd10lA _MLJIiokxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLJIiokxEeOMQ5AKLd10lA" name="acceptCallAction" type="_MJpTsIkxEeOMQ5AKLd10lA" subsettedProperty="_MLH6Z4kxEeOMQ5AKLd10lA" association="_MLJIiYkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLJIi4kxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLJvkIkxEeOMQ5AKLd10lA" name="A_value_writeVariableAction" memberEnd="_MJoFmYkxEeOMQ5AKLd10lA _MLJvkYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLJvkYkxEeOMQ5AKLd10lA" name="writeVariableAction" type="_MJoFkIkxEeOMQ5AKLd10lA" subsettedProperty="_MLIhdYkxEeOMQ5AKLd10lA" association="_MLJvkIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLJvkokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLJvk4kxEeOMQ5AKLd10lA" name="A_result_writeStructuralFeatureAction" memberEnd="_MJnej4kxEeOMQ5AKLd10lA _MLJvlIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLJvlIkxEeOMQ5AKLd10lA" name="writeStructuralFeatureAction" type="_MJnegIkxEeOMQ5AKLd10lA" subsettedProperty="_MLH6Z4kxEeOMQ5AKLd10lA" association="_MLJvk4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLJvlYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLKWoIkxEeOMQ5AKLd10lA" name="A_value_writeStructuralFeatureAction" memberEnd="_MJnekokxEeOMQ5AKLd10lA _MLKWoYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLKWoYkxEeOMQ5AKLd10lA" name="writeStructuralFeatureAction" type="_MJnegIkxEeOMQ5AKLd10lA" subsettedProperty="_MLIhdYkxEeOMQ5AKLd10lA" association="_MLKWoIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLKWookxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLKWo4kxEeOMQ5AKLd10lA" name="A_variable_variableAction" memberEnd="_MJkbNokxEeOMQ5AKLd10lA _MLKWpIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLKWpIkxEeOMQ5AKLd10lA" name="variableAction" type="_MJkbMIkxEeOMQ5AKLd10lA" association="_MLKWo4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLKWpYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLKWpokxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLKWp4kxEeOMQ5AKLd10lA" name="A_result_valueSpecificationAction" memberEnd="_MJe7qYkxEeOMQ5AKLd10lA _MLKWqIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLKWqIkxEeOMQ5AKLd10lA" name="valueSpecificationAction" type="_MJe7oIkxEeOMQ5AKLd10lA" subsettedProperty="_MLH6Z4kxEeOMQ5AKLd10lA" association="_MLKWp4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLKWqYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLK9sIkxEeOMQ5AKLd10lA" name="A_value_valueSpecificationAction" memberEnd="_MJe7q4kxEeOMQ5AKLd10lA _MLK9sYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLK9sYkxEeOMQ5AKLd10lA" name="valueSpecificationAction" type="_MJe7oIkxEeOMQ5AKLd10lA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MLK9sIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLK9sokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_eGtFwLLREeCsYvaJqFFivQ" name="Activity">
<ownedComment xmi:id="_MLXyAIkxEeOMQ5AKLd10lA" annotatedElement="_eGtFwLLREeCsYvaJqFFivQ">
<body>An Activity is the specification of parameterized Behavior as the coordinated sequencing of subordinate units.</body>
</ownedComment>
<ownedRule xmi:id="_MLXyAYkxEeOMQ5AKLd10lA" name="maximum_one_parameter_node" constrainedElement="_eGtFwLLREeCsYvaJqFFivQ">
<ownedComment xmi:id="_MLXyAokxEeOMQ5AKLd10lA" annotatedElement="_MLXyAYkxEeOMQ5AKLd10lA">
<body>A Parameter with direction other than inout must have exactly one ActivityParameterNode in an Activity.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLXyA4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>ownedParameter->forAll(p | &#xD;
p.direction &lt;> ParameterDirectionKind::inout implies node->select(&#xD;
oclIsKindOf(ActivityParameterNode) and oclAsType(ActivityParameterNode).parameter = p)->size()= 1)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MLXyBIkxEeOMQ5AKLd10lA" name="maximum_two_parameter_nodes" constrainedElement="_eGtFwLLREeCsYvaJqFFivQ">
<ownedComment xmi:id="_MLXyBYkxEeOMQ5AKLd10lA" annotatedElement="_MLXyBIkxEeOMQ5AKLd10lA">
<body>A Parameter with direction inout must have exactly two ActivityParameterNodes in an Activity, at most one with incoming ActivityEdges and at most one with outgoing ActivityEdges.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLXyBokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>ownedParameter->forAll(p | &#xD;
p.direction = ParameterDirectionKind::inout implies&#xD;
let associatedNodes : Set(ActivityNode) = node->select(&#xD;
oclIsKindOf(ActivityParameterNode) and oclAsType(ActivityParameterNode).parameter = p) in &#xD;
associatedNodes->size()=2 and&#xD;
associatedNodes->select(incoming->notEmpty())->size()&lt;=1 and&#xD;
associatedNodes->select(outgoing->notEmpty())->size()&lt;=1&#xD;
)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MLXyB4kxEeOMQ5AKLd10lA" general="_TUPtYGveEdq4DLWZOhbdEA"/>
<ownedAttribute xmi:id="_zRopoAs9EeGcpbeCPJfCmw" name="ownedGroup" visibility="protected" type="_aZICgAs-EeGcpbeCPJfCmw" aggregation="composite" subsettedProperty="_PCvjoAs_EeGcpbeCPJfCmw">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hecfYAs-EeGcpbeCPJfCmw"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iNvOUAs-EeGcpbeCPJfCmw" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_5DNmsAs9EeGcpbeCPJfCmw" name="ownedNode" visibility="protected" type="_WpiyYAs-EeGcpbeCPJfCmw" aggregation="composite" subsettedProperty="_RoJfoAs_EeGcpbeCPJfCmw">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jIyhUAs-EeGcpbeCPJfCmw"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jsV6UAs-EeGcpbeCPJfCmw" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MLYZEIkxEeOMQ5AKLd10lA" name="edge" type="_MLbcYIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_ML1sEIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLYZEYkxEeOMQ5AKLd10lA" annotatedElement="_MLYZEIkxEeOMQ5AKLd10lA">
<body>ActivityEdges expressing flow between the nodes of the Activity.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLYZEokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLYZE4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_PCvjoAs_EeGcpbeCPJfCmw" name="group" visibility="protected" type="_aZICgAs-EeGcpbeCPJfCmw" aggregation="composite" isDerived="true" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_DwV68AtCEeGcpbeCPJfCmw">
<ownedComment xmi:id="_MLYZFIkxEeOMQ5AKLd10lA" annotatedElement="_PCvjoAs_EeGcpbeCPJfCmw">
<body>Top-level ActivityGroups in the Activity.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLYZFYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLYZFokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MLZAIIkxEeOMQ5AKLd10lA" name="isReadOnly">
<ownedComment xmi:id="_MLZAIYkxEeOMQ5AKLd10lA" annotatedElement="_MLZAIIkxEeOMQ5AKLd10lA">
<body>If true, this Activity must not make any changes to objects. The default is false (an Activity may make nonlocal changes). (This is an assertion, not an executable property. It may be used by an execution engine to optimize model execution. If the assertion is violated by the Activity, then the model is ill-formed.)</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MLZAIokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MLZAI4kxEeOMQ5AKLd10lA" name="isSingleExecution">
<ownedComment xmi:id="_MLZAJIkxEeOMQ5AKLd10lA" annotatedElement="_MLZAI4kxEeOMQ5AKLd10lA">
<body>If true, all invocations of the Activity are handled by the same execution.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MLZAJYkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_RoJfoAs_EeGcpbeCPJfCmw" name="node" visibility="protected" type="_WpiyYAs-EeGcpbeCPJfCmw" aggregation="composite" isDerived="true" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_RFCrMAtCEeGcpbeCPJfCmw">
<ownedComment xmi:id="_MLZAJokxEeOMQ5AKLd10lA" annotatedElement="_RoJfoAs_EeGcpbeCPJfCmw">
<body>ActivityNodes coordinated by the Activity.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLZAJ4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLZAKIkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_-_c7oAs9EeGcpbeCPJfCmw" name="partition" visibility="protected" type="_MIhqsAs-EeGcpbeCPJfCmw" subsettedProperty="_PCvjoAs_EeGcpbeCPJfCmw _zRopoAs9EeGcpbeCPJfCmw" association="_3Ik3QAtDEeGcpbeCPJfCmw">
<ownedComment xmi:id="_MLZnMIkxEeOMQ5AKLd10lA" annotatedElement="_-_c7oAs9EeGcpbeCPJfCmw">
<body>Top-level ActivityPartitions in the Activity.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLZnMYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLZnMokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_EOSYAAs-EeGcpbeCPJfCmw" name="structuredNode" visibility="protected" type="_w1_2cLLREeCsYvaJqFFivQ" aggregation="composite" subsettedProperty="_PCvjoAs_EeGcpbeCPJfCmw _RoJfoAs_EeGcpbeCPJfCmw" association="_w4820AtEEeGcpbeCPJfCmw">
<ownedComment xmi:id="_MLZnM4kxEeOMQ5AKLd10lA" annotatedElement="_EOSYAAs-EeGcpbeCPJfCmw">
<body>Top-level StructuredActivityNodes in the Activity.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLZnNIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLZnNYkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MLaOQIkxEeOMQ5AKLd10lA" name="variable" type="_MLvlcIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MNQBWIkxEeOMQ5AKLd10lA" association="_ML1FA4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLaOQYkxEeOMQ5AKLd10lA" annotatedElement="_MLaOQIkxEeOMQ5AKLd10lA">
<body>Top-level Variables defined by the Activity.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLaOQokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLaOQ4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MLbcYIkxEeOMQ5AKLd10lA" name="ActivityEdge" isAbstract="true">
<ownedComment xmi:id="_MLbcYYkxEeOMQ5AKLd10lA" annotatedElement="_MLbcYIkxEeOMQ5AKLd10lA">
<body>An ActivityEdge is an abstract class for directed connections between two ActivityNodes.</body>
</ownedComment>
<ownedRule xmi:id="_MLbcYokxEeOMQ5AKLd10lA" name="source_and_target" constrainedElement="_MLbcYIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLbcY4kxEeOMQ5AKLd10lA" annotatedElement="_MLbcYokxEeOMQ5AKLd10lA">
<body>If an ActivityEdge is directly owned by an Activity, then its source and target must be directly or indirectly contained in the same Activity.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLbcZIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>activity&lt;>null implies source.containingActivity() = activity and target.containingActivity() = activity</body>
</specification>
</ownedRule>
<generalization xmi:id="_MLbcZYkxEeOMQ5AKLd10lA" general="_uCRA4La-EeCRxrN1JUGuxA"/>
<ownedAttribute xmi:id="_MLbcZokxEeOMQ5AKLd10lA" name="activity" type="_eGtFwLLREeCsYvaJqFFivQ" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_ML1sEIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLbcZ4kxEeOMQ5AKLd10lA" annotatedElement="_MLbcZokxEeOMQ5AKLd10lA">
<body>The Activity containing the ActivityEdge, if it is directly owned by an Activity.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLbcaIkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MLbcaYkxEeOMQ5AKLd10lA" name="guard" type="_MPO-UIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_ML1FAIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLbcaokxEeOMQ5AKLd10lA" annotatedElement="_MLbcaYkxEeOMQ5AKLd10lA">
<body>A ValueSpecification that is evaluated to determine if a token can traverse the ActivityEdge. If an ActivityEdge has no guard, then there is no restriction on tokens traversing the edge.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLbca4kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MLbcbIkxEeOMQ5AKLd10lA" name="inGroup" type="_aZICgAs-EeGcpbeCPJfCmw" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_MLz26IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLbcbYkxEeOMQ5AKLd10lA" annotatedElement="_MLbcbIkxEeOMQ5AKLd10lA">
<body>ActivityGroups containing the ActivityEdge.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLbcbokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLbcb4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MLbccIkxEeOMQ5AKLd10lA" name="inPartition" type="_MIhqsAs-EeGcpbeCPJfCmw" subsettedProperty="_MLbcbIkxEeOMQ5AKLd10lA" association="_MLzP2IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLbccYkxEeOMQ5AKLd10lA" annotatedElement="_MLbccIkxEeOMQ5AKLd10lA">
<body>ActivityPartitions containing the ActivityEdge.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLbccokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLbcc4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MLbcdIkxEeOMQ5AKLd10lA" name="inStructuredNode" type="_w1_2cLLREeCsYvaJqFFivQ" subsettedProperty="_MLbcbIkxEeOMQ5AKLd10lA _N3hRMAtAEeGcpbeCPJfCmw" association="_MKzxVokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLbcdYkxEeOMQ5AKLd10lA" annotatedElement="_MLbcdIkxEeOMQ5AKLd10lA">
<body>The StructuredActivityNode containing the ActivityEdge, if it is owned by a StructuredActivityNode.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLbcdokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MLbcd4kxEeOMQ5AKLd10lA" name="interrupts" type="_MLrUAIkxEeOMQ5AKLd10lA" association="_MLyBs4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLbceIkxEeOMQ5AKLd10lA" annotatedElement="_MLbcd4kxEeOMQ5AKLd10lA">
<body>The InterruptibleActivityRegion for which this ActivityEdge is an interruptingEdge.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLbceYkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MLbceokxEeOMQ5AKLd10lA" name="redefinedEdge" type="_MLbcYIkxEeOMQ5AKLd10lA" subsettedProperty="_MMfMVIkxEeOMQ5AKLd10lA" association="_ML0d8YkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLbce4kxEeOMQ5AKLd10lA" annotatedElement="_MLbceokxEeOMQ5AKLd10lA">
<body>ActivityEdges from a generalization of the Activity containing this ActivityEdge that are redefined by this ActivityEdge.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLbcfIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLbcfYkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MLbcfokxEeOMQ5AKLd10lA" name="source" type="_WpiyYAs-EeGcpbeCPJfCmw" association="_MLz244kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLbcf4kxEeOMQ5AKLd10lA" annotatedElement="_MLbcfokxEeOMQ5AKLd10lA">
<body>The ActivityNode from which tokens are taken when they traverse the ActivityEdge.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MLbcgIkxEeOMQ5AKLd10lA" name="target" type="_WpiyYAs-EeGcpbeCPJfCmw" association="_MLz24okxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLbcgYkxEeOMQ5AKLd10lA" annotatedElement="_MLbcgIkxEeOMQ5AKLd10lA">
<body>The ActivityNode to which tokens are put when they traverse the ActivityEdge.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MLbcgokxEeOMQ5AKLd10lA" name="weight" type="_MPO-UIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_ML0d9YkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLbcg4kxEeOMQ5AKLd10lA" annotatedElement="_MLbcgokxEeOMQ5AKLd10lA">
<body>The minimum number of tokens that must traverse the ActivityEdge at the same time. If no weight is specified, this is equivalent to specifying a constant value of 1.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLbchIkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedOperation xmi:id="_MLbchYkxEeOMQ5AKLd10lA" name="isConsistentWith" bodyCondition="_MLbchokxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MMfzYIkxEeOMQ5AKLd10lA">
<ownedRule xmi:id="_MLbchokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MLbchYkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLbch4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (redefiningElement.oclIsKindOf(ActivityEdge))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MLbciIkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_MLbciYkxEeOMQ5AKLd10lA" name="redefiningElement" type="_uCRA4La-EeCRxrN1JUGuxA"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MLcDcIkxEeOMQ5AKLd10lA" name="ActivityFinalNode">
<ownedComment xmi:id="_MLcDcYkxEeOMQ5AKLd10lA" annotatedElement="_MLcDcIkxEeOMQ5AKLd10lA">
<body>An ActivityFinalNode is a FinalNode that terminates the execution of its owning Activity or StructuredActivityNode.</body>
</ownedComment>
<generalization xmi:id="_MLcDcokxEeOMQ5AKLd10lA" general="_MLpe14kxEeOMQ5AKLd10lA"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_aZICgAs-EeGcpbeCPJfCmw" name="ActivityGroup" isAbstract="true">
<ownedComment xmi:id="_MLcDc4kxEeOMQ5AKLd10lA" annotatedElement="_aZICgAs-EeGcpbeCPJfCmw">
<body>ActivityGroup is an abstract class for defining sets of ActivityNodes and ActivityEdges in an Activity.</body>
</ownedComment>
<ownedRule xmi:id="_MLcDdIkxEeOMQ5AKLd10lA" name="nodes_and_edges" constrainedElement="_aZICgAs-EeGcpbeCPJfCmw">
<ownedComment xmi:id="_MLcDdYkxEeOMQ5AKLd10lA" annotatedElement="_MLcDdIkxEeOMQ5AKLd10lA">
<body>All containedNodes and containeEdges of an ActivityGroup must be in the same Activity as the group.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLcDdokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>containedNode->forAll(activity = self.containingActivity()) and &#xD;
containedEdge->forAll(activity = self.containingActivity())</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MLcqgIkxEeOMQ5AKLd10lA" name="not_contained" constrainedElement="_aZICgAs-EeGcpbeCPJfCmw">
<ownedComment xmi:id="_MLcqgYkxEeOMQ5AKLd10lA" annotatedElement="_MLcqgIkxEeOMQ5AKLd10lA">
<body>No containedNode or containedEdge of an ActivityGroup may be contained by its subgroups or its superGroups, transitively.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLcqgokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>subgroup->closure(subgroup).containedNode->excludesAll(containedNode) and&#xD;
superGroup->closure(superGroup).containedNode->excludesAll(containedNode) and &#xD;
subgroup->closure(subgroup).containedEdge->excludesAll(containedEdge) and &#xD;
superGroup->closure(superGroup).containedEdge->excludesAll(containedEdge)</body>
</specification>
</ownedRule>
<generalization xmi:id="_jVRd0EzNEeO2z-YY6ENIIA" general="_9d3z0EzMEeO2z-YY6ENIIA"/>
<generalization xmi:id="_MLcqg4kxEeOMQ5AKLd10lA" general="_csVgUGvtEdqG6fBIPwe-mw"/>
<ownedAttribute xmi:id="_MLcqhIkxEeOMQ5AKLd10lA" name="containedEdge" type="_MLbcYIkxEeOMQ5AKLd10lA" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_MLz26IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLcqhYkxEeOMQ5AKLd10lA" annotatedElement="_MLcqhIkxEeOMQ5AKLd10lA">
<body>ActivityEdges immediately contained in the ActivityGroup.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLcqhokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLcqh4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MLcqiIkxEeOMQ5AKLd10lA" name="containedNode" type="_WpiyYAs-EeGcpbeCPJfCmw" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_MLz26YkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLcqiYkxEeOMQ5AKLd10lA" annotatedElement="_MLcqiIkxEeOMQ5AKLd10lA">
<body>ActivityNodes immediately contained in the ActivityGroup.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLdRkIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLdRkYkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_5V2SAAtBEeGcpbeCPJfCmw" name="inActivity" visibility="protected" type="_eGtFwLLREeCsYvaJqFFivQ" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_DwV68AtCEeGcpbeCPJfCmw">
<ownedComment xmi:id="_MLdRkokxEeOMQ5AKLd10lA" annotatedElement="_5V2SAAtBEeGcpbeCPJfCmw">
<body>The Activity containing the ActivityGroup, if it is directly owned by an Activity.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLdRk4kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MLdRlIkxEeOMQ5AKLd10lA" name="subgroup" type="_aZICgAs-EeGcpbeCPJfCmw" isReadOnly="true" aggregation="composite" isDerived="true" isDerivedUnion="true" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_ML0d8IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLdRlYkxEeOMQ5AKLd10lA" annotatedElement="_MLdRlIkxEeOMQ5AKLd10lA">
<body>Other ActivityGroups immediately contained in this ActivityGroup.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLdRlokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLdRl4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MLdRmIkxEeOMQ5AKLd10lA" name="superGroup" type="_aZICgAs-EeGcpbeCPJfCmw" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_ML0d8IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLdRmYkxEeOMQ5AKLd10lA" annotatedElement="_MLdRmIkxEeOMQ5AKLd10lA">
<body>The ActivityGroup immediately containing this ActivityGroup, if it is directly owned by another ActivityGroup.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLdRmokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedOperation xmi:id="_MLd4oIkxEeOMQ5AKLd10lA" name="containingActivity" bodyCondition="_MLd4ookxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_HACtoEzNEeO2z-YY6ENIIA">
<ownedComment xmi:id="_MLd4oYkxEeOMQ5AKLd10lA" annotatedElement="_MLd4oIkxEeOMQ5AKLd10lA">
<body>The Activity that directly or indirectly contains this ActivityGroup.</body>
</ownedComment>
<ownedRule xmi:id="_MLd4ookxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MLd4oIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLd4o4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if superGroup&lt;>null then superGroup.containingActivity()&#xD;
else inActivity&#xD;
endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MLd4pIkxEeOMQ5AKLd10lA" name="result" type="_eGtFwLLREeCsYvaJqFFivQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLd4pYkxEeOMQ5AKLd10lA"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_WpiyYAs-EeGcpbeCPJfCmw" name="ActivityNode" isAbstract="true">
<ownedComment xmi:id="_MLefsIkxEeOMQ5AKLd10lA" annotatedElement="_WpiyYAs-EeGcpbeCPJfCmw">
<body>ActivityNode is an abstract class for points in the flow of an Activity connected by ActivityEdges.</body>
</ownedComment>
<generalization xmi:id="_ns0s4EzNEeO2z-YY6ENIIA" general="_9d3z0EzMEeO2z-YY6ENIIA"/>
<generalization xmi:id="_MLefsYkxEeOMQ5AKLd10lA" general="_uCRA4La-EeCRxrN1JUGuxA"/>
<ownedAttribute xmi:id="_X0ZfIAtCEeGcpbeCPJfCmw" name="activity" visibility="protected" type="_eGtFwLLREeCsYvaJqFFivQ" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_RFCrMAtCEeGcpbeCPJfCmw">
<ownedComment xmi:id="_MLefsokxEeOMQ5AKLd10lA" annotatedElement="_X0ZfIAtCEeGcpbeCPJfCmw">
<body>The Activity containing the ActivityNode, if it is directly owned by an Activity.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLefs4kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MLeftIkxEeOMQ5AKLd10lA" name="inGroup" type="_aZICgAs-EeGcpbeCPJfCmw" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_MLz26YkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLeftYkxEeOMQ5AKLd10lA" annotatedElement="_MLeftIkxEeOMQ5AKLd10lA">
<body>ActivityGroups containing the ActivityNode.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLeftokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLeft4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MLfGwIkxEeOMQ5AKLd10lA" name="inInterruptibleRegion" type="_MLrUAIkxEeOMQ5AKLd10lA" subsettedProperty="_MLeftIkxEeOMQ5AKLd10lA" association="_MLz24IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLfGwYkxEeOMQ5AKLd10lA" annotatedElement="_MLfGwIkxEeOMQ5AKLd10lA">
<body>InterruptibleActivityRegions containing the ActivityNode.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLfGwokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLfGw4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MLfGxIkxEeOMQ5AKLd10lA" name="inPartition" type="_MIhqsAs-EeGcpbeCPJfCmw" subsettedProperty="_MLeftIkxEeOMQ5AKLd10lA" association="_MLz24YkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLfGxYkxEeOMQ5AKLd10lA" annotatedElement="_MLfGxIkxEeOMQ5AKLd10lA">
<body>ActivityPartitions containing the ActivityNode.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLfGxokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLfGx4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MLfGyIkxEeOMQ5AKLd10lA" name="inStructuredNode" type="_w1_2cLLREeCsYvaJqFFivQ" subsettedProperty="_MLeftIkxEeOMQ5AKLd10lA _N3hRMAtAEeGcpbeCPJfCmw" association="_MKzxV4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLfGyYkxEeOMQ5AKLd10lA" annotatedElement="_MLfGyIkxEeOMQ5AKLd10lA">
<body>The StructuredActivityNode containing the ActvityNode, if it is directly owned by a StructuredActivityNode.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLfGyokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MLft0IkxEeOMQ5AKLd10lA" name="incoming" type="_MLbcYIkxEeOMQ5AKLd10lA" association="_MLz24okxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLft0YkxEeOMQ5AKLd10lA" annotatedElement="_MLft0IkxEeOMQ5AKLd10lA">
<body>ActivityEdges that have the ActivityNode as their target.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLft0okxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLft04kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MLft1IkxEeOMQ5AKLd10lA" name="outgoing" type="_MLbcYIkxEeOMQ5AKLd10lA" association="_MLz244kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLft1YkxEeOMQ5AKLd10lA" annotatedElement="_MLft1IkxEeOMQ5AKLd10lA">
<body>ActivityEdges that have the ActivityNode as their source.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLft1okxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLft14kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MLft2IkxEeOMQ5AKLd10lA" name="redefinedNode" type="_WpiyYAs-EeGcpbeCPJfCmw" subsettedProperty="_MMfMVIkxEeOMQ5AKLd10lA" association="_MLz25IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLft2YkxEeOMQ5AKLd10lA" annotatedElement="_MLft2IkxEeOMQ5AKLd10lA">
<body>ActivityNodes from a generalization of the Activity containining this ActivityNode that are redefined by this ActivityNode.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLft2okxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLft24kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedOperation xmi:id="_MLgU4IkxEeOMQ5AKLd10lA" name="containingActivity" bodyCondition="_MLgU4okxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_HACtoEzNEeO2z-YY6ENIIA">
<ownedComment xmi:id="_MLgU4YkxEeOMQ5AKLd10lA" annotatedElement="_MLgU4IkxEeOMQ5AKLd10lA">
<body>The Activity that directly or indirectly contains this ActivityNode.</body>
</ownedComment>
<ownedRule xmi:id="_MLgU4okxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MLgU4IkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLgU44kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if inStructuredNode&lt;>null then inStructuredNode.containingActivity()&#xD;
else activity&#xD;
endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MLgU5IkxEeOMQ5AKLd10lA" name="result" type="_eGtFwLLREeCsYvaJqFFivQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLgU5YkxEeOMQ5AKLd10lA"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MLgU5okxEeOMQ5AKLd10lA" name="isConsistentWith" bodyCondition="_MLgU54kxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MMfzYIkxEeOMQ5AKLd10lA">
<ownedRule xmi:id="_MLgU54kxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MLgU5okxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLgU6IkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (redefiningElement.oclIsKindOf(ActivityNode))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MLgU6YkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_MLgU6okxEeOMQ5AKLd10lA" name="redefiningElement" type="_uCRA4La-EeCRxrN1JUGuxA"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MLhjAIkxEeOMQ5AKLd10lA" name="ActivityParameterNode">
<ownedComment xmi:id="_MLhjAYkxEeOMQ5AKLd10lA" annotatedElement="_MLhjAIkxEeOMQ5AKLd10lA">
<body>An ActivityParameterNode is an ObjectNode for accepting values from the input Parameters or providing values to the output Parameters of an Activity.</body>
</ownedComment>
<ownedRule xmi:id="_MLhjAokxEeOMQ5AKLd10lA" name="no_outgoing_edges" constrainedElement="_MLhjAIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLhjA4kxEeOMQ5AKLd10lA" annotatedElement="_MLhjAokxEeOMQ5AKLd10lA">
<body>An ActivityParameterNode with no outgoing ActivityEdges and one or more incoming ActivityEdges must have a parameter with direction out, inout, or return.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLhjBIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(incoming->notEmpty() and outgoing->isEmpty()) implies &#xD;
(parameter.direction = ParameterDirectionKind::out or &#xD;
parameter.direction = ParameterDirectionKind::inout or &#xD;
parameter.direction = ParameterDirectionKind::return)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MLhjBYkxEeOMQ5AKLd10lA" name="has_parameters" constrainedElement="_MLhjAIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLhjBokxEeOMQ5AKLd10lA" annotatedElement="_MLhjBYkxEeOMQ5AKLd10lA">
<body>The parameter of an ActivityParameterNode must be from the containing Activity.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLhjB4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>activity.ownedParameter->includes(parameter)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MLhjCIkxEeOMQ5AKLd10lA" name="same_type" constrainedElement="_MLhjAIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLhjCYkxEeOMQ5AKLd10lA" annotatedElement="_MLhjCIkxEeOMQ5AKLd10lA">
<body>The type of an ActivityParameterNode is the same as the type of its parameter.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLhjCokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>type = parameter.type</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MLhjC4kxEeOMQ5AKLd10lA" name="no_incoming_edges" constrainedElement="_MLhjAIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLhjDIkxEeOMQ5AKLd10lA" annotatedElement="_MLhjC4kxEeOMQ5AKLd10lA">
<body>An ActivityParameterNode with no incoming ActivityEdges and one or more outgoing ActivityEdges must have a parameter with direction in or inout.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLhjDYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(outgoing->notEmpty() and incoming->isEmpty()) implies &#xD;
(parameter.direction = ParameterDirectionKind::_'in' or &#xD;
parameter.direction = ParameterDirectionKind::inout)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MLhjDokxEeOMQ5AKLd10lA" name="no_edges" constrainedElement="_MLhjAIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLhjD4kxEeOMQ5AKLd10lA" annotatedElement="_MLhjDokxEeOMQ5AKLd10lA">
<body>An ActivityParameterNode may have all incoming ActivityEdges or all outgoing ActivityEdges, but it must not have both incoming and outgoing ActivityEdges.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLhjEIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>incoming->isEmpty() or outgoing->isEmpty()</body>
</specification>
</ownedRule>
<generalization xmi:id="_MLhjEYkxEeOMQ5AKLd10lA" general="_MLu-YIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MLhjEokxEeOMQ5AKLd10lA" name="parameter" type="_KyaPMGveEdq4DLWZOhbdEA" association="_MLzP2YkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLhjE4kxEeOMQ5AKLd10lA" annotatedElement="_MLhjEokxEeOMQ5AKLd10lA">
<body>The Parameter for which the ActivityParameterNode will be accepting or providing values.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MIhqsAs-EeGcpbeCPJfCmw" name="ActivityPartition">
<ownedComment xmi:id="_MLiKEIkxEeOMQ5AKLd10lA" annotatedElement="_MIhqsAs-EeGcpbeCPJfCmw">
<body>An ActivityPartition is a kind of ActivityGroup for identifying ActivityNodes that have some characteristic in common.</body>
</ownedComment>
<ownedRule xmi:id="_MLiKEYkxEeOMQ5AKLd10lA" name="represents_classifier" constrainedElement="_MIhqsAs-EeGcpbeCPJfCmw">
<ownedComment xmi:id="_MLiKEokxEeOMQ5AKLd10lA" annotatedElement="_MLiKEYkxEeOMQ5AKLd10lA">
<body>If a non-external ActivityPartition represents a Classifier and has a superPartition, then the superPartition must represent a Classifier, and the Classifier of the subpartition must be nested (nestedClassifier or ownedBehavior) in the Classifier represented by the superPartition, or be at the contained end of a composition Association with the Classifier represented by the superPartition.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLiKE4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(not isExternal and represents.oclIsKindOf(Classifier) and superPartition->notEmpty()) implies&#xD;
(&#xD;
let representedClassifier : Classifier = represents.oclAsType(Classifier) in&#xD;
superPartition.represents.oclIsKindOf(Classifier) and&#xD;
let representedSuperClassifier : Classifier = superPartition.represents.oclAsType(Classifier) in&#xD;
(representedSuperClassifier.oclIsKindOf(BehavioredClassifier) and representedClassifier.oclIsKindOf(Behavior) and &#xD;
representedSuperClassifier.oclAsType(BehavioredClassifier).ownedBehavior->includes(representedClassifier.oclAsType(Behavior))) &#xD;
or&#xD;
(representedSuperClassifier.oclIsKindOf(Class) and representedSuperClassifier.oclAsType(Class).nestedClassifier->includes(representedClassifier))&#xD;
or&#xD;
(Association.allInstances()->exists(a | a.memberEnd->exists(end1 | end1.isComposite and end1.type = representedClassifier and &#xD;
a.memberEnd->exists(end2 | end1&lt;>end2 and end2.type = representedSuperClassifier))))&#xD;
)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MLiKFIkxEeOMQ5AKLd10lA" name="represents_property_and_is_contained" constrainedElement="_MIhqsAs-EeGcpbeCPJfCmw">
<ownedComment xmi:id="_MLiKFYkxEeOMQ5AKLd10lA" annotatedElement="_MLiKFIkxEeOMQ5AKLd10lA">
<body>If an ActivityPartition represents a Property and has a superPartition, then the Property must be of a Classifier represented by the superPartition, or of a Classifier that is the type of a Property represented by the superPartition.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLiKFokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(represents.oclIsKindOf(Property) and superPartition->notEmpty()) implies&#xD;
(&#xD;
(superPartition.represents.oclIsKindOf(Classifier) and represents.owner = superPartition.represents) or &#xD;
(superPartition.represents.oclIsKindOf(Property) and represents.owner = superPartition.represents.oclAsType(Property).type)&#xD;
)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MLiKF4kxEeOMQ5AKLd10lA" name="represents_property" constrainedElement="_MIhqsAs-EeGcpbeCPJfCmw">
<ownedComment xmi:id="_MLiKGIkxEeOMQ5AKLd10lA" annotatedElement="_MLiKF4kxEeOMQ5AKLd10lA">
<body>If an ActivityPartition represents a Property and has a superPartition representing a Classifier, then all the other non-external subpartitions of the superPartition must represent Properties directly owned by the same Classifier.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLiKGYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(represents.oclIsKindOf(Property) and superPartition->notEmpty() and superPartition.represents.oclIsKindOf(Classifier)) implies&#xD;
(&#xD;
let representedClassifier : Classifier = superPartition.represents.oclAsType(Classifier)&#xD;
in&#xD;
superPartition.subpartition->reject(isExternal)->forAll(p | &#xD;
p.represents.oclIsKindOf(Property) and p.owner=representedClassifier)&#xD;
)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MLixIIkxEeOMQ5AKLd10lA" name="dimension_not_contained" constrainedElement="_MIhqsAs-EeGcpbeCPJfCmw">
<ownedComment xmi:id="_MLixIYkxEeOMQ5AKLd10lA" annotatedElement="_MLixIIkxEeOMQ5AKLd10lA">
<body>An ActvivityPartition with isDimension = true may not be contained by another ActivityPartition.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLixIokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>isDimension implies superPartition->isEmpty()</body>
</specification>
</ownedRule>
<generalization xmi:id="_MLixI4kxEeOMQ5AKLd10lA" general="_aZICgAs-EeGcpbeCPJfCmw"/>
<ownedAttribute xmi:id="_MLixJIkxEeOMQ5AKLd10lA" name="edge" type="_MLbcYIkxEeOMQ5AKLd10lA" subsettedProperty="_MLcqhIkxEeOMQ5AKLd10lA" association="_MLzP2IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLixJYkxEeOMQ5AKLd10lA" annotatedElement="_MLixJIkxEeOMQ5AKLd10lA">
<body>ActivityEdges immediately contained in the ActivityPartition.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLixJokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLixJ4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MLixKIkxEeOMQ5AKLd10lA" name="isDimension">
<ownedComment xmi:id="_MLixKYkxEeOMQ5AKLd10lA" annotatedElement="_MLixKIkxEeOMQ5AKLd10lA">
<body>Indicates whether the ActivityPartition groups other ActivityPartitions along a dimension.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MLixKokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MLjYMIkxEeOMQ5AKLd10lA" name="isExternal">
<ownedComment xmi:id="_MLjYMYkxEeOMQ5AKLd10lA" annotatedElement="_MLjYMIkxEeOMQ5AKLd10lA">
<body>Indicates whether the ActivityPartition represents an entity to which the partitioning structure does not apply.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MLjYMokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MLjYM4kxEeOMQ5AKLd10lA" name="node" type="_WpiyYAs-EeGcpbeCPJfCmw" subsettedProperty="_MLcqiIkxEeOMQ5AKLd10lA" association="_MLz24YkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLjYNIkxEeOMQ5AKLd10lA" annotatedElement="_MLjYM4kxEeOMQ5AKLd10lA">
<body>ActivityNodes immediately contained in the ActivityPartition.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLjYNYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLjYNokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MLjYN4kxEeOMQ5AKLd10lA" name="represents" type="_kl90MGvbEdq4DLWZOhbdEA" association="_MLzP04kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLjYOIkxEeOMQ5AKLd10lA" annotatedElement="_MLjYN4kxEeOMQ5AKLd10lA">
<body>An Element represented by the functionality modeled within the ActivityPartition.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLjYOYkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MLj_QIkxEeOMQ5AKLd10lA" name="subpartition" type="_MIhqsAs-EeGcpbeCPJfCmw" aggregation="composite" subsettedProperty="_MLdRlIkxEeOMQ5AKLd10lA" association="_MLzP14kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLj_QYkxEeOMQ5AKLd10lA" annotatedElement="_MLj_QIkxEeOMQ5AKLd10lA">
<body>Other ActivityPartitions immediately contained in this ActivityPartition (as its subgroups).</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLj_QokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLj_Q4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MLj_RIkxEeOMQ5AKLd10lA" name="superPartition" type="_MIhqsAs-EeGcpbeCPJfCmw" subsettedProperty="_MLdRmIkxEeOMQ5AKLd10lA" association="_MLzP14kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLj_RYkxEeOMQ5AKLd10lA" annotatedElement="_MLj_RIkxEeOMQ5AKLd10lA">
<body>Other ActivityPartitions immediately containing this ActivityPartition (as its superGroups).</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLj_RokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MLkmUIkxEeOMQ5AKLd10lA" name="CentralBufferNode">
<ownedComment xmi:id="_MLkmUYkxEeOMQ5AKLd10lA" annotatedElement="_MLkmUIkxEeOMQ5AKLd10lA">
<body>A CentralBufferNode is an ObjectNode for managing flows from multiple sources and targets.</body>
</ownedComment>
<generalization xmi:id="_MLkmUokxEeOMQ5AKLd10lA" general="_MLu-YIkxEeOMQ5AKLd10lA"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MLlNYIkxEeOMQ5AKLd10lA" name="ControlFlow">
<ownedComment xmi:id="_MLlNYYkxEeOMQ5AKLd10lA" annotatedElement="_MLlNYIkxEeOMQ5AKLd10lA">
<body>A ControlFlow is an ActivityEdge traversed by control tokens or object tokens of control type, which are use to control the execution of ExecutableNodes.</body>
</ownedComment>
<ownedRule xmi:id="_MLlNYokxEeOMQ5AKLd10lA" name="object_nodes" constrainedElement="_MLlNYIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLlNY4kxEeOMQ5AKLd10lA" annotatedElement="_MLlNYokxEeOMQ5AKLd10lA">
<body>ControlFlows may not have ObjectNodes at either end, except for ObjectNodes with control type.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLlNZIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(source.oclIsKindOf(ObjectNode) implies source.oclAsType(ObjectNode).isControlType) and &#xD;
(target.oclIsKindOf(ObjectNode) implies target.oclAsType(ObjectNode).isControlType)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MLlNZYkxEeOMQ5AKLd10lA" general="_MLbcYIkxEeOMQ5AKLd10lA"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MLlNZokxEeOMQ5AKLd10lA" name="ControlNode" isAbstract="true">
<ownedComment xmi:id="_MLlNZ4kxEeOMQ5AKLd10lA" annotatedElement="_MLlNZokxEeOMQ5AKLd10lA">
<body>A ControlNode is an abstract ActivityNode that coordinates flows in an Activity.</body>
</ownedComment>
<generalization xmi:id="_MLlNaIkxEeOMQ5AKLd10lA" general="_WpiyYAs-EeGcpbeCPJfCmw"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MLl0cIkxEeOMQ5AKLd10lA" name="DataStoreNode">
<ownedComment xmi:id="_MLl0cYkxEeOMQ5AKLd10lA" annotatedElement="_MLl0cIkxEeOMQ5AKLd10lA">
<body>A DataStoreNode is a CentralBufferNode for persistent data.</body>
</ownedComment>
<generalization xmi:id="_MLl0cokxEeOMQ5AKLd10lA" general="_MLkmUIkxEeOMQ5AKLd10lA"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MLnCkIkxEeOMQ5AKLd10lA" name="DecisionNode">
<ownedComment xmi:id="_MLnCkYkxEeOMQ5AKLd10lA" annotatedElement="_MLnCkIkxEeOMQ5AKLd10lA">
<body>A DecisionNode is a ControlNode that chooses between outgoing ActivityEdges for the routing of tokens.</body>
</ownedComment>
<ownedRule xmi:id="_MLnCkokxEeOMQ5AKLd10lA" name="zero_input_parameters" constrainedElement="_MLnCkIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLnCk4kxEeOMQ5AKLd10lA" annotatedElement="_MLnCkokxEeOMQ5AKLd10lA">
<body>If the DecisionNode has no decisionInputFlow and an incoming ControlFlow, then any decisionInput Behavior has no in parameters.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLnClIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(decisionInput&lt;>null and decisionInputFlow=null and incoming->exists(oclIsKindOf(ControlFlow))) implies&#xD;
decisionInput.inputParameters()->isEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MLnClYkxEeOMQ5AKLd10lA" name="edges" constrainedElement="_MLnCkIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLnClokxEeOMQ5AKLd10lA" annotatedElement="_MLnClYkxEeOMQ5AKLd10lA">
<body>The ActivityEdges incoming to and outgoing from a DecisionNode, other than the decisionInputFlow (if any), must be either all ObjectFlows or all ControlFlows.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLnCl4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>let allEdges: Set(ActivityEdge) = incoming->union(outgoing) in&#xD;
let allRelevantEdges: Set(ActivityEdge) = if decisionInputFlow->notEmpty() then allEdges->excluding(decisionInputFlow) else allEdges endif in&#xD;
allRelevantEdges->forAll(oclIsKindOf(ControlFlow)) or allRelevantEdges->forAll(oclIsKindOf(ObjectFlow))&#xD;
</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MLnCmIkxEeOMQ5AKLd10lA" name="decision_input_flow_incoming" constrainedElement="_MLnCkIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLnCmYkxEeOMQ5AKLd10lA" annotatedElement="_MLnCmIkxEeOMQ5AKLd10lA">
<body>The decisionInputFlow of a DecisionNode must be an incoming ActivityEdge of the DecisionNode.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLnCmokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>incoming->includes(decisionInputFlow)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MLnCm4kxEeOMQ5AKLd10lA" name="two_input_parameters" constrainedElement="_MLnCkIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLnCnIkxEeOMQ5AKLd10lA" annotatedElement="_MLnCm4kxEeOMQ5AKLd10lA">
<body>If the DecisionNode has a decisionInputFlow and an second incoming ObjectFlow, then any decisionInput has two in Parameters, the first of which has a type that is the same as or a supertype of the type of object tokens offered on the non-decisionInputFlow and the second of which has a type that is the same as or a supertype of the type of object tokens offered on the decisionInputFlow.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLnCnYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(decisionInput&lt;>null and decisionInputFlow&lt;>null and incoming->forAll(oclIsKindOf(ObjectFlow))) implies&#xD;
decisionInput.inputParameters()->size()=2</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MLnCnokxEeOMQ5AKLd10lA" name="incoming_outgoing_edges" constrainedElement="_MLnCkIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLnCn4kxEeOMQ5AKLd10lA" annotatedElement="_MLnCnokxEeOMQ5AKLd10lA">
<body>A DecisionNode has one or two incoming ActivityEdges and at least one outgoing ActivityEdge.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLnCoIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(incoming->size() = 1 or incoming->size() = 2) and outgoing->size() > 0</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MLnCoYkxEeOMQ5AKLd10lA" name="incoming_control_one_input_parameter" constrainedElement="_MLnCkIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLnCookxEeOMQ5AKLd10lA" annotatedElement="_MLnCoYkxEeOMQ5AKLd10lA">
<body>If the DecisionNode has a decisionInputFlow and an incoming ControlFlow, then any decisionInput Behavior has one in Parameter whose type is the same as or a supertype of the type of object tokens offered on the decisionInputFlow.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLnCo4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(decisionInput&lt;>null and decisionInputFlow&lt;>null and incoming->exists(oclIsKindOf(ControlFlow))) implies&#xD;
decisionInput.inputParameters()->size()=1</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MLnCpIkxEeOMQ5AKLd10lA" name="parameters" constrainedElement="_MLnCkIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLnCpYkxEeOMQ5AKLd10lA" annotatedElement="_MLnCpIkxEeOMQ5AKLd10lA">
<body>A decisionInput Behavior has no out parameters, no inout parameters, and one return parameter.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLnCpokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>decisionInput&lt;>null implies &#xD;
(decisionInput.ownedParameter->forAll(par | &#xD;
par.direction &lt;> ParameterDirectionKind::out and &#xD;
par.direction &lt;> ParameterDirectionKind::inout ) and&#xD;
decisionInput.ownedParameter->one(par | &#xD;
par.direction &lt;> ParameterDirectionKind::return))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MLnCp4kxEeOMQ5AKLd10lA" name="incoming_object_one_input_parameter" constrainedElement="_MLnCkIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLnCqIkxEeOMQ5AKLd10lA" annotatedElement="_MLnCp4kxEeOMQ5AKLd10lA">
<body>If the DecisionNode has no decisionInputFlow and an incoming ObjectFlow, then any decisionInput Behavior has one in Parameter whose type is the same as or a supertype of the type of object tokens offered on the incoming ObjectFlow.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLnCqYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(decisionInput&lt;>null and decisionInputFlow=null and incoming->forAll(oclIsKindOf(ObjectFlow))) implies&#xD;
decisionInput.inputParameters()->size()=1</body>
</specification>
</ownedRule>
<generalization xmi:id="_MLnCqokxEeOMQ5AKLd10lA" general="_MLlNZokxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MLnCq4kxEeOMQ5AKLd10lA" name="decisionInput" type="_TUPtYGveEdq4DLWZOhbdEA" association="_MLyoyIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLnCrIkxEeOMQ5AKLd10lA" annotatedElement="_MLnCq4kxEeOMQ5AKLd10lA">
<body>A Behavior that is executed to provide an input to guard ValueSpecifications on ActivityEdges outgoing from the DecisionNode.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLnCrYkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MLnCrokxEeOMQ5AKLd10lA" name="decisionInputFlow" type="_MLtwQIkxEeOMQ5AKLd10lA" association="_MLzP0IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLnCr4kxEeOMQ5AKLd10lA" annotatedElement="_MLnCrokxEeOMQ5AKLd10lA">
<body>An additional ActivityEdge incoming to the DecisionNode that provides a decision input value for the guards ValueSpecifications on ActivityEdges outgoing from the DecisionNode.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLnCsIkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MLoQsIkxEeOMQ5AKLd10lA" name="ExceptionHandler">
<ownedComment xmi:id="_MLoQsYkxEeOMQ5AKLd10lA" annotatedElement="_MLoQsIkxEeOMQ5AKLd10lA">
<body>An ExceptionHandler is an Element that specifies a handlerBody ExecutableNode to execute in case the specified exception occurs during the execution of the protected ExecutableNode.</body>
</ownedComment>
<ownedRule xmi:id="_MLoQsokxEeOMQ5AKLd10lA" name="handler_body_edges" constrainedElement="_MLoQsIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLoQs4kxEeOMQ5AKLd10lA" annotatedElement="_MLoQsokxEeOMQ5AKLd10lA">
<body>The handlerBody has no incoming or outgoing ActivityEdges and the exceptionInput has no incoming ActivityEdges.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLoQtIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>handlerBody.incoming->isEmpty() and handlerBody.outgoing->isEmpty() and exceptionInput.incoming->isEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MLoQtYkxEeOMQ5AKLd10lA" name="output_pins" constrainedElement="_MLoQsIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLoQtokxEeOMQ5AKLd10lA" annotatedElement="_MLoQtYkxEeOMQ5AKLd10lA">
<body>If the protectedNode is an Action with OutputPins, then the handlerBody must also be an Action with the same number of OutputPins, which are compatible in type, ordering, and multiplicity to those of the protectedNode.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLoQt4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(protectedNode.oclIsKindOf(Action) and protectedNode.oclAsType(Action).output->notEmpty()) implies&#xD;
(&#xD;
handlerBody.oclIsKindOf(Action) and &#xD;
let protectedNodeOutput : OrderedSet(OutputPin) = protectedNode.oclAsType(Action).output,&#xD;
handlerBodyOutput : OrderedSet(OutputPin) = handlerBody.oclAsType(Action).output in&#xD;
protectedNodeOutput->size() = handlerBodyOutput->size() and&#xD;
Sequence{1..protectedNodeOutput->size()}->forAll(i |&#xD;
handlerBodyOutput->at(i).type.conformsTo(protectedNodeOutput->at(i).type) and&#xD;
handlerBodyOutput->at(i).isOrdered=protectedNodeOutput->at(i).isOrdered and&#xD;
handlerBodyOutput->at(i).compatibleWith(protectedNodeOutput->at(i)))&#xD;
)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MLoQuIkxEeOMQ5AKLd10lA" name="one_input" constrainedElement="_MLoQsIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLoQuYkxEeOMQ5AKLd10lA" annotatedElement="_MLoQuIkxEeOMQ5AKLd10lA">
<body>The handlerBody is an Action with one InputPin, and that InputPin is the same as the exceptionInput.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLoQuokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>handlerBody.oclIsKindOf(Action) and&#xD;
let inputs: OrderedSet(InputPin) = handlerBody.oclAsType(Action).input in&#xD;
inputs->size()=1 and inputs->first()=exceptionInput</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MLoQu4kxEeOMQ5AKLd10lA" name="edge_source_target" constrainedElement="_MLoQsIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLoQvIkxEeOMQ5AKLd10lA" annotatedElement="_MLoQu4kxEeOMQ5AKLd10lA">
<body>An ActivityEdge that has a source within the handlerBody of an ExceptionHandler must have its target in the handlerBody also, and vice versa.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLoQvYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>let nodes:Set(ActivityNode) = handlerBody.oclAsType(Action).allOwnedNodes() in&#xD;
nodes.outgoing->forAll(nodes->includes(target)) and&#xD;
nodes.incoming->forAll(nodes->includes(source))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MLoQvokxEeOMQ5AKLd10lA" name="handler_body_owner" constrainedElement="_MLoQsIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLoQv4kxEeOMQ5AKLd10lA" annotatedElement="_MLoQvokxEeOMQ5AKLd10lA">
<body>The handlerBody must have the same owner as the protectedNode.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLoQwIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>handlerBody.owner=protectedNode.owner</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MLoQwYkxEeOMQ5AKLd10lA" name="exception_input_type" constrainedElement="_MLoQsIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLoQwokxEeOMQ5AKLd10lA" annotatedElement="_MLoQwYkxEeOMQ5AKLd10lA">
<body>The exceptionInput must either have no type or every exceptionType must conform to the exceptionInput type.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLoQw4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>exceptionInput.type=null or &#xD;
exceptionType->forAll(conformsTo(exceptionInput.type.oclAsType(Classifier)))</body>
</specification>
</ownedRule>
<generalization xmi:id="_MLoQxIkxEeOMQ5AKLd10lA" general="_kl90MGvbEdq4DLWZOhbdEA"/>
<ownedAttribute xmi:id="_MLoQxYkxEeOMQ5AKLd10lA" name="exceptionInput" type="_MLu-YIkxEeOMQ5AKLd10lA" association="_MLyoxIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLoQxokxEeOMQ5AKLd10lA" annotatedElement="_MLoQxYkxEeOMQ5AKLd10lA">
<body>An ObjectNode within the handlerBody. When the ExceptionHandler catches an exception, the exception token is placed on this ObjectNode, causing the handlerBody to execute.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MLoQx4kxEeOMQ5AKLd10lA" name="exceptionType" type="_6UV2QGwJEdq7X4sGURiZYA" association="_MLyowIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLoQyIkxEeOMQ5AKLd10lA" annotatedElement="_MLoQx4kxEeOMQ5AKLd10lA">
<body>The Classifiers whose instances the ExceptionHandler catches as exceptions. If an exception occurs whose type is any exceptionType, the ExceptionHandler catches the exception and executes the handlerBody.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLoQyYkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MLoQyokxEeOMQ5AKLd10lA" name="handlerBody" type="_MLpe0IkxEeOMQ5AKLd10lA" association="_MLyBtYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLoQy4kxEeOMQ5AKLd10lA" annotatedElement="_MLoQyokxEeOMQ5AKLd10lA">
<body>An ExecutableNode that is executed if the ExceptionHandler catches an exception.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MLoQzIkxEeOMQ5AKLd10lA" name="protectedNode" type="_MLpe0IkxEeOMQ5AKLd10lA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MLyBtIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLoQzYkxEeOMQ5AKLd10lA" annotatedElement="_MLoQzIkxEeOMQ5AKLd10lA">
<body>The ExecutableNode protected by the ExceptionHandler. If an exception propagates out of the protectedNode and has a type matching one of the exceptionTypes, then it is caught by this ExceptionHandler.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MLpe0IkxEeOMQ5AKLd10lA" name="ExecutableNode" isAbstract="true">
<ownedComment xmi:id="_MLpe0YkxEeOMQ5AKLd10lA" annotatedElement="_MLpe0IkxEeOMQ5AKLd10lA">
<body>An ExecutableNode is an abstract class for ActivityNodes whose execution may be controlled using ControlFlows and to which ExceptionHandlers may be attached.</body>
</ownedComment>
<generalization xmi:id="_MLpe0okxEeOMQ5AKLd10lA" general="_WpiyYAs-EeGcpbeCPJfCmw"/>
<ownedAttribute xmi:id="_MLpe04kxEeOMQ5AKLd10lA" name="handler" type="_MLoQsIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MLyBtIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLpe1IkxEeOMQ5AKLd10lA" annotatedElement="_MLpe04kxEeOMQ5AKLd10lA">
<body>A set of ExceptionHandlers that are examined if an exception propagates out of the ExceptionNode.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLpe1YkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLpe1okxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MLpe14kxEeOMQ5AKLd10lA" name="FinalNode" isAbstract="true">
<ownedComment xmi:id="_MLpe2IkxEeOMQ5AKLd10lA" annotatedElement="_MLpe14kxEeOMQ5AKLd10lA">
<body>A FinalNode is an abstract ControlNode at which a flow in an Activity stops.</body>
</ownedComment>
<ownedRule xmi:id="_MLpe2YkxEeOMQ5AKLd10lA" name="no_outgoing_edges" constrainedElement="_MLpe14kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLpe2okxEeOMQ5AKLd10lA" annotatedElement="_MLpe2YkxEeOMQ5AKLd10lA">
<body>A FinalNode has no outgoing ActivityEdges.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLpe24kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>outgoing->isEmpty()</body>
</specification>
</ownedRule>
<generalization xmi:id="_MLpe3IkxEeOMQ5AKLd10lA" general="_MLlNZokxEeOMQ5AKLd10lA"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MLqF4IkxEeOMQ5AKLd10lA" name="FlowFinalNode">
<ownedComment xmi:id="_MLqF4YkxEeOMQ5AKLd10lA" annotatedElement="_MLqF4IkxEeOMQ5AKLd10lA">
<body>A FlowFinalNode is a FinalNode that terminates a flow by consuming the tokens offered to it.</body>
</ownedComment>
<generalization xmi:id="_MLqF4okxEeOMQ5AKLd10lA" general="_MLpe14kxEeOMQ5AKLd10lA"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MLqF44kxEeOMQ5AKLd10lA" name="ForkNode">
<ownedComment xmi:id="_MLqF5IkxEeOMQ5AKLd10lA" annotatedElement="_MLqF44kxEeOMQ5AKLd10lA">
<body>A ForkNode is a ControlNode that splits a flow into multiple concurrent flows.</body>
</ownedComment>
<ownedRule xmi:id="_MLqF5YkxEeOMQ5AKLd10lA" name="edges" constrainedElement="_MLqF44kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLqF5okxEeOMQ5AKLd10lA" annotatedElement="_MLqF5YkxEeOMQ5AKLd10lA">
<body>The ActivityEdges incoming to and outgoing from a ForkNode must be either all ObjectFlows or all ControlFlows.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLqF54kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>let allEdges : Set(ActivityEdge) = incoming->union(outgoing) in&#xD;
allEdges->forAll(oclIsKindOf(ControlFlow)) or allEdges->forAll(oclIsKindOf(ObjectFlow))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MLqF6IkxEeOMQ5AKLd10lA" name="one_incoming_edge" constrainedElement="_MLqF44kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLqF6YkxEeOMQ5AKLd10lA" annotatedElement="_MLqF6IkxEeOMQ5AKLd10lA">
<body>A ForkNode has one incoming ActivityEdge.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLqF6okxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>incoming->size()=1</body>
</specification>
</ownedRule>
<generalization xmi:id="_MLqF64kxEeOMQ5AKLd10lA" general="_MLlNZokxEeOMQ5AKLd10lA"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MLqs8IkxEeOMQ5AKLd10lA" name="InitialNode">
<ownedComment xmi:id="_MLqs8YkxEeOMQ5AKLd10lA" annotatedElement="_MLqs8IkxEeOMQ5AKLd10lA">
<body>An InitialNode is a ControlNode that offers a single control token when initially enabled.</body>
</ownedComment>
<ownedRule xmi:id="_MLqs8okxEeOMQ5AKLd10lA" name="no_incoming_edges" constrainedElement="_MLqs8IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLqs84kxEeOMQ5AKLd10lA" annotatedElement="_MLqs8okxEeOMQ5AKLd10lA">
<body>An InitialNode has no incoming ActivityEdges.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLqs9IkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>incoming->isEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MLqs9YkxEeOMQ5AKLd10lA" name="control_edges" constrainedElement="_MLqs8IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLqs9okxEeOMQ5AKLd10lA" annotatedElement="_MLqs9YkxEeOMQ5AKLd10lA">
<body>All the outgoing ActivityEdges from an InitialNode must be ControlFlows.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLqs94kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>outgoing->forAll(oclIsKindOf(ControlFlow))</body>
</specification>
</ownedRule>
<generalization xmi:id="_MLqs-IkxEeOMQ5AKLd10lA" general="_MLlNZokxEeOMQ5AKLd10lA"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MLrUAIkxEeOMQ5AKLd10lA" name="InterruptibleActivityRegion">
<ownedComment xmi:id="_MLrUAYkxEeOMQ5AKLd10lA" annotatedElement="_MLrUAIkxEeOMQ5AKLd10lA">
<body>An InterruptibleActivityRegion is an ActivityGroup that supports the termination of tokens flowing in the portions of an activity within it.</body>
</ownedComment>
<ownedRule xmi:id="_MLrUAokxEeOMQ5AKLd10lA" name="interrupting_edges" constrainedElement="_MLrUAIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLrUA4kxEeOMQ5AKLd10lA" annotatedElement="_MLrUAokxEeOMQ5AKLd10lA">
<body>The interruptingEdges of an InterruptibleActivityRegion must have their source in the region and their target outside the region, but within the same Activity containing the region.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLrUBIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>interruptingEdge->forAll(edge | &#xD;
node->includes(edge.source) and node->excludes(edge.target) and edge.target.containingActivity() = inActivity)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MLrUBYkxEeOMQ5AKLd10lA" general="_aZICgAs-EeGcpbeCPJfCmw"/>
<ownedAttribute xmi:id="_MLrUBokxEeOMQ5AKLd10lA" name="interruptingEdge" type="_MLbcYIkxEeOMQ5AKLd10lA" association="_MLyBs4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLrUB4kxEeOMQ5AKLd10lA" annotatedElement="_MLrUBokxEeOMQ5AKLd10lA">
<body>The ActivityEdges leaving the InterruptibleActivityRegion on which a traversing token will result in the termination of other tokens flowing in the InterruptibleActivityRegion.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLrUCIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLrUCYkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MLrUCokxEeOMQ5AKLd10lA" name="node" type="_WpiyYAs-EeGcpbeCPJfCmw" subsettedProperty="_MLcqiIkxEeOMQ5AKLd10lA" association="_MLz24IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLrUC4kxEeOMQ5AKLd10lA" annotatedElement="_MLrUCokxEeOMQ5AKLd10lA">
<body>ActivityNodes immediately contained in the InterruptibleActivityRegion.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLrUDIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLrUDYkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MLr7EIkxEeOMQ5AKLd10lA" name="JoinNode">
<ownedComment xmi:id="_MLr7EYkxEeOMQ5AKLd10lA" annotatedElement="_MLr7EIkxEeOMQ5AKLd10lA">
<body>A JoinNode is a ControlNode that synchronizes multiple flows.</body>
</ownedComment>
<ownedRule xmi:id="_MLr7EokxEeOMQ5AKLd10lA" name="one_outgoing_edge" constrainedElement="_MLr7EIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLr7E4kxEeOMQ5AKLd10lA" annotatedElement="_MLr7EokxEeOMQ5AKLd10lA">
<body>A JoinNode has one outgoing ActivityEdge.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLr7FIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>outgoing->size() = 1</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MLr7FYkxEeOMQ5AKLd10lA" name="incoming_object_flow" constrainedElement="_MLr7EIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLr7FokxEeOMQ5AKLd10lA" annotatedElement="_MLr7FYkxEeOMQ5AKLd10lA">
<body>If one of the incoming ActivityEdges of a JoinNode is an ObjectFlow, then its outgoing ActivityEdge must be an ObjectFlow. Otherwise its outgoing ActivityEdge must be a ControlFlow.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLr7F4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>if incoming->exists(oclIsKindOf(ObjectFlow)) then outgoing->forAll(oclIsKindOf(ObjectFlow))&#xD;
else outgoing->forAll(oclIsKindOf(ControlFlow))&#xD;
endif</body>
</specification>
</ownedRule>
<generalization xmi:id="_MLr7GIkxEeOMQ5AKLd10lA" general="_MLlNZokxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MLr7GYkxEeOMQ5AKLd10lA" name="isCombineDuplicate">
<ownedComment xmi:id="_MLr7GokxEeOMQ5AKLd10lA" annotatedElement="_MLr7GYkxEeOMQ5AKLd10lA">
<body>Indicates whether incoming tokens having objects with the same identity are combined into one by the JoinNode.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MLr7G4kxEeOMQ5AKLd10lA" value="true"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MLr7HIkxEeOMQ5AKLd10lA" name="joinSpec" type="_MPO-UIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MLyBsIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLr7HYkxEeOMQ5AKLd10lA" annotatedElement="_MLr7HIkxEeOMQ5AKLd10lA">
<body>A ValueSpecification giving the condition under which the JoinNode will offer a token on its outgoing ActivityEdge. If no joinSpec is specified, then the JoinNode will offer an outgoing token if tokens are offered on all of its incoming ActivityEdges (an &quot;and&quot; condition).</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLr7HokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MLsiIIkxEeOMQ5AKLd10lA" name="MergeNode">
<ownedComment xmi:id="_MLsiIYkxEeOMQ5AKLd10lA" annotatedElement="_MLsiIIkxEeOMQ5AKLd10lA">
<body>A merge node is a control node that brings together multiple alternate flows. It is not used to synchronize concurrent flows but to accept one among several alternate flows.</body>
</ownedComment>
<ownedRule xmi:id="_MLsiIokxEeOMQ5AKLd10lA" name="one_outgoing_edge" constrainedElement="_MLsiIIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLsiI4kxEeOMQ5AKLd10lA" annotatedElement="_MLsiIokxEeOMQ5AKLd10lA">
<body>A MergeNode has one outgoing ActivityEdge.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLsiJIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>outgoing->size()=1</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MLsiJYkxEeOMQ5AKLd10lA" name="edges" constrainedElement="_MLsiIIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLsiJokxEeOMQ5AKLd10lA" annotatedElement="_MLsiJYkxEeOMQ5AKLd10lA">
<body>The ActivityEdges incoming to and outgoing from a MergeNode must be either all ObjectFlows or all ControlFlows.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLsiJ4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>let allEdges : Set(ActivityEdge) = incoming->union(outgoing) in&#xD;
allEdges->forAll(oclIsKindOf(ControlFlow)) or allEdges->forAll(oclIsKindOf(ObjectFlow))</body>
</specification>
</ownedRule>
<generalization xmi:id="_MLsiKIkxEeOMQ5AKLd10lA" general="_MLlNZokxEeOMQ5AKLd10lA"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MLtwQIkxEeOMQ5AKLd10lA" name="ObjectFlow">
<ownedComment xmi:id="_MLtwQYkxEeOMQ5AKLd10lA" annotatedElement="_MLtwQIkxEeOMQ5AKLd10lA">
<body>An ObjectFlow is an ActivityEdge that is traversed by object tokens that may hold values. Object flows also support multicast/receive, token selection from object nodes, and transformation of tokens.</body>
</ownedComment>
<ownedRule xmi:id="_MLtwQokxEeOMQ5AKLd10lA" name="input_and_output_parameter" constrainedElement="_MLtwQIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLtwQ4kxEeOMQ5AKLd10lA" annotatedElement="_MLtwQokxEeOMQ5AKLd10lA">
<body>A selection Behavior has one input Parameter and one output Parameter. The input Parameter must have the same as or a supertype of the type of the source ObjectNode, be non-unique and have multiplicity 0..*. The output Parameter must be the same or a subtype of the type of source ObjectNode. The Behavior cannot have side effects.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLtwRIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>selection&lt;>null implies&#xD;
selection.inputParameters()->size()=1 and&#xD;
selection.inputParameters()->forAll(not isUnique and is(0,*)) and&#xD;
selection.outputParameters()->size()=1</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MLtwRYkxEeOMQ5AKLd10lA" name="no_executable_nodes" constrainedElement="_MLtwQIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLtwRokxEeOMQ5AKLd10lA" annotatedElement="_MLtwRYkxEeOMQ5AKLd10lA">
<body>ObjectFlows may not have ExecutableNodes at either end.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLtwR4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>not (source.oclIsKindOf(ExecutableNode) or target.oclIsKindOf(ExecutableNode))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MLtwSIkxEeOMQ5AKLd10lA" name="transformation_behavior" constrainedElement="_MLtwQIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLtwSYkxEeOMQ5AKLd10lA" annotatedElement="_MLtwSIkxEeOMQ5AKLd10lA">
<body>A transformation Behavior has one input Parameter and one output Parameter. The input Parameter must be the same as or a supertype of the type of object token coming from the source end. The output Parameter must be the same or a subtype of the type of object token expected downstream. The Behavior cannot have side effects.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLtwSokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>transformation&lt;>null implies&#xD;
transformation.inputParameters()->size()=1 and&#xD;
transformation.outputParameters()->size()=1</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MLtwS4kxEeOMQ5AKLd10lA" name="selection_behavior" constrainedElement="_MLtwQIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLtwTIkxEeOMQ5AKLd10lA" annotatedElement="_MLtwS4kxEeOMQ5AKLd10lA">
<body>An ObjectFlow may have a selection Behavior only if it has an ObjectNode as its source.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLtwTYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>selection&lt;>null implies source.oclIsKindOf(ObjectNode)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MLtwTokxEeOMQ5AKLd10lA" name="compatible_types" constrainedElement="_MLtwQIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLtwT4kxEeOMQ5AKLd10lA" annotatedElement="_MLtwTokxEeOMQ5AKLd10lA">
<body>ObjectNodes connected by an ObjectFlow, with optionally intervening ControlNodes, must have compatible types. In particular, the downstream ObjectNode type must be the same or a supertype of the upstream ObjectNode type.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLtwUIkxEeOMQ5AKLd10lA" language=""/>
</ownedRule>
<ownedRule xmi:id="_MLtwUYkxEeOMQ5AKLd10lA" name="same_upper_bounds" constrainedElement="_MLtwQIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLtwUokxEeOMQ5AKLd10lA" annotatedElement="_MLtwUYkxEeOMQ5AKLd10lA">
<body>ObjectNodes connected by an ObjectFlow, with optionally intervening ControlNodes, must have the same upperBounds.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLtwU4kxEeOMQ5AKLd10lA" language=""/>
</ownedRule>
<ownedRule xmi:id="_MLtwVIkxEeOMQ5AKLd10lA" name="target" constrainedElement="_MLtwQIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLtwVYkxEeOMQ5AKLd10lA" annotatedElement="_MLtwVIkxEeOMQ5AKLd10lA">
<body>An ObjectFlow with a constant weight may not target an ObjectNode, with optionally intervening ControlNodes, that has an upper bound less than the weight.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLtwVokxEeOMQ5AKLd10lA" language=""/>
</ownedRule>
<ownedRule xmi:id="_MLtwV4kxEeOMQ5AKLd10lA" name="is_multicast_or_is_multireceive" constrainedElement="_MLtwQIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLtwWIkxEeOMQ5AKLd10lA" annotatedElement="_MLtwV4kxEeOMQ5AKLd10lA">
<body>isMulticast and isMultireceive cannot both be true.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLtwWYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>not (isMulticast and isMultireceive)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MLtwWokxEeOMQ5AKLd10lA" general="_MLbcYIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MLtwW4kxEeOMQ5AKLd10lA" name="isMulticast">
<ownedComment xmi:id="_MLtwXIkxEeOMQ5AKLd10lA" annotatedElement="_MLtwW4kxEeOMQ5AKLd10lA">
<body>Indicates whether the objects in the ObjectFlow are passed by multicasting.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MLtwXYkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MLtwXokxEeOMQ5AKLd10lA" name="isMultireceive">
<ownedComment xmi:id="_MLtwX4kxEeOMQ5AKLd10lA" annotatedElement="_MLtwXokxEeOMQ5AKLd10lA">
<body>Indicates whether the objects in the ObjectFlow are gathered from respondents to multicasting.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MLtwYIkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MLtwYYkxEeOMQ5AKLd10lA" name="selection" type="_TUPtYGveEdq4DLWZOhbdEA" association="_MLxap4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLtwYokxEeOMQ5AKLd10lA" annotatedElement="_MLtwYYkxEeOMQ5AKLd10lA">
<body>A Behavior used to select tokens from a source ObjectNode.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLtwY4kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MLtwZIkxEeOMQ5AKLd10lA" name="transformation" type="_TUPtYGveEdq4DLWZOhbdEA" association="_MLxao4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLtwZYkxEeOMQ5AKLd10lA" annotatedElement="_MLtwZIkxEeOMQ5AKLd10lA">
<body>A Behavior used to change or replace object tokens flowing along the ObjectFlow.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLtwZokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MLu-YIkxEeOMQ5AKLd10lA" name="ObjectNode" isAbstract="true">
<ownedComment xmi:id="_MLu-YYkxEeOMQ5AKLd10lA" annotatedElement="_MLu-YIkxEeOMQ5AKLd10lA">
<body>An ObjectNode is an abstract ActivityNode that may hold tokens within the object flow in an Activity. ObjectNodes also support token selection, limitation on the number of tokens held, specification of the state required for tokens being held, and carrying control values.</body>
</ownedComment>
<ownedRule xmi:id="_MLu-YokxEeOMQ5AKLd10lA" name="input_output_parameter" constrainedElement="_MLu-YIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLu-Y4kxEeOMQ5AKLd10lA" annotatedElement="_MLu-YokxEeOMQ5AKLd10lA">
<body>A selection Behavior has one input Parameter and one output Parameter. The input Parameter must have the same type as or a supertype of the type of ObjectNode, be non-unique, and have multiplicity 0..*. The output Parameter must be the same or a subtype of the type of ObjectNode. The Behavior cannot have side effects.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLu-ZIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>selection&lt;>null implies&#xD;
selection.inputParameters()->size()=1 and&#xD;
selection.inputParameters()->forAll(p | not p.isUnique and p.is(0,*) and self.type.conformsTo(p.type)) and&#xD;
selection.outputParameters()->size()=1 and&#xD;
selection.inputParameters()->forAll(p | self.type.conformsTo(p.type))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MLu-ZYkxEeOMQ5AKLd10lA" name="selection_behavior" constrainedElement="_MLu-YIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLu-ZokxEeOMQ5AKLd10lA" annotatedElement="_MLu-ZYkxEeOMQ5AKLd10lA">
<body>If an ObjectNode has a selection Behavior, then the ordering of the object node is ordered, and vice versa.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLu-Z4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(selection&lt;>null) = (ordering=ObjectNodeOrderingKind::ordered)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MLu-aIkxEeOMQ5AKLd10lA" name="object_flow_edges" constrainedElement="_MLu-YIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLu-aYkxEeOMQ5AKLd10lA" annotatedElement="_MLu-aIkxEeOMQ5AKLd10lA">
<body>If isControlType=false, the ActivityEdges incoming to or outgoing from an ObjectNode must all be ObjectFlows.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLu-aokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(not isControlType) implies incoming->union(outgoing)->forAll(oclIsKindOf(ObjectFlow))</body>
</specification>
</ownedRule>
<generalization xmi:id="_MLu-a4kxEeOMQ5AKLd10lA" general="_MNWvAIkxEeOMQ5AKLd10lA"/>
<generalization xmi:id="_MLu-bIkxEeOMQ5AKLd10lA" general="_WpiyYAs-EeGcpbeCPJfCmw"/>
<ownedAttribute xmi:id="_MLu-bYkxEeOMQ5AKLd10lA" name="inState" type="_AjbzoIRREeOnobsWSpJONg" association="_MLwznIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLu-bokxEeOMQ5AKLd10lA" annotatedElement="_MLu-bYkxEeOMQ5AKLd10lA">
<body>The States required to be associated with the values held by tokens on this ObjectNode.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLu-b4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLu-cIkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MLu-cYkxEeOMQ5AKLd10lA" name="isControlType">
<ownedComment xmi:id="_MLu-cokxEeOMQ5AKLd10lA" annotatedElement="_MLu-cYkxEeOMQ5AKLd10lA">
<body>Indicates whether the type of the ObjectNode is to be treated as representing control values that may traverse ControlFlows.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MLu-c4kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MLu-dIkxEeOMQ5AKLd10lA" name="ordering" type="_MLwMj4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLu-dYkxEeOMQ5AKLd10lA" annotatedElement="_MLu-dIkxEeOMQ5AKLd10lA">
<body>Indicates how the tokens held by the ObjectNode are ordered for selection to traverse ActivityEdges outgoing from the ObjectNode.</body>
</ownedComment>
<defaultValue xmi:type="uml:InstanceValue" xmi:id="_MLu-dokxEeOMQ5AKLd10lA" type="_MLwMj4kxEeOMQ5AKLd10lA" instance="_MLwzlokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MLu-d4kxEeOMQ5AKLd10lA" name="selection" type="_TUPtYGveEdq4DLWZOhbdEA" association="_MLwzmIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLu-eIkxEeOMQ5AKLd10lA" annotatedElement="_MLu-d4kxEeOMQ5AKLd10lA">
<body>A Behavior used to select tokens to be offered on outgoing ActivityEdges.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLu-eYkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MLu-eokxEeOMQ5AKLd10lA" name="upperBound" type="_MPO-UIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MLxaoIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLu-e4kxEeOMQ5AKLd10lA" annotatedElement="_MLu-eokxEeOMQ5AKLd10lA">
<body>The maximum number of tokens that may be held by this ObjectNode. Tokens cannot flow into the ObjectNode if the upperBound is reached. If no upperBound is specified, then there is no limit on how many tokens the ObjectNode can hold.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLu-fIkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MLvlcIkxEeOMQ5AKLd10lA" name="Variable">
<ownedComment xmi:id="_MLwMgIkxEeOMQ5AKLd10lA" annotatedElement="_MLvlcIkxEeOMQ5AKLd10lA">
<body>A Variable is a ConnectableElement that may store values during the execution of an Activity. Reading and writing the values of a Variable provides an alternative means for passing data than the use of ObjectFlows. A Variable may be owned directly by an Activity, in which case it is accessible from anywhere within that activity, or it may be owned by a StructuredActivityNode, in which case it is only accessible within that node.</body>
</ownedComment>
<generalization xmi:id="_MLwMgYkxEeOMQ5AKLd10lA" general="_0dB44PnhEdunWsS3se92JQ"/>
<generalization xmi:id="_MLwMgokxEeOMQ5AKLd10lA" general="_Gjgl0GveEdq4DLWZOhbdEA"/>
<ownedAttribute xmi:id="_MLwMg4kxEeOMQ5AKLd10lA" name="activityScope" type="_eGtFwLLREeCsYvaJqFFivQ" subsettedProperty="_1vzv0LbIEeCRxrN1JUGuxA" association="_ML1FA4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLwMhIkxEeOMQ5AKLd10lA" annotatedElement="_MLwMg4kxEeOMQ5AKLd10lA">
<body>An Activity that owns the Variable.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLwMhYkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MLwMhokxEeOMQ5AKLd10lA" name="scope" type="_w1_2cLLREeCsYvaJqFFivQ" subsettedProperty="_1vzv0LbIEeCRxrN1JUGuxA" association="_MK0YYIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MLwMh4kxEeOMQ5AKLd10lA" annotatedElement="_MLwMhokxEeOMQ5AKLd10lA">
<body>A StructuredActivityNode that owns the Variable.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLwMiIkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedOperation xmi:id="_MLwMiYkxEeOMQ5AKLd10lA" name="isAccessibleBy" bodyCondition="_MLwMi4kxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MLwMiokxEeOMQ5AKLd10lA" annotatedElement="_MLwMiYkxEeOMQ5AKLd10lA">
<body>A Variable is accessible by Actions within its scope (the Activity or StructuredActivityNode that owns it).</body>
</ownedComment>
<ownedRule xmi:id="_MLwMi4kxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MLwMiYkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MLwMjIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if scope&lt;>null then scope.allOwnedNodes()->includes(a)&#xD;
else a.containingActivity()=activityScope&#xD;
endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MLwMjYkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_MLwMjokxEeOMQ5AKLd10lA" name="a" type="_6WKakLLQEeCsYvaJqFFivQ"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Enumeration" xmi:id="_MLwMj4kxEeOMQ5AKLd10lA" name="ObjectNodeOrderingKind">
<ownedComment xmi:id="_MLwMkIkxEeOMQ5AKLd10lA" annotatedElement="_MLwMj4kxEeOMQ5AKLd10lA">
<body>ObjectNodeOrderingKind is an enumeration indicating queuing order for offering the tokens held by an ObjectNode.</body>
</ownedComment>
<ownedLiteral xmi:id="_MLwzkIkxEeOMQ5AKLd10lA" name="unordered">
<ownedComment xmi:id="_MLwzkYkxEeOMQ5AKLd10lA" annotatedElement="_MLwzkIkxEeOMQ5AKLd10lA">
<body>Indicates that tokens are unordered.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_MLwzkokxEeOMQ5AKLd10lA" name="ordered">
<ownedComment xmi:id="_MLwzk4kxEeOMQ5AKLd10lA" annotatedElement="_MLwzkokxEeOMQ5AKLd10lA">
<body>Indicates that tokens are ordered.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_MLwzlIkxEeOMQ5AKLd10lA" name="LIFO">
<ownedComment xmi:id="_MLwzlYkxEeOMQ5AKLd10lA" annotatedElement="_MLwzlIkxEeOMQ5AKLd10lA">
<body>Indicates that tokens are queued in a last in, first out manner.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_MLwzlokxEeOMQ5AKLd10lA" name="FIFO">
<ownedComment xmi:id="_MLwzl4kxEeOMQ5AKLd10lA" annotatedElement="_MLwzlokxEeOMQ5AKLd10lA">
<body>Indicates that tokens are queued in a first in, first out manner.</body>
</ownedComment>
</ownedLiteral>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLwzmIkxEeOMQ5AKLd10lA" name="A_selection_objectNode" memberEnd="_MLu-d4kxEeOMQ5AKLd10lA _MLwzmYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLwzmYkxEeOMQ5AKLd10lA" name="objectNode" type="_MLu-YIkxEeOMQ5AKLd10lA" association="_MLwzmIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLwzmokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLwzm4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLwznIkxEeOMQ5AKLd10lA" name="A_inState_objectNode" memberEnd="_MLu-bYkxEeOMQ5AKLd10lA _MLwznYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLwznYkxEeOMQ5AKLd10lA" name="objectNode" type="_MLu-YIkxEeOMQ5AKLd10lA" association="_MLwznIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLwznokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLwzn4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLxaoIkxEeOMQ5AKLd10lA" name="A_upperBound_objectNode" memberEnd="_MLu-eokxEeOMQ5AKLd10lA _MLxaoYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLxaoYkxEeOMQ5AKLd10lA" name="objectNode" type="_MLu-YIkxEeOMQ5AKLd10lA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MLxaoIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLxaookxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLxao4kxEeOMQ5AKLd10lA" name="A_transformation_objectFlow" memberEnd="_MLtwZIkxEeOMQ5AKLd10lA _MLxapIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLxapIkxEeOMQ5AKLd10lA" name="objectFlow" type="_MLtwQIkxEeOMQ5AKLd10lA" association="_MLxao4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLxapYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLxapokxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLxap4kxEeOMQ5AKLd10lA" name="A_selection_objectFlow" memberEnd="_MLtwYYkxEeOMQ5AKLd10lA _MLxaqIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLxaqIkxEeOMQ5AKLd10lA" name="objectFlow" type="_MLtwQIkxEeOMQ5AKLd10lA" association="_MLxap4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLxaqYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLxaqokxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLyBsIkxEeOMQ5AKLd10lA" name="A_joinSpec_joinNode" memberEnd="_MLr7HIkxEeOMQ5AKLd10lA _MLyBsYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLyBsYkxEeOMQ5AKLd10lA" name="joinNode" type="_MLr7EIkxEeOMQ5AKLd10lA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MLyBsIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLyBsokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLyBs4kxEeOMQ5AKLd10lA" name="A_interruptingEdge_interrupts" memberEnd="_MLrUBokxEeOMQ5AKLd10lA _MLbcd4kxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MLyBtIkxEeOMQ5AKLd10lA" name="A_handler_protectedNode" memberEnd="_MLpe04kxEeOMQ5AKLd10lA _MLoQzIkxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MLyBtYkxEeOMQ5AKLd10lA" name="A_handlerBody_exceptionHandler" memberEnd="_MLoQyokxEeOMQ5AKLd10lA _MLyBtokxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLyBtokxEeOMQ5AKLd10lA" name="exceptionHandler" type="_MLoQsIkxEeOMQ5AKLd10lA" association="_MLyBtYkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLyBt4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLyBuIkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLyowIkxEeOMQ5AKLd10lA" name="A_exceptionType_exceptionHandler" memberEnd="_MLoQx4kxEeOMQ5AKLd10lA _MLyowYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLyowYkxEeOMQ5AKLd10lA" name="exceptionHandler" type="_MLoQsIkxEeOMQ5AKLd10lA" association="_MLyowIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLyowokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLyow4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLyoxIkxEeOMQ5AKLd10lA" name="A_exceptionInput_exceptionHandler" memberEnd="_MLoQxYkxEeOMQ5AKLd10lA _MLyoxYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLyoxYkxEeOMQ5AKLd10lA" name="exceptionHandler" type="_MLoQsIkxEeOMQ5AKLd10lA" association="_MLyoxIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLyoxokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLyox4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLyoyIkxEeOMQ5AKLd10lA" name="A_decisionInput_decisionNode" memberEnd="_MLnCq4kxEeOMQ5AKLd10lA _MLyoyYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLyoyYkxEeOMQ5AKLd10lA" name="decisionNode" type="_MLnCkIkxEeOMQ5AKLd10lA" association="_MLyoyIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLyoyokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLyoy4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLzP0IkxEeOMQ5AKLd10lA" name="A_decisionInputFlow_decisionNode" memberEnd="_MLnCrokxEeOMQ5AKLd10lA _MLzP0YkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLzP0YkxEeOMQ5AKLd10lA" name="decisionNode" type="_MLnCkIkxEeOMQ5AKLd10lA" association="_MLzP0IkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLzP0okxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLzP04kxEeOMQ5AKLd10lA" name="A_represents_activityPartition" memberEnd="_MLjYN4kxEeOMQ5AKLd10lA _MLzP1IkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLzP1IkxEeOMQ5AKLd10lA" name="activityPartition" type="_MIhqsAs-EeGcpbeCPJfCmw" association="_MLzP04kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLzP1YkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLzP1okxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLzP14kxEeOMQ5AKLd10lA" name="A_subpartition_superPartition" memberEnd="_MLj_QIkxEeOMQ5AKLd10lA _MLj_RIkxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MLzP2IkxEeOMQ5AKLd10lA" name="A_edge_inPartition" memberEnd="_MLixJIkxEeOMQ5AKLd10lA _MLbccIkxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MLzP2YkxEeOMQ5AKLd10lA" name="A_parameter_activityParameterNode" memberEnd="_MLhjEokxEeOMQ5AKLd10lA _MLzP2okxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLzP2okxEeOMQ5AKLd10lA" name="activityParameterNode" type="_MLhjAIkxEeOMQ5AKLd10lA" association="_MLzP2YkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLzP24kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLzP3IkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLz24IkxEeOMQ5AKLd10lA" name="A_inInterruptibleRegion_node" memberEnd="_MLfGwIkxEeOMQ5AKLd10lA _MLrUCokxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MLz24YkxEeOMQ5AKLd10lA" name="A_inPartition_node" memberEnd="_MLfGxIkxEeOMQ5AKLd10lA _MLjYM4kxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MLz24okxEeOMQ5AKLd10lA" name="A_incoming_target_node" memberEnd="_MLft0IkxEeOMQ5AKLd10lA _MLbcgIkxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MLz244kxEeOMQ5AKLd10lA" name="A_outgoing_source_node" memberEnd="_MLft1IkxEeOMQ5AKLd10lA _MLbcfokxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MLz25IkxEeOMQ5AKLd10lA" name="A_redefinedNode_activityNode" memberEnd="_MLft2IkxEeOMQ5AKLd10lA _MLz25YkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MLz25YkxEeOMQ5AKLd10lA" name="activityNode" type="_WpiyYAs-EeGcpbeCPJfCmw" subsettedProperty="_MMmhGYkxEeOMQ5AKLd10lA" association="_MLz25IkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MLz25okxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MLz254kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MLz26IkxEeOMQ5AKLd10lA" name="A_containedEdge_inGroup" isDerived="true" memberEnd="_MLcqhIkxEeOMQ5AKLd10lA _MLbcbIkxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MLz26YkxEeOMQ5AKLd10lA" name="A_containedNode_inGroup" isDerived="true" memberEnd="_MLcqiIkxEeOMQ5AKLd10lA _MLeftIkxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_ML0d8IkxEeOMQ5AKLd10lA" name="A_subgroup_superGroup" isDerived="true" memberEnd="_MLdRlIkxEeOMQ5AKLd10lA _MLdRmIkxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_ML0d8YkxEeOMQ5AKLd10lA" name="A_redefinedEdge_activityEdge" memberEnd="_MLbceokxEeOMQ5AKLd10lA _ML0d8okxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_ML0d8okxEeOMQ5AKLd10lA" name="activityEdge" type="_MLbcYIkxEeOMQ5AKLd10lA" subsettedProperty="_MMmhGYkxEeOMQ5AKLd10lA" association="_ML0d8YkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ML0d84kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ML0d9IkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_ML0d9YkxEeOMQ5AKLd10lA" name="A_weight_activityEdge" memberEnd="_MLbcgokxEeOMQ5AKLd10lA _ML0d9okxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_ML0d9okxEeOMQ5AKLd10lA" name="activityEdge" type="_MLbcYIkxEeOMQ5AKLd10lA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_ML0d9YkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ML0d94kxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_ML1FAIkxEeOMQ5AKLd10lA" name="A_guard_activityEdge" memberEnd="_MLbcaYkxEeOMQ5AKLd10lA _ML1FAYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_ML1FAYkxEeOMQ5AKLd10lA" name="activityEdge" type="_MLbcYIkxEeOMQ5AKLd10lA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_ML1FAIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ML1FAokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_w4820AtEEeGcpbeCPJfCmw" name="A_structuredNode_activity" memberEnd="_EOSYAAs-EeGcpbeCPJfCmw _gnnw0AtZEeGV4NAcunjVqQ _bQeSgAtEEeGcpbeCPJfCmw">
<ownedEnd xmi:id="_bQeSgAtEEeGcpbeCPJfCmw" name="activity" visibility="private" type="_eGtFwLLREeCsYvaJqFFivQ" association="_w4820AtEEeGcpbeCPJfCmw">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_cva8wAtEEeGcpbeCPJfCmw"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_DwV68AtCEeGcpbeCPJfCmw" name="A_group_inActivity" memberEnd="_PCvjoAs_EeGcpbeCPJfCmw _5V2SAAtBEeGcpbeCPJfCmw"/>
<packagedElement xmi:type="uml:Association" xmi:id="_RFCrMAtCEeGcpbeCPJfCmw" name="A_node_activity" memberEnd="_RoJfoAs_EeGcpbeCPJfCmw _X0ZfIAtCEeGcpbeCPJfCmw"/>
<packagedElement xmi:type="uml:Association" xmi:id="_ML1FA4kxEeOMQ5AKLd10lA" name="A_variable_activityScope" memberEnd="_MLaOQIkxEeOMQ5AKLd10lA _MLwMg4kxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_ML1sEIkxEeOMQ5AKLd10lA" name="A_edge_activity" memberEnd="_MLYZEIkxEeOMQ5AKLd10lA _MLbcZokxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_3Ik3QAtDEeGcpbeCPJfCmw" name="A_partition_activity" memberEnd="_-_c7oAs9EeGcpbeCPJfCmw __DOZoAtDEeGcpbeCPJfCmw">
<ownedEnd xmi:id="__DOZoAtDEeGcpbeCPJfCmw" name="activity" type="_eGtFwLLREeCsYvaJqFFivQ" subsettedProperty="_5V2SAAtBEeGcpbeCPJfCmw" association="_3Ik3QAtDEeGcpbeCPJfCmw">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ML1sEYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_ML7LoIkxEeOMQ5AKLd10lA" name="Substitution">
<ownedComment xmi:id="_ML7LoYkxEeOMQ5AKLd10lA" annotatedElement="_ML7LoIkxEeOMQ5AKLd10lA">
<body>A substitution is a relationship between two classifiers signifying that the substituting classifier complies with the contract specified by the contract classifier. This implies that instances of the substituting classifier are runtime substitutable where instances of the contract classifier are expected.</body>
</ownedComment>
<generalization xmi:id="_ML7LookxEeOMQ5AKLd10lA" general="_MNTrsYkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_ML7Lo4kxEeOMQ5AKLd10lA" name="contract" type="_6UV2QGwJEdq7X4sGURiZYA" subsettedProperty="_MNBX0IkxEeOMQ5AKLd10lA" association="_MMsnuokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_ML7LpIkxEeOMQ5AKLd10lA" annotatedElement="_ML7Lo4kxEeOMQ5AKLd10lA">
<body>The contract with which the substituting classifier complies.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_ML7LpYkxEeOMQ5AKLd10lA" name="substitutingClassifier" type="_6UV2QGwJEdq7X4sGURiZYA" subsettedProperty="_sD4acEzSEeO2z-YY6ENIIA _N3hRMAtAEeGcpbeCPJfCmw" association="_MMrZkIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_ML7LpokxEeOMQ5AKLd10lA" annotatedElement="_ML7LpYkxEeOMQ5AKLd10lA">
<body>Instances of the substituting classifier are runtime substitutable where instances of the contract classifier are expected.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_rHT3YKOsEdqi_5gqUMOQtA" name="BehavioralFeature" isAbstract="true">
<ownedComment xmi:id="_ML7Lp4kxEeOMQ5AKLd10lA" annotatedElement="_rHT3YKOsEdqi_5gqUMOQtA">
<body>A BehavioralFeature is a feature of a Classifier that specifies an aspect of the behavior of its instances. A BehavioralFeature is implemented (realized) by a Behavior. A BehavioralFeature specifies that a Classifier will respond to a designated request by invoking its implementing method.</body>
</ownedComment>
<ownedRule xmi:id="_ML7LqIkxEeOMQ5AKLd10lA" name="abstract_no_method" constrainedElement="_rHT3YKOsEdqi_5gqUMOQtA">
<ownedComment xmi:id="_ML7LqYkxEeOMQ5AKLd10lA" annotatedElement="_ML7LqIkxEeOMQ5AKLd10lA">
<body>When isAbstract is true there are no methods.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_ML7LqokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>isAbstract implies method->isEmpty()</body>
</specification>
</ownedRule>
<generalization xmi:id="_ML7Lq4kxEeOMQ5AKLd10lA" general="_UL0VYLbAEeCRxrN1JUGuxA"/>
<generalization xmi:id="_ML7LrIkxEeOMQ5AKLd10lA" general="_ZiwkoGwLEdq7X4sGURiZYA"/>
<ownedAttribute xmi:id="_ML7LrYkxEeOMQ5AKLd10lA" name="concurrency" type="_MMkE0okxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_ML7LrokxEeOMQ5AKLd10lA" annotatedElement="_ML7LrYkxEeOMQ5AKLd10lA">
<body>Specifies the semantics of concurrent calls to the same passive instance (i.e., an instance originating from a Class with isActive being false). Active instances control access to their own BehavioralFeatures.</body>
</ownedComment>
<defaultValue xmi:type="uml:InstanceValue" xmi:id="_ML7Lr4kxEeOMQ5AKLd10lA" type="_MMkE0okxEeOMQ5AKLd10lA" instance="_MMkE1IkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_ML7ysIkxEeOMQ5AKLd10lA" name="isAbstract">
<ownedComment xmi:id="_ML7ysYkxEeOMQ5AKLd10lA" annotatedElement="_ML7ysIkxEeOMQ5AKLd10lA">
<body>If true, then the BehavioralFeature does not have an implementation, and one must be supplied by a more specific Classifier. If false, the BehavioralFeature must have an implementation in the Classifier or one must be inherited.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_ML7ysokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_ML7ys4kxEeOMQ5AKLd10lA" name="method" type="_TUPtYGveEdq4DLWZOhbdEA" association="_MMsnuYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_ML7ytIkxEeOMQ5AKLd10lA" annotatedElement="_ML7ys4kxEeOMQ5AKLd10lA">
<body>A Behavior that implements the BehavioralFeature. There may be at most one Behavior for a particular pairing of a Classifier (as owner of the Behavior) and a BehavioralFeature (as specification of the Behavior).</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ML7ytYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ML7ytokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_ML7yt4kxEeOMQ5AKLd10lA" name="ownedParameter" type="_KyaPMGveEdq4DLWZOhbdEA" isOrdered="true" aggregation="composite" subsettedProperty="_MNQBWIkxEeOMQ5AKLd10lA" association="_MMsArYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_ML7yuIkxEeOMQ5AKLd10lA" annotatedElement="_ML7yt4kxEeOMQ5AKLd10lA">
<body>The ordered set of formal Parameters of this BehavioralFeature.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ML7yuYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ML7yuokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_ML7yu4kxEeOMQ5AKLd10lA" name="ownedParameterSet" type="_MMWCYIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MNQBWIkxEeOMQ5AKLd10lA" association="_MMsntokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_ML7yvIkxEeOMQ5AKLd10lA" annotatedElement="_ML7yu4kxEeOMQ5AKLd10lA">
<body>The ParameterSets owned by this BehavioralFeature.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ML7yvYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ML7yvokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_ML7yv4kxEeOMQ5AKLd10lA" name="raisedException" type="_ynRtoGvtEdqG6fBIPwe-mw" association="_MMsnsokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_ML8ZwIkxEeOMQ5AKLd10lA" annotatedElement="_ML7yv4kxEeOMQ5AKLd10lA">
<body>The Types representing exceptions that may be raised during an invocation of this BehavioralFeature.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ML8ZwYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ML8ZwokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedOperation xmi:id="_3Y0aYKOuEdqi_5gqUMOQtA" name="createReturnResult">
<ownedComment xmi:id="_WdHFYPZPEdqYHf-imTcTdw" annotatedElement="_3Y0aYKOuEdqi_5gqUMOQtA">
<body>Creates a return result parameter with the specified name and type.</body>
</ownedComment>
<ownedParameter xmi:id="_8N3dwKOuEdqi_5gqUMOQtA" type="_KyaPMGveEdq4DLWZOhbdEA" direction="return"/>
<ownedParameter xmi:id="_ESyWcKOvEdqi_5gqUMOQtA" name="name" effect="read">
<ownedComment xmi:id="_t9Pp4PH9EdulR8T2OJRyFQ" annotatedElement="_ESyWcKOvEdqi_5gqUMOQtA">
<body>The name for the new return result, or null.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="__VyJkKOxEdqi_5gqUMOQtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__VyJkaOxEdqi_5gqUMOQtA" value="1"/>
</ownedParameter>
<ownedParameter xmi:id="__sC00KOuEdqi_5gqUMOQtA" name="type" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
<ownedComment xmi:id="_xWgrwPH9EdulR8T2OJRyFQ" annotatedElement="__sC00KOuEdqi_5gqUMOQtA">
<body>The type for the new return result, or null.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BJHvcKOyEdqi_5gqUMOQtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BJHvcaOyEdqi_5gqUMOQtA" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_ML8Zw4kxEeOMQ5AKLd10lA" name="isDistinguishableFrom" bodyCondition="_ML8ZxYkxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MNM-B4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_ML8ZxIkxEeOMQ5AKLd10lA" annotatedElement="_ML8Zw4kxEeOMQ5AKLd10lA">
<body>The query isDistinguishableFrom() determines whether two BehavioralFeatures may coexist in the same Namespace. It specifies that they must have different signatures.</body>
</ownedComment>
<ownedRule xmi:id="_ML8ZxYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_ML8Zw4kxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_ML8ZxokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = ((n.oclIsKindOf(BehavioralFeature) and ns.getNamesOfMember(self)->intersection(ns.getNamesOfMember(n))->notEmpty()) implies
Set{self}->including(n.oclAsType(BehavioralFeature))->isUnique(ownedParameter->collect(p|
Tuple { name=p.name, type=p.type,effect=p.effect,direction=p.direction,isException=p.isException,
isStream=p.isStream,isOrdered=p.isOrdered,isUnique=p.isUnique,lower=p.lower, upper=p.upper }))
)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_ML8Zx4kxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_ML8ZyIkxEeOMQ5AKLd10lA" name="n" type="_csVgUGvtEdqG6fBIPwe-mw"/>
<ownedParameter xmi:id="_ML8ZyYkxEeOMQ5AKLd10lA" name="ns" type="_ZiwkoGwLEdq7X4sGURiZYA"/>
</ownedOperation>
<ownedOperation xmi:id="_ML8ZyokxEeOMQ5AKLd10lA" name="inputParameters" bodyCondition="_ML8ZzIkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_ML8Zy4kxEeOMQ5AKLd10lA" annotatedElement="_ML8ZyokxEeOMQ5AKLd10lA">
<body>The ownedParameters with direction in and inout.</body>
</ownedComment>
<ownedRule xmi:id="_ML8ZzIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_ML8ZyokxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_ML8ZzYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (ownedParameter->select(direction=ParameterDirectionKind::_'in' or direction=ParameterDirectionKind::inout))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_ML8ZzokxEeOMQ5AKLd10lA" name="result" type="_KyaPMGveEdq4DLWZOhbdEA" isOrdered="true" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ML8Zz4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ML8Z0IkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_ML9A0IkxEeOMQ5AKLd10lA" name="outputParameters" bodyCondition="_ML9A0okxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_ML9A0YkxEeOMQ5AKLd10lA" annotatedElement="_ML9A0IkxEeOMQ5AKLd10lA">
<body>The ownedParameters with direction out, inout, or return.</body>
</ownedComment>
<ownedRule xmi:id="_ML9A0okxEeOMQ5AKLd10lA" name="spec" constrainedElement="_ML9A0IkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_ML9A04kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (ownedParameter->select(direction=ParameterDirectionKind::out or direction=ParameterDirectionKind::inout or direction=ParameterDirectionKind::return))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_ML9A1IkxEeOMQ5AKLd10lA" name="result" type="_KyaPMGveEdq4DLWZOhbdEA" isOrdered="true" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ML9A1YkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ML9A1okxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_6UV2QGwJEdq7X4sGURiZYA" name="Classifier" isAbstract="true">
<ownedComment xmi:id="_ML9n4IkxEeOMQ5AKLd10lA" annotatedElement="_6UV2QGwJEdq7X4sGURiZYA">
<body>A Classifier represents a classification of instances according to their Features.</body>
</ownedComment>
<ownedRule xmi:id="_ML9n4YkxEeOMQ5AKLd10lA" name="specialize_type" constrainedElement="_6UV2QGwJEdq7X4sGURiZYA">
<ownedComment xmi:id="_ML9n4okxEeOMQ5AKLd10lA" annotatedElement="_ML9n4YkxEeOMQ5AKLd10lA">
<body>A Classifier may only specialize Classifiers of a valid type.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_ML9n44kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>parents()->forAll(c | self.maySpecializeType(c))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_ML9n5IkxEeOMQ5AKLd10lA" name="maps_to_generalization_set" constrainedElement="_6UV2QGwJEdq7X4sGURiZYA">
<ownedComment xmi:id="_ML9n5YkxEeOMQ5AKLd10lA" annotatedElement="_ML9n5IkxEeOMQ5AKLd10lA">
<body>The Classifier that maps to a GeneralizationSet may neither be a specific nor a general Classifier in any of the Generalization relationships defined for that GeneralizationSet. In other words, a power type may not be an instance of itself nor may its instances also be its subclasses.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_ML9n5okxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>powertypeExtent->forAll( gs | &#xD;
gs.generalization->forAll( gen | &#xD;
not (gen.general = self) and not gen.general.allParents()->includes(self) and not (gen.specific = self) and not self.allParents()->includes(gen.specific) &#xD;
))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_ML9n54kxEeOMQ5AKLd10lA" name="non_final_parents" constrainedElement="_6UV2QGwJEdq7X4sGURiZYA">
<ownedComment xmi:id="_ML9n6IkxEeOMQ5AKLd10lA" annotatedElement="_ML9n54kxEeOMQ5AKLd10lA">
<body>The parents of a Classifier must be non-final.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_ML9n6YkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>parents()->forAll(not isFinalSpecialization)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_ML9n6okxEeOMQ5AKLd10lA" name="no_cycles_in_generalization" constrainedElement="_6UV2QGwJEdq7X4sGURiZYA">
<ownedComment xmi:id="_ML9n64kxEeOMQ5AKLd10lA" annotatedElement="_ML9n6okxEeOMQ5AKLd10lA">
<body>Generalization hierarchies must be directed and acyclical. A Classifier can not be both a transitively general and transitively specific Classifier of the same Classifier.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_ML9n7IkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>not allParents()->includes(self)</body>
</specification>
</ownedRule>
<generalization xmi:id="_ML-O8IkxEeOMQ5AKLd10lA" general="_ZiwkoGwLEdq7X4sGURiZYA"/>
<generalization xmi:id="_ML-O8YkxEeOMQ5AKLd10lA" general="_ynRtoGvtEdqG6fBIPwe-mw"/>
<generalization xmi:id="_ML-O8okxEeOMQ5AKLd10lA" general="_MNUSwIkxEeOMQ5AKLd10lA"/>
<generalization xmi:id="_ML-O84kxEeOMQ5AKLd10lA" general="_uCRA4La-EeCRxrN1JUGuxA"/>
<ownedAttribute xmi:id="_ML-O9IkxEeOMQ5AKLd10lA" name="attribute" type="_Jp_1oGveEdq4DLWZOhbdEA" isOrdered="true" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_MMmhFYkxEeOMQ5AKLd10lA _ML-2AIkxEeOMQ5AKLd10lA" association="_MMsAp4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_ML-O9YkxEeOMQ5AKLd10lA" annotatedElement="_ML-O9IkxEeOMQ5AKLd10lA">
<body>All of the Properties that are direct (i.e., not inherited or imported) attributes of the Classifier.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ML-O9okxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ML-O94kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_ML-O-IkxEeOMQ5AKLd10lA" name="collaborationUse" type="_MOv2IIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MMsApIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_ML-O-YkxEeOMQ5AKLd10lA" annotatedElement="_ML-O-IkxEeOMQ5AKLd10lA">
<body>The CollaborationUses owned by the Classifier.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ML-O-okxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ML-O-4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_ML-2AIkxEeOMQ5AKLd10lA" name="feature" type="_UL0VYLbAEeCRxrN1JUGuxA" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_MNQBVIkxEeOMQ5AKLd10lA" association="_MMqyi4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_ML-2AYkxEeOMQ5AKLd10lA" annotatedElement="_ML-2AIkxEeOMQ5AKLd10lA">
<body>Specifies each Feature directly defined in the classifier. Note that there may be members of the Classifier that are of the type Feature but are not included, e.g., inherited features.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ML-2AokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ML-2A4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_ML-2BIkxEeOMQ5AKLd10lA" name="general" type="_6UV2QGwJEdq7X4sGURiZYA" isDerived="true" association="_MMqyh4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_ML-2BYkxEeOMQ5AKLd10lA" annotatedElement="_ML-2BIkxEeOMQ5AKLd10lA">
<body>The generalizing Classifiers for this Classifier.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ML-2BokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ML-2B4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_ML-2CIkxEeOMQ5AKLd10lA" name="generalization" type="_C7AF4GwREdq14q0ETb1t3g" aggregation="composite" subsettedProperty="_MNcOlIkxEeOMQ5AKLd10lA _GDD2YAtAEeGcpbeCPJfCmw" association="_MMqyhokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_ML-2CYkxEeOMQ5AKLd10lA" annotatedElement="_ML-2CIkxEeOMQ5AKLd10lA">
<body>The Generalization relationships for this Classifier. These Generalizations navigate to more general Classifiers in the generalization hierarchy.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ML-2CokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ML-2C4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_ML-2DIkxEeOMQ5AKLd10lA" name="inheritedMember" type="_csVgUGvtEdqG6fBIPwe-mw" isReadOnly="true" isDerived="true" subsettedProperty="_MNQBVIkxEeOMQ5AKLd10lA" association="_MMrZlokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_ML-2DYkxEeOMQ5AKLd10lA" annotatedElement="_ML-2DIkxEeOMQ5AKLd10lA">
<body>All elements inherited by this Classifier from its general Classifiers.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ML-2DokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ML-2D4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_ML_dEIkxEeOMQ5AKLd10lA" name="isAbstract">
<ownedComment xmi:id="_ML_dEYkxEeOMQ5AKLd10lA" annotatedElement="_ML_dEIkxEeOMQ5AKLd10lA">
<body>If true, the Classifier can only be instantiated by instantiating one of its specializations. An abstract Classifier is intended to be used by other Classifiers e.g., as the target of Associations or Generalizations.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_ML_dEokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_ML_dE4kxEeOMQ5AKLd10lA" name="isFinalSpecialization">
<ownedComment xmi:id="_ML_dFIkxEeOMQ5AKLd10lA" annotatedElement="_ML_dE4kxEeOMQ5AKLd10lA">
<body>If true, the Classifier cannot be specialized.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_ML_dFYkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_ML_dFokxEeOMQ5AKLd10lA" name="ownedTemplateSignature" type="_9keOQGvdEdq4DLWZOhbdEA" aggregation="composite" redefinedProperty="_MNUSw4kxEeOMQ5AKLd10lA" subsettedProperty="_MMmhFYkxEeOMQ5AKLd10lA" association="_MMrZlYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_ML_dF4kxEeOMQ5AKLd10lA" annotatedElement="_ML_dFokxEeOMQ5AKLd10lA">
<body>The optional RedefinableTemplateSignature specifying the formal template parameters.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ML_dGIkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_ML_dGYkxEeOMQ5AKLd10lA" name="ownedUseCase" type="_MPDYIIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MNQBWIkxEeOMQ5AKLd10lA" association="_MMsAqokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_ML_dGokxEeOMQ5AKLd10lA" annotatedElement="_ML_dGYkxEeOMQ5AKLd10lA">
<body>The UseCases owned by this classifier.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ML_dG4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ML_dHIkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_ML_dHYkxEeOMQ5AKLd10lA" name="powertypeExtent" type="_MMInAIkxEeOMQ5AKLd10lA" association="_MMqyhYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_ML_dHokxEeOMQ5AKLd10lA" annotatedElement="_ML_dHYkxEeOMQ5AKLd10lA">
<body>The GeneralizationSet of which this Classifier is a power type.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ML_dH4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ML_dIIkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_ML_dIYkxEeOMQ5AKLd10lA" name="redefinedClassifier" type="_6UV2QGwJEdq7X4sGURiZYA" subsettedProperty="_MMfMVIkxEeOMQ5AKLd10lA" association="_MMsAoIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_ML_dIokxEeOMQ5AKLd10lA" annotatedElement="_ML_dIYkxEeOMQ5AKLd10lA">
<body>The Classifiers redefined by this Classifier.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ML_dI4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ML_dJIkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMAEIIkxEeOMQ5AKLd10lA" name="representation" type="_MOv2IIkxEeOMQ5AKLd10lA" subsettedProperty="_ML-O-IkxEeOMQ5AKLd10lA" association="_MMrZkYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMAEIYkxEeOMQ5AKLd10lA" annotatedElement="_MMAEIIkxEeOMQ5AKLd10lA">
<body>A CollaborationUse which indicates the Collaboration that represents this Classifier.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMAEIokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMAEI4kxEeOMQ5AKLd10lA" name="substitution" type="_ML7LoIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MMrZkIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMAEJIkxEeOMQ5AKLd10lA" annotatedElement="_MMAEI4kxEeOMQ5AKLd10lA">
<body>The Substitutions owned by this Classifier.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMAEJYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMAEJokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMAEJ4kxEeOMQ5AKLd10lA" name="templateParameter" type="_MMGx0IkxEeOMQ5AKLd10lA" redefinedProperty="_MNTErYkxEeOMQ5AKLd10lA" association="_MMqyhIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMAEKIkxEeOMQ5AKLd10lA" annotatedElement="_MMAEJ4kxEeOMQ5AKLd10lA">
<body>TheClassifierTemplateParameter that exposes this element as a formal parameter.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMAEKYkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMAEKokxEeOMQ5AKLd10lA" name="useCase" type="_MPDYIIkxEeOMQ5AKLd10lA" association="_MPD_MokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMAEK4kxEeOMQ5AKLd10lA" annotatedElement="_MMAEKokxEeOMQ5AKLd10lA">
<body>The set of UseCases for which this Classifier is the subject.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMAELIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMAELYkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedOperation xmi:id="_KjT7EGwREdq14q0ETb1t3g" name="getAllAttributes" isQuery="true">
<ownedComment xmi:id="_osV7wOwkEdqYHf-imTcTdw" annotatedElement="_KjT7EGwREdq14q0ETb1t3g">
<body>Retrieves all the attributes of this classifier, including those inherited from its parents.</body>
</ownedComment>
<ownedParameter xmi:id="_OXZQsGwREdq14q0ETb1t3g" type="_Jp_1oGveEdq4DLWZOhbdEA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q1zM0GwREdq14q0ETb1t3g"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q1zM0WwREdq14q0ETb1t3g" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_d5JuYGwREdq14q0ETb1t3g" name="getAllOperations" isQuery="true">
<ownedComment xmi:id="_yDq3gOwkEdqYHf-imTcTdw" annotatedElement="_d5JuYGwREdq14q0ETb1t3g">
<body>Retrieves all the operations of this classifier, including those inherited from its parents.</body>
</ownedComment>
<ownedParameter xmi:id="_d5JuYWwREdq14q0ETb1t3g" type="_M4X2IGveEdq4DLWZOhbdEA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_d5JuY2wREdq14q0ETb1t3g"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_d5JuYmwREdq14q0ETb1t3g" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MH_rwK6-EdqjppZik4kD8A" name="getAllUsedInterfaces">
<ownedComment xmi:id="_LQH44OwlEdqYHf-imTcTdw" annotatedElement="_MH_rwK6-EdqjppZik4kD8A">
<body>Retrieves all the interfaces on which this classifier or any of its parents has a usage dependency.</body>
</ownedComment>
<ownedParameter xmi:id="_MH_rwa6-EdqjppZik4kD8A" type="_8Ugn8GvtEdqG6fBIPwe-mw" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MH_rw66-EdqjppZik4kD8A"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MH_rwq6-EdqjppZik4kD8A" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_hw6gIHFhEdqziYxiZo0YtA" name="getOperation" isQuery="true">
<ownedComment xmi:id="_-qt3kOwkEdqYHf-imTcTdw" annotatedElement="_hw6gIHFhEdqziYxiZo0YtA">
<body>Retrieves the first operation with the specified name, parameter names, and parameter types from this classifier.</body>
</ownedComment>
<ownedParameter xmi:id="_ls4mcHFhEdqziYxiZo0YtA" type="_M4X2IGveEdq4DLWZOhbdEA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_skn6UHFhEdqziYxiZo0YtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_skn6UXFhEdqziYxiZo0YtA" value="1"/>
</ownedParameter>
<ownedParameter xmi:id="_usha8HFhEdqziYxiZo0YtA" name="name" effect="read">
<ownedComment xmi:id="_R1RdIPH-EdulR8T2OJRyFQ" annotatedElement="_usha8HFhEdqziYxiZo0YtA">
<body>The name of the operation to retrieve, or null.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UQSfgKOwEdqi_5gqUMOQtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UQSfgaOwEdqi_5gqUMOQtA" value="1"/>
</ownedParameter>
<ownedParameter xmi:id="_LgAVoKOwEdqi_5gqUMOQtA" name="parameterNames" isOrdered="true" effect="read">
<ownedComment xmi:id="_VK9mkPH-EdulR8T2OJRyFQ" annotatedElement="_LgAVoKOwEdqi_5gqUMOQtA">
<body>The parameter names of the operation to retrieve, or null.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Vz1V4KOwEdqi_5gqUMOQtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Vz1V4aOwEdqi_5gqUMOQtA" value="*"/>
</ownedParameter>
<ownedParameter xmi:id="_s8hlMKOvEdqi_5gqUMOQtA" name="parameterTypes" type="_ynRtoGvtEdqG6fBIPwe-mw" isOrdered="true" isUnique="false" effect="read">
<ownedComment xmi:id="_XUDaAPH-EdulR8T2OJRyFQ" annotatedElement="_s8hlMKOvEdqi_5gqUMOQtA">
<body>The parameter types of the operation to retrieve, or null.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_XhDssKOwEdqi_5gqUMOQtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_XhDssaOwEdqi_5gqUMOQtA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_aGT3sKOwEdqi_5gqUMOQtA" name="getOperation" isQuery="true">
<ownedComment xmi:id="_-8cgwOwkEdqYHf-imTcTdw" annotatedElement="_aGT3sKOwEdqi_5gqUMOQtA">
<body>Retrieves the first operation with the specified name, parameter names, and parameter types from this classifier, ignoring case if indicated.</body>
</ownedComment>
<ownedParameter xmi:id="_aGT3saOwEdqi_5gqUMOQtA" type="_M4X2IGveEdq4DLWZOhbdEA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aGT3s6OwEdqi_5gqUMOQtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aGT3sqOwEdqi_5gqUMOQtA" value="1"/>
</ownedParameter>
<ownedParameter xmi:id="_aGT3tKOwEdqi_5gqUMOQtA" name="name" effect="read">
<ownedComment xmi:id="_3HC1EPH_EdulR8T2OJRyFQ" annotatedElement="_aGT3tKOwEdqi_5gqUMOQtA">
<body>The name of the operation to retrieve, or null.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aGT3tqOwEdqi_5gqUMOQtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aGT3taOwEdqi_5gqUMOQtA" value="1"/>
</ownedParameter>
<ownedParameter xmi:id="_aGT3t6OwEdqi_5gqUMOQtA" name="parameterNames" isOrdered="true" effect="read">
<ownedComment xmi:id="_6FotIPH_EdulR8T2OJRyFQ" annotatedElement="_aGT3t6OwEdqi_5gqUMOQtA">
<body>The parameter names of the operation to retrieve, or null.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aGT3uaOwEdqi_5gqUMOQtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aGT3uKOwEdqi_5gqUMOQtA" value="*"/>
</ownedParameter>
<ownedParameter xmi:id="_aGT3uqOwEdqi_5gqUMOQtA" name="parameterTypes" type="_ynRtoGvtEdqG6fBIPwe-mw" isOrdered="true" isUnique="false" effect="read">
<ownedComment xmi:id="_-UGRoPH_EdulR8T2OJRyFQ" annotatedElement="_aGT3uqOwEdqi_5gqUMOQtA">
<body>The parameter types of the operation to retrieve, or null.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aGT3vKOwEdqi_5gqUMOQtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aGT3u6OwEdqi_5gqUMOQtA" value="*"/>
</ownedParameter>
<ownedParameter xmi:id="_c2vX8KOwEdqi_5gqUMOQtA" name="ignoreCase" effect="read">
<ownedComment xmi:id="_0yxsYPH_EdulR8T2OJRyFQ" annotatedElement="_c2vX8KOwEdqi_5gqUMOQtA">
<body>Whether to ignore case in String comparisons.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_XVsBYGwREdq14q0ETb1t3g" name="getOperations" isQuery="true">
<ownedComment xmi:id="_wywpQOwkEdqYHf-imTcTdw" annotatedElement="_XVsBYGwREdq14q0ETb1t3g">
<body>Retrieves the operations of this classifier.</body>
</ownedComment>
<ownedParameter xmi:id="_ZvULMGwREdq14q0ETb1t3g" type="_M4X2IGveEdq4DLWZOhbdEA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_cOT9MGwREdq14q0ETb1t3g"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_cOT9MWwREdq14q0ETb1t3g" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_8OsQwK69EdqjppZik4kD8A" name="getUsedInterfaces">
<ownedComment xmi:id="_IHZ0cOwlEdqYHf-imTcTdw" annotatedElement="_8OsQwK69EdqjppZik4kD8A">
<body>Retrieves the interfaces on which this classifier has a usage dependency.</body>
</ownedComment>
<ownedParameter xmi:id="_GDE78K6-EdqjppZik4kD8A" type="_8Ugn8GvtEdqG6fBIPwe-mw" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_J92vcK6-EdqjppZik4kD8A"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_J92vca6-EdqjppZik4kD8A" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MMAELokxEeOMQ5AKLd10lA" name="allFeatures" bodyCondition="_MMAEMIkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MMAEL4kxEeOMQ5AKLd10lA" annotatedElement="_MMAELokxEeOMQ5AKLd10lA">
<body>The query allFeatures() gives all of the Features in the namespace of the Classifier. In general, through mechanisms such as inheritance, this will be a larger set than feature.</body>
</ownedComment>
<ownedRule xmi:id="_MMAEMIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MMAELokxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMAEMYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (member->select(oclIsKindOf(Feature))->collect(oclAsType(Feature))->asSet())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MMAEMokxEeOMQ5AKLd10lA" name="result" type="_UL0VYLbAEeCRxrN1JUGuxA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMAEM4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMAENIkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MMArMIkxEeOMQ5AKLd10lA" name="allParents" bodyCondition="_MMArMokxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MMArMYkxEeOMQ5AKLd10lA" annotatedElement="_MMArMIkxEeOMQ5AKLd10lA">
<body>The query allParents() gives all of the direct and indirect ancestors of a generalized Classifier.</body>
</ownedComment>
<ownedRule xmi:id="_MMArMokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MMArMIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMArM4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (parents()->union(parents()->collect(allParents())->asSet()))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MMArNIkxEeOMQ5AKLd10lA" name="result" type="_6UV2QGwJEdq7X4sGURiZYA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMArNYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMArNokxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MMArN4kxEeOMQ5AKLd10lA" name="conformsTo" bodyCondition="_MMArOYkxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MNWH-4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMArOIkxEeOMQ5AKLd10lA" annotatedElement="_MMArN4kxEeOMQ5AKLd10lA">
<body>The query conformsTo() gives true for a Classifier that defines a type that conforms to another. This is used, for example, in the specification of signature conformance for operations.</body>
</ownedComment>
<ownedRule xmi:id="_MMArOYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MMArN4kxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMArOokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if other.oclIsKindOf(Classifier) then&#xD;
let otherClassifier : Classifier = other.oclAsType(Classifier) in&#xD;
self = otherClassifier or allParents()->includes(otherClassifier)&#xD;
else&#xD;
false&#xD;
endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MMArO4kxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_MMArPIkxEeOMQ5AKLd10lA" name="other" type="_ynRtoGvtEdqG6fBIPwe-mw"/>
</ownedOperation>
<ownedOperation xmi:id="_wKRjcLLSEeCsYvaJqFFivQ" name="general" visibility="protected" bodyCondition="_MMArPokxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MMArPYkxEeOMQ5AKLd10lA" annotatedElement="_wKRjcLLSEeCsYvaJqFFivQ">
<body>The general Classifiers are the ones referenced by the Generalization relationships.</body>
</ownedComment>
<ownedRule xmi:id="_MMArPokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_wKRjcLLSEeCsYvaJqFFivQ _ML-2BIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMArP4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (parents())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_zGh5MLLSEeCsYvaJqFFivQ" name="result" type="_6UV2QGwJEdq7X4sGURiZYA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMBSQIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMBSQYkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MMBSQokxEeOMQ5AKLd10lA" name="hasVisibilityOf" bodyCondition="_MMBSRokxEeOMQ5AKLd10lA" isQuery="true" precondition="_MMBSRIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMBSQ4kxEeOMQ5AKLd10lA" annotatedElement="_MMBSQokxEeOMQ5AKLd10lA">
<body>The query hasVisibilityOf() determines whether a NamedElement is visible in the classifier. Non-private members are visible. It is only called when the argument is something owned by a parent.</body>
</ownedComment>
<ownedRule xmi:id="_MMBSRIkxEeOMQ5AKLd10lA" name="pre" constrainedElement="_MMBSQokxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMBSRYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>allParents()->including(self)->collect(member)->includes(n)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MMBSRokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MMBSQokxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMBSR4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (n.visibility &lt;> VisibilityKind::private)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MMBSSIkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_MMBSSYkxEeOMQ5AKLd10lA" name="n" type="_csVgUGvtEdqG6fBIPwe-mw"/>
</ownedOperation>
<ownedOperation xmi:id="_MMB5UIkxEeOMQ5AKLd10lA" name="inherit" bodyCondition="_MMB5UokxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MMB5UYkxEeOMQ5AKLd10lA" annotatedElement="_MMB5UIkxEeOMQ5AKLd10lA">
<body>The query inherit() defines how to inherit a set of elements passed as its argument. It excludes redefined elements from the result.</body>
</ownedComment>
<ownedRule xmi:id="_MMB5UokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MMB5UIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMB5U4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (inhs->reject(inh |&#xD;
inh.oclIsKindOf(RedefinableElement) and&#xD;
ownedMember->select(oclIsKindOf(RedefinableElement))->&#xD;
select(redefinedElement->includes(inh.oclAsType(RedefinableElement)))&#xD;
->notEmpty()))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MMB5VIkxEeOMQ5AKLd10lA" name="result" type="_csVgUGvtEdqG6fBIPwe-mw" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMB5VYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMB5VokxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
<ownedParameter xmi:id="_MMB5V4kxEeOMQ5AKLd10lA" name="inhs" type="_csVgUGvtEdqG6fBIPwe-mw">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMB5WIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMB5WYkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MMB5WokxEeOMQ5AKLd10lA" name="inheritableMembers" bodyCondition="_MMB5XokxEeOMQ5AKLd10lA" isQuery="true" precondition="_MMB5XIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMB5W4kxEeOMQ5AKLd10lA" annotatedElement="_MMB5WokxEeOMQ5AKLd10lA">
<body>The query inheritableMembers() gives all of the members of a Classifier that may be inherited in one of its descendants, subject to whatever visibility restrictions apply.</body>
</ownedComment>
<ownedRule xmi:id="_MMB5XIkxEeOMQ5AKLd10lA" name="pre" constrainedElement="_MMB5WokxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMB5XYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>c.allParents()->includes(self)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MMB5XokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MMB5WokxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMB5X4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (member->select(m | c.hasVisibilityOf(m)))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MMB5YIkxEeOMQ5AKLd10lA" name="result" type="_csVgUGvtEdqG6fBIPwe-mw" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMB5YYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMB5YokxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
<ownedParameter xmi:id="_MMB5Y4kxEeOMQ5AKLd10lA" name="c" type="_6UV2QGwJEdq7X4sGURiZYA"/>
</ownedOperation>
<ownedOperation xmi:id="_A3QeILLTEeCsYvaJqFFivQ" name="inheritedMember" visibility="protected" bodyCondition="_MMB5ZYkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MMB5ZIkxEeOMQ5AKLd10lA" annotatedElement="_A3QeILLTEeCsYvaJqFFivQ">
<body>The inheritedMember association is derived by inheriting the inheritable members of the parents.</body>
</ownedComment>
<ownedRule xmi:id="_MMB5ZYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_A3QeILLTEeCsYvaJqFFivQ _ML-2DIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMB5ZokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (inherit(parents()->collect(inheritableMembers(self))->asSet()))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_DI37cLLTEeCsYvaJqFFivQ" name="result" type="_csVgUGvtEdqG6fBIPwe-mw" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMCgYIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMCgYYkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MMCgYokxEeOMQ5AKLd10lA" name="isTemplate" bodyCondition="_MMCgZIkxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MNUSyokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMCgY4kxEeOMQ5AKLd10lA" annotatedElement="_MMCgYokxEeOMQ5AKLd10lA">
<body>The query isTemplate() returns whether this Classifier is actually a template.</body>
</ownedComment>
<ownedRule xmi:id="_MMCgZIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MMCgYokxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMCgZYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (ownedTemplateSignature &lt;> null or general->exists(g | g.isTemplate()))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MMCgZokxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MMCgZ4kxEeOMQ5AKLd10lA" name="maySpecializeType" bodyCondition="_MMCgaYkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MMCgaIkxEeOMQ5AKLd10lA" annotatedElement="_MMCgZ4kxEeOMQ5AKLd10lA">
<body>The query maySpecializeType() determines whether this classifier may have a generalization relationship to classifiers of the specified type. By default a classifier may specialize classifiers of the same or a more general type. It is intended to be redefined by classifiers that have different specialization constraints.</body>
</ownedComment>
<ownedRule xmi:id="_MMCgaYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MMCgZ4kxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMCgaokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (self.oclIsKindOf(c.oclType()))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MMCga4kxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_MMCgbIkxEeOMQ5AKLd10lA" name="c" type="_6UV2QGwJEdq7X4sGURiZYA"/>
</ownedOperation>
<ownedOperation xmi:id="_MMDHcIkxEeOMQ5AKLd10lA" name="parents" bodyCondition="_MMDHcokxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MMDHcYkxEeOMQ5AKLd10lA" annotatedElement="_MMDHcIkxEeOMQ5AKLd10lA">
<body>The query parents() gives all of the immediate ancestors of a generalized Classifier.</body>
</ownedComment>
<ownedRule xmi:id="_MMDHcokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MMDHcIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMDHc4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (generalization.general->asSet())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MMDHdIkxEeOMQ5AKLd10lA" name="result" type="_6UV2QGwJEdq7X4sGURiZYA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMDHdYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMDHdokxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MMDHd4kxEeOMQ5AKLd10lA" name="directlyRealizedInterfaces" bodyCondition="_MMDHeYkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MMDHeIkxEeOMQ5AKLd10lA" annotatedElement="_MMDHd4kxEeOMQ5AKLd10lA">
<body>The Interfaces directly realized by this Classifier</body>
</ownedComment>
<ownedRule xmi:id="_MMDHeYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MMDHd4kxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMDHeokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = ((clientDependency->&#xD;
select(oclIsKindOf(Realization) and supplier->forAll(oclIsKindOf(Interface))))->&#xD;
collect(supplier.oclAsType(Interface))->asSet())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MMDHe4kxEeOMQ5AKLd10lA" name="result" type="_8Ugn8GvtEdqG6fBIPwe-mw" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMDHfIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMDHfYkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MMDHfokxEeOMQ5AKLd10lA" name="directlyUsedInterfaces" bodyCondition="_MMDHgIkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MMDHf4kxEeOMQ5AKLd10lA" annotatedElement="_MMDHfokxEeOMQ5AKLd10lA">
<body>The Interfaces directly used by this Classifier</body>
</ownedComment>
<ownedRule xmi:id="_MMDHgIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MMDHfokxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMDHgYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = ((supplierDependency->&#xD;
select(oclIsKindOf(Usage) and client->forAll(oclIsKindOf(Interface))))->&#xD;
collect(client.oclAsType(Interface))->asSet())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MMDHgokxEeOMQ5AKLd10lA" name="result" type="_8Ugn8GvtEdqG6fBIPwe-mw" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMDHg4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMDHhIkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MMDugIkxEeOMQ5AKLd10lA" name="allRealizedInterfaces" bodyCondition="_MMDugokxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MMDugYkxEeOMQ5AKLd10lA" annotatedElement="_MMDugIkxEeOMQ5AKLd10lA">
<body>The Interfaces realized by this Classifier and all of its generalizations</body>
</ownedComment>
<ownedRule xmi:id="_MMDugokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MMDugIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMDug4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (directlyRealizedInterfaces()->union(self.allParents()->collect(directlyRealizedInterfaces()))->asSet())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MMDuhIkxEeOMQ5AKLd10lA" name="result" type="_8Ugn8GvtEdqG6fBIPwe-mw" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMDuhYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMDuhokxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MMDuh4kxEeOMQ5AKLd10lA" name="allUsedInterfaces" bodyCondition="_MMDuiYkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MMDuiIkxEeOMQ5AKLd10lA" annotatedElement="_MMDuh4kxEeOMQ5AKLd10lA">
<body>The Interfaces used by this Classifier and all of its generalizations</body>
</ownedComment>
<ownedRule xmi:id="_MMDuiYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MMDuh4kxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMDuiokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (directlyUsedInterfaces()->union(self.allParents()->collect(directlyUsedInterfaces()))->asSet())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MMDui4kxEeOMQ5AKLd10lA" name="result" type="_8Ugn8GvtEdqG6fBIPwe-mw" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMDujIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMDujYkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MMDujokxEeOMQ5AKLd10lA" name="isSubstitutableFor" bodyCondition="_MMDuj4kxEeOMQ5AKLd10lA" isQuery="true">
<ownedRule xmi:id="_MMDuj4kxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MMDujokxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMDukIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (substitution.contract->includes(contract))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MMDukYkxEeOMQ5AKLd10lA" name="contract" type="_6UV2QGwJEdq7X4sGURiZYA"/>
<ownedParameter xmi:id="_MMDukokxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MMDuk4kxEeOMQ5AKLd10lA" name="allAttributes" bodyCondition="_MMDulYkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MMDulIkxEeOMQ5AKLd10lA" annotatedElement="_MMDuk4kxEeOMQ5AKLd10lA">
<body>The query allAttributes gives an ordered set of all owned and inherited attributes of the Classifier. All owned attributes appear before any inherited attributes, and the attributes inherited from any more specific parent Classifier appear before those of any more general parent Classifier. However, if the Classifier has multiple immediate parents, then the relative ordering of the sets of attributes from those parents is not defined.</body>
</ownedComment>
<ownedRule xmi:id="_MMDulYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MMDuk4kxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMDulokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (attribute->asSequence()->union(parents()->asSequence().allAttributes())->select(p | member->includes(p))->asOrderedSet())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MMDul4kxEeOMQ5AKLd10lA" name="result" type="_Jp_1oGveEdq4DLWZOhbdEA" isOrdered="true" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMDumIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMEVkIkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MMEVkYkxEeOMQ5AKLd10lA" name="allSlottableFeatures" bodyCondition="_MMEVk4kxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MMEVkokxEeOMQ5AKLd10lA" annotatedElement="_MMEVkYkxEeOMQ5AKLd10lA">
<body>All StructuralFeatures related to the Classifier that may have Slots, including direct attributes, inherited attributes, private attributes in generalizations, and memberEnds of Associations, but excluding redefined StructuralFeatures.</body>
</ownedComment>
<ownedRule xmi:id="_MMEVk4kxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MMEVkYkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMEVlIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (member->select(oclIsKindOf(StructuralFeature))->&#xD;
collect(oclAsType(StructuralFeature))->&#xD;
union(self.inherit(self.allParents()->collect(p | p.attribute)->asSet())->&#xD;
collect(oclAsType(StructuralFeature)))->asSet())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MMEVlYkxEeOMQ5AKLd10lA" name="result" type="_MMjdwIkxEeOMQ5AKLd10lA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMEVlokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMEVl4kxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MMGx0IkxEeOMQ5AKLd10lA" name="ClassifierTemplateParameter">
<ownedComment xmi:id="_MMGx0YkxEeOMQ5AKLd10lA" annotatedElement="_MMGx0IkxEeOMQ5AKLd10lA">
<body>A ClassifierTemplateParameter exposes a Classifier as a formal template parameter.</body>
</ownedComment>
<ownedRule xmi:id="_MMGx0okxEeOMQ5AKLd10lA" name="has_constraining_classifier" constrainedElement="_MMGx0IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMGx04kxEeOMQ5AKLd10lA" annotatedElement="_MMGx0okxEeOMQ5AKLd10lA">
<body>If allowSubstitutable is true, then there must be a constrainingClassifier.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMGx1IkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>allowSubstitutable implies constrainingClassifier->notEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MMGx1YkxEeOMQ5AKLd10lA" name="parametered_element_no_features" constrainedElement="_MMGx0IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMGx1okxEeOMQ5AKLd10lA" annotatedElement="_MMGx1YkxEeOMQ5AKLd10lA">
<body>The parameteredElement has no direct features, and if constrainedElement is empty it has no generalizations.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMGx14kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>parameteredElement.feature->isEmpty() and (constrainingClassifier->isEmpty() implies parameteredElement.allParents()->isEmpty())</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MMGx2IkxEeOMQ5AKLd10lA" name="matching_abstract" constrainedElement="_MMGx0IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMGx2YkxEeOMQ5AKLd10lA" annotatedElement="_MMGx2IkxEeOMQ5AKLd10lA">
<body>If the parameteredElement is not abstract, then the Classifier used as an argument shall not be abstract.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMGx2okxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(not parameteredElement.isAbstract) implies templateParameterSubstitution.actual->forAll(a | not a.oclAsType(Classifier).isAbstract)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MMGx24kxEeOMQ5AKLd10lA" name="actual_is_classifier" constrainedElement="_MMGx0IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMGx3IkxEeOMQ5AKLd10lA" annotatedElement="_MMGx24kxEeOMQ5AKLd10lA">
<body>The argument to a ClassifierTemplateParameter is a Classifier.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMGx3YkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body> templateParameterSubstitution.actual->forAll(a | a.oclIsKindOf(Classifier))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MMGx3okxEeOMQ5AKLd10lA" name="constraining_classifiers_constrain_args" constrainedElement="_MMGx0IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMGx34kxEeOMQ5AKLd10lA" annotatedElement="_MMGx3okxEeOMQ5AKLd10lA">
<body>If there are any constrainingClassifiers, then every argument must be the same as or a specialization of them, or if allowSubstitutable is true, then it can also be substitutable.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMGx4IkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>templateParameterSubstitution.actual->forAll( a |&#xD;
let arg : Classifier = a.oclAsType(Classifier) in&#xD;
constrainingClassifier->forAll(&#xD;
cc | &#xD;
arg = cc or arg.conformsTo(cc) or (allowSubstitutable and arg.isSubstitutableFor(cc))&#xD;
)&#xD;
)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MMGx4YkxEeOMQ5AKLd10lA" name="constraining_classifiers_constrain_parametered_element" constrainedElement="_MMGx0IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMGx4okxEeOMQ5AKLd10lA" annotatedElement="_MMGx4YkxEeOMQ5AKLd10lA">
<body>If there are any constrainingClassifiers, then the parameteredElement must be the same as or a specialization of them, or if allowSubstitutable is true, then it can also be substitutable.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMGx44kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>constrainingClassifier->forAll(&#xD;
cc | parameteredElement = cc or parameteredElement.conformsTo(cc) or (allowSubstitutable and parameteredElement.isSubstitutableFor(cc))&#xD;
)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MMGx5IkxEeOMQ5AKLd10lA" general="_KxRzgGvuEdqG6fBIPwe-mw"/>
<ownedAttribute xmi:id="_MMGx5YkxEeOMQ5AKLd10lA" name="allowSubstitutable">
<ownedComment xmi:id="_MMGx5okxEeOMQ5AKLd10lA" annotatedElement="_MMGx5YkxEeOMQ5AKLd10lA">
<body>Constrains the required relationship between an actual parameter and the parameteredElement for this formal parameter.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MMGx54kxEeOMQ5AKLd10lA" value="true"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMGx6IkxEeOMQ5AKLd10lA" name="constrainingClassifier" type="_6UV2QGwJEdq7X4sGURiZYA" association="_MMqygIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMGx6YkxEeOMQ5AKLd10lA" annotatedElement="_MMGx6IkxEeOMQ5AKLd10lA">
<body>The classifiers that constrain the argument that can be used for the parameter. If the allowSubstitutable attribute is true, then any Classifier that is compatible with this constraining Classifier can be substituted; otherwise, it must be either this Classifier or one of its specializations. If this property is empty, there are no constraints on the Classifier that can be used as an argument.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMGx6okxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMGx64kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMGx7IkxEeOMQ5AKLd10lA" name="parameteredElement" type="_6UV2QGwJEdq7X4sGURiZYA" redefinedProperty="_MNU53okxEeOMQ5AKLd10lA" association="_MMqyhIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMGx7YkxEeOMQ5AKLd10lA" annotatedElement="_MMGx7IkxEeOMQ5AKLd10lA">
<body>The Classifier exposed by this ClassifierTemplateParameter.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_UL0VYLbAEeCRxrN1JUGuxA" name="Feature" isAbstract="true">
<ownedComment xmi:id="_MMGx7okxEeOMQ5AKLd10lA" annotatedElement="_UL0VYLbAEeCRxrN1JUGuxA">
<body>A Feature declares a behavioral or structural characteristic of Classifiers.</body>
</ownedComment>
<generalization xmi:id="_MMGx74kxEeOMQ5AKLd10lA" general="_uCRA4La-EeCRxrN1JUGuxA"/>
<ownedAttribute xmi:id="_YUdlwLbAEeCRxrN1JUGuxA" name="featuringClassifier" type="_6UV2QGwJEdq7X4sGURiZYA" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_MNbAcYkxEeOMQ5AKLd10lA" association="_MMqyi4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMGx8IkxEeOMQ5AKLd10lA" annotatedElement="_YUdlwLbAEeCRxrN1JUGuxA">
<body>The Classifiers that have this Feature as a feature.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMHY4IkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bkwR0LbAEeCRxrN1JUGuxA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMHY4YkxEeOMQ5AKLd10lA" name="isStatic">
<ownedComment xmi:id="_MMHY4okxEeOMQ5AKLd10lA" annotatedElement="_MMHY4YkxEeOMQ5AKLd10lA">
<body>Specifies whether this Feature characterizes individual instances classified by the Classifier (false) or the Classifier itself (true).</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MMHY44kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_C7AF4GwREdq14q0ETb1t3g" name="Generalization">
<ownedComment xmi:id="_MMHY5IkxEeOMQ5AKLd10lA" annotatedElement="_C7AF4GwREdq14q0ETb1t3g">
<body>A Generalization is a taxonomic relationship between a more general Classifier and a more specific Classifier. Each instance of the specific Classifier is also an instance of the general Classifier. The specific Classifier inherits the features of the more general Classifier. A Generalization is owned by the specific Classifier.</body>
</ownedComment>
<generalization xmi:id="_MMHY5YkxEeOMQ5AKLd10lA" general="_JBgfoKPAEdqi_5gqUMOQtA"/>
<ownedAttribute xmi:id="_MMH_8IkxEeOMQ5AKLd10lA" name="general" type="_6UV2QGwJEdq7X4sGURiZYA" subsettedProperty="_MNB-44kxEeOMQ5AKLd10lA" association="_MMqLdYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMH_8YkxEeOMQ5AKLd10lA" annotatedElement="_MMH_8IkxEeOMQ5AKLd10lA">
<body>The general classifier in the Generalization relationship.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MMH_8okxEeOMQ5AKLd10lA" name="generalizationSet" type="_MMInAIkxEeOMQ5AKLd10lA" association="_MMqLdIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMH_84kxEeOMQ5AKLd10lA" annotatedElement="_MMH_8okxEeOMQ5AKLd10lA">
<body>Represents a set of instances of Generalization. A Generalization may appear in many GeneralizationSets.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMH_9IkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMH_9YkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMH_9okxEeOMQ5AKLd10lA" name="isSubstitutable">
<ownedComment xmi:id="_MMH_94kxEeOMQ5AKLd10lA" annotatedElement="_MMH_9okxEeOMQ5AKLd10lA">
<body>Indicates whether the specific Classifier can be used wherever the general Classifier can be used. If true, the execution traces of the specific Classifier shall be a superset of the execution traces of the general Classifier. If false, there is no such constraint on execution traces. If unset, the modeler has not stated whether there is such a constraint or not.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMH_-IkxEeOMQ5AKLd10lA"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MMH_-YkxEeOMQ5AKLd10lA" value="true"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMH_-okxEeOMQ5AKLd10lA" name="specific" type="_6UV2QGwJEdq7X4sGURiZYA" subsettedProperty="_MNB-4IkxEeOMQ5AKLd10lA _N3hRMAtAEeGcpbeCPJfCmw" association="_MMqyhokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMH_-4kxEeOMQ5AKLd10lA" annotatedElement="_MMH_-okxEeOMQ5AKLd10lA">
<body>The specializing Classifier in the Generalization relationship.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MMInAIkxEeOMQ5AKLd10lA" name="GeneralizationSet">
<ownedComment xmi:id="_MMInAYkxEeOMQ5AKLd10lA" annotatedElement="_MMInAIkxEeOMQ5AKLd10lA">
<body>A GeneralizationSet is a PackageableElement whose instances represent sets of Generalization relationships.</body>
</ownedComment>
<ownedRule xmi:id="_MMInAokxEeOMQ5AKLd10lA" name="generalization_same_classifier" constrainedElement="_MMInAIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMInA4kxEeOMQ5AKLd10lA" annotatedElement="_MMInAokxEeOMQ5AKLd10lA">
<body>Every Generalization associated with a particular GeneralizationSet must have the same general Classifier.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMInBIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>generalization->collect(general)->asSet()->size() &lt;= 1</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MMInBYkxEeOMQ5AKLd10lA" name="maps_to_generalization_set" constrainedElement="_MMInAIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMInBokxEeOMQ5AKLd10lA" annotatedElement="_MMInBYkxEeOMQ5AKLd10lA">
<body>The Classifier that maps to a GeneralizationSet may neither be a specific nor a general Classifier in any of the Generalization relationships defined for that GeneralizationSet. In other words, a power type may not be an instance of itself nor may its instances be its subclasses.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMInB4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>powertype &lt;> null implies generalization->forAll( gen | &#xD;
not (gen.general = powertype) and not gen.general.allParents()->includes(powertype) and not (gen.specific = powertype) and not powertype.allParents()->includes(gen.specific)&#xD;
)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MMInCIkxEeOMQ5AKLd10lA" general="_jKxnwGwLEdq7X4sGURiZYA"/>
<ownedAttribute xmi:id="_MMInCYkxEeOMQ5AKLd10lA" name="generalization" type="_C7AF4GwREdq14q0ETb1t3g" association="_MMqLdIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMInCokxEeOMQ5AKLd10lA" annotatedElement="_MMInCYkxEeOMQ5AKLd10lA">
<body>Designates the instances of Generalization that are members of this GeneralizationSet.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMInC4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMInDIkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMInDYkxEeOMQ5AKLd10lA" name="isCovering">
<ownedComment xmi:id="_MMInDokxEeOMQ5AKLd10lA" annotatedElement="_MMInDYkxEeOMQ5AKLd10lA">
<body>Indicates (via the associated Generalizations) whether or not the set of specific Classifiers are covering for a particular general classifier. When isCovering is true, every instance of a particular general Classifier is also an instance of at least one of its specific Classifiers for the GeneralizationSet. When isCovering is false, there are one or more instances of the particular general Classifier that are not instances of at least one of its specific Classifiers defined for the GeneralizationSet.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MMInD4kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMInEIkxEeOMQ5AKLd10lA" name="isDisjoint">
<ownedComment xmi:id="_MMInEYkxEeOMQ5AKLd10lA" annotatedElement="_MMInEIkxEeOMQ5AKLd10lA">
<body>Indicates whether or not the set of specific Classifiers in a Generalization relationship have instance in common. If isDisjoint is true, the specific Classifiers for a particular GeneralizationSet have no members in common; that is, their intersection is empty. If isDisjoint is false, the specific Classifiers in a particular GeneralizationSet have one or more members in common; that is, their intersection is not empty.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MMInEokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMInE4kxEeOMQ5AKLd10lA" name="powertype" type="_6UV2QGwJEdq7X4sGURiZYA" association="_MMqyhYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMInFIkxEeOMQ5AKLd10lA" annotatedElement="_MMInE4kxEeOMQ5AKLd10lA">
<body>Designates the Classifier that is defined as the power type for the associated GeneralizationSet, if there is one.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMInFYkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MMJ1IIkxEeOMQ5AKLd10lA" name="InstanceSpecification">
<ownedComment xmi:id="_MMJ1IYkxEeOMQ5AKLd10lA" annotatedElement="_MMJ1IIkxEeOMQ5AKLd10lA">
<body>An InstanceSpecification is a model element that represents an instance in a modeled system. An InstanceSpecification can act as a DeploymentTarget in a Deployment relationship, in the case that it represents an instance of a Node. It can also act as a DeployedArtifact, if it represents an instance of an Artifact.</body>
</ownedComment>
<ownedRule xmi:id="_MMJ1IokxEeOMQ5AKLd10lA" name="deployment_artifact" constrainedElement="_MMJ1IIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMJ1I4kxEeOMQ5AKLd10lA" annotatedElement="_MMJ1IokxEeOMQ5AKLd10lA">
<body>An InstanceSpecification can act as a DeployedArtifact if it represents an instance of an Artifact.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMJ1JIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>deploymentForArtifact->notEmpty() implies classifier->exists(oclIsKindOf(Artifact))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MMJ1JYkxEeOMQ5AKLd10lA" name="structural_feature" constrainedElement="_MMJ1IIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMJ1JokxEeOMQ5AKLd10lA" annotatedElement="_MMJ1JYkxEeOMQ5AKLd10lA">
<body>No more than one slot in an InstanceSpecification may have the same definingFeature.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMJ1J4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>classifier->forAll(c | (c.allSlottableFeatures()->forAll(f | slot->select(s | s.definingFeature = f)->size() &lt;= 1)))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MMJ1KIkxEeOMQ5AKLd10lA" name="defining_feature" constrainedElement="_MMJ1IIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMJ1KYkxEeOMQ5AKLd10lA" annotatedElement="_MMJ1KIkxEeOMQ5AKLd10lA">
<body>The definingFeature of each slot is a StructuralFeature related to a classifier of the InstanceSpecification, including direct attributes, inherited attributes, private attributes in generalizations, and memberEnds of Associations, but excluding redefined StructuralFeatures.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMJ1KokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>slot->forAll(s | classifier->exists (c | c.allSlottableFeatures()->includes (s.definingFeature)))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MMJ1K4kxEeOMQ5AKLd10lA" name="deployment_target" constrainedElement="_MMJ1IIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMJ1LIkxEeOMQ5AKLd10lA" annotatedElement="_MMJ1K4kxEeOMQ5AKLd10lA">
<body>An InstanceSpecification can act as a DeploymentTarget if it represents an instance of a Node and functions as a part in the internal structure of an encompassing Node.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMJ1LYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>deployment->notEmpty() implies classifier->exists(node | node.oclIsKindOf(Node) and Node.allInstances()->exists(n | n.part->exists(p | p.type = node)))</body>
</specification>
</ownedRule>
<generalization xmi:id="_MMJ1LokxEeOMQ5AKLd10lA" general="_PkmfgLLXEeCsYvaJqFFivQ"/>
<generalization xmi:id="_MMJ1L4kxEeOMQ5AKLd10lA" general="_jKxnwGwLEdq7X4sGURiZYA"/>
<generalization xmi:id="_MMJ1MIkxEeOMQ5AKLd10lA" general="_MNkKYIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MMJ1MYkxEeOMQ5AKLd10lA" name="classifier" type="_6UV2QGwJEdq7X4sGURiZYA" association="_MMpkbIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMJ1MokxEeOMQ5AKLd10lA" annotatedElement="_MMJ1MYkxEeOMQ5AKLd10lA">
<body>The Classifier or Classifiers of the represented instance. If multiple Classifiers are specified, the instance is classified by all of them.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMJ1M4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMJ1NIkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMJ1NYkxEeOMQ5AKLd10lA" name="slot" type="_MMi2sIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MMqLcIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMJ1NokxEeOMQ5AKLd10lA" annotatedElement="_MMJ1NYkxEeOMQ5AKLd10lA">
<body>A Slot giving the value or values of a StructuralFeature of the instance. An InstanceSpecification can have one Slot per StructuralFeature of its Classifiers, including inherited features. It is not necessary to model a Slot for every StructuralFeature, in which case the InstanceSpecification is a partial description.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMJ1N4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMJ1OIkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMJ1OYkxEeOMQ5AKLd10lA" name="specification" type="_MPO-UIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MMqLcYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMJ1OokxEeOMQ5AKLd10lA" annotatedElement="_MMJ1OYkxEeOMQ5AKLd10lA">
<body>A specification of how to compute, derive, or construct the instance.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMJ1O4kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_PyCx8GveEdq4DLWZOhbdEA" name="InstanceValue">
<ownedComment xmi:id="_MMJ1PIkxEeOMQ5AKLd10lA" annotatedElement="_PyCx8GveEdq4DLWZOhbdEA">
<body>An InstanceValue is a ValueSpecification that identifies an instance.</body>
</ownedComment>
<generalization xmi:id="_MMJ1PYkxEeOMQ5AKLd10lA" general="_MPO-UIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MMJ1PokxEeOMQ5AKLd10lA" name="instance" type="_MMJ1IIkxEeOMQ5AKLd10lA" association="_MMpkaIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMJ1P4kxEeOMQ5AKLd10lA" annotatedElement="_MMJ1PokxEeOMQ5AKLd10lA">
<body>The InstanceSpecification that represents the specified value.</body>
</ownedComment>
</ownedAttribute>
<ownedOperation xmi:id="_QUJ-oWWKEdq-f4093SZhVA" name="stringValue" visibility="protected" isQuery="true">
<ownedParameter xmi:id="_T0RPYGWKEdq-f4093SZhVA" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_M4X2IGveEdq4DLWZOhbdEA" name="Operation">
<ownedComment xmi:id="_MMKcMIkxEeOMQ5AKLd10lA" annotatedElement="_M4X2IGveEdq4DLWZOhbdEA">
<body>An Operation is a BehavioralFeature of a Classifier that specifies the name, type, parameters, and constraints for invoking an associated Behavior. An Operation may invoke both the execution of method behaviors as well as other behavioral responses. Operation specializes TemplateableElement in order to support specification of template operations and bound operations. Operation specializes ParameterableElement to specify that an operation can be exposed as a formal template parameter, and provided as an actual parameter in a binding of a template.</body>
</ownedComment>
<ownedRule xmi:id="_MMKcMYkxEeOMQ5AKLd10lA" name="at_most_one_return" constrainedElement="_M4X2IGveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MMKcMokxEeOMQ5AKLd10lA" annotatedElement="_MMKcMYkxEeOMQ5AKLd10lA">
<body>An Operation can have at most one return parameter; i.e., an owned parameter with the direction set to 'return.'</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMKcM4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>self.ownedParameter->select(direction = ParameterDirectionKind::return)->size() &lt;= 1</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MMKcNIkxEeOMQ5AKLd10lA" name="only_body_for_query" constrainedElement="_M4X2IGveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MMKcNYkxEeOMQ5AKLd10lA" annotatedElement="_MMKcNIkxEeOMQ5AKLd10lA">
<body>A bodyCondition can only be specified for a query Operation.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMKcNokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>bodyCondition &lt;> null implies isQuery</body>
</specification>
</ownedRule>
<generalization xmi:id="_MMKcN4kxEeOMQ5AKLd10lA" general="_MNUSwIkxEeOMQ5AKLd10lA"/>
<generalization xmi:id="_MMKcOIkxEeOMQ5AKLd10lA" general="_MNTEp4kxEeOMQ5AKLd10lA"/>
<generalization xmi:id="_MMLDQIkxEeOMQ5AKLd10lA" general="_rHT3YKOsEdqi_5gqUMOQtA"/>
<ownedAttribute xmi:id="_MMLDQYkxEeOMQ5AKLd10lA" name="bodyCondition" type="_MNAJsIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MNQBXIkxEeOMQ5AKLd10lA" association="_MMo9UIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMLDQokxEeOMQ5AKLd10lA" annotatedElement="_MMLDQYkxEeOMQ5AKLd10lA">
<body>An optional Constraint on the result values of an invocation of this Operation.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMLDQ4kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMLDRIkxEeOMQ5AKLd10lA" name="class" type="_00owUGvdEdq4DLWZOhbdEA" subsettedProperty="_YUdlwLbAEeCRxrN1JUGuxA _1vzv0LbIEeCRxrN1JUGuxA _zYrE4La-EeCRxrN1JUGuxA" association="_MO_Gu4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMLDRYkxEeOMQ5AKLd10lA" annotatedElement="_MMLDRIkxEeOMQ5AKLd10lA">
<body>The Class that owns this operation, if any.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMLDRokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMLDR4kxEeOMQ5AKLd10lA" name="datatype" type="__1ap4HLzEdqziYxiZo0YtA" subsettedProperty="_YUdlwLbAEeCRxrN1JUGuxA _1vzv0LbIEeCRxrN1JUGuxA _zYrE4La-EeCRxrN1JUGuxA" association="_MOZQ0okxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMLDSIkxEeOMQ5AKLd10lA" annotatedElement="_MMLDR4kxEeOMQ5AKLd10lA">
<body>The DataType that owns this Operation, if any.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMLDSYkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMLDSokxEeOMQ5AKLd10lA" name="interface" type="_8Ugn8GvtEdqG6fBIPwe-mw" subsettedProperty="_YUdlwLbAEeCRxrN1JUGuxA _1vzv0LbIEeCRxrN1JUGuxA _zYrE4La-EeCRxrN1JUGuxA" association="_MOYpyokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMLDS4kxEeOMQ5AKLd10lA" annotatedElement="_MMLDSokxEeOMQ5AKLd10lA">
<body>The Interface that owns this Operation, if any.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMLDTIkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMLqUIkxEeOMQ5AKLd10lA" name="isOrdered" isReadOnly="true" isDerived="true">
<ownedComment xmi:id="_MMLqUYkxEeOMQ5AKLd10lA" annotatedElement="_MMLqUIkxEeOMQ5AKLd10lA">
<body>Specifies whether the return parameter is ordered or not, if present. This information is derived from the return result for this Operation.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMLqUokxEeOMQ5AKLd10lA" name="isQuery">
<ownedComment xmi:id="_MMLqU4kxEeOMQ5AKLd10lA" annotatedElement="_MMLqUokxEeOMQ5AKLd10lA">
<body>Specifies whether an execution of the BehavioralFeature leaves the state of the system unchanged (isQuery=true) or whether side effects may occur (isQuery=false).</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MMLqVIkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_msu7YIRQEeOnobsWSpJONg" name="isUnique" isReadOnly="true" isDerived="true">
<ownedComment xmi:id="_MMLqVYkxEeOMQ5AKLd10lA" annotatedElement="_msu7YIRQEeOnobsWSpJONg">
<body>Specifies whether the return parameter is unique or not, if present. This information is derived from the return result for this Operation.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_yW41YIRQEeOnobsWSpJONg" value="true"/>
</ownedAttribute>
<ownedAttribute xmi:id="_2DzzEIRQEeOnobsWSpJONg" name="lower" isReadOnly="true" isDerived="true">
<ownedComment xmi:id="_MMLqVokxEeOMQ5AKLd10lA" annotatedElement="_2DzzEIRQEeOnobsWSpJONg">
<body>Specifies the lower multiplicity of the return parameter, if present. This information is derived from the return result for this Operation.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMLqV4kxEeOMQ5AKLd10lA"/>
<defaultValue xmi:type="uml:LiteralInteger" xmi:id="_2DzzEYRQEeOnobsWSpJONg" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMMRYIkxEeOMQ5AKLd10lA" name="ownedParameter" type="_KyaPMGveEdq4DLWZOhbdEA" isOrdered="true" aggregation="composite" redefinedProperty="_ML7yt4kxEeOMQ5AKLd10lA" association="_MMpkZ4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMMRYYkxEeOMQ5AKLd10lA" annotatedElement="_MMMRYIkxEeOMQ5AKLd10lA">
<body>The parameters owned by this Operation.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMMRYokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMMRY4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMMRZIkxEeOMQ5AKLd10lA" name="postcondition" type="_MNAJsIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MNQBXIkxEeOMQ5AKLd10lA" association="_MMo9U4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMMRZYkxEeOMQ5AKLd10lA" annotatedElement="_MMMRZIkxEeOMQ5AKLd10lA">
<body>An optional set of Constraints specifying the state of the system when the Operation is completed.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMMRZokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMMRZ4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMMRaIkxEeOMQ5AKLd10lA" name="precondition" type="_MNAJsIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MNQBXIkxEeOMQ5AKLd10lA" association="_MMpkZIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMMRaYkxEeOMQ5AKLd10lA" annotatedElement="_MMMRaIkxEeOMQ5AKLd10lA">
<body>An optional set of Constraints on the state of the system when the Operation is invoked.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMMRaokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMMRa4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMMRbIkxEeOMQ5AKLd10lA" name="raisedException" type="_ynRtoGvtEdqG6fBIPwe-mw" redefinedProperty="_ML7yv4kxEeOMQ5AKLd10lA" association="_MMpkYIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMMRbYkxEeOMQ5AKLd10lA" annotatedElement="_MMMRbIkxEeOMQ5AKLd10lA">
<body>The Types representing exceptions that may be raised during an invocation of this operation.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMMRbokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMMRb4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMMRcIkxEeOMQ5AKLd10lA" name="redefinedOperation" type="_M4X2IGveEdq4DLWZOhbdEA" subsettedProperty="_MMfMVIkxEeOMQ5AKLd10lA" association="_MMo9VokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMMRcYkxEeOMQ5AKLd10lA" annotatedElement="_MMMRcIkxEeOMQ5AKLd10lA">
<body>The Operations that are redefined by this Operation.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMMRcokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMMRc4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMM4cIkxEeOMQ5AKLd10lA" name="templateParameter" type="_MMQi0IkxEeOMQ5AKLd10lA" redefinedProperty="_MNTErYkxEeOMQ5AKLd10lA" association="_MMoWS4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMM4cYkxEeOMQ5AKLd10lA" annotatedElement="_MMM4cIkxEeOMQ5AKLd10lA">
<body>The OperationTemplateParameter that exposes this element as a formal parameter.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMM4cokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMM4c4kxEeOMQ5AKLd10lA" name="type" type="_ynRtoGvtEdqG6fBIPwe-mw" isReadOnly="true" isDerived="true" association="_MMoWR4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMM4dIkxEeOMQ5AKLd10lA" annotatedElement="_MMM4c4kxEeOMQ5AKLd10lA">
<body>The return type of the operation, if present. This information is derived from the return result for this Operation.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMM4dYkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_2DzzEoRQEeOnobsWSpJONg" name="upper" isReadOnly="true" isDerived="true">
<ownedComment xmi:id="_MMM4dokxEeOMQ5AKLd10lA" annotatedElement="_2DzzEoRQEeOnobsWSpJONg">
<body>The upper multiplicity of the return parameter, if present. This information is derived from the return result for this Operation.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMM4d4kxEeOMQ5AKLd10lA"/>
<defaultValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2DzzE4RQEeOnobsWSpJONg" value="1"/>
</ownedAttribute>
<ownedOperation xmi:id="_HxDswKOyEdqi_5gqUMOQtA" name="getReturnResult">
<ownedComment xmi:id="_tVUrUOwfEdqYHf-imTcTdw" annotatedElement="_HxDswKOyEdqi_5gqUMOQtA">
<body>Retrieves the (only) return result parameter for this operation.</body>
</ownedComment>
<ownedParameter xmi:id="_MiYGsKOyEdqi_5gqUMOQtA" type="_KyaPMGveEdq4DLWZOhbdEA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_OvfegKOyEdqi_5gqUMOQtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_OvfegaOyEdqi_5gqUMOQtA" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_NxuAkLGuEeCDe8CO90iVKQ" name="setIsOrdered">
<ownedParameter xmi:id="_NxuAkbGuEeCDe8CO90iVKQ" name="newIsOrdered" effect="read">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_NxuAkrGuEeCDe8CO90iVKQ" name="setIsUnique">
<ownedParameter xmi:id="_NxuAk7GuEeCDe8CO90iVKQ" name="newIsUnique" effect="read">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_JdIl8LGuEeCDe8CO90iVKQ" name="setLower">
<ownedParameter xmi:id="_JdIl8bGuEeCDe8CO90iVKQ" name="newLower" effect="read">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_kXvLMLGuEeCDe8CO90iVKQ" name="setType">
<ownedParameter xmi:id="_kXvLMbGuEeCDe8CO90iVKQ" name="newType" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read"/>
</ownedOperation>
<ownedOperation xmi:id="_JdJNALGuEeCDe8CO90iVKQ" name="setUpper">
<ownedParameter xmi:id="_JdJNAbGuEeCDe8CO90iVKQ" name="newUpper" effect="read">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MMNfgIkxEeOMQ5AKLd10lA" name="isConsistentWith" bodyCondition="_MMNfgokxEeOMQ5AKLd10lA" isQuery="true" precondition="_MMNfhIkxEeOMQ5AKLd10lA" redefinedOperation="_MMfzYIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMNfgYkxEeOMQ5AKLd10lA" annotatedElement="_MMNfgIkxEeOMQ5AKLd10lA">
<body>The query isConsistentWith() specifies, for any two Operations in a context in which redefinition is possible, whether redefinition would be consistent. A redefining operation is consistent with a redefined operation if&#xD;
it has the same number of owned parameters, and for each parameter the following holds:&#xD;
&#xD;
- Direction, ordering and uniqueness are the same.&#xD;
- The corresponding types are covariant, contravariant or invariant.&#xD;
- The multiplicities are compatible, depending on the parameter direction.</body>
</ownedComment>
<ownedRule xmi:id="_MMNfgokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MMNfgIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMNfg4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (redefiningElement.oclIsKindOf(Operation) and&#xD;
let op : Operation = redefiningElement.oclAsType(Operation) in&#xD;
self.ownedParameter->size() = op.ownedParameter->size() and&#xD;
Sequence{1..self.ownedParameter->size()}->&#xD;
forAll(i | &#xD;
let redefiningParam : Parameter = op.ownedParameter->at(i),&#xD;
redefinedParam : Parameter = self.ownedParameter->at(i) in&#xD;
(redefiningParam.isUnique = redefinedParam.isUnique) and&#xD;
(redefiningParam.isOrdered = redefinedParam. isOrdered) and&#xD;
(redefiningParam.direction = redefinedParam.direction) and&#xD;
(redefiningParam.type.conformsTo(redefinedParam.type) or&#xD;
redefinedParam.type.conformsTo(redefiningParam.type)) and&#xD;
(redefiningParam.direction = ParameterDirectionKind::inout implies&#xD;
(redefinedParam.compatibleWith(redefiningParam) and&#xD;
redefiningParam.compatibleWith(redefinedParam))) and&#xD;
(redefiningParam.direction = ParameterDirectionKind::_'in' implies&#xD;
redefinedParam.compatibleWith(redefiningParam)) and&#xD;
((redefiningParam.direction = ParameterDirectionKind::out or&#xD;
redefiningParam.direction = ParameterDirectionKind::return) implies&#xD;
redefiningParam.compatibleWith(redefinedParam))&#xD;
))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MMNfhIkxEeOMQ5AKLd10lA" name="pre" constrainedElement="_MMNfgIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMNfhYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>redefiningElement.isRedefinitionContextValid(self)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MMNfhokxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_MMNfh4kxEeOMQ5AKLd10lA" name="redefiningElement" type="_uCRA4La-EeCRxrN1JUGuxA"/>
</ownedOperation>
<ownedOperation xmi:id="_MMNfiIkxEeOMQ5AKLd10lA" name="isOrdered" bodyCondition="_MMNfiokxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MMNfiYkxEeOMQ5AKLd10lA" annotatedElement="_MMNfiIkxEeOMQ5AKLd10lA">
<body>If this operation has a return parameter, isOrdered equals the value of isOrdered for that parameter. Otherwise isOrdered is false.</body>
</ownedComment>
<ownedRule xmi:id="_MMNfiokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MMNfiIkxEeOMQ5AKLd10lA _MMLqUIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMNfi4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if returnResult()->notEmpty() then returnResult()-> exists(isOrdered) else false endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MMNfjIkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MMNfjYkxEeOMQ5AKLd10lA" name="isUnique" bodyCondition="_MMNfj4kxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MMNfjokxEeOMQ5AKLd10lA" annotatedElement="_MMNfjYkxEeOMQ5AKLd10lA">
<body>If this operation has a return parameter, isUnique equals the value of isUnique for that parameter. Otherwise isUnique is true.</body>
</ownedComment>
<ownedRule xmi:id="_MMNfj4kxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MMNfjYkxEeOMQ5AKLd10lA _msu7YIRQEeOnobsWSpJONg">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMNfkIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if returnResult()->notEmpty() then returnResult()->exists(isUnique) else true endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MMNfkYkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_ho5pgFYLEdqrn7iZ0eqieg" name="lower" visibility="protected" bodyCondition="_MMOGkIkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MMNfkokxEeOMQ5AKLd10lA" annotatedElement="_ho5pgFYLEdqrn7iZ0eqieg">
<body>If this operation has a return parameter, lower equals the value of lower for that parameter. Otherwise lower has no value.</body>
</ownedComment>
<ownedRule xmi:id="_MMOGkIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_ho5pgFYLEdqrn7iZ0eqieg _2DzzEIRQEeOnobsWSpJONg">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMOGkYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if returnResult()->notEmpty() then returnResult()->any(true).lower else null endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_jukVgFYLEdqrn7iZ0eqieg" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MMOGkokxEeOMQ5AKLd10lA" name="returnResult" bodyCondition="_MMOGlIkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MMOGk4kxEeOMQ5AKLd10lA" annotatedElement="_MMOGkokxEeOMQ5AKLd10lA">
<body>The query returnResult() returns the set containing the return parameter of the Operation if one exists, otherwise, it returns an empty set</body>
</ownedComment>
<ownedRule xmi:id="_MMOGlIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MMOGkokxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMOGlYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (ownedParameter->select (direction = ParameterDirectionKind::return)->asSet())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MMOGlokxEeOMQ5AKLd10lA" name="result" type="_KyaPMGveEdq4DLWZOhbdEA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMOGl4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMOGmIkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_CytvwLKHEeCwDd6B2NQzWA" name="type" visibility="protected" bodyCondition="_MMOtoIkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MMOGmYkxEeOMQ5AKLd10lA" annotatedElement="_CytvwLKHEeCwDd6B2NQzWA">
<body>If this operation has a return parameter, type equals the value of type for that parameter. Otherwise type has no value.</body>
</ownedComment>
<ownedRule xmi:id="_MMOtoIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_CytvwLKHEeCwDd6B2NQzWA _MMM4c4kxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMOtoYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if returnResult()->notEmpty() then returnResult()->any(true).type else null endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_QkL7kLKHEeCwDd6B2NQzWA" name="result" type="_ynRtoGvtEdqG6fBIPwe-mw" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="_ljsEEFYLEdqrn7iZ0eqieg" name="upper" visibility="protected" bodyCondition="_MMOto4kxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MMOtookxEeOMQ5AKLd10lA" annotatedElement="_ljsEEFYLEdqrn7iZ0eqieg">
<body>If this operation has a return parameter, upper equals the value of upper for that parameter. Otherwise upper has no value.</body>
</ownedComment>
<ownedRule xmi:id="_MMOto4kxEeOMQ5AKLd10lA" name="spec" constrainedElement="_ljsEEFYLEdqrn7iZ0eqieg _2DzzEoRQEeOnobsWSpJONg">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMOtpIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if returnResult()->notEmpty() then returnResult()->any(true).upper else null endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_pAh-YFYLEdqrn7iZ0eqieg" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MMQi0IkxEeOMQ5AKLd10lA" name="OperationTemplateParameter">
<ownedComment xmi:id="_MMQi0YkxEeOMQ5AKLd10lA" annotatedElement="_MMQi0IkxEeOMQ5AKLd10lA">
<body>An OperationTemplateParameter exposes an Operation as a formal parameter for a template.</body>
</ownedComment>
<ownedRule xmi:id="_MMQi0okxEeOMQ5AKLd10lA" name="match_default_signature" constrainedElement="_MMQi0IkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMQi04kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMQi1IkxEeOMQ5AKLd10lA" annotatedElement="_MMQi04kxEeOMQ5AKLd10lA">
<body>A default for an OperationTemplateParameter must be an Operation with the same Parameter types, directions and multiplicities as the exposed Operation.</body>
</ownedComment>
<language>OCL</language>
<body>default->notEmpty() implies (default.oclIsKindOf(Operation) and (let defaultOp : Operation = default.oclAsType(Operation) in &#xD;
defaultOp.ownedParameter->size() = parameteredElement.ownedParameter->size() and&#xD;
Sequence{1.. defaultOp.ownedParameter->size()}->forAll( ix | &#xD;
let p1: Parameter = defaultOp.ownedParameter->at(ix), p2 : Parameter = parameteredElement.ownedParameter->at(ix) in&#xD;
p1.type = p2.type and p1.upper = p2.upper and p1.lower = p2.lower and p1.direction = p2.direction and p1.isOrdered = p2.isOrdered and p1.isUnique = p2.isUnique)))</body>
</specification>
</ownedRule>
<generalization xmi:id="_MMQi1YkxEeOMQ5AKLd10lA" general="_KxRzgGvuEdqG6fBIPwe-mw"/>
<ownedAttribute xmi:id="_MMQi1okxEeOMQ5AKLd10lA" name="parameteredElement" type="_M4X2IGveEdq4DLWZOhbdEA" redefinedProperty="_MNU53okxEeOMQ5AKLd10lA" association="_MMoWS4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMQi14kxEeOMQ5AKLd10lA" annotatedElement="_MMQi1okxEeOMQ5AKLd10lA">
<body>The Operation exposed by this OperationTemplateParameter.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_KyaPMGveEdq4DLWZOhbdEA" name="Parameter">
<ownedComment xmi:id="_MMQi2IkxEeOMQ5AKLd10lA" annotatedElement="_KyaPMGveEdq4DLWZOhbdEA">
<body>A Parameter is a specification of an argument used to pass information into or out of an invocation of a BehavioralFeature. Parameters can be treated as ConnectableElements within Collaborations.</body>
</ownedComment>
<ownedRule xmi:id="_MMRJ4IkxEeOMQ5AKLd10lA" name="in_and_out" constrainedElement="_KyaPMGveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MMRJ4YkxEeOMQ5AKLd10lA" annotatedElement="_MMRJ4IkxEeOMQ5AKLd10lA">
<body>Only in and inout Parameters may have a delete effect. Only out, inout, and return Parameters may have a create effect.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMRJ4okxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(effect = ParameterEffectKind::delete implies (direction = ParameterDirectionKind::_'in' or direction = ParameterDirectionKind::inout))&#xD;
and&#xD;
(effect = ParameterEffectKind::create implies (direction = ParameterDirectionKind::out or direction = ParameterDirectionKind::inout or direction = ParameterDirectionKind::return))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MMRJ44kxEeOMQ5AKLd10lA" name="not_exception" constrainedElement="_KyaPMGveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MMRJ5IkxEeOMQ5AKLd10lA" annotatedElement="_MMRJ44kxEeOMQ5AKLd10lA">
<body>An input Parameter cannot be an exception.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMRJ5YkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>isException implies (direction &lt;> ParameterDirectionKind::_'in' and direction &lt;> ParameterDirectionKind::inout)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MMRJ5okxEeOMQ5AKLd10lA" name="connector_end" constrainedElement="_KyaPMGveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MMRJ54kxEeOMQ5AKLd10lA" annotatedElement="_MMRJ5okxEeOMQ5AKLd10lA">
<body>A Parameter may only be associated with a Connector end within the context of a Collaboration.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMRJ6IkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>end->notEmpty() implies collaboration->notEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MMRw8IkxEeOMQ5AKLd10lA" name="reentrant_behaviors" constrainedElement="_KyaPMGveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MMRw8YkxEeOMQ5AKLd10lA" annotatedElement="_MMRw8IkxEeOMQ5AKLd10lA">
<body>Reentrant behaviors cannot have stream Parameters.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMRw8okxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(isStream and behavior &lt;> null) implies not behavior.isReentrant</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MMRw84kxEeOMQ5AKLd10lA" name="stream_and_exception" constrainedElement="_KyaPMGveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MMRw9IkxEeOMQ5AKLd10lA" annotatedElement="_MMRw84kxEeOMQ5AKLd10lA">
<body>A Parameter cannot be a stream and exception at the same time.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMRw9YkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>not (isException and isStream)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MMRw9okxEeOMQ5AKLd10lA" name="object_effect" constrainedElement="_KyaPMGveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MMRw94kxEeOMQ5AKLd10lA" annotatedElement="_MMRw9okxEeOMQ5AKLd10lA">
<body>Parameters typed by DataTypes cannot have an effect.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMRw-IkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(type.oclIsKindOf(DataType)) implies (effect = null)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MMRw-YkxEeOMQ5AKLd10lA" general="_Gjgl0GveEdq4DLWZOhbdEA"/>
<generalization xmi:id="_MMRw-okxEeOMQ5AKLd10lA" general="_0dB44PnhEdunWsS3se92JQ"/>
<ownedAttribute xmi:id="_ZSw9sLG1EeCDe8CO90iVKQ" name="default" isDerived="true">
<ownedComment xmi:id="_MMSYAIkxEeOMQ5AKLd10lA" annotatedElement="_ZSw9sLG1EeCDe8CO90iVKQ">
<body>A String that represents a value to be used when no argument is supplied for the Parameter.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMSYAYkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMSYAokxEeOMQ5AKLd10lA" name="defaultValue" type="_MPO-UIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MMoWRIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMSYA4kxEeOMQ5AKLd10lA" annotatedElement="_MMSYAokxEeOMQ5AKLd10lA">
<body>Specifies a ValueSpecification that represents a value to be used when no argument is supplied for the Parameter.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMSYBIkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMS_EIkxEeOMQ5AKLd10lA" name="direction" type="_MMkr4IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMS_EYkxEeOMQ5AKLd10lA" annotatedElement="_MMS_EIkxEeOMQ5AKLd10lA">
<body>Indicates whether a parameter is being sent into or out of a behavioral element.</body>
</ownedComment>
<defaultValue xmi:type="uml:InstanceValue" xmi:id="_MMS_EokxEeOMQ5AKLd10lA" type="_MMkr4IkxEeOMQ5AKLd10lA" instance="_MMkr4okxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_rkJDULG1EeCDe8CO90iVKQ" name="effect" type="_oNLHgLG1EeCDe8CO90iVKQ">
<ownedComment xmi:id="_MMS_E4kxEeOMQ5AKLd10lA" annotatedElement="_rkJDULG1EeCDe8CO90iVKQ">
<body>Specifies the effect that executions of the owner of the Parameter have on objects passed in or out of the parameter.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMS_FIkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMTmIIkxEeOMQ5AKLd10lA" name="isException">
<ownedComment xmi:id="_MMTmIYkxEeOMQ5AKLd10lA" annotatedElement="_MMTmIIkxEeOMQ5AKLd10lA">
<body>Tells whether an output parameter may emit a value to the exclusion of the other outputs.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MMTmIokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMTmI4kxEeOMQ5AKLd10lA" name="isStream">
<ownedComment xmi:id="_MMTmJIkxEeOMQ5AKLd10lA" annotatedElement="_MMTmI4kxEeOMQ5AKLd10lA">
<body>Tells whether an input parameter may accept values while its behavior is executing, or whether an output parameter may post values while the behavior is executing.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MMTmJYkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_lHJ7gLbIEeCRxrN1JUGuxA" name="operation" type="_M4X2IGveEdq4DLWZOhbdEA" subsettedProperty="_MMsnsIkxEeOMQ5AKLd10lA _1vzv0LbIEeCRxrN1JUGuxA" association="_MMpkZ4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMTmJokxEeOMQ5AKLd10lA" annotatedElement="_lHJ7gLbIEeCRxrN1JUGuxA">
<body>The Operation owning this parameter.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMTmJ4kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMTmKIkxEeOMQ5AKLd10lA" name="parameterSet" type="_MMWCYIkxEeOMQ5AKLd10lA" association="_MMoWQ4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMTmKYkxEeOMQ5AKLd10lA" annotatedElement="_MMTmKIkxEeOMQ5AKLd10lA">
<body>The ParameterSets containing the parameter. See ParameterSet.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMTmKokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMTmK4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedOperation xmi:id="_QKbgcWXCEdqEJs8umHJc9g" name="isSetDefault" visibility="protected" isQuery="true">
<ownedParameter xmi:id="_TKzhMGXCEdqEJs8umHJc9g" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_kKuPgK6_EdqjppZik4kD8A" name="setBooleanDefaultValue">
<ownedComment xmi:id="_TCrd8OwfEdqYHf-imTcTdw" annotatedElement="_kKuPgK6_EdqjppZik4kD8A">
<body>Sets the default value for this parameter to the specified Boolean value.</body>
</ownedComment>
<ownedParameter xmi:id="_kKuPga6_EdqjppZik4kD8A" name="value" effect="read">
<ownedComment xmi:id="_wjzYQPIEEdulR8T2OJRyFQ" annotatedElement="_kKuPga6_EdqjppZik4kD8A">
<body>The new default value.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_5FAasFYjEdqB6vblk3tuMA" name="setDefault" visibility="protected">
<ownedParameter xmi:id="_7D0QwFYjEdqB6vblk3tuMA" name="newDefault" visibility="protected" effect="read">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_kKuPgq6_EdqjppZik4kD8A" name="setIntegerDefaultValue">
<ownedComment xmi:id="_UB3DAOwfEdqYHf-imTcTdw" annotatedElement="_kKuPgq6_EdqjppZik4kD8A">
<body>Sets the default value for this parameter to the specified integer value.</body>
</ownedComment>
<ownedParameter xmi:id="_kKuPg66_EdqjppZik4kD8A" name="value" effect="read">
<ownedComment xmi:id="_zyVJwPIEEdulR8T2OJRyFQ" annotatedElement="_kKuPg66_EdqjppZik4kD8A">
<body>The new default value.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_kK3ZdK6_EdqjppZik4kD8A" name="setNullDefaultValue">
<ownedComment xmi:id="_c7hyYOwfEdqYHf-imTcTdw" annotatedElement="_kK3ZdK6_EdqjppZik4kD8A">
<body>Sets the default value for this parameter to the null value.</body>
</ownedComment>
</ownedOperation>
<ownedOperation xmi:id="_kK3ZcK6_EdqjppZik4kD8A" name="setRealDefaultValue">
<ownedComment xmi:id="_Z2PccOwfEdqYHf-imTcTdw" annotatedElement="_kK3ZcK6_EdqjppZik4kD8A">
<body>Sets the default value for this parameter to the specified real value.</body>
</ownedComment>
<ownedParameter xmi:id="_kK3Zca6_EdqjppZik4kD8A" name="value" effect="read">
<ownedComment xmi:id="_0mWAoPIEEdulR8T2OJRyFQ" annotatedElement="_kK3Zca6_EdqjppZik4kD8A">
<body>The new default value.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_cr04cK3JEeCff5DsMzqH0w" name="setStringDefaultValue">
<ownedComment xmi:id="_cr04ca3JEeCff5DsMzqH0w" annotatedElement="_cr04cK3JEeCff5DsMzqH0w">
<body>Sets the default value for this parameter to the specified string value.</body>
</ownedComment>
<ownedParameter xmi:id="_cr04cq3JEeCff5DsMzqH0w" name="value" effect="read">
<ownedComment xmi:id="_cr04c63JEeCff5DsMzqH0w" annotatedElement="_cr04cq3JEeCff5DsMzqH0w">
<body>The new default value.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_kK3Zcq6_EdqjppZik4kD8A" name="setUnlimitedNaturalDefaultValue">
<ownedComment xmi:id="_asyC4OwfEdqYHf-imTcTdw" annotatedElement="_kK3Zcq6_EdqjppZik4kD8A">
<body>Sets the default value for this parameter to the specified unlimited natural value.</body>
</ownedComment>
<ownedParameter xmi:id="_kK3Zc66_EdqjppZik4kD8A" name="value" effect="read">
<ownedComment xmi:id="_1RG04PIEEdulR8T2OJRyFQ" annotatedElement="_kK3Zc66_EdqjppZik4kD8A">
<body>The new default value.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_VQnXIGXCEdqEJs8umHJc9g" name="unsetDefault" visibility="protected"/>
<ownedOperation xmi:id="_7UJKkFYJEdqrn7iZ0eqieg" name="default" visibility="protected" bodyCondition="_MMUNMYkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MMUNMIkxEeOMQ5AKLd10lA" annotatedElement="_7UJKkFYJEdqrn7iZ0eqieg">
<body>Derivation for Parameter::/default</body>
</ownedComment>
<ownedRule xmi:id="_MMUNMYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_7UJKkFYJEdqrn7iZ0eqieg _ZSw9sLG1EeCDe8CO90iVKQ">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMUNMokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if self.type = String then defaultValue.stringValue() else null endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_-PwAEFYJEdqrn7iZ0eqieg" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMUNM4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4VLgQVYjEdqB6vblk3tuMA" value="1"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MMWCYIkxEeOMQ5AKLd10lA" name="ParameterSet">
<ownedComment xmi:id="_MMWCYYkxEeOMQ5AKLd10lA" annotatedElement="_MMWCYIkxEeOMQ5AKLd10lA">
<body>A ParameterSet designates alternative sets of inputs or outputs that a Behavior may use.</body>
</ownedComment>
<ownedRule xmi:id="_MMWCYokxEeOMQ5AKLd10lA" name="same_parameterized_entity" constrainedElement="_MMWCYIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMWCY4kxEeOMQ5AKLd10lA" annotatedElement="_MMWCYokxEeOMQ5AKLd10lA">
<body>The Parameters in a ParameterSet must all be inputs or all be outputs of the same parameterized entity, and the ParameterSet is owned by that entity.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMWCZIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>parameter->forAll(p1, p2 | self.owner = p1.owner and self.owner = p2.owner and p1.direction = p2.direction)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MMWCZYkxEeOMQ5AKLd10lA" name="input" constrainedElement="_MMWCYIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMWCZokxEeOMQ5AKLd10lA" annotatedElement="_MMWCZYkxEeOMQ5AKLd10lA">
<body>If a parameterized entity has input Parameters that are in a ParameterSet, then any inputs that are not in a ParameterSet must be streaming. Same for output Parameters.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMWCZ4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>((parameter->exists(direction = ParameterDirectionKind::_'in')) implies &#xD;
behavioralFeature.ownedParameter->select(p | p.direction = ParameterDirectionKind::_'in' and p.parameterSet->isEmpty())->forAll(isStream))&#xD;
and&#xD;
((parameter->exists(direction = ParameterDirectionKind::out)) implies &#xD;
behavioralFeature.ownedParameter->select(p | p.direction = ParameterDirectionKind::out and p.parameterSet->isEmpty())->forAll(isStream))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MMWCaIkxEeOMQ5AKLd10lA" name="two_parameter_sets" constrainedElement="_MMWCYIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMWCaYkxEeOMQ5AKLd10lA" annotatedElement="_MMWCaIkxEeOMQ5AKLd10lA">
<body>Two ParameterSets cannot have exactly the same set of Parameters.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMWCaokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>parameter->forAll(parameterSet->forAll(s1, s2 | s1->size() = s2->size() implies s1.parameter->exists(p | not s2.parameter->includes(p))))</body>
</specification>
</ownedRule>
<generalization xmi:id="_MMWCa4kxEeOMQ5AKLd10lA" general="_csVgUGvtEdqG6fBIPwe-mw"/>
<ownedAttribute xmi:id="_MMWCbIkxEeOMQ5AKLd10lA" name="condition" type="_MNAJsIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MMoWQIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMWCbYkxEeOMQ5AKLd10lA" annotatedElement="_MMWCbIkxEeOMQ5AKLd10lA">
<body>A constraint that should be satisfied for the owner of the Parameters in an input ParameterSet to start execution using the values provided for those Parameters, or the owner of the Parameters in an output ParameterSet to end execution providing the values for those Parameters, if all preconditions and conditions on input ParameterSets were satisfied.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMWCbokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMWCb4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMWCcIkxEeOMQ5AKLd10lA" name="parameter" type="_KyaPMGveEdq4DLWZOhbdEA" association="_MMoWQ4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMWCcYkxEeOMQ5AKLd10lA" annotatedElement="_MMWCcIkxEeOMQ5AKLd10lA">
<body>Parameters in the ParameterSet.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMWCcokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_Jp_1oGveEdq4DLWZOhbdEA" name="Property">
<ownedComment xmi:id="_MMWpcIkxEeOMQ5AKLd10lA" annotatedElement="_Jp_1oGveEdq4DLWZOhbdEA">
<body>A Property is a StructuralFeature. A Property related by ownedAttribute to a Classifier (other than an association) represents an attribute and might also represent an association end. It relates an instance of the Classifier to a value or set of values of the type of the attribute. A Property related by memberEnd to an Association represents an end of the Association. The type of the Property is the type of the end of the Association. A Property has the capability of being a DeploymentTarget in a Deployment relationship. This enables modeling the deployment to hierarchical nodes that have Properties functioning as internal parts. Property specializes ParameterableElement to specify that a Property can be exposed as a formal template parameter, and provided as an actual parameter in a binding of a template.</body>
</ownedComment>
<ownedRule xmi:id="_MMWpcYkxEeOMQ5AKLd10lA" name="subsetting_context_conforms" constrainedElement="_Jp_1oGveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MMWpcokxEeOMQ5AKLd10lA" annotatedElement="_MMWpcYkxEeOMQ5AKLd10lA">
<body>Subsetting may only occur when the context of the subsetting property conforms to the context of the subsetted property.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMWpc4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>subsettedProperty->notEmpty() implies
(subsettingContext()->notEmpty() and subsettingContext()->forAll (sc |
subsettedProperty->forAll(sp |
sp.subsettingContext()->exists(c | sc.conformsTo(c)))))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MMWpdIkxEeOMQ5AKLd10lA" name="derived_union_is_read_only" constrainedElement="_Jp_1oGveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MMWpdYkxEeOMQ5AKLd10lA" annotatedElement="_MMWpdIkxEeOMQ5AKLd10lA">
<body>A derived union is read only.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMWpdokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>isDerivedUnion implies isReadOnly</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MMWpd4kxEeOMQ5AKLd10lA" name="multiplicity_of_composite" constrainedElement="_Jp_1oGveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MMWpeIkxEeOMQ5AKLd10lA" annotatedElement="_MMWpd4kxEeOMQ5AKLd10lA">
<body>A multiplicity on the composing end of a composite aggregation must not have an upper bound greater than 1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMWpeYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>isComposite and association &lt;> null implies opposite.upperBound() &lt;= 1</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MMXQgIkxEeOMQ5AKLd10lA" name="redefined_property_inherited" constrainedElement="_Jp_1oGveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MMXQgYkxEeOMQ5AKLd10lA" annotatedElement="_MMXQgIkxEeOMQ5AKLd10lA">
<body>A redefined Property must be inherited from a more general Classifier.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMXQgokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(redefinedProperty->notEmpty()) implies&#xD;
(redefinitionContext->notEmpty() and&#xD;
redefinedProperty->forAll(rp|&#xD;
((redefinitionContext->collect(fc|&#xD;
fc.allParents()))->asSet())->collect(c| c.allFeatures())->asSet()->includes(rp)))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MMXQg4kxEeOMQ5AKLd10lA" name="subsetting_rules" constrainedElement="_Jp_1oGveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MMXQhIkxEeOMQ5AKLd10lA" annotatedElement="_MMXQg4kxEeOMQ5AKLd10lA">
<body>A subsetting Property may strengthen the type of the subsetted Property, and its upper bound may be less.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMXQhYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>subsettedProperty->forAll(sp |
self.type.conformsTo(sp.type) and
((self.upperBound()->notEmpty() and sp.upperBound()->notEmpty()) implies
self.upperBound() &lt;= sp.upperBound() ))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MMXQhokxEeOMQ5AKLd10lA" name="binding_to_attribute" constrainedElement="_Jp_1oGveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MMXQh4kxEeOMQ5AKLd10lA" annotatedElement="_MMXQhokxEeOMQ5AKLd10lA">
<body>A binding of a PropertyTemplateParameter representing an attribute must be to an attribute.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMXQiIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(self.isAttribute()&#xD;
and (templateParameterSubstitution->notEmpty())&#xD;
implies (templateParameterSubstitution->forAll(ts |&#xD;
ts.formal.oclIsKindOf(Property)&#xD;
and ts.formal.oclAsType(Property).isAttribute())))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MMXQiYkxEeOMQ5AKLd10lA" name="derived_union_is_derived" constrainedElement="_Jp_1oGveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MMXQiokxEeOMQ5AKLd10lA" annotatedElement="_MMXQiYkxEeOMQ5AKLd10lA">
<body>A derived union is derived.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMXQi4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>isDerivedUnion implies isDerived</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MMXQjIkxEeOMQ5AKLd10lA" name="deployment_target" constrainedElement="_Jp_1oGveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MMXQjYkxEeOMQ5AKLd10lA" annotatedElement="_MMXQjIkxEeOMQ5AKLd10lA">
<body>A Property can be a DeploymentTarget if it is a kind of Node and functions as a part in the internal structure of an encompassing Node.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMXQjokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>deployment->notEmpty() implies owner.oclIsKindOf(Node) and Node.allInstances()->exists(n | n.part->exists(p | p = self))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MMX3kIkxEeOMQ5AKLd10lA" name="subsetted_property_names" constrainedElement="_Jp_1oGveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MMX3kYkxEeOMQ5AKLd10lA" annotatedElement="_MMX3kIkxEeOMQ5AKLd10lA">
<body>A Property may not subset a Property with the same name.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMX3kokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>subsettedProperty->forAll(sp | sp.name &lt;> name)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MMX3k4kxEeOMQ5AKLd10lA" name="type_of_opposite_end" constrainedElement="_Jp_1oGveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MMX3lIkxEeOMQ5AKLd10lA" annotatedElement="_MMX3k4kxEeOMQ5AKLd10lA">
<body>If a Property is a classifier-owned end of a binary Association, its owner must be the type of the opposite end.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMX3lYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(opposite->notEmpty() and owningAssociation->isEmpty()) implies classifier = opposite.type</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MMX3lokxEeOMQ5AKLd10lA" name="qualified_is_association_end" constrainedElement="_Jp_1oGveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MMX3l4kxEeOMQ5AKLd10lA" annotatedElement="_MMX3lokxEeOMQ5AKLd10lA">
<body>All qualified Properties must be Association ends</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMX3mIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>qualifier->notEmpty() implies association->notEmpty()</body>
</specification>
</ownedRule>
<generalization xmi:id="_MMX3mYkxEeOMQ5AKLd10lA" general="_0dB44PnhEdunWsS3se92JQ"/>
<generalization xmi:id="_MMX3mokxEeOMQ5AKLd10lA" general="_PkmfgLLXEeCsYvaJqFFivQ"/>
<generalization xmi:id="_MMYeoIkxEeOMQ5AKLd10lA" general="_MMjdwIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_L_JWELG2EeCDe8CO90iVKQ" name="default" visibility="protected" isDerived="true">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_L_JWEbG2EeCDe8CO90iVKQ"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMYeoYkxEeOMQ5AKLd10lA" name="aggregation" type="_B3q9cGwNEdq7X4sGURiZYA">
<ownedComment xmi:id="_MMYeookxEeOMQ5AKLd10lA" annotatedElement="_MMYeoYkxEeOMQ5AKLd10lA">
<body>Specifies the kind of aggregation that applies to the Property.</body>
</ownedComment>
<defaultValue xmi:type="uml:InstanceValue" xmi:id="_MMYeo4kxEeOMQ5AKLd10lA" type="_B3q9cGwNEdq7X4sGURiZYA" instance="_MMjdyYkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMYepIkxEeOMQ5AKLd10lA" name="association" type="_AwvxoGwNEdq7X4sGURiZYA" subsettedProperty="_MNbAcYkxEeOMQ5AKLd10lA" association="_MO_tyIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMYepYkxEeOMQ5AKLd10lA" annotatedElement="_MMYepIkxEeOMQ5AKLd10lA">
<body>The Association of which this Property is a member, if any.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMYepokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMYep4kxEeOMQ5AKLd10lA" name="associationEnd" type="_Jp_1oGveEdq4DLWZOhbdEA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MMnIIIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMYeqIkxEeOMQ5AKLd10lA" annotatedElement="_MMYep4kxEeOMQ5AKLd10lA">
<body>Designates the optional association end that owns a qualifier attribute.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMYeqYkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_Ef_yMLa_EeCRxrN1JUGuxA" name="class" type="_00owUGvdEdq4DLWZOhbdEA" subsettedProperty="_MMsAqIkxEeOMQ5AKLd10lA _MO8DaIkxEeOMQ5AKLd10lA _1vzv0LbIEeCRxrN1JUGuxA _YUdlwLbAEeCRxrN1JUGuxA _zYrE4La-EeCRxrN1JUGuxA" association="_MO_twYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMYeqokxEeOMQ5AKLd10lA" annotatedElement="_Ef_yMLa_EeCRxrN1JUGuxA">
<body>The Class that owns this Property, if any.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMYeq4kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_06bWELa_EeCRxrN1JUGuxA" name="datatype" type="__1ap4HLzEdqziYxiZo0YtA" subsettedProperty="_MMsAqIkxEeOMQ5AKLd10lA _1vzv0LbIEeCRxrN1JUGuxA _YUdlwLbAEeCRxrN1JUGuxA _zYrE4La-EeCRxrN1JUGuxA" association="_MOZQ0YkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMZFsIkxEeOMQ5AKLd10lA" annotatedElement="_06bWELa_EeCRxrN1JUGuxA">
<body>The DataType that owns this Property, if any.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMZFsYkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMZFsokxEeOMQ5AKLd10lA" name="defaultValue" type="_MPO-UIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MMnvMIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMZFs4kxEeOMQ5AKLd10lA" annotatedElement="_MMZFsokxEeOMQ5AKLd10lA">
<body>A ValueSpecification that is evaluated to give a default value for the Property when an instance of the owning Classifier is instantiated.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMZFtIkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_68HLsLa_EeCRxrN1JUGuxA" name="interface" type="_8Ugn8GvtEdqG6fBIPwe-mw" subsettedProperty="_MMsAqIkxEeOMQ5AKLd10lA _1vzv0LbIEeCRxrN1JUGuxA _YUdlwLbAEeCRxrN1JUGuxA _zYrE4La-EeCRxrN1JUGuxA" association="_MOYpy4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMZFtYkxEeOMQ5AKLd10lA" annotatedElement="_68HLsLa_EeCRxrN1JUGuxA">
<body>The Interface that owns this Property, if any.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMZFtokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMZswIkxEeOMQ5AKLd10lA" name="isComposite" isDerived="true">
<ownedComment xmi:id="_MMZswYkxEeOMQ5AKLd10lA" annotatedElement="_MMZswIkxEeOMQ5AKLd10lA">
<body>If isComposite is true, the object containing the attribute is a container for the object or value contained in the attribute. This is a derived value, indicating whether the aggregation of the Property is composite or not.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MMZswokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMZsw4kxEeOMQ5AKLd10lA" name="isDerived">
<ownedComment xmi:id="_MMZsxIkxEeOMQ5AKLd10lA" annotatedElement="_MMZsw4kxEeOMQ5AKLd10lA">
<body>Specifies whether the Property is derived, i.e., whether its value or values can be computed from other information.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MMZsxYkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMZsxokxEeOMQ5AKLd10lA" name="isDerivedUnion">
<ownedComment xmi:id="_MMZsx4kxEeOMQ5AKLd10lA" annotatedElement="_MMZsxokxEeOMQ5AKLd10lA">
<body>Specifies whether the property is derived as the union of all of the Properties that are constrained to subset it.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MMZsyIkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMZsyYkxEeOMQ5AKLd10lA" name="isID">
<ownedComment xmi:id="_MMZsyokxEeOMQ5AKLd10lA" annotatedElement="_MMZsyYkxEeOMQ5AKLd10lA">
<body>True indicates this property can be used to uniquely identify an instance of the containing Class.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MMZsy4kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMaT0IkxEeOMQ5AKLd10lA" name="opposite" type="_Jp_1oGveEdq4DLWZOhbdEA" isDerived="true" association="_MMnvM4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMaT0YkxEeOMQ5AKLd10lA" annotatedElement="_MMaT0IkxEeOMQ5AKLd10lA">
<body>In the case where the Property is one end of a binary association this gives the other end.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMaT0okxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMaT04kxEeOMQ5AKLd10lA" name="owningAssociation" type="_AwvxoGwNEdq7X4sGURiZYA" subsettedProperty="_YUdlwLbAEeCRxrN1JUGuxA _1vzv0LbIEeCRxrN1JUGuxA _MMYepIkxEeOMQ5AKLd10lA _zYrE4La-EeCRxrN1JUGuxA" association="_MO_tzYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMaT1IkxEeOMQ5AKLd10lA" annotatedElement="_MMaT04kxEeOMQ5AKLd10lA">
<body>The owning association of this property, if any.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMaT1YkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMaT1okxEeOMQ5AKLd10lA" name="qualifier" type="_Jp_1oGveEdq4DLWZOhbdEA" isOrdered="true" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MMnIIIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMaT14kxEeOMQ5AKLd10lA" annotatedElement="_MMaT1okxEeOMQ5AKLd10lA">
<body>An optional list of ordered qualifier attributes for the end.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMaT2IkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMaT2YkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMaT2okxEeOMQ5AKLd10lA" name="redefinedProperty" type="_Jp_1oGveEdq4DLWZOhbdEA" subsettedProperty="_MMfMVIkxEeOMQ5AKLd10lA" association="_MMnIIYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMaT24kxEeOMQ5AKLd10lA" annotatedElement="_MMaT2okxEeOMQ5AKLd10lA">
<body>The properties that are redefined by this property, if any.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMaT3IkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMaT3YkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMa64IkxEeOMQ5AKLd10lA" name="subsettedProperty" type="_Jp_1oGveEdq4DLWZOhbdEA" association="_MMnvNokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMa64YkxEeOMQ5AKLd10lA" annotatedElement="_MMa64IkxEeOMQ5AKLd10lA">
<body>The properties of which this Property is constrained to be a subset, if any.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMa64okxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMa644kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedOperation xmi:id="_oLamMFYJEdqrn7iZ0eqieg" name="getDefault" isQuery="true">
<ownedComment xmi:id="_KsK3QIPaEeOyLuI0bir0Bg" annotatedElement="_oLamMFYJEdqrn7iZ0eqieg">
<body>Retrieves a string representation of the default value for this property.</body>
</ownedComment>
<ownedParameter xmi:id="_vkrSwFYJEdqrn7iZ0eqieg" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uJsjsFYjEdqB6vblk3tuMA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uJsjsVYjEdqB6vblk3tuMA" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_bAUx8K6-EdqjppZik4kD8A" name="getOtherEnd">
<ownedComment xmi:id="__u7VUOweEdqYHf-imTcTdw" annotatedElement="_bAUx8K6-EdqjppZik4kD8A">
<body>Retrieves the other end of the (binary) association in which this property is a member end.</body>
</ownedComment>
<ownedParameter xmi:id="_eTnusK6-EdqjppZik4kD8A" type="_Jp_1oGveEdq4DLWZOhbdEA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_f6SxkK6-EdqjppZik4kD8A"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_f6Sxka6-EdqjppZik4kD8A" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_f-9wMGXCEdqEJs8umHJc9g" name="isSetDefault" visibility="protected" isQuery="true">
<ownedParameter xmi:id="_iAwBwGXCEdqEJs8umHJc9g" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_lYUggK6-EdqjppZik4kD8A" name="setBooleanDefaultValue">
<ownedComment xmi:id="_GdHroOwfEdqYHf-imTcTdw" annotatedElement="_lYUggK6-EdqjppZik4kD8A">
<body>Sets the default value for this property to the specified Boolean value.</body>
</ownedComment>
<ownedParameter xmi:id="_4BKD4K6-EdqjppZik4kD8A" name="value" effect="read">
<ownedComment xmi:id="_pKCf8PIFEdulR8T2OJRyFQ" annotatedElement="_4BKD4K6-EdqjppZik4kD8A">
<body>The new default value.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_vbp60FYjEdqB6vblk3tuMA" name="setDefault">
<ownedComment xmi:id="_TusAoIPaEeOyLuI0bir0Bg" annotatedElement="_vbp60FYjEdqB6vblk3tuMA">
<body>Sets the default value for this property based on the specified string representation.</body>
</ownedComment>
<ownedParameter xmi:id="_xXxpQFYjEdqB6vblk3tuMA" name="newDefault" effect="read">
<ownedComment xmi:id="_LSln8IPjEeOMsq-_jJoljg" annotatedElement="_xXxpQFYjEdqB6vblk3tuMA">
<body>A string repesentation of the new default value.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_94N94K6-EdqjppZik4kD8A" name="setIntegerDefaultValue">
<ownedComment xmi:id="_Js2XAOwfEdqYHf-imTcTdw" annotatedElement="_94N94K6-EdqjppZik4kD8A">
<body>Sets the default value for this property to the specified integer value.</body>
</ownedComment>
<ownedParameter xmi:id="_94N94a6-EdqjppZik4kD8A" name="value" effect="read">
<ownedComment xmi:id="_pv4_APIFEdulR8T2OJRyFQ" annotatedElement="_94N94a6-EdqjppZik4kD8A">
<body>The new default value.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_d8dDkFYkEdqB6vblk3tuMA" name="setIsComposite" visibility="protected">
<ownedParameter xmi:id="_gOfXoFYkEdqB6vblk3tuMA" name="newIsComposite" effect="read">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_SzqSgK6-EdqjppZik4kD8A" name="setIsNavigable">
<ownedComment xmi:id="_7VJRoOweEdqYHf-imTcTdw" annotatedElement="_SzqSgK6-EdqjppZik4kD8A">
<body>Sets the navigability of this property as indicated.</body>
</ownedComment>
<ownedParameter xmi:id="_VzI7YK6-EdqjppZik4kD8A" name="isNavigable" effect="read">
<ownedComment xmi:id="_r9T40PIFEdulR8T2OJRyFQ" annotatedElement="_VzI7YK6-EdqjppZik4kD8A">
<body>The new navigability.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_WU_10K6_EdqjppZik4kD8A" name="setNullDefaultValue">
<ownedComment xmi:id="_O5cXsOwfEdqYHf-imTcTdw" annotatedElement="_WU_10K6_EdqjppZik4kD8A">
<body>Sets the default value for this property to the null value.</body>
</ownedComment>
</ownedOperation>
<ownedOperation xmi:id="_sJdfYFYlEdqB6vblk3tuMA" name="setOpposite" visibility="protected">
<ownedParameter xmi:id="_tesM8FYlEdqB6vblk3tuMA" name="newOpposite" visibility="protected" type="_Jp_1oGveEdq4DLWZOhbdEA" effect="read"/>
</ownedOperation>
<ownedOperation xmi:id="_O6iS0K3JEeCff5DsMzqH0w" name="setRealDefaultValue">
<ownedComment xmi:id="_O6iS0a3JEeCff5DsMzqH0w" annotatedElement="_O6iS0K3JEeCff5DsMzqH0w">
<body>Sets the default value for this property to the specified real value.</body>
</ownedComment>
<ownedParameter xmi:id="_O6iS0q3JEeCff5DsMzqH0w" name="value" effect="read">
<ownedComment xmi:id="_O6iS063JEeCff5DsMzqH0w" annotatedElement="_O6iS0q3JEeCff5DsMzqH0w">
<body>The new default value.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_GW7PkK6_EdqjppZik4kD8A" name="setStringDefaultValue">
<ownedComment xmi:id="_LLBlMOwfEdqYHf-imTcTdw" annotatedElement="_GW7PkK6_EdqjppZik4kD8A">
<body>Sets the default value for this property to the specified string value.</body>
</ownedComment>
<ownedParameter xmi:id="_GW7Pka6_EdqjppZik4kD8A" name="value" effect="read">
<ownedComment xmi:id="_syWqcPIFEdulR8T2OJRyFQ" annotatedElement="_GW7Pka6_EdqjppZik4kD8A">
<body>The new default value.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_NXJxEK6_EdqjppZik4kD8A" name="setUnlimitedNaturalDefaultValue">
<ownedComment xmi:id="_NTqssOwfEdqYHf-imTcTdw" annotatedElement="_NXJxEK6_EdqjppZik4kD8A">
<body>Sets the default value for this property to the specified unlimited natural value.</body>
</ownedComment>
<ownedParameter xmi:id="_NXJxEa6_EdqjppZik4kD8A" name="value" effect="read">
<ownedComment xmi:id="_tZjNUPIFEdulR8T2OJRyFQ" annotatedElement="_NXJxEa6_EdqjppZik4kD8A">
<body>The new default value.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_kGtosGXCEdqEJs8umHJc9g" name="unsetDefault" visibility="protected"/>
<ownedOperation xmi:id="_MMa65IkxEeOMQ5AKLd10lA" name="isAttribute" bodyCondition="_MMa65okxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MMa65YkxEeOMQ5AKLd10lA" annotatedElement="_MMa65IkxEeOMQ5AKLd10lA">
<body>The query isAttribute() is true if the Property is defined as an attribute of some Classifier.</body>
</ownedComment>
<ownedRule xmi:id="_MMa65okxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MMa65IkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMa654kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (not classifier->isEmpty())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MMa66IkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MMa66YkxEeOMQ5AKLd10lA" name="isCompatibleWith" bodyCondition="_MMa664kxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MNTEsIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMa66okxEeOMQ5AKLd10lA" annotatedElement="_MMa66YkxEeOMQ5AKLd10lA">
<body>The query isCompatibleWith() determines if this Property is compatible with the specified ParameterableElement. This Property is compatible with ParameterableElement p if the kind of this Property is thesame as or a subtype of the kind of p. Further, if p is a TypedElement, then the type of this Property must be conformant with the type of p.</body>
</ownedComment>
<ownedRule xmi:id="_MMa664kxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MMa66YkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMa67IkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (self.oclIsKindOf(p.oclType()) and (p.oclIsKindOf(TypedElement) implies&#xD;
self.type.conformsTo(p.oclAsType(TypedElement).type)))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MMa67YkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_MMa67okxEeOMQ5AKLd10lA" name="p" type="_MNTEp4kxEeOMQ5AKLd10lA"/>
</ownedOperation>
<ownedOperation xmi:id="_MMbh8IkxEeOMQ5AKLd10lA" name="isComposite" bodyCondition="_MMbh8okxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MMbh8YkxEeOMQ5AKLd10lA" annotatedElement="_MMbh8IkxEeOMQ5AKLd10lA">
<body>The value of isComposite is true only if aggregation is composite.</body>
</ownedComment>
<ownedRule xmi:id="_MMbh8okxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MMbh8IkxEeOMQ5AKLd10lA _MMZswIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMbh84kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (aggregation = AggregationKind::composite)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MMbh9IkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MMbh9YkxEeOMQ5AKLd10lA" name="isConsistentWith" bodyCondition="_MMbh-YkxEeOMQ5AKLd10lA" isQuery="true" precondition="_MMbh94kxEeOMQ5AKLd10lA" redefinedOperation="_MMfzYIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMbh9okxEeOMQ5AKLd10lA" annotatedElement="_MMbh9YkxEeOMQ5AKLd10lA">
<body>The query isConsistentWith() specifies, for any two Properties in a context in which redefinition is possible, whether redefinition would be logically consistent. A redefining Property is consistent with a redefined Property if the type of the redefining Property conforms to the type of the redefined Property, and the multiplicity of the redefining Property (if specified) is contained in the multiplicity of the redefined Property.</body>
</ownedComment>
<ownedRule xmi:id="_MMbh94kxEeOMQ5AKLd10lA" name="pre" constrainedElement="_MMbh9YkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMbh-IkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>redefiningElement.isRedefinitionContextValid(self)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MMbh-YkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MMbh9YkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMbh-okxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (redefiningElement.oclIsKindOf(Property) and
let prop : Property = redefiningElement.oclAsType(Property) in
(prop.type.conformsTo(self.type) and
((prop.lowerBound()->notEmpty() and self.lowerBound()->notEmpty()) implies prop.lowerBound() >= self.lowerBound()) and
((prop.upperBound()->notEmpty() and self.upperBound()->notEmpty()) implies prop.lowerBound() &lt;= self.lowerBound()) and
(self.isComposite implies prop.isComposite)))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MMbh-4kxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_MMbh_IkxEeOMQ5AKLd10lA" name="redefiningElement" type="_uCRA4La-EeCRxrN1JUGuxA"/>
</ownedOperation>
<ownedOperation xmi:id="_MMcJAIkxEeOMQ5AKLd10lA" name="isNavigable" bodyCondition="_MMcJAokxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MMcJAYkxEeOMQ5AKLd10lA" annotatedElement="_MMcJAIkxEeOMQ5AKLd10lA">
<body>The query isNavigable() indicates whether it is possible to navigate across the property.</body>
</ownedComment>
<ownedRule xmi:id="_MMcJAokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MMcJAIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMcJA4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (not classifier->isEmpty() or association.navigableOwnedEnd->includes(self))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MMcJBIkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_meukALL6EeCBifIhhuFqZA" name="opposite" visibility="protected" bodyCondition="_MMcJBokxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MMcJBYkxEeOMQ5AKLd10lA" annotatedElement="_meukALL6EeCBifIhhuFqZA">
<body>If this property is a memberEnd of a binary association, then opposite gives the other end.</body>
</ownedComment>
<ownedRule xmi:id="_MMcJBokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_meukALL6EeCBifIhhuFqZA _MMaT0IkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMcJB4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if association &lt;> null and association.memberEnd->size() = 2
then
association.memberEnd->any(e | e &lt;> self)
else
null
endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_s9sLgLL6EeCBifIhhuFqZA" name="result" type="_Jp_1oGveEdq4DLWZOhbdEA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_s9sLgbL6EeCBifIhhuFqZA"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MMcwEIkxEeOMQ5AKLd10lA" name="subsettingContext" bodyCondition="_MMcwEokxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MMcwEYkxEeOMQ5AKLd10lA" annotatedElement="_MMcwEIkxEeOMQ5AKLd10lA">
<body>The query subsettingContext() gives the context for subsetting a Property. It consists, in the case of an attribute, of the corresponding Classifier, and in the case of an association end, all of the Classifiers at the other ends.</body>
</ownedComment>
<ownedRule xmi:id="_MMcwEokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MMcwEIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMcwE4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if association &lt;> null
then association.memberEnd->excluding(self)->collect(type)->asSet()
else
if classifier&lt;>null
then classifier->asSet()
else Set{}
endif
endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MMcwFIkxEeOMQ5AKLd10lA" name="result" type="_ynRtoGvtEdqG6fBIPwe-mw" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMcwFYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMcwFokxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_uCRA4La-EeCRxrN1JUGuxA" name="RedefinableElement" isAbstract="true">
<ownedComment xmi:id="_MMelQIkxEeOMQ5AKLd10lA" annotatedElement="_uCRA4La-EeCRxrN1JUGuxA">
<body>A RedefinableElement is an element that, when defined in the context of a Classifier, can be redefined more specifically or differently in the context of another Classifier that specializes (directly or indirectly) the context Classifier.</body>
</ownedComment>
<ownedRule xmi:id="_MMelQYkxEeOMQ5AKLd10lA" name="redefinition_consistent" constrainedElement="_uCRA4La-EeCRxrN1JUGuxA">
<ownedComment xmi:id="_MMelQokxEeOMQ5AKLd10lA" annotatedElement="_MMelQYkxEeOMQ5AKLd10lA">
<body>A redefining element must be consistent with each redefined element.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMelQ4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>redefinedElement->forAll(re | re.isConsistentWith(self))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MMelRIkxEeOMQ5AKLd10lA" name="non_leaf_redefinition" constrainedElement="_uCRA4La-EeCRxrN1JUGuxA">
<ownedComment xmi:id="_MMelRYkxEeOMQ5AKLd10lA" annotatedElement="_MMelRIkxEeOMQ5AKLd10lA">
<body>A RedefinableElement can only redefine non-leaf RedefinableElements.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMelRokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>redefinedElement->forAll(re | not re.isLeaf)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MMelR4kxEeOMQ5AKLd10lA" name="redefinition_context_valid" constrainedElement="_uCRA4La-EeCRxrN1JUGuxA">
<ownedComment xmi:id="_MMelSIkxEeOMQ5AKLd10lA" annotatedElement="_MMelR4kxEeOMQ5AKLd10lA">
<body>At least one of the redefinition contexts of the redefining element must be a specialization of at least one of the redefinition contexts for each redefined element.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMelSYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>redefinedElement->forAll(re | self.isRedefinitionContextValid(re))</body>
</specification>
</ownedRule>
<generalization xmi:id="_MMfMUIkxEeOMQ5AKLd10lA" general="_csVgUGvtEdqG6fBIPwe-mw"/>
<ownedAttribute xmi:id="_MMfMUYkxEeOMQ5AKLd10lA" name="isLeaf">
<ownedComment xmi:id="_MMfMUokxEeOMQ5AKLd10lA" annotatedElement="_MMfMUYkxEeOMQ5AKLd10lA">
<body>Indicates whether it is possible to further redefine a RedefinableElement. If the value is true, then it is not possible to further redefine the RedefinableElement.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MMfMU4kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMfMVIkxEeOMQ5AKLd10lA" name="redefinedElement" type="_uCRA4La-EeCRxrN1JUGuxA" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_MMmhGIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMfMVYkxEeOMQ5AKLd10lA" annotatedElement="_MMfMVIkxEeOMQ5AKLd10lA">
<body>The RedefinableElement that is being redefined by this element.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMfMVokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMfMV4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_zYrE4La-EeCRxrN1JUGuxA" name="redefinitionContext" type="_6UV2QGwJEdq7X4sGURiZYA" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_MMmhFIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMfMWIkxEeOMQ5AKLd10lA" annotatedElement="_zYrE4La-EeCRxrN1JUGuxA">
<body>The contexts that this element may be redefined from.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMfMWYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMfMWokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedOperation xmi:id="_MMfzYIkxEeOMQ5AKLd10lA" name="isConsistentWith" bodyCondition="_MMfzYokxEeOMQ5AKLd10lA" isQuery="true" precondition="_MMfzZIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMfzYYkxEeOMQ5AKLd10lA" annotatedElement="_MMfzYIkxEeOMQ5AKLd10lA">
<body>The query isConsistentWith() specifies, for any two RedefinableElements in a context in which redefinition is possible, whether redefinition would be logically consistent. By default, this is false; this operation must be overridden for subclasses of RedefinableElement to define the consistency conditions.</body>
</ownedComment>
<ownedRule xmi:id="_MMfzYokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MMfzYIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMfzY4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (false)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MMfzZIkxEeOMQ5AKLd10lA" name="pre" constrainedElement="_MMfzYIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMfzZYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>redefiningElement.isRedefinitionContextValid(self)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MMfzZokxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_MMfzZ4kxEeOMQ5AKLd10lA" name="redefiningElement" type="_uCRA4La-EeCRxrN1JUGuxA"/>
</ownedOperation>
<ownedOperation xmi:id="_MMfzaIkxEeOMQ5AKLd10lA" name="isRedefinitionContextValid" bodyCondition="_MMfzaokxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MMfzaYkxEeOMQ5AKLd10lA" annotatedElement="_MMfzaIkxEeOMQ5AKLd10lA">
<body>The query isRedefinitionContextValid() specifies whether the redefinition contexts of this RedefinableElement are properly related to the redefinition contexts of the specified RedefinableElement to allow this element to redefine the other. By default at least one of the redefinition contexts of this element must be a specialization of at least one of the redefinition contexts of the specified element.</body>
</ownedComment>
<ownedRule xmi:id="_MMfzaokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MMfzaIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMfza4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (redefinitionContext->exists(c | c.allParents()->includesAll(redefinedElement.redefinitionContext)))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MMfzbIkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_MMgacIkxEeOMQ5AKLd10lA" name="redefinedElement" type="_uCRA4La-EeCRxrN1JUGuxA"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_9keOQGvdEdq4DLWZOhbdEA" name="RedefinableTemplateSignature">
<ownedComment xmi:id="_MMgacYkxEeOMQ5AKLd10lA" annotatedElement="_9keOQGvdEdq4DLWZOhbdEA">
<body>A RedefinableTemplateSignature supports the addition of formal template parameters in a specialization of a template classifier.</body>
</ownedComment>
<ownedRule xmi:id="_MMgacokxEeOMQ5AKLd10lA" name="redefines_parents" constrainedElement="_9keOQGvdEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MMgac4kxEeOMQ5AKLd10lA" annotatedElement="_MMgacokxEeOMQ5AKLd10lA">
<body>If any of the parent Classifiers are a template, then the extendedSignature must include the signature of that Classifier.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMgadIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>classifier.allParents()->forAll(c | c.ownedTemplateSignature->notEmpty() implies self->closure(extendedSignature)->includes(c.ownedTemplateSignature))</body>
</specification>
</ownedRule>
<generalization xmi:id="_MMhBgIkxEeOMQ5AKLd10lA" general="_uCRA4La-EeCRxrN1JUGuxA"/>
<generalization xmi:id="_MMhBgYkxEeOMQ5AKLd10lA" general="_MNVg74kxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MMhBgokxEeOMQ5AKLd10lA" name="classifier" type="_6UV2QGwJEdq7X4sGURiZYA" redefinedProperty="_MNWH9YkxEeOMQ5AKLd10lA" subsettedProperty="_zYrE4La-EeCRxrN1JUGuxA" association="_MMrZlYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMhBg4kxEeOMQ5AKLd10lA" annotatedElement="_MMhBgokxEeOMQ5AKLd10lA">
<body>The Classifier that owns this RedefinableTemplateSignature.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MMhBhIkxEeOMQ5AKLd10lA" name="extendedSignature" type="_9keOQGvdEdq4DLWZOhbdEA" subsettedProperty="_MMfMVIkxEeOMQ5AKLd10lA" association="_MMl6B4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMhBhYkxEeOMQ5AKLd10lA" annotatedElement="_MMhBhIkxEeOMQ5AKLd10lA">
<body>The signatures extended by this RedefinableTemplateSignature.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMhBhokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMhBh4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMhokIkxEeOMQ5AKLd10lA" name="inheritedParameter" type="_KxRzgGvuEdqG6fBIPwe-mw" isReadOnly="true" isDerived="true" subsettedProperty="_MNWH8okxEeOMQ5AKLd10lA" association="_MMmhEIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMhokYkxEeOMQ5AKLd10lA" annotatedElement="_MMhokIkxEeOMQ5AKLd10lA">
<body>The formal template parameters of the extended signatures.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMhokokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMhok4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedOperation xmi:id="_FvJUYFYLEdqrn7iZ0eqieg" name="inheritedParameter" visibility="protected" bodyCondition="_MMholYkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MMholIkxEeOMQ5AKLd10lA" annotatedElement="_FvJUYFYLEdqrn7iZ0eqieg">
<body>Derivation for RedefinableTemplateSignature::/inheritedParameter</body>
</ownedComment>
<ownedRule xmi:id="_MMholYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_FvJUYFYLEdqrn7iZ0eqieg _MMhokIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMholokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if extendedSignature->isEmpty() then Set{} else extendedSignature.parameter->asSet() endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_Jbx-MFYLEdqrn7iZ0eqieg" name="result" type="_KxRzgGvuEdqG6fBIPwe-mw" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMhol4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMhomIkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MMiPoIkxEeOMQ5AKLd10lA" name="isConsistentWith" bodyCondition="_MMiPookxEeOMQ5AKLd10lA" isQuery="true" precondition="_MMiPpIkxEeOMQ5AKLd10lA" redefinedOperation="_MMfzYIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMiPoYkxEeOMQ5AKLd10lA" annotatedElement="_MMiPoIkxEeOMQ5AKLd10lA">
<body>The query isConsistentWith() specifies, for any two RedefinableTemplateSignatures in a context in which redefinition is possible, whether redefinition would be logically consistent. A redefining template signature is always consistent with a redefined template signature, as redefinition only adds new formal parameters.</body>
</ownedComment>
<ownedRule xmi:id="_MMiPookxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MMiPoIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMiPo4kxEeOMQ5AKLd10lA" name="spec">
<language>OCL</language>
<body>result = (redefiningElement.oclIsKindOf(RedefinableTemplateSignature))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MMiPpIkxEeOMQ5AKLd10lA" name="pre" constrainedElement="_MMiPoIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMiPpYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>redefiningElement.isRedefinitionContextValid(self)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MMiPpokxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_MMiPp4kxEeOMQ5AKLd10lA" name="redefiningElement" type="_uCRA4La-EeCRxrN1JUGuxA"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MMi2sIkxEeOMQ5AKLd10lA" name="Slot">
<ownedComment xmi:id="_MMi2sYkxEeOMQ5AKLd10lA" annotatedElement="_MMi2sIkxEeOMQ5AKLd10lA">
<body>A Slot designates that an entity modeled by an InstanceSpecification has a value or values for a specific StructuralFeature.</body>
</ownedComment>
<generalization xmi:id="_MMi2sokxEeOMQ5AKLd10lA" general="_kl90MGvbEdq4DLWZOhbdEA"/>
<ownedAttribute xmi:id="_MMi2s4kxEeOMQ5AKLd10lA" name="definingFeature" type="_MMjdwIkxEeOMQ5AKLd10lA" association="_MMl6AIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMi2tIkxEeOMQ5AKLd10lA" annotatedElement="_MMi2s4kxEeOMQ5AKLd10lA">
<body>The StructuralFeature that specifies the values that may be held by the Slot.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MMi2tYkxEeOMQ5AKLd10lA" name="owningInstance" type="_MMJ1IIkxEeOMQ5AKLd10lA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MMqLcIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMi2tokxEeOMQ5AKLd10lA" annotatedElement="_MMi2tYkxEeOMQ5AKLd10lA">
<body>The InstanceSpecification that owns this Slot.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MMi2t4kxEeOMQ5AKLd10lA" name="value" type="_MPO-UIkxEeOMQ5AKLd10lA" isOrdered="true" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MMl6BIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMi2uIkxEeOMQ5AKLd10lA" annotatedElement="_MMi2t4kxEeOMQ5AKLd10lA">
<body>The value or values held by the Slot.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMi2uYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMi2uokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MMjdwIkxEeOMQ5AKLd10lA" name="StructuralFeature" isAbstract="true">
<ownedComment xmi:id="_MMjdwYkxEeOMQ5AKLd10lA" annotatedElement="_MMjdwIkxEeOMQ5AKLd10lA">
<body>A StructuralFeature is a typed feature of a Classifier that specifies the structure of instances of the Classifier.</body>
</ownedComment>
<generalization xmi:id="_MMjdwokxEeOMQ5AKLd10lA" general="_Gjgl0GveEdq4DLWZOhbdEA"/>
<generalization xmi:id="_MMjdw4kxEeOMQ5AKLd10lA" general="_MNWvAIkxEeOMQ5AKLd10lA"/>
<generalization xmi:id="_MMjdxIkxEeOMQ5AKLd10lA" general="_UL0VYLbAEeCRxrN1JUGuxA"/>
<ownedAttribute xmi:id="_MMjdxYkxEeOMQ5AKLd10lA" name="isReadOnly">
<ownedComment xmi:id="_MMjdxokxEeOMQ5AKLd10lA" annotatedElement="_MMjdxYkxEeOMQ5AKLd10lA">
<body>If isReadOnly is true, the StructuralFeature may not be written to after initialization.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MMjdx4kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Enumeration" xmi:id="_B3q9cGwNEdq7X4sGURiZYA" name="AggregationKind" visibility="private">
<ownedComment xmi:id="_MMjdyIkxEeOMQ5AKLd10lA" annotatedElement="_B3q9cGwNEdq7X4sGURiZYA">
<body>AggregationKind is an Enumeration for specifying the kind of aggregation of a Property.</body>
</ownedComment>
<ownedLiteral xmi:id="_MMjdyYkxEeOMQ5AKLd10lA" name="none">
<ownedComment xmi:id="_MMjdyokxEeOMQ5AKLd10lA" annotatedElement="_MMjdyYkxEeOMQ5AKLd10lA">
<body>Indicates that the Property has no aggregation.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_MMjdy4kxEeOMQ5AKLd10lA" name="shared">
<ownedComment xmi:id="_MMjdzIkxEeOMQ5AKLd10lA" annotatedElement="_MMjdy4kxEeOMQ5AKLd10lA">
<body>Indicates that the Property has shared aggregation.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_MMkE0IkxEeOMQ5AKLd10lA" name="composite">
<ownedComment xmi:id="_MMkE0YkxEeOMQ5AKLd10lA" annotatedElement="_MMkE0IkxEeOMQ5AKLd10lA">
<body>Indicates that the Property is aggregated compositely, i.e., the composite object has responsibility for the existence and storage of the composed objects (parts).</body>
</ownedComment>
</ownedLiteral>
</packagedElement>
<packagedElement xmi:type="uml:Enumeration" xmi:id="_MMkE0okxEeOMQ5AKLd10lA" name="CallConcurrencyKind">
<ownedComment xmi:id="_MMkE04kxEeOMQ5AKLd10lA" annotatedElement="_MMkE0okxEeOMQ5AKLd10lA">
<body>CallConcurrencyKind is an Enumeration used to specify the semantics of concurrent calls to a BehavioralFeature.</body>
</ownedComment>
<ownedLiteral xmi:id="_MMkE1IkxEeOMQ5AKLd10lA" name="sequential">
<ownedComment xmi:id="_MMkE1YkxEeOMQ5AKLd10lA" annotatedElement="_MMkE1IkxEeOMQ5AKLd10lA">
<body>No concurrency management mechanism is associated with the BehavioralFeature and, therefore, concurrency conflicts may occur. Instances that invoke a BehavioralFeature need to coordinate so that only one invocation to a target on any BehavioralFeature occurs at once.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_MMkE1okxEeOMQ5AKLd10lA" name="guarded">
<ownedComment xmi:id="_MMkE14kxEeOMQ5AKLd10lA" annotatedElement="_MMkE1okxEeOMQ5AKLd10lA">
<body>Multiple invocations of a BehavioralFeature that overlap in time may occur to one instance, but only one is allowed to commence. The others are blocked until the performance of the currently executing BehavioralFeature is complete. It is the responsibility of the system designer to ensure that deadlocks do not occur due to simultaneous blocking.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_MMkE2IkxEeOMQ5AKLd10lA" name="concurrent">
<ownedComment xmi:id="_MMkE2YkxEeOMQ5AKLd10lA" annotatedElement="_MMkE2IkxEeOMQ5AKLd10lA">
<body>Multiple invocations of a BehavioralFeature that overlap in time may occur to one instance and all of them may proceed concurrently.</body>
</ownedComment>
</ownedLiteral>
</packagedElement>
<packagedElement xmi:type="uml:Enumeration" xmi:id="_MMkr4IkxEeOMQ5AKLd10lA" name="ParameterDirectionKind">
<ownedComment xmi:id="_MMkr4YkxEeOMQ5AKLd10lA" annotatedElement="_MMkr4IkxEeOMQ5AKLd10lA">
<body>ParameterDirectionKind is an Enumeration that defines literals used to specify direction of parameters.</body>
</ownedComment>
<ownedLiteral xmi:id="_MMkr4okxEeOMQ5AKLd10lA" name="in">
<ownedComment xmi:id="_MMkr44kxEeOMQ5AKLd10lA" annotatedElement="_MMkr4okxEeOMQ5AKLd10lA">
<body>Indicates that Parameter values are passed in by the caller.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_MMkr5IkxEeOMQ5AKLd10lA" name="inout">
<ownedComment xmi:id="_MMkr5YkxEeOMQ5AKLd10lA" annotatedElement="_MMkr5IkxEeOMQ5AKLd10lA">
<body>Indicates that Parameter values are passed in by the caller and (possibly different) values passed out to the caller.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_MMkr5okxEeOMQ5AKLd10lA" name="out">
<ownedComment xmi:id="_MMkr54kxEeOMQ5AKLd10lA" annotatedElement="_MMkr5okxEeOMQ5AKLd10lA">
<body>Indicates that Parameter values are passed out to the caller.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_MMkr6IkxEeOMQ5AKLd10lA" name="return">
<ownedComment xmi:id="_MMkr6YkxEeOMQ5AKLd10lA" annotatedElement="_MMkr6IkxEeOMQ5AKLd10lA">
<body>Indicates that Parameter values are passed as return values back to the caller.</body>
</ownedComment>
</ownedLiteral>
</packagedElement>
<packagedElement xmi:type="uml:Enumeration" xmi:id="_oNLHgLG1EeCDe8CO90iVKQ" name="ParameterEffectKind" visibility="private">
<ownedComment xmi:id="_MMlS8IkxEeOMQ5AKLd10lA" annotatedElement="_oNLHgLG1EeCDe8CO90iVKQ">
<body>ParameterEffectKind is an Enumeration that indicates the effect of a Behavior on values passed in or out of its parameters.</body>
</ownedComment>
<ownedLiteral xmi:id="_MMlS8YkxEeOMQ5AKLd10lA" name="create">
<ownedComment xmi:id="_MMlS8okxEeOMQ5AKLd10lA" annotatedElement="_MMlS8YkxEeOMQ5AKLd10lA">
<body>Indicates that the behavior creates values.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_MMlS84kxEeOMQ5AKLd10lA" name="read">
<ownedComment xmi:id="_MMlS9IkxEeOMQ5AKLd10lA" annotatedElement="_MMlS84kxEeOMQ5AKLd10lA">
<body>Indicates objects that are values of the parameter have values of their properties, or links in which they participate, or their classifiers retrieved during executions of the behavior.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_MMlS9YkxEeOMQ5AKLd10lA" name="update">
<ownedComment xmi:id="_MMlS9okxEeOMQ5AKLd10lA" annotatedElement="_MMlS9YkxEeOMQ5AKLd10lA">
<body>Indicates objects that are values of the parameter have values of their properties, or links in which they participate, or their classification changed during executions of the behavior.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_MMlS94kxEeOMQ5AKLd10lA" name="delete">
<ownedComment xmi:id="_MMlS-IkxEeOMQ5AKLd10lA" annotatedElement="_MMlS94kxEeOMQ5AKLd10lA">
<body>Indicates objects that are values of the parameter do not exist after executions of the behavior are finished.</body>
</ownedComment>
</ownedLiteral>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MMl6AIkxEeOMQ5AKLd10lA" name="A_definingFeature_slot" memberEnd="_MMi2s4kxEeOMQ5AKLd10lA _MMl6AYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MMl6AYkxEeOMQ5AKLd10lA" name="slot" type="_MMi2sIkxEeOMQ5AKLd10lA" association="_MMl6AIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMl6AokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMl6A4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MMl6BIkxEeOMQ5AKLd10lA" name="A_value_owningSlot" memberEnd="_MMi2t4kxEeOMQ5AKLd10lA _MMl6BYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MMl6BYkxEeOMQ5AKLd10lA" name="owningSlot" type="_MMi2sIkxEeOMQ5AKLd10lA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MMl6BIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMl6BokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MMl6B4kxEeOMQ5AKLd10lA" name="A_extendedSignature_redefinableTemplateSignature" memberEnd="_MMhBhIkxEeOMQ5AKLd10lA _MMl6CIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MMl6CIkxEeOMQ5AKLd10lA" name="redefinableTemplateSignature" type="_9keOQGvdEdq4DLWZOhbdEA" subsettedProperty="_MMmhGYkxEeOMQ5AKLd10lA" association="_MMl6B4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMl6CYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMl6CokxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MMmhEIkxEeOMQ5AKLd10lA" name="A_inheritedParameter_redefinableTemplateSignature" isDerived="true" memberEnd="_MMhokIkxEeOMQ5AKLd10lA _MMmhEYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MMmhEYkxEeOMQ5AKLd10lA" name="redefinableTemplateSignature" type="_9keOQGvdEdq4DLWZOhbdEA" subsettedProperty="_MNX9JokxEeOMQ5AKLd10lA" association="_MMmhEIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMmhEokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMmhE4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MMmhFIkxEeOMQ5AKLd10lA" name="A_redefinitionContext_redefinableElement" isDerived="true" memberEnd="_zYrE4La-EeCRxrN1JUGuxA _MMmhFYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MMmhFYkxEeOMQ5AKLd10lA" name="redefinableElement" type="_uCRA4La-EeCRxrN1JUGuxA" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_MMmhFIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMmhFokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMmhF4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MMmhGIkxEeOMQ5AKLd10lA" name="A_redefinedElement_redefinableElement" isDerived="true" memberEnd="_MMfMVIkxEeOMQ5AKLd10lA _MMmhGYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MMmhGYkxEeOMQ5AKLd10lA" name="redefinableElement" type="_uCRA4La-EeCRxrN1JUGuxA" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_MMmhGIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMmhGokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMmhG4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MMnIIIkxEeOMQ5AKLd10lA" name="A_qualifier_associationEnd" memberEnd="_MMaT1okxEeOMQ5AKLd10lA _MMYep4kxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MMnIIYkxEeOMQ5AKLd10lA" name="A_redefinedProperty_property" memberEnd="_MMaT2okxEeOMQ5AKLd10lA _MMnIIokxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MMnIIokxEeOMQ5AKLd10lA" name="property" type="_Jp_1oGveEdq4DLWZOhbdEA" subsettedProperty="_MMmhGYkxEeOMQ5AKLd10lA" association="_MMnIIYkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMnII4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMnIJIkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MMnvMIkxEeOMQ5AKLd10lA" name="A_defaultValue_owningProperty" memberEnd="_MMZFsokxEeOMQ5AKLd10lA _MMnvMYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MMnvMYkxEeOMQ5AKLd10lA" name="owningProperty" type="_Jp_1oGveEdq4DLWZOhbdEA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MMnvMIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMnvMokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MMnvM4kxEeOMQ5AKLd10lA" name="A_opposite_property" isDerived="true" memberEnd="_MMaT0IkxEeOMQ5AKLd10lA _MMnvNIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MMnvNIkxEeOMQ5AKLd10lA" name="property" type="_Jp_1oGveEdq4DLWZOhbdEA" association="_MMnvM4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMnvNYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MMnvNokxEeOMQ5AKLd10lA" name="A_subsettedProperty_property" memberEnd="_MMa64IkxEeOMQ5AKLd10lA _MMnvN4kxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MMnvN4kxEeOMQ5AKLd10lA" name="property" type="_Jp_1oGveEdq4DLWZOhbdEA" association="_MMnvNokxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMnvOIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMnvOYkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MMoWQIkxEeOMQ5AKLd10lA" name="A_condition_parameterSet" memberEnd="_MMWCbIkxEeOMQ5AKLd10lA _MMoWQYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MMoWQYkxEeOMQ5AKLd10lA" name="parameterSet" type="_MMWCYIkxEeOMQ5AKLd10lA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MMoWQIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMoWQokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MMoWQ4kxEeOMQ5AKLd10lA" name="A_parameterSet_parameter" memberEnd="_MMTmKIkxEeOMQ5AKLd10lA _MMWCcIkxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MMoWRIkxEeOMQ5AKLd10lA" name="A_defaultValue_owningParameter" memberEnd="_MMSYAokxEeOMQ5AKLd10lA _MMoWRYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MMoWRYkxEeOMQ5AKLd10lA" name="owningParameter" type="_KyaPMGveEdq4DLWZOhbdEA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MMoWRIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMoWRokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MMoWR4kxEeOMQ5AKLd10lA" name="A_type_operation" isDerived="true" memberEnd="_MMM4c4kxEeOMQ5AKLd10lA _MMoWSIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MMoWSIkxEeOMQ5AKLd10lA" name="operation" type="_M4X2IGveEdq4DLWZOhbdEA" association="_MMoWR4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMoWSYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMoWSokxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MMoWS4kxEeOMQ5AKLd10lA" name="A_operation_templateParameter_parameteredElement" memberEnd="_MMM4cIkxEeOMQ5AKLd10lA _MMQi1okxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MMo9UIkxEeOMQ5AKLd10lA" name="A_bodyCondition_bodyContext" memberEnd="_MMLDQYkxEeOMQ5AKLd10lA _MMo9UYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MMo9UYkxEeOMQ5AKLd10lA" name="bodyContext" type="_M4X2IGveEdq4DLWZOhbdEA" subsettedProperty="_MNAJwIkxEeOMQ5AKLd10lA" association="_MMo9UIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMo9UokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MMo9U4kxEeOMQ5AKLd10lA" name="A_postcondition_postContext" memberEnd="_MMMRZIkxEeOMQ5AKLd10lA _MMo9VIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MMo9VIkxEeOMQ5AKLd10lA" name="postContext" type="_M4X2IGveEdq4DLWZOhbdEA" subsettedProperty="_MNAJwIkxEeOMQ5AKLd10lA" association="_MMo9U4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMo9VYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MMo9VokxEeOMQ5AKLd10lA" name="A_redefinedOperation_operation" memberEnd="_MMMRcIkxEeOMQ5AKLd10lA _MMo9V4kxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MMo9V4kxEeOMQ5AKLd10lA" name="operation" type="_M4X2IGveEdq4DLWZOhbdEA" subsettedProperty="_MMmhGYkxEeOMQ5AKLd10lA" association="_MMo9VokxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMo9WIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMo9WYkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MMpkYIkxEeOMQ5AKLd10lA" name="A_raisedException_operation" memberEnd="_MMMRbIkxEeOMQ5AKLd10lA _MMpkYYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MMpkYYkxEeOMQ5AKLd10lA" name="operation" type="_M4X2IGveEdq4DLWZOhbdEA" subsettedProperty="_MMsns4kxEeOMQ5AKLd10lA" association="_MMpkYIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMpkYokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMpkY4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MMpkZIkxEeOMQ5AKLd10lA" name="A_precondition_preContext" memberEnd="_MMMRaIkxEeOMQ5AKLd10lA _MMpkZYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MMpkZYkxEeOMQ5AKLd10lA" name="preContext" type="_M4X2IGveEdq4DLWZOhbdEA" subsettedProperty="_MNAJwIkxEeOMQ5AKLd10lA" association="_MMpkZIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMpkZokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MMpkZ4kxEeOMQ5AKLd10lA" name="A_ownedParameter_operation" memberEnd="_MMMRYIkxEeOMQ5AKLd10lA _lHJ7gLbIEeCRxrN1JUGuxA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MMpkaIkxEeOMQ5AKLd10lA" name="A_instance_instanceValue" memberEnd="_MMJ1PokxEeOMQ5AKLd10lA _MMpkaYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MMpkaYkxEeOMQ5AKLd10lA" name="instanceValue" type="_PyCx8GveEdq4DLWZOhbdEA" association="_MMpkaIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMpkaokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMpka4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MMpkbIkxEeOMQ5AKLd10lA" name="A_classifier_instanceSpecification" memberEnd="_MMJ1MYkxEeOMQ5AKLd10lA _MMpkbYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MMpkbYkxEeOMQ5AKLd10lA" name="instanceSpecification" type="_MMJ1IIkxEeOMQ5AKLd10lA" association="_MMpkbIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMpkbokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMpkb4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MMqLcIkxEeOMQ5AKLd10lA" name="A_slot_owningInstance" memberEnd="_MMJ1NYkxEeOMQ5AKLd10lA _MMi2tYkxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MMqLcYkxEeOMQ5AKLd10lA" name="A_specification_owningInstanceSpec" memberEnd="_MMJ1OYkxEeOMQ5AKLd10lA _MMqLcokxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MMqLcokxEeOMQ5AKLd10lA" name="owningInstanceSpec" type="_MMJ1IIkxEeOMQ5AKLd10lA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MMqLcYkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMqLc4kxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MMqLdIkxEeOMQ5AKLd10lA" name="A_generalizationSet_generalization" memberEnd="_MMH_8okxEeOMQ5AKLd10lA _MMInCYkxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MMqLdYkxEeOMQ5AKLd10lA" name="A_general_generalization" memberEnd="_MMH_8IkxEeOMQ5AKLd10lA _MMqLdokxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MMqLdokxEeOMQ5AKLd10lA" name="generalization" type="_C7AF4GwREdq14q0ETb1t3g" subsettedProperty="_MNcOmIkxEeOMQ5AKLd10lA" association="_MMqLdYkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMqLd4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMqLeIkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MMqygIkxEeOMQ5AKLd10lA" name="A_constrainingClassifier_classifierTemplateParameter" memberEnd="_MMGx6IkxEeOMQ5AKLd10lA _MMqygYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MMqygYkxEeOMQ5AKLd10lA" name="classifierTemplateParameter" type="_MMGx0IkxEeOMQ5AKLd10lA" association="_MMqygIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMqygokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMqyg4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MMqyhIkxEeOMQ5AKLd10lA" name="A_classifier_templateParameter_parameteredElement" memberEnd="_MMAEJ4kxEeOMQ5AKLd10lA _MMGx7IkxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MMqyhYkxEeOMQ5AKLd10lA" name="A_powertypeExtent_powertype" memberEnd="_ML_dHYkxEeOMQ5AKLd10lA _MMInE4kxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MMqyhokxEeOMQ5AKLd10lA" name="A_generalization_specific" memberEnd="_ML-2CIkxEeOMQ5AKLd10lA _MMH_-okxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MMqyh4kxEeOMQ5AKLd10lA" name="A_general_classifier" isDerived="true" memberEnd="_ML-2BIkxEeOMQ5AKLd10lA _MMqyiIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MMqyiIkxEeOMQ5AKLd10lA" name="classifier" type="_6UV2QGwJEdq7X4sGURiZYA" association="_MMqyh4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMqyiYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMqyiokxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MMqyi4kxEeOMQ5AKLd10lA" name="A_feature_featuringClassifier" isDerived="true" memberEnd="_ML-2AIkxEeOMQ5AKLd10lA _YUdlwLbAEeCRxrN1JUGuxA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MMrZkIkxEeOMQ5AKLd10lA" name="A_substitution_substitutingClassifier" memberEnd="_MMAEI4kxEeOMQ5AKLd10lA _ML7LpYkxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MMrZkYkxEeOMQ5AKLd10lA" name="A_representation_classifier" memberEnd="_MMAEIIkxEeOMQ5AKLd10lA _MMrZk4kxEeOMQ5AKLd10lA">
<generalization xmi:id="_MMrZkokxEeOMQ5AKLd10lA" general="_MMsApIkxEeOMQ5AKLd10lA"/>
<ownedEnd xmi:id="_MMrZk4kxEeOMQ5AKLd10lA" name="classifier" type="_6UV2QGwJEdq7X4sGURiZYA" redefinedProperty="_MMsApYkxEeOMQ5AKLd10lA" association="_MMrZkYkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMrZlIkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MMrZlYkxEeOMQ5AKLd10lA" name="A_ownedTemplateSignature_classifier" memberEnd="_ML_dFokxEeOMQ5AKLd10lA _MMhBgokxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MMrZlokxEeOMQ5AKLd10lA" name="A_inheritedMember_inheritingClassifier" isDerived="true" memberEnd="_ML-2DIkxEeOMQ5AKLd10lA _MMrZl4kxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MMrZl4kxEeOMQ5AKLd10lA" name="inheritingClassifier" type="_6UV2QGwJEdq7X4sGURiZYA" subsettedProperty="_MNbAcYkxEeOMQ5AKLd10lA" association="_MMrZlokxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMrZmIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMrZmYkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MMsAoIkxEeOMQ5AKLd10lA" name="A_redefinedClassifier_classifier" memberEnd="_ML_dIYkxEeOMQ5AKLd10lA _MMsAoYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MMsAoYkxEeOMQ5AKLd10lA" name="classifier" type="_6UV2QGwJEdq7X4sGURiZYA" subsettedProperty="_MMmhGYkxEeOMQ5AKLd10lA" association="_MMsAoIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMsAookxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMsAo4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MMsApIkxEeOMQ5AKLd10lA" name="A_collaborationUse_classifier" memberEnd="_ML-O-IkxEeOMQ5AKLd10lA _MMsApYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MMsApYkxEeOMQ5AKLd10lA" name="classifier" type="_6UV2QGwJEdq7X4sGURiZYA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MMsApIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMsApokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MMsAp4kxEeOMQ5AKLd10lA" name="A_attribute_classifier" isDerived="true" memberEnd="_ML-O9IkxEeOMQ5AKLd10lA _MMsAqIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MMsAqIkxEeOMQ5AKLd10lA" name="classifier" type="_6UV2QGwJEdq7X4sGURiZYA" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_YUdlwLbAEeCRxrN1JUGuxA _zYrE4La-EeCRxrN1JUGuxA" association="_MMsAp4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMsAqYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MMsAqokxEeOMQ5AKLd10lA" name="A_ownedUseCase_classifier" memberEnd="_ML_dGYkxEeOMQ5AKLd10lA _MMsAq4kxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MMsAq4kxEeOMQ5AKLd10lA" name="classifier" type="_6UV2QGwJEdq7X4sGURiZYA" subsettedProperty="_1vzv0LbIEeCRxrN1JUGuxA" association="_MMsAqokxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMsArIkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MMsArYkxEeOMQ5AKLd10lA" name="A_ownedParameter_ownerFormalParam" memberEnd="_ML7yt4kxEeOMQ5AKLd10lA _MMsnsIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MMsnsIkxEeOMQ5AKLd10lA" name="ownerFormalParam" type="_rHT3YKOsEdqi_5gqUMOQtA" subsettedProperty="_1vzv0LbIEeCRxrN1JUGuxA" association="_MMsArYkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMsnsYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MMsnsokxEeOMQ5AKLd10lA" name="A_raisedException_behavioralFeature" memberEnd="_ML7yv4kxEeOMQ5AKLd10lA _MMsns4kxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MMsns4kxEeOMQ5AKLd10lA" name="behavioralFeature" type="_rHT3YKOsEdqi_5gqUMOQtA" association="_MMsnsokxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMsntIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMsntYkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MMsntokxEeOMQ5AKLd10lA" name="A_ownedParameterSet_behavioralFeature" memberEnd="_ML7yu4kxEeOMQ5AKLd10lA _MMsnt4kxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MMsnt4kxEeOMQ5AKLd10lA" name="behavioralFeature" type="_rHT3YKOsEdqi_5gqUMOQtA" subsettedProperty="_1vzv0LbIEeCRxrN1JUGuxA" association="_MMsntokxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMsnuIkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MMsnuYkxEeOMQ5AKLd10lA" name="A_method_specification" memberEnd="_ML7ys4kxEeOMQ5AKLd10lA _MM0jhIkxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MMsnuokxEeOMQ5AKLd10lA" name="A_contract_substitution" memberEnd="_ML7Lo4kxEeOMQ5AKLd10lA _MMsnu4kxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MMsnu4kxEeOMQ5AKLd10lA" name="substitution" type="_ML7LoIkxEeOMQ5AKLd10lA" subsettedProperty="_MNc1oYkxEeOMQ5AKLd10lA" association="_MMsnuokxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMsnvIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMsnvYkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MMyHQIkxEeOMQ5AKLd10lA" name="AnyReceiveEvent">
<ownedComment xmi:id="_MMyHQYkxEeOMQ5AKLd10lA" annotatedElement="_MMyHQIkxEeOMQ5AKLd10lA">
<body>A trigger for an AnyReceiveEvent is triggered by the receipt of any message that is not explicitly handled by any related trigger.</body>
</ownedComment>
<generalization xmi:id="_MMyHQokxEeOMQ5AKLd10lA" general="_MM2_z4kxEeOMQ5AKLd10lA"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_TUPtYGveEdq4DLWZOhbdEA" name="Behavior" isAbstract="true">
<ownedComment xmi:id="_MMyHQ4kxEeOMQ5AKLd10lA" annotatedElement="_TUPtYGveEdq4DLWZOhbdEA">
<body>Behavior is a specification of how its context BehavioredClassifier changes state over time. This specification may be either a definition of possible behavior execution or emergent behavior, or a selective illustration of an interesting subset of possible executions. The latter form is typically used for capturing examples, such as a trace of a particular execution.</body>
</ownedComment>
<ownedRule xmi:id="_MMyuUIkxEeOMQ5AKLd10lA" name="most_one_behavior" constrainedElement="_TUPtYGveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MMyuUYkxEeOMQ5AKLd10lA" annotatedElement="_MMyuUIkxEeOMQ5AKLd10lA">
<body>There may be at most one Behavior for a given pairing of BehavioredClassifier (as owner of the Behavior) and BehavioralFeature (as specification of the Behavior).</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMyuUokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>specification &lt;> null implies _'context'.ownedBehavior->select(specification=self.specification)->size() = 1</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MMyuU4kxEeOMQ5AKLd10lA" name="parameters_match" constrainedElement="_TUPtYGveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MMyuVIkxEeOMQ5AKLd10lA" annotatedElement="_MMyuU4kxEeOMQ5AKLd10lA">
<body>If a Behavior has a specification BehavioralFeature, then it must have the same number of ownedParameters as its specification. The Behavior Parameters must also &quot;match&quot; the BehavioralParameter Parameters, but the exact requirements for this matching are not formalized.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMyuVYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>specification &lt;> null implies ownedParameter->size() = specification.ownedParameter->size()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MMyuVokxEeOMQ5AKLd10lA" name="feature_of_context_classifier" constrainedElement="_TUPtYGveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MMyuV4kxEeOMQ5AKLd10lA" annotatedElement="_MMyuVokxEeOMQ5AKLd10lA">
<body>The specification BehavioralFeature must be a feature (possibly inherited) of the context BehavioredClassifier of the Behavior.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MMyuWIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>_'context'.feature->includes(specification)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MMyuWYkxEeOMQ5AKLd10lA" general="_00owUGvdEdq4DLWZOhbdEA"/>
<ownedAttribute xmi:id="_MMyuWokxEeOMQ5AKLd10lA" name="context" type="_iY7sMGvsEdqG6fBIPwe-mw" isReadOnly="true" isDerived="true" subsettedProperty="_zYrE4La-EeCRxrN1JUGuxA" association="_MM74R4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMyuW4kxEeOMQ5AKLd10lA" annotatedElement="_MMyuWokxEeOMQ5AKLd10lA">
<body>The BehavioredClassifier that is the context for the execution of the Behavior. A Behavior that is directly owned as a nestedClassifier does not have a context. Otherwise, to determine the context of a Behavior, find the first BehavioredClassifier reached by following the chain of owner relationships from the Behavior, if any. If there is such a BehavioredClassifier, then it is the context, unless it is itself a Behavior with a non-empty context, in which case that is also the context for the original Behavior. For example, following this algorithm, the context of an entry Behavior in a StateMachine is the BehavioredClassifier that owns the StateMachine. The features of the context BehavioredClassifier as well as the Elements visible to the context Classifier are visible to the Behavior.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMyuXIkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_Q1JqkNwaEeCT5O2F6sGn5g" name="isReentrant">
<ownedComment xmi:id="_MMzVYIkxEeOMQ5AKLd10lA" annotatedElement="_Q1JqkNwaEeCT5O2F6sGn5g">
<body>Tells whether the Behavior can be invoked while it is still executing from a previous invocation.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bT4g4BO2EeKHzP1wfcteDQ"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MMzVYYkxEeOMQ5AKLd10lA" value="true"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMz8cIkxEeOMQ5AKLd10lA" name="ownedParameter" type="_KyaPMGveEdq4DLWZOhbdEA" isOrdered="true" aggregation="composite" subsettedProperty="_MNQBWIkxEeOMQ5AKLd10lA" association="_MM9GYIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMz8cYkxEeOMQ5AKLd10lA" annotatedElement="_MMz8cIkxEeOMQ5AKLd10lA">
<body>References a list of Parameters to the Behavior which describes the order and type of arguments that can be given when the Behavior is invoked and of the values which will be returned when the Behavior completes its execution.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMz8cokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMz8c4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMz8dIkxEeOMQ5AKLd10lA" name="ownedParameterSet" type="_MMWCYIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MNQBWIkxEeOMQ5AKLd10lA" association="_MM74RIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMz8dYkxEeOMQ5AKLd10lA" annotatedElement="_MMz8dIkxEeOMQ5AKLd10lA">
<body>The ParameterSets owned by this Behavior.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMz8dokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMz8d4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MMz8eIkxEeOMQ5AKLd10lA" name="postcondition" type="_MNAJsIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MNQBXIkxEeOMQ5AKLd10lA" association="_MM8fVokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MMz8eYkxEeOMQ5AKLd10lA" annotatedElement="_MMz8eIkxEeOMQ5AKLd10lA">
<body>An optional set of Constraints specifying what is fulfilled after the execution of the Behavior is completed, if its precondition was fulfilled before its invocation.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MMz8eokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MMz8e4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MM0jgIkxEeOMQ5AKLd10lA" name="precondition" type="_MNAJsIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MNQBXIkxEeOMQ5AKLd10lA" association="_MM8fU4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MM0jgYkxEeOMQ5AKLd10lA" annotatedElement="_MM0jgIkxEeOMQ5AKLd10lA">
<body>An optional set of Constraints specifying what must be fulfilled before the Behavior is invoked.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MM0jgokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MM0jg4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MM0jhIkxEeOMQ5AKLd10lA" name="specification" type="_rHT3YKOsEdqi_5gqUMOQtA" association="_MMsnuYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MM0jhYkxEeOMQ5AKLd10lA" annotatedElement="_MM0jhIkxEeOMQ5AKLd10lA">
<body>Designates a BehavioralFeature that the Behavior implements. The BehavioralFeature must be owned by the BehavioredClassifier that owns the Behavior or be inherited by it. The Parameters of the BehavioralFeature and the implementing Behavior must match. A Behavior does not need to have a specification, in which case it either is the classifierBehavior of a BehavioredClassifier or it can only be invoked by another Behavior of the Classifier.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MM0jhokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MM0jh4kxEeOMQ5AKLd10lA" name="redefinedBehavior" type="_TUPtYGveEdq4DLWZOhbdEA" subsettedProperty="_ML_dIYkxEeOMQ5AKLd10lA" association="_MM8fWYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MM0jiIkxEeOMQ5AKLd10lA" annotatedElement="_MM0jh4kxEeOMQ5AKLd10lA">
<body>References the Behavior that this Behavior redefines. A subtype of Behavior may redefine any other subtype of Behavior. If the Behavior implements a BehavioralFeature, it replaces the redefined Behavior. If the Behavior is a classifierBehavior, it extends the redefined Behavior.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MM0jiYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MM0jiokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedOperation xmi:id="_Zp2iwFYgEdqB6vblk3tuMA" name="context" visibility="protected" bodyCondition="_MM0jjIkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MM0ji4kxEeOMQ5AKLd10lA" annotatedElement="_Zp2iwFYgEdqB6vblk3tuMA">
<body>A Behavior that is directly owned as a nestedClassifier does not have a context. Otherwise, to determine the context of a Behavior, find the first BehavioredClassifier reached by following the chain of owner relationships from the Behavior, if any. If there is such a BehavioredClassifier, then it is the context, unless it is itself a Behavior with a non-empty context, in which case that is also the context for the original Behavior.</body>
</ownedComment>
<ownedRule xmi:id="_MM0jjIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_Zp2iwFYgEdqB6vblk3tuMA _MMyuWokxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MM0jjYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if nestingClass &lt;> null then&#xD;
null&#xD;
else&#xD;
let b:BehavioredClassifier = self.behavioredClassifier(self.owner) in&#xD;
if b.oclIsKindOf(Behavior) and b.oclAsType(Behavior)._'context' &lt;> null then &#xD;
b.oclAsType(Behavior)._'context'&#xD;
else &#xD;
b &#xD;
endif&#xD;
endif&#xD;
)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_flYtEFYgEdqB6vblk3tuMA" name="result" type="_iY7sMGvsEdqG6fBIPwe-mw" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MM0jjokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FIHcsVYjEdqB6vblk3tuMA" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MM1KkIkxEeOMQ5AKLd10lA" name="behavioredClassifier" isQuery="true" precondition="_MM1KkokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MM1KkYkxEeOMQ5AKLd10lA" annotatedElement="_MM1KkIkxEeOMQ5AKLd10lA">
<body>The first BehavioredClassifier reached by following the chain of owner relationships from the Behavior, if any.</body>
</ownedComment>
<ownedRule xmi:id="_MM1KkokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MM1KkIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MM1Kk4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>if from.oclIsKindOf(BehavioredClassifier) then&#xD;
from.oclAsType(BehavioredClassifier)&#xD;
else if from.owner = null then&#xD;
null&#xD;
else&#xD;
self.behavioredClassifier(from.owner)&#xD;
endif&#xD;
endif</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MM1KlIkxEeOMQ5AKLd10lA" name="from" type="_kl90MGvbEdq4DLWZOhbdEA"/>
<ownedParameter xmi:id="_MM1KlYkxEeOMQ5AKLd10lA" name="result" type="_iY7sMGvsEdqG6fBIPwe-mw" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MM1KlokxEeOMQ5AKLd10lA"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MM1Kl4kxEeOMQ5AKLd10lA" name="inputParameters" bodyCondition="_MM1KmYkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MM1KmIkxEeOMQ5AKLd10lA" annotatedElement="_MM1Kl4kxEeOMQ5AKLd10lA">
<body>The in and inout ownedParameters of the Behavior.</body>
</ownedComment>
<ownedRule xmi:id="_MM1KmYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MM1Kl4kxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MM1KmokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (ownedParameter->select(direction=ParameterDirectionKind::_'in' or direction=ParameterDirectionKind::inout))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MM1Km4kxEeOMQ5AKLd10lA" name="result" type="_KyaPMGveEdq4DLWZOhbdEA" isOrdered="true" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MM1KnIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MM1KnYkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MM1KnokxEeOMQ5AKLd10lA" name="outputParameters" bodyCondition="_MM1KoIkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MM1Kn4kxEeOMQ5AKLd10lA" annotatedElement="_MM1KnokxEeOMQ5AKLd10lA">
<body>The out, inout and return ownedParameters.</body>
</ownedComment>
<ownedRule xmi:id="_MM1KoIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MM1KnokxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MM1KoYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (ownedParameter->select(direction=ParameterDirectionKind::out or direction=ParameterDirectionKind::inout or direction=ParameterDirectionKind::return))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MM1KookxEeOMQ5AKLd10lA" name="result" type="_KyaPMGveEdq4DLWZOhbdEA" isOrdered="true" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MM1Ko4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MM1KpIkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MM2YsIkxEeOMQ5AKLd10lA" name="CallEvent">
<ownedComment xmi:id="_MM2YsYkxEeOMQ5AKLd10lA" annotatedElement="_MM2YsIkxEeOMQ5AKLd10lA">
<body>A CallEvent models the receipt by an object of a message invoking a call of an Operation.</body>
</ownedComment>
<generalization xmi:id="_MM2YsokxEeOMQ5AKLd10lA" general="_MM2_z4kxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MM2Ys4kxEeOMQ5AKLd10lA" name="operation" type="_M4X2IGveEdq4DLWZOhbdEA" association="_MM74QIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MM2YtIkxEeOMQ5AKLd10lA" annotatedElement="_MM2Ys4kxEeOMQ5AKLd10lA">
<body>Designates the Operation whose invocation raised the CalEvent.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MM2YtYkxEeOMQ5AKLd10lA" name="ChangeEvent">
<ownedComment xmi:id="_MM2YtokxEeOMQ5AKLd10lA" annotatedElement="_MM2YtYkxEeOMQ5AKLd10lA">
<body>A ChangeEvent models a change in the system configuration that makes a condition true.</body>
</ownedComment>
<generalization xmi:id="_MM2Yt4kxEeOMQ5AKLd10lA" general="_MM2YuokxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MM2YuIkxEeOMQ5AKLd10lA" name="changeExpression" type="_MPO-UIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MM7RN4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MM2YuYkxEeOMQ5AKLd10lA" annotatedElement="_MM2YuIkxEeOMQ5AKLd10lA">
<body>A Boolean-valued ValueSpecification that will result in a ChangeEvent whenever its value changes from false to true.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MM2YuokxEeOMQ5AKLd10lA" name="Event" isAbstract="true">
<ownedComment xmi:id="_MM2Yu4kxEeOMQ5AKLd10lA" annotatedElement="_MM2YuokxEeOMQ5AKLd10lA">
<body>An Event is the specification of some occurrence that may potentially trigger effects by an object.</body>
</ownedComment>
<generalization xmi:id="_MM2YvIkxEeOMQ5AKLd10lA" general="_jKxnwGwLEdq7X4sGURiZYA"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MM2_wIkxEeOMQ5AKLd10lA" name="FunctionBehavior">
<ownedComment xmi:id="_MM2_wYkxEeOMQ5AKLd10lA" annotatedElement="_MM2_wIkxEeOMQ5AKLd10lA">
<body>A FunctionBehavior is an OpaqueBehavior that does not access or modify any objects or other external data.</body>
</ownedComment>
<ownedRule xmi:id="_MM2_wokxEeOMQ5AKLd10lA" name="one_output_parameter" constrainedElement="_MM2_wIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MM2_w4kxEeOMQ5AKLd10lA" annotatedElement="_MM2_wokxEeOMQ5AKLd10lA">
<body>A FunctionBehavior has at least one output Parameter.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MM2_xIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>self.ownedParameter->&#xD;
select(p | p.direction = ParameterDirectionKind::out or p.direction= ParameterDirectionKind::inout or p.direction= ParameterDirectionKind::return)->size() >= 1</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MM2_xYkxEeOMQ5AKLd10lA" name="types_of_parameters" constrainedElement="_MM2_wIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MM2_xokxEeOMQ5AKLd10lA" annotatedElement="_MM2_xYkxEeOMQ5AKLd10lA">
<body>The types of the ownedParameters are all DataTypes, which may not nest anything but other DataTypes.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MM2_x4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>ownedParameter->forAll(p | p.type &lt;> null and&#xD;
p.type.oclIsTypeOf(DataType) and hasAllDataTypeAttributes(p.type.oclAsType(DataType)))</body>
</specification>
</ownedRule>
<generalization xmi:id="_MM2_yIkxEeOMQ5AKLd10lA" general="_k9tagLG4EeCDe8CO90iVKQ"/>
<ownedOperation xmi:id="_MM2_yYkxEeOMQ5AKLd10lA" name="hasAllDataTypeAttributes" bodyCondition="_MM2_y4kxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MM2_yokxEeOMQ5AKLd10lA" annotatedElement="_MM2_yYkxEeOMQ5AKLd10lA">
<body>The hasAllDataTypeAttributes query tests whether the types of the attributes of the given DataType are all DataTypes, and similarly for all those DataTypes.</body>
</ownedComment>
<ownedRule xmi:id="_MM2_y4kxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MM2_yYkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MM2_zIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (d.ownedAttribute->forAll(a |&#xD;
a.type.oclIsKindOf(DataType) and&#xD;
hasAllDataTypeAttributes(a.type.oclAsType(DataType))))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MM2_zYkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_MM2_zokxEeOMQ5AKLd10lA" name="d" type="__1ap4HLzEdqziYxiZo0YtA"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MM2_z4kxEeOMQ5AKLd10lA" name="MessageEvent" isAbstract="true">
<ownedComment xmi:id="_MM2_0IkxEeOMQ5AKLd10lA" annotatedElement="_MM2_z4kxEeOMQ5AKLd10lA">
<body>A MessageEvent specifies the receipt by an object of either an Operation call or a Signal instance.</body>
</ownedComment>
<generalization xmi:id="_MM2_0YkxEeOMQ5AKLd10lA" general="_MM2YuokxEeOMQ5AKLd10lA"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_k9tagLG4EeCDe8CO90iVKQ" name="OpaqueBehavior">
<ownedComment xmi:id="_MM2_0okxEeOMQ5AKLd10lA" annotatedElement="_k9tagLG4EeCDe8CO90iVKQ">
<body>An OpaqueBehavior is a Behavior whose specification is given in a textual language other than UML.</body>
</ownedComment>
<generalization xmi:id="_MM3m0IkxEeOMQ5AKLd10lA" general="_TUPtYGveEdq4DLWZOhbdEA"/>
<ownedAttribute xmi:id="_k9tagbG4EeCDe8CO90iVKQ" name="body" isOrdered="true" isUnique="false">
<ownedComment xmi:id="_MM3m0YkxEeOMQ5AKLd10lA" annotatedElement="_k9tagbG4EeCDe8CO90iVKQ">
<body>Specifies the behavior in one or more languages.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MM3m0okxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MM3m04kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_k9tahLG4EeCDe8CO90iVKQ" name="language" isOrdered="true">
<ownedComment xmi:id="_MM4N4IkxEeOMQ5AKLd10lA" annotatedElement="_k9tahLG4EeCDe8CO90iVKQ">
<body>Languages the body strings use in the same order as the body strings.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MM408IkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MM408YkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MM5cAIkxEeOMQ5AKLd10lA" name="SignalEvent">
<ownedComment xmi:id="_MM5cAYkxEeOMQ5AKLd10lA" annotatedElement="_MM5cAIkxEeOMQ5AKLd10lA">
<body>A SignalEvent represents the receipt of an asynchronous Signal instance.</body>
</ownedComment>
<generalization xmi:id="_MM5cAokxEeOMQ5AKLd10lA" general="_MM2_z4kxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MM5cA4kxEeOMQ5AKLd10lA" name="signal" type="_Pu3O0HL0EdqziYxiZo0YtA" association="_MM7RM4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MM5cBIkxEeOMQ5AKLd10lA" annotatedElement="_MM5cA4kxEeOMQ5AKLd10lA">
<body>The specific Signal that is associated with this SignalEvent.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MM6DEIkxEeOMQ5AKLd10lA" name="TimeEvent">
<ownedComment xmi:id="_MM6DEYkxEeOMQ5AKLd10lA" annotatedElement="_MM6DEIkxEeOMQ5AKLd10lA">
<body>A TimeEvent is an Event that occurs at a specific point in time.</body>
</ownedComment>
<ownedRule xmi:id="_MM6DEokxEeOMQ5AKLd10lA" name="when_non_negative" constrainedElement="_MM6DEIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MM6DE4kxEeOMQ5AKLd10lA" annotatedElement="_MM6DEokxEeOMQ5AKLd10lA">
<body>The ValueSpecification when must return a non-negative Integer.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MM6DFIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>when.integerValue() >= 0</body>
</specification>
</ownedRule>
<generalization xmi:id="_MM6DFYkxEeOMQ5AKLd10lA" general="_MM2YuokxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MM6DFokxEeOMQ5AKLd10lA" name="isRelative">
<ownedComment xmi:id="_MM6DF4kxEeOMQ5AKLd10lA" annotatedElement="_MM6DFokxEeOMQ5AKLd10lA">
<body>Specifies whether the TimeEvent is specified as an absolute or relative time.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MM6DGIkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MM6DGYkxEeOMQ5AKLd10lA" name="when" type="_DylKEH4YEdq7cMP_l1l5Gg" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MM7RMIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MM6DGokxEeOMQ5AKLd10lA" annotatedElement="_MM6DGYkxEeOMQ5AKLd10lA">
<body>Specifies the time of the TimeEvent.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MM6qIIkxEeOMQ5AKLd10lA" name="Trigger">
<ownedComment xmi:id="_MM6qIYkxEeOMQ5AKLd10lA" annotatedElement="_MM6qIIkxEeOMQ5AKLd10lA">
<body>A Trigger specifies a specific point at which an Event occurrence may trigger an effect in a Behavior. A Trigger may be qualified by the Port on which the Event occurred.</body>
</ownedComment>
<ownedRule xmi:id="_MM6qIokxEeOMQ5AKLd10lA" name="trigger_with_ports" constrainedElement="_MM6qIIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MM6qI4kxEeOMQ5AKLd10lA" annotatedElement="_MM6qIokxEeOMQ5AKLd10lA">
<body>If a Trigger specifies one or more ports, the event of the Trigger must be a MessageEvent.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MM6qJIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>port->notEmpty() implies event.oclIsKindOf(MessageEvent)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MM6qJYkxEeOMQ5AKLd10lA" general="_csVgUGvtEdqG6fBIPwe-mw"/>
<ownedAttribute xmi:id="_MM6qJokxEeOMQ5AKLd10lA" name="event" type="_MM2YuokxEeOMQ5AKLd10lA" association="_MM6qLIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MM6qJ4kxEeOMQ5AKLd10lA" annotatedElement="_MM6qJokxEeOMQ5AKLd10lA">
<body>The Event that detected by the Trigger.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MM6qKIkxEeOMQ5AKLd10lA" name="port" type="_ZAuvEGveEdq4DLWZOhbdEA" association="_MM6qMIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MM6qKYkxEeOMQ5AKLd10lA" annotatedElement="_MM6qKIkxEeOMQ5AKLd10lA">
<body>A optional Port of through which the given effect is detected.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MM6qKokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MM6qK4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MM6qLIkxEeOMQ5AKLd10lA" name="A_event_trigger" memberEnd="_MM6qJokxEeOMQ5AKLd10lA _MM6qLYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MM6qLYkxEeOMQ5AKLd10lA" name="trigger" type="_MM6qIIkxEeOMQ5AKLd10lA" association="_MM6qLIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MM6qLokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MM6qL4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MM6qMIkxEeOMQ5AKLd10lA" name="A_port_trigger" memberEnd="_MM6qKIkxEeOMQ5AKLd10lA _MM6qMYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MM6qMYkxEeOMQ5AKLd10lA" name="trigger" type="_MM6qIIkxEeOMQ5AKLd10lA" association="_MM6qMIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MM6qMokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MM6qM4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MM7RMIkxEeOMQ5AKLd10lA" name="A_when_timeEvent" memberEnd="_MM6DGYkxEeOMQ5AKLd10lA _MM7RMYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MM7RMYkxEeOMQ5AKLd10lA" name="timeEvent" type="_MM6DEIkxEeOMQ5AKLd10lA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MM7RMIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MM7RMokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MM7RM4kxEeOMQ5AKLd10lA" name="A_signal_signalEvent" memberEnd="_MM5cA4kxEeOMQ5AKLd10lA _MM7RNIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MM7RNIkxEeOMQ5AKLd10lA" name="signalEvent" type="_MM5cAIkxEeOMQ5AKLd10lA" association="_MM7RM4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MM7RNYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MM7RNokxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MM7RN4kxEeOMQ5AKLd10lA" name="A_changeExpression_changeEvent" memberEnd="_MM2YuIkxEeOMQ5AKLd10lA _MM7ROIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MM7ROIkxEeOMQ5AKLd10lA" name="changeEvent" type="_MM2YtYkxEeOMQ5AKLd10lA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MM7RN4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MM7ROYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MM74QIkxEeOMQ5AKLd10lA" name="A_operation_callEvent" memberEnd="_MM2Ys4kxEeOMQ5AKLd10lA _MM74QYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MM74QYkxEeOMQ5AKLd10lA" name="callEvent" type="_MM2YsIkxEeOMQ5AKLd10lA" association="_MM74QIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MM74QokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MM74Q4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MM74RIkxEeOMQ5AKLd10lA" name="A_ownedParameterSet_behavior" memberEnd="_MMz8dIkxEeOMQ5AKLd10lA _MM74RYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MM74RYkxEeOMQ5AKLd10lA" name="behavior" type="_TUPtYGveEdq4DLWZOhbdEA" subsettedProperty="_1vzv0LbIEeCRxrN1JUGuxA" association="_MM74RIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MM74RokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MM74R4kxEeOMQ5AKLd10lA" name="A_context_behavior" isDerived="true" memberEnd="_MMyuWokxEeOMQ5AKLd10lA _MM8fUIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MM8fUIkxEeOMQ5AKLd10lA" name="behavior" type="_TUPtYGveEdq4DLWZOhbdEA" subsettedProperty="_MMmhFYkxEeOMQ5AKLd10lA" association="_MM74R4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MM8fUYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MM8fUokxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MM8fU4kxEeOMQ5AKLd10lA" name="A_precondition_behavior" memberEnd="_MM0jgIkxEeOMQ5AKLd10lA _MM8fVIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MM8fVIkxEeOMQ5AKLd10lA" name="behavior" type="_TUPtYGveEdq4DLWZOhbdEA" subsettedProperty="_MNAJwIkxEeOMQ5AKLd10lA" association="_MM8fU4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MM8fVYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MM8fVokxEeOMQ5AKLd10lA" name="A_postcondition_behavior" memberEnd="_MMz8eIkxEeOMQ5AKLd10lA _MM8fV4kxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MM8fV4kxEeOMQ5AKLd10lA" name="behavior" type="_TUPtYGveEdq4DLWZOhbdEA" subsettedProperty="_MNAJwIkxEeOMQ5AKLd10lA" association="_MM8fVokxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MM8fWIkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MM8fWYkxEeOMQ5AKLd10lA" name="A_redefinedBehavior_behavior" memberEnd="_MM0jh4kxEeOMQ5AKLd10lA _MM8fWokxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MM8fWokxEeOMQ5AKLd10lA" name="behavior" type="_TUPtYGveEdq4DLWZOhbdEA" subsettedProperty="_MMsAoYkxEeOMQ5AKLd10lA" association="_MM8fWYkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MM8fW4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MM8fXIkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MM9GYIkxEeOMQ5AKLd10lA" name="A_ownedParameter_behavior" memberEnd="_MMz8cIkxEeOMQ5AKLd10lA _MM9GYYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MM9GYYkxEeOMQ5AKLd10lA" name="behavior" type="_TUPtYGveEdq4DLWZOhbdEA" subsettedProperty="_1vzv0LbIEeCRxrN1JUGuxA" association="_MM9GYIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MM9GYokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MM-UgIkxEeOMQ5AKLd10lA" name="Abstraction">
<ownedComment xmi:id="_MM-UgYkxEeOMQ5AKLd10lA" annotatedElement="_MM-UgIkxEeOMQ5AKLd10lA">
<body>An Abstraction is a Relationship that relates two Elements or sets of Elements that represent the same concept at different levels of abstraction or from different viewpoints.</body>
</ownedComment>
<generalization xmi:id="_MM-UgokxEeOMQ5AKLd10lA" general="_rEDGkGwKEdq7X4sGURiZYA"/>
<ownedAttribute xmi:id="_MM-Ug4kxEeOMQ5AKLd10lA" name="mapping" type="_ChRfcGveEdq4DLWZOhbdEA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MNeDwIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MM-UhIkxEeOMQ5AKLd10lA" annotatedElement="_MM-Ug4kxEeOMQ5AKLd10lA">
<body>An OpaqueExpression that states the abstraction relationship between the supplier(s) and the client(s). In some cases, such as derivation, it is usually formal and unidirectional; in other cases, such as trace, it is usually informal and bidirectional. The mapping expression is optional and may be omitted if the precise relationship between the Elements is not specified.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MM-UhYkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_Q8DcULGzEeCDe8CO90iVKQ" name="Comment">
<ownedComment xmi:id="_MM-UhokxEeOMQ5AKLd10lA" annotatedElement="_Q8DcULGzEeCDe8CO90iVKQ">
<body>A Comment is a textual annotation that can be attached to a set of Elements.</body>
</ownedComment>
<generalization xmi:id="_MM-7kIkxEeOMQ5AKLd10lA" general="_kl90MGvbEdq4DLWZOhbdEA"/>
<ownedAttribute xmi:id="_MM-7kYkxEeOMQ5AKLd10lA" name="annotatedElement" type="_kl90MGvbEdq4DLWZOhbdEA" association="_MNdcs4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MM-7kokxEeOMQ5AKLd10lA" annotatedElement="_MM-7kYkxEeOMQ5AKLd10lA">
<body>References the Element(s) being commented.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MM-7k4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MM-7lIkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_WiuJ4LGzEeCDe8CO90iVKQ" name="body">
<ownedComment xmi:id="_MM-7lYkxEeOMQ5AKLd10lA" annotatedElement="_WiuJ4LGzEeCDe8CO90iVKQ">
<body>Specifies a string that is the comment.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MM-7lokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MNAJsIkxEeOMQ5AKLd10lA" name="Constraint">
<ownedComment xmi:id="_MNAJsYkxEeOMQ5AKLd10lA" annotatedElement="_MNAJsIkxEeOMQ5AKLd10lA">
<body>A Constraint is a condition or restriction expressed in natural language text or in a machine readable language for the purpose of declaring some of the semantics of an Element or set of Elements.</body>
</ownedComment>
<ownedRule xmi:id="_MNAJsokxEeOMQ5AKLd10lA" name="boolean_value" constrainedElement="_MNAJsIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNAJs4kxEeOMQ5AKLd10lA" annotatedElement="_MNAJsokxEeOMQ5AKLd10lA">
<body>The ValueSpecification for a Constraint must evaluate to a Boolean value.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNAJtIkxEeOMQ5AKLd10lA" language=""/>
</ownedRule>
<ownedRule xmi:id="_MNAJtYkxEeOMQ5AKLd10lA" name="no_side_effects" constrainedElement="_MNAJsIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNAJtokxEeOMQ5AKLd10lA" annotatedElement="_MNAJtYkxEeOMQ5AKLd10lA">
<body>Evaluating the ValueSpecification for a Constraint must not have side effects.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNAJt4kxEeOMQ5AKLd10lA" language=""/>
</ownedRule>
<ownedRule xmi:id="_MNAJuIkxEeOMQ5AKLd10lA" name="not_apply_to_self" constrainedElement="_MNAJsIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNAJuYkxEeOMQ5AKLd10lA" annotatedElement="_MNAJuIkxEeOMQ5AKLd10lA">
<body>A Constraint cannot be applied to itself.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNAJuokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>not constrainedElement->includes(self)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MNAJu4kxEeOMQ5AKLd10lA" general="_jKxnwGwLEdq7X4sGURiZYA"/>
<ownedAttribute xmi:id="_MNAJvIkxEeOMQ5AKLd10lA" name="constrainedElement" type="_kl90MGvbEdq4DLWZOhbdEA" isOrdered="true" association="_MNc1pYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNAJvYkxEeOMQ5AKLd10lA" annotatedElement="_MNAJvIkxEeOMQ5AKLd10lA">
<body>The ordered set of Elements referenced by this Constraint.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNAJvokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNAJv4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNAJwIkxEeOMQ5AKLd10lA" name="context" type="_ZiwkoGwLEdq7X4sGURiZYA" subsettedProperty="_1vzv0LbIEeCRxrN1JUGuxA" association="_MNaZZokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNAJwYkxEeOMQ5AKLd10lA" annotatedElement="_MNAJwIkxEeOMQ5AKLd10lA">
<body>Specifies the Namespace that owns the Constraint.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNAJwokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNAJw4kxEeOMQ5AKLd10lA" name="specification" type="_MPO-UIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MNdcsIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNAJxIkxEeOMQ5AKLd10lA" annotatedElement="_MNAJw4kxEeOMQ5AKLd10lA">
<body>A condition that must be true when evaluated in order for the Constraint to be satisfied.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_rEDGkGwKEdq7X4sGURiZYA" name="Dependency">
<ownedComment xmi:id="_MNAwwIkxEeOMQ5AKLd10lA" annotatedElement="_rEDGkGwKEdq7X4sGURiZYA">
<body>A Dependency is a Relationship that signifies that a single model Element or a set of model Elements requires other model Elements for their specification or implementation. This means that the complete semantics of the client Element(s) are either semantically or structurally dependent on the definition of the supplier Element(s).</body>
</ownedComment>
<generalization xmi:id="_MNAwwYkxEeOMQ5AKLd10lA" general="_JBgfoKPAEdqi_5gqUMOQtA"/>
<generalization xmi:id="_MNAwwokxEeOMQ5AKLd10lA" general="_jKxnwGwLEdq7X4sGURiZYA"/>
<ownedAttribute xmi:id="_sD4acEzSEeO2z-YY6ENIIA" name="client" type="_csVgUGvtEdqG6fBIPwe-mw" subsettedProperty="_MNB-4IkxEeOMQ5AKLd10lA" association="_epbu4EzPEeO2z-YY6ENIIA">
<ownedComment xmi:id="_MNAww4kxEeOMQ5AKLd10lA" annotatedElement="_sD4acEzSEeO2z-YY6ENIIA">
<body>The Element(s) dependent on the supplier Element(s). In some cases (such as a trace Abstraction) the assignment of direction (that is, the designation of the client Element) is at the discretion of the modeler and is a stipulation.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNAwxIkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNBX0IkxEeOMQ5AKLd10lA" name="supplier" type="_csVgUGvtEdqG6fBIPwe-mw" subsettedProperty="_MNB-44kxEeOMQ5AKLd10lA" association="_MNc1oIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNBX0YkxEeOMQ5AKLd10lA" annotatedElement="_MNBX0IkxEeOMQ5AKLd10lA">
<body>The Element(s) on which the client Element(s) depend in some respect. The modeler may stipulate a sense of Dependency direction suitable for their domain.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNBX0okxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_JBgfoKPAEdqi_5gqUMOQtA" name="DirectedRelationship" isAbstract="true">
<ownedComment xmi:id="_MNBX04kxEeOMQ5AKLd10lA" annotatedElement="_JBgfoKPAEdqi_5gqUMOQtA">
<body>A DirectedRelationship represents a relationship between a collection of source model Elements and a collection of target model Elements.</body>
</ownedComment>
<generalization xmi:id="_MNBX1IkxEeOMQ5AKLd10lA" general="_DH62EKPAEdqi_5gqUMOQtA"/>
<ownedAttribute xmi:id="_MNB-4IkxEeOMQ5AKLd10lA" name="source" type="_kl90MGvbEdq4DLWZOhbdEA" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_MNTrtokxEeOMQ5AKLd10lA" association="_MNcOk4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNB-4YkxEeOMQ5AKLd10lA" annotatedElement="_MNB-4IkxEeOMQ5AKLd10lA">
<body>Specifies the source Element(s) of the DirectedRelationship.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNB-4okxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNB-44kxEeOMQ5AKLd10lA" name="target" type="_kl90MGvbEdq4DLWZOhbdEA" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_MNTrtokxEeOMQ5AKLd10lA" association="_MNcOl4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNB-5IkxEeOMQ5AKLd10lA" annotatedElement="_MNB-44kxEeOMQ5AKLd10lA">
<body>Specifies the target Element(s) of the DirectedRelationship.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNB-5YkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_kl90MGvbEdq4DLWZOhbdEA" name="Element" isAbstract="true">
<ownedComment xmi:id="_MNB-5okxEeOMQ5AKLd10lA" annotatedElement="_kl90MGvbEdq4DLWZOhbdEA">
<body>An Element is a constituent of a model. As such, it has the capability of owning other Elements.</body>
</ownedComment>
<ownedRule xmi:id="_MNB-54kxEeOMQ5AKLd10lA" name="has_owner" constrainedElement="_kl90MGvbEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MNB-6IkxEeOMQ5AKLd10lA" annotatedElement="_MNB-54kxEeOMQ5AKLd10lA">
<body>Elements that must be owned must have an owner.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNB-6YkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>mustBeOwned() implies owner->notEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNCl8IkxEeOMQ5AKLd10lA" name="not_own_self" constrainedElement="_kl90MGvbEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MNCl8YkxEeOMQ5AKLd10lA" annotatedElement="_MNCl8IkxEeOMQ5AKLd10lA">
<body>An element may not directly or indirectly own itself.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNCl8okxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>not allOwnedElements()->includes(self)</body>
</specification>
</ownedRule>
<generalization xmi:id="_rcp_MGvbEdq4DLWZOhbdEA">
<general xmi:type="uml:Class" href="Ecore.uml#_SeWihMX_EduPJbEsMYXjUQ"/>
</generalization>
<ownedAttribute xmi:id="_MNCl84kxEeOMQ5AKLd10lA" name="ownedComment" type="_Q8DcULGzEeCDe8CO90iVKQ" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MNcOkIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNCl9IkxEeOMQ5AKLd10lA" annotatedElement="_MNCl84kxEeOMQ5AKLd10lA">
<body>The Comments owned by this Element.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNCl9YkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNCl9okxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_GDD2YAtAEeGcpbeCPJfCmw" name="ownedElement" type="_kl90MGvbEdq4DLWZOhbdEA" isReadOnly="true" aggregation="composite" isDerived="true" isDerivedUnion="true" association="_bU41QAtAEeGcpbeCPJfCmw">
<ownedComment xmi:id="_MNCl94kxEeOMQ5AKLd10lA" annotatedElement="_GDD2YAtAEeGcpbeCPJfCmw">
<body>The Elements owned by this Element.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNCl-IkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNCl-YkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_N3hRMAtAEeGcpbeCPJfCmw" name="owner" type="_kl90MGvbEdq4DLWZOhbdEA" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_bU41QAtAEeGcpbeCPJfCmw">
<ownedComment xmi:id="_MNCl-okxEeOMQ5AKLd10lA" annotatedElement="_N3hRMAtAEeGcpbeCPJfCmw">
<body>The Element that owns this Element.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNCl-4kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedOperation xmi:id="_jlv7EGvgEdq4DLWZOhbdEA" name="addKeyword">
<ownedComment xmi:id="_2oMhsOwbEdqYHf-imTcTdw" annotatedElement="_jlv7EGvgEdq4DLWZOhbdEA">
<body>Adds the specified keyword to this element.</body>
</ownedComment>
<ownedParameter xmi:id="_y6GO4GvgEdq4DLWZOhbdEA" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_mQqpMGvgEdq4DLWZOhbdEA" name="keyword" effect="read">
<ownedComment xmi:id="_3Z64UPIAEdulR8T2OJRyFQ" annotatedElement="_mQqpMGvgEdq4DLWZOhbdEA">
<body>The keyword to add.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_DkmGMGv1Edq7X4sGURiZYA" name="applyStereotype">
<ownedComment xmi:id="_KtkUgOwcEdqYHf-imTcTdw" annotatedElement="_DkmGMGv1Edq7X4sGURiZYA">
<body>Applies the specified stereotype to this element.</body>
</ownedComment>
<ownedParameter xmi:id="_GGbJwGv1Edq7X4sGURiZYA" direction="return">
<type xmi:type="uml:Class" href="Ecore.uml#_SeWijsX_EduPJbEsMYXjUQ"/>
</ownedParameter>
<ownedParameter xmi:id="_GmnFsGv1Edq7X4sGURiZYA" name="stereotype" type="_A7vDAGv0Edq7X4sGURiZYA" effect="read">
<ownedComment xmi:id="_4-WfgPIAEdulR8T2OJRyFQ" annotatedElement="_GmnFsGv1Edq7X4sGURiZYA">
<body>The stereotype to apply.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_Tj6BkYbbEdq0WtDJCT4EaQ" name="createEAnnotation">
<ownedComment xmi:id="_u8XzkOwdEdqYHf-imTcTdw" annotatedElement="_Tj6BkYbbEdq0WtDJCT4EaQ">
<body>Creates an annotation with the specified source and this element as its model element.</body>
</ownedComment>
<ownedParameter xmi:id="_YE_AEIbbEdq0WtDJCT4EaQ" direction="return">
<type xmi:type="uml:Class" href="Ecore.uml#_SeWj6cX_EduPJbEsMYXjUQ"/>
</ownedParameter>
<ownedParameter xmi:id="_aXUPEIbbEdq0WtDJCT4EaQ" name="source" effect="read">
<ownedComment xmi:id="_6bxfwPIAEdulR8T2OJRyFQ" annotatedElement="_aXUPEIbbEdq0WtDJCT4EaQ">
<body>The source for the new annotation.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_XebbkGvuEdqG6fBIPwe-mw" name="destroy">
<ownedComment xmi:id="_skdy8ewbEdqYHf-imTcTdw" annotatedElement="_XebbkGvuEdqG6fBIPwe-mw">
<body>Destroys this element by removing all cross references to/from it and removing it from its containing resource or object.</body>
</ownedComment>
</ownedOperation>
<ownedOperation xmi:id="_bx0EsGvgEdq4DLWZOhbdEA" name="getKeywords" isQuery="true">
<ownedComment xmi:id="_0r7CQOwbEdqYHf-imTcTdw" annotatedElement="_bx0EsGvgEdq4DLWZOhbdEA">
<body>Retrieves the keywords for this element.</body>
</ownedComment>
<ownedParameter xmi:id="_fZ0tMGvgEdq4DLWZOhbdEA" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_hyHaQGvgEdq4DLWZOhbdEA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_hyHaQWvgEdq4DLWZOhbdEA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_CQI_QGv2Edq7X4sGURiZYA" name="getApplicableStereotype" isQuery="true">
<ownedComment xmi:id="_UmbQAOwcEdqYHf-imTcTdw" annotatedElement="_CQI_QGv2Edq7X4sGURiZYA">
<body>Retrieves the stereotype with the specified qualified name that is applicable to this element, or null if no such stereotype is applicable.</body>
</ownedComment>
<ownedParameter xmi:id="_FC9FIGv2Edq7X4sGURiZYA" type="_A7vDAGv0Edq7X4sGURiZYA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_i-hrkGv3Edq7X4sGURiZYA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_i-hrkWv3Edq7X4sGURiZYA" value="1"/>
</ownedParameter>
<ownedParameter xmi:id="_FX9r0Gv2Edq7X4sGURiZYA" name="qualifiedName" effect="read">
<ownedComment xmi:id="__AGmkPIAEdulR8T2OJRyFQ" annotatedElement="_FX9r0Gv2Edq7X4sGURiZYA">
<body>The qualified name of the applicable stereotype to retrieve.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_7oNB8Gv1Edq7X4sGURiZYA" name="getApplicableStereotypes" isQuery="true">
<ownedComment xmi:id="_RO894OwcEdqYHf-imTcTdw" annotatedElement="_7oNB8Gv1Edq7X4sGURiZYA">
<body>Retrieves the stereotypes that are applicable to this element, including those that are required and/or may already be applied.</body>
</ownedComment>
<ownedParameter xmi:id="_-J4UgGv1Edq7X4sGURiZYA" type="_A7vDAGv0Edq7X4sGURiZYA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Ah4GoGv2Edq7X4sGURiZYA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Ah4GoWv2Edq7X4sGURiZYA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_pCV6EGv1Edq7X4sGURiZYA" name="getAppliedStereotype" isQuery="true">
<ownedComment xmi:id="_IBy1UOwdEdqYHf-imTcTdw" annotatedElement="_pCV6EGv1Edq7X4sGURiZYA">
<body>Retrieves the stereotype with the specified qualified name that is applied to this element, or null if no such stereotype is applied.</body>
</ownedComment>
<ownedParameter xmi:id="_rLbtgGv1Edq7X4sGURiZYA" type="_A7vDAGv0Edq7X4sGURiZYA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mO2M0Gv3Edq7X4sGURiZYA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mO2M0Wv3Edq7X4sGURiZYA" value="1"/>
</ownedParameter>
<ownedParameter xmi:id="_r4SMcGv1Edq7X4sGURiZYA" name="qualifiedName" effect="read">
<ownedComment xmi:id="_A1hQEPIBEdulR8T2OJRyFQ" annotatedElement="_r4SMcGv1Edq7X4sGURiZYA">
<body>The qualified name of the applied stereotype to retrieve.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_ZR1OsGv1Edq7X4sGURiZYA" name="getAppliedStereotypes" isQuery="true">
<ownedComment xmi:id="_Dj1cQOwdEdqYHf-imTcTdw" annotatedElement="_ZR1OsGv1Edq7X4sGURiZYA">
<body>Retrieves the stereotypes that are applied to this element.</body>
</ownedComment>
<ownedParameter xmi:id="_cNu_IGv1Edq7X4sGURiZYA" type="_A7vDAGv0Edq7X4sGURiZYA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_eHU-AGv1Edq7X4sGURiZYA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_eHU-AWv1Edq7X4sGURiZYA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_KpgogGv3Edq7X4sGURiZYA" name="getAppliedSubstereotype" isQuery="true">
<ownedComment xmi:id="_P0Fs8OwdEdqYHf-imTcTdw" annotatedElement="_KpgogGv3Edq7X4sGURiZYA">
<body>Retrieves the substereotype of the specified stereotype with the specified qualified name that is applied to this element, or null if no such stereotype is applied.</body>
</ownedComment>
<ownedParameter xmi:id="_KpgogWv3Edq7X4sGURiZYA" type="_A7vDAGv0Edq7X4sGURiZYA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_qg4pwGv3Edq7X4sGURiZYA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qg4pwWv3Edq7X4sGURiZYA" value="1"/>
</ownedParameter>
<ownedParameter xmi:id="_NcK9YGv3Edq7X4sGURiZYA" name="stereotype" type="_A7vDAGv0Edq7X4sGURiZYA" effect="read">
<ownedComment xmi:id="_ZJ1IgPIBEdulR8T2OJRyFQ" annotatedElement="_NcK9YGv3Edq7X4sGURiZYA">
<body>The superstereotype of the applied substereotype to retrieve.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="_Kpgogmv3Edq7X4sGURiZYA" name="qualifiedName" effect="read">
<ownedComment xmi:id="_UNpiYPIBEdulR8T2OJRyFQ" annotatedElement="_Kpgogmv3Edq7X4sGURiZYA">
<body>The qualified name of the applied substereotype to retrieve.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="__s2tsGv2Edq7X4sGURiZYA" name="getAppliedSubstereotypes" isQuery="true">
<ownedComment xmi:id="_NAYPMOwdEdqYHf-imTcTdw" annotatedElement="__s2tsGv2Edq7X4sGURiZYA">
<body>Retrieves the substereotypes of the specified stereotype that are applied to this element.</body>
</ownedComment>
<ownedParameter xmi:id="__s2tsWv2Edq7X4sGURiZYA" type="_A7vDAGv0Edq7X4sGURiZYA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="__s2ts2v2Edq7X4sGURiZYA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__s2tsmv2Edq7X4sGURiZYA" value="*"/>
</ownedParameter>
<ownedParameter xmi:id="_DJsA8Gv3Edq7X4sGURiZYA" name="stereotype" type="_A7vDAGv0Edq7X4sGURiZYA" effect="read">
<ownedComment xmi:id="_cF4C4PIBEdulR8T2OJRyFQ" annotatedElement="_DJsA8Gv3Edq7X4sGURiZYA">
<body>The superstereotype of the applied substereotypes to retrieve.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_Gv0hgGv0Edq7X4sGURiZYA" name="getModel" isQuery="true">
<ownedComment xmi:id="__lAEoOwbEdqYHf-imTcTdw" annotatedElement="_Gv0hgGv0Edq7X4sGURiZYA">
<body>Retrieves the model that owns (either directly or indirectly) this element.</body>
</ownedComment>
<ownedParameter xmi:id="_Pj1U0Gv0Edq7X4sGURiZYA" type="_NVhqMGv0Edq7X4sGURiZYA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_zCjv4Gv3Edq7X4sGURiZYA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zCjv4Wv3Edq7X4sGURiZYA" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_674ZYGvzEdq7X4sGURiZYA" name="getNearestPackage" isQuery="true">
<ownedComment xmi:id="_8qbw8OwbEdqYHf-imTcTdw" annotatedElement="_674ZYGvzEdq7X4sGURiZYA">
<body>Retrieves the nearest package that owns (either directly or indirectly) this element, or the element itself (if it is a package).</body>
</ownedComment>
<ownedParameter xmi:id="_DyktQGv0Edq7X4sGURiZYA" type="_-cvRAGvzEdq7X4sGURiZYA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_1aQnEGv3Edq7X4sGURiZYA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_1aQnEWv3Edq7X4sGURiZYA" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_4IIuwKO_Edqi_5gqUMOQtA" name="getRelationships">
<ownedComment xmi:id="_znllgOwdEdqYHf-imTcTdw" annotatedElement="_4IIuwKO_Edqi_5gqUMOQtA">
<body>Retrieves the relationships in which this element is involved.</body>
</ownedComment>
<ownedParameter xmi:id="_OGNIkKPAEdqi_5gqUMOQtA" type="_DH62EKPAEdqi_5gqUMOQtA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_R5soUKPAEdqi_5gqUMOQtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_R5soUaPAEdqi_5gqUMOQtA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_UJyboKPAEdqi_5gqUMOQtA" name="getRelationships">
<ownedComment xmi:id="_1gb9gOwdEdqYHf-imTcTdw" annotatedElement="_UJyboKPAEdqi_5gqUMOQtA">
<body>Retrieves the relationships of the specified type in which this element is involved.</body>
</ownedComment>
<ownedParameter xmi:id="_UJyboaPAEdqi_5gqUMOQtA" type="_DH62EKPAEdqi_5gqUMOQtA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_UJybo6PAEdqi_5gqUMOQtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_UJyboqPAEdqi_5gqUMOQtA" value="*"/>
</ownedParameter>
<ownedParameter xmi:id="_XBN7wKPAEdqi_5gqUMOQtA" name="eClass" effect="read">
<ownedComment xmi:id="_mhklsPIBEdulR8T2OJRyFQ" annotatedElement="_XBN7wKPAEdqi_5gqUMOQtA">
<body>The (meta)type of the relationships to retrieve.</body>
</ownedComment>
<type xmi:type="uml:Class" href="Ecore.uml#_SeWizcX_EduPJbEsMYXjUQ"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_yk3QYHFfEdqziYxiZo0YtA" name="getRequiredStereotype" isQuery="true">
<ownedComment xmi:id="_-7KA8OwcEdqYHf-imTcTdw" annotatedElement="_yk3QYHFfEdqziYxiZo0YtA">
<body>Retrieves the stereotype with the specified qualified name that is required for this element, or null if no such stereotype is required.</body>
</ownedComment>
<ownedParameter xmi:id="_8ovJEHFfEdqziYxiZo0YtA" type="_A7vDAGv0Edq7X4sGURiZYA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Cpo7kHFgEdqziYxiZo0YtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Cpo7kXFgEdqziYxiZo0YtA" value="1"/>
</ownedParameter>
<ownedParameter xmi:id="_9NGaYHFfEdqziYxiZo0YtA" name="qualifiedName" effect="read">
<ownedComment xmi:id="_r0tTQPIBEdulR8T2OJRyFQ" annotatedElement="_9NGaYHFfEdqziYxiZo0YtA">
<body>The qualified name of the required stereotype to retrieve.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_ko32oHFfEdqziYxiZo0YtA" name="getRequiredStereotypes" isQuery="true">
<ownedComment xmi:id="_57OjQOwcEdqYHf-imTcTdw" annotatedElement="_ko32oHFfEdqziYxiZo0YtA">
<body>Retrieves the stereotypes that are required for this element.</body>
</ownedComment>
<ownedParameter xmi:id="_qX5O8HFfEdqziYxiZo0YtA" type="_A7vDAGv0Edq7X4sGURiZYA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KSF6sHFgEdqziYxiZo0YtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KSF6sXFgEdqziYxiZo0YtA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_fBOfQKPAEdqi_5gqUMOQtA" name="getSourceDirectedRelationships">
<ownedComment xmi:id="_5RsBkOwdEdqYHf-imTcTdw" annotatedElement="_fBOfQKPAEdqi_5gqUMOQtA">
<body>Retrieves the directed relationships for which this element is a source.</body>
</ownedComment>
<ownedParameter xmi:id="_fBOfQaPAEdqi_5gqUMOQtA" type="_JBgfoKPAEdqi_5gqUMOQtA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_fBOfQ6PAEdqi_5gqUMOQtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_fBOfQqPAEdqi_5gqUMOQtA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_fBOfRKPAEdqi_5gqUMOQtA" name="getSourceDirectedRelationships">
<ownedComment xmi:id="_63dskOwdEdqYHf-imTcTdw" annotatedElement="_fBOfRKPAEdqi_5gqUMOQtA">
<body>Retrieves the directed relationships of the specified type for which this element is a source.</body>
</ownedComment>
<ownedParameter xmi:id="_fBOfRaPAEdqi_5gqUMOQtA" type="_JBgfoKPAEdqi_5gqUMOQtA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_fBOfR6PAEdqi_5gqUMOQtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_fBOfRqPAEdqi_5gqUMOQtA" value="*"/>
</ownedParameter>
<ownedParameter xmi:id="_fBOfSKPAEdqi_5gqUMOQtA" name="eClass" effect="read">
<ownedComment xmi:id="_3TviYPIBEdulR8T2OJRyFQ" annotatedElement="_fBOfSKPAEdqi_5gqUMOQtA">
<body>The (meta)type of the directed relationships to retrieve.</body>
</ownedComment>
<type xmi:type="uml:Class" href="Ecore.uml#_SeWizcX_EduPJbEsMYXjUQ"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_Rw07YGv1Edq7X4sGURiZYA" name="getStereotypeApplication" isQuery="true">
<ownedComment xmi:id="_uNjbMOwcEdqYHf-imTcTdw" annotatedElement="_Rw07YGv1Edq7X4sGURiZYA">
<body>Retrieves the application of the specified stereotype for this element, or null if no such stereotype application exists.</body>
</ownedComment>
<ownedParameter xmi:id="_Uw5aIGv1Edq7X4sGURiZYA" direction="return">
<type xmi:type="uml:Class" href="Ecore.uml#_SeWijsX_EduPJbEsMYXjUQ"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4QyvUGv3Edq7X4sGURiZYA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4QyvUWv3Edq7X4sGURiZYA" value="1"/>
</ownedParameter>
<ownedParameter xmi:id="_VtGjsGv1Edq7X4sGURiZYA" name="stereotype" type="_A7vDAGv0Edq7X4sGURiZYA" effect="read">
<ownedComment xmi:id="_7ovzwPIBEdulR8T2OJRyFQ" annotatedElement="_VtGjsGv1Edq7X4sGURiZYA">
<body>The stereotype for which to retrieve an application.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_IFUr8GvgEdq4DLWZOhbdEA" name="getStereotypeApplications" isQuery="true">
<ownedComment xmi:id="_hu_owOwcEdqYHf-imTcTdw" annotatedElement="_IFUr8GvgEdq4DLWZOhbdEA">
<body>Retrieves the stereotype applications for this element.</body>
</ownedComment>
<ownedParameter xmi:id="_PAVWQGvgEdq4DLWZOhbdEA" direction="return">
<type xmi:type="uml:Class" href="Ecore.uml#_SeWijsX_EduPJbEsMYXjUQ"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_oJqQgGvzEdq7X4sGURiZYA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_oJqQgWvzEdq7X4sGURiZYA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_t5G5gKPAEdqi_5gqUMOQtA" name="getTargetDirectedRelationships">
<ownedComment xmi:id="_9qIBcOwdEdqYHf-imTcTdw" annotatedElement="_t5G5gKPAEdqi_5gqUMOQtA">
<body>Retrieves the directed relationships for which this element is a target.</body>
</ownedComment>
<ownedParameter xmi:id="_t5G5gaPAEdqi_5gqUMOQtA" type="_JBgfoKPAEdqi_5gqUMOQtA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_t5G5g6PAEdqi_5gqUMOQtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_t5G5gqPAEdqi_5gqUMOQtA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_t5G5hKPAEdqi_5gqUMOQtA" name="getTargetDirectedRelationships">
<ownedComment xmi:id="__rxJEOwdEdqYHf-imTcTdw" annotatedElement="_t5G5hKPAEdqi_5gqUMOQtA">
<body>Retrieves the directed relationships of the specified type for which this element is a target.</body>
</ownedComment>
<ownedParameter xmi:id="_t5G5haPAEdqi_5gqUMOQtA" type="_JBgfoKPAEdqi_5gqUMOQtA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_t5G5h6PAEdqi_5gqUMOQtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_t5G5hqPAEdqi_5gqUMOQtA" value="*"/>
</ownedParameter>
<ownedParameter xmi:id="_t5G5iKPAEdqi_5gqUMOQtA" name="eClass" effect="read">
<ownedComment xmi:id="_-J0pYPIBEdulR8T2OJRyFQ" annotatedElement="_t5G5iKPAEdqi_5gqUMOQtA">
<body>The (meta)type of the directed relationships to retrieve.</body>
</ownedComment>
<type xmi:type="uml:Class" href="Ecore.uml#_SeWizcX_EduPJbEsMYXjUQ"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_WGA9gGv2Edq7X4sGURiZYA" name="getValue" isQuery="true">
<ownedComment xmi:id="_jrANAOwdEdqYHf-imTcTdw" annotatedElement="_WGA9gGv2Edq7X4sGURiZYA">
<body>Retrieves the value of the property with the specified name in the specified stereotype for this element.</body>
</ownedComment>
<ownedParameter xmi:id="_dYH5MGv2Edq7X4sGURiZYA" direction="return">
<type xmi:type="uml:PrimitiveType" href="Ecore.uml#_SeWkccX_EduPJbEsMYXjUQ"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8gS1oGv3Edq7X4sGURiZYA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8gS1oWv3Edq7X4sGURiZYA" value="1"/>
</ownedParameter>
<ownedParameter xmi:id="_g41m4Gv2Edq7X4sGURiZYA" name="stereotype" type="_A7vDAGv0Edq7X4sGURiZYA" effect="read">
<ownedComment xmi:id="_DgsncPICEdulR8T2OJRyFQ" annotatedElement="_g41m4Gv2Edq7X4sGURiZYA">
<body>The stereotype for which to retrieve the value.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="_eZGOAGv2Edq7X4sGURiZYA" name="propertyName" effect="read">
<ownedComment xmi:id="_DAp1cPICEdulR8T2OJRyFQ" annotatedElement="_eZGOAGv2Edq7X4sGURiZYA">
<body>The name of the property whose value to retrieve.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_7f8qYGvgEdq4DLWZOhbdEA" name="hasKeyword" isQuery="true">
<ownedComment xmi:id="_vBX6QOwbEdqYHf-imTcTdw" annotatedElement="_7f8qYGvgEdq4DLWZOhbdEA">
<body>Determines whether this element has the specified keyword.</body>
</ownedComment>
<ownedParameter xmi:id="_9mECUGvgEdq4DLWZOhbdEA" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="__FRyUGvgEdq4DLWZOhbdEA" name="keyword" effect="read">
<ownedComment xmi:id="_Oe9r0PICEdulR8T2OJRyFQ" annotatedElement="__FRyUGvgEdq4DLWZOhbdEA">
<body>The keyword in question.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_JbZFAGv2Edq7X4sGURiZYA" name="hasValue" isQuery="true">
<ownedComment xmi:id="_b4HfgOwdEdqYHf-imTcTdw" annotatedElement="_JbZFAGv2Edq7X4sGURiZYA">
<body>Determines whether this element has a (non-default) value for the property with the specified name in the specified stereotype.</body>
</ownedComment>
<ownedParameter xmi:id="_L6F8EGv2Edq7X4sGURiZYA" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_MqEngGv2Edq7X4sGURiZYA" name="stereotype" type="_A7vDAGv0Edq7X4sGURiZYA" effect="read">
<ownedComment xmi:id="_Zk10EPICEdulR8T2OJRyFQ" annotatedElement="_MqEngGv2Edq7X4sGURiZYA">
<body>The stereotype for which to test the property.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="_RaWfoGv2Edq7X4sGURiZYA" name="propertyName" effect="read">
<ownedComment xmi:id="_XhkUwPICEdulR8T2OJRyFQ" annotatedElement="_RaWfoGv2Edq7X4sGURiZYA">
<body>The name of the property in question.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_aAC2wHFfEdqziYxiZo0YtA" name="isStereotypeApplicable" isQuery="true">
<ownedComment xmi:id="_ErVFQOwcEdqYHf-imTcTdw" annotatedElement="_aAC2wHFfEdqziYxiZo0YtA">
<body>Determines whether the specified stereotype is applicable to this element.</body>
</ownedComment>
<ownedParameter xmi:id="_dR_vsHFfEdqziYxiZo0YtA" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_d5o-gHFfEdqziYxiZo0YtA" name="stereotype" type="_A7vDAGv0Edq7X4sGURiZYA" effect="read">
<ownedComment xmi:id="_bLzx4PICEdulR8T2OJRyFQ" annotatedElement="_d5o-gHFfEdqziYxiZo0YtA">
<body>The stereotype in question.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_hDDkwGv0Edq7X4sGURiZYA" name="isStereotypeApplied" isQuery="true">
<ownedComment xmi:id="_HClQgOwcEdqYHf-imTcTdw" annotatedElement="_hDDkwGv0Edq7X4sGURiZYA">
<body>Determines whether the specified stereotype is applied to this element.</body>
</ownedComment>
<ownedParameter xmi:id="_izQ-IGv0Edq7X4sGURiZYA" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_jenoQGv0Edq7X4sGURiZYA" name="stereotype" type="_A7vDAGv0Edq7X4sGURiZYA" effect="read">
<ownedComment xmi:id="_c-11wPICEdulR8T2OJRyFQ" annotatedElement="_jenoQGv0Edq7X4sGURiZYA">
<body>The stereotype in question.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_nd4TIGv0Edq7X4sGURiZYA" name="isStereotypeRequired" isQuery="true">
<ownedComment xmi:id="_GPxTgOwcEdqYHf-imTcTdw" annotatedElement="_nd4TIGv0Edq7X4sGURiZYA">
<body>Determines whether the specified stereotype is required for this element.</body>
</ownedComment>
<ownedParameter xmi:id="_A-TZYGv1Edq7X4sGURiZYA" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_0weVIGv1Edq7X4sGURiZYA" name="stereotype" type="_A7vDAGv0Edq7X4sGURiZYA" effect="read">
<ownedComment xmi:id="_gsqLUPICEdulR8T2OJRyFQ" annotatedElement="_0weVIGv1Edq7X4sGURiZYA">
<body>The stereotype in question.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_qB6tQGvgEdq4DLWZOhbdEA" name="removeKeyword">
<ownedComment xmi:id="_4b-zgOwbEdqYHf-imTcTdw" annotatedElement="_qB6tQGvgEdq4DLWZOhbdEA">
<body>Removes the specified keyword from this element.</body>
</ownedComment>
<ownedParameter xmi:id="_1_Pa4GvgEdq4DLWZOhbdEA" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_3u_hQGvgEdq4DLWZOhbdEA" name="keyword" effect="read">
<ownedComment xmi:id="_79s6oPICEdulR8T2OJRyFQ" annotatedElement="_3u_hQGvgEdq4DLWZOhbdEA">
<body>The keyword to remove.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_nMWzYGv2Edq7X4sGURiZYA" name="setValue">
<ownedComment xmi:id="_qqfHoOwdEdqYHf-imTcTdw" annotatedElement="_nMWzYGv2Edq7X4sGURiZYA">
<body>Sets the value of the property with the specified name in the specified stereotype for this element.</body>
</ownedComment>
<ownedParameter xmi:id="_resLQGv2Edq7X4sGURiZYA" name="stereotype" type="_A7vDAGv0Edq7X4sGURiZYA" effect="read">
<ownedComment xmi:id="_DkshMPIDEdulR8T2OJRyFQ" annotatedElement="_resLQGv2Edq7X4sGURiZYA">
<body>The stereotype for which to set the value.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="_o6B2IGv2Edq7X4sGURiZYA" name="propertyName" effect="read">
<ownedComment xmi:id="_BIFU0PIDEdulR8T2OJRyFQ" annotatedElement="_o6B2IGv2Edq7X4sGURiZYA">
<body>The name of the property whose value to set.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
<ownedParameter xmi:id="_m5bH4GzIEdqNr-AKm4G4QQ" name="newValue" effect="read">
<ownedComment xmi:id="_9wvlkPICEdulR8T2OJRyFQ" annotatedElement="_m5bH4GzIEdqNr-AKm4G4QQ">
<body>The new value for the property.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="Ecore.uml#_SeWkccX_EduPJbEsMYXjUQ"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_LUETUGv1Edq7X4sGURiZYA" name="unapplyStereotype">
<ownedComment xmi:id="_MSdOsOwcEdqYHf-imTcTdw" annotatedElement="_LUETUGv1Edq7X4sGURiZYA">
<body>Unapplies the specified stereotype from this element.</body>
</ownedComment>
<ownedParameter xmi:id="_NqRVsGv1Edq7X4sGURiZYA" direction="return">
<type xmi:type="uml:Class" href="Ecore.uml#_SeWijsX_EduPJbEsMYXjUQ"/>
</ownedParameter>
<ownedParameter xmi:id="_OI9c0Gv1Edq7X4sGURiZYA" name="stereotype" type="_A7vDAGv0Edq7X4sGURiZYA" effect="read">
<ownedComment xmi:id="_FrjgAPIDEdulR8T2OJRyFQ" annotatedElement="_OI9c0Gv1Edq7X4sGURiZYA">
<body>The stereotype to unapply.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MNDNAIkxEeOMQ5AKLd10lA" name="allOwnedElements" bodyCondition="_MNDNAokxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MNDNAYkxEeOMQ5AKLd10lA" annotatedElement="_MNDNAIkxEeOMQ5AKLd10lA">
<body>The query allOwnedElements() gives all of the direct and indirect ownedElements of an Element.</body>
</ownedComment>
<ownedRule xmi:id="_MNDNAokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MNDNAIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNDNA4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (ownedElement->union(ownedElement->collect(e | e.allOwnedElements()))->asSet())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MNDNBIkxEeOMQ5AKLd10lA" name="result" type="_kl90MGvbEdq4DLWZOhbdEA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNDNBYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNDNBokxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MNDNB4kxEeOMQ5AKLd10lA" name="mustBeOwned" bodyCondition="_MNDNCYkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MNDNCIkxEeOMQ5AKLd10lA" annotatedElement="_MNDNB4kxEeOMQ5AKLd10lA">
<body>The query mustBeOwned() indicates whether Elements of this type must have an owner. Subclasses of Element that do not require an owner must override this operation.</body>
</ownedComment>
<ownedRule xmi:id="_MNDNCYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MNDNB4kxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNDNCokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (true)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MNDNC4kxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_RPl78GwIEdq7X4sGURiZYA" name="ElementImport">
<ownedComment xmi:id="_MNEbIIkxEeOMQ5AKLd10lA" annotatedElement="_RPl78GwIEdq7X4sGURiZYA">
<body>An ElementImport identifies a NamedElement in a Namespace other than the one that owns that NamedElement and allows the NamedElement to be referenced using an unqualified name in the Namespace owning the ElementImport.</body>
</ownedComment>
<ownedRule xmi:id="_MNEbIYkxEeOMQ5AKLd10lA" name="imported_element_is_public" constrainedElement="_RPl78GwIEdq7X4sGURiZYA">
<ownedComment xmi:id="_MNEbIokxEeOMQ5AKLd10lA" annotatedElement="_MNEbIYkxEeOMQ5AKLd10lA">
<body>An importedElement has either public visibility or no visibility at all.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNEbI4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>importedElement.visibility &lt;> null implies importedElement.visibility = VisibilityKind::public</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNFCMIkxEeOMQ5AKLd10lA" name="visibility_public_or_private" constrainedElement="_RPl78GwIEdq7X4sGURiZYA">
<ownedComment xmi:id="_MNFCMYkxEeOMQ5AKLd10lA" annotatedElement="_MNFCMIkxEeOMQ5AKLd10lA">
<body>The visibility of an ElementImport is either public or private.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNFCMokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>visibility = VisibilityKind::public or visibility = VisibilityKind::private</body>
</specification>
</ownedRule>
<generalization xmi:id="_MNFCM4kxEeOMQ5AKLd10lA" general="_JBgfoKPAEdqi_5gqUMOQtA"/>
<ownedAttribute xmi:id="_fO7PkLG0EeCDe8CO90iVKQ" name="alias">
<ownedComment xmi:id="_MNFCNIkxEeOMQ5AKLd10lA" annotatedElement="_fO7PkLG0EeCDe8CO90iVKQ">
<body>Specifies the name that should be added to the importing Namespace in lieu of the name of the imported PackagableElement. The alias must not clash with any other member in the importing Namespace. By default, no alias is used.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNFCNYkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNFpQIkxEeOMQ5AKLd10lA" name="importedElement" type="_jKxnwGwLEdq7X4sGURiZYA" subsettedProperty="_MNB-44kxEeOMQ5AKLd10lA" association="_MNbnhokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNFpQYkxEeOMQ5AKLd10lA" annotatedElement="_MNFpQIkxEeOMQ5AKLd10lA">
<body>Specifies the PackageableElement whose name is to be added to a Namespace.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MNFpQokxEeOMQ5AKLd10lA" name="importingNamespace" type="_ZiwkoGwLEdq7X4sGURiZYA" subsettedProperty="_MNB-4IkxEeOMQ5AKLd10lA _N3hRMAtAEeGcpbeCPJfCmw" association="_MNaZZIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNFpQ4kxEeOMQ5AKLd10lA" annotatedElement="_MNFpQokxEeOMQ5AKLd10lA">
<body>Specifies the Namespace that imports a PackageableElement from another Namespace.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MNFpRIkxEeOMQ5AKLd10lA" name="visibility" type="_AyM_oGwMEdq7X4sGURiZYA">
<ownedComment xmi:id="_MNFpRYkxEeOMQ5AKLd10lA" annotatedElement="_MNFpRIkxEeOMQ5AKLd10lA">
<body>Specifies the visibility of the imported PackageableElement within the importingNamespace, i.e., whether the importedElement will in turn be visible to other Namespaces. If the ElementImport is public, the importedElement will be visible outside the importingNamespace while, if the ElementImport is private, it will not.</body>
</ownedComment>
<defaultValue xmi:type="uml:InstanceValue" xmi:id="_MNFpRokxEeOMQ5AKLd10lA" type="_AyM_oGwMEdq7X4sGURiZYA" instance="_MNXWEYkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedOperation xmi:id="_MNFpR4kxEeOMQ5AKLd10lA" name="getName" bodyCondition="_MNFpSYkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MNFpSIkxEeOMQ5AKLd10lA" annotatedElement="_MNFpR4kxEeOMQ5AKLd10lA">
<body>The query getName() returns the name under which the imported PackageableElement will be known in the importing namespace.</body>
</ownedComment>
<ownedRule xmi:id="_MNFpSYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MNFpR4kxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNFpSokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if alias->notEmpty() then
alias
else
importedElement.name
endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MNFpS4kxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_Gjgl0GveEdq4DLWZOhbdEA" name="MultiplicityElement" isAbstract="true">
<ownedComment xmi:id="_MNGQUIkxEeOMQ5AKLd10lA" annotatedElement="_Gjgl0GveEdq4DLWZOhbdEA">
<body>A multiplicity is a definition of an inclusive interval of non-negative integers beginning with a lower bound and ending with a (possibly infinite) upper bound. A MultiplicityElement embeds this information to specify the allowable cardinalities for an instantiation of the Element.</body>
</ownedComment>
<ownedRule xmi:id="_MNGQUYkxEeOMQ5AKLd10lA" name="upper_ge_lower" constrainedElement="_Gjgl0GveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MNGQUokxEeOMQ5AKLd10lA" annotatedElement="_MNGQUYkxEeOMQ5AKLd10lA">
<body>The upper bound must be greater than or equal to the lower bound.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNGQU4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>upperBound() >= lowerBound()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNGQVIkxEeOMQ5AKLd10lA" name="lower_ge_0" constrainedElement="_Gjgl0GveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MNGQVYkxEeOMQ5AKLd10lA" annotatedElement="_MNGQVIkxEeOMQ5AKLd10lA">
<body>The lower bound must be a non-negative integer literal.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNGQVokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>lowerBound() >= 0</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNGQV4kxEeOMQ5AKLd10lA" name="value_specification_no_side_effects" constrainedElement="_Gjgl0GveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MNGQWIkxEeOMQ5AKLd10lA" annotatedElement="_MNGQV4kxEeOMQ5AKLd10lA">
<body>If a non-literal ValueSpecification is used for lowerValue or upperValue, then evaluating that specification must not have side effects.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNGQWYkxEeOMQ5AKLd10lA" language=""/>
</ownedRule>
<ownedRule xmi:id="_MNGQWokxEeOMQ5AKLd10lA" name="value_specification_constant" constrainedElement="_Gjgl0GveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MNGQW4kxEeOMQ5AKLd10lA" annotatedElement="_MNGQWokxEeOMQ5AKLd10lA">
<body>If a non-literal ValueSpecification is used for lowerValue or upperValue, then that specification must be a constant expression.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNGQXIkxEeOMQ5AKLd10lA" language=""/>
</ownedRule>
<ownedRule xmi:id="_MNG3YIkxEeOMQ5AKLd10lA" name="lower_is_integer" constrainedElement="_Gjgl0GveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MNG3YYkxEeOMQ5AKLd10lA" annotatedElement="_MNG3YIkxEeOMQ5AKLd10lA">
<body>If it is not empty, then lowerValue must have an Integer value.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNG3YokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>lowerValue &lt;> null implies lowerValue.integerValue() &lt;> null</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNG3Y4kxEeOMQ5AKLd10lA" name="upper_is_unlimitedNatural" constrainedElement="_Gjgl0GveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MNG3ZIkxEeOMQ5AKLd10lA" annotatedElement="_MNG3Y4kxEeOMQ5AKLd10lA">
<body>If it is not empty, then upperValue must have an UnlimitedNatural value.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNG3ZYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>upperValue &lt;> null implies upperValue.unlimitedValue() &lt;> null</body>
</specification>
</ownedRule>
<generalization xmi:id="_MNG3ZokxEeOMQ5AKLd10lA" general="_kl90MGvbEdq4DLWZOhbdEA"/>
<ownedAttribute xmi:id="_MNG3Z4kxEeOMQ5AKLd10lA" name="isOrdered">
<ownedComment xmi:id="_MNG3aIkxEeOMQ5AKLd10lA" annotatedElement="_MNG3Z4kxEeOMQ5AKLd10lA">
<body>For a multivalued multiplicity, this attribute specifies whether the values in an instantiation of this MultiplicityElement are sequentially ordered.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MNG3aYkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNG3aokxEeOMQ5AKLd10lA" name="isUnique">
<ownedComment xmi:id="_MNG3a4kxEeOMQ5AKLd10lA" annotatedElement="_MNG3aokxEeOMQ5AKLd10lA">
<body>For a multivalued multiplicity, this attributes specifies whether the values in an instantiation of this MultiplicityElement are unique.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MNG3bIkxEeOMQ5AKLd10lA" value="true"/>
</ownedAttribute>
<ownedAttribute xmi:id="_5i6zsIRPEeOnobsWSpJONg" name="lower" isDerived="true">
<ownedComment xmi:id="_MNG3bYkxEeOMQ5AKLd10lA" annotatedElement="_5i6zsIRPEeOnobsWSpJONg">
<body>The lower bound of the multiplicity interval.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
<defaultValue xmi:type="uml:LiteralInteger" xmi:id="_VRJOQIRQEeOnobsWSpJONg" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNHecIkxEeOMQ5AKLd10lA" name="lowerValue" type="_MPO-UIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MNbngIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNHecYkxEeOMQ5AKLd10lA" annotatedElement="_MNHecIkxEeOMQ5AKLd10lA">
<body>The specification of the lower bound for this multiplicity.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNHecokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_ZQJacIRQEeOnobsWSpJONg" name="upper" isDerived="true">
<ownedComment xmi:id="_MNHec4kxEeOMQ5AKLd10lA" annotatedElement="_ZQJacIRQEeOnobsWSpJONg">
<body>The upper bound of the multiplicity interval.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
<defaultValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ffIFMIRQEeOnobsWSpJONg" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNHedIkxEeOMQ5AKLd10lA" name="upperValue" type="_MPO-UIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MNbng4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNHedYkxEeOMQ5AKLd10lA" annotatedElement="_MNHedIkxEeOMQ5AKLd10lA">
<body>The specification of the upper bound for this multiplicity.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNHedokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedOperation xmi:id="_qtCaIFYkEdqB6vblk3tuMA" name="setLower" visibility="protected">
<ownedParameter xmi:id="_scWboFYkEdqB6vblk3tuMA" name="newLower" visibility="protected" effect="read">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_vlEgEFYkEdqB6vblk3tuMA" name="setUpper" visibility="protected">
<ownedParameter xmi:id="_xJp4QFYkEdqB6vblk3tuMA" name="newUpper" visibility="protected" effect="read">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MNHed4kxEeOMQ5AKLd10lA" name="compatibleWith" bodyCondition="_MNHeeYkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MNHeeIkxEeOMQ5AKLd10lA" annotatedElement="_MNHed4kxEeOMQ5AKLd10lA">
<body>The operation compatibleWith takes another multiplicity as input. It returns true if the other multiplicity is wider than, or the same as, self.</body>
</ownedComment>
<ownedRule xmi:id="_MNHeeYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MNHed4kxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNHeeokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = ((other.lowerBound() &lt;= self.lowerBound()) and ((other.upperBound() = *) or (self.upperBound() &lt;= other.upperBound())))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MNHee4kxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_MNHefIkxEeOMQ5AKLd10lA" name="other" type="_Gjgl0GveEdq4DLWZOhbdEA"/>
</ownedOperation>
<ownedOperation xmi:id="_MNIFgIkxEeOMQ5AKLd10lA" name="includesMultiplicity" bodyCondition="_MNIFhIkxEeOMQ5AKLd10lA" isQuery="true" precondition="_MNIFgokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNIFgYkxEeOMQ5AKLd10lA" annotatedElement="_MNIFgIkxEeOMQ5AKLd10lA">
<body>The query includesMultiplicity() checks whether this multiplicity includes all the cardinalities allowed by the specified multiplicity.</body>
</ownedComment>
<ownedRule xmi:id="_MNIFgokxEeOMQ5AKLd10lA" name="pre" constrainedElement="_MNIFgIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNIFg4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>self.upperBound()->notEmpty() and self.lowerBound()->notEmpty() and M.upperBound()->notEmpty() and M.lowerBound()->notEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNIFhIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MNIFgIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNIFhYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = ((self.lowerBound() &lt;= M.lowerBound()) and (self.upperBound() >= M.upperBound()))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MNIFhokxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_MNIFh4kxEeOMQ5AKLd10lA" name="M" type="_Gjgl0GveEdq4DLWZOhbdEA"/>
</ownedOperation>
<ownedOperation xmi:id="_MNIFiIkxEeOMQ5AKLd10lA" name="is" bodyCondition="_MNIFiokxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MNIFiYkxEeOMQ5AKLd10lA" annotatedElement="_MNIFiIkxEeOMQ5AKLd10lA">
<body>The operation is determines if the upper and lower bound of the ranges are the ones given.</body>
</ownedComment>
<ownedRule xmi:id="_MNIFiokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MNIFiIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNIFi4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (lowerbound = self.lowerBound() and upperbound = self.upperBound())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MNIFjIkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_MNIFjYkxEeOMQ5AKLd10lA" name="lowerbound">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
</ownedParameter>
<ownedParameter xmi:id="_MNIFjokxEeOMQ5AKLd10lA" name="upperbound">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MNIskIkxEeOMQ5AKLd10lA" name="isMultivalued" bodyCondition="_MNIslIkxEeOMQ5AKLd10lA" isQuery="true" precondition="_MNIskokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNIskYkxEeOMQ5AKLd10lA" annotatedElement="_MNIskIkxEeOMQ5AKLd10lA">
<body>The query isMultivalued() checks whether this multiplicity has an upper bound greater than one.</body>
</ownedComment>
<ownedRule xmi:id="_MNIskokxEeOMQ5AKLd10lA" name="pre" constrainedElement="_MNIskIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNIsk4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>upperBound()->notEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNIslIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MNIskIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNIslYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (upperBound() > 1)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MNIslokxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_Y8IpELL3EeCBifIhhuFqZA" name="lower" visibility="protected" bodyCondition="_MNIsmIkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MNIsl4kxEeOMQ5AKLd10lA" annotatedElement="_Y8IpELL3EeCBifIhhuFqZA">
<body>The derived lower attribute must equal the lowerBound.</body>
</ownedComment>
<ownedRule xmi:id="_MNIsmIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_Y8IpELL3EeCBifIhhuFqZA _5i6zsIRPEeOnobsWSpJONg">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNIsmYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (lowerBound())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_Y8IpEbL3EeCBifIhhuFqZA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNIsmokxEeOMQ5AKLd10lA"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MNJToIkxEeOMQ5AKLd10lA" name="lowerBound" bodyCondition="_MNJTookxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MNJToYkxEeOMQ5AKLd10lA" annotatedElement="_MNJToIkxEeOMQ5AKLd10lA">
<body>The query lowerBound() returns the lower bound of the multiplicity as an integer, which is the integerValue of lowerValue, if this is given, and 1 otherwise.</body>
</ownedComment>
<ownedRule xmi:id="_MNJTookxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MNJToIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNJTo4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if (lowerValue=null or lowerValue.integerValue()=null) then 1 else lowerValue.integerValue() endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MNJTpIkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_a_qnELL3EeCBifIhhuFqZA" name="upper" visibility="protected" bodyCondition="_MNJTpokxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MNJTpYkxEeOMQ5AKLd10lA" annotatedElement="_a_qnELL3EeCBifIhhuFqZA">
<body>The derived upper attribute must equal the upperBound.</body>
</ownedComment>
<ownedRule xmi:id="_MNJTpokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_a_qnELL3EeCBifIhhuFqZA _ZQJacIRQEeOnobsWSpJONg">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNJTp4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (upperBound())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_a_qnEbL3EeCBifIhhuFqZA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNJTqIkxEeOMQ5AKLd10lA"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MNJ6sIkxEeOMQ5AKLd10lA" name="upperBound" bodyCondition="_MNJ6sokxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MNJ6sYkxEeOMQ5AKLd10lA" annotatedElement="_MNJ6sIkxEeOMQ5AKLd10lA">
<body>The query upperBound() returns the upper bound of the multiplicity for a bounded multiplicity as an unlimited natural, which is the unlimitedNaturalValue of upperValue, if given, and 1, otherwise.</body>
</ownedComment>
<ownedRule xmi:id="_MNJ6sokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MNJ6sIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNJ6s4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if (upperValue=null or upperValue.unlimitedValue()=null) then 1 else upperValue.unlimitedValue() endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MNJ6tIkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_csVgUGvtEdqG6fBIPwe-mw" name="NamedElement" isAbstract="true">
<ownedComment xmi:id="_MNKhwIkxEeOMQ5AKLd10lA" annotatedElement="_csVgUGvtEdqG6fBIPwe-mw">
<body>A NamedElement is an Element in a model that may have a name. The name may be given directly and/or via the use of a StringExpression.</body>
</ownedComment>
<ownedRule xmi:id="_MNKhwYkxEeOMQ5AKLd10lA" name="visibility_needs_ownership" constrainedElement="_csVgUGvtEdqG6fBIPwe-mw">
<ownedComment xmi:id="_MNKhwokxEeOMQ5AKLd10lA" annotatedElement="_MNKhwYkxEeOMQ5AKLd10lA">
<body>If a NamedElement is owned by something other than a Namespace, it does not have a visibility. One that is not owned by anything (and hence must be a Package, as this is the only kind of NamedElement that overrides mustBeOwned()) may have a visibility.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNKhw4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(namespace = null and owner &lt;> null) implies visibility = null</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNKhxIkxEeOMQ5AKLd10lA" name="has_qualified_name" constrainedElement="_csVgUGvtEdqG6fBIPwe-mw">
<ownedComment xmi:id="_MNKhxYkxEeOMQ5AKLd10lA" annotatedElement="_MNKhxIkxEeOMQ5AKLd10lA">
<body>When there is a name, and all of the containing Namespaces have a name, the qualifiedName is constructed from the name of the NamedElement and the names of the containing Namespaces.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNKhxokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(name &lt;> null and allNamespaces()->select(ns | ns.name = null)->isEmpty()) implies
qualifiedName = allNamespaces()->iterate( ns : Namespace; agg: String = name | ns.name.concat(self.separator()).concat(agg))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNLI0IkxEeOMQ5AKLd10lA" name="has_no_qualified_name" constrainedElement="_csVgUGvtEdqG6fBIPwe-mw">
<ownedComment xmi:id="_MNLI0YkxEeOMQ5AKLd10lA" annotatedElement="_MNLI0IkxEeOMQ5AKLd10lA">
<body>If there is no name, or one of the containing Namespaces has no name, there is no qualifiedName.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNLI0okxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>name=null or allNamespaces()->select( ns | ns.name=null )->notEmpty() implies qualifiedName = null</body>
</specification>
</ownedRule>
<generalization xmi:id="_MNLI04kxEeOMQ5AKLd10lA" general="_kl90MGvbEdq4DLWZOhbdEA"/>
<ownedAttribute xmi:id="_A9YUsIUBEeOxOrTbpQATOA" name="clientDependency" type="_rEDGkGwKEdq7X4sGURiZYA" isReadOnly="true" isDerived="true" subsettedProperty="_MNcOlIkxEeOMQ5AKLd10lA" association="_epbu4EzPEeO2z-YY6ENIIA">
<ownedComment xmi:id="_MNLI1IkxEeOMQ5AKLd10lA" annotatedElement="_A9YUsIUBEeOxOrTbpQATOA">
<body>Indicates the Dependencies that reference this NamedElement as a client.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNLI1YkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNLI1okxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_8n2t4LGzEeCDe8CO90iVKQ" name="name">
<ownedComment xmi:id="_MNLI14kxEeOMQ5AKLd10lA" annotatedElement="_8n2t4LGzEeCDe8CO90iVKQ">
<body>The name of the NamedElement.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNLI2IkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNLv4IkxEeOMQ5AKLd10lA" name="nameExpression" type="_MPNJIIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MNbAeIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNLv4YkxEeOMQ5AKLd10lA" annotatedElement="_MNLv4IkxEeOMQ5AKLd10lA">
<body>The StringExpression used to define the name of this NamedElement.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNLv4okxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_1vzv0LbIEeCRxrN1JUGuxA" name="namespace" type="_ZiwkoGwLEdq7X4sGURiZYA" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_MNbAcYkxEeOMQ5AKLd10lA _N3hRMAtAEeGcpbeCPJfCmw" association="_MNaZZYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNLv44kxEeOMQ5AKLd10lA" annotatedElement="_1vzv0LbIEeCRxrN1JUGuxA">
<body>Specifies the Namespace that owns the NamedElement.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNLv5IkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNLv5YkxEeOMQ5AKLd10lA" name="qualifiedName" isReadOnly="true" isDerived="true">
<ownedComment xmi:id="_MNLv5okxEeOMQ5AKLd10lA" annotatedElement="_MNLv5YkxEeOMQ5AKLd10lA">
<body>A name that allows the NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from the names of the containing Namespaces starting at the root of the hierarchy and ending with the name of the NamedElement itself.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNLv54kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_PfdtELG0EeCDe8CO90iVKQ" name="visibility" type="_AyM_oGwMEdq7X4sGURiZYA">
<ownedComment xmi:id="_MNMW8IkxEeOMQ5AKLd10lA" annotatedElement="_PfdtELG0EeCDe8CO90iVKQ">
<body>Determines whether and how the NamedElement is visible outside its owning Namespace.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNMW8YkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedOperation xmi:id="_o2CW4GwKEdq7X4sGURiZYA" name="createDependency">
<ownedComment xmi:id="_kZ5L8OwgEdqYHf-imTcTdw" annotatedElement="_o2CW4GwKEdq7X4sGURiZYA">
<body>Creates a dependency between this named element and the specified supplier, owned by this named element's nearest package.</body>
</ownedComment>
<ownedParameter xmi:id="_us8f4GwKEdq7X4sGURiZYA" type="_rEDGkGwKEdq7X4sGURiZYA" direction="return"/>
<ownedParameter xmi:id="_vYdiEGwKEdq7X4sGURiZYA" name="supplier" type="_csVgUGvtEdqG6fBIPwe-mw" effect="read">
<ownedComment xmi:id="_z0MAYPIDEdulR8T2OJRyFQ" annotatedElement="_vYdiEGwKEdq7X4sGURiZYA">
<body>The supplier for the new dependency.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_Dww9MNlrEduDKPkA-0jJZg" name="createUsage">
<ownedComment xmi:id="_wQPHYNlrEduDKPkA-0jJZg" annotatedElement="_Dww9MNlrEduDKPkA-0jJZg">
<body>Creates a usage between this named element and the specified supplier, owned by this named element's nearest package.</body>
</ownedComment>
<ownedParameter xmi:id="_phglkNlrEduDKPkA-0jJZg" type="_h18oENlrEduDKPkA-0jJZg" direction="return"/>
<ownedParameter xmi:id="_xcQ1oNlrEduDKPkA-0jJZg" name="supplier" type="_csVgUGvtEdqG6fBIPwe-mw">
<ownedComment xmi:id="_05e0gPIDEdulR8T2OJRyFQ" annotatedElement="_xcQ1oNlrEduDKPkA-0jJZg">
<body>The supplier for the new usage.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_z4f-wGwKEdq7X4sGURiZYA" name="getLabel" isQuery="true">
<ownedComment xmi:id="_pnOzgOwgEdqYHf-imTcTdw" annotatedElement="_z4f-wGwKEdq7X4sGURiZYA">
<body>Retrieves a localized label for this named element.</body>
</ownedComment>
<ownedParameter xmi:id="_1p5q8GwKEdq7X4sGURiZYA" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_34WfgGwKEdq7X4sGURiZYA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_34WfgWwKEdq7X4sGURiZYA" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_5KmxkGwKEdq7X4sGURiZYA" name="getLabel" isQuery="true">
<ownedComment xmi:id="_rCa_IOwgEdqYHf-imTcTdw" annotatedElement="_5KmxkGwKEdq7X4sGURiZYA">
<body>Retrieves a label for this named element, localized if indicated.</body>
</ownedComment>
<ownedParameter xmi:id="_5KmxkWwKEdq7X4sGURiZYA" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5Kmxk2wKEdq7X4sGURiZYA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5KmxkmwKEdq7X4sGURiZYA" value="1"/>
</ownedParameter>
<ownedParameter xmi:id="_6FwyQGwKEdq7X4sGURiZYA" name="localize" effect="read">
<ownedComment xmi:id="_3OVzEPIDEdulR8T2OJRyFQ" annotatedElement="_6FwyQGwKEdq7X4sGURiZYA">
<body>Whether to localize the label.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_qV1f0LL3EeCBifIhhuFqZA" name="namespace" visibility="protected">
<ownedParameter xmi:id="_tdXRcLL3EeCBifIhhuFqZA" name="result" type="_ZiwkoGwLEdq7X4sGURiZYA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tdXRcbL3EeCBifIhhuFqZA"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MNMW8okxEeOMQ5AKLd10lA" name="allNamespaces" bodyCondition="_MNMW9IkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MNMW84kxEeOMQ5AKLd10lA" annotatedElement="_MNMW8okxEeOMQ5AKLd10lA">
<body>The query allNamespaces() gives the sequence of Namespaces in which the NamedElement is nested, working outwards.</body>
</ownedComment>
<ownedRule xmi:id="_MNMW9IkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MNMW8okxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNMW9YkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (
if owner = null
then OrderedSet{}
else
let enclosingNamespace : Namespace =
if owner.oclIsKindOf(TemplateParameter) and owner.oclAsType(TemplateParameter).signature.template.oclIsKindOf(Namespace)
then owner.oclAsType(TemplateParameter).signature.template.oclAsType(Namespace)
else
namespace
endif
in enclosingNamespace.allNamespaces()->prepend(enclosingNamespace)
endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MNMW9okxEeOMQ5AKLd10lA" name="result" type="_ZiwkoGwLEdq7X4sGURiZYA" isOrdered="true" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNMW94kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNMW-IkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MNM-AIkxEeOMQ5AKLd10lA" name="allOwningPackages" bodyCondition="_MNM-AokxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MNM-AYkxEeOMQ5AKLd10lA" annotatedElement="_MNM-AIkxEeOMQ5AKLd10lA">
<body>The query allOwningPackages() returns the set of all the enclosing Namespaces of this NamedElement, working outwards, that are Packages, up to but not including the first such Namespace that is not a Package.</body>
</ownedComment>
<ownedRule xmi:id="_MNM-AokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MNM-AIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNM-A4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if namespace.oclIsKindOf(Package)&#xD;
then&#xD;
let owningPackage : Package = namespace.oclAsType(Package) in&#xD;
owningPackage->union(owningPackage.allOwningPackages())&#xD;
else&#xD;
null&#xD;
endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MNM-BIkxEeOMQ5AKLd10lA" name="result" type="_-cvRAGvzEdq7X4sGURiZYA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNM-BYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNM-BokxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MNM-B4kxEeOMQ5AKLd10lA" name="isDistinguishableFrom" bodyCondition="_MNM-CYkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MNM-CIkxEeOMQ5AKLd10lA" annotatedElement="_MNM-B4kxEeOMQ5AKLd10lA">
<body>The query isDistinguishableFrom() determines whether two NamedElements may logically co-exist within a Namespace. By default, two named elements are distinguishable if (a) they have types neither of which is a kind of the other or (b) they have different names.</body>
</ownedComment>
<ownedRule xmi:id="_MNM-CYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MNM-B4kxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNM-CokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = ((self.oclIsKindOf(n.oclType()) or n.oclIsKindOf(self.oclType())) implies
ns.getNamesOfMember(self)->intersection(ns.getNamesOfMember(n))->isEmpty()
)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MNM-C4kxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_MNM-DIkxEeOMQ5AKLd10lA" name="n" type="_csVgUGvtEdqG6fBIPwe-mw"/>
<ownedParameter xmi:id="_MNM-DYkxEeOMQ5AKLd10lA" name="ns" type="_ZiwkoGwLEdq7X4sGURiZYA"/>
</ownedOperation>
<ownedOperation xmi:id="_8RZtgLL3EeCBifIhhuFqZA" name="qualifiedName" visibility="protected" bodyCondition="_MNNlEYkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MNNlEIkxEeOMQ5AKLd10lA" annotatedElement="_8RZtgLL3EeCBifIhhuFqZA">
<body>When a NamedElement has a name, and all of its containing Namespaces have a name, the qualifiedName is constructed from the name of the NamedElement and the names of the containing Namespaces.</body>
</ownedComment>
<ownedRule xmi:id="_MNNlEYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_8RZtgLL3EeCBifIhhuFqZA _MNLv5YkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNNlEokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if self.name &lt;> null and self.allNamespaces()->select( ns | ns.name=null )->isEmpty()
then
self.allNamespaces()->iterate( ns : Namespace; agg: String = self.name | ns.name.concat(self.separator()).concat(agg))
else
null
endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_BRx3ILL4EeCBifIhhuFqZA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BRyeMLL4EeCBifIhhuFqZA"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MNNlE4kxEeOMQ5AKLd10lA" name="separator" bodyCondition="_MNNlFYkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MNNlFIkxEeOMQ5AKLd10lA" annotatedElement="_MNNlE4kxEeOMQ5AKLd10lA">
<body>The query separator() gives the string that is used to separate names when constructing a qualifiedName.</body>
</ownedComment>
<ownedRule xmi:id="_MNNlFYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MNNlE4kxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNNlFokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = ('::')</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MNNlF4kxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_uR4xEIRfEeOrzvVsV3Q4sA" name="clientDependency" visibility="protected" bodyCondition="_MNOMIIkxEeOMQ5AKLd10lA" isQuery="true">
<ownedRule xmi:id="_MNOMIIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_uR4xEIRfEeOrzvVsV3Q4sA _A9YUsIUBEeOxOrTbpQATOA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNOMIYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (Dependency.allInstances()->select(d | d.client->includes(self)))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_uR4xE4RfEeOrzvVsV3Q4sA" name="result" type="_rEDGkGwKEdq7X4sGURiZYA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNOMIokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNOMI4kxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_ZiwkoGwLEdq7X4sGURiZYA" name="Namespace" isAbstract="true">
<ownedComment xmi:id="_MNPaQIkxEeOMQ5AKLd10lA" annotatedElement="_ZiwkoGwLEdq7X4sGURiZYA">
<body>A Namespace is an Element in a model that owns and/or imports a set of NamedElements that can be identified by name.</body>
</ownedComment>
<ownedRule xmi:id="_MNPaQYkxEeOMQ5AKLd10lA" name="members_distinguishable" constrainedElement="_ZiwkoGwLEdq7X4sGURiZYA">
<ownedComment xmi:id="_MNPaQokxEeOMQ5AKLd10lA" annotatedElement="_MNPaQYkxEeOMQ5AKLd10lA">
<body>All the members of a Namespace are distinguishable within it.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNPaQ4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>membersAreDistinguishable()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNPaRIkxEeOMQ5AKLd10lA" name="cannot_import_self" constrainedElement="_ZiwkoGwLEdq7X4sGURiZYA">
<ownedComment xmi:id="_MNPaRYkxEeOMQ5AKLd10lA" annotatedElement="_MNPaRIkxEeOMQ5AKLd10lA">
<body>A Namespace cannot have a PackageImport to itself.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNPaRokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>packageImport.importedPackage.oclAsType(Namespace)->excludes(self)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNPaR4kxEeOMQ5AKLd10lA" name="cannot_import_ownedMembers" constrainedElement="_ZiwkoGwLEdq7X4sGURiZYA">
<ownedComment xmi:id="_MNPaSIkxEeOMQ5AKLd10lA" annotatedElement="_MNPaR4kxEeOMQ5AKLd10lA">
<body>A Namespace cannot have an ElementImport to one of its ownedMembers.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNPaSYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>elementImport.importedElement.oclAsType(Element)->excludesAll(ownedMember)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MNPaSokxEeOMQ5AKLd10lA" general="_csVgUGvtEdqG6fBIPwe-mw"/>
<ownedAttribute xmi:id="_MNPaS4kxEeOMQ5AKLd10lA" name="elementImport" type="_RPl78GwIEdq7X4sGURiZYA" aggregation="composite" subsettedProperty="_MNcOlIkxEeOMQ5AKLd10lA _GDD2YAtAEeGcpbeCPJfCmw" association="_MNaZZIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNPaTIkxEeOMQ5AKLd10lA" annotatedElement="_MNPaS4kxEeOMQ5AKLd10lA">
<body>References the ElementImports owned by the Namespace.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNPaTYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNPaTokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNQBUIkxEeOMQ5AKLd10lA" name="importedMember" type="_jKxnwGwLEdq7X4sGURiZYA" isReadOnly="true" isDerived="true" subsettedProperty="_MNQBVIkxEeOMQ5AKLd10lA" association="_MNbAdIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNQBUYkxEeOMQ5AKLd10lA" annotatedElement="_MNQBUIkxEeOMQ5AKLd10lA">
<body>References the PackageableElements that are members of this Namespace as a result of either PackageImports or ElementImports.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNQBUokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNQBU4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNQBVIkxEeOMQ5AKLd10lA" name="member" type="_csVgUGvtEdqG6fBIPwe-mw" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_MNbAcIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNQBVYkxEeOMQ5AKLd10lA" annotatedElement="_MNQBVIkxEeOMQ5AKLd10lA">
<body>A collection of NamedElements identifiable within the Namespace, either by being owned or by being introduced by importing or inheritance.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNQBVokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNQBV4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNQBWIkxEeOMQ5AKLd10lA" name="ownedMember" type="_csVgUGvtEdqG6fBIPwe-mw" isReadOnly="true" aggregation="composite" isDerived="true" isDerivedUnion="true" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw _MNQBVIkxEeOMQ5AKLd10lA" association="_MNaZZYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNQBWYkxEeOMQ5AKLd10lA" annotatedElement="_MNQBWIkxEeOMQ5AKLd10lA">
<body>A collection of NamedElements owned by the Namespace.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNQBWokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNQBW4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNQBXIkxEeOMQ5AKLd10lA" name="ownedRule" type="_MNAJsIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MNQBWIkxEeOMQ5AKLd10lA" association="_MNaZZokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNQBXYkxEeOMQ5AKLd10lA" annotatedElement="_MNQBXIkxEeOMQ5AKLd10lA">
<body>Specifies a set of Constraints owned by this Namespace.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNQBXokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNQBX4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNQBYIkxEeOMQ5AKLd10lA" name="packageImport" type="_SnNPIGwIEdq7X4sGURiZYA" aggregation="composite" subsettedProperty="_MNcOlIkxEeOMQ5AKLd10lA _GDD2YAtAEeGcpbeCPJfCmw" association="_MNaZZ4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNQBYYkxEeOMQ5AKLd10lA" annotatedElement="_MNQBYIkxEeOMQ5AKLd10lA">
<body>References the PackageImports owned by the Namespace.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNQBYokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNQBY4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedOperation xmi:id="_vI18QGwLEdq7X4sGURiZYA" name="createElementImport">
<ownedComment xmi:id="_sdLToOwlEdqYHf-imTcTdw" annotatedElement="_vI18QGwLEdq7X4sGURiZYA">
<body>Creates an import of the specified element into this namespace with the specified visibility.</body>
</ownedComment>
<ownedParameter xmi:id="_xwes4GwLEdq7X4sGURiZYA" type="_RPl78GwIEdq7X4sGURiZYA" direction="return"/>
<ownedParameter xmi:id="_yOllMGwLEdq7X4sGURiZYA" name="element" type="_jKxnwGwLEdq7X4sGURiZYA" effect="read">
<ownedComment xmi:id="_5dZroPIDEdulR8T2OJRyFQ" annotatedElement="_yOllMGwLEdq7X4sGURiZYA">
<body>The element to import.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="_9mppoGwLEdq7X4sGURiZYA" name="visibility" type="_AyM_oGwMEdq7X4sGURiZYA" effect="read">
<ownedComment xmi:id="_8P62kPIDEdulR8T2OJRyFQ" annotatedElement="_9mppoGwLEdq7X4sGURiZYA">
<body>The visibility for the new element import.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_FRpmcGwMEdq7X4sGURiZYA" name="createPackageImport">
<ownedComment xmi:id="_t-ofUOwlEdqYHf-imTcTdw" annotatedElement="_FRpmcGwMEdq7X4sGURiZYA">
<body>Creates an import of the specified package into this namespace with the specified visibility.</body>
</ownedComment>
<ownedParameter xmi:id="_IdWGYGwMEdq7X4sGURiZYA" type="_SnNPIGwIEdq7X4sGURiZYA" direction="return"/>
<ownedParameter xmi:id="_RsevcGwMEdq7X4sGURiZYA" name="package_" type="_-cvRAGvzEdq7X4sGURiZYA" effect="read">
<ownedComment xmi:id="_-NYo0PIDEdulR8T2OJRyFQ" annotatedElement="_RsevcGwMEdq7X4sGURiZYA">
<body>The package to import.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="_OxwqwGwMEdq7X4sGURiZYA" name="visibility" type="_AyM_oGwMEdq7X4sGURiZYA" effect="read">
<ownedComment xmi:id="_CiGmUPIEEdulR8T2OJRyFQ" annotatedElement="_OxwqwGwMEdq7X4sGURiZYA">
<body>The visibility for the new package import.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_aoDYwGwLEdq7X4sGURiZYA" name="getImportedElements" isQuery="true">
<ownedComment xmi:id="_zNDPgOwmEdqYHf-imTcTdw" annotatedElement="_aoDYwGwLEdq7X4sGURiZYA">
<body>Retrieves the elements imported by this namespace.</body>
</ownedComment>
<ownedParameter xmi:id="_mL5PYGwLEdq7X4sGURiZYA" type="_jKxnwGwLEdq7X4sGURiZYA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_n-CicGwLEdq7X4sGURiZYA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_n-CicWwLEdq7X4sGURiZYA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_2OvA4GwLEdq7X4sGURiZYA" name="getImportedPackages" isQuery="true">
<ownedComment xmi:id="_0UuCMOwmEdqYHf-imTcTdw" annotatedElement="_2OvA4GwLEdq7X4sGURiZYA">
<body>Retrieves the packages imported by this namespace.</body>
</ownedComment>
<ownedParameter xmi:id="_40lo0GwLEdq7X4sGURiZYA" type="_-cvRAGvzEdq7X4sGURiZYA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6sF9AGwLEdq7X4sGURiZYA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6sF9AWwLEdq7X4sGURiZYA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_aGIhkLL4EeCBifIhhuFqZA" name="ownedMember" visibility="protected">
<ownedParameter xmi:id="_aGIhkbL4EeCBifIhhuFqZA" name="result" type="_csVgUGvtEdqG6fBIPwe-mw" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aGIhk7L4EeCBifIhhuFqZA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aGIhkrL4EeCBifIhhuFqZA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MNQoYIkxEeOMQ5AKLd10lA" name="excludeCollisions" bodyCondition="_MNQoYokxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MNQoYYkxEeOMQ5AKLd10lA" annotatedElement="_MNQoYIkxEeOMQ5AKLd10lA">
<body>The query excludeCollisions() excludes from a set of PackageableElements any that would not be distinguishable from each other in this Namespace.</body>
</ownedComment>
<ownedRule xmi:id="_MNQoYokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MNQoYIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNQoY4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (imps->reject(imp1 | imps->exists(imp2 | not imp1.isDistinguishableFrom(imp2, self))))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MNQoZIkxEeOMQ5AKLd10lA" name="result" type="_jKxnwGwLEdq7X4sGURiZYA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNQoZYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNQoZokxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
<ownedParameter xmi:id="_MNQoZ4kxEeOMQ5AKLd10lA" name="imps" type="_jKxnwGwLEdq7X4sGURiZYA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNQoaIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNQoaYkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MNQoaokxEeOMQ5AKLd10lA" name="getNamesOfMember" bodyCondition="_MNQobIkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MNQoa4kxEeOMQ5AKLd10lA" annotatedElement="_MNQoaokxEeOMQ5AKLd10lA">
<body>The query getNamesOfMember() gives a set of all of the names that a member would have in a Namespace, taking importing into account. In general a member can have multiple names in a Namespace if it is imported more than once with different aliases.</body>
</ownedComment>
<ownedRule xmi:id="_MNQobIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MNQoaokxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNQobYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if self.ownedMember ->includes(element)
then Set{element.name}
else let elementImports : Set(ElementImport) = self.elementImport->select(ei | ei.importedElement = element) in
if elementImports->notEmpty()
then
elementImports->collect(el | el.getName())->asSet()
else
self.packageImport->select(pi | pi.importedPackage.visibleMembers().oclAsType(NamedElement)->includes(element))-> collect(pi | pi.importedPackage.getNamesOfMember(element))->asSet()
endif
endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MNQobokxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNQob4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNQocIkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
<ownedParameter xmi:id="_MNQocYkxEeOMQ5AKLd10lA" name="element" type="_csVgUGvtEdqG6fBIPwe-mw"/>
</ownedOperation>
<ownedOperation xmi:id="_MNQocokxEeOMQ5AKLd10lA" name="importMembers" bodyCondition="_MNQodIkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MNQoc4kxEeOMQ5AKLd10lA" annotatedElement="_MNQocokxEeOMQ5AKLd10lA">
<body>The query importMembers() defines which of a set of PackageableElements are actually imported into the Namespace. This excludes hidden ones, i.e., those which have names that conflict with names of ownedMembers, and it also excludes PackageableElements that would have the indistinguishable names when imported.</body>
</ownedComment>
<ownedRule xmi:id="_MNQodIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MNQocokxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNQodYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (self.excludeCollisions(imps)->select(imp | self.ownedMember->forAll(mem | imp.isDistinguishableFrom(mem, self))))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MNQodokxEeOMQ5AKLd10lA" name="result" type="_jKxnwGwLEdq7X4sGURiZYA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNQod4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNQoeIkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
<ownedParameter xmi:id="_MNQoeYkxEeOMQ5AKLd10lA" name="imps" type="_jKxnwGwLEdq7X4sGURiZYA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNQoeokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNQoe4kxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_OanVoLL4EeCBifIhhuFqZA" name="importedMember" visibility="protected" bodyCondition="_MNRPcIkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MNQofIkxEeOMQ5AKLd10lA" annotatedElement="_OanVoLL4EeCBifIhhuFqZA">
<body>The importedMember property is derived as the PackageableElements that are members of this Namespace as a result of either PackageImports or ElementImports.</body>
</ownedComment>
<ownedRule xmi:id="_MNRPcIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_OanVoLL4EeCBifIhhuFqZA _MNQBUIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNRPcYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (self.importMembers(elementImport.importedElement->asSet()->union(packageImport.importedPackage->collect(p | p.visibleMembers()))->asSet()))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_RAhn8LL4EeCBifIhhuFqZA" name="result" type="_jKxnwGwLEdq7X4sGURiZYA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNRPcokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNRPc4kxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MNR2gIkxEeOMQ5AKLd10lA" name="membersAreDistinguishable" bodyCondition="_MNR2gokxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MNR2gYkxEeOMQ5AKLd10lA" annotatedElement="_MNR2gIkxEeOMQ5AKLd10lA">
<body>The Boolean query membersAreDistinguishable() determines whether all of the Namespace's members are distinguishable within it.</body>
</ownedComment>
<ownedRule xmi:id="_MNR2gokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MNR2gIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNR2g4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (member->forAll( memb |
member->excluding(memb)->forAll(other |
memb.isDistinguishableFrom(other, self))))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MNR2hIkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_jKxnwGwLEdq7X4sGURiZYA" name="PackageableElement" isAbstract="true">
<ownedComment xmi:id="_MNSdkIkxEeOMQ5AKLd10lA" annotatedElement="_jKxnwGwLEdq7X4sGURiZYA">
<body>A PackageableElement is a NamedElement that may be owned directly by a Package. A PackageableElement is also able to serve as the parameteredElement of a TemplateParameter.</body>
</ownedComment>
<ownedRule xmi:id="_MNSdkYkxEeOMQ5AKLd10lA" name="namespace_needs_visibility" constrainedElement="_jKxnwGwLEdq7X4sGURiZYA">
<ownedComment xmi:id="_MNSdkokxEeOMQ5AKLd10lA" annotatedElement="_MNSdkYkxEeOMQ5AKLd10lA">
<body>A PackageableElement owned by a Namespace must have a visibility.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNSdk4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>visibility = null implies namespace = null</body>
</specification>
</ownedRule>
<generalization xmi:id="_MNSdlIkxEeOMQ5AKLd10lA" general="_MNTEp4kxEeOMQ5AKLd10lA"/>
<generalization xmi:id="_MNSdlYkxEeOMQ5AKLd10lA" general="_csVgUGvtEdqG6fBIPwe-mw"/>
<ownedAttribute xmi:id="_MNSdlokxEeOMQ5AKLd10lA" name="visibility" type="_AyM_oGwMEdq7X4sGURiZYA" redefinedProperty="_PfdtELG0EeCDe8CO90iVKQ">
<ownedComment xmi:id="_MNSdl4kxEeOMQ5AKLd10lA" annotatedElement="_MNSdlokxEeOMQ5AKLd10lA">
<body>A PackageableElement must have a visibility specified if it is owned by a Namespace. The default visibility is public.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNSdmIkxEeOMQ5AKLd10lA"/>
<defaultValue xmi:type="uml:InstanceValue" xmi:id="_MNSdmYkxEeOMQ5AKLd10lA" type="_AyM_oGwMEdq7X4sGURiZYA" instance="_MNXWEYkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_SnNPIGwIEdq7X4sGURiZYA" name="PackageImport">
<ownedComment xmi:id="_MNSdmokxEeOMQ5AKLd10lA" annotatedElement="_SnNPIGwIEdq7X4sGURiZYA">
<body>A PackageImport is a Relationship that imports all the non-private members of a Package into the Namespace owning the PackageImport, so that those Elements may be referred to by their unqualified names in the importingNamespace.</body>
</ownedComment>
<ownedRule xmi:id="_MNSdm4kxEeOMQ5AKLd10lA" name="public_or_private" constrainedElement="_SnNPIGwIEdq7X4sGURiZYA">
<ownedComment xmi:id="_MNSdnIkxEeOMQ5AKLd10lA" annotatedElement="_MNSdm4kxEeOMQ5AKLd10lA">
<body>The visibility of a PackageImport is either public or private.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNSdnYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>visibility = VisibilityKind::public or visibility = VisibilityKind::private</body>
</specification>
</ownedRule>
<generalization xmi:id="_MNSdnokxEeOMQ5AKLd10lA" general="_JBgfoKPAEdqi_5gqUMOQtA"/>
<ownedAttribute xmi:id="_MNTEoIkxEeOMQ5AKLd10lA" name="importedPackage" type="_-cvRAGvzEdq7X4sGURiZYA" subsettedProperty="_MNB-44kxEeOMQ5AKLd10lA" association="_MNaZYIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNTEoYkxEeOMQ5AKLd10lA" annotatedElement="_MNTEoIkxEeOMQ5AKLd10lA">
<body>Specifies the Package whose members are imported into a Namespace.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MNTEookxEeOMQ5AKLd10lA" name="importingNamespace" type="_ZiwkoGwLEdq7X4sGURiZYA" subsettedProperty="_MNB-4IkxEeOMQ5AKLd10lA _N3hRMAtAEeGcpbeCPJfCmw" association="_MNaZZ4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNTEo4kxEeOMQ5AKLd10lA" annotatedElement="_MNTEookxEeOMQ5AKLd10lA">
<body>Specifies the Namespace that imports the members from a Package.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MNTEpIkxEeOMQ5AKLd10lA" name="visibility" type="_AyM_oGwMEdq7X4sGURiZYA">
<ownedComment xmi:id="_MNTEpYkxEeOMQ5AKLd10lA" annotatedElement="_MNTEpIkxEeOMQ5AKLd10lA">
<body>Specifies the visibility of the imported PackageableElements within the importingNamespace, i.e., whether imported Elements will in turn be visible to other Namespaces. If the PackageImport is public, the imported Elements will be visible outside the importingNamespace, while, if the PackageImport is private, they will not.</body>
</ownedComment>
<defaultValue xmi:type="uml:InstanceValue" xmi:id="_MNTEpokxEeOMQ5AKLd10lA" type="_AyM_oGwMEdq7X4sGURiZYA" instance="_MNXWEYkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MNTEp4kxEeOMQ5AKLd10lA" name="ParameterableElement" isAbstract="true">
<ownedComment xmi:id="_MNTEqIkxEeOMQ5AKLd10lA" annotatedElement="_MNTEp4kxEeOMQ5AKLd10lA">
<body>A ParameterableElement is an Element that can be exposed as a formal TemplateParameter for a template, or specified as an actual parameter in a binding of a template.</body>
</ownedComment>
<generalization xmi:id="_MNTEqYkxEeOMQ5AKLd10lA" general="_kl90MGvbEdq4DLWZOhbdEA"/>
<ownedAttribute xmi:id="_MNTEqokxEeOMQ5AKLd10lA" name="owningTemplateParameter" type="_KxRzgGvuEdqG6fBIPwe-mw" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw _MNTErYkxEeOMQ5AKLd10lA" association="_MNZLRIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNTEq4kxEeOMQ5AKLd10lA" annotatedElement="_MNTEqokxEeOMQ5AKLd10lA">
<body>The formal TemplateParameter that owns this ParameterableElement.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNTErIkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNTErYkxEeOMQ5AKLd10lA" name="templateParameter" type="_KxRzgGvuEdqG6fBIPwe-mw" association="_MNZLSYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNTErokxEeOMQ5AKLd10lA" annotatedElement="_MNTErYkxEeOMQ5AKLd10lA">
<body>The TemplateParameter that exposes this ParameterableElement as a formal parameter.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNTEr4kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedOperation xmi:id="_MNTEsIkxEeOMQ5AKLd10lA" name="isCompatibleWith" bodyCondition="_MNTEsokxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MNTEsYkxEeOMQ5AKLd10lA" annotatedElement="_MNTEsIkxEeOMQ5AKLd10lA">
<body>The query isCompatibleWith() determines if this ParameterableElement is compatible with the specified ParameterableElement. By default, this ParameterableElement is compatible with another ParameterableElement p if the kind of this ParameterableElement is the same as or a subtype of the kind of p. Subclasses of ParameterableElement should override this operation to specify different compatibility constraints.</body>
</ownedComment>
<ownedRule xmi:id="_MNTEsokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MNTEsIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNTEs4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (self.oclIsKindOf(p.oclType()))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MNTEtIkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_MNTEtYkxEeOMQ5AKLd10lA" name="p" type="_MNTEp4kxEeOMQ5AKLd10lA"/>
</ownedOperation>
<ownedOperation xmi:id="_MNTEtokxEeOMQ5AKLd10lA" name="isTemplateParameter" bodyCondition="_MNTEuIkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MNTEt4kxEeOMQ5AKLd10lA" annotatedElement="_MNTEtokxEeOMQ5AKLd10lA">
<body>The query isTemplateParameter() determines if this ParameterableElement is exposed as a formal TemplateParameter.</body>
</ownedComment>
<ownedRule xmi:id="_MNTEuIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MNTEtokxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNTEuYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (templateParameter->notEmpty())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MNTrsIkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MNTrsYkxEeOMQ5AKLd10lA" name="Realization">
<ownedComment xmi:id="_MNTrsokxEeOMQ5AKLd10lA" annotatedElement="_MNTrsYkxEeOMQ5AKLd10lA">
<body>Realization is a specialized Abstraction relationship between two sets of model Elements, one representing a specification (the supplier) and the other represents an implementation of the latter (the client). Realization can be used to model stepwise refinement, optimizations, transformations, templates, model synthesis, framework composition, etc.</body>
</ownedComment>
<generalization xmi:id="_MNTrs4kxEeOMQ5AKLd10lA" general="_MM-UgIkxEeOMQ5AKLd10lA"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_DH62EKPAEdqi_5gqUMOQtA" name="Relationship" isAbstract="true">
<ownedComment xmi:id="_MNTrtIkxEeOMQ5AKLd10lA" annotatedElement="_DH62EKPAEdqi_5gqUMOQtA">
<body>Relationship is an abstract concept that specifies some kind of relationship between Elements.</body>
</ownedComment>
<generalization xmi:id="_MNTrtYkxEeOMQ5AKLd10lA" general="_kl90MGvbEdq4DLWZOhbdEA"/>
<ownedAttribute xmi:id="_MNTrtokxEeOMQ5AKLd10lA" name="relatedElement" type="_kl90MGvbEdq4DLWZOhbdEA" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_MNZyV4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNTrt4kxEeOMQ5AKLd10lA" annotatedElement="_MNTrtokxEeOMQ5AKLd10lA">
<body>Specifies the elements related by the Relationship.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNTruIkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MNUSwIkxEeOMQ5AKLd10lA" name="TemplateableElement" isAbstract="true">
<ownedComment xmi:id="_MNUSwYkxEeOMQ5AKLd10lA" annotatedElement="_MNUSwIkxEeOMQ5AKLd10lA">
<body>A TemplateableElement is an Element that can optionally be defined as a template and bound to other templates.</body>
</ownedComment>
<generalization xmi:id="_MNUSwokxEeOMQ5AKLd10lA" general="_kl90MGvbEdq4DLWZOhbdEA"/>
<ownedAttribute xmi:id="_MNUSw4kxEeOMQ5AKLd10lA" name="ownedTemplateSignature" type="_MNVg74kxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MNZyVokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNUSxIkxEeOMQ5AKLd10lA" annotatedElement="_MNUSw4kxEeOMQ5AKLd10lA">
<body>The optional TemplateSignature specifying the formal TemplateParameters for this TemplateableElement. If a TemplateableElement has a TemplateSignature, then it is a template.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNUSxYkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNUSxokxEeOMQ5AKLd10lA" name="templateBinding" type="_MNUS1okxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MNcOlIkxEeOMQ5AKLd10lA _GDD2YAtAEeGcpbeCPJfCmw" association="_MNZyVYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNUSx4kxEeOMQ5AKLd10lA" annotatedElement="_MNUSxokxEeOMQ5AKLd10lA">
<body>The optional TemplateBindings from this TemplateableElement to one or more templates.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNUSyIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNUSyYkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedOperation xmi:id="_MNUSyokxEeOMQ5AKLd10lA" name="isTemplate" bodyCondition="_MNUSzIkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MNUSy4kxEeOMQ5AKLd10lA" annotatedElement="_MNUSyokxEeOMQ5AKLd10lA">
<body>The query isTemplate() returns whether this TemplateableElement is actually a template.</body>
</ownedComment>
<ownedRule xmi:id="_MNUSzIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MNUSyokxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNUSzYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (ownedTemplateSignature &lt;> null)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MNUSzokxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MNUSz4kxEeOMQ5AKLd10lA" name="parameterableElements" bodyCondition="_MNUS0YkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MNUS0IkxEeOMQ5AKLd10lA" annotatedElement="_MNUSz4kxEeOMQ5AKLd10lA">
<body>The query parameterableElements() returns the set of ParameterableElements that may be used as the parameteredElements for a TemplateParameter of this TemplateableElement. By default, this set includes all the ownedElements. Subclasses may override this operation if they choose to restrict the set of ParameterableElements.</body>
</ownedComment>
<ownedRule xmi:id="_MNUS0YkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MNUSz4kxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNUS0okxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (self.allOwnedElements()->select(oclIsKindOf(ParameterableElement)).oclAsType(ParameterableElement)->asSet())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MNUS04kxEeOMQ5AKLd10lA" name="result" type="_MNTEp4kxEeOMQ5AKLd10lA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNUS1IkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNUS1YkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MNUS1okxEeOMQ5AKLd10lA" name="TemplateBinding">
<ownedComment xmi:id="_MNUS14kxEeOMQ5AKLd10lA" annotatedElement="_MNUS1okxEeOMQ5AKLd10lA">
<body>A TemplateBinding is a DirectedRelationship between a TemplateableElement and a template. A TemplateBinding specifies the TemplateParameterSubstitutions of actual parameters for the formal parameters of the template.</body>
</ownedComment>
<ownedRule xmi:id="_MNUS2IkxEeOMQ5AKLd10lA" name="parameter_substitution_formal" constrainedElement="_MNUS1okxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNUS2YkxEeOMQ5AKLd10lA" annotatedElement="_MNUS2IkxEeOMQ5AKLd10lA">
<body>Each parameterSubstitution must refer to a formal TemplateParameter of the target TemplateSignature.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNUS2okxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>parameterSubstitution->forAll(b | signature.parameter->includes(b.formal))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNUS24kxEeOMQ5AKLd10lA" name="one_parameter_substitution" constrainedElement="_MNUS1okxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNUS3IkxEeOMQ5AKLd10lA" annotatedElement="_MNUS24kxEeOMQ5AKLd10lA">
<body>A TemplateBiinding contains at most one TemplateParameterSubstitution for each formal TemplateParameter of the target TemplateSignature.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNUS3YkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>signature.parameter->forAll(p | parameterSubstitution->select(b | b.formal = p)->size() &lt;= 1)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MNUS3okxEeOMQ5AKLd10lA" general="_JBgfoKPAEdqi_5gqUMOQtA"/>
<ownedAttribute xmi:id="_MNUS34kxEeOMQ5AKLd10lA" name="boundElement" type="_MNUSwIkxEeOMQ5AKLd10lA" subsettedProperty="_MNB-4IkxEeOMQ5AKLd10lA _N3hRMAtAEeGcpbeCPJfCmw" association="_MNZyVYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNUS4IkxEeOMQ5AKLd10lA" annotatedElement="_MNUS34kxEeOMQ5AKLd10lA">
<body>The TemplateableElement that is bound by this TemplateBinding.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MNUS4YkxEeOMQ5AKLd10lA" name="parameterSubstitution" type="_MNVg4IkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MNZyVIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNUS4okxEeOMQ5AKLd10lA" annotatedElement="_MNUS4YkxEeOMQ5AKLd10lA">
<body>The TemplateParameterSubstitutions owned by this TemplateBinding.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNUS44kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNUS5IkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNUS5YkxEeOMQ5AKLd10lA" name="signature" type="_MNVg74kxEeOMQ5AKLd10lA" subsettedProperty="_MNB-44kxEeOMQ5AKLd10lA" association="_MNZyUIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNUS5okxEeOMQ5AKLd10lA" annotatedElement="_MNUS5YkxEeOMQ5AKLd10lA">
<body>The TemplateSignature for the template that is the target of this TemplateBinding.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_KxRzgGvuEdqG6fBIPwe-mw" name="TemplateParameter">
<ownedComment xmi:id="_MNU50IkxEeOMQ5AKLd10lA" annotatedElement="_KxRzgGvuEdqG6fBIPwe-mw">
<body>A TemplateParameter exposes a ParameterableElement as a formal parameter of a template.</body>
</ownedComment>
<ownedRule xmi:id="_MNU50YkxEeOMQ5AKLd10lA" name="must_be_compatible" constrainedElement="_KxRzgGvuEdqG6fBIPwe-mw">
<ownedComment xmi:id="_MNU50okxEeOMQ5AKLd10lA" annotatedElement="_MNU50YkxEeOMQ5AKLd10lA">
<body>The default must be compatible with the formal TemplateParameter.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNU504kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>default &lt;> null implies default.isCompatibleWith(parameteredElement)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MNU51IkxEeOMQ5AKLd10lA" general="_kl90MGvbEdq4DLWZOhbdEA"/>
<ownedAttribute xmi:id="_MNU51YkxEeOMQ5AKLd10lA" name="default" type="_MNTEp4kxEeOMQ5AKLd10lA" association="_MNZLRYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNU51okxEeOMQ5AKLd10lA" annotatedElement="_MNU51YkxEeOMQ5AKLd10lA">
<body>The ParameterableElement that is the default for this formal TemplateParameter.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNU514kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNU52IkxEeOMQ5AKLd10lA" name="ownedDefault" type="_MNTEp4kxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw _MNU51YkxEeOMQ5AKLd10lA" association="_MNZLQIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNU52YkxEeOMQ5AKLd10lA" annotatedElement="_MNU52IkxEeOMQ5AKLd10lA">
<body>The ParameterableElement that is owned by this TemplateParameter for the purpose of providing a default.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNU52okxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNU524kxEeOMQ5AKLd10lA" name="ownedParameteredElement" type="_MNTEp4kxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw _MNU53okxEeOMQ5AKLd10lA" association="_MNZLRIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNU53IkxEeOMQ5AKLd10lA" annotatedElement="_MNU524kxEeOMQ5AKLd10lA">
<body>The ParameterableElement that is owned by this TemplateParameter for the purpose of exposing it as the parameteredElement.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNU53YkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNU53okxEeOMQ5AKLd10lA" name="parameteredElement" type="_MNTEp4kxEeOMQ5AKLd10lA" association="_MNZLSYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNU534kxEeOMQ5AKLd10lA" annotatedElement="_MNU53okxEeOMQ5AKLd10lA">
<body>The ParameterableElement exposed by this TemplateParameter.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MNU54IkxEeOMQ5AKLd10lA" name="signature" type="_MNVg74kxEeOMQ5AKLd10lA" subsettedProperty="_MNX9JokxEeOMQ5AKLd10lA _N3hRMAtAEeGcpbeCPJfCmw" association="_MNX9JIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNU54YkxEeOMQ5AKLd10lA" annotatedElement="_MNU54IkxEeOMQ5AKLd10lA">
<body>The TemplateSignature that owns this TemplateParameter.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MNVg4IkxEeOMQ5AKLd10lA" name="TemplateParameterSubstitution">
<ownedComment xmi:id="_MNVg4YkxEeOMQ5AKLd10lA" annotatedElement="_MNVg4IkxEeOMQ5AKLd10lA">
<body>A TemplateParameterSubstitution relates the actual parameter to a formal TemplateParameter as part of a template binding.</body>
</ownedComment>
<ownedRule xmi:id="_MNVg4okxEeOMQ5AKLd10lA" name="must_be_compatible" constrainedElement="_MNVg4IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNVg44kxEeOMQ5AKLd10lA" annotatedElement="_MNVg4okxEeOMQ5AKLd10lA">
<body>The actual ParameterableElement must be compatible with the formal TemplateParameter, e.g., the actual ParameterableElement for a Class TemplateParameter must be a Class.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNVg5IkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>actual->forAll(a | a.isCompatibleWith(formal.parameteredElement))</body>
</specification>
</ownedRule>
<generalization xmi:id="_MNVg5YkxEeOMQ5AKLd10lA" general="_kl90MGvbEdq4DLWZOhbdEA"/>
<ownedAttribute xmi:id="_MNVg5okxEeOMQ5AKLd10lA" name="actual" type="_MNTEp4kxEeOMQ5AKLd10lA" association="_MNYkMIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNVg54kxEeOMQ5AKLd10lA" annotatedElement="_MNVg5okxEeOMQ5AKLd10lA">
<body>The ParameterableElement that is the actual parameter for this TemplateParameterSubstitution.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MNVg6IkxEeOMQ5AKLd10lA" name="formal" type="_KxRzgGvuEdqG6fBIPwe-mw" association="_MNYkOIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNVg6YkxEeOMQ5AKLd10lA" annotatedElement="_MNVg6IkxEeOMQ5AKLd10lA">
<body>The formal TemplateParameter that is associated with this TemplateParameterSubstitution.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MNVg6okxEeOMQ5AKLd10lA" name="ownedActual" type="_MNTEp4kxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw _MNVg5okxEeOMQ5AKLd10lA" association="_MNYkNIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNVg64kxEeOMQ5AKLd10lA" annotatedElement="_MNVg6okxEeOMQ5AKLd10lA">
<body>The ParameterableElement that is owned by this TemplateParameterSubstitution as its actual parameter.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNVg7IkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNVg7YkxEeOMQ5AKLd10lA" name="templateBinding" type="_MNUS1okxEeOMQ5AKLd10lA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MNZyVIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNVg7okxEeOMQ5AKLd10lA" annotatedElement="_MNVg7YkxEeOMQ5AKLd10lA">
<body>The TemplateBinding that owns this TemplateParameterSubstitution.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MNVg74kxEeOMQ5AKLd10lA" name="TemplateSignature">
<ownedComment xmi:id="_MNVg8IkxEeOMQ5AKLd10lA" annotatedElement="_MNVg74kxEeOMQ5AKLd10lA">
<body>A Template Signature bundles the set of formal TemplateParameters for a template.</body>
</ownedComment>
<ownedRule xmi:id="_MNVg8YkxEeOMQ5AKLd10lA" name="own_elements" constrainedElement="_MNVg74kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNVg8okxEeOMQ5AKLd10lA" annotatedElement="_MNVg8YkxEeOMQ5AKLd10lA">
<body>Parameters must own the ParameterableElements they parameter or those ParameterableElements must be owned by the TemplateableElement being templated.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNVg84kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>template.ownedElement->includesAll(parameter.parameteredElement->asSet() - parameter.ownedParameteredElement->asSet())</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNVg9IkxEeOMQ5AKLd10lA" name="unique_parameters" constrainedElement="_MNVg74kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNVg9YkxEeOMQ5AKLd10lA" annotatedElement="_MNVg9IkxEeOMQ5AKLd10lA">
<body>The names of the parameters of a TemplateSignature are unique.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNVg9okxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>parameter->forAll( p1, p2 | (p1 &lt;> p2 and p1.parameteredElement.oclIsKindOf(NamedElement) and p2.parameteredElement.oclIsKindOf(NamedElement) ) implies&#xD;
p1.parameteredElement.oclAsType(NamedElement).name &lt;> p2.parameteredElement.oclAsType(NamedElement).name)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MNVg94kxEeOMQ5AKLd10lA" general="_kl90MGvbEdq4DLWZOhbdEA"/>
<ownedAttribute xmi:id="_MNVg-IkxEeOMQ5AKLd10lA" name="ownedParameter" type="_KxRzgGvuEdqG6fBIPwe-mw" isOrdered="true" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw _MNWH8okxEeOMQ5AKLd10lA" association="_MNX9JIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNVg-YkxEeOMQ5AKLd10lA" annotatedElement="_MNVg-IkxEeOMQ5AKLd10lA">
<body>The formal parameters that are owned by this TemplateSignature.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNWH8IkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNWH8YkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNWH8okxEeOMQ5AKLd10lA" name="parameter" type="_KxRzgGvuEdqG6fBIPwe-mw" isOrdered="true" association="_MNX9JYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNWH84kxEeOMQ5AKLd10lA" annotatedElement="_MNWH8okxEeOMQ5AKLd10lA">
<body>The ordered set of all formal TemplateParameters for this TemplateSignature.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNWH9IkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNWH9YkxEeOMQ5AKLd10lA" name="template" type="_MNUSwIkxEeOMQ5AKLd10lA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MNZyVokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNWH9okxEeOMQ5AKLd10lA" annotatedElement="_MNWH9YkxEeOMQ5AKLd10lA">
<body>The TemplateableElement that owns this TemplateSignature.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_ynRtoGvtEdqG6fBIPwe-mw" name="Type" isAbstract="true">
<ownedComment xmi:id="_MNWH94kxEeOMQ5AKLd10lA" annotatedElement="_ynRtoGvtEdqG6fBIPwe-mw">
<body>A Type constrains the values represented by a TypedElement.</body>
</ownedComment>
<generalization xmi:id="_MNWH-IkxEeOMQ5AKLd10lA" general="_jKxnwGwLEdq7X4sGURiZYA"/>
<ownedAttribute xmi:id="_uvHaoLbQEeCRxrN1JUGuxA" name="package" type="_-cvRAGvzEdq7X4sGURiZYA" subsettedProperty="_MOR8GIkxEeOMQ5AKLd10lA _1vzv0LbIEeCRxrN1JUGuxA" association="_MOSjI4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNWH-YkxEeOMQ5AKLd10lA" annotatedElement="_uvHaoLbQEeCRxrN1JUGuxA">
<body>Specifies the owning Package of this Type, if any.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNWH-okxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedOperation xmi:id="_RNEaIGwNEdq7X4sGURiZYA" name="createAssociation">
<ownedComment xmi:id="_w29JkOwgEdqYHf-imTcTdw" annotatedElement="_RNEaIGwNEdq7X4sGURiZYA">
<body>Creates a(n) (binary) association between this type and the specified other type, with the specified navigabilities, aggregations, names, lower bounds, and upper bounds, and owned by this type's nearest package.</body>
</ownedComment>
<ownedParameter xmi:id="_URUOQGwNEdq7X4sGURiZYA" type="_AwvxoGwNEdq7X4sGURiZYA" direction="return"/>
<ownedParameter xmi:id="_AEONYGwOEdq7X4sGURiZYA" name="end1IsNavigable" effect="read">
<ownedComment xmi:id="_QiftAPIGEdulR8T2OJRyFQ" annotatedElement="_AEONYGwOEdq7X4sGURiZYA">
<body>The navigability for the first end of the new association.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_7HueMGwNEdq7X4sGURiZYA" name="end1Aggregation" type="_B3q9cGwNEdq7X4sGURiZYA" effect="read">
<ownedComment xmi:id="_OnjqUPIGEdulR8T2OJRyFQ" annotatedElement="_7HueMGwNEdq7X4sGURiZYA">
<body>The aggregation for the first end of the new association.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="_2TaaoGwNEdq7X4sGURiZYA" name="end1Name" effect="read">
<ownedComment xmi:id="_Se69cPIGEdulR8T2OJRyFQ" annotatedElement="_2TaaoGwNEdq7X4sGURiZYA">
<body>The name for the first end of the new association.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
<ownedParameter xmi:id="_x-QYQGwNEdq7X4sGURiZYA" name="end1Lower" effect="read">
<ownedComment xmi:id="_RpH94PIGEdulR8T2OJRyFQ" annotatedElement="_x-QYQGwNEdq7X4sGURiZYA">
<body>The lower bound for the first end of the new association.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
</ownedParameter>
<ownedParameter xmi:id="_uL9yYGwNEdq7X4sGURiZYA" name="end1Upper" effect="read">
<ownedComment xmi:id="_UmXyIPIGEdulR8T2OJRyFQ" annotatedElement="_uL9yYGwNEdq7X4sGURiZYA">
<body>The upper bound for the first end of the new association.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
</ownedParameter>
<ownedParameter xmi:id="_qFQbsGwNEdq7X4sGURiZYA" name="end1Type" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
<ownedComment xmi:id="_TTX5MPIGEdulR8T2OJRyFQ" annotatedElement="_qFQbsGwNEdq7X4sGURiZYA">
<body>The type for the first end of the new association.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="_mB-McGwNEdq7X4sGURiZYA" name="end2IsNavigable" effect="read">
<ownedComment xmi:id="_YRNsMPIGEdulR8T2OJRyFQ" annotatedElement="_mB-McGwNEdq7X4sGURiZYA">
<body>The navigability for the second end of the new association.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_hm2sAGwNEdq7X4sGURiZYA" name="end2Aggregation" type="_B3q9cGwNEdq7X4sGURiZYA" effect="read">
<ownedComment xmi:id="_VjBAkPIGEdulR8T2OJRyFQ" annotatedElement="_hm2sAGwNEdq7X4sGURiZYA">
<body>The aggregation for the second end of the new association.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="_eK6JkGwNEdq7X4sGURiZYA" name="end2Name" effect="read">
<ownedComment xmi:id="_cTJ3oPIGEdulR8T2OJRyFQ" annotatedElement="_eK6JkGwNEdq7X4sGURiZYA">
<body>The name for the second end of the new association.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
<ownedParameter xmi:id="_auE2UGwNEdq7X4sGURiZYA" name="end2Lower" effect="read">
<ownedComment xmi:id="_aGo8wPIGEdulR8T2OJRyFQ" annotatedElement="_auE2UGwNEdq7X4sGURiZYA">
<body>The lower bound for the second end of the new association.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
</ownedParameter>
<ownedParameter xmi:id="_VprIUGwNEdq7X4sGURiZYA" name="end2Upper" effect="read">
<ownedComment xmi:id="_eBbXUPIGEdulR8T2OJRyFQ" annotatedElement="_VprIUGwNEdq7X4sGURiZYA">
<body>The upper bound for the second end of the new association.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_10fbsKPAEdqi_5gqUMOQtA" name="getAssociations">
<ownedComment xmi:id="_2pskQOwgEdqYHf-imTcTdw" annotatedElement="_10fbsKPAEdqi_5gqUMOQtA">
<body>Retrieves the associations in which this type is involved.</body>
</ownedComment>
<ownedParameter xmi:id="_5F3F0KPAEdqi_5gqUMOQtA" type="_AwvxoGwNEdq7X4sGURiZYA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7CRvMKPAEdqi_5gqUMOQtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7CRvMaPAEdqi_5gqUMOQtA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MNWH-4kxEeOMQ5AKLd10lA" name="conformsTo" bodyCondition="_MNWH_YkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MNWH_IkxEeOMQ5AKLd10lA" annotatedElement="_MNWH-4kxEeOMQ5AKLd10lA">
<body>The query conformsTo() gives true for a Type that conforms to another. By default, two Types do not conform to each other. This query is intended to be redefined for specific conformance situations.</body>
</ownedComment>
<ownedRule xmi:id="_MNWH_YkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MNWH-4kxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNWH_okxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (false)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MNWH_4kxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_MNWIAIkxEeOMQ5AKLd10lA" name="other" type="_ynRtoGvtEdqG6fBIPwe-mw"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MNWvAIkxEeOMQ5AKLd10lA" name="TypedElement" isAbstract="true">
<ownedComment xmi:id="_MNWvAYkxEeOMQ5AKLd10lA" annotatedElement="_MNWvAIkxEeOMQ5AKLd10lA">
<body>A TypedElement is a NamedElement that may have a Type specified for it.</body>
</ownedComment>
<generalization xmi:id="_MNWvAokxEeOMQ5AKLd10lA" general="_csVgUGvtEdqG6fBIPwe-mw"/>
<ownedAttribute xmi:id="_MNWvA4kxEeOMQ5AKLd10lA" name="type" type="_ynRtoGvtEdqG6fBIPwe-mw" association="_MNX9IIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNWvBIkxEeOMQ5AKLd10lA" annotatedElement="_MNWvA4kxEeOMQ5AKLd10lA">
<body>The type of the TypedElement.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNWvBYkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_h18oENlrEduDKPkA-0jJZg" name="Usage">
<ownedComment xmi:id="_MNWvBokxEeOMQ5AKLd10lA" annotatedElement="_h18oENlrEduDKPkA-0jJZg">
<body>A Usage is a Dependency in which the client Element requires the supplier Element (or set of Elements) for its full implementation or operation.</body>
</ownedComment>
<generalization xmi:id="_MNWvB4kxEeOMQ5AKLd10lA" general="_rEDGkGwKEdq7X4sGURiZYA"/>
</packagedElement>
<packagedElement xmi:type="uml:Enumeration" xmi:id="_AyM_oGwMEdq7X4sGURiZYA" name="VisibilityKind" visibility="private">
<ownedComment xmi:id="_MNXWEIkxEeOMQ5AKLd10lA" annotatedElement="_AyM_oGwMEdq7X4sGURiZYA">
<body>VisibilityKind is an enumeration type that defines literals to determine the visibility of Elements in a model.</body>
</ownedComment>
<ownedLiteral xmi:id="_MNXWEYkxEeOMQ5AKLd10lA" name="public">
<ownedComment xmi:id="_MNXWEokxEeOMQ5AKLd10lA" annotatedElement="_MNXWEYkxEeOMQ5AKLd10lA">
<body>A Named Element with public visibility is visible to all elements that can access the contents of the Namespace that owns it.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_MNXWE4kxEeOMQ5AKLd10lA" name="private">
<ownedComment xmi:id="_MNXWFIkxEeOMQ5AKLd10lA" annotatedElement="_MNXWE4kxEeOMQ5AKLd10lA">
<body>A NamedElement with private visibility is only visible inside the Namespace that owns it.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_MNXWFYkxEeOMQ5AKLd10lA" name="protected">
<ownedComment xmi:id="_MNXWFokxEeOMQ5AKLd10lA" annotatedElement="_MNXWFYkxEeOMQ5AKLd10lA">
<body>A NamedElement with protected visibility is visible to Elements that have a generalization relationship to the Namespace that owns it.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_MNXWF4kxEeOMQ5AKLd10lA" name="package">
<ownedComment xmi:id="_MNXWGIkxEeOMQ5AKLd10lA" annotatedElement="_MNXWF4kxEeOMQ5AKLd10lA">
<body>A NamedElement with package visibility is visible to all Elements within the nearest enclosing Package (given that other owning Elements have proper visibility). Outside the nearest enclosing Package, a NamedElement marked as having package visibility is not visible. Only NamedElements that are not owned by Packages can be marked as having package visibility.</body>
</ownedComment>
</ownedLiteral>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MNX9IIkxEeOMQ5AKLd10lA" name="A_type_typedElement" memberEnd="_MNWvA4kxEeOMQ5AKLd10lA _MNX9IYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MNX9IYkxEeOMQ5AKLd10lA" name="typedElement" type="_MNWvAIkxEeOMQ5AKLd10lA" association="_MNX9IIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNX9IokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNX9I4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MNX9JIkxEeOMQ5AKLd10lA" name="A_ownedParameter_signature" memberEnd="_MNVg-IkxEeOMQ5AKLd10lA _MNU54IkxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MNX9JYkxEeOMQ5AKLd10lA" name="A_parameter_templateSignature" memberEnd="_MNWH8okxEeOMQ5AKLd10lA _MNX9JokxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MNX9JokxEeOMQ5AKLd10lA" name="templateSignature" type="_MNVg74kxEeOMQ5AKLd10lA" association="_MNX9JYkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNX9J4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNX9KIkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MNYkMIkxEeOMQ5AKLd10lA" name="A_actual_templateParameterSubstitution" memberEnd="_MNVg5okxEeOMQ5AKLd10lA _MNYkMYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MNYkMYkxEeOMQ5AKLd10lA" name="templateParameterSubstitution" type="_MNVg4IkxEeOMQ5AKLd10lA" association="_MNYkMIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNYkMokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNYkM4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MNYkNIkxEeOMQ5AKLd10lA" name="A_ownedActual_owningTemplateParameterSubstitution" memberEnd="_MNVg6okxEeOMQ5AKLd10lA _MNYkNokxEeOMQ5AKLd10lA">
<generalization xmi:id="_MNYkNYkxEeOMQ5AKLd10lA" general="_MNYkMIkxEeOMQ5AKLd10lA"/>
<ownedEnd xmi:id="_MNYkNokxEeOMQ5AKLd10lA" name="owningTemplateParameterSubstitution" type="_MNVg4IkxEeOMQ5AKLd10lA" redefinedProperty="_MNYkMYkxEeOMQ5AKLd10lA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MNYkNIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNYkN4kxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MNYkOIkxEeOMQ5AKLd10lA" name="A_formal_templateParameterSubstitution" memberEnd="_MNVg6IkxEeOMQ5AKLd10lA _MNYkOYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MNYkOYkxEeOMQ5AKLd10lA" name="templateParameterSubstitution" type="_MNVg4IkxEeOMQ5AKLd10lA" association="_MNYkOIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNYkOokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNYkO4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MNZLQIkxEeOMQ5AKLd10lA" name="A_ownedDefault_templateParameter" memberEnd="_MNU52IkxEeOMQ5AKLd10lA _MNZLQokxEeOMQ5AKLd10lA">
<generalization xmi:id="_MNZLQYkxEeOMQ5AKLd10lA" general="_MNZLRYkxEeOMQ5AKLd10lA"/>
<ownedEnd xmi:id="_MNZLQokxEeOMQ5AKLd10lA" name="templateParameter" type="_KxRzgGvuEdqG6fBIPwe-mw" redefinedProperty="_MNZLRokxEeOMQ5AKLd10lA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MNZLQIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNZLQ4kxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MNZLRIkxEeOMQ5AKLd10lA" name="A_ownedParameteredElement_owningTemplateParameter" memberEnd="_MNU524kxEeOMQ5AKLd10lA _MNTEqokxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MNZLRYkxEeOMQ5AKLd10lA" name="A_default_templateParameter" memberEnd="_MNU51YkxEeOMQ5AKLd10lA _MNZLRokxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MNZLRokxEeOMQ5AKLd10lA" name="templateParameter" type="_KxRzgGvuEdqG6fBIPwe-mw" association="_MNZLRYkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNZLR4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNZLSIkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MNZLSYkxEeOMQ5AKLd10lA" name="A_parameteredElement_templateParameter" memberEnd="_MNU53okxEeOMQ5AKLd10lA _MNTErYkxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MNZyUIkxEeOMQ5AKLd10lA" name="A_signature_templateBinding" memberEnd="_MNUS5YkxEeOMQ5AKLd10lA _MNZyUYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MNZyUYkxEeOMQ5AKLd10lA" name="templateBinding" type="_MNUS1okxEeOMQ5AKLd10lA" subsettedProperty="_MNcOmIkxEeOMQ5AKLd10lA" association="_MNZyUIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNZyUokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNZyU4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MNZyVIkxEeOMQ5AKLd10lA" name="A_parameterSubstitution_templateBinding" memberEnd="_MNUS4YkxEeOMQ5AKLd10lA _MNVg7YkxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MNZyVYkxEeOMQ5AKLd10lA" name="A_templateBinding_boundElement" memberEnd="_MNUSxokxEeOMQ5AKLd10lA _MNUS34kxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MNZyVokxEeOMQ5AKLd10lA" name="A_ownedTemplateSignature_template" memberEnd="_MNUSw4kxEeOMQ5AKLd10lA _MNWH9YkxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MNZyV4kxEeOMQ5AKLd10lA" name="A_relatedElement_relationship" isDerived="true" memberEnd="_MNTrtokxEeOMQ5AKLd10lA _MNZyWIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MNZyWIkxEeOMQ5AKLd10lA" name="relationship" type="_DH62EKPAEdqi_5gqUMOQtA" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_MNZyV4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNZyWYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNZyWokxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MNaZYIkxEeOMQ5AKLd10lA" name="A_importedPackage_packageImport" memberEnd="_MNTEoIkxEeOMQ5AKLd10lA _MNaZYYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MNaZYYkxEeOMQ5AKLd10lA" name="packageImport" type="_SnNPIGwIEdq7X4sGURiZYA" subsettedProperty="_MNcOmIkxEeOMQ5AKLd10lA" association="_MNaZYIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNaZYokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNaZY4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MNaZZIkxEeOMQ5AKLd10lA" name="A_elementImport_importingNamespace" memberEnd="_MNPaS4kxEeOMQ5AKLd10lA _MNFpQokxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MNaZZYkxEeOMQ5AKLd10lA" name="A_ownedMember_namespace" isDerived="true" memberEnd="_MNQBWIkxEeOMQ5AKLd10lA _1vzv0LbIEeCRxrN1JUGuxA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MNaZZokxEeOMQ5AKLd10lA" name="A_ownedRule_context" memberEnd="_MNQBXIkxEeOMQ5AKLd10lA _MNAJwIkxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MNaZZ4kxEeOMQ5AKLd10lA" name="A_packageImport_importingNamespace" memberEnd="_MNQBYIkxEeOMQ5AKLd10lA _MNTEookxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MNbAcIkxEeOMQ5AKLd10lA" name="A_member_memberNamespace" isDerived="true" memberEnd="_MNQBVIkxEeOMQ5AKLd10lA _MNbAcYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MNbAcYkxEeOMQ5AKLd10lA" name="memberNamespace" type="_ZiwkoGwLEdq7X4sGURiZYA" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="_MNbAcIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNbAcokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNbAc4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MNbAdIkxEeOMQ5AKLd10lA" name="A_importedMember_namespace" isDerived="true" memberEnd="_MNQBUIkxEeOMQ5AKLd10lA _MNbAdYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MNbAdYkxEeOMQ5AKLd10lA" name="namespace" type="_ZiwkoGwLEdq7X4sGURiZYA" subsettedProperty="_MNbAcYkxEeOMQ5AKLd10lA" association="_MNbAdIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNbAdokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNbAd4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MNbAeIkxEeOMQ5AKLd10lA" name="A_nameExpression_namedElement" memberEnd="_MNLv4IkxEeOMQ5AKLd10lA _MNbAeYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MNbAeYkxEeOMQ5AKLd10lA" name="namedElement" type="_csVgUGvtEdqG6fBIPwe-mw" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MNbAeIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNbAeokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_epbu4EzPEeO2z-YY6ENIIA" name="A_clientDependency_client" memberEnd="_A9YUsIUBEeOxOrTbpQATOA _sD4acEzSEeO2z-YY6ENIIA _lGLv4EzPEeO2z-YY6ENIIA">
<ownedEnd xmi:id="_lGLv4EzPEeO2z-YY6ENIIA" visibility="private" type="_rEDGkGwKEdq7X4sGURiZYA" association="_epbu4EzPEeO2z-YY6ENIIA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BHS38EzVEeO2z-YY6ENIIA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rQyQ8EzPEeO2z-YY6ENIIA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MNbngIkxEeOMQ5AKLd10lA" name="A_lowerValue_owningLower" memberEnd="_MNHecIkxEeOMQ5AKLd10lA _MNbngYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MNbngYkxEeOMQ5AKLd10lA" name="owningLower" type="_Gjgl0GveEdq4DLWZOhbdEA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MNbngIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNbngokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MNbng4kxEeOMQ5AKLd10lA" name="A_upperValue_owningUpper" memberEnd="_MNHedIkxEeOMQ5AKLd10lA _MNbnhIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MNbnhIkxEeOMQ5AKLd10lA" name="owningUpper" type="_Gjgl0GveEdq4DLWZOhbdEA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MNbng4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNbnhYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MNbnhokxEeOMQ5AKLd10lA" name="A_importedElement_import" memberEnd="_MNFpQIkxEeOMQ5AKLd10lA _MNbnh4kxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MNbnh4kxEeOMQ5AKLd10lA" name="import" type="_RPl78GwIEdq7X4sGURiZYA" subsettedProperty="_MNcOmIkxEeOMQ5AKLd10lA" association="_MNbnhokxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNbniIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNbniYkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_bU41QAtAEeGcpbeCPJfCmw" name="A_ownedElement_owner" isDerived="true" memberEnd="_GDD2YAtAEeGcpbeCPJfCmw _N3hRMAtAEeGcpbeCPJfCmw"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MNcOkIkxEeOMQ5AKLd10lA" name="A_ownedComment_owningElement" memberEnd="_MNCl84kxEeOMQ5AKLd10lA _MNcOkYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MNcOkYkxEeOMQ5AKLd10lA" name="owningElement" type="_kl90MGvbEdq4DLWZOhbdEA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MNcOkIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNcOkokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MNcOk4kxEeOMQ5AKLd10lA" name="A_source_directedRelationship" isDerived="true" memberEnd="_MNB-4IkxEeOMQ5AKLd10lA _MNcOlIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MNcOlIkxEeOMQ5AKLd10lA" name="directedRelationship" type="_JBgfoKPAEdqi_5gqUMOQtA" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_MNZyWIkxEeOMQ5AKLd10lA" association="_MNcOk4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNcOlYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNcOlokxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MNcOl4kxEeOMQ5AKLd10lA" name="A_target_directedRelationship" isDerived="true" memberEnd="_MNB-44kxEeOMQ5AKLd10lA _MNcOmIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MNcOmIkxEeOMQ5AKLd10lA" name="directedRelationship" type="_JBgfoKPAEdqi_5gqUMOQtA" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_MNZyWIkxEeOMQ5AKLd10lA" association="_MNcOl4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNcOmYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNcOmokxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MNc1oIkxEeOMQ5AKLd10lA" name="A_supplier_supplierDependency" memberEnd="_MNBX0IkxEeOMQ5AKLd10lA _MNc1oYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MNc1oYkxEeOMQ5AKLd10lA" name="supplierDependency" type="_rEDGkGwKEdq7X4sGURiZYA" subsettedProperty="_MNcOmIkxEeOMQ5AKLd10lA" association="_MNc1oIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNc1ookxEeOMQ5AKLd10lA" annotatedElement="_MNc1oYkxEeOMQ5AKLd10lA">
<body>Indicates the dependencies that reference the supplier.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNc1o4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNc1pIkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MNc1pYkxEeOMQ5AKLd10lA" name="A_constrainedElement_constraint" memberEnd="_MNAJvIkxEeOMQ5AKLd10lA _MNc1pokxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MNc1pokxEeOMQ5AKLd10lA" name="constraint" type="_MNAJsIkxEeOMQ5AKLd10lA" association="_MNc1pYkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNc1p4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNc1qIkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MNdcsIkxEeOMQ5AKLd10lA" name="A_specification_owningConstraint" memberEnd="_MNAJw4kxEeOMQ5AKLd10lA _MNdcsYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MNdcsYkxEeOMQ5AKLd10lA" name="owningConstraint" type="_MNAJsIkxEeOMQ5AKLd10lA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MNdcsIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNdcsokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MNdcs4kxEeOMQ5AKLd10lA" name="A_annotatedElement_comment" memberEnd="_MM-7kYkxEeOMQ5AKLd10lA _MNdctIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MNdctIkxEeOMQ5AKLd10lA" name="comment" type="_Q8DcULGzEeCDe8CO90iVKQ" association="_MNdcs4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNdctYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNdctokxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MNeDwIkxEeOMQ5AKLd10lA" name="A_mapping_abstraction" memberEnd="_MM-Ug4kxEeOMQ5AKLd10lA _MNeDwYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MNeDwYkxEeOMQ5AKLd10lA" name="abstraction" type="_MM-UgIkxEeOMQ5AKLd10lA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MNeDwIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNeDwokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_-lGRgHLzEdqziYxiZo0YtA" name="Artifact">
<ownedComment xmi:id="_MNhHEIkxEeOMQ5AKLd10lA" annotatedElement="_-lGRgHLzEdqziYxiZo0YtA">
<body>An artifact is the specification of a physical piece of information that is used or produced by a software development process, or by deployment and operation of a system. Examples of artifacts include model files, source files, scripts, and binary executable files, a table in a database system, a development deliverable, or a word-processing document, a mail message.
An artifact is the source of a deployment to a node.</body>
</ownedComment>
<generalization xmi:id="_MNhuIIkxEeOMQ5AKLd10lA" general="_6UV2QGwJEdq7X4sGURiZYA"/>
<generalization xmi:id="_MNhuIYkxEeOMQ5AKLd10lA" general="_MNkKYIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_wvc1ILG2EeCDe8CO90iVKQ" name="fileName">
<ownedComment xmi:id="_MNhuIokxEeOMQ5AKLd10lA" annotatedElement="_wvc1ILG2EeCDe8CO90iVKQ">
<body>A concrete name that is used to refer to the Artifact in a physical context. Example: file system name, universal resource locator.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNhuI4kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNiVMIkxEeOMQ5AKLd10lA" name="manifestation" type="_MNn0w4kxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MNpp8IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNiVMYkxEeOMQ5AKLd10lA" annotatedElement="_MNiVMIkxEeOMQ5AKLd10lA">
<body>The set of model elements that are manifested in the Artifact. That is, these model elements are utilized in the construction (or generation) of the artifact.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNiVMokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNiVM4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNiVNIkxEeOMQ5AKLd10lA" name="nestedArtifact" type="_-lGRgHLzEdqziYxiZo0YtA" aggregation="composite" subsettedProperty="_MNQBWIkxEeOMQ5AKLd10lA" association="_MNpC8IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNiVNYkxEeOMQ5AKLd10lA" annotatedElement="_MNiVNIkxEeOMQ5AKLd10lA">
<body>The Artifacts that are defined (nested) within the Artifact. The association is a specialization of the ownedMember association from Namespace to NamedElement.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNiVNokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNiVN4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNiVOIkxEeOMQ5AKLd10lA" name="ownedAttribute" type="_Jp_1oGveEdq4DLWZOhbdEA" isOrdered="true" aggregation="composite" subsettedProperty="_ML-O9IkxEeOMQ5AKLd10lA _MNQBWIkxEeOMQ5AKLd10lA" association="_MNpC6okxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNiVOYkxEeOMQ5AKLd10lA" annotatedElement="_MNiVOIkxEeOMQ5AKLd10lA">
<body>The attributes or association ends defined for the Artifact. The association is a specialization of the ownedMember association.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNiVOokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNiVO4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNiVPIkxEeOMQ5AKLd10lA" name="ownedOperation" type="_M4X2IGveEdq4DLWZOhbdEA" isOrdered="true" aggregation="composite" subsettedProperty="_MMmhFYkxEeOMQ5AKLd10lA _ML-2AIkxEeOMQ5AKLd10lA _MNQBWIkxEeOMQ5AKLd10lA" association="_MNpC7YkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNiVPYkxEeOMQ5AKLd10lA" annotatedElement="_MNiVPIkxEeOMQ5AKLd10lA">
<body>The Operations defined for the Artifact. The association is a specialization of the ownedMember association.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNiVPokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNiVP4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedOperation xmi:id="_U7wxgHL0EdqziYxiZo0YtA" name="createOwnedAttribute">
<ownedComment xmi:id="__9c1UOwlEdqYHf-imTcTdw" annotatedElement="_U7wxgHL0EdqziYxiZo0YtA">
<body>Creates a property with the specified name, type, lower bound, and upper bound as an owned attribute of this artifact.</body>
</ownedComment>
<ownedParameter xmi:id="_U7wxgXL0EdqziYxiZo0YtA" type="_Jp_1oGveEdq4DLWZOhbdEA" direction="return"/>
<ownedParameter xmi:id="_U7wxgnL0EdqziYxiZo0YtA" name="name" effect="read">
<ownedComment xmi:id="_QGYH0PH9EdulR8T2OJRyFQ" annotatedElement="_U7wxgnL0EdqziYxiZo0YtA">
<body>The name for the new attribute, or null.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rUSKIKOxEdqi_5gqUMOQtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rUSKIaOxEdqi_5gqUMOQtA" value="1"/>
</ownedParameter>
<ownedParameter xmi:id="_U7wxg3L0EdqziYxiZo0YtA" name="type" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
<ownedComment xmi:id="_Rw7lIPH9EdulR8T2OJRyFQ" annotatedElement="_U7wxg3L0EdqziYxiZo0YtA">
<body>The type for the new attribute, or null.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_tO6q0KOxEdqi_5gqUMOQtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_tO6q0aOxEdqi_5gqUMOQtA" value="1"/>
</ownedParameter>
<ownedParameter xmi:id="_U7wxhHL0EdqziYxiZo0YtA" name="lower" effect="read">
<ownedComment xmi:id="_OtHO0fH9EdulR8T2OJRyFQ" annotatedElement="_U7wxhHL0EdqziYxiZo0YtA">
<body>The lower bound for the new attribute.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
</ownedParameter>
<ownedParameter xmi:id="_U7wxhXL0EdqziYxiZo0YtA" name="upper" effect="read">
<ownedComment xmi:id="_TYfY0PH9EdulR8T2OJRyFQ" annotatedElement="_U7wxhXL0EdqziYxiZo0YtA">
<body>The upper bound for the new attribute.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_C-IuUHL0EdqziYxiZo0YtA" name="createOwnedOperation">
<ownedComment xmi:id="_DUnlcOwmEdqYHf-imTcTdw" annotatedElement="_C-IuUHL0EdqziYxiZo0YtA">
<body>Creates an operation with the specified name, parameter names, parameter types, and return type (or null) as an owned operation of this artifact.</body>
</ownedComment>
<ownedParameter xmi:id="_C-IuUXL0EdqziYxiZo0YtA" type="_M4X2IGveEdq4DLWZOhbdEA" direction="return"/>
<ownedParameter xmi:id="_C-IuUnL0EdqziYxiZo0YtA" name="name" effect="read">
<ownedComment xmi:id="_VYNN0PH9EdulR8T2OJRyFQ" annotatedElement="_C-IuUnL0EdqziYxiZo0YtA">
<body>The name for the new operation, or null.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_m8S2MKOxEdqi_5gqUMOQtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_m8S2MaOxEdqi_5gqUMOQtA" value="1"/>
</ownedParameter>
<ownedParameter xmi:id="_C-IuVHL0EdqziYxiZo0YtA" name="parameterNames" effect="read">
<ownedComment xmi:id="_X6VMUPH9EdulR8T2OJRyFQ" annotatedElement="_C-IuVHL0EdqziYxiZo0YtA">
<body>The parameter names for the new operation, or null.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_C-IuVnL0EdqziYxiZo0YtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_C-IuVXL0EdqziYxiZo0YtA" value="*"/>
</ownedParameter>
<ownedParameter xmi:id="_C-IuV3L0EdqziYxiZo0YtA" name="parameterTypes" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
<ownedComment xmi:id="_f7aG0PH9EdulR8T2OJRyFQ" annotatedElement="_C-IuV3L0EdqziYxiZo0YtA">
<body>The parameter types for the new operation, or null.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_C-IuWXL0EdqziYxiZo0YtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_C-IuWHL0EdqziYxiZo0YtA" value="*"/>
</ownedParameter>
<ownedParameter xmi:id="_C-IuU3L0EdqziYxiZo0YtA" name="returnType" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
<ownedComment xmi:id="_njmAMPH9EdulR8T2OJRyFQ" annotatedElement="_C-IuU3L0EdqziYxiZo0YtA">
<body>The return type for the new operation, or null.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_o7P2MKOxEdqi_5gqUMOQtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_o7P2MaOxEdqi_5gqUMOQtA" value="1"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_E-7IoKJ9EdywJr5C4uHLKw" name="CommunicationPath">
<ownedComment xmi:id="_MNjjUIkxEeOMQ5AKLd10lA" annotatedElement="_E-7IoKJ9EdywJr5C4uHLKw">
<body>A communication path is an association between two deployment targets, through which they are able to exchange signals and messages.</body>
</ownedComment>
<ownedRule xmi:id="_MNjjUYkxEeOMQ5AKLd10lA" name="association_ends" constrainedElement="_E-7IoKJ9EdywJr5C4uHLKw">
<ownedComment xmi:id="_MNjjUokxEeOMQ5AKLd10lA" annotatedElement="_MNjjUYkxEeOMQ5AKLd10lA">
<body>The association ends of a CommunicationPath are typed by DeploymentTargets.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNjjU4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>endType->forAll (oclIsKindOf(DeploymentTarget))</body>
</specification>
</ownedRule>
<generalization xmi:id="_MNjjVIkxEeOMQ5AKLd10lA" general="_AwvxoGwNEdq7X4sGURiZYA"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MNkKYIkxEeOMQ5AKLd10lA" name="DeployedArtifact" isAbstract="true">
<ownedComment xmi:id="_MNkKYYkxEeOMQ5AKLd10lA" annotatedElement="_MNkKYIkxEeOMQ5AKLd10lA">
<body>A deployed artifact is an artifact or artifact instance that has been deployed to a deployment target.</body>
</ownedComment>
<generalization xmi:id="_MNkKYokxEeOMQ5AKLd10lA" general="_csVgUGvtEdqG6fBIPwe-mw"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MNkKY4kxEeOMQ5AKLd10lA" name="Deployment">
<ownedComment xmi:id="_MNkKZIkxEeOMQ5AKLd10lA" annotatedElement="_MNkKY4kxEeOMQ5AKLd10lA">
<body>A deployment is the allocation of an artifact or artifact instance to a deployment target.
A component deployment is the deployment of one or more artifacts or artifact instances to a deployment target, optionally parameterized by a deployment specification. Examples are executables and configuration files.</body>
</ownedComment>
<generalization xmi:id="_MNkKZYkxEeOMQ5AKLd10lA" general="_rEDGkGwKEdq7X4sGURiZYA"/>
<ownedAttribute xmi:id="_MNkKZokxEeOMQ5AKLd10lA" name="configuration" type="_W2CnILG2EeCDe8CO90iVKQ" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MNpC6YkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNkKZ4kxEeOMQ5AKLd10lA" annotatedElement="_MNkKZokxEeOMQ5AKLd10lA">
<body>The specification of properties that parameterize the deployment and execution of one or more Artifacts.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNkKaIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNkKaYkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNkKaokxEeOMQ5AKLd10lA" name="deployedArtifact" type="_MNkKYIkxEeOMQ5AKLd10lA" subsettedProperty="_MNBX0IkxEeOMQ5AKLd10lA" association="_MNpC5YkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNkKa4kxEeOMQ5AKLd10lA" annotatedElement="_MNkKaokxEeOMQ5AKLd10lA">
<body>The Artifacts that are deployed onto a Node. This association specializes the supplier association.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNkKbIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNkKbYkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNkKbokxEeOMQ5AKLd10lA" name="location" type="_PkmfgLLXEeCsYvaJqFFivQ" subsettedProperty="_sD4acEzSEeO2z-YY6ENIIA _N3hRMAtAEeGcpbeCPJfCmw" association="_MNpC5IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNkKb4kxEeOMQ5AKLd10lA" annotatedElement="_MNkKbokxEeOMQ5AKLd10lA">
<body>The DeployedTarget which is the target of a Deployment.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_W2CnILG2EeCDe8CO90iVKQ" name="DeploymentSpecification">
<ownedComment xmi:id="_MNkKcIkxEeOMQ5AKLd10lA" annotatedElement="_W2CnILG2EeCDe8CO90iVKQ">
<body>A deployment specification specifies a set of properties that determine execution parameters of a component artifact that is deployed on a node. A deployment specification can be aimed at a specific type of container. An artifact that reifies or implements deployment specification properties is a deployment descriptor.</body>
</ownedComment>
<ownedRule xmi:id="_MNkKcYkxEeOMQ5AKLd10lA" name="deployment_target" constrainedElement="_W2CnILG2EeCDe8CO90iVKQ">
<ownedComment xmi:id="_MNkKcokxEeOMQ5AKLd10lA" annotatedElement="_MNkKcYkxEeOMQ5AKLd10lA">
<body>The DeploymentTarget of a DeploymentSpecification is a kind of ExecutionEnvironment.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNkKc4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>deployment->forAll (location.oclIsKindOf(ExecutionEnvironment))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNkxcIkxEeOMQ5AKLd10lA" name="deployed_elements" constrainedElement="_W2CnILG2EeCDe8CO90iVKQ">
<ownedComment xmi:id="_MNkxcYkxEeOMQ5AKLd10lA" annotatedElement="_MNkxcIkxEeOMQ5AKLd10lA">
<body>The deployedElements of a DeploymentTarget that are involved in a Deployment that has an associated Deployment-Specification is a kind of Component (i.e., the configured components).</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNkxcokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>deployment->forAll (location.deployedElement->forAll (oclIsKindOf(Component)))</body>
</specification>
</ownedRule>
<generalization xmi:id="_MNkxc4kxEeOMQ5AKLd10lA" general="_-lGRgHLzEdqziYxiZo0YtA"/>
<ownedAttribute xmi:id="_MNkxdIkxEeOMQ5AKLd10lA" name="deployment" type="_MNkKY4kxEeOMQ5AKLd10lA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MNpC6YkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNkxdYkxEeOMQ5AKLd10lA" annotatedElement="_MNkxdIkxEeOMQ5AKLd10lA">
<body>The deployment with which the DeploymentSpecification is associated.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNkxdokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_at8FwLG2EeCDe8CO90iVKQ" name="deploymentLocation">
<ownedComment xmi:id="_MNkxd4kxEeOMQ5AKLd10lA" annotatedElement="_at8FwLG2EeCDe8CO90iVKQ">
<body>The location where an Artifact is deployed onto a Node. This is typically a 'directory' or 'memory address.'</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNkxeIkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_lncl8LG2EeCDe8CO90iVKQ" name="executionLocation">
<ownedComment xmi:id="_MNlYgIkxEeOMQ5AKLd10lA" annotatedElement="_lncl8LG2EeCDe8CO90iVKQ">
<body>The location where a component Artifact executes. This may be a local or remote location.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNlYgYkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_PkmfgLLXEeCsYvaJqFFivQ" name="DeploymentTarget" isAbstract="true">
<ownedComment xmi:id="_MNl_kIkxEeOMQ5AKLd10lA" annotatedElement="_PkmfgLLXEeCsYvaJqFFivQ">
<body>A deployment target is the location for a deployed artifact.</body>
</ownedComment>
<generalization xmi:id="_MNl_kYkxEeOMQ5AKLd10lA" general="_csVgUGvtEdqG6fBIPwe-mw"/>
<ownedAttribute xmi:id="_MNl_kokxEeOMQ5AKLd10lA" name="deployedElement" type="_jKxnwGwLEdq7X4sGURiZYA" isReadOnly="true" isDerived="true" association="_MNpC4IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNl_k4kxEeOMQ5AKLd10lA" annotatedElement="_MNl_kokxEeOMQ5AKLd10lA">
<body>The set of elements that are manifested in an Artifact that is involved in Deployment to a DeploymentTarget.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNl_lIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNl_lYkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNmmoIkxEeOMQ5AKLd10lA" name="deployment" type="_MNkKY4kxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MNpC5IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNmmoYkxEeOMQ5AKLd10lA" annotatedElement="_MNmmoIkxEeOMQ5AKLd10lA">
<body>The set of Deployments for a DeploymentTarget.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNmmookxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNmmo4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedOperation xmi:id="_7EO9ULLXEeCsYvaJqFFivQ" name="deployedElement" visibility="protected" bodyCondition="_MNmmpYkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MNmmpIkxEeOMQ5AKLd10lA" annotatedElement="_7EO9ULLXEeCsYvaJqFFivQ">
<body>Derivation for DeploymentTarget::/deployedElement</body>
</ownedComment>
<ownedRule xmi:id="_MNmmpYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_7EO9ULLXEeCsYvaJqFFivQ _MNl_kokxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNmmpokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (deployment.deployedArtifact->select(oclIsKindOf(Artifact))->collect(oclAsType(Artifact).manifestation)->collect(utilizedElement)->asSet())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_r58H8LLYEeCsYvaJqFFivQ" name="result" type="_jKxnwGwLEdq7X4sGURiZYA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNmmp4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNmmqIkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MNnNsIkxEeOMQ5AKLd10lA" name="Device">
<ownedComment xmi:id="_MNnNsYkxEeOMQ5AKLd10lA" annotatedElement="_MNnNsIkxEeOMQ5AKLd10lA">
<body>A device is a physical computational resource with processing capability upon which artifacts may be deployed for execution. Devices may be complex (i.e., they may consist of other devices).</body>
</ownedComment>
<generalization xmi:id="_MNnNsokxEeOMQ5AKLd10lA" general="_5YOyUKJ8EdywJr5C4uHLKw"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MNn0wIkxEeOMQ5AKLd10lA" name="ExecutionEnvironment">
<ownedComment xmi:id="_MNn0wYkxEeOMQ5AKLd10lA" annotatedElement="_MNn0wIkxEeOMQ5AKLd10lA">
<body>An execution environment is a node that offers an execution environment for specific types of components that are deployed on it in the form of executable artifacts.</body>
</ownedComment>
<generalization xmi:id="_MNn0wokxEeOMQ5AKLd10lA" general="_5YOyUKJ8EdywJr5C4uHLKw"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MNn0w4kxEeOMQ5AKLd10lA" name="Manifestation">
<ownedComment xmi:id="_MNn0xIkxEeOMQ5AKLd10lA" annotatedElement="_MNn0w4kxEeOMQ5AKLd10lA">
<body>A manifestation is the concrete physical rendering of one or more model elements by an artifact.</body>
</ownedComment>
<generalization xmi:id="_MNn0xYkxEeOMQ5AKLd10lA" general="_MM-UgIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MNn0xokxEeOMQ5AKLd10lA" name="utilizedElement" type="_jKxnwGwLEdq7X4sGURiZYA" subsettedProperty="_MNBX0IkxEeOMQ5AKLd10lA" association="_MNob2IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNn0x4kxEeOMQ5AKLd10lA" annotatedElement="_MNn0xokxEeOMQ5AKLd10lA">
<body>The model element that is utilized in the manifestation in an Artifact.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_5YOyUKJ8EdywJr5C4uHLKw" name="Node">
<ownedComment xmi:id="_MNn0yIkxEeOMQ5AKLd10lA" annotatedElement="_5YOyUKJ8EdywJr5C4uHLKw">
<body>A Node is computational resource upon which artifacts may be deployed for execution. Nodes can be interconnected through communication paths to define network structures.</body>
</ownedComment>
<ownedRule xmi:id="_MNn0yYkxEeOMQ5AKLd10lA" name="internal_structure" constrainedElement="_5YOyUKJ8EdywJr5C4uHLKw">
<ownedComment xmi:id="_MNn0yokxEeOMQ5AKLd10lA" annotatedElement="_MNn0yYkxEeOMQ5AKLd10lA">
<body>The internal structure of a Node (if defined) consists solely of parts of type Node.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNn0y4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>part->forAll(oclIsKindOf(Node))</body>
</specification>
</ownedRule>
<generalization xmi:id="_MNn0zIkxEeOMQ5AKLd10lA" general="_00owUGvdEdq4DLWZOhbdEA"/>
<generalization xmi:id="_MNob0IkxEeOMQ5AKLd10lA" general="_PkmfgLLXEeCsYvaJqFFivQ"/>
<ownedAttribute xmi:id="_MNob0YkxEeOMQ5AKLd10lA" name="nestedNode" type="_5YOyUKJ8EdywJr5C4uHLKw" aggregation="composite" subsettedProperty="_MNQBWIkxEeOMQ5AKLd10lA" association="_MNob1YkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNob0okxEeOMQ5AKLd10lA" annotatedElement="_MNob0YkxEeOMQ5AKLd10lA">
<body>The Nodes that are defined (nested) within the Node.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNob04kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNob1IkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedOperation xmi:id="_8asdwKJ8EdywJr5C4uHLKw" name="createCommunicationPath">
<ownedComment xmi:id="_8asdwaJ8EdywJr5C4uHLKw" annotatedElement="_8asdwKJ8EdywJr5C4uHLKw">
<body>Creates a (binary) communication path between this node and the specified other node, with the specified navigabilities, aggregations, names, lower bounds, and upper bounds, and owned by this node's nearest package.</body>
</ownedComment>
<ownedParameter xmi:id="_8asdwqJ8EdywJr5C4uHLKw" type="_E-7IoKJ9EdywJr5C4uHLKw" direction="return"/>
<ownedParameter xmi:id="_8asdw6J8EdywJr5C4uHLKw" name="end1IsNavigable" effect="read">
<ownedComment xmi:id="_8asdxKJ8EdywJr5C4uHLKw" annotatedElement="_8asdw6J8EdywJr5C4uHLKw">
<body>The navigability for the first end of the new communication path.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_8asdxaJ8EdywJr5C4uHLKw" name="end1Aggregation" type="_B3q9cGwNEdq7X4sGURiZYA" effect="read">
<ownedComment xmi:id="_8asdxqJ8EdywJr5C4uHLKw" annotatedElement="_8asdxaJ8EdywJr5C4uHLKw">
<body>The aggregation for the first end of the new communication path.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="_8asdx6J8EdywJr5C4uHLKw" name="end1Name" effect="read">
<ownedComment xmi:id="_8asdyKJ8EdywJr5C4uHLKw" annotatedElement="_8asdx6J8EdywJr5C4uHLKw">
<body>The name for the first end of the new communication path.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
<ownedParameter xmi:id="_8asdyaJ8EdywJr5C4uHLKw" name="end1Lower" effect="read">
<ownedComment xmi:id="_8asdyqJ8EdywJr5C4uHLKw" annotatedElement="_8asdyaJ8EdywJr5C4uHLKw">
<body>The lower bound for the first end of the new communication path.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
</ownedParameter>
<ownedParameter xmi:id="_8asdy6J8EdywJr5C4uHLKw" name="end1Upper" effect="read">
<ownedComment xmi:id="_8asdzKJ8EdywJr5C4uHLKw" annotatedElement="_8asdy6J8EdywJr5C4uHLKw">
<body>The upper bound for the first end of the new communication path.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
</ownedParameter>
<ownedParameter xmi:id="_8asdzaJ8EdywJr5C4uHLKw" name="end1Node" type="_5YOyUKJ8EdywJr5C4uHLKw" effect="read">
<ownedComment xmi:id="_8asdzqJ8EdywJr5C4uHLKw" annotatedElement="_8asdzaJ8EdywJr5C4uHLKw">
<body>The type for the first end of the new communication path.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="_8asdz6J8EdywJr5C4uHLKw" name="end2IsNavigable" effect="read">
<ownedComment xmi:id="_8asd0KJ8EdywJr5C4uHLKw" annotatedElement="_8asdz6J8EdywJr5C4uHLKw">
<body>The navigability for the second end of the new communication path.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_8asd0aJ8EdywJr5C4uHLKw" name="end2Aggregation" type="_B3q9cGwNEdq7X4sGURiZYA" effect="read">
<ownedComment xmi:id="_8asd0qJ8EdywJr5C4uHLKw" annotatedElement="_8asd0aJ8EdywJr5C4uHLKw">
<body>The aggregation for the second end of the new communication path.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="_8asd06J8EdywJr5C4uHLKw" name="end2Name" effect="read">
<ownedComment xmi:id="_8asd1KJ8EdywJr5C4uHLKw" annotatedElement="_8asd06J8EdywJr5C4uHLKw">
<body>The name for the second end of the new communication path.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
<ownedParameter xmi:id="_8asd1aJ8EdywJr5C4uHLKw" name="end2Lower" effect="read">
<ownedComment xmi:id="_8asd1qJ8EdywJr5C4uHLKw" annotatedElement="_8asd1aJ8EdywJr5C4uHLKw">
<body>The lower bound for the second end of the new communication path.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
</ownedParameter>
<ownedParameter xmi:id="_8asd16J8EdywJr5C4uHLKw" name="end2Upper" effect="read">
<ownedComment xmi:id="_8asd2KJ8EdywJr5C4uHLKw" annotatedElement="_8asd16J8EdywJr5C4uHLKw">
<body>The upper bound for the second end of the new communication path.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_8asd2aJ8EdywJr5C4uHLKw" name="getCommunicationPaths">
<ownedComment xmi:id="_8asd2qJ8EdywJr5C4uHLKw" annotatedElement="_8asd2aJ8EdywJr5C4uHLKw">
<body>Retrieves the communication paths in which this node is involved.</body>
</ownedComment>
<ownedParameter xmi:id="_8asd26J8EdywJr5C4uHLKw" type="_E-7IoKJ9EdywJr5C4uHLKw" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_8asd3aJ8EdywJr5C4uHLKw"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_8asd3KJ8EdywJr5C4uHLKw" value="*"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MNob1YkxEeOMQ5AKLd10lA" name="A_nestedNode_node" memberEnd="_MNob0YkxEeOMQ5AKLd10lA _MNob1okxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MNob1okxEeOMQ5AKLd10lA" name="node" type="_5YOyUKJ8EdywJr5C4uHLKw" subsettedProperty="_1vzv0LbIEeCRxrN1JUGuxA" association="_MNob1YkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNob14kxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MNob2IkxEeOMQ5AKLd10lA" name="A_utilizedElement_manifestation" memberEnd="_MNn0xokxEeOMQ5AKLd10lA _MNob2YkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MNob2YkxEeOMQ5AKLd10lA" name="manifestation" type="_MNn0w4kxEeOMQ5AKLd10lA" subsettedProperty="_MNc1oYkxEeOMQ5AKLd10lA" association="_MNob2IkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNob2okxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNob24kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MNpC4IkxEeOMQ5AKLd10lA" name="A_deployedElement_deploymentTarget" isDerived="true" memberEnd="_MNl_kokxEeOMQ5AKLd10lA _MNpC4YkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MNpC4YkxEeOMQ5AKLd10lA" name="deploymentTarget" type="_PkmfgLLXEeCsYvaJqFFivQ" association="_MNpC4IkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNpC4okxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNpC44kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MNpC5IkxEeOMQ5AKLd10lA" name="A_deployment_location" memberEnd="_MNmmoIkxEeOMQ5AKLd10lA _MNkKbokxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MNpC5YkxEeOMQ5AKLd10lA" name="A_deployedArtifact_deploymentForArtifact" memberEnd="_MNkKaokxEeOMQ5AKLd10lA _MNpC5okxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MNpC5okxEeOMQ5AKLd10lA" name="deploymentForArtifact" type="_MNkKY4kxEeOMQ5AKLd10lA" subsettedProperty="_MNc1oYkxEeOMQ5AKLd10lA" association="_MNpC5YkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNpC54kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNpC6IkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MNpC6YkxEeOMQ5AKLd10lA" name="A_configuration_deployment" memberEnd="_MNkKZokxEeOMQ5AKLd10lA _MNkxdIkxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MNpC6okxEeOMQ5AKLd10lA" name="A_ownedAttribute_artifact" memberEnd="_MNiVOIkxEeOMQ5AKLd10lA _MNpC64kxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MNpC64kxEeOMQ5AKLd10lA" name="artifact" type="_-lGRgHLzEdqziYxiZo0YtA" subsettedProperty="_MMsAqIkxEeOMQ5AKLd10lA _1vzv0LbIEeCRxrN1JUGuxA" association="_MNpC6okxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNpC7IkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MNpC7YkxEeOMQ5AKLd10lA" name="A_ownedOperation_artifact" memberEnd="_MNiVPIkxEeOMQ5AKLd10lA _MNpC7okxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MNpC7okxEeOMQ5AKLd10lA" name="artifact" type="_-lGRgHLzEdqziYxiZo0YtA" subsettedProperty="_YUdlwLbAEeCRxrN1JUGuxA _1vzv0LbIEeCRxrN1JUGuxA _zYrE4La-EeCRxrN1JUGuxA" association="_MNpC7YkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNpC74kxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MNpC8IkxEeOMQ5AKLd10lA" name="A_nestedArtifact_artifact" memberEnd="_MNiVNIkxEeOMQ5AKLd10lA _MNpC8YkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MNpC8YkxEeOMQ5AKLd10lA" name="artifact" type="_-lGRgHLzEdqziYxiZo0YtA" subsettedProperty="_1vzv0LbIEeCRxrN1JUGuxA" association="_MNpC8IkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNpC8okxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MNpp8IkxEeOMQ5AKLd10lA" name="A_manifestation_artifact" memberEnd="_MNiVMIkxEeOMQ5AKLd10lA _MNpp8YkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MNpp8YkxEeOMQ5AKLd10lA" name="artifact" type="_-lGRgHLzEdqziYxiZo0YtA" subsettedProperty="_sD4acEzSEeO2z-YY6ENIIA _N3hRMAtAEeGcpbeCPJfCmw" association="_MNpp8IkxEeOMQ5AKLd10lA"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MNqRAIkxEeOMQ5AKLd10lA" name="InformationFlow">
<ownedComment xmi:id="_MNqRAYkxEeOMQ5AKLd10lA" annotatedElement="_MNqRAIkxEeOMQ5AKLd10lA">
<body>InformationFlows describe circulation of information through a system in a general manner. They do not specify the nature of the information, mechanisms by which it is conveyed, sequences of exchange or any control conditions. During more detailed modeling, representation and realization links may be added to specify which model elements implement an InformationFlow and to show how information is conveyed. InformationFlows require some kind of “information channel” for unidirectional transmission of information items from sources to targets.  They specify the information channel’s realizations, if any, and identify the information that flows along them.  Information moving along the information channel may be represented by abstract InformationItems and by concrete Classifiers.</body>
</ownedComment>
<ownedRule xmi:id="_MNqRAokxEeOMQ5AKLd10lA" name="must_conform" constrainedElement="_MNqRAIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNqRA4kxEeOMQ5AKLd10lA" annotatedElement="_MNqRAokxEeOMQ5AKLd10lA">
<body>The sources and targets of the information flow must conform to the sources and targets or conversely the targets and sources of the realization relationships.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNqRBIkxEeOMQ5AKLd10lA" language=""/>
</ownedRule>
<ownedRule xmi:id="_MNqRBYkxEeOMQ5AKLd10lA" name="sources_and_targets_kind" constrainedElement="_MNqRAIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNqRBokxEeOMQ5AKLd10lA" annotatedElement="_MNqRBYkxEeOMQ5AKLd10lA">
<body>The sources and targets of the information flow can only be one of the following kind: Actor, Node, UseCase, Artifact, Class, Component, Port, Property, Interface, Package, ActivityNode, ActivityPartition,&#xD;
Behavior and InstanceSpecification except when its classifier is a relationship (i.e. it represents a link).</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNqRB4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(self.informationSource->forAll( sis |&#xD;
oclIsKindOf(Actor) or oclIsKindOf(Node) or oclIsKindOf(UseCase) or oclIsKindOf(Artifact) or &#xD;
oclIsKindOf(Class) or oclIsKindOf(Component) or oclIsKindOf(Port) or oclIsKindOf(Property) or &#xD;
oclIsKindOf(Interface) or oclIsKindOf(Package) or oclIsKindOf(ActivityNode) or oclIsKindOf(ActivityPartition) or &#xD;
(oclIsKindOf(InstanceSpecification) and not sis.oclAsType(InstanceSpecification).classifier->exists(oclIsKindOf(Relationship))))) &#xD;
&#xD;
and&#xD;
&#xD;
(self.informationTarget->forAll( sit | &#xD;
oclIsKindOf(Actor) or oclIsKindOf(Node) or oclIsKindOf(UseCase) or oclIsKindOf(Artifact) or &#xD;
oclIsKindOf(Class) or oclIsKindOf(Component) or oclIsKindOf(Port) or oclIsKindOf(Property) or &#xD;
oclIsKindOf(Interface) or oclIsKindOf(Package) or oclIsKindOf(ActivityNode) or oclIsKindOf(ActivityPartition) or &#xD;
(oclIsKindOf(InstanceSpecification) and not sit.oclAsType(InstanceSpecification).classifier->exists(oclIsKindOf(Relationship)))))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNqRCIkxEeOMQ5AKLd10lA" name="convey_classifiers" constrainedElement="_MNqRAIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNqRCYkxEeOMQ5AKLd10lA" annotatedElement="_MNqRCIkxEeOMQ5AKLd10lA">
<body>An information flow can only convey classifiers that are allowed to represent an information item.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNqRCokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>self.conveyed->forAll(oclIsKindOf(Class) or oclIsKindOf(Interface)&#xD;
or oclIsKindOf(InformationItem) or oclIsKindOf(Signal) or oclIsKindOf(Component))</body>
</specification>
</ownedRule>
<generalization xmi:id="_MNqRC4kxEeOMQ5AKLd10lA" general="_JBgfoKPAEdqi_5gqUMOQtA"/>
<generalization xmi:id="_MNqRDIkxEeOMQ5AKLd10lA" general="_jKxnwGwLEdq7X4sGURiZYA"/>
<ownedAttribute xmi:id="_MNqRDYkxEeOMQ5AKLd10lA" name="conveyed" type="_6UV2QGwJEdq7X4sGURiZYA" association="_MNq4JIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNqRDokxEeOMQ5AKLd10lA" annotatedElement="_MNqRDYkxEeOMQ5AKLd10lA">
<body>Specifies the information items that may circulate on this information flow.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNqRD4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNqREIkxEeOMQ5AKLd10lA" name="informationSource" type="_csVgUGvtEdqG6fBIPwe-mw" subsettedProperty="_MNB-4IkxEeOMQ5AKLd10lA" association="_MNrfKIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNqREYkxEeOMQ5AKLd10lA" annotatedElement="_MNqREIkxEeOMQ5AKLd10lA">
<body>Defines from which source the conveyed InformationItems are initiated.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNqREokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNqRE4kxEeOMQ5AKLd10lA" name="informationTarget" type="_csVgUGvtEdqG6fBIPwe-mw" subsettedProperty="_MNB-44kxEeOMQ5AKLd10lA" association="_MNrfNIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNqRFIkxEeOMQ5AKLd10lA" annotatedElement="_MNqRE4kxEeOMQ5AKLd10lA">
<body>Defines to which target the conveyed InformationItems are directed.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNqRFYkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNqRFokxEeOMQ5AKLd10lA" name="realization" type="_DH62EKPAEdqi_5gqUMOQtA" association="_MNrfLIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNqRF4kxEeOMQ5AKLd10lA" annotatedElement="_MNqRFokxEeOMQ5AKLd10lA">
<body>Determines which Relationship will realize the specified flow.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNqRGIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNqRGYkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNqRGokxEeOMQ5AKLd10lA" name="realizingActivityEdge" type="_MLbcYIkxEeOMQ5AKLd10lA" association="_MNrfIIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNqRG4kxEeOMQ5AKLd10lA" annotatedElement="_MNqRGokxEeOMQ5AKLd10lA">
<body>Determines which ActivityEdges will realize the specified flow.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNqRHIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNqRHYkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNqRHokxEeOMQ5AKLd10lA" name="realizingConnector" type="_YxC2YLLWEeCsYvaJqFFivQ" association="_MNrfMIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNqRH4kxEeOMQ5AKLd10lA" annotatedElement="_MNqRHokxEeOMQ5AKLd10lA">
<body>Determines which Connectors will realize the specified flow.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNqRIIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNqRIYkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNqRIokxEeOMQ5AKLd10lA" name="realizingMessage" type="_gfgNwGveEdq4DLWZOhbdEA" association="_MNrfJIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNqRI4kxEeOMQ5AKLd10lA" annotatedElement="_MNqRIokxEeOMQ5AKLd10lA">
<body>Determines which Messages will realize the specified flow.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNqRJIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNqRJYkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MNq4EIkxEeOMQ5AKLd10lA" name="InformationItem">
<ownedComment xmi:id="_MNq4EYkxEeOMQ5AKLd10lA" annotatedElement="_MNq4EIkxEeOMQ5AKLd10lA">
<body>InformationItems represent many kinds of information that can flow from sources to targets in very abstract ways.  They represent the kinds of information that may move within a system, but do not elaborate details of the transferred information.  Details of transferred information are the province of other Classifiers that may ultimately define InformationItems.  Consequently, InformationItems cannot be instantiated and do not themselves have features, generalizations, or associations. An important use of InformationItems is to represent information during early design stages, possibly before the detailed modeling decisions that will ultimately define them have been made. Another purpose of InformationItems is to abstract portions of complex models in less precise, but perhaps more general and communicable, ways.</body>
</ownedComment>
<ownedRule xmi:id="_MNq4EokxEeOMQ5AKLd10lA" name="sources_and_targets" constrainedElement="_MNq4EIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNq4E4kxEeOMQ5AKLd10lA" annotatedElement="_MNq4EokxEeOMQ5AKLd10lA">
<body>The sources and targets of an information item (its related information flows) must designate subsets of the sources and targets of the representation information item, if any. The Classifiers that can realize an information item can only be of the following kind: Class, Interface, InformationItem, Signal, Component.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNq4FIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(self.represented->select(oclIsKindOf(InformationItem))->forAll(p |&#xD;
p.conveyingFlow.source->forAll(q | self.conveyingFlow.source->includes(q)) and&#xD;
p.conveyingFlow.target->forAll(q | self.conveyingFlow.target->includes(q)))) and&#xD;
(self.represented->forAll(oclIsKindOf(Class) or oclIsKindOf(Interface) or&#xD;
oclIsKindOf(InformationItem) or oclIsKindOf(Signal) or oclIsKindOf(Component)))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNq4FYkxEeOMQ5AKLd10lA" name="has_no" constrainedElement="_MNq4EIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNq4FokxEeOMQ5AKLd10lA" annotatedElement="_MNq4FYkxEeOMQ5AKLd10lA">
<body>An informationItem has no feature, no generalization, and no associations.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNq4F4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>self.generalization->isEmpty() and self.feature->isEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNq4GIkxEeOMQ5AKLd10lA" name="not_instantiable" constrainedElement="_MNq4EIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNq4GYkxEeOMQ5AKLd10lA" annotatedElement="_MNq4GIkxEeOMQ5AKLd10lA">
<body>It is not instantiable.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNq4GokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>isAbstract</body>
</specification>
</ownedRule>
<generalization xmi:id="_MNq4G4kxEeOMQ5AKLd10lA" general="_6UV2QGwJEdq7X4sGURiZYA"/>
<ownedAttribute xmi:id="_MNq4HIkxEeOMQ5AKLd10lA" name="represented" type="_6UV2QGwJEdq7X4sGURiZYA" association="_MNq4IIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNq4HYkxEeOMQ5AKLd10lA" annotatedElement="_MNq4HIkxEeOMQ5AKLd10lA">
<body>Determines the classifiers that will specify the structure and nature of the information. An information item represents all its represented classifiers.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNq4HokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNq4H4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MNq4IIkxEeOMQ5AKLd10lA" name="A_represented_representation" memberEnd="_MNq4HIkxEeOMQ5AKLd10lA _MNq4IYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MNq4IYkxEeOMQ5AKLd10lA" name="representation" type="_MNq4EIkxEeOMQ5AKLd10lA" association="_MNq4IIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNq4IokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNq4I4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MNq4JIkxEeOMQ5AKLd10lA" name="A_conveyed_conveyingFlow" memberEnd="_MNqRDYkxEeOMQ5AKLd10lA _MNq4JYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MNq4JYkxEeOMQ5AKLd10lA" name="conveyingFlow" type="_MNqRAIkxEeOMQ5AKLd10lA" association="_MNq4JIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNq4JokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNq4J4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MNrfIIkxEeOMQ5AKLd10lA" name="A_realizingActivityEdge_informationFlow" memberEnd="_MNqRGokxEeOMQ5AKLd10lA _MNrfIYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MNrfIYkxEeOMQ5AKLd10lA" name="informationFlow" type="_MNqRAIkxEeOMQ5AKLd10lA" association="_MNrfIIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNrfIokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNrfI4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MNrfJIkxEeOMQ5AKLd10lA" name="A_realizingMessage_informationFlow" memberEnd="_MNqRIokxEeOMQ5AKLd10lA _MNrfJYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MNrfJYkxEeOMQ5AKLd10lA" name="informationFlow" type="_MNqRAIkxEeOMQ5AKLd10lA" association="_MNrfJIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNrfJokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNrfJ4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MNrfKIkxEeOMQ5AKLd10lA" name="A_informationSource_informationFlow" memberEnd="_MNqREIkxEeOMQ5AKLd10lA _MNrfKYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MNrfKYkxEeOMQ5AKLd10lA" name="informationFlow" type="_MNqRAIkxEeOMQ5AKLd10lA" subsettedProperty="_MNcOlIkxEeOMQ5AKLd10lA" association="_MNrfKIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNrfKokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNrfK4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MNrfLIkxEeOMQ5AKLd10lA" name="A_realization_abstraction_flow" memberEnd="_MNqRFokxEeOMQ5AKLd10lA _MNrfLYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MNrfLYkxEeOMQ5AKLd10lA" name="abstraction" type="_MNqRAIkxEeOMQ5AKLd10lA" association="_MNrfLIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNrfLokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNrfL4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MNrfMIkxEeOMQ5AKLd10lA" name="A_realizingConnector_informationFlow" memberEnd="_MNqRHokxEeOMQ5AKLd10lA _MNrfMYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MNrfMYkxEeOMQ5AKLd10lA" name="informationFlow" type="_MNqRAIkxEeOMQ5AKLd10lA" association="_MNrfMIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNrfMokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNrfM4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MNrfNIkxEeOMQ5AKLd10lA" name="A_informationTarget_informationFlow" memberEnd="_MNqRE4kxEeOMQ5AKLd10lA _MNrfNYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MNrfNYkxEeOMQ5AKLd10lA" name="informationFlow" type="_MNqRAIkxEeOMQ5AKLd10lA" subsettedProperty="_MNcOmIkxEeOMQ5AKLd10lA" association="_MNrfNIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNrfNokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNrfN4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MNsGMIkxEeOMQ5AKLd10lA" name="ActionExecutionSpecification">
<ownedComment xmi:id="_MNsGMYkxEeOMQ5AKLd10lA" annotatedElement="_MNsGMIkxEeOMQ5AKLd10lA">
<body>An ActionExecutionSpecification is a kind of ExecutionSpecification representing the execution of an Action.</body>
</ownedComment>
<ownedRule xmi:id="_MNsGMokxEeOMQ5AKLd10lA" name="action_referenced" constrainedElement="_MNsGMIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNsGM4kxEeOMQ5AKLd10lA" annotatedElement="_MNsGMokxEeOMQ5AKLd10lA">
<body>The Action referenced by the ActionExecutionSpecification must be owned by the Interaction owning that ActionExecutionSpecification.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNsGNIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(enclosingInteraction->notEmpty() or enclosingOperand.combinedFragment->notEmpty()) and&#xD;
let parentInteraction : Set(Interaction) = enclosingInteraction.oclAsType(Interaction)->asSet()->union(&#xD;
enclosingOperand.combinedFragment->closure(enclosingOperand.combinedFragment)->&#xD;
collect(enclosingInteraction).oclAsType(Interaction)->asSet()) in&#xD;
(parentInteraction->size() = 1) and self.action.interaction->asSet() = parentInteraction</body>
</specification>
</ownedRule>
<generalization xmi:id="_MNsGNYkxEeOMQ5AKLd10lA" general="_MNt7ZYkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MNsGNokxEeOMQ5AKLd10lA" name="action" type="_6WKakLLQEeCsYvaJqFFivQ" association="_MN-aEIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNsGN4kxEeOMQ5AKLd10lA" annotatedElement="_MNsGNokxEeOMQ5AKLd10lA">
<body>Action whose execution is occurring.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MNsGOIkxEeOMQ5AKLd10lA" name="BehaviorExecutionSpecification">
<ownedComment xmi:id="_MNsGOYkxEeOMQ5AKLd10lA" annotatedElement="_MNsGOIkxEeOMQ5AKLd10lA">
<body>A BehaviorExecutionSpecification is a kind of ExecutionSpecification representing the execution of a Behavior.</body>
</ownedComment>
<generalization xmi:id="_MNsGOokxEeOMQ5AKLd10lA" general="_MNt7ZYkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MNsGO4kxEeOMQ5AKLd10lA" name="behavior" type="_TUPtYGveEdq4DLWZOhbdEA" association="_MN9zE4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNsGPIkxEeOMQ5AKLd10lA" annotatedElement="_MNsGO4kxEeOMQ5AKLd10lA">
<body>Behavior whose execution is occurring.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNsGPYkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MNstQIkxEeOMQ5AKLd10lA" name="CombinedFragment">
<ownedComment xmi:id="_MNstQYkxEeOMQ5AKLd10lA" annotatedElement="_MNstQIkxEeOMQ5AKLd10lA">
<body>A CombinedFragment defines an expression of InteractionFragments. A CombinedFragment is defined by an interaction operator and corresponding InteractionOperands. Through the use of CombinedFragments the user will be able to describe a number of traces in a compact and concise manner.</body>
</ownedComment>
<ownedRule xmi:id="_MNstQokxEeOMQ5AKLd10lA" name="break" constrainedElement="_MNstQIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNstQ4kxEeOMQ5AKLd10lA" annotatedElement="_MNstQokxEeOMQ5AKLd10lA">
<body>If the interactionOperator is break, the corresponding InteractionOperand must cover all Lifelines covered by the enclosing InteractionFragment.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNstRIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>interactionOperator=InteractionOperatorKind::break implies &#xD;
enclosingInteraction.oclAsType(InteractionFragment)->asSet()->union(&#xD;
enclosingOperand.oclAsType(InteractionFragment)->asSet()).covered->asSet() = self.covered->asSet()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNstRYkxEeOMQ5AKLd10lA" name="consider_and_ignore" constrainedElement="_MNstQIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNstRokxEeOMQ5AKLd10lA" annotatedElement="_MNstRYkxEeOMQ5AKLd10lA">
<body>The interaction operators 'consider' and 'ignore' can only be used for the ConsiderIgnoreFragment subtype of CombinedFragment</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNstR4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>((interactionOperator = InteractionOperatorKind::consider) or (interactionOperator = InteractionOperatorKind::ignore)) implies oclIsKindOf(ConsiderIgnoreFragment)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNstSIkxEeOMQ5AKLd10lA" name="opt_loop_break_neg" constrainedElement="_MNstQIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNstSYkxEeOMQ5AKLd10lA" annotatedElement="_MNstSIkxEeOMQ5AKLd10lA">
<body>If the interactionOperator is opt, loop, break, assert or neg, there must be exactly one operand.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNstSokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(interactionOperator = InteractionOperatorKind::opt or interactionOperator = InteractionOperatorKind::loop or&#xD;
interactionOperator = InteractionOperatorKind::break or interactionOperator = InteractionOperatorKind::assert or&#xD;
interactionOperator = InteractionOperatorKind::neg)&#xD;
implies operand->size()=1</body>
</specification>
</ownedRule>
<generalization xmi:id="_MNstS4kxEeOMQ5AKLd10lA" general="_MNw-wIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MNstTIkxEeOMQ5AKLd10lA" name="cfragmentGate" type="_MNvJgIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MN9zDYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNstTYkxEeOMQ5AKLd10lA" annotatedElement="_MNstTIkxEeOMQ5AKLd10lA">
<body>Specifies the gates that form the interface between this CombinedFragment and its surroundings</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNstTokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNstT4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNstUIkxEeOMQ5AKLd10lA" name="interactionOperator" type="_MN3sYIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNstUYkxEeOMQ5AKLd10lA" annotatedElement="_MNstUIkxEeOMQ5AKLd10lA">
<body>Specifies the operation which defines the semantics of this combination of InteractionFragments.</body>
</ownedComment>
<defaultValue xmi:type="uml:InstanceValue" xmi:id="_MNstUokxEeOMQ5AKLd10lA" type="_MN3sYIkxEeOMQ5AKLd10lA" instance="_MN3sYokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNstU4kxEeOMQ5AKLd10lA" name="operand" type="_MNxlwIkxEeOMQ5AKLd10lA" isOrdered="true" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MN9zEIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNstVIkxEeOMQ5AKLd10lA" annotatedElement="_MNstU4kxEeOMQ5AKLd10lA">
<body>The set of operands of the combined fragment.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNstVYkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MNtUUIkxEeOMQ5AKLd10lA" name="ConsiderIgnoreFragment">
<ownedComment xmi:id="_MNtUUYkxEeOMQ5AKLd10lA" annotatedElement="_MNtUUIkxEeOMQ5AKLd10lA">
<body>A ConsiderIgnoreFragment is a kind of CombinedFragment that is used for the consider and ignore cases, which require lists of pertinent Messages to be specified.</body>
</ownedComment>
<ownedRule xmi:id="_MNtUUokxEeOMQ5AKLd10lA" name="consider_or_ignore" constrainedElement="_MNtUUIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNtUU4kxEeOMQ5AKLd10lA" annotatedElement="_MNtUUokxEeOMQ5AKLd10lA">
<body>The interaction operator of a ConsiderIgnoreFragment must be either 'consider' or 'ignore'.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNtUVIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(interactionOperator = InteractionOperatorKind::consider) or (interactionOperator = InteractionOperatorKind::ignore)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNtUVYkxEeOMQ5AKLd10lA" name="type" constrainedElement="_MNtUUIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNtUVokxEeOMQ5AKLd10lA" annotatedElement="_MNtUVYkxEeOMQ5AKLd10lA">
<body>The NamedElements must be of a type of element that can be a signature for a message (i.e.., an Operation, or a Signal).</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNtUV4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>message->forAll(m | m.oclIsKindOf(Operation) or m.oclIsKindOf(Signal))</body>
</specification>
</ownedRule>
<generalization xmi:id="_MNtUWIkxEeOMQ5AKLd10lA" general="_MNstQIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MNtUWYkxEeOMQ5AKLd10lA" name="message" type="_csVgUGvtEdqG6fBIPwe-mw" association="_MN9zCYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNtUWokxEeOMQ5AKLd10lA" annotatedElement="_MNtUWYkxEeOMQ5AKLd10lA">
<body>The set of messages that apply to this fragment.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNtUW4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNtUXIkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MNtUXYkxEeOMQ5AKLd10lA" name="Continuation">
<ownedComment xmi:id="_MNtUXokxEeOMQ5AKLd10lA" annotatedElement="_MNtUXYkxEeOMQ5AKLd10lA">
<body>A Continuation is a syntactic way to define continuations of different branches of an alternative CombinedFragment. Continuations are intuitively similar to labels representing intermediate points in a flow of control.</body>
</ownedComment>
<ownedRule xmi:id="_MNtUX4kxEeOMQ5AKLd10lA" name="first_or_last_interaction_fragment" constrainedElement="_MNtUXYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNtUYIkxEeOMQ5AKLd10lA" annotatedElement="_MNtUX4kxEeOMQ5AKLd10lA">
<body>Continuations always occur as the very first InteractionFragment or the very last InteractionFragment of the enclosing InteractionOperand.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNtUYYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body> enclosingOperand->notEmpty() and &#xD;
let peerFragments : OrderedSet(InteractionFragment) = enclosingOperand.fragment in &#xD;
( peerFragments->notEmpty() and &#xD;
((peerFragments->first() = self) or (peerFragments->last() = self)))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNtUYokxEeOMQ5AKLd10lA" name="same_name" constrainedElement="_MNtUXYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNtUY4kxEeOMQ5AKLd10lA" annotatedElement="_MNtUYokxEeOMQ5AKLd10lA">
<body>Across all Interaction instances having the same context value, every Lifeline instance covered by a Continuation (self) must be common with one covered Lifeline instance of all other Continuation instances with the same name as self, and every Lifeline instance covered by a Continuation instance with the same name as self must be common with one covered Lifeline instance of self. Lifeline instances are common if they have the same selector and represents associationEnd values.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNtUZIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>enclosingOperand.combinedFragment->notEmpty() and&#xD;
let parentInteraction : Set(Interaction) = &#xD;
enclosingOperand.combinedFragment->closure(enclosingOperand.combinedFragment)->&#xD;
collect(enclosingInteraction).oclAsType(Interaction)->asSet()&#xD;
in &#xD;
(parentInteraction->size() = 1) &#xD;
and let peerInteractions : Set(Interaction) =&#xD;
(parentInteraction->union(parentInteraction->collect(_'context')->collect(behavior)->&#xD;
select(oclIsKindOf(Interaction)).oclAsType(Interaction)->asSet())->asSet()) in&#xD;
(peerInteractions->notEmpty()) and &#xD;
let combinedFragments1 : Set(CombinedFragment) = peerInteractions.fragment->&#xD;
select(oclIsKindOf(CombinedFragment)).oclAsType(CombinedFragment)->asSet() in&#xD;
combinedFragments1->notEmpty() and combinedFragments1->closure(operand.fragment->&#xD;
select(oclIsKindOf(CombinedFragment)).oclAsType(CombinedFragment))->asSet().operand.fragment->&#xD;
select(oclIsKindOf(Continuation)).oclAsType(Continuation)->asSet()->&#xD;
forAll(c : Continuation | (c.name = self.name) implies &#xD;
(c.covered->asSet()->forAll(cl : Lifeline | -- cl must be common to one lifeline covered by self&#xD;
self.covered->asSet()->&#xD;
select(represents = cl.represents and selector = cl.selector)->asSet()->size()=1))&#xD;
and&#xD;
(self.covered->asSet()->forAll(cl : Lifeline | -- cl must be common to one lifeline covered by c&#xD;
c.covered->asSet()->&#xD;
select(represents = cl.represents and selector = cl.selector)->asSet()->size()=1))&#xD;
)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNtUZYkxEeOMQ5AKLd10lA" name="global" constrainedElement="_MNtUXYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNtUZokxEeOMQ5AKLd10lA" annotatedElement="_MNtUZYkxEeOMQ5AKLd10lA">
<body>Continuations are always global in the enclosing InteractionFragment e.g., it always covers all Lifelines covered by the enclosing InteractionOperator.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNtUZ4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>enclosingOperand->notEmpty() and&#xD;
let operandLifelines : Set(Lifeline) = enclosingOperand.covered in &#xD;
(operandLifelines->notEmpty() and &#xD;
operandLifelines->forAll(ol :Lifeline |self.covered->includes(ol)))</body>
</specification>
</ownedRule>
<generalization xmi:id="_MNtUaIkxEeOMQ5AKLd10lA" general="_MNw-wIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MNtUaYkxEeOMQ5AKLd10lA" name="setting">
<ownedComment xmi:id="_MNtUaokxEeOMQ5AKLd10lA" annotatedElement="_MNtUaYkxEeOMQ5AKLd10lA">
<body>True: when the Continuation is at the end of the enclosing InteractionFragment and False when it is in the beginning.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MNtUa4kxEeOMQ5AKLd10lA" value="true"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MNtUbIkxEeOMQ5AKLd10lA" name="DestructionOccurrenceSpecification">
<ownedComment xmi:id="_MNtUbYkxEeOMQ5AKLd10lA" annotatedElement="_MNtUbIkxEeOMQ5AKLd10lA">
<body>A DestructionOccurenceSpecification models the destruction of an object.</body>
</ownedComment>
<ownedRule xmi:id="_MNtUbokxEeOMQ5AKLd10lA" name="no_occurrence_specifications_below" constrainedElement="_MNtUbIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNtUb4kxEeOMQ5AKLd10lA" annotatedElement="_MNtUbokxEeOMQ5AKLd10lA">
<body>No other OccurrenceSpecifications on a given Lifeline in an InteractionOperand may appear below a DestructionOccurrenceSpecification.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNtUcIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>let o : InteractionOperand = enclosingOperand in o->notEmpty() and &#xD;
let peerEvents : OrderedSet(OccurrenceSpecification) = covered.events->select(enclosingOperand = o)&#xD;
in peerEvents->last() = self</body>
</specification>
</ownedRule>
<generalization xmi:id="_MNtUcYkxEeOMQ5AKLd10lA" general="_MN13MIkxEeOMQ5AKLd10lA"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MNt7YIkxEeOMQ5AKLd10lA" name="ExecutionOccurrenceSpecification">
<ownedComment xmi:id="_MNt7YYkxEeOMQ5AKLd10lA" annotatedElement="_MNt7YIkxEeOMQ5AKLd10lA">
<body>An ExecutionOccurrenceSpecification represents moments in time at which Actions or Behaviors start or finish.</body>
</ownedComment>
<generalization xmi:id="_MNt7YokxEeOMQ5AKLd10lA" general="_4kmhAFU1EeKpypMay8ANnw"/>
<ownedAttribute xmi:id="_MNt7Y4kxEeOMQ5AKLd10lA" name="execution" type="_MNt7ZYkxEeOMQ5AKLd10lA" association="_MN9zBYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNt7ZIkxEeOMQ5AKLd10lA" annotatedElement="_MNt7Y4kxEeOMQ5AKLd10lA">
<body>References the execution specification describing the execution that is started or finished at this execution event.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MNt7ZYkxEeOMQ5AKLd10lA" name="ExecutionSpecification" isAbstract="true">
<ownedComment xmi:id="_MNt7ZokxEeOMQ5AKLd10lA" annotatedElement="_MNt7ZYkxEeOMQ5AKLd10lA">
<body>An ExecutionSpecification is a specification of the execution of a unit of Behavior or Action within the Lifeline. The duration of an ExecutionSpecification is represented by two OccurrenceSpecifications, the start OccurrenceSpecification and the finish OccurrenceSpecification.</body>
</ownedComment>
<ownedRule xmi:id="_MNt7Z4kxEeOMQ5AKLd10lA" name="same_lifeline" constrainedElement="_MNt7ZYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNt7aIkxEeOMQ5AKLd10lA" annotatedElement="_MNt7Z4kxEeOMQ5AKLd10lA">
<body>The startEvent and the finishEvent must be on the same Lifeline.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNt7aYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>start.covered = finish.covered</body>
</specification>
</ownedRule>
<generalization xmi:id="_MNt7aokxEeOMQ5AKLd10lA" general="_MNw-wIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MNt7a4kxEeOMQ5AKLd10lA" name="finish" type="_4kmhAFU1EeKpypMay8ANnw" association="_MN9L94kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNt7bIkxEeOMQ5AKLd10lA" annotatedElement="_MNt7a4kxEeOMQ5AKLd10lA">
<body>References the OccurrenceSpecification that designates the finish of the Action or Behavior.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MNt7bYkxEeOMQ5AKLd10lA" name="start" type="_4kmhAFU1EeKpypMay8ANnw" association="_MN9zAIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNt7bokxEeOMQ5AKLd10lA" annotatedElement="_MNt7bYkxEeOMQ5AKLd10lA">
<body>References the OccurrenceSpecification that designates the start of the Action or Behavior.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MNvJgIkxEeOMQ5AKLd10lA" name="Gate">
<ownedComment xmi:id="_MNvJgYkxEeOMQ5AKLd10lA" annotatedElement="_MNvJgIkxEeOMQ5AKLd10lA">
<body>A Gate is a MessageEnd which serves as a connection point for relating a Message which has a MessageEnd (sendEvent / receiveEvent) outside an InteractionFragment with another Message which has a MessageEnd (receiveEvent / sendEvent) inside that InteractionFragment.</body>
</ownedComment>
<ownedRule xmi:id="_MNvJgokxEeOMQ5AKLd10lA" name="actual_gate_matched" constrainedElement="_MNvJgIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNvJg4kxEeOMQ5AKLd10lA" annotatedElement="_MNvJgokxEeOMQ5AKLd10lA">
<body>If this Gate is an actualGate, it must have exactly one matching formalGate within the referred Interaction.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNvJhIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>interactionUse->notEmpty() implies interactionUse.refersTo.formalGate->select(matches(self))->size()=1</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNvJhYkxEeOMQ5AKLd10lA" name="inside_cf_matched" constrainedElement="_MNvJgIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNvJhokxEeOMQ5AKLd10lA" annotatedElement="_MNvJhYkxEeOMQ5AKLd10lA">
<body>If this Gate is inside a CombinedFragment, it must have exactly one matching Gate which is outside of that CombinedFragment.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNvJh4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>isInsideCF() implies combinedFragment.cfragmentGate->select(isOutsideCF() and matches(self))->size()=1</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNvJiIkxEeOMQ5AKLd10lA" name="outside_cf_matched" constrainedElement="_MNvJgIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNvJiYkxEeOMQ5AKLd10lA" annotatedElement="_MNvJiIkxEeOMQ5AKLd10lA">
<body>If this Gate is outside an 'alt' CombinedFragment, for every InteractionOperator inside that CombinedFragment there must be exactly one matching Gate inside the CombindedFragment with its opposing end enclosed by that InteractionOperator. If this Gate is outside CombinedFragment with operator other than 'alt', there must be exactly one matching Gate inside that CombinedFragment.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNvJiokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>isOutsideCF() implies&#xD;
if self.combinedFragment.interactionOperator->asOrderedSet()->first() = InteractionOperatorKind::alt&#xD;
then self.combinedFragment.operand->forAll(op : InteractionOperand |&#xD;
self.combinedFragment.cfragmentGate->select(isInsideCF() and &#xD;
oppositeEnd().enclosingFragment()->includes(self.combinedFragment) and matches(self))->size()=1)&#xD;
else self.combinedFragment.cfragmentGate->select(isInsideCF() and matches(self))->size()=1&#xD;
endif</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNvJi4kxEeOMQ5AKLd10lA" name="formal_gate_distinguishable" constrainedElement="_MNvJgIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNvJjIkxEeOMQ5AKLd10lA" annotatedElement="_MNvJi4kxEeOMQ5AKLd10lA">
<body>isFormal() implies that no other formalGate of the parent Interaction returns the same getName() as returned for self</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNvJjYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>isFormal() implies interaction.formalGate->select(getName() = self.getName())->size()=1</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNvJjokxEeOMQ5AKLd10lA" name="actual_gate_distinguishable" constrainedElement="_MNvJgIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNvJj4kxEeOMQ5AKLd10lA" annotatedElement="_MNvJjokxEeOMQ5AKLd10lA">
<body>isActual() implies that no other actualGate of the parent InteractionUse returns the same getName() as returned for self</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNvJkIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>isActual() implies interactionUse.actualGate->select(getName() = self.getName())->size()=1</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNvJkYkxEeOMQ5AKLd10lA" name="outside_cf_gate_distinguishable" constrainedElement="_MNvJgIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNvJkokxEeOMQ5AKLd10lA" annotatedElement="_MNvJkYkxEeOMQ5AKLd10lA">
<body>isOutsideCF() implies that no other outside cfragmentGate of the parent CombinedFragment returns the same getName() as returned for self</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNvJk4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>isOutsideCF() implies combinedFragment.cfragmentGate->select(getName() = self.getName())->size()=1</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNvJlIkxEeOMQ5AKLd10lA" name="inside_cf_gate_distinguishable" constrainedElement="_MNvJgIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNvJlYkxEeOMQ5AKLd10lA" annotatedElement="_MNvJlIkxEeOMQ5AKLd10lA">
<body>isInsideCF() implies that no other inside cfragmentGate attached to a message with its other end in the same InteractionOperator as self, returns the same getName() as returned for self</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNvJlokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>isInsideCF() implies&#xD;
let selfOperand : InteractionOperand = self.getOperand() in&#xD;
combinedFragment.cfragmentGate->select(isInsideCF() and getName() = self.getName())->select(getOperand() = selfOperand)->size()=1</body>
</specification>
</ownedRule>
<generalization xmi:id="_MNvJl4kxEeOMQ5AKLd10lA" general="_MN1QIIkxEeOMQ5AKLd10lA"/>
<ownedOperation xmi:id="_MNvJmIkxEeOMQ5AKLd10lA" name="isOutsideCF" bodyCondition="_MNvJmokxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MNvJmYkxEeOMQ5AKLd10lA" annotatedElement="_MNvJmIkxEeOMQ5AKLd10lA">
<body>This query returns true if this Gate is attached to the boundary of a CombinedFragment, and its other end (if present) is outside of the same CombinedFragment.</body>
</ownedComment>
<ownedRule xmi:id="_MNvJmokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MNvJmIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNvJm4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (self.oppositeEnd()-> notEmpty() and combinedFragment->notEmpty() implies&#xD;
let oppEnd : MessageEnd = self.oppositeEnd()->asOrderedSet()->first() in&#xD;
if oppEnd.oclIsKindOf(MessageOccurrenceSpecification) &#xD;
then let oppMOS : MessageOccurrenceSpecification = oppEnd.oclAsType(MessageOccurrenceSpecification)&#xD;
in self.combinedFragment.enclosingInteraction.oclAsType(InteractionFragment)->asSet()->&#xD;
union(self.combinedFragment.enclosingOperand.oclAsType(InteractionFragment)->asSet()) =&#xD;
oppMOS.enclosingInteraction.oclAsType(InteractionFragment)->asSet()->&#xD;
union(oppMOS.enclosingOperand.oclAsType(InteractionFragment)->asSet())&#xD;
else let oppGate : Gate = oppEnd.oclAsType(Gate) &#xD;
in self.combinedFragment.enclosingInteraction.oclAsType(InteractionFragment)->asSet()->&#xD;
union(self.combinedFragment.enclosingOperand.oclAsType(InteractionFragment)->asSet()) =&#xD;
oppGate.combinedFragment.enclosingInteraction.oclAsType(InteractionFragment)->asSet()->&#xD;
union(oppGate.combinedFragment.enclosingOperand.oclAsType(InteractionFragment)->asSet())&#xD;
endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MNvJnIkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MNvJnYkxEeOMQ5AKLd10lA" name="isInsideCF" bodyCondition="_MNvJn4kxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MNvJnokxEeOMQ5AKLd10lA" annotatedElement="_MNvJnYkxEeOMQ5AKLd10lA">
<body>This query returns true if this Gate is attached to the boundary of a CombinedFragment, and its other end (if present) is inside of an InteractionOperator of the same CombinedFragment.</body>
</ownedComment>
<ownedRule xmi:id="_MNvJn4kxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MNvJnYkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNvJoIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (self.oppositeEnd()-> notEmpty() and combinedFragment->notEmpty() implies&#xD;
let oppEnd : MessageEnd = self.oppositeEnd()->asOrderedSet()->first() in&#xD;
if oppEnd.oclIsKindOf(MessageOccurrenceSpecification)&#xD;
then let oppMOS : MessageOccurrenceSpecification&#xD;
= oppEnd.oclAsType(MessageOccurrenceSpecification)&#xD;
in combinedFragment = oppMOS.enclosingOperand.combinedFragment&#xD;
else let oppGate : Gate = oppEnd.oclAsType(Gate)&#xD;
in combinedFragment = oppGate.combinedFragment.enclosingOperand.combinedFragment&#xD;
endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MNvJoYkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MNvJookxEeOMQ5AKLd10lA" name="isActual" bodyCondition="_MNvJpIkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MNvJo4kxEeOMQ5AKLd10lA" annotatedElement="_MNvJookxEeOMQ5AKLd10lA">
<body>This query returns true value if this Gate is an actualGate of an InteractionUse.</body>
</ownedComment>
<ownedRule xmi:id="_MNvJpIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MNvJookxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNvJpYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (interactionUse->notEmpty())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MNvJpokxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MNvJp4kxEeOMQ5AKLd10lA" name="isFormal" bodyCondition="_MNvJqYkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MNvJqIkxEeOMQ5AKLd10lA" annotatedElement="_MNvJp4kxEeOMQ5AKLd10lA">
<body>This query returns true if this Gate is a formalGate of an Interaction.</body>
</ownedComment>
<ownedRule xmi:id="_MNvJqYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MNvJp4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNvJqokxEeOMQ5AKLd10lA" annotatedElement="_MNvJqYkxEeOMQ5AKLd10lA">
<body>&lt;p>interaction-&amp;gt;notEmpty()&lt;/p></body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNvJq4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (interaction->notEmpty())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MNvJrIkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MNvJrYkxEeOMQ5AKLd10lA" name="getName" bodyCondition="_MNvJr4kxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MNvJrokxEeOMQ5AKLd10lA" annotatedElement="_MNvJrYkxEeOMQ5AKLd10lA">
<body>This query returns the name of the gate, either the explicit name (.name) or the constructed name ('out_&quot; or 'in_' concatenated in front of .message.name) if the explicit name is not present.</body>
</ownedComment>
<ownedRule xmi:id="_MNvJr4kxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MNvJrYkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNvJsIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if name->notEmpty() then name->asOrderedSet()->first()&#xD;
else if isActual() or isOutsideCF() &#xD;
then if isSend() &#xD;
then 'out_'.concat(self.message.name->asOrderedSet()->first())&#xD;
else 'in_'.concat(self.message.name->asOrderedSet()->first())&#xD;
endif&#xD;
else if isSend()&#xD;
then 'in_'.concat(self.message.name->asOrderedSet()->first())&#xD;
else 'out_'.concat(self.message.name->asOrderedSet()->first())&#xD;
endif&#xD;
endif&#xD;
endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MNvJsYkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MNvJsokxEeOMQ5AKLd10lA" name="matches" bodyCondition="_MNvJtIkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MNvJs4kxEeOMQ5AKLd10lA" annotatedElement="_MNvJsokxEeOMQ5AKLd10lA">
<body>This query returns true if the name of this Gate matches the name of the in parameter Gate, and the messages for the two Gates correspond. The Message for one Gate (say A) corresponds to the Message for another Gate (say B) if (A and B have the same name value) and (if A is a sendEvent then B is a receiveEvent) and (if A is a receiveEvent then B is a sendEvent) and (A and B have the same messageSort value) and (A and B have the same signature value).</body>
</ownedComment>
<ownedRule xmi:id="_MNvJtIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MNvJsokxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNvJtYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (self.getName() = gateToMatch.getName() and &#xD;
self.message.messageSort = gateToMatch.message.messageSort and&#xD;
self.message.name = gateToMatch.message.name and&#xD;
self.message.sendEvent->includes(self) implies gateToMatch.message.receiveEvent->includes(gateToMatch) and&#xD;
self.message.receiveEvent->includes(self) implies gateToMatch.message.sendEvent->includes(gateToMatch) and&#xD;
self.message.signature = gateToMatch.message.signature)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MNvJtokxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_MNvJt4kxEeOMQ5AKLd10lA" name="gateToMatch" type="_MNvJgIkxEeOMQ5AKLd10lA"/>
</ownedOperation>
<ownedOperation xmi:id="_MNvJuIkxEeOMQ5AKLd10lA" name="isDistinguishableFrom" bodyCondition="_MNvJuokxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MNM-B4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNvJuYkxEeOMQ5AKLd10lA" annotatedElement="_MNvJuIkxEeOMQ5AKLd10lA">
<body>The query isDistinguishableFrom() specifies that two Gates may coexist in the same Namespace, without an explicit name property. The association end formalGate subsets ownedElement, and since the Gate name attribute&#xD;
is optional, it is allowed to have two formal gates without an explicit name, but having derived names which are distinct.</body>
</ownedComment>
<ownedRule xmi:id="_MNvJuokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MNvJuIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNvJu4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (true)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MNvJvIkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_MNvJvYkxEeOMQ5AKLd10lA" name="n" type="_csVgUGvtEdqG6fBIPwe-mw"/>
<ownedParameter xmi:id="_MNvJvokxEeOMQ5AKLd10lA" name="ns" type="_ZiwkoGwLEdq7X4sGURiZYA"/>
</ownedOperation>
<ownedOperation xmi:id="_MNvJv4kxEeOMQ5AKLd10lA" name="getOperand" bodyCondition="_MNvJwYkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MNvJwIkxEeOMQ5AKLd10lA" annotatedElement="_MNvJv4kxEeOMQ5AKLd10lA">
<body>If the Gate is an inside Combined Fragment Gate, this operation returns the InteractionOperand that the opposite end of this Gate is included within.</body>
</ownedComment>
<ownedRule xmi:id="_MNvJwYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MNvJv4kxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNvJwokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if isInsideCF() then&#xD;
let oppEnd : MessageEnd = self.oppositeEnd()->asOrderedSet()->first() in&#xD;
if oppEnd.oclIsKindOf(MessageOccurrenceSpecification)&#xD;
then let oppMOS : MessageOccurrenceSpecification = oppEnd.oclAsType(MessageOccurrenceSpecification)&#xD;
in oppMOS.enclosingOperand->asOrderedSet()->first()&#xD;
else let oppGate : Gate = oppEnd.oclAsType(Gate)&#xD;
in oppGate.combinedFragment.enclosingOperand->asOrderedSet()->first()&#xD;
endif&#xD;
else null&#xD;
endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MNvJw4kxEeOMQ5AKLd10lA" name="result" type="_MNxlwIkxEeOMQ5AKLd10lA" direction="return"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MNvwkIkxEeOMQ5AKLd10lA" name="GeneralOrdering">
<ownedComment xmi:id="_MNvwkYkxEeOMQ5AKLd10lA" annotatedElement="_MNvwkIkxEeOMQ5AKLd10lA">
<body>A GeneralOrdering represents a binary relation between two OccurrenceSpecifications, to describe that one OccurrenceSpecification must occur before the other in a valid trace. This mechanism provides the ability to define partial orders of OccurrenceSpecifications that may otherwise not have a specified order.</body>
</ownedComment>
<ownedRule xmi:id="_MNvwkokxEeOMQ5AKLd10lA" name="irreflexive_transitive_closure" constrainedElement="_MNvwkIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNvwk4kxEeOMQ5AKLd10lA" annotatedElement="_MNvwkokxEeOMQ5AKLd10lA">
<body>An occurrence specification must not be ordered relative to itself through a series of general orderings. (In other words, the transitive closure of the general orderings is irreflexive.)</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNvwlIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>after->closure(toAfter.after)->excludes(before)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MNvwlYkxEeOMQ5AKLd10lA" general="_csVgUGvtEdqG6fBIPwe-mw"/>
<ownedAttribute xmi:id="_MNvwlokxEeOMQ5AKLd10lA" name="after" type="_4kmhAFU1EeKpypMay8ANnw" association="_MN5hm4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNvwl4kxEeOMQ5AKLd10lA" annotatedElement="_MNvwlokxEeOMQ5AKLd10lA">
<body>The OccurrenceSpecification referenced comes after the OccurrenceSpecification referenced by before.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MNvwmIkxEeOMQ5AKLd10lA" name="before" type="_4kmhAFU1EeKpypMay8ANnw" association="_MN9L9okxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNvwmYkxEeOMQ5AKLd10lA" annotatedElement="_MNvwmIkxEeOMQ5AKLd10lA">
<body>The OccurrenceSpecification referenced comes before the OccurrenceSpecification referenced by after.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MNwXoIkxEeOMQ5AKLd10lA" name="Interaction">
<ownedComment xmi:id="_MNwXoYkxEeOMQ5AKLd10lA" annotatedElement="_MNwXoIkxEeOMQ5AKLd10lA">
<body>An Interaction is a unit of Behavior that focuses on the observable exchange of information between connectable elements.</body>
</ownedComment>
<ownedRule xmi:id="_MNwXookxEeOMQ5AKLd10lA" name="not_contained" constrainedElement="_MNwXoIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNwXo4kxEeOMQ5AKLd10lA" annotatedElement="_MNwXookxEeOMQ5AKLd10lA">
<body>An Interaction instance must not be contained within another Interaction instance.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNwXpIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>enclosingInteraction->isEmpty()</body>
</specification>
</ownedRule>
<generalization xmi:id="_MNwXpYkxEeOMQ5AKLd10lA" general="_MNw-wIkxEeOMQ5AKLd10lA"/>
<generalization xmi:id="_MNwXpokxEeOMQ5AKLd10lA" general="_TUPtYGveEdq4DLWZOhbdEA"/>
<ownedAttribute xmi:id="_MNwXp4kxEeOMQ5AKLd10lA" name="action" type="_6WKakLLQEeCsYvaJqFFivQ" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MN8k6IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNwXqIkxEeOMQ5AKLd10lA" annotatedElement="_MNwXp4kxEeOMQ5AKLd10lA">
<body>Actions owned by the Interaction.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNwXqYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNwXqokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNwXq4kxEeOMQ5AKLd10lA" name="formalGate" type="_MNvJgIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MNQBWIkxEeOMQ5AKLd10lA" association="_MN9L8IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNwXrIkxEeOMQ5AKLd10lA" annotatedElement="_MNwXq4kxEeOMQ5AKLd10lA">
<body>Specifies the gates that form the message interface between this Interaction and any InteractionUses which reference it.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNwXrYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNwXrokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNwXr4kxEeOMQ5AKLd10lA" name="fragment" type="_MNw-wIkxEeOMQ5AKLd10lA" isOrdered="true" aggregation="composite" subsettedProperty="_MNQBWIkxEeOMQ5AKLd10lA" association="_MN9L9IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNwXsIkxEeOMQ5AKLd10lA" annotatedElement="_MNwXr4kxEeOMQ5AKLd10lA">
<body>The ordered set of fragments in the Interaction.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNwXsYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNwXsokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNwXs4kxEeOMQ5AKLd10lA" name="lifeline" type="_MwekcFU2EeKpypMay8ANnw" aggregation="composite" subsettedProperty="_MNQBWIkxEeOMQ5AKLd10lA" association="_MN9L84kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNwXtIkxEeOMQ5AKLd10lA" annotatedElement="_MNwXs4kxEeOMQ5AKLd10lA">
<body>Specifies the participants in this Interaction.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNwXtYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNwXtokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNwXt4kxEeOMQ5AKLd10lA" name="message" type="_gfgNwGveEdq4DLWZOhbdEA" aggregation="composite" subsettedProperty="_MNQBWIkxEeOMQ5AKLd10lA" association="_MN9L9YkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNwXuIkxEeOMQ5AKLd10lA" annotatedElement="_MNwXt4kxEeOMQ5AKLd10lA">
<body>The Messages contained in this Interaction.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNwXuYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNwXuokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MNwXu4kxEeOMQ5AKLd10lA" name="InteractionConstraint">
<ownedComment xmi:id="_MNwXvIkxEeOMQ5AKLd10lA" annotatedElement="_MNwXu4kxEeOMQ5AKLd10lA">
<body>An InteractionConstraint is a Boolean expression that guards an operand in a CombinedFragment.</body>
</ownedComment>
<ownedRule xmi:id="_MNwXvYkxEeOMQ5AKLd10lA" name="minint_maxint" constrainedElement="_MNwXu4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNwXvokxEeOMQ5AKLd10lA" annotatedElement="_MNwXvYkxEeOMQ5AKLd10lA">
<body>Minint/maxint can only be present if the InteractionConstraint is associated with the operand of a loop CombinedFragment.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNwXv4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>maxint->notEmpty() or minint->notEmpty() implies&#xD;
interactionOperand.combinedFragment.interactionOperator =&#xD;
InteractionOperatorKind::loop</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNwXwIkxEeOMQ5AKLd10lA" name="minint_non_negative" constrainedElement="_MNwXu4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNwXwYkxEeOMQ5AKLd10lA" annotatedElement="_MNwXwIkxEeOMQ5AKLd10lA">
<body>If minint is specified, then the expression must evaluate to a non-negative integer.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNwXwokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>minint->notEmpty() implies &#xD;
minint->asSequence()->first().integerValue() >= 0</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNwXw4kxEeOMQ5AKLd10lA" name="maxint_positive" constrainedElement="_MNwXu4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNwXxIkxEeOMQ5AKLd10lA" annotatedElement="_MNwXw4kxEeOMQ5AKLd10lA">
<body>If maxint is specified, then the expression must evaluate to a positive integer.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNwXxYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>maxint->notEmpty() implies &#xD;
maxint->asSequence()->first().integerValue() > 0</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNw-sIkxEeOMQ5AKLd10lA" name="dynamic_variables" constrainedElement="_MNwXu4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNw-sYkxEeOMQ5AKLd10lA" annotatedElement="_MNw-sIkxEeOMQ5AKLd10lA">
<body>The dynamic variables that take part in the constraint must be owned by the ConnectableElement corresponding to the covered Lifeline.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNw-sokxEeOMQ5AKLd10lA" language=""/>
</ownedRule>
<ownedRule xmi:id="_MNw-s4kxEeOMQ5AKLd10lA" name="global_data" constrainedElement="_MNwXu4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNw-tIkxEeOMQ5AKLd10lA" annotatedElement="_MNw-s4kxEeOMQ5AKLd10lA">
<body>The constraint may contain references to global data or write-once data.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNw-tYkxEeOMQ5AKLd10lA" language=""/>
</ownedRule>
<ownedRule xmi:id="_MNw-tokxEeOMQ5AKLd10lA" name="maxint_greater_equal_minint" constrainedElement="_MNwXu4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNw-t4kxEeOMQ5AKLd10lA" annotatedElement="_MNw-tokxEeOMQ5AKLd10lA">
<body>If maxint is specified, then minint must be specified and the evaluation of maxint must be >= the evaluation of minint.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNw-uIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>maxint->notEmpty() implies (minint->notEmpty() and &#xD;
maxint->asSequence()->first().integerValue() >=&#xD;
minint->asSequence()->first().integerValue() )</body>
</specification>
</ownedRule>
<generalization xmi:id="_MNw-uYkxEeOMQ5AKLd10lA" general="_MNAJsIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MNw-uokxEeOMQ5AKLd10lA" name="maxint" type="_MPO-UIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MN8k5YkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNw-u4kxEeOMQ5AKLd10lA" annotatedElement="_MNw-uokxEeOMQ5AKLd10lA">
<body>The maximum number of iterations of a loop</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNw-vIkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNw-vYkxEeOMQ5AKLd10lA" name="minint" type="_MPO-UIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MN8k4okxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNw-vokxEeOMQ5AKLd10lA" annotatedElement="_MNw-vYkxEeOMQ5AKLd10lA">
<body>The minimum number of iterations of a loop</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNw-v4kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MNw-wIkxEeOMQ5AKLd10lA" name="InteractionFragment" isAbstract="true">
<ownedComment xmi:id="_MNw-wYkxEeOMQ5AKLd10lA" annotatedElement="_MNw-wIkxEeOMQ5AKLd10lA">
<body>InteractionFragment is an abstract notion of the most general interaction unit. An InteractionFragment is a piece of an Interaction. Each InteractionFragment is conceptually like an Interaction by itself.</body>
</ownedComment>
<generalization xmi:id="_MNw-wokxEeOMQ5AKLd10lA" general="_csVgUGvtEdqG6fBIPwe-mw"/>
<ownedAttribute xmi:id="_MNw-w4kxEeOMQ5AKLd10lA" name="covered" type="_MwekcFU2EeKpypMay8ANnw" association="_MN8k4IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNw-xIkxEeOMQ5AKLd10lA" annotatedElement="_MNw-w4kxEeOMQ5AKLd10lA">
<body>References the Lifelines that the InteractionFragment involves.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNw-xYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNw-xokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNw-x4kxEeOMQ5AKLd10lA" name="enclosingInteraction" type="_MNwXoIkxEeOMQ5AKLd10lA" subsettedProperty="_1vzv0LbIEeCRxrN1JUGuxA" association="_MN9L9IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNw-yIkxEeOMQ5AKLd10lA" annotatedElement="_MNw-x4kxEeOMQ5AKLd10lA">
<body>The Interaction enclosing this InteractionFragment.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNw-yYkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNw-yokxEeOMQ5AKLd10lA" name="enclosingOperand" type="_MNxlwIkxEeOMQ5AKLd10lA" subsettedProperty="_1vzv0LbIEeCRxrN1JUGuxA" association="_MN791okxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNw-y4kxEeOMQ5AKLd10lA" annotatedElement="_MNw-yokxEeOMQ5AKLd10lA">
<body>The operand enclosing this InteractionFragment (they may nest recursively).</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNw-zIkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNw-zYkxEeOMQ5AKLd10lA" name="generalOrdering" type="_MNvwkIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MN792YkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNw-zokxEeOMQ5AKLd10lA" annotatedElement="_MNw-zYkxEeOMQ5AKLd10lA">
<body>The general ordering relationships contained in this fragment.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNw-z4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNw-0IkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MNxlwIkxEeOMQ5AKLd10lA" name="InteractionOperand">
<ownedComment xmi:id="_MNxlwYkxEeOMQ5AKLd10lA" annotatedElement="_MNxlwIkxEeOMQ5AKLd10lA">
<body>An InteractionOperand is contained in a CombinedFragment. An InteractionOperand represents one operand of the expression given by the enclosing CombinedFragment.</body>
</ownedComment>
<ownedRule xmi:id="_MNxlwokxEeOMQ5AKLd10lA" name="guard_contain_references" constrainedElement="_MNxlwIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNxlw4kxEeOMQ5AKLd10lA" annotatedElement="_MNxlwokxEeOMQ5AKLd10lA">
<body>The guard must contain only references to values local to the Lifeline on which it resides, or values global to the whole Interaction.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNxlxIkxEeOMQ5AKLd10lA" language=""/>
</ownedRule>
<ownedRule xmi:id="_MNxlxYkxEeOMQ5AKLd10lA" name="guard_directly_prior" constrainedElement="_MNxlwIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNxlxokxEeOMQ5AKLd10lA" annotatedElement="_MNxlxYkxEeOMQ5AKLd10lA">
<body>The guard must be placed directly prior to (above) the OccurrenceSpecification that will become the first OccurrenceSpecification within this InteractionOperand.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNxlx4kxEeOMQ5AKLd10lA" language=""/>
</ownedRule>
<generalization xmi:id="_MNxlyIkxEeOMQ5AKLd10lA" general="_MNw-wIkxEeOMQ5AKLd10lA"/>
<generalization xmi:id="_MNxlyYkxEeOMQ5AKLd10lA" general="_ZiwkoGwLEdq7X4sGURiZYA"/>
<ownedAttribute xmi:id="_MNxlyokxEeOMQ5AKLd10lA" name="fragment" type="_MNw-wIkxEeOMQ5AKLd10lA" isOrdered="true" aggregation="composite" subsettedProperty="_MNQBWIkxEeOMQ5AKLd10lA" association="_MN791okxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNxly4kxEeOMQ5AKLd10lA" annotatedElement="_MNxlyokxEeOMQ5AKLd10lA">
<body>The fragments of the operand.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNxlzIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNxlzYkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNxlzokxEeOMQ5AKLd10lA" name="guard" type="_MNwXu4kxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MN7914kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNxlz4kxEeOMQ5AKLd10lA" annotatedElement="_MNxlzokxEeOMQ5AKLd10lA">
<body>Constraint of the operand.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNxl0IkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MNyM0IkxEeOMQ5AKLd10lA" name="InteractionUse">
<ownedComment xmi:id="_MNyM0YkxEeOMQ5AKLd10lA" annotatedElement="_MNyM0IkxEeOMQ5AKLd10lA">
<body>An InteractionUse refers to an Interaction. The InteractionUse is a shorthand for copying the contents of the referenced Interaction where the InteractionUse is. To be accurate the copying must take into account substituting parameters with arguments and connect the formal Gates with the actual ones.</body>
</ownedComment>
<ownedRule xmi:id="_MNyM0okxEeOMQ5AKLd10lA" name="gates_match" constrainedElement="_MNyM0IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNyM04kxEeOMQ5AKLd10lA" annotatedElement="_MNyM0okxEeOMQ5AKLd10lA">
<body>Actual Gates of the InteractionUse must match Formal Gates of the referred Interaction. Gates match when their names are equal and their messages correspond.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNyM1IkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>actualGate->notEmpty() implies &#xD;
refersTo.formalGate->forAll( fg : Gate | self.actualGate->select(matches(fg))->size()=1) and&#xD;
self.actualGate->forAll(ag : Gate | refersTo.formalGate->select(matches(ag))->size()=1)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNyM1YkxEeOMQ5AKLd10lA" name="arguments_are_constants" constrainedElement="_MNyM0IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNyM1okxEeOMQ5AKLd10lA" annotatedElement="_MNyM1YkxEeOMQ5AKLd10lA">
<body>The arguments must only be constants, parameters of the enclosing Interaction or attributes of the classifier owning the enclosing Interaction.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNyM14kxEeOMQ5AKLd10lA" language=""/>
</ownedRule>
<ownedRule xmi:id="_MNyM2IkxEeOMQ5AKLd10lA" name="returnValueRecipient_coverage" constrainedElement="_MNyM0IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNyM2YkxEeOMQ5AKLd10lA" annotatedElement="_MNyM2IkxEeOMQ5AKLd10lA">
<body>The returnValueRecipient must be a Property of a ConnectableElement that is represented by a Lifeline covered by this InteractionUse.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNyM2okxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>returnValueRecipient->asSet()->notEmpty() implies&#xD;
let covCE : Set(ConnectableElement) = covered.represents->asSet() in &#xD;
covCE->notEmpty() and let classes:Set(Classifier) = covCE.type.oclIsKindOf(Classifier).oclAsType(Classifier)->asSet() in &#xD;
let allProps : Set(Property) = classes.attribute->union(classes.allParents().attribute)->asSet() in &#xD;
allProps->includes(returnValueRecipient)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNyM24kxEeOMQ5AKLd10lA" name="arguments_correspond_to_parameters" constrainedElement="_MNyM0IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNyM3IkxEeOMQ5AKLd10lA" annotatedElement="_MNyM24kxEeOMQ5AKLd10lA">
<body>The arguments of the InteractionUse must correspond to parameters of the referred Interaction.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNyM3YkxEeOMQ5AKLd10lA" language=""/>
</ownedRule>
<ownedRule xmi:id="_MNyM3okxEeOMQ5AKLd10lA" name="returnValue_type_recipient_correspondence" constrainedElement="_MNyM0IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNyM34kxEeOMQ5AKLd10lA" annotatedElement="_MNyM3okxEeOMQ5AKLd10lA">
<body>The type of the returnValue must correspond to the type of the returnValueRecipient.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNyM4IkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>returnValue.type->asSequence()->notEmpty() implies returnValue.type->asSequence()->first() = returnValueRecipient.type->asSequence()->first()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNyM4YkxEeOMQ5AKLd10lA" name="all_lifelines" constrainedElement="_MNyM0IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNyM4okxEeOMQ5AKLd10lA" annotatedElement="_MNyM4YkxEeOMQ5AKLd10lA">
<body>The InteractionUse must cover all Lifelines of the enclosing Interaction that are common with the lifelines covered by the referred Interaction. Lifelines are common if they have the same selector and represents associationEnd values.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNyM44kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>let parentInteraction : Set(Interaction) = enclosingInteraction->asSet()->&#xD;
union(enclosingOperand.combinedFragment->closure(enclosingOperand.combinedFragment)->&#xD;
collect(enclosingInteraction).oclAsType(Interaction)->asSet()) in&#xD;
parentInteraction->size()=1 and let refInteraction : Interaction = refersTo in&#xD;
parentInteraction.covered-> forAll(intLifeline : Lifeline | refInteraction.covered->&#xD;
forAll( refLifeline : Lifeline | refLifeline.represents = intLifeline.represents and &#xD;
(&#xD;
( refLifeline.selector.oclIsKindOf(LiteralString) implies&#xD;
intLifeline.selector.oclIsKindOf(LiteralString) and &#xD;
refLifeline.selector.oclAsType(LiteralString).value = intLifeline.selector.oclAsType(LiteralString).value ) and&#xD;
( refLifeline.selector.oclIsKindOf(LiteralInteger) implies&#xD;
intLifeline.selector.oclIsKindOf(LiteralInteger) and &#xD;
refLifeline.selector.oclAsType(LiteralInteger).value = intLifeline.selector.oclAsType(LiteralInteger).value )&#xD;
)&#xD;
implies self.covered->asSet()->includes(intLifeline)))</body>
</specification>
</ownedRule>
<generalization xmi:id="_MNyM5IkxEeOMQ5AKLd10lA" general="_MNw-wIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MNyM5YkxEeOMQ5AKLd10lA" name="actualGate" type="_MNvJgIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MN7904kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNyM5okxEeOMQ5AKLd10lA" annotatedElement="_MNyM5YkxEeOMQ5AKLd10lA">
<body>The actual gates of the InteractionUse.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNyM54kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNyM6IkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNyM6YkxEeOMQ5AKLd10lA" name="argument" type="_MPO-UIkxEeOMQ5AKLd10lA" isOrdered="true" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MN790IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNyM6okxEeOMQ5AKLd10lA" annotatedElement="_MNyM6YkxEeOMQ5AKLd10lA">
<body>The actual arguments of the Interaction.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNyM64kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNyM7IkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNyM7YkxEeOMQ5AKLd10lA" name="refersTo" type="_MNwXoIkxEeOMQ5AKLd10lA" association="_MN7WyYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNyM7okxEeOMQ5AKLd10lA" annotatedElement="_MNyM7YkxEeOMQ5AKLd10lA">
<body>Refers to the Interaction that defines its meaning.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MNyM74kxEeOMQ5AKLd10lA" name="returnValue" type="_MPO-UIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MN7WzYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNyM8IkxEeOMQ5AKLd10lA" annotatedElement="_MNyM74kxEeOMQ5AKLd10lA">
<body>The value of the executed Interaction.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNyM8YkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNyM8okxEeOMQ5AKLd10lA" name="returnValueRecipient" type="_Jp_1oGveEdq4DLWZOhbdEA" association="_MN7WxYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNyM84kxEeOMQ5AKLd10lA" annotatedElement="_MNyM8okxEeOMQ5AKLd10lA">
<body>The recipient of the return value.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNyM9IkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MwekcFU2EeKpypMay8ANnw" name="Lifeline">
<ownedComment xmi:id="_MNyM9YkxEeOMQ5AKLd10lA" annotatedElement="_MwekcFU2EeKpypMay8ANnw">
<body>A Lifeline represents an individual participant in the Interaction. While parts and structural features may have multiplicity greater than 1, Lifelines represent only one interacting entity.</body>
</ownedComment>
<ownedRule xmi:id="_MNyM9okxEeOMQ5AKLd10lA" name="selector_specified" constrainedElement="_MwekcFU2EeKpypMay8ANnw">
<ownedComment xmi:id="_MNyM94kxEeOMQ5AKLd10lA" annotatedElement="_MNyM9okxEeOMQ5AKLd10lA">
<body>The selector for a Lifeline must only be specified if the referenced Part is multivalued.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNyM-IkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body> self.selector->notEmpty() = (self.represents.oclIsKindOf(MultiplicityElement) and self.represents.oclAsType(MultiplicityElement).isMultivalued())</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNyM-YkxEeOMQ5AKLd10lA" name="interaction_uses_share_lifeline" constrainedElement="_MwekcFU2EeKpypMay8ANnw">
<ownedComment xmi:id="_MNyM-okxEeOMQ5AKLd10lA" annotatedElement="_MNyM-YkxEeOMQ5AKLd10lA">
<body>If a lifeline is in an Interaction referred to by an InteractionUse in an enclosing Interaction, and that lifeline is common with another lifeline in an Interaction referred to by another InteractonUse within that same enclosing Interaction, it must be common to a lifeline within that enclosing Interaction. By common Lifelines we mean Lifelines with the same selector and represents associations.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNyM-4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>let intUses : Set(InteractionUse) = interaction.interactionUse in &#xD;
intUses->forAll&#xD;
( iuse : InteractionUse | &#xD;
let usingInteraction : Set(Interaction) = iuse.enclosingInteraction->asSet()&#xD;
->union(&#xD;
iuse.enclosingOperand.combinedFragment->asSet()->closure(enclosingOperand.combinedFragment).enclosingInteraction->asSet()&#xD;
) &#xD;
in&#xD;
let peerUses : Set(InteractionUse) = usingInteraction.fragment->select(oclIsKindOf(InteractionUse)).oclAsType(InteractionUse)->asSet()&#xD;
->union(&#xD;
usingInteraction.fragment->select(oclIsKindOf(CombinedFragment)).oclAsType(CombinedFragment)->asSet()&#xD;
->closure(operand.fragment->select(oclIsKindOf(CombinedFragment)).oclAsType(CombinedFragment)).operand.fragment->&#xD;
select(oclIsKindOf(InteractionUse)).oclAsType(InteractionUse)->asSet()&#xD;
)->excluding(iuse)&#xD;
in&#xD;
peerUses->forAll( peerUse : InteractionUse |&#xD;
peerUse.refersTo.lifeline->forAll( l : Lifeline | (l.represents = self.represents and &#xD;
( self.selector.oclIsKindOf(LiteralString) implies&#xD;
l.selector.oclIsKindOf(LiteralString) and &#xD;
self.selector.oclAsType(LiteralString).value = l.selector.oclAsType(LiteralString).value )&#xD;
and &#xD;
( self.selector.oclIsKindOf(LiteralInteger) implies&#xD;
l.selector.oclIsKindOf(LiteralInteger) and &#xD;
self.selector.oclAsType(LiteralInteger).value = l.selector.oclAsType(LiteralInteger).value )&#xD;
) &#xD;
implies&#xD;
usingInteraction.lifeline->exists(represents = self.represents and&#xD;
( self.selector.oclIsKindOf(LiteralString) implies&#xD;
l.selector.oclIsKindOf(LiteralString) and &#xD;
self.selector.oclAsType(LiteralString).value = l.selector.oclAsType(LiteralString).value )&#xD;
and &#xD;
( self.selector.oclIsKindOf(LiteralInteger) implies&#xD;
l.selector.oclIsKindOf(LiteralInteger) and &#xD;
self.selector.oclAsType(LiteralInteger).value = l.selector.oclAsType(LiteralInteger).value )&#xD;
)&#xD;
)&#xD;
)&#xD;
)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNyM_IkxEeOMQ5AKLd10lA" name="same_classifier" constrainedElement="_MwekcFU2EeKpypMay8ANnw">
<ownedComment xmi:id="_MNyM_YkxEeOMQ5AKLd10lA" annotatedElement="_MNyM_IkxEeOMQ5AKLd10lA">
<body>The classifier containing the referenced ConnectableElement must be the same classifier, or an ancestor, of the classifier that contains the interaction enclosing this lifeline.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNyM_okxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>represents.namespace->closure(namespace)->includes(interaction._'context')</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNyM_4kxEeOMQ5AKLd10lA" name="selector_int_or_string" constrainedElement="_MwekcFU2EeKpypMay8ANnw">
<ownedComment xmi:id="_MNyNAIkxEeOMQ5AKLd10lA" annotatedElement="_MNyM_4kxEeOMQ5AKLd10lA">
<body>The selector value, if present, must be a LiteralString or a LiteralInteger</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNyNAYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>self.selector->notEmpty() implies &#xD;
self.selector.oclIsKindOf(LiteralInteger) or &#xD;
self.selector.oclIsKindOf(LiteralString)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MNyNAokxEeOMQ5AKLd10lA" general="_csVgUGvtEdqG6fBIPwe-mw"/>
<ownedAttribute xmi:id="_MNyz4IkxEeOMQ5AKLd10lA" name="coveredBy" type="_MNw-wIkxEeOMQ5AKLd10lA" association="_MN8k4IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNyz4YkxEeOMQ5AKLd10lA" annotatedElement="_MNyz4IkxEeOMQ5AKLd10lA">
<body>References the InteractionFragments in which this Lifeline takes part.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNyz4okxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNyz44kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNyz5IkxEeOMQ5AKLd10lA" name="decomposedAs" type="_MN2eQIkxEeOMQ5AKLd10lA" association="_MN6vuYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNyz5YkxEeOMQ5AKLd10lA" annotatedElement="_MNyz5IkxEeOMQ5AKLd10lA">
<body>References the Interaction that represents the decomposition.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNyz5okxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNyz54kxEeOMQ5AKLd10lA" name="interaction" type="_MNwXoIkxEeOMQ5AKLd10lA" subsettedProperty="_1vzv0LbIEeCRxrN1JUGuxA" association="_MN9L84kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNyz6IkxEeOMQ5AKLd10lA" annotatedElement="_MNyz54kxEeOMQ5AKLd10lA">
<body>References the Interaction enclosing this Lifeline.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MNyz6YkxEeOMQ5AKLd10lA" name="represents" type="_0dB44PnhEdunWsS3se92JQ" association="_MN7WwIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNyz6okxEeOMQ5AKLd10lA" annotatedElement="_MNyz6YkxEeOMQ5AKLd10lA">
<body>References the ConnectableElement within the classifier that contains the enclosing interaction.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNyz64kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNyz7IkxEeOMQ5AKLd10lA" name="selector" type="_MPO-UIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MN6vtokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNyz7YkxEeOMQ5AKLd10lA" annotatedElement="_MNyz7IkxEeOMQ5AKLd10lA">
<body>If the referenced ConnectableElement is multivalued, then this specifies the specific individual part within that set.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNyz7okxEeOMQ5AKLd10lA"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_gfgNwGveEdq4DLWZOhbdEA" name="Message">
<ownedComment xmi:id="_MNyz74kxEeOMQ5AKLd10lA" annotatedElement="_gfgNwGveEdq4DLWZOhbdEA">
<body>A Message defines a particular communication between Lifelines of an Interaction.</body>
</ownedComment>
<ownedRule xmi:id="_MNyz8IkxEeOMQ5AKLd10lA" name="sending_receiving_message_event" constrainedElement="_gfgNwGveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MNyz8YkxEeOMQ5AKLd10lA" annotatedElement="_MNyz8IkxEeOMQ5AKLd10lA">
<body>If the sendEvent and the receiveEvent of the same Message are on the same Lifeline, the sendEvent must be ordered before the receiveEvent.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNyz8okxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>receiveEvent.oclIsKindOf(MessageOccurrenceSpecification)&#xD;
implies&#xD;
let f : Lifeline = sendEvent->select(oclIsKindOf(MessageOccurrenceSpecification)).oclAsType(MessageOccurrenceSpecification)->asOrderedSet()->first().covered in&#xD;
f = receiveEvent->select(oclIsKindOf(MessageOccurrenceSpecification)).oclAsType(MessageOccurrenceSpecification)->asOrderedSet()->first().covered implies&#xD;
f.events->indexOf(sendEvent.oclAsType(MessageOccurrenceSpecification)->asOrderedSet()->first() ) &lt; &#xD;
f.events->indexOf(receiveEvent.oclAsType(MessageOccurrenceSpecification)->asOrderedSet()->first() )</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNza8IkxEeOMQ5AKLd10lA" name="arguments" constrainedElement="_gfgNwGveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MNza8YkxEeOMQ5AKLd10lA" annotatedElement="_MNza8IkxEeOMQ5AKLd10lA">
<body>Arguments of a Message must only be: i) attributes of the sending lifeline, ii) constants, iii) symbolic values (which are wildcard values representing any legal value), iv) explicit parameters of the enclosing Interaction, v) attributes of the class owning the Interaction.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNza8okxEeOMQ5AKLd10lA" language=""/>
</ownedRule>
<ownedRule xmi:id="_MNza84kxEeOMQ5AKLd10lA" name="cannot_cross_boundaries" constrainedElement="_gfgNwGveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MNza9IkxEeOMQ5AKLd10lA" annotatedElement="_MNza84kxEeOMQ5AKLd10lA">
<body>Messages cannot cross boundaries of CombinedFragments or their operands. This is true if and only if both MessageEnds are enclosed within the same InteractionFragment (i.e., an InteractionOperand or an Interaction).</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNza9YkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>sendEvent->notEmpty() and receiveEvent->notEmpty() implies&#xD;
let sendEnclosingFrag : Set(InteractionFragment) = &#xD;
sendEvent->asOrderedSet()->first().enclosingFragment()&#xD;
in &#xD;
let receiveEnclosingFrag : Set(InteractionFragment) = &#xD;
receiveEvent->asOrderedSet()->first().enclosingFragment()&#xD;
in sendEnclosingFrag = receiveEnclosingFrag</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNza9okxEeOMQ5AKLd10lA" name="signature_is_signal" constrainedElement="_gfgNwGveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MNza94kxEeOMQ5AKLd10lA" annotatedElement="_MNza9okxEeOMQ5AKLd10lA">
<body>In the case when the Message signature is a Signal, the arguments of the Message must correspond to the attributes of the Signal. A Message Argument corresponds to a Signal Attribute if the Argument is of the same Class or a specialization of that of the Attribute.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNza-IkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(messageSort = MessageSort::asynchSignal ) and signature.oclIsKindOf(Signal) implies&#xD;
let signalAttributes : OrderedSet(Property) = signature.oclAsType(Signal).inheritedMember()->&#xD;
select(n:NamedElement | n.oclIsTypeOf(Property))->collect(oclAsType(Property))->asOrderedSet()&#xD;
in signalAttributes->size() = self.argument->size()&#xD;
and self.argument->forAll( o: ValueSpecification |&#xD;
not (o.oclIsKindOf(Expression)&#xD;
and o.oclAsType(Expression).symbol->size()=0&#xD;
and o.oclAsType(Expression).operand->isEmpty() ) implies&#xD;
let p : Property = signalAttributes->at(self.argument->indexOf(o))&#xD;
in o.type.oclAsType(Classifier).conformsTo(p.type.oclAsType(Classifier)))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNza-YkxEeOMQ5AKLd10lA" name="occurrence_specifications" constrainedElement="_gfgNwGveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MNza-okxEeOMQ5AKLd10lA" annotatedElement="_MNza-YkxEeOMQ5AKLd10lA">
<body>If the MessageEnds are both OccurrenceSpecifications, then the connector must go between the Parts represented by the Lifelines of the two MessageEnds.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNza-4kxEeOMQ5AKLd10lA" language=""/>
</ownedRule>
<ownedRule xmi:id="_MNza_IkxEeOMQ5AKLd10lA" name="signature_refer_to" constrainedElement="_gfgNwGveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MNza_YkxEeOMQ5AKLd10lA" annotatedElement="_MNza_IkxEeOMQ5AKLd10lA">
<body>The signature must either refer an Operation (in which case messageSort is either synchCall or asynchCall or reply) or a Signal (in which case messageSort is asynchSignal). The name of the NamedElement referenced by signature must be the same as that of the Message.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNza_okxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>signature->notEmpty() implies &#xD;
((signature.oclIsKindOf(Operation) and &#xD;
(messageSort = MessageSort::asynchCall or messageSort = MessageSort::synchCall or messageSort = MessageSort::reply) &#xD;
) or (signature.oclIsKindOf(Signal) and messageSort = MessageSort::asynchSignal )&#xD;
) and name = signature.name</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNza_4kxEeOMQ5AKLd10lA" name="signature_is_operation_request" constrainedElement="_gfgNwGveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MNzbAIkxEeOMQ5AKLd10lA" annotatedElement="_MNza_4kxEeOMQ5AKLd10lA">
<body>In the case when a Message with messageSort synchCall or asynchCall has a non empty Operation signature, the arguments of the Message must correspond to the in and inout parameters of the Operation. A Parameter corresponds to an Argument if the Argument is of the same Class or a specialization of that of the Parameter.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNzbAYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(messageSort = MessageSort::asynchCall or messageSort = MessageSort::synchCall) and signature.oclIsKindOf(Operation) implies &#xD;
let requestParms : OrderedSet(Parameter) = signature.oclAsType(Operation).ownedParameter->&#xD;
select(direction = ParameterDirectionKind::inout or direction = ParameterDirectionKind::_'in' )&#xD;
in requestParms->size() = self.argument->size() and&#xD;
self.argument->forAll( o: ValueSpecification | &#xD;
not (o.oclIsKindOf(Expression) and o.oclAsType(Expression).symbol->size()=0 and o.oclAsType(Expression).operand->isEmpty() ) implies &#xD;
let p : Parameter = requestParms->at(self.argument->indexOf(o)) in&#xD;
o.type.oclAsType(Classifier).conformsTo(p.type.oclAsType(Classifier))&#xD;
)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MNzbAokxEeOMQ5AKLd10lA" name="signature_is_operation_reply" constrainedElement="_gfgNwGveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MNzbA4kxEeOMQ5AKLd10lA" annotatedElement="_MNzbAokxEeOMQ5AKLd10lA">
<body>In the case when a Message with messageSort reply has a non empty Operation signature, the arguments of the Message must correspond to the out, inout, and return parameters of the Operation. A Parameter corresponds to an Argument if the Argument is of the same Class or a specialization of that of the Parameter.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MNzbBIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(messageSort = MessageSort::reply) and signature.oclIsKindOf(Operation) implies &#xD;
let replyParms : OrderedSet(Parameter) = signature.oclAsType(Operation).ownedParameter->&#xD;
select(direction = ParameterDirectionKind::inout or direction = ParameterDirectionKind::out or direction = ParameterDirectionKind::return)&#xD;
in replyParms->size() = self.argument->size() and&#xD;
self.argument->forAll( o: ValueSpecification | o.oclIsKindOf(Expression) and let e : Expression = o.oclAsType(Expression) in&#xD;
e.operand->notEmpty() implies &#xD;
let p : Parameter = replyParms->at(self.argument->indexOf(o)) in&#xD;
e.operand->asSequence()->first().type.oclAsType(Classifier).conformsTo(p.type.oclAsType(Classifier))&#xD;
)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MNzbBYkxEeOMQ5AKLd10lA" general="_csVgUGvtEdqG6fBIPwe-mw"/>
<ownedAttribute xmi:id="_MNzbBokxEeOMQ5AKLd10lA" name="argument" type="_MPO-UIkxEeOMQ5AKLd10lA" isOrdered="true" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MN6vs4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNzbB4kxEeOMQ5AKLd10lA" annotatedElement="_MNzbBokxEeOMQ5AKLd10lA">
<body>The arguments of the Message.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNzbCIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MNzbCYkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MNzbCokxEeOMQ5AKLd10lA" name="connector" type="_YxC2YLLWEeCsYvaJqFFivQ" association="_MN6IqIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MNzbC4kxEeOMQ5AKLd10lA" annotatedElement="_MNzbCokxEeOMQ5AKLd10lA">
<body>The Connector on which this Message is sent.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MNzbDIkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MN0CAIkxEeOMQ5AKLd10lA" name="interaction" type="_MNwXoIkxEeOMQ5AKLd10lA" subsettedProperty="_1vzv0LbIEeCRxrN1JUGuxA" association="_MN9L9YkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MN0CAYkxEeOMQ5AKLd10lA" annotatedElement="_MN0CAIkxEeOMQ5AKLd10lA">
<body>The enclosing Interaction owning the Message.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="__1Qw8IROEeOnobsWSpJONg" name="messageKind" type="_Y_jskGvtEdqG6fBIPwe-mw" isReadOnly="true" isDerived="true">
<ownedComment xmi:id="_MN0CAokxEeOMQ5AKLd10lA" annotatedElement="__1Qw8IROEeOnobsWSpJONg">
<body>The derived kind of the Message (complete, lost, found, or unknown).</body>
</ownedComment>
<defaultValue xmi:type="uml:InstanceValue" xmi:id="_sAUKUIRPEeOnobsWSpJONg" instance="_VJVLgIRPEeOnobsWSpJONg"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MN0CA4kxEeOMQ5AKLd10lA" name="messageSort" type="_MN46gIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MN0CBIkxEeOMQ5AKLd10lA" annotatedElement="_MN0CA4kxEeOMQ5AKLd10lA">
<body>The sort of communication reflected by the Message.</body>
</ownedComment>
<defaultValue xmi:type="uml:InstanceValue" xmi:id="_MN0CBYkxEeOMQ5AKLd10lA" type="_MN46gIkxEeOMQ5AKLd10lA" instance="_MN46gokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MN0CBokxEeOMQ5AKLd10lA" name="receiveEvent" type="_MN1QIIkxEeOMQ5AKLd10lA" subsettedProperty="_MN6IoYkxEeOMQ5AKLd10lA" association="_MN6IrIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MN0CB4kxEeOMQ5AKLd10lA" annotatedElement="_MN0CBokxEeOMQ5AKLd10lA">
<body>References the Receiving of the Message.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MN0CCIkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MN0CCYkxEeOMQ5AKLd10lA" name="sendEvent" type="_MN1QIIkxEeOMQ5AKLd10lA" subsettedProperty="_MN6IoYkxEeOMQ5AKLd10lA" association="_MN6vsIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MN0CCokxEeOMQ5AKLd10lA" annotatedElement="_MN0CCYkxEeOMQ5AKLd10lA">
<body>References the Sending of the Message.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MN0CC4kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MN0CDIkxEeOMQ5AKLd10lA" name="signature" type="_csVgUGvtEdqG6fBIPwe-mw" association="_MN6IpIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MN0CDYkxEeOMQ5AKLd10lA" annotatedElement="_MN0CDIkxEeOMQ5AKLd10lA">
<body>The signature of the Message is the specification of its content. It refers either an Operation or a Signal.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MN0CDokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedOperation xmi:id="_8U6CAFYfEdqB6vblk3tuMA" name="messageKind" visibility="protected" bodyCondition="_MN0CEIkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MN0CD4kxEeOMQ5AKLd10lA" annotatedElement="_8U6CAFYfEdqB6vblk3tuMA">
<body>This query returns the MessageKind value for this Message.</body>
</ownedComment>
<ownedRule xmi:id="_MN0CEIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_8U6CAFYfEdqB6vblk3tuMA __1Qw8IROEeOnobsWSpJONg">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MN0CEYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (messageKind)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_-_OTMFYfEdqB6vblk3tuMA" name="result" type="_Y_jskGvtEdqG6fBIPwe-mw" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="_MN0pEIkxEeOMQ5AKLd10lA" name="isDistinguishableFrom" bodyCondition="_MN0pEokxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MNM-B4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MN0pEYkxEeOMQ5AKLd10lA" annotatedElement="_MN0pEIkxEeOMQ5AKLd10lA">
<body>The query isDistinguishableFrom() specifies that any two Messages may coexist in the same Namespace, regardless of their names.</body>
</ownedComment>
<ownedRule xmi:id="_MN0pEokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MN0pEIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MN0pE4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (true)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MN0pFIkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_MN0pFYkxEeOMQ5AKLd10lA" name="n" type="_csVgUGvtEdqG6fBIPwe-mw"/>
<ownedParameter xmi:id="_MN0pFokxEeOMQ5AKLd10lA" name="ns" type="_ZiwkoGwLEdq7X4sGURiZYA"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MN1QIIkxEeOMQ5AKLd10lA" name="MessageEnd" isAbstract="true">
<ownedComment xmi:id="_MN1QIYkxEeOMQ5AKLd10lA" annotatedElement="_MN1QIIkxEeOMQ5AKLd10lA">
<body>MessageEnd is an abstract specialization of NamedElement that represents what can occur at the end of a Message.</body>
</ownedComment>
<generalization xmi:id="_MN1QIokxEeOMQ5AKLd10lA" general="_csVgUGvtEdqG6fBIPwe-mw"/>
<ownedAttribute xmi:id="_MN1QI4kxEeOMQ5AKLd10lA" name="message" type="_gfgNwGveEdq4DLWZOhbdEA" association="_MN6IoIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MN1QJIkxEeOMQ5AKLd10lA" annotatedElement="_MN1QI4kxEeOMQ5AKLd10lA">
<body>References a Message.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MN1QJYkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedOperation xmi:id="_MN1QJokxEeOMQ5AKLd10lA" name="oppositeEnd" bodyCondition="_MN1QKIkxEeOMQ5AKLd10lA" isQuery="true" precondition="_MN1QKokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MN1QJ4kxEeOMQ5AKLd10lA" annotatedElement="_MN1QJokxEeOMQ5AKLd10lA">
<body>This query returns a set including the MessageEnd (if exists) at the opposite end of the Message for this MessageEnd.</body>
</ownedComment>
<ownedRule xmi:id="_MN1QKIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MN1QJokxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MN1QKYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (message->asSet().messageEnd->asSet()->excluding(self))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MN1QKokxEeOMQ5AKLd10lA" name="pre" constrainedElement="_MN1QJokxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MN1QK4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>message->notEmpty()</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MN1QLIkxEeOMQ5AKLd10lA" name="result" type="_MN1QIIkxEeOMQ5AKLd10lA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MN1QLYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MN1QLokxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MN1QL4kxEeOMQ5AKLd10lA" name="isSend" bodyCondition="_MN1QM4kxEeOMQ5AKLd10lA" isQuery="true" precondition="_MN1QMYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MN1QMIkxEeOMQ5AKLd10lA" annotatedElement="_MN1QL4kxEeOMQ5AKLd10lA">
<body>This query returns value true if this MessageEnd is a sendEvent.</body>
</ownedComment>
<ownedRule xmi:id="_MN1QMYkxEeOMQ5AKLd10lA" name="pre" constrainedElement="_MN1QL4kxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MN1QMokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>message->notEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MN1QM4kxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MN1QL4kxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MN1QNIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (message.sendEvent->asSet()->includes(self))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MN1QNYkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MN1QNokxEeOMQ5AKLd10lA" name="isReceive" bodyCondition="_MN1QO4kxEeOMQ5AKLd10lA" isQuery="true" precondition="_MN1QOIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MN1QN4kxEeOMQ5AKLd10lA" annotatedElement="_MN1QNokxEeOMQ5AKLd10lA">
<body>This query returns value true if this MessageEnd is a receiveEvent.</body>
</ownedComment>
<ownedRule xmi:id="_MN1QOIkxEeOMQ5AKLd10lA" name="pre" constrainedElement="_MN1QNokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MN1QOYkxEeOMQ5AKLd10lA" annotatedElement="_MN1QOIkxEeOMQ5AKLd10lA">
<body>&lt;p>message-&amp;gt;notEmpty()&lt;/p></body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MN1QOokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>message->notEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MN1QO4kxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MN1QNokxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MN1QPIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (message.receiveEvent->asSet()->includes(self))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MN1QPYkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MN1QPokxEeOMQ5AKLd10lA" name="enclosingFragment" bodyCondition="_MN1QQIkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MN1QP4kxEeOMQ5AKLd10lA" annotatedElement="_MN1QPokxEeOMQ5AKLd10lA">
<body>This query returns a set including the enclosing InteractionFragment this MessageEnd is enclosed within.</body>
</ownedComment>
<ownedRule xmi:id="_MN1QQIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MN1QPokxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MN1QQYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if self->select(oclIsKindOf(Gate))->notEmpty() &#xD;
then -- it is a Gate&#xD;
let endGate : Gate = &#xD;
self->select(oclIsKindOf(Gate)).oclAsType(Gate)->asOrderedSet()->first()&#xD;
in&#xD;
if endGate.isOutsideCF() &#xD;
then endGate.combinedFragment.enclosingInteraction.oclAsType(InteractionFragment)->asSet()->&#xD;
union(endGate.combinedFragment.enclosingOperand.oclAsType(InteractionFragment)->asSet())&#xD;
else if endGate.isInsideCF() &#xD;
then endGate.combinedFragment.oclAsType(InteractionFragment)->asSet()&#xD;
else if endGate.isFormal() &#xD;
then endGate.interaction.oclAsType(InteractionFragment)->asSet()&#xD;
else if endGate.isActual() &#xD;
then endGate.interactionUse.enclosingInteraction.oclAsType(InteractionFragment)->asSet()->&#xD;
union(endGate.interactionUse.enclosingOperand.oclAsType(InteractionFragment)->asSet())&#xD;
else null&#xD;
endif&#xD;
endif&#xD;
endif&#xD;
endif&#xD;
else -- it is a MessageOccurrenceSpecification&#xD;
let endMOS : MessageOccurrenceSpecification = &#xD;
self->select(oclIsKindOf(MessageOccurrenceSpecification)).oclAsType(MessageOccurrenceSpecification)->asOrderedSet()->first() &#xD;
in&#xD;
if endMOS.enclosingInteraction->notEmpty() &#xD;
then endMOS.enclosingInteraction.oclAsType(InteractionFragment)->asSet()&#xD;
else endMOS.enclosingOperand.oclAsType(InteractionFragment)->asSet()&#xD;
endif&#xD;
endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MN1QQokxEeOMQ5AKLd10lA" name="result" type="_MNw-wIkxEeOMQ5AKLd10lA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MN1QQ4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MN1QRIkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MN13MIkxEeOMQ5AKLd10lA" name="MessageOccurrenceSpecification">
<ownedComment xmi:id="_MN13MYkxEeOMQ5AKLd10lA" annotatedElement="_MN13MIkxEeOMQ5AKLd10lA">
<body>A MessageOccurrenceSpecification specifies the occurrence of Message events, such as sending and receiving of Signals or invoking or receiving of Operation calls. A MessageOccurrenceSpecification is a kind of MessageEnd. Messages are generated either by synchronous Operation calls or asynchronous Signal sends. They are received by the execution of corresponding AcceptEventActions.</body>
</ownedComment>
<generalization xmi:id="_MN13MokxEeOMQ5AKLd10lA" general="_MN1QIIkxEeOMQ5AKLd10lA"/>
<generalization xmi:id="_MN13M4kxEeOMQ5AKLd10lA" general="_4kmhAFU1EeKpypMay8ANnw"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_4kmhAFU1EeKpypMay8ANnw" name="OccurrenceSpecification">
<ownedComment xmi:id="_MN13NIkxEeOMQ5AKLd10lA" annotatedElement="_4kmhAFU1EeKpypMay8ANnw">
<body>An OccurrenceSpecification is the basic semantic unit of Interactions. The sequences of occurrences specified by them are the meanings of Interactions.</body>
</ownedComment>
<generalization xmi:id="_MN13NYkxEeOMQ5AKLd10lA" general="_MNw-wIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MN13NokxEeOMQ5AKLd10lA" name="covered" type="_MwekcFU2EeKpypMay8ANnw" redefinedProperty="_MNw-w4kxEeOMQ5AKLd10lA" association="_MN5hl4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MN13N4kxEeOMQ5AKLd10lA" annotatedElement="_MN13NokxEeOMQ5AKLd10lA">
<body>References the Lifeline on which the OccurrenceSpecification appears.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MN13OIkxEeOMQ5AKLd10lA" name="toAfter" type="_MNvwkIkxEeOMQ5AKLd10lA" association="_MN9L9okxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MN13OYkxEeOMQ5AKLd10lA" annotatedElement="_MN13OIkxEeOMQ5AKLd10lA">
<body>References the GeneralOrderings that specify EventOcurrences that must occur after this OccurrenceSpecification.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MN13OokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MN13O4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MN13PIkxEeOMQ5AKLd10lA" name="toBefore" type="_MNvwkIkxEeOMQ5AKLd10lA" association="_MN5hm4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MN13PYkxEeOMQ5AKLd10lA" annotatedElement="_MN13PIkxEeOMQ5AKLd10lA">
<body>References the GeneralOrderings that specify EventOcurrences that must occur before this OccurrenceSpecification.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MN13PokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MN13P4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedOperation xmi:id="_77OekFU1EeKpypMay8ANnw" name="getCovered">
<ownedComment xmi:id="_bya5oFU2EeKpypMay8ANnw" annotatedElement="_77OekFU1EeKpypMay8ANnw">
<body>Returns the Lifeline on which the OccurrenceSpecification appears.</body>
</ownedComment>
<ownedParameter xmi:id="_BVxbsFU2EeKpypMay8ANnw" type="_MwekcFU2EeKpypMay8ANnw" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WXN1MFU2EeKpypMay8ANnw"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_EXr4EFU3EeKpypMay8ANnw" name="setCovered">
<ownedComment xmi:id="_U-X9gFU3EeKpypMay8ANnw" annotatedElement="_EXr4EFU3EeKpypMay8ANnw">
<body>Sets the Lifeline on which the OccurrenceSpecification appears.</body>
</ownedComment>
<ownedParameter xmi:id="_IGAj8FU3EeKpypMay8ANnw" name="value" type="_MwekcFU2EeKpypMay8ANnw"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MN2eQIkxEeOMQ5AKLd10lA" name="PartDecomposition">
<ownedComment xmi:id="_MN2eQYkxEeOMQ5AKLd10lA" annotatedElement="_MN2eQIkxEeOMQ5AKLd10lA">
<body>A PartDecomposition is a description of the internal Interactions of one Lifeline relative to an Interaction.</body>
</ownedComment>
<ownedRule xmi:id="_MN2eQokxEeOMQ5AKLd10lA" name="commutativity_of_decomposition" constrainedElement="_MN2eQIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MN2eQ4kxEeOMQ5AKLd10lA" annotatedElement="_MN2eQokxEeOMQ5AKLd10lA">
<body>Assume that within Interaction X, Lifeline L is of class C and decomposed to D. Assume also that there is within X an InteractionUse (say) U that covers L. According to the constraint above U will have a counterpart CU within D. Within the Interaction referenced by U, L should also be decomposed, and the decomposition should reference CU. (This rule is called commutativity of decomposition.)</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MN2eRIkxEeOMQ5AKLd10lA" language=""/>
</ownedRule>
<ownedRule xmi:id="_MN2eRYkxEeOMQ5AKLd10lA" name="assume" constrainedElement="_MN2eQIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MN2eRokxEeOMQ5AKLd10lA" annotatedElement="_MN2eRYkxEeOMQ5AKLd10lA">
<body>Assume that within Interaction X, Lifeline L is of class C and decomposed to D. Within X there is a sequence of constructs along L (such constructs are CombinedFragments, InteractionUse and (plain) OccurrenceSpecifications). Then a corresponding sequence of constructs must appear within D, matched one-to-one in the same order. i) CombinedFragment covering L are matched with an extra-global CombinedFragment in D. ii) An InteractionUse covering L is matched with a global (i.e., covering all Lifelines) InteractionUse in D. iii) A plain OccurrenceSpecification on L is considered an actualGate that must be matched by a formalGate of D.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MN2eR4kxEeOMQ5AKLd10lA" language=""/>
</ownedRule>
<ownedRule xmi:id="_MN2eSIkxEeOMQ5AKLd10lA" name="parts_of_internal_structures" constrainedElement="_MN2eQIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MN2eSYkxEeOMQ5AKLd10lA" annotatedElement="_MN2eSIkxEeOMQ5AKLd10lA">
<body>PartDecompositions apply only to Parts that are Parts of Internal Structures not to Parts of Collaborations.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MN2eSokxEeOMQ5AKLd10lA" language=""/>
</ownedRule>
<generalization xmi:id="_MN2eS4kxEeOMQ5AKLd10lA" general="_MNyM0IkxEeOMQ5AKLd10lA"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MN2eTIkxEeOMQ5AKLd10lA" name="StateInvariant">
<ownedComment xmi:id="_MN2eTYkxEeOMQ5AKLd10lA" annotatedElement="_MN2eTIkxEeOMQ5AKLd10lA">
<body>A StateInvariant is a runtime constraint on the participants of the Interaction. It may be used to specify a variety of different kinds of Constraints, such as values of Attributes or Variables, internal or external States, and so on. A StateInvariant is an InteractionFragment and it is placed on a Lifeline.</body>
</ownedComment>
<generalization xmi:id="_MN2eTokxEeOMQ5AKLd10lA" general="_MNw-wIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MN2eT4kxEeOMQ5AKLd10lA" name="covered" type="_MwekcFU2EeKpypMay8ANnw" redefinedProperty="_MNw-w4kxEeOMQ5AKLd10lA" association="_MN5hk4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MN2eUIkxEeOMQ5AKLd10lA" annotatedElement="_MN2eT4kxEeOMQ5AKLd10lA">
<body>References the Lifeline on which the StateInvariant appears.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MN2eUYkxEeOMQ5AKLd10lA" name="invariant" type="_MNAJsIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MN5hkIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MN2eUokxEeOMQ5AKLd10lA" annotatedElement="_MN2eUYkxEeOMQ5AKLd10lA">
<body>A Constraint that should hold at runtime for this StateInvariant.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Enumeration" xmi:id="_MN3sYIkxEeOMQ5AKLd10lA" name="InteractionOperatorKind">
<ownedComment xmi:id="_MN3sYYkxEeOMQ5AKLd10lA" annotatedElement="_MN3sYIkxEeOMQ5AKLd10lA">
<body>InteractionOperatorKind is an enumeration designating the different kinds of operators of CombinedFragments. The InteractionOperand defines the type of operator of a CombinedFragment.</body>
</ownedComment>
<ownedLiteral xmi:id="_MN3sYokxEeOMQ5AKLd10lA" name="seq">
<ownedComment xmi:id="_MN3sY4kxEeOMQ5AKLd10lA" annotatedElement="_MN3sYokxEeOMQ5AKLd10lA">
<body>The InteractionOperatorKind seq designates that the CombinedFragment represents a weak sequencing between the behaviors of the operands.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_MN3sZIkxEeOMQ5AKLd10lA" name="alt">
<ownedComment xmi:id="_MN3sZYkxEeOMQ5AKLd10lA" annotatedElement="_MN3sZIkxEeOMQ5AKLd10lA">
<body>The InteractionOperatorKind alt designates that the CombinedFragment represents a choice of behavior. At most one of the operands will be chosen. The chosen operand must have an explicit or implicit guard expression that evaluates to true at this point in the interaction. An implicit true guard is implied if the operand has no guard.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_MN3sZokxEeOMQ5AKLd10lA" name="opt">
<ownedComment xmi:id="_MN3sZ4kxEeOMQ5AKLd10lA" annotatedElement="_MN3sZokxEeOMQ5AKLd10lA">
<body>The InteractionOperatorKind opt designates that the CombinedFragment represents a choice of behavior where either the (sole) operand happens or nothing happens. An option is semantically equivalent to an alternative CombinedFragment where there is one operand with non-empty content and the second operand is empty.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_MN3saIkxEeOMQ5AKLd10lA" name="break">
<ownedComment xmi:id="_MN3saYkxEeOMQ5AKLd10lA" annotatedElement="_MN3saIkxEeOMQ5AKLd10lA">
<body>The InteractionOperatorKind break designates that the CombinedFragment represents a breaking scenario in the sense that the operand is a scenario that is performed instead of the remainder of the enclosing InteractionFragment. A break operator with a guard is chosen when the guard is true and the rest of the enclosing Interaction Fragment is ignored. When the guard of the break operand is false, the break operand is ignored and the rest of the enclosing InteractionFragment is chosen. The choice between a break operand without a guard and the rest of the enclosing InteractionFragment is done non-deterministically.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_MN3saokxEeOMQ5AKLd10lA" name="par">
<ownedComment xmi:id="_MN3sa4kxEeOMQ5AKLd10lA" annotatedElement="_MN3saokxEeOMQ5AKLd10lA">
<body>The InteractionOperatorKind par designates that the CombinedFragment represents a parallel merge between the behaviors of the operands. The OccurrenceSpecifications of the different operands can be interleaved in any way as long as the ordering imposed by each operand as such is preserved.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_MN3sbIkxEeOMQ5AKLd10lA" name="strict">
<ownedComment xmi:id="_MN3sbYkxEeOMQ5AKLd10lA" annotatedElement="_MN3sbIkxEeOMQ5AKLd10lA">
<body>The InteractionOperatorKind strict designates that the CombinedFragment represents a strict sequencing between the behaviors of the operands. The semantics of strict sequencing defines a strict ordering of the operands on the first level within the CombinedFragment with interactionOperator strict. Therefore OccurrenceSpecifications within contained CombinedFragment will not directly be compared with other OccurrenceSpecifications of the enclosing CombinedFragment.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_MN3sbokxEeOMQ5AKLd10lA" name="loop">
<ownedComment xmi:id="_MN3sb4kxEeOMQ5AKLd10lA" annotatedElement="_MN3sbokxEeOMQ5AKLd10lA">
<body>The InteractionOperatorKind loop designates that the CombinedFragment represents a loop. The loop operand will be repeated a number of times.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_MN3scIkxEeOMQ5AKLd10lA" name="critical">
<ownedComment xmi:id="_MN3scYkxEeOMQ5AKLd10lA" annotatedElement="_MN3scIkxEeOMQ5AKLd10lA">
<body>The InteractionOperatorKind critical designates that the CombinedFragment represents a critical region. A critical region means that the traces of the region cannot be interleaved by other OccurrenceSpecifications (on those Lifelines covered by the region). This means that the region is treated atomically by the enclosing fragment when determining the set of valid traces. Even though enclosing CombinedFragments may imply that some OccurrenceSpecifications may interleave into the region, such as with par-operator, this is prevented by defining a region.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_MN3scokxEeOMQ5AKLd10lA" name="neg">
<ownedComment xmi:id="_MN3sc4kxEeOMQ5AKLd10lA" annotatedElement="_MN3scokxEeOMQ5AKLd10lA">
<body>The InteractionOperatorKind neg designates that the CombinedFragment represents traces that are defined to be invalid.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_MN3sdIkxEeOMQ5AKLd10lA" name="assert">
<ownedComment xmi:id="_MN3sdYkxEeOMQ5AKLd10lA" annotatedElement="_MN3sdIkxEeOMQ5AKLd10lA">
<body>The InteractionOperatorKind assert designates that the CombinedFragment represents an assertion. The sequences of the operand of the assertion are the only valid continuations. All other continuations result in an invalid trace.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_MN3sdokxEeOMQ5AKLd10lA" name="ignore">
<ownedComment xmi:id="_MN3sd4kxEeOMQ5AKLd10lA" annotatedElement="_MN3sdokxEeOMQ5AKLd10lA">
<body>The InteractionOperatorKind ignore designates that there are some message types that are not shown within this combined fragment. These message types can be considered insignificant and are implicitly ignored if they appear in a corresponding execution. Alternatively, one can understand ignore to mean that the message types that are ignored can appear anywhere in the traces.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_MN3seIkxEeOMQ5AKLd10lA" name="consider">
<ownedComment xmi:id="_MN3seYkxEeOMQ5AKLd10lA" annotatedElement="_MN3seIkxEeOMQ5AKLd10lA">
<body>The InteractionOperatorKind consider designates which messages should be considered within this combined fragment. This is equivalent to defining every other message to be ignored.</body>
</ownedComment>
</ownedLiteral>
</packagedElement>
<packagedElement xmi:type="uml:Enumeration" xmi:id="_Y_jskGvtEdqG6fBIPwe-mw" name="MessageKind" visibility="private">
<ownedComment xmi:id="_MN3seokxEeOMQ5AKLd10lA" annotatedElement="_Y_jskGvtEdqG6fBIPwe-mw">
<body>This is an enumerated type that identifies the type of Message.</body>
</ownedComment>
<ownedLiteral xmi:id="_MN4TcIkxEeOMQ5AKLd10lA" name="complete">
<ownedComment xmi:id="_MN4TcYkxEeOMQ5AKLd10lA" annotatedElement="_MN4TcIkxEeOMQ5AKLd10lA">
<body>sendEvent and receiveEvent are present</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_MN4TcokxEeOMQ5AKLd10lA" name="lost">
<ownedComment xmi:id="_MN4Tc4kxEeOMQ5AKLd10lA" annotatedElement="_MN4TcokxEeOMQ5AKLd10lA">
<body>sendEvent present and receiveEvent absent</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_MN4TdIkxEeOMQ5AKLd10lA" name="found">
<ownedComment xmi:id="_MN4TdYkxEeOMQ5AKLd10lA" annotatedElement="_MN4TdIkxEeOMQ5AKLd10lA">
<body>sendEvent absent and receiveEvent present</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_VJVLgIRPEeOnobsWSpJONg" name="unknown">
<ownedComment xmi:id="_MN4TdokxEeOMQ5AKLd10lA" annotatedElement="_VJVLgIRPEeOnobsWSpJONg">
<body>sendEvent and receiveEvent absent (should not appear)</body>
</ownedComment>
</ownedLiteral>
</packagedElement>
<packagedElement xmi:type="uml:Enumeration" xmi:id="_MN46gIkxEeOMQ5AKLd10lA" name="MessageSort">
<ownedComment xmi:id="_MN46gYkxEeOMQ5AKLd10lA" annotatedElement="_MN46gIkxEeOMQ5AKLd10lA">
<body>This is an enumerated type that identifies the type of communication action that was used to generate the Message.</body>
</ownedComment>
<ownedLiteral xmi:id="_MN46gokxEeOMQ5AKLd10lA" name="synchCall">
<ownedComment xmi:id="_MN46g4kxEeOMQ5AKLd10lA" annotatedElement="_MN46gokxEeOMQ5AKLd10lA">
<body>The message was generated by a synchronous call to an operation.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_MN46hIkxEeOMQ5AKLd10lA" name="asynchCall">
<ownedComment xmi:id="_MN46hYkxEeOMQ5AKLd10lA" annotatedElement="_MN46hIkxEeOMQ5AKLd10lA">
<body>The message was generated by an asynchronous call to an operation; i.e., a CallAction with isSynchronous = false.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_MN46hokxEeOMQ5AKLd10lA" name="asynchSignal">
<ownedComment xmi:id="_MN46h4kxEeOMQ5AKLd10lA" annotatedElement="_MN46hokxEeOMQ5AKLd10lA">
<body>The message was generated by an asynchronous send action.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_MN46iIkxEeOMQ5AKLd10lA" name="createMessage">
<ownedComment xmi:id="_MN46iYkxEeOMQ5AKLd10lA" annotatedElement="_MN46iIkxEeOMQ5AKLd10lA">
<body>The message designating the creation of another lifeline object.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_MN46iokxEeOMQ5AKLd10lA" name="deleteMessage">
<ownedComment xmi:id="_MN46i4kxEeOMQ5AKLd10lA" annotatedElement="_MN46iokxEeOMQ5AKLd10lA">
<body>The message designating the termination of another lifeline.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_MN46jIkxEeOMQ5AKLd10lA" name="reply">
<ownedComment xmi:id="_MN46jYkxEeOMQ5AKLd10lA" annotatedElement="_MN46jIkxEeOMQ5AKLd10lA">
<body>The message is a reply message to an operation call.</body>
</ownedComment>
</ownedLiteral>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MN5hkIkxEeOMQ5AKLd10lA" name="A_invariant_stateInvariant" memberEnd="_MN2eUYkxEeOMQ5AKLd10lA _MN5hkYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MN5hkYkxEeOMQ5AKLd10lA" name="stateInvariant" type="_MN2eTIkxEeOMQ5AKLd10lA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MN5hkIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MN5hkokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MN5hk4kxEeOMQ5AKLd10lA" name="A_covered_stateInvariant" memberEnd="_MN2eT4kxEeOMQ5AKLd10lA _MN5hlIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MN5hlIkxEeOMQ5AKLd10lA" name="stateInvariant" type="_MN2eTIkxEeOMQ5AKLd10lA" subsettedProperty="_MNyz4IkxEeOMQ5AKLd10lA" association="_MN5hk4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MN5hlYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MN5hlokxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MN5hl4kxEeOMQ5AKLd10lA" name="A_covered_events" memberEnd="_MN13NokxEeOMQ5AKLd10lA _MN5hmIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MN5hmIkxEeOMQ5AKLd10lA" name="events" type="_4kmhAFU1EeKpypMay8ANnw" isOrdered="true" subsettedProperty="_MNyz4IkxEeOMQ5AKLd10lA" association="_MN5hl4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MN5hmYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MN5hmokxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MN5hm4kxEeOMQ5AKLd10lA" name="A_toBefore_after" memberEnd="_MN13PIkxEeOMQ5AKLd10lA _MNvwlokxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MN6IoIkxEeOMQ5AKLd10lA" name="A_message_messageEnd" memberEnd="_MN1QI4kxEeOMQ5AKLd10lA _MN6IoYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MN6IoYkxEeOMQ5AKLd10lA" name="messageEnd" type="_MN1QIIkxEeOMQ5AKLd10lA" association="_MN6IoIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MN6IookxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MN6Io4kxEeOMQ5AKLd10lA" value="2"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MN6IpIkxEeOMQ5AKLd10lA" name="A_signature_message" memberEnd="_MN0CDIkxEeOMQ5AKLd10lA _MN6IpYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MN6IpYkxEeOMQ5AKLd10lA" name="message" type="_gfgNwGveEdq4DLWZOhbdEA" association="_MN6IpIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MN6IpokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MN6Ip4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MN6IqIkxEeOMQ5AKLd10lA" name="A_connector_message" memberEnd="_MNzbCokxEeOMQ5AKLd10lA _MN6IqYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MN6IqYkxEeOMQ5AKLd10lA" name="message" type="_gfgNwGveEdq4DLWZOhbdEA" association="_MN6IqIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MN6IqokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MN6Iq4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MN6IrIkxEeOMQ5AKLd10lA" name="A_receiveEvent_endMessage" memberEnd="_MN0CBokxEeOMQ5AKLd10lA _MN6IrYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MN6IrYkxEeOMQ5AKLd10lA" name="endMessage" type="_gfgNwGveEdq4DLWZOhbdEA" subsettedProperty="_MN1QI4kxEeOMQ5AKLd10lA" association="_MN6IrIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MN6IrokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MN6vsIkxEeOMQ5AKLd10lA" name="A_sendEvent_endMessage" memberEnd="_MN0CCYkxEeOMQ5AKLd10lA _MN6vsYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MN6vsYkxEeOMQ5AKLd10lA" name="endMessage" type="_gfgNwGveEdq4DLWZOhbdEA" subsettedProperty="_MN1QI4kxEeOMQ5AKLd10lA" association="_MN6vsIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MN6vsokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MN6vs4kxEeOMQ5AKLd10lA" name="A_argument_message" memberEnd="_MNzbBokxEeOMQ5AKLd10lA _MN6vtIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MN6vtIkxEeOMQ5AKLd10lA" name="message" type="_gfgNwGveEdq4DLWZOhbdEA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MN6vs4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MN6vtYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MN6vtokxEeOMQ5AKLd10lA" name="A_selector_lifeline" memberEnd="_MNyz7IkxEeOMQ5AKLd10lA _MN6vt4kxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MN6vt4kxEeOMQ5AKLd10lA" name="lifeline" type="_MwekcFU2EeKpypMay8ANnw" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MN6vtokxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MN6vuIkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MN6vuYkxEeOMQ5AKLd10lA" name="A_decomposedAs_lifeline" memberEnd="_MNyz5IkxEeOMQ5AKLd10lA _MN6vuokxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MN6vuokxEeOMQ5AKLd10lA" name="lifeline" type="_MwekcFU2EeKpypMay8ANnw" association="_MN6vuYkxEeOMQ5AKLd10lA"/>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MN7WwIkxEeOMQ5AKLd10lA" name="A_represents_lifeline" memberEnd="_MNyz6YkxEeOMQ5AKLd10lA _MN7WwokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MN7WwYkxEeOMQ5AKLd10lA" annotatedElement="_MN7WwIkxEeOMQ5AKLd10lA">
<body>If a Part has multiplicity, multiple lifelines might be used to show it.</body>
</ownedComment>
<ownedEnd xmi:id="_MN7WwokxEeOMQ5AKLd10lA" name="lifeline" type="_MwekcFU2EeKpypMay8ANnw" association="_MN7WwIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MN7Ww4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MN7WxIkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MN7WxYkxEeOMQ5AKLd10lA" name="A_returnValueRecipient_interactionUse" memberEnd="_MNyM8okxEeOMQ5AKLd10lA _MN7WxokxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MN7WxokxEeOMQ5AKLd10lA" name="interactionUse" type="_MNyM0IkxEeOMQ5AKLd10lA" association="_MN7WxYkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MN7Wx4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MN7WyIkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MN7WyYkxEeOMQ5AKLd10lA" name="A_refersTo_interactionUse" memberEnd="_MNyM7YkxEeOMQ5AKLd10lA _MN7WyokxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MN7WyokxEeOMQ5AKLd10lA" name="interactionUse" type="_MNyM0IkxEeOMQ5AKLd10lA" association="_MN7WyYkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MN7Wy4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MN7WzIkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MN7WzYkxEeOMQ5AKLd10lA" name="A_returnValue_interactionUse" memberEnd="_MNyM74kxEeOMQ5AKLd10lA _MN7WzokxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MN7WzokxEeOMQ5AKLd10lA" name="interactionUse" type="_MNyM0IkxEeOMQ5AKLd10lA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MN7WzYkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MN7Wz4kxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MN790IkxEeOMQ5AKLd10lA" name="A_argument_interactionUse" memberEnd="_MNyM6YkxEeOMQ5AKLd10lA _MN790YkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MN790YkxEeOMQ5AKLd10lA" name="interactionUse" type="_MNyM0IkxEeOMQ5AKLd10lA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MN790IkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MN790okxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MN7904kxEeOMQ5AKLd10lA" name="A_actualGate_interactionUse" memberEnd="_MNyM5YkxEeOMQ5AKLd10lA _MN791IkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MN791IkxEeOMQ5AKLd10lA" name="interactionUse" type="_MNyM0IkxEeOMQ5AKLd10lA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MN7904kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MN791YkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MN791okxEeOMQ5AKLd10lA" name="A_fragment_enclosingOperand" memberEnd="_MNxlyokxEeOMQ5AKLd10lA _MNw-yokxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MN7914kxEeOMQ5AKLd10lA" name="A_guard_interactionOperand" memberEnd="_MNxlzokxEeOMQ5AKLd10lA _MN792IkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MN792IkxEeOMQ5AKLd10lA" name="interactionOperand" type="_MNxlwIkxEeOMQ5AKLd10lA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MN7914kxEeOMQ5AKLd10lA"/>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MN792YkxEeOMQ5AKLd10lA" name="A_generalOrdering_interactionFragment" memberEnd="_MNw-zYkxEeOMQ5AKLd10lA _MN792okxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MN792okxEeOMQ5AKLd10lA" name="interactionFragment" type="_MNw-wIkxEeOMQ5AKLd10lA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MN792YkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MN7924kxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MN8k4IkxEeOMQ5AKLd10lA" name="A_covered_coveredBy" memberEnd="_MNw-w4kxEeOMQ5AKLd10lA _MNyz4IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MN8k4YkxEeOMQ5AKLd10lA" annotatedElement="_MN8k4IkxEeOMQ5AKLd10lA">
<body>This association shows the lifelines that make up an interaction. A lifeline may be part of more than one interaction use.</body>
</ownedComment>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MN8k4okxEeOMQ5AKLd10lA" name="A_minint_interactionConstraint" memberEnd="_MNw-vYkxEeOMQ5AKLd10lA _MN8k44kxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MN8k44kxEeOMQ5AKLd10lA" name="interactionConstraint" type="_MNwXu4kxEeOMQ5AKLd10lA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MN8k4okxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MN8k5IkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MN8k5YkxEeOMQ5AKLd10lA" name="A_maxint_interactionConstraint" memberEnd="_MNw-uokxEeOMQ5AKLd10lA _MN8k5okxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MN8k5okxEeOMQ5AKLd10lA" name="interactionConstraint" type="_MNwXu4kxEeOMQ5AKLd10lA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MN8k5YkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MN8k54kxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MN8k6IkxEeOMQ5AKLd10lA" name="A_action_interaction" memberEnd="_MNwXp4kxEeOMQ5AKLd10lA _MN8k6YkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MN8k6YkxEeOMQ5AKLd10lA" name="interaction" type="_MNwXoIkxEeOMQ5AKLd10lA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MN8k6IkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MN8k6okxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MN9L8IkxEeOMQ5AKLd10lA" name="A_formalGate_interaction" memberEnd="_MNwXq4kxEeOMQ5AKLd10lA _MN9L8YkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MN9L8YkxEeOMQ5AKLd10lA" name="interaction" type="_MNwXoIkxEeOMQ5AKLd10lA" subsettedProperty="_1vzv0LbIEeCRxrN1JUGuxA" association="_MN9L8IkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MN9L8okxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MN9L84kxEeOMQ5AKLd10lA" name="A_lifeline_interaction" memberEnd="_MNwXs4kxEeOMQ5AKLd10lA _MNyz54kxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MN9L9IkxEeOMQ5AKLd10lA" name="A_fragment_enclosingInteraction" memberEnd="_MNwXr4kxEeOMQ5AKLd10lA _MNw-x4kxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MN9L9YkxEeOMQ5AKLd10lA" name="A_message_interaction" memberEnd="_MNwXt4kxEeOMQ5AKLd10lA _MN0CAIkxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MN9L9okxEeOMQ5AKLd10lA" name="A_before_toAfter" memberEnd="_MNvwmIkxEeOMQ5AKLd10lA _MN13OIkxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MN9L94kxEeOMQ5AKLd10lA" name="A_finish_executionSpecification" memberEnd="_MNt7a4kxEeOMQ5AKLd10lA _MN9L-YkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MN9L-IkxEeOMQ5AKLd10lA" annotatedElement="_MN9L94kxEeOMQ5AKLd10lA">
<body>The event shows the time point at which the action completes execution.</body>
</ownedComment>
<ownedEnd xmi:id="_MN9L-YkxEeOMQ5AKLd10lA" name="executionSpecification" type="_MNt7ZYkxEeOMQ5AKLd10lA" association="_MN9L94kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MN9L-okxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MN9L-4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MN9zAIkxEeOMQ5AKLd10lA" name="A_start_executionSpecification" memberEnd="_MNt7bYkxEeOMQ5AKLd10lA _MN9zAokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MN9zAYkxEeOMQ5AKLd10lA" annotatedElement="_MN9zAIkxEeOMQ5AKLd10lA">
<body>The event shows the time point at which the action begins execution.</body>
</ownedComment>
<ownedEnd xmi:id="_MN9zAokxEeOMQ5AKLd10lA" name="executionSpecification" type="_MNt7ZYkxEeOMQ5AKLd10lA" association="_MN9zAIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MN9zA4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MN9zBIkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MN9zBYkxEeOMQ5AKLd10lA" name="A_execution_executionOccurrenceSpecification" memberEnd="_MNt7Y4kxEeOMQ5AKLd10lA _MN9zBokxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MN9zBokxEeOMQ5AKLd10lA" name="executionOccurrenceSpecification" type="_MNt7YIkxEeOMQ5AKLd10lA" association="_MN9zBYkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MN9zB4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MN9zCIkxEeOMQ5AKLd10lA" value="2"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MN9zCYkxEeOMQ5AKLd10lA" name="A_message_considerIgnoreFragment" memberEnd="_MNtUWYkxEeOMQ5AKLd10lA _MN9zCokxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MN9zCokxEeOMQ5AKLd10lA" name="considerIgnoreFragment" type="_MNtUUIkxEeOMQ5AKLd10lA" association="_MN9zCYkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MN9zC4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MN9zDIkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MN9zDYkxEeOMQ5AKLd10lA" name="A_cfragmentGate_combinedFragment" memberEnd="_MNstTIkxEeOMQ5AKLd10lA _MN9zDokxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MN9zDokxEeOMQ5AKLd10lA" name="combinedFragment" type="_MNstQIkxEeOMQ5AKLd10lA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MN9zDYkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MN9zD4kxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MN9zEIkxEeOMQ5AKLd10lA" name="A_operand_combinedFragment" memberEnd="_MNstU4kxEeOMQ5AKLd10lA _MN9zEYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MN9zEYkxEeOMQ5AKLd10lA" name="combinedFragment" type="_MNstQIkxEeOMQ5AKLd10lA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MN9zEIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MN9zEokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MN9zE4kxEeOMQ5AKLd10lA" name="A_behavior_behaviorExecutionSpecification" memberEnd="_MNsGO4kxEeOMQ5AKLd10lA _MN9zFIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MN9zFIkxEeOMQ5AKLd10lA" name="behaviorExecutionSpecification" type="_MNsGOIkxEeOMQ5AKLd10lA" association="_MN9zE4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MN9zFYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MN9zFokxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MN-aEIkxEeOMQ5AKLd10lA" name="A_action_actionExecutionSpecification" memberEnd="_MNsGNokxEeOMQ5AKLd10lA _MN-aEYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MN-aEYkxEeOMQ5AKLd10lA" name="actionExecutionSpecification" type="_MNsGMIkxEeOMQ5AKLd10lA" association="_MN-aEIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MN-aEokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MN-aE4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_skHGwGvsEdqG6fBIPwe-mw" name="Extension">
<ownedComment xmi:id="_MOCEcIkxEeOMQ5AKLd10lA" annotatedElement="_skHGwGvsEdqG6fBIPwe-mw">
<body>An extension is used to indicate that the properties of a metaclass are extended through a stereotype, and gives the ability to flexibly add (and later remove) stereotypes to classes.</body>
</ownedComment>
<ownedRule xmi:id="_MOCEcYkxEeOMQ5AKLd10lA" name="non_owned_end" constrainedElement="_skHGwGvsEdqG6fBIPwe-mw">
<ownedComment xmi:id="_MOCEcokxEeOMQ5AKLd10lA" annotatedElement="_MOCEcYkxEeOMQ5AKLd10lA">
<body>The non-owned end of an Extension is typed by a Class.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOCEc4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>metaclassEnd()->notEmpty() and metaclassEnd().type.oclIsKindOf(Class)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOCEdIkxEeOMQ5AKLd10lA" name="is_binary" constrainedElement="_skHGwGvsEdqG6fBIPwe-mw">
<ownedComment xmi:id="_MOCEdYkxEeOMQ5AKLd10lA" annotatedElement="_MOCEdIkxEeOMQ5AKLd10lA">
<body>An Extension is binary, i.e., it has only two memberEnds.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOCEdokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>memberEnd->size() = 2</body>
</specification>
</ownedRule>
<generalization xmi:id="_MOCEd4kxEeOMQ5AKLd10lA" general="_AwvxoGwNEdq7X4sGURiZYA"/>
<ownedAttribute xmi:id="_MOCEeIkxEeOMQ5AKLd10lA" name="isRequired" isReadOnly="true" isDerived="true">
<ownedComment xmi:id="_MOCEeYkxEeOMQ5AKLd10lA" annotatedElement="_MOCEeIkxEeOMQ5AKLd10lA">
<body>Indicates whether an instance of the extending stereotype must be created when an instance of the extended class is created. The attribute value is derived from the value of the lower property of the ExtensionEnd referenced by Extension::ownedEnd; a lower value of 1 means that isRequired is true, but otherwise it is false. Since the default value of ExtensionEnd::lower is 0, the default value of isRequired is false.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOCEeokxEeOMQ5AKLd10lA" name="metaclass" type="_00owUGvdEdq4DLWZOhbdEA" isReadOnly="true" isDerived="true" association="_MO_twIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOCEe4kxEeOMQ5AKLd10lA" annotatedElement="_MOCEeokxEeOMQ5AKLd10lA">
<body>References the Class that is extended through an Extension. The property is derived from the type of the memberEnd that is not the ownedEnd.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MOCrgIkxEeOMQ5AKLd10lA" name="ownedEnd" type="_2QuT0GvdEdq4DLWZOhbdEA" aggregation="composite" redefinedProperty="_MOsy1IkxEeOMQ5AKLd10lA" association="_MOTKNIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOCrgYkxEeOMQ5AKLd10lA" annotatedElement="_MOCrgIkxEeOMQ5AKLd10lA">
<body>References the end of the extension that is typed by a Stereotype.</body>
</ownedComment>
</ownedAttribute>
<ownedOperation xmi:id="_6cTFEJPtEdqpjIDDFZ2Hgw" name="getStereotype" isQuery="true">
<ownedComment xmi:id="_fNTLQOwgEdqYHf-imTcTdw" annotatedElement="_6cTFEJPtEdqpjIDDFZ2Hgw">
<body>Retrieves the stereotype that extends a metaclass through this extension.</body>
</ownedComment>
<ownedParameter xmi:id="_C7cboJPuEdqpjIDDFZ2Hgw" type="_A7vDAGv0Edq7X4sGURiZYA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_aF9tkJQGEdqpjIDDFZ2Hgw"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_aF9tkZQGEdqpjIDDFZ2Hgw" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_k1UVkJPtEdqpjIDDFZ2Hgw" name="getStereotypeEnd" isQuery="true">
<ownedComment xmi:id="_VLzRIOwgEdqYHf-imTcTdw" annotatedElement="_k1UVkJPtEdqpjIDDFZ2Hgw">
<body>Retrieves the extension end that is typed by a stereotype (as opposed to a metaclass).</body>
</ownedComment>
<ownedParameter xmi:id="_BPaXoJPuEdqpjIDDFZ2Hgw" type="_Jp_1oGveEdq4DLWZOhbdEA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_X2BEMJQGEdqpjIDDFZ2Hgw"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_X2BEMZQGEdqpjIDDFZ2Hgw" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MOCrgokxEeOMQ5AKLd10lA" name="isRequired" bodyCondition="_MOCrhIkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MOCrg4kxEeOMQ5AKLd10lA" annotatedElement="_MOCrgokxEeOMQ5AKLd10lA">
<body>The query isRequired() is true if the owned end has a multiplicity with the lower bound of 1.</body>
</ownedComment>
<ownedRule xmi:id="_MOCrhIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MOCrgokxEeOMQ5AKLd10lA _MOCEeIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOCrhYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (ownedEnd.lowerBound() = 1)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MOCrhokxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="__PcocLL2EeCBifIhhuFqZA" name="metaclass" visibility="protected" bodyCondition="_MOCriIkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MOCrh4kxEeOMQ5AKLd10lA" annotatedElement="__PcocLL2EeCBifIhhuFqZA">
<body>The query metaclass() returns the metaclass that is being extended (as opposed to the extending stereotype).</body>
</ownedComment>
<ownedRule xmi:id="_MOCriIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="__PcocLL2EeCBifIhhuFqZA _MOCEeokxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOCriYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (metaclassEnd().type.oclAsType(Class))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_FB-nwLL3EeCBifIhhuFqZA" name="result" type="_00owUGvdEdq4DLWZOhbdEA" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="_MODSkIkxEeOMQ5AKLd10lA" name="metaclassEnd" bodyCondition="_MODSkokxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MODSkYkxEeOMQ5AKLd10lA" annotatedElement="_MODSkIkxEeOMQ5AKLd10lA">
<body>The query metaclassEnd() returns the Property that is typed by a metaclass (as opposed to a stereotype).</body>
</ownedComment>
<ownedRule xmi:id="_MODSkokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MODSkIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MODSk4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (memberEnd->reject(p | ownedEnd->includes(p.oclAsType(ExtensionEnd)))->any(true))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MODSlIkxEeOMQ5AKLd10lA" name="result" type="_Jp_1oGveEdq4DLWZOhbdEA" direction="return"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_2QuT0GvdEdq4DLWZOhbdEA" name="ExtensionEnd">
<ownedComment xmi:id="_MODSlYkxEeOMQ5AKLd10lA" annotatedElement="_2QuT0GvdEdq4DLWZOhbdEA">
<body>An extension end is used to tie an extension to a stereotype when extending a metaclass.
The default multiplicity of an extension end is 0..1.</body>
</ownedComment>
<ownedRule xmi:id="_MOD5oIkxEeOMQ5AKLd10lA" name="multiplicity" constrainedElement="_2QuT0GvdEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MOD5oYkxEeOMQ5AKLd10lA" annotatedElement="_MOD5oIkxEeOMQ5AKLd10lA">
<body>The multiplicity of ExtensionEnd is 0..1 or 1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOD5ookxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(lowerBound() = 0 or lowerBound() = 1) and upperBound() = 1</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOD5o4kxEeOMQ5AKLd10lA" name="aggregation" constrainedElement="_2QuT0GvdEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MOD5pIkxEeOMQ5AKLd10lA" annotatedElement="_MOD5o4kxEeOMQ5AKLd10lA">
<body>The aggregation of an ExtensionEnd is composite.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOD5pYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>self.aggregation = AggregationKind::composite</body>
</specification>
</ownedRule>
<generalization xmi:id="_MOD5pokxEeOMQ5AKLd10lA" general="_Jp_1oGveEdq4DLWZOhbdEA"/>
<ownedAttribute xmi:id="_MOD5p4kxEeOMQ5AKLd10lA" name="lower" isDerived="true">
<ownedComment xmi:id="_MOD5qIkxEeOMQ5AKLd10lA" annotatedElement="_MOD5p4kxEeOMQ5AKLd10lA">
<body>This redefinition changes the default multiplicity of association ends, since model elements are usually extended by 0 or 1 instance of the extension stereotype.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOD5qYkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOD5qokxEeOMQ5AKLd10lA" name="type" type="_A7vDAGv0Edq7X4sGURiZYA" redefinedProperty="_MNWvA4kxEeOMQ5AKLd10lA" association="_MOTKMIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOD5q4kxEeOMQ5AKLd10lA" annotatedElement="_MOD5qokxEeOMQ5AKLd10lA">
<body>References the type of the ExtensionEnd. Note that this association restricts the possible types of an ExtensionEnd to only be Stereotypes.</body>
</ownedComment>
</ownedAttribute>
<ownedOperation xmi:id="_WLw30FYLEdqrn7iZ0eqieg" name="getLower" visibility="protected" isQuery="true">
<ownedParameter xmi:id="_ZNVLYFYLEdqrn7iZ0eqieg" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_v7CrwLGtEeCDe8CO90iVKQ" name="setLower">
<ownedParameter xmi:id="_v7CrwbGtEeCDe8CO90iVKQ" name="newLower" effect="read">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MOD5rIkxEeOMQ5AKLd10lA" name="lowerBound" bodyCondition="_MOD5rokxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MNJToIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOD5rYkxEeOMQ5AKLd10lA" annotatedElement="_MOD5rIkxEeOMQ5AKLd10lA">
<body>The query lowerBound() returns the lower bound of the multiplicity as an Integer. This is a redefinition of the default lower bound, which normally, for MultiplicityElements, evaluates to 1 if empty.</body>
</ownedComment>
<ownedRule xmi:id="_MOD5rokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MOD5rIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOD5r4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if lowerValue=null then 0 else lowerValue.integerValue() endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MOD5sIkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOD5sYkxEeOMQ5AKLd10lA"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_nDq0wJPzEdqpjIDDFZ2Hgw" name="Image">
<ownedComment xmi:id="_MOEgsIkxEeOMQ5AKLd10lA" annotatedElement="_nDq0wJPzEdqpjIDDFZ2Hgw">
<body>Physical definition of a graphical image.</body>
</ownedComment>
<generalization xmi:id="_MOEgsYkxEeOMQ5AKLd10lA" general="_kl90MGvbEdq4DLWZOhbdEA"/>
<ownedAttribute xmi:id="_N4PwQLG3EeCDe8CO90iVKQ" name="content">
<ownedComment xmi:id="_MOEgsokxEeOMQ5AKLd10lA" annotatedElement="_N4PwQLG3EeCDe8CO90iVKQ">
<body>This contains the serialization of the image according to the format. The value could represent a bitmap, image such as a GIF file, or drawing 'instructions' using a standard such as Scalable Vector Graphic (SVG) (which is XML based).</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOEgs4kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_j4KkMLG3EeCDe8CO90iVKQ" name="format">
<ownedComment xmi:id="_MOFHwIkxEeOMQ5AKLd10lA" annotatedElement="_j4KkMLG3EeCDe8CO90iVKQ">
<body>This indicates the format of the content, which is how the string content should be interpreted. The following values are reserved: SVG, GIF, PNG, JPG, WMF, EMF, BMP. In addition the prefix 'MIME: ' is also reserved. This option can be used as an alternative to express the reserved values above, for example &quot;SVG&quot; could instead be expressed as &quot;MIME: image/svg+xml&quot;.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOFHwYkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_ZCc-4LG3EeCDe8CO90iVKQ" name="location">
<ownedComment xmi:id="_MOFHwokxEeOMQ5AKLd10lA" annotatedElement="_ZCc-4LG3EeCDe8CO90iVKQ">
<body>This contains a location that can be used by a tool to locate the image as an alternative to embedding it in the stereotype.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOFHw4kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_NVhqMGv0Edq7X4sGURiZYA" name="Model">
<ownedComment xmi:id="_MOFu0IkxEeOMQ5AKLd10lA" annotatedElement="_NVhqMGv0Edq7X4sGURiZYA">
<body>A model captures a view of a physical system. It is an abstraction of the physical system, with a certain purpose. This purpose determines what is to be included in the model and what is irrelevant. Thus the model completely describes those aspects of the physical system that are relevant to the purpose of the model, at the appropriate level of detail.</body>
</ownedComment>
<generalization xmi:id="_MOFu0YkxEeOMQ5AKLd10lA" general="_-cvRAGvzEdq7X4sGURiZYA"/>
<ownedAttribute xmi:id="_vyLfILG3EeCDe8CO90iVKQ" name="viewpoint">
<ownedComment xmi:id="_MOFu0okxEeOMQ5AKLd10lA" annotatedElement="_vyLfILG3EeCDe8CO90iVKQ">
<body>The name of the viewpoint that is expressed by a model (this name may refer to a profile definition).</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOFu04kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedOperation xmi:id="_9nl2EGwREdq14q0ETb1t3g" name="isMetamodel" isQuery="true">
<ownedComment xmi:id="_9s0W0OwiEdqYHf-imTcTdw" annotatedElement="_9nl2EGwREdq14q0ETb1t3g">
<body>Determines whether this model is a metamodel.</body>
</ownedComment>
<ownedParameter xmi:id="__8c0oGwREdq14q0ETb1t3g" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_-cvRAGvzEdq7X4sGURiZYA" name="Package">
<ownedComment xmi:id="_MOGV4IkxEeOMQ5AKLd10lA" annotatedElement="_-cvRAGvzEdq7X4sGURiZYA">
<body>A package can have one or more profile applications to indicate which profiles have been applied. Because a profile is a package, it is possible to apply a profile not only to packages, but also to profiles.
Package specializes TemplateableElement and PackageableElement specializes ParameterableElement to specify that a package can be used as a template and a PackageableElement as a template parameter.
A package is used to group elements, and provides a namespace for the grouped elements.</body>
</ownedComment>
<ownedRule xmi:id="_MOGV4YkxEeOMQ5AKLd10lA" name="elements_public_or_private" constrainedElement="_-cvRAGvzEdq7X4sGURiZYA">
<ownedComment xmi:id="_MOGV4okxEeOMQ5AKLd10lA" annotatedElement="_MOGV4YkxEeOMQ5AKLd10lA">
<body>If an element that is owned by a package has visibility, it is public or private.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOGV44kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>packagedElement->forAll(e | e.visibility&lt;> null implies e.visibility = VisibilityKind::public or e.visibility = VisibilityKind::private)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MOGV5IkxEeOMQ5AKLd10lA" general="_jKxnwGwLEdq7X4sGURiZYA"/>
<generalization xmi:id="_MOG88IkxEeOMQ5AKLd10lA" general="_MNUSwIkxEeOMQ5AKLd10lA"/>
<generalization xmi:id="_MOG88YkxEeOMQ5AKLd10lA" general="_ZiwkoGwLEdq7X4sGURiZYA"/>
<ownedAttribute xmi:id="_MOG88okxEeOMQ5AKLd10lA" name="URI">
<ownedComment xmi:id="_MOG884kxEeOMQ5AKLd10lA" annotatedElement="_MOG88okxEeOMQ5AKLd10lA">
<body>Provides an identifier for the package that can be used for many purposes. A URI is the universally unique identification of the package following the IETF URI specification, RFC 2396 http://www.ietf.org/rfc/rfc2396.txt and it must comply with those syntax rules.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOG89IkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOG89YkxEeOMQ5AKLd10lA" name="nestedPackage" type="_-cvRAGvzEdq7X4sGURiZYA" aggregation="composite" isDerived="true" subsettedProperty="_MOHkCIkxEeOMQ5AKLd10lA" association="_MOSjIYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOG89okxEeOMQ5AKLd10lA" annotatedElement="_MOG89YkxEeOMQ5AKLd10lA">
<body>References the packaged elements that are Packages.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOG894kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOG8-IkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_XSjCgLbQEeCRxrN1JUGuxA" name="nestingPackage" type="_-cvRAGvzEdq7X4sGURiZYA" subsettedProperty="_MOR8GIkxEeOMQ5AKLd10lA _1vzv0LbIEeCRxrN1JUGuxA" association="_MOSjIYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOG8-YkxEeOMQ5AKLd10lA" annotatedElement="_XSjCgLbQEeCRxrN1JUGuxA">
<body>References the Package that owns this Package.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOG8-okxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOG8-4kxEeOMQ5AKLd10lA" name="ownedStereotype" type="_A7vDAGv0Edq7X4sGURiZYA" isReadOnly="true" aggregation="composite" isDerived="true" subsettedProperty="_MOHkCIkxEeOMQ5AKLd10lA" association="_MOSjJIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOG8_IkxEeOMQ5AKLd10lA" annotatedElement="_MOG8-4kxEeOMQ5AKLd10lA">
<body>References the Stereotypes that are owned by the Package.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOG8_YkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOG8_okxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOHkAIkxEeOMQ5AKLd10lA" name="ownedType" type="_ynRtoGvtEdqG6fBIPwe-mw" aggregation="composite" isDerived="true" subsettedProperty="_MOHkCIkxEeOMQ5AKLd10lA" association="_MOSjI4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOHkAYkxEeOMQ5AKLd10lA" annotatedElement="_MOHkAIkxEeOMQ5AKLd10lA">
<body>References the packaged elements that are Types.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOHkAokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOHkA4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOHkBIkxEeOMQ5AKLd10lA" name="packageMerge" type="_MOMcgIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MNcOlIkxEeOMQ5AKLd10lA _GDD2YAtAEeGcpbeCPJfCmw" association="_MOSjIIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOHkBYkxEeOMQ5AKLd10lA" annotatedElement="_MOHkBIkxEeOMQ5AKLd10lA">
<body>References the PackageMerges that are owned by this Package.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOHkBokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOHkB4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOHkCIkxEeOMQ5AKLd10lA" name="packagedElement" type="_jKxnwGwLEdq7X4sGURiZYA" aggregation="composite" subsettedProperty="_MNQBWIkxEeOMQ5AKLd10lA" association="_MOR8F4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOHkCYkxEeOMQ5AKLd10lA" annotatedElement="_MOHkCIkxEeOMQ5AKLd10lA">
<body>Specifies the packageable elements that are owned by this Package.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOHkCokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOHkC4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOHkDIkxEeOMQ5AKLd10lA" name="profileApplication" type="_uY5yQGv5Edq7X4sGURiZYA" aggregation="composite" subsettedProperty="_MNcOlIkxEeOMQ5AKLd10lA _GDD2YAtAEeGcpbeCPJfCmw" association="_MOSjIokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOHkDYkxEeOMQ5AKLd10lA" annotatedElement="_MOHkDIkxEeOMQ5AKLd10lA">
<body>References the ProfileApplications that indicate which profiles have been applied to the Package.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOHkDokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOHkD4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedOperation xmi:id="_r--GcGv5Edq7X4sGURiZYA" name="applyProfile">
<ownedComment xmi:id="_pfXbgOwhEdqYHf-imTcTdw" annotatedElement="_r--GcGv5Edq7X4sGURiZYA">
<body>Applies the current definition of the specified profile to this package and automatically applies required stereotypes in the profile to elements within this package's namespace hieararchy. If a different definition is already applied, automatically migrates any associated stereotype values on a &quot;best effort&quot; basis (matching classifiers and structural features by name).</body>
</ownedComment>
<ownedParameter xmi:id="_w2ZvcGv5Edq7X4sGURiZYA" direction="return">
<type xmi:type="uml:Class" href="Ecore.uml#_SeWijsX_EduPJbEsMYXjUQ"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ObBOMHF8EdqziYxiZo0YtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ObBOMXF8EdqziYxiZo0YtA" value="*"/>
</ownedParameter>
<ownedParameter xmi:id="_xMwZ8Gv5Edq7X4sGURiZYA" name="profile" type="__pew8GvzEdq7X4sGURiZYA" effect="read">
<ownedComment xmi:id="_KbQ68PIEEdulR8T2OJRyFQ" annotatedElement="_xMwZ8Gv5Edq7X4sGURiZYA">
<body>The profile to apply.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_4JyAAGwFEdq7X4sGURiZYA" name="createOwnedClass">
<ownedComment xmi:id="_RcX8kOwhEdqYHf-imTcTdw" annotatedElement="_4JyAAGwFEdq7X4sGURiZYA">
<body>Creates a(n) (abstract) class with the specified name as an owned type of this package.</body>
</ownedComment>
<ownedParameter xmi:id="_94M7YGwFEdq7X4sGURiZYA" type="_00owUGvdEdq4DLWZOhbdEA" direction="return"/>
<ownedParameter xmi:id="_BGSA8GwGEdq7X4sGURiZYA" name="name" effect="read">
<ownedComment xmi:id="_OgV58PIEEdulR8T2OJRyFQ" annotatedElement="_BGSA8GwGEdq7X4sGURiZYA">
<body>The name for the new class, or null.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
<ownedParameter xmi:id="_-i0lsGwFEdq7X4sGURiZYA" name="isAbstract" effect="read">
<ownedComment xmi:id="_MPDMwPIEEdulR8T2OJRyFQ" annotatedElement="_-i0lsGwFEdq7X4sGURiZYA">
<body>Whether the new class should be abstract.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_Fqo88GwGEdq7X4sGURiZYA" name="createOwnedEnumeration">
<ownedComment xmi:id="_aE54oOwhEdqYHf-imTcTdw" annotatedElement="_Fqo88GwGEdq7X4sGURiZYA">
<body>Creates a enumeration with the specified name as an owned type of this package.</body>
</ownedComment>
<ownedParameter xmi:id="_MMBmUGwGEdq7X4sGURiZYA" type="_I6N3UGwGEdq7X4sGURiZYA" direction="return"/>
<ownedParameter xmi:id="_Mz9wEGwGEdq7X4sGURiZYA" name="name" effect="read">
<ownedComment xmi:id="_UWEXMPIEEdulR8T2OJRyFQ" annotatedElement="_Mz9wEGwGEdq7X4sGURiZYA">
<body>The name for the new enumeration, or null.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_SwrbIHFhEdqziYxiZo0YtA" name="createOwnedInterface">
<ownedComment xmi:id="_ecTWsOwhEdqYHf-imTcTdw" annotatedElement="_SwrbIHFhEdqziYxiZo0YtA">
<body>Creates an interface with the specified name as an owned type of this package.</body>
</ownedComment>
<ownedParameter xmi:id="_SwrbIXFhEdqziYxiZo0YtA" type="_8Ugn8GvtEdqG6fBIPwe-mw" direction="return"/>
<ownedParameter xmi:id="_SwrbInFhEdqziYxiZo0YtA" name="name" effect="read">
<ownedComment xmi:id="_YHUbQPIEEdulR8T2OJRyFQ" annotatedElement="_SwrbInFhEdqziYxiZo0YtA">
<body>The name for the new interface, or null.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_SSSZ8GwGEdq7X4sGURiZYA" name="createOwnedPrimitiveType">
<ownedComment xmi:id="_bT4NMOwhEdqYHf-imTcTdw" annotatedElement="_SSSZ8GwGEdq7X4sGURiZYA">
<body>Creates a primitive type with the specified name as an owned type of this package.</body>
</ownedComment>
<ownedParameter xmi:id="_Y8BHAGwGEdq7X4sGURiZYA" type="_V6vuYGwGEdq7X4sGURiZYA" direction="return"/>
<ownedParameter xmi:id="_ZY7FcGwGEdq7X4sGURiZYA" name="name" effect="read">
<ownedComment xmi:id="_ZtP3QPIEEdulR8T2OJRyFQ" annotatedElement="_ZY7FcGwGEdq7X4sGURiZYA">
<body>The name for the new primitive type, or null.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_senckGwJEdq7X4sGURiZYA" name="createOwnedStereotype">
<ownedComment xmi:id="_VxTDgOwjEdqYHf-imTcTdw" annotatedElement="_senckGwJEdq7X4sGURiZYA">
<body>Creates a(n) (abstract) stereotype with the specified name as an owned stereotype of this profile.</body>
</ownedComment>
<ownedParameter xmi:id="_upCswGwJEdq7X4sGURiZYA" type="_A7vDAGv0Edq7X4sGURiZYA" direction="return"/>
<ownedParameter xmi:id="_xOvjsGwJEdq7X4sGURiZYA" name="name" effect="read">
<ownedComment xmi:id="_9ZmmAPIEEdulR8T2OJRyFQ" annotatedElement="_xOvjsGwJEdq7X4sGURiZYA">
<body>The name for the new stereotype, or null.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
<ownedParameter xmi:id="_vJOosGwJEdq7X4sGURiZYA" name="isAbstract" effect="read">
<ownedComment xmi:id="_73tVcPIEEdulR8T2OJRyFQ" annotatedElement="_vJOosGwJEdq7X4sGURiZYA">
<body>Whether the new stereotype should be abstract.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_kCeTgGwFEdq7X4sGURiZYA" name="getAllAppliedProfiles" isQuery="true">
<ownedComment xmi:id="_KHdvEOwiEdqYHf-imTcTdw" annotatedElement="_kCeTgGwFEdq7X4sGURiZYA">
<body>Retrieves all the profiles that are applied to this package, including profiles applied to its nesting package(s).</body>
</ownedComment>
<ownedParameter xmi:id="_kCeTgWwFEdq7X4sGURiZYA" type="__pew8GvzEdq7X4sGURiZYA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_kCeTg2wFEdq7X4sGURiZYA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_kCeTgmwFEdq7X4sGURiZYA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_kxh7IG10EdqniMBnIUw7ig" name="getAllProfileApplications" isQuery="true">
<ownedComment xmi:id="_pMBMQOwiEdqYHf-imTcTdw" annotatedElement="_kxh7IG10EdqniMBnIUw7ig">
<body>Retrieves all the profile applications for this package, including profile applications for its nesting package(s).</body>
</ownedComment>
<ownedParameter xmi:id="_pW8AAG10EdqniMBnIUw7ig" type="_uY5yQGv5Edq7X4sGURiZYA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_rvqx8G10EdqniMBnIUw7ig"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_rvqx8W10EdqniMBnIUw7ig" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_tasT4G11EdqniMBnIUw7ig" name="getAppliedProfile" isQuery="true">
<ownedComment xmi:id="_SSMU0OwiEdqYHf-imTcTdw" annotatedElement="_tasT4G11EdqniMBnIUw7ig">
<body>Retrieves the profile with the specified qualified name that is applied to this package, or null if no such profile is applied.</body>
</ownedComment>
<ownedParameter xmi:id="_wSH0AG11EdqniMBnIUw7ig" type="__pew8GvzEdq7X4sGURiZYA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_yo7TUG11EdqniMBnIUw7ig"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yo7TUW11EdqniMBnIUw7ig" value="1"/>
</ownedParameter>
<ownedParameter xmi:id="_2bXqMG11EdqniMBnIUw7ig" name="qualifiedName" effect="read">
<ownedComment xmi:id="_c7n3wPIEEdulR8T2OJRyFQ" annotatedElement="_2bXqMG11EdqniMBnIUw7ig">
<body>The qualified name of the applied profile to retrieve.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_7MPYMG11EdqniMBnIUw7ig" name="getAppliedProfile" isQuery="true">
<ownedComment xmi:id="_fm_LsOwiEdqYHf-imTcTdw" annotatedElement="_7MPYMG11EdqniMBnIUw7ig">
<body>Retrieves the profile with the specified qualified name that is applied to this package or any of its nesting packages (if indicated), or null if no such profile is applied.</body>
</ownedComment>
<ownedParameter xmi:id="_7MPYMW11EdqniMBnIUw7ig" type="__pew8GvzEdq7X4sGURiZYA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7MPYM211EdqniMBnIUw7ig"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7MPYMm11EdqniMBnIUw7ig" value="1"/>
</ownedParameter>
<ownedParameter xmi:id="_7MPYNG11EdqniMBnIUw7ig" name="qualifiedName" effect="read">
<ownedComment xmi:id="_fzp00PIEEdulR8T2OJRyFQ" annotatedElement="_7MPYNG11EdqniMBnIUw7ig">
<body>The qualified name of the applied profile to retrieve.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
<ownedParameter xmi:id="_8HGd8G11EdqniMBnIUw7ig" name="recurse" effect="read">
<ownedComment xmi:id="_j8mnMPIEEdulR8T2OJRyFQ" annotatedElement="_8HGd8G11EdqniMBnIUw7ig">
<body>Whether to look in nesting packages.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_ZCKeMGv5Edq7X4sGURiZYA" name="getAppliedProfiles" isQuery="true">
<ownedComment xmi:id="_G2jX8OwiEdqYHf-imTcTdw" annotatedElement="_ZCKeMGv5Edq7X4sGURiZYA">
<body>Retrieves the profiles that are applied to this package.</body>
</ownedComment>
<ownedParameter xmi:id="_cExTkGv5Edq7X4sGURiZYA" type="__pew8GvzEdq7X4sGURiZYA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_eExccGv5Edq7X4sGURiZYA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_eExccWv5Edq7X4sGURiZYA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_FOcTIKO_Edqi_5gqUMOQtA" name="getProfileApplication" isQuery="true">
<ownedComment xmi:id="_vvVvUOwiEdqYHf-imTcTdw" annotatedElement="_FOcTIKO_Edqi_5gqUMOQtA">
<body>Retrieves the application of the specified profile to this package, or null if no such profile is applied.</body>
</ownedComment>
<ownedParameter xmi:id="_FOcTIaO_Edqi_5gqUMOQtA" type="_uY5yQGv5Edq7X4sGURiZYA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FOcTI6O_Edqi_5gqUMOQtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FOcTIqO_Edqi_5gqUMOQtA" value="1"/>
</ownedParameter>
<ownedParameter xmi:id="_FOcTJKO_Edqi_5gqUMOQtA" name="profile" type="__pew8GvzEdq7X4sGURiZYA" effect="read">
<ownedComment xmi:id="_nAG0cPIEEdulR8T2OJRyFQ" annotatedElement="_FOcTJKO_Edqi_5gqUMOQtA">
<body>The profile whose application to retrieve.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_QaTt4G11EdqniMBnIUw7ig" name="getProfileApplication" isQuery="true">
<ownedComment xmi:id="_wmn8oOwiEdqYHf-imTcTdw" annotatedElement="_QaTt4G11EdqniMBnIUw7ig">
<body>Retrieves the application of the specified profile to this package or any of its nesting packages (if indicated), or null if no such profile is applied.</body>
</ownedComment>
<ownedParameter xmi:id="_QaTt4W11EdqniMBnIUw7ig" type="_uY5yQGv5Edq7X4sGURiZYA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QaTt4211EdqniMBnIUw7ig"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QaTt4m11EdqniMBnIUw7ig" value="1"/>
</ownedParameter>
<ownedParameter xmi:id="_rYVqgG2JEdq0sOo3CGeQEg" name="profile" type="__pew8GvzEdq7X4sGURiZYA" effect="read">
<ownedComment xmi:id="_pERroPIEEdulR8T2OJRyFQ" annotatedElement="_rYVqgG2JEdq0sOo3CGeQEg">
<body>The profile whose application to retrieve.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="_RiuHcG11EdqniMBnIUw7ig" name="recurse" effect="read">
<ownedComment xmi:id="_q8YcwPIEEdulR8T2OJRyFQ" annotatedElement="_RiuHcG11EdqniMBnIUw7ig">
<body>Whether to look in nesting packages.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_NrOGAIbSEdqhgMOAOWpjfQ" name="isModelLibrary" isQuery="true">
<ownedComment xmi:id="_4KKmkOwiEdqYHf-imTcTdw" annotatedElement="_NrOGAIbSEdqhgMOAOWpjfQ">
<body>Determines whether this package is a model library.</body>
</ownedComment>
<ownedParameter xmi:id="_NrOGAYbSEdqhgMOAOWpjfQ" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_z4Q98Gv5Edq7X4sGURiZYA" name="isProfileApplied" isQuery="true">
<ownedComment xmi:id="_h951MOwhEdqYHf-imTcTdw" annotatedElement="_z4Q98Gv5Edq7X4sGURiZYA">
<body>Determines whether the specified profile is applied to this package.</body>
</ownedComment>
<ownedParameter xmi:id="_19CSEGv5Edq7X4sGURiZYA" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_2TitkGv5Edq7X4sGURiZYA" name="profile" type="__pew8GvzEdq7X4sGURiZYA" effect="read">
<ownedComment xmi:id="_sf7TIPIEEdulR8T2OJRyFQ" annotatedElement="_2TitkGv5Edq7X4sGURiZYA">
<body>The profile in question.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_448CgGv5Edq7X4sGURiZYA" name="unapplyProfile">
<ownedComment xmi:id="_4cT78OwhEdqYHf-imTcTdw" annotatedElement="_448CgGv5Edq7X4sGURiZYA">
<body>Unapplies the specified profile from this package and automatically unapplies stereotypes in the profile from elements within this package's namespace hieararchy.</body>
</ownedComment>
<ownedParameter xmi:id="_6yryYGv5Edq7X4sGURiZYA" direction="return">
<type xmi:type="uml:Class" href="Ecore.uml#_SeWijsX_EduPJbEsMYXjUQ"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ZvqLMHF8EdqziYxiZo0YtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ZvqLMXF8EdqziYxiZo0YtA" value="*"/>
</ownedParameter>
<ownedParameter xmi:id="_7KhqoGv5Edq7X4sGURiZYA" name="profile" type="__pew8GvzEdq7X4sGURiZYA" effect="read">
<ownedComment xmi:id="_ubdLsPIEEdulR8T2OJRyFQ" annotatedElement="_7KhqoGv5Edq7X4sGURiZYA">
<body>The profile to unapply.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MOILEIkxEeOMQ5AKLd10lA" name="allApplicableStereotypes" bodyCondition="_MOILEokxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MOILEYkxEeOMQ5AKLd10lA" annotatedElement="_MOILEIkxEeOMQ5AKLd10lA">
<body>The query allApplicableStereotypes() returns all the directly or indirectly owned stereotypes, including stereotypes contained in sub-profiles.</body>
</ownedComment>
<ownedRule xmi:id="_MOILEokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MOILEIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOILE4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (let ownedPackages : Bag(Package) = ownedMember->select(oclIsKindOf(Package))->collect(oclAsType(Package)) in&#xD;
ownedStereotype->union(ownedPackages.allApplicableStereotypes())->flatten()->asSet()&#xD;
)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MOILFIkxEeOMQ5AKLd10lA" name="result" type="_A7vDAGv0Edq7X4sGURiZYA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOILFYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOILFokxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MOILF4kxEeOMQ5AKLd10lA" name="containingProfile" bodyCondition="_MOILGYkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MOILGIkxEeOMQ5AKLd10lA" annotatedElement="_MOILF4kxEeOMQ5AKLd10lA">
<body>The query containingProfile() returns the closest profile directly or indirectly containing this package (or this package itself, if it is a profile).</body>
</ownedComment>
<ownedRule xmi:id="_MOILGYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MOILF4kxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOILGokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if self.oclIsKindOf(Profile) then &#xD;
self.oclAsType(Profile)&#xD;
else&#xD;
self.namespace.oclAsType(Package).containingProfile()&#xD;
endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MOILG4kxEeOMQ5AKLd10lA" name="result" type="__pew8GvzEdq7X4sGURiZYA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOILHIkxEeOMQ5AKLd10lA"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MOILHYkxEeOMQ5AKLd10lA" name="makesVisible" bodyCondition="_MOILIYkxEeOMQ5AKLd10lA" isQuery="true" precondition="_MOILH4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOILHokxEeOMQ5AKLd10lA" annotatedElement="_MOILHYkxEeOMQ5AKLd10lA">
<body>The query makesVisible() defines whether a Package makes an element visible outside itself. Elements with no visibility and elements with public visibility are made visible.</body>
</ownedComment>
<ownedRule xmi:id="_MOILH4kxEeOMQ5AKLd10lA" name="pre" constrainedElement="_MOILHYkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOILIIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>member->includes(el)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOILIYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MOILHYkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOILIokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (ownedMember->includes(el) or
(elementImport->select(ei|ei.importedElement = VisibilityKind::public)->collect(importedElement.oclAsType(NamedElement))->includes(el)) or
(packageImport->select(visibility = VisibilityKind::public)->collect(importedPackage.member->includes(el))->notEmpty()))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MOILI4kxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_MOILJIkxEeOMQ5AKLd10lA" name="el" type="_csVgUGvtEdqG6fBIPwe-mw"/>
</ownedOperation>
<ownedOperation xmi:id="_MOIyIIkxEeOMQ5AKLd10lA" name="mustBeOwned" bodyCondition="_MOIyIokxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MNDNB4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOIyIYkxEeOMQ5AKLd10lA" annotatedElement="_MOIyIIkxEeOMQ5AKLd10lA">
<body>The query mustBeOwned() indicates whether elements of this type must have an owner.</body>
</ownedComment>
<ownedRule xmi:id="_MOIyIokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MOIyIIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOIyI4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (false)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MOIyJIkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="__wMTILL4EeCBifIhhuFqZA" name="nestedPackage" visibility="protected" bodyCondition="_MOIyJokxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MOIyJYkxEeOMQ5AKLd10lA" annotatedElement="__wMTILL4EeCBifIhhuFqZA">
<body>Derivation for Package::/nestedPackage</body>
</ownedComment>
<ownedRule xmi:id="_MOIyJokxEeOMQ5AKLd10lA" name="spec" constrainedElement="__wMTILL4EeCBifIhhuFqZA _MOG89YkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOIyJ4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (packagedElement->select(oclIsKindOf(Package))->collect(oclAsType(Package))->asSet())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_EbpVoLL5EeCBifIhhuFqZA" name="result" type="_-cvRAGvzEdq7X4sGURiZYA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOIyKIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOIyKYkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_kWuyMLL5EeCBifIhhuFqZA" name="ownedStereotype" visibility="protected" bodyCondition="_MOJZMYkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MOJZMIkxEeOMQ5AKLd10lA" annotatedElement="_kWuyMLL5EeCBifIhhuFqZA">
<body>Derivation for Package::/ownedStereotype</body>
</ownedComment>
<ownedRule xmi:id="_MOJZMYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_kWuyMLL5EeCBifIhhuFqZA _MOG8-4kxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOJZMokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (packagedElement->select(oclIsKindOf(Stereotype))->collect(oclAsType(Stereotype))->asSet())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_mRoYoLL5EeCBifIhhuFqZA" name="result" type="_A7vDAGv0Edq7X4sGURiZYA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOJZM4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOJZNIkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_yfRaMLL5EeCBifIhhuFqZA" name="ownedType" visibility="protected" bodyCondition="_MOKAQIkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MOJZNYkxEeOMQ5AKLd10lA" annotatedElement="_yfRaMLL5EeCBifIhhuFqZA">
<body>Derivation for Package::/ownedType</body>
</ownedComment>
<ownedRule xmi:id="_MOKAQIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_yfRaMLL5EeCBifIhhuFqZA _MOHkAIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOKAQYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (packagedElement->select(oclIsKindOf(Type))->collect(oclAsType(Type))->asSet())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_0NLGcLL5EeCBifIhhuFqZA" name="result" type="_ynRtoGvtEdqG6fBIPwe-mw" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOKAQokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOKAQ4kxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MOKnUIkxEeOMQ5AKLd10lA" name="visibleMembers" bodyCondition="_MOKnUokxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MOKnUYkxEeOMQ5AKLd10lA" annotatedElement="_MOKnUIkxEeOMQ5AKLd10lA">
<body>The query visibleMembers() defines which members of a Package can be accessed outside it.</body>
</ownedComment>
<ownedRule xmi:id="_MOKnUokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MOKnUIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOKnU4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (member->select( m | m.oclIsKindOf(PackageableElement) and self.makesVisible(m))->collect(oclAsType(PackageableElement))->asSet())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MOKnVIkxEeOMQ5AKLd10lA" name="result" type="_jKxnwGwLEdq7X4sGURiZYA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOKnVYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOKnVokxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MOMcgIkxEeOMQ5AKLd10lA" name="PackageMerge">
<ownedComment xmi:id="_MOMcgYkxEeOMQ5AKLd10lA" annotatedElement="_MOMcgIkxEeOMQ5AKLd10lA">
<body>A package merge defines how the contents of one package are extended by the contents of another package.</body>
</ownedComment>
<generalization xmi:id="_MOMcgokxEeOMQ5AKLd10lA" general="_JBgfoKPAEdqi_5gqUMOQtA"/>
<ownedAttribute xmi:id="_MOMcg4kxEeOMQ5AKLd10lA" name="mergedPackage" type="_-cvRAGvzEdq7X4sGURiZYA" subsettedProperty="_MNB-44kxEeOMQ5AKLd10lA" association="_MOR8E4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOMchIkxEeOMQ5AKLd10lA" annotatedElement="_MOMcg4kxEeOMQ5AKLd10lA">
<body>References the Package that is to be merged with the receiving package of the PackageMerge.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MOMchYkxEeOMQ5AKLd10lA" name="receivingPackage" type="_-cvRAGvzEdq7X4sGURiZYA" subsettedProperty="_MNB-4IkxEeOMQ5AKLd10lA _N3hRMAtAEeGcpbeCPJfCmw" association="_MOSjIIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOMchokxEeOMQ5AKLd10lA" annotatedElement="_MOMchYkxEeOMQ5AKLd10lA">
<body>References the Package that is being extended with the contents of the merged package of the PackageMerge.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="__pew8GvzEdq7X4sGURiZYA" name="Profile">
<ownedComment xmi:id="_MOMch4kxEeOMQ5AKLd10lA" annotatedElement="__pew8GvzEdq7X4sGURiZYA">
<body>A profile defines limited extensions to a reference metamodel with the purpose of adapting the metamodel to a specific platform or domain.</body>
</ownedComment>
<ownedRule xmi:id="_MOMciIkxEeOMQ5AKLd10lA" name="metaclass_reference_not_specialized" constrainedElement="__pew8GvzEdq7X4sGURiZYA">
<ownedComment xmi:id="_MOMciYkxEeOMQ5AKLd10lA" annotatedElement="_MOMciIkxEeOMQ5AKLd10lA">
<body>An element imported as a metaclassReference is not specialized or generalized in a Profile.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOMciokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>metaclassReference.importedElement->&#xD;
select(c | c.oclIsKindOf(Classifier) and&#xD;
(c.oclAsType(Classifier).allParents()->collect(namespace)->includes(self)))->isEmpty()&#xD;
and &#xD;
packagedElement->&#xD;
select(oclIsKindOf(Classifier))->collect(oclAsType(Classifier).allParents())->&#xD;
intersection(metaclassReference.importedElement->select(oclIsKindOf(Classifier))->collect(oclAsType(Classifier)))->isEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOMci4kxEeOMQ5AKLd10lA" name="references_same_metamodel" constrainedElement="__pew8GvzEdq7X4sGURiZYA">
<ownedComment xmi:id="_MOMcjIkxEeOMQ5AKLd10lA" annotatedElement="_MOMci4kxEeOMQ5AKLd10lA">
<body>All elements imported either as metaclassReferences or through metamodelReferences are members of the same base reference metamodel.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOMcjYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>metamodelReference.importedPackage.elementImport.importedElement.allOwningPackages()->&#xD;
union(metaclassReference.importedElement.allOwningPackages() )->notEmpty()</body>
</specification>
</ownedRule>
<generalization xmi:id="_MOMcjokxEeOMQ5AKLd10lA" general="_-cvRAGvzEdq7X4sGURiZYA"/>
<ownedAttribute xmi:id="_MOMcj4kxEeOMQ5AKLd10lA" name="metaclassReference" type="_RPl78GwIEdq7X4sGURiZYA" aggregation="composite" subsettedProperty="_MNPaS4kxEeOMQ5AKLd10lA" association="_MORVCokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOMckIkxEeOMQ5AKLd10lA" annotatedElement="_MOMcj4kxEeOMQ5AKLd10lA">
<body>References a metaclass that may be extended.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOMckYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOMckokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MONDkIkxEeOMQ5AKLd10lA" name="metamodelReference" type="_SnNPIGwIEdq7X4sGURiZYA" aggregation="composite" subsettedProperty="_MNQBYIkxEeOMQ5AKLd10lA" association="_MOR8EIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MONDkYkxEeOMQ5AKLd10lA" annotatedElement="_MONDkIkxEeOMQ5AKLd10lA">
<body>References a package containing (directly or indirectly) metaclasses that may be extended.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MONDkokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MONDk4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedOperation xmi:id="_2QKPIGwJEdq7X4sGURiZYA" name="create">
<ownedComment xmi:id="_QbUdUOwjEdqYHf-imTcTdw" annotatedElement="_2QKPIGwJEdq7X4sGURiZYA">
<body>Creates and returns an instance of (the Ecore representation of) the specified classifier defined in this profile.</body>
</ownedComment>
<ownedParameter xmi:id="_9o-PwGwJEdq7X4sGURiZYA" direction="return">
<type xmi:type="uml:Class" href="Ecore.uml#_SeWijsX_EduPJbEsMYXjUQ"/>
</ownedParameter>
<ownedParameter xmi:id="_-se7MGwJEdq7X4sGURiZYA" name="classifier" type="_6UV2QGwJEdq7X4sGURiZYA" effect="read">
<ownedComment xmi:id="_6Ay3IPIEEdulR8T2OJRyFQ" annotatedElement="_-se7MGwJEdq7X4sGURiZYA">
<body>The classifier of which to create an instance.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_GdjgQGwJEdq7X4sGURiZYA" name="define">
<ownedComment xmi:id="_gx0xsOwjEdqYHf-imTcTdw" annotatedElement="_GdjgQGwJEdq7X4sGURiZYA">
<body>Defines this profile by (re)creating Ecore representations of its current contents.</body>
</ownedComment>
<ownedParameter xmi:id="_JO2EsGwgEdqHKKVoxc0dlA" direction="return">
<type xmi:type="uml:Class" href="Ecore.uml#_SeWjPsX_EduPJbEsMYXjUQ"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bctjUGwgEdqHKKVoxc0dlA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bctjUWwgEdqHKKVoxc0dlA" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_M-uloNrsEduJovxV1TmzsQ" name="define">
<ownedComment xmi:id="_-vR1oNrxEduJovxV1TmzsQ" annotatedElement="_M-uloNrsEduJovxV1TmzsQ">
<body>Defines this profile by (re)creating Ecore representations of its current contents, using the specified options, diagnostics, and context.</body>
</ownedComment>
<ownedParameter xmi:id="_Rn2F0NrsEduJovxV1TmzsQ" name="" direction="return">
<type xmi:type="uml:Class" href="Ecore.uml#_SeWjPsX_EduPJbEsMYXjUQ"/>
</ownedParameter>
<ownedParameter xmi:id="_cg7vQNrsEduJovxV1TmzsQ" name="options" type="_HmwyNtrxEduW-vlXzvw90A">
<ownedComment xmi:id="_OYzSEPIFEdulR8T2OJRyFQ" annotatedElement="_cg7vQNrsEduJovxV1TmzsQ">
<body>The options to use.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="_aE-DINrsEduJovxV1TmzsQ" name="diagnostics">
<ownedComment xmi:id="_RGiqsPIFEdulR8T2OJRyFQ" annotatedElement="_aE-DINrsEduJovxV1TmzsQ">
<body>The chain of diagnostics to which problems are to be appended.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="Ecore.uml#_SeWkTcX_EduPJbEsMYXjUQ"/>
</ownedParameter>
<ownedParameter xmi:id="_dHhOINrsEduJovxV1TmzsQ" name="context" type="_HmwyMtrxEduW-vlXzvw90A">
<ownedComment xmi:id="_TxUO4PIFEdulR8T2OJRyFQ" annotatedElement="_dHhOINrsEduJovxV1TmzsQ">
<body>The cache of context-specific information.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_LLkQEGwgEdqHKKVoxc0dlA" name="getDefinition" isQuery="true">
<ownedComment xmi:id="_nSm-IOwjEdqYHf-imTcTdw" annotatedElement="_LLkQEGwgEdqHKKVoxc0dlA">
<body>Retrieves the current definition (Ecore representation) of this profile.</body>
</ownedComment>
<ownedParameter xmi:id="_P0QScGwgEdqHKKVoxc0dlA" direction="return">
<type xmi:type="uml:Class" href="Ecore.uml#_SeWjPsX_EduPJbEsMYXjUQ"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dKYmEGwgEdqHKKVoxc0dlA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dKYmEWwgEdqHKKVoxc0dlA" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_nFBqQGwgEdqHKKVoxc0dlA" name="getDefinition" isQuery="true">
<ownedComment xmi:id="_qItBgOwjEdqYHf-imTcTdw" annotatedElement="_nFBqQGwgEdqHKKVoxc0dlA">
<body>Retrieves the current definition (Ecore representation) of the specified named element in this profile.</body>
</ownedComment>
<ownedParameter xmi:id="_nFBqQWwgEdqHKKVoxc0dlA" direction="return">
<type xmi:type="uml:Class" href="Ecore.uml#_SeWifsX_EduPJbEsMYXjUQ"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nFBqQ2wgEdqHKKVoxc0dlA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nFBqQmwgEdqHKKVoxc0dlA" value="1"/>
</ownedParameter>
<ownedParameter xmi:id="_pPTwgGwgEdqHKKVoxc0dlA" name="namedElement" type="_csVgUGvtEdqG6fBIPwe-mw" effect="read">
<ownedComment xmi:id="_Wo6HEPIFEdulR8T2OJRyFQ" annotatedElement="_pPTwgGwgEdqHKKVoxc0dlA">
<body>The named element whose definition to retrieve.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_HL150JPuEdqpjIDDFZ2Hgw" name="getOwnedExtensions" isQuery="true">
<ownedComment xmi:id="_27ORwOwjEdqYHf-imTcTdw" annotatedElement="_HL150JPuEdqpjIDDFZ2Hgw">
<body>Retrieves the extensions owned by this profile, excluding non-required extensions if indicated.</body>
</ownedComment>
<ownedParameter xmi:id="_KG2SYJPuEdqpjIDDFZ2Hgw" type="_skHGwGvsEdqG6fBIPwe-mw" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Bi6zYJP3EdqpjIDDFZ2Hgw"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Bi6zYZP3EdqpjIDDFZ2Hgw" value="*"/>
</ownedParameter>
<ownedParameter xmi:id="_OTEbMJPuEdqpjIDDFZ2Hgw" name="requiredOnly" effect="read">
<ownedComment xmi:id="_aM5yQPIFEdulR8T2OJRyFQ" annotatedElement="_OTEbMJPuEdqpjIDDFZ2Hgw">
<body>Whether to retrieve only required extensions.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_LBK1YGwJEdq7X4sGURiZYA" name="getReferencedMetaclasses" isQuery="true">
<ownedComment xmi:id="_rWMIUOwjEdqYHf-imTcTdw" annotatedElement="_LBK1YGwJEdq7X4sGURiZYA">
<body>Retrieves the metaclasses referenced by this profile.</body>
</ownedComment>
<ownedParameter xmi:id="_Ns-UUGwJEdq7X4sGURiZYA" type="_00owUGvdEdq4DLWZOhbdEA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_PU_bAGwJEdq7X4sGURiZYA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_PU_bAWwJEdq7X4sGURiZYA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_Y9mUAGwJEdq7X4sGURiZYA" name="getReferencedMetamodels" isQuery="true">
<ownedComment xmi:id="_wXAW0OwjEdqYHf-imTcTdw" annotatedElement="_Y9mUAGwJEdq7X4sGURiZYA">
<body>Retrieves the metamodels referenced by this profile.</body>
</ownedComment>
<ownedParameter xmi:id="_berJoGwJEdq7X4sGURiZYA" type="_NVhqMGv0Edq7X4sGURiZYA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dSdbcGwJEdq7X4sGURiZYA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dSdbcWwJEdq7X4sGURiZYA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_8ACYgGwIEdq7X4sGURiZYA" name="isDefined" isQuery="true">
<ownedComment xmi:id="_iDLr4OwjEdqYHf-imTcTdw" annotatedElement="_8ACYgGwIEdq7X4sGURiZYA">
<body>Determines whether this profile is defined.</body>
</ownedComment>
<ownedParameter xmi:id="_E3LYUGwJEdq7X4sGURiZYA" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<nestedClassifier xmi:type="uml:PrimitiveType" xmi:id="_HmwyMtrxEduW-vlXzvw90A" name="EMap_EJavaObject_EJavaObject">
<templateBinding xmi:id="_0mVaQNryEduJovxV1TmzsQ">
<parameterSubstitution xmi:id="_x9HDUNr0EduJovxV1TmzsQ">
<actual xmi:type="uml:PrimitiveType" href="Ecore.uml#_SeWkccX_EduPJbEsMYXjUQ"/>
<formal xmi:type="uml:ClassifierTemplateParameter" href="Ecore.uml#_SeWkfMX_EduPJbEsMYXjUQ"/>
</parameterSubstitution>
<parameterSubstitution xmi:id="_zYmw8Nr0EduJovxV1TmzsQ">
<actual xmi:type="uml:PrimitiveType" href="Ecore.uml#_SeWkccX_EduPJbEsMYXjUQ"/>
<formal xmi:type="uml:ClassifierTemplateParameter" href="Ecore.uml#_SeWkfsX_EduPJbEsMYXjUQ"/>
</parameterSubstitution>
<signature xmi:type="uml:RedefinableTemplateSignature" href="Ecore.uml#_SeWke8X_EduPJbEsMYXjUQ"/>
</templateBinding>
</nestedClassifier>
<nestedClassifier xmi:type="uml:PrimitiveType" xmi:id="_HmwyNtrxEduW-vlXzvw90A" name="EMap_EString_EString">
<templateBinding xmi:id="_2w0U0NryEduJovxV1TmzsQ">
<parameterSubstitution xmi:id="_HmwyONrxEduW-vlXzvw90A">
<actual xmi:type="uml:PrimitiveType" href="Ecore.uml#_SeWkisX_EduPJbEsMYXjUQ"/>
<formal xmi:type="uml:ClassifierTemplateParameter" href="Ecore.uml#_SeWkfMX_EduPJbEsMYXjUQ"/>
</parameterSubstitution>
<parameterSubstitution xmi:id="_HmwyOdrxEduW-vlXzvw90A">
<actual xmi:type="uml:PrimitiveType" href="Ecore.uml#_SeWkisX_EduPJbEsMYXjUQ"/>
<formal xmi:type="uml:ClassifierTemplateParameter" href="Ecore.uml#_SeWkfsX_EduPJbEsMYXjUQ"/>
</parameterSubstitution>
<signature xmi:type="uml:RedefinableTemplateSignature" href="Ecore.uml#_SeWke8X_EduPJbEsMYXjUQ"/>
</templateBinding>
</nestedClassifier>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_uY5yQGv5Edq7X4sGURiZYA" name="ProfileApplication">
<ownedComment xmi:id="_MONqoIkxEeOMQ5AKLd10lA" annotatedElement="_uY5yQGv5Edq7X4sGURiZYA">
<body>A profile application is used to show which profiles have been applied to a package.</body>
</ownedComment>
<generalization xmi:id="_MONqoYkxEeOMQ5AKLd10lA" general="_JBgfoKPAEdqi_5gqUMOQtA"/>
<ownedAttribute xmi:id="_MONqookxEeOMQ5AKLd10lA" name="appliedProfile" type="__pew8GvzEdq7X4sGURiZYA" subsettedProperty="_MNB-44kxEeOMQ5AKLd10lA" association="_MORVBokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MONqo4kxEeOMQ5AKLd10lA" annotatedElement="_MONqookxEeOMQ5AKLd10lA">
<body>References the Profiles that are applied to a Package through this ProfileApplication.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MOORsIkxEeOMQ5AKLd10lA" name="applyingPackage" type="_-cvRAGvzEdq7X4sGURiZYA" subsettedProperty="_MNB-4IkxEeOMQ5AKLd10lA _N3hRMAtAEeGcpbeCPJfCmw" association="_MOSjIokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOORsYkxEeOMQ5AKLd10lA" annotatedElement="_MOORsIkxEeOMQ5AKLd10lA">
<body>The package that owns the profile application.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MOORsokxEeOMQ5AKLd10lA" name="isStrict">
<ownedComment xmi:id="_MOORs4kxEeOMQ5AKLd10lA" annotatedElement="_MOORsokxEeOMQ5AKLd10lA">
<body>Specifies that the Profile filtering rules for the metaclasses of the referenced metamodel shall be strictly applied.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MOORtIkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedOperation xmi:id="_GXI1QW10EdqniMBnIUw7ig" name="getAppliedDefinition" isQuery="true">
<ownedComment xmi:id="_ifO5QOwkEdqYHf-imTcTdw" annotatedElement="_GXI1QW10EdqniMBnIUw7ig">
<body>Retrieves the definition (Ecore representation) of the profile associated with this profile application.</body>
</ownedComment>
<ownedParameter xmi:id="_LJ9EAG10EdqniMBnIUw7ig" direction="return">
<type xmi:type="uml:Class" href="Ecore.uml#_SeWjPsX_EduPJbEsMYXjUQ"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_OTQ-UG10EdqniMBnIUw7ig"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_OTQ-UW10EdqniMBnIUw7ig" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_G3YEAI2_EdqipMtlOpTiHA" name="getAppliedDefinition" isQuery="true">
<ownedComment xmi:id="_lZV58OwkEdqYHf-imTcTdw" annotatedElement="_G3YEAI2_EdqipMtlOpTiHA">
<body>Retrieves the definition (Ecore representation) of the specified named element in the profile associated with this profile application.</body>
</ownedComment>
<ownedParameter xmi:id="_G3YEAY2_EdqipMtlOpTiHA" direction="return">
<type xmi:type="uml:Class" href="Ecore.uml#_SeWifsX_EduPJbEsMYXjUQ"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_G3YEA42_EdqipMtlOpTiHA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_G3YEAo2_EdqipMtlOpTiHA" value="1"/>
</ownedParameter>
<ownedParameter xmi:id="_G3YEBI2_EdqipMtlOpTiHA" name="namedElement" type="_csVgUGvtEdqG6fBIPwe-mw" effect="read">
<ownedComment xmi:id="_myyUsPIFEdulR8T2OJRyFQ" annotatedElement="_G3YEBI2_EdqipMtlOpTiHA">
<body>The named element for which to retrieve the applied definition.</body>
</ownedComment>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_A7vDAGv0Edq7X4sGURiZYA" name="Stereotype">
<ownedComment xmi:id="_MOORtYkxEeOMQ5AKLd10lA" annotatedElement="_A7vDAGv0Edq7X4sGURiZYA">
<body>A stereotype defines how an existing metaclass may be extended, and enables the use of platform or domain specific terminology or notation in place of, or in addition to, the ones used for the extended metaclass.</body>
</ownedComment>
<ownedRule xmi:id="_MOORtokxEeOMQ5AKLd10lA" name="binaryAssociationsOnly" constrainedElement="_A7vDAGv0Edq7X4sGURiZYA">
<ownedComment xmi:id="_MOORt4kxEeOMQ5AKLd10lA" annotatedElement="_MOORtokxEeOMQ5AKLd10lA">
<body>Stereotypes may only participate in binary associations.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOORuIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>ownedAttribute.association->forAll(memberEnd->size()=2)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOORuYkxEeOMQ5AKLd10lA" name="generalize" constrainedElement="_A7vDAGv0Edq7X4sGURiZYA">
<ownedComment xmi:id="_MOORuokxEeOMQ5AKLd10lA" annotatedElement="_MOORuYkxEeOMQ5AKLd10lA">
<body>A Stereotype may only generalize or specialize another Stereotype.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOORu4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>allParents()->forAll(oclIsKindOf(Stereotype)) &#xD;
and Classifier.allInstances()->forAll(c | c.allParents()->exists(oclIsKindOf(Stereotype)) implies c.oclIsKindOf(Stereotype))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOO4wIkxEeOMQ5AKLd10lA" name="name_not_clash" constrainedElement="_A7vDAGv0Edq7X4sGURiZYA">
<ownedComment xmi:id="_MOO4wYkxEeOMQ5AKLd10lA" annotatedElement="_MOO4wIkxEeOMQ5AKLd10lA">
<body>Stereotype names should not clash with keyword names for the extended model element.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOO4wokxEeOMQ5AKLd10lA" language=""/>
</ownedRule>
<ownedRule xmi:id="_MOO4w4kxEeOMQ5AKLd10lA" name="associationEndOwnership" constrainedElement="_A7vDAGv0Edq7X4sGURiZYA">
<ownedComment xmi:id="_MOO4xIkxEeOMQ5AKLd10lA" annotatedElement="_MOO4w4kxEeOMQ5AKLd10lA">
<body>Where a stereotype’s property is an association end for an association other than a kind of extension, and the other end is not a stereotype, the other end must be owned by the association itself.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOO4xYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>ownedAttribute&#xD;
->select(association->notEmpty() and not association.oclIsKindOf(Extension) and not type.oclIsKindOf(Stereotype))&#xD;
->forAll(opposite.owner = association)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOO4xokxEeOMQ5AKLd10lA" name="base_property_upper_bound" constrainedElement="_A7vDAGv0Edq7X4sGURiZYA">
<ownedComment xmi:id="_MOO4x4kxEeOMQ5AKLd10lA" annotatedElement="_MOO4xokxEeOMQ5AKLd10lA">
<body>The upper bound of base-properties is exactly 1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOO4yIkxEeOMQ5AKLd10lA" language=""/>
</ownedRule>
<ownedRule xmi:id="_MOO4yYkxEeOMQ5AKLd10lA" name="base_property_multiplicity_single_extension" constrainedElement="_A7vDAGv0Edq7X4sGURiZYA">
<ownedComment xmi:id="_MOO4yokxEeOMQ5AKLd10lA" annotatedElement="_MOO4yYkxEeOMQ5AKLd10lA">
<body>If a Stereotype extends only one metaclass, the multiplicity of the corresponding base-property shall be 1..1.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOO4y4kxEeOMQ5AKLd10lA"/>
</ownedRule>
<ownedRule xmi:id="_MOO4zIkxEeOMQ5AKLd10lA" name="base_property_multiplicity_multiple_extension" constrainedElement="_A7vDAGv0Edq7X4sGURiZYA">
<ownedComment xmi:id="_MOO4zYkxEeOMQ5AKLd10lA" annotatedElement="_MOO4zIkxEeOMQ5AKLd10lA">
<body>If a Stereotype extends more than one metaclass, the multiplicity of the corresponding base-properties shall be [0..1]. At any point in time, only one of these base-properties can contain a metaclass instance during runtime.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOO4zokxEeOMQ5AKLd10lA"/>
</ownedRule>
<generalization xmi:id="_MOO4z4kxEeOMQ5AKLd10lA" general="_00owUGvdEdq4DLWZOhbdEA"/>
<ownedAttribute xmi:id="_MOPf0IkxEeOMQ5AKLd10lA" name="icon" type="_nDq0wJPzEdqpjIDDFZ2Hgw" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MORVA4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOPf0YkxEeOMQ5AKLd10lA" annotatedElement="_MOPf0IkxEeOMQ5AKLd10lA">
<body>Stereotype can change the graphical appearance of the extended model element by using attached icons. When this association is not null, it references the location of the icon content to be displayed within diagrams presenting the extended model elements.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOPf0okxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOPf04kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOPf1IkxEeOMQ5AKLd10lA" name="profile" type="__pew8GvzEdq7X4sGURiZYA" isReadOnly="true" isDerived="true" association="_MOQt8IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOPf1YkxEeOMQ5AKLd10lA" annotatedElement="_MOPf1IkxEeOMQ5AKLd10lA">
<body>The profile that directly or indirectly contains this stereotype.</body>
</ownedComment>
</ownedAttribute>
<ownedOperation xmi:id="_FJce8GwHEdq7X4sGURiZYA" name="createExtension">
<ownedComment xmi:id="_7qwjAOwjEdqYHf-imTcTdw" annotatedElement="_FJce8GwHEdq7X4sGURiZYA">
<body>Creates a(n) (required) extension of the specified metaclass with this stereotype.</body>
</ownedComment>
<ownedParameter xmi:id="_IziyIGwHEdq7X4sGURiZYA" type="_skHGwGvsEdqG6fBIPwe-mw" direction="return"/>
<ownedParameter xmi:id="_cQPbYGwHEdq7X4sGURiZYA" name="metaclass" type="_00owUGvdEdq4DLWZOhbdEA" effect="read">
<ownedComment xmi:id="_5QyhEPIFEdulR8T2OJRyFQ" annotatedElement="_cQPbYGwHEdq7X4sGURiZYA">
<body>The metaclass for the new extension.</body>
</ownedComment>
</ownedParameter>
<ownedParameter xmi:id="_Jc0YoGwHEdq7X4sGURiZYA" name="isRequired" effect="read">
<ownedComment xmi:id="_37aCgPIFEdulR8T2OJRyFQ" annotatedElement="_Jc0YoGwHEdq7X4sGURiZYA">
<body>Whether the new extension should be required.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_h2eXIJPzEdqpjIDDFZ2Hgw" name="createIcon">
<ownedComment xmi:id="_Oq2IwOwkEdqYHf-imTcTdw" annotatedElement="_h2eXIJPzEdqpjIDDFZ2Hgw">
<body>Creates an icon with the specified location for this stereotype.</body>
</ownedComment>
<ownedParameter xmi:id="_tND04JPzEdqpjIDDFZ2Hgw" type="_nDq0wJPzEdqpjIDDFZ2Hgw" direction="return"/>
<ownedParameter xmi:id="_vrdJ8JPzEdqpjIDDFZ2Hgw" name="location" effect="read">
<ownedComment xmi:id="_6oabUPIFEdulR8T2OJRyFQ" annotatedElement="_vrdJ8JPzEdqpjIDDFZ2Hgw">
<body>The location for the new icon.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_pK-tQJP4EdqpjIDDFZ2Hgw" name="createIcon">
<ownedComment xmi:id="_UNpC8OwkEdqYHf-imTcTdw" annotatedElement="_pK-tQJP4EdqpjIDDFZ2Hgw">
<body>Creates an icon with the specified format and content for this stereotype.</body>
</ownedComment>
<ownedParameter xmi:id="_ud-Q4JP4EdqpjIDDFZ2Hgw" type="_nDq0wJPzEdqpjIDDFZ2Hgw" direction="return"/>
<ownedParameter xmi:id="_T7RY0JP5EdqpjIDDFZ2Hgw" name="format" effect="read">
<ownedComment xmi:id="_9G0XcPIFEdulR8T2OJRyFQ" annotatedElement="_T7RY0JP5EdqpjIDDFZ2Hgw">
<body>The format for the new icon.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
<ownedParameter xmi:id="_RPUI4JP5EdqpjIDDFZ2Hgw" name="content" effect="read">
<ownedComment xmi:id="_79W1APIFEdulR8T2OJRyFQ" annotatedElement="_RPUI4JP5EdqpjIDDFZ2Hgw">
<body>The content for the new icon.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_7T5gsGwHEdq7X4sGURiZYA" name="getAllExtendedMetaclasses" isQuery="true">
<ownedComment xmi:id="_FnVg4OwkEdqYHf-imTcTdw" annotatedElement="_7T5gsGwHEdq7X4sGURiZYA">
<body>Retrieves all the metaclasses extended by this stereotype, including the metaclasses extended by its superstereotypes.</body>
</ownedComment>
<ownedParameter xmi:id="_7T5gsWwHEdq7X4sGURiZYA" type="_00owUGvdEdq4DLWZOhbdEA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7T5gs2wHEdq7X4sGURiZYA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7T5gsmwHEdq7X4sGURiZYA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_wdNtsI0GEdqipMtlOpTiHA" name="getDefinition" isQuery="true">
<ownedComment xmi:id="_MOYGUOwkEdqYHf-imTcTdw" annotatedElement="_wdNtsI0GEdqipMtlOpTiHA">
<body>Retrieves the current definition (Ecore representation) of this stereotype.</body>
</ownedComment>
<ownedParameter xmi:id="_wdNtsY0GEdqipMtlOpTiHA" direction="return">
<type xmi:type="uml:Class" href="Ecore.uml#_SeWizcX_EduPJbEsMYXjUQ"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wdNts40GEdqipMtlOpTiHA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wdNtso0GEdqipMtlOpTiHA" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_02jCwGwHEdq7X4sGURiZYA" name="getExtendedMetaclasses" isQuery="true">
<ownedComment xmi:id="_BxLHoOwkEdqYHf-imTcTdw" annotatedElement="_02jCwGwHEdq7X4sGURiZYA">
<body>Retrieves the metaclasses extended by this stereotype.</body>
</ownedComment>
<ownedParameter xmi:id="_25hnIGwHEdq7X4sGURiZYA" type="_00owUGvdEdq4DLWZOhbdEA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5lVtIGwHEdq7X4sGURiZYA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5lVtIWwHEdq7X4sGURiZYA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_im40YGwHEdq7X4sGURiZYA" name="getKeyword" isQuery="true">
<ownedComment xmi:id="_-0EdUOwjEdqYHf-imTcTdw" annotatedElement="_im40YGwHEdq7X4sGURiZYA">
<body>Retrieves the localized keyword for this stereotype.</body>
</ownedComment>
<ownedParameter xmi:id="_lZHEYGwHEdq7X4sGURiZYA" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_n7YM0GwHEdq7X4sGURiZYA" name="getKeyword" isQuery="true">
<ownedComment xmi:id="_AJA3AOwkEdqYHf-imTcTdw" annotatedElement="_n7YM0GwHEdq7X4sGURiZYA">
<body>Retrieves the keyword for this stereotype, localized if indicated.</body>
</ownedComment>
<ownedParameter xmi:id="_n7YM0WwHEdq7X4sGURiZYA" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
<ownedParameter xmi:id="_rn3FoGwHEdq7X4sGURiZYA" name="localize" effect="read">
<ownedComment xmi:id="_AMa2cPIGEdulR8T2OJRyFQ" annotatedElement="_rn3FoGwHEdq7X4sGURiZYA">
<body>Whether to localize the keyword.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MOPf1okxEeOMQ5AKLd10lA" name="containingProfile" bodyCondition="_MOPf2IkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MOPf14kxEeOMQ5AKLd10lA" annotatedElement="_MOPf1okxEeOMQ5AKLd10lA">
<body>The query containingProfile returns the closest profile directly or indirectly containing this stereotype.</body>
</ownedComment>
<ownedRule xmi:id="_MOPf2IkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MOPf1okxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOPf2YkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (self.namespace.oclAsType(Package).containingProfile())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MOPf2okxEeOMQ5AKLd10lA" name="result" type="__pew8GvzEdq7X4sGURiZYA" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="_jDbsYLL7EeCBifIhhuFqZA" name="profile" visibility="protected" bodyCondition="_MOPf3IkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MOPf24kxEeOMQ5AKLd10lA" annotatedElement="_jDbsYLL7EeCBifIhhuFqZA">
<body>A stereotype must be contained, directly or indirectly, in a profile.</body>
</ownedComment>
<ownedRule xmi:id="_MOPf3IkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_jDbsYLL7EeCBifIhhuFqZA _MOPf1IkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOPf3YkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (self.containingProfile())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_nkVEsLL7EeCBifIhhuFqZA" name="result" type="__pew8GvzEdq7X4sGURiZYA" direction="return"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MOQt8IkxEeOMQ5AKLd10lA" name="A_profile_stereotype" isDerived="true" memberEnd="_MOPf1IkxEeOMQ5AKLd10lA _MORVAIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MORVAIkxEeOMQ5AKLd10lA" name="stereotype" type="_A7vDAGv0Edq7X4sGURiZYA" association="_MOQt8IkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MORVAYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MORVAokxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MORVA4kxEeOMQ5AKLd10lA" name="A_icon_stereotype" memberEnd="_MOPf0IkxEeOMQ5AKLd10lA _MORVBIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MORVBIkxEeOMQ5AKLd10lA" name="stereotype" type="_A7vDAGv0Edq7X4sGURiZYA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MORVA4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MORVBYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MORVBokxEeOMQ5AKLd10lA" name="A_appliedProfile_profileApplication" memberEnd="_MONqookxEeOMQ5AKLd10lA _MORVB4kxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MORVB4kxEeOMQ5AKLd10lA" name="profileApplication" type="_uY5yQGv5Edq7X4sGURiZYA" subsettedProperty="_MNcOmIkxEeOMQ5AKLd10lA" association="_MORVBokxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MORVCIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MORVCYkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MORVCokxEeOMQ5AKLd10lA" name="A_metaclassReference_profile" memberEnd="_MOMcj4kxEeOMQ5AKLd10lA _MORVC4kxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MORVC4kxEeOMQ5AKLd10lA" name="profile" type="__pew8GvzEdq7X4sGURiZYA" subsettedProperty="_MNFpQokxEeOMQ5AKLd10lA" association="_MORVCokxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MORVDIkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MOR8EIkxEeOMQ5AKLd10lA" name="A_metamodelReference_profile" memberEnd="_MONDkIkxEeOMQ5AKLd10lA _MOR8EYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MOR8EYkxEeOMQ5AKLd10lA" name="profile" type="__pew8GvzEdq7X4sGURiZYA" subsettedProperty="_MNTEookxEeOMQ5AKLd10lA" association="_MOR8EIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOR8EokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MOR8E4kxEeOMQ5AKLd10lA" name="A_mergedPackage_packageMerge" memberEnd="_MOMcg4kxEeOMQ5AKLd10lA _MOR8FIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MOR8FIkxEeOMQ5AKLd10lA" name="packageMerge" type="_MOMcgIkxEeOMQ5AKLd10lA" subsettedProperty="_MNcOmIkxEeOMQ5AKLd10lA" association="_MOR8E4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOR8FYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOR8FokxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MOR8F4kxEeOMQ5AKLd10lA" name="A_packagedElement_owningPackage" memberEnd="_MOHkCIkxEeOMQ5AKLd10lA _MOR8GIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MOR8GIkxEeOMQ5AKLd10lA" name="owningPackage" type="_-cvRAGvzEdq7X4sGURiZYA" subsettedProperty="_1vzv0LbIEeCRxrN1JUGuxA" association="_MOR8F4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOR8GYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MOSjIIkxEeOMQ5AKLd10lA" name="A_packageMerge_receivingPackage" memberEnd="_MOHkBIkxEeOMQ5AKLd10lA _MOMchYkxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MOSjIYkxEeOMQ5AKLd10lA" name="A_nestedPackage_nestingPackage" memberEnd="_MOG89YkxEeOMQ5AKLd10lA _XSjCgLbQEeCRxrN1JUGuxA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MOSjIokxEeOMQ5AKLd10lA" name="A_profileApplication_applyingPackage" memberEnd="_MOHkDIkxEeOMQ5AKLd10lA _MOORsIkxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MOSjI4kxEeOMQ5AKLd10lA" name="A_ownedType_package" memberEnd="_MOHkAIkxEeOMQ5AKLd10lA _uvHaoLbQEeCRxrN1JUGuxA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MOSjJIkxEeOMQ5AKLd10lA" name="A_ownedStereotype_owningPackage" isDerived="true" memberEnd="_MOG8-4kxEeOMQ5AKLd10lA _MOSjJokxEeOMQ5AKLd10lA">
<generalization xmi:id="_MOSjJYkxEeOMQ5AKLd10lA" general="_MOR8F4kxEeOMQ5AKLd10lA"/>
<ownedEnd xmi:id="_MOSjJokxEeOMQ5AKLd10lA" name="owningPackage" type="_-cvRAGvzEdq7X4sGURiZYA" redefinedProperty="_MOR8GIkxEeOMQ5AKLd10lA" association="_MOSjJIkxEeOMQ5AKLd10lA"/>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MOTKMIkxEeOMQ5AKLd10lA" name="A_type_extensionEnd" memberEnd="_MOD5qokxEeOMQ5AKLd10lA _MOTKMYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MOTKMYkxEeOMQ5AKLd10lA" name="extensionEnd" type="_2QuT0GvdEdq4DLWZOhbdEA" subsettedProperty="_MNX9IYkxEeOMQ5AKLd10lA" association="_MOTKMIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOTKMokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOTKM4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MOTKNIkxEeOMQ5AKLd10lA" name="A_ownedEnd_extension" memberEnd="_MOCrgIkxEeOMQ5AKLd10lA _MOTKNYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MOTKNYkxEeOMQ5AKLd10lA" name="extension" type="_skHGwGvsEdqG6fBIPwe-mw" subsettedProperty="_MMaT04kxEeOMQ5AKLd10lA" association="_MOTKNIkxEeOMQ5AKLd10lA"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_iY7sMGvsEdqG6fBIPwe-mw" name="BehavioredClassifier" isAbstract="true">
<ownedComment xmi:id="_MOUYUIkxEeOMQ5AKLd10lA" annotatedElement="_iY7sMGvsEdqG6fBIPwe-mw">
<body>A BehavioredClassifier may have InterfaceRealizations, and owns a set of Behaviors one of which may specify the behavior of the BehavioredClassifier itself.</body>
</ownedComment>
<ownedRule xmi:id="_MOUYUYkxEeOMQ5AKLd10lA" name="class_behavior" constrainedElement="_iY7sMGvsEdqG6fBIPwe-mw">
<ownedComment xmi:id="_MOUYUokxEeOMQ5AKLd10lA" annotatedElement="_MOUYUYkxEeOMQ5AKLd10lA">
<body>If a behavior is classifier behavior, it does not have a specification.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOUYU4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>classifierBehavior->notEmpty() implies classifierBehavior.specification->isEmpty()</body>
</specification>
</ownedRule>
<generalization xmi:id="_MOUYVIkxEeOMQ5AKLd10lA" general="_6UV2QGwJEdq7X4sGURiZYA"/>
<ownedAttribute xmi:id="_MOUYVYkxEeOMQ5AKLd10lA" name="classifierBehavior" type="_TUPtYGveEdq4DLWZOhbdEA" subsettedProperty="_MOU_YIkxEeOMQ5AKLd10lA" association="_MOZQ1okxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOUYVokxEeOMQ5AKLd10lA" annotatedElement="_MOUYVYkxEeOMQ5AKLd10lA">
<body>A Behavior that specifies the behavior of the BehavioredClassifier itself.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOUYV4kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOUYWIkxEeOMQ5AKLd10lA" name="interfaceRealization" type="_l2mXcHLzEdqziYxiZo0YtA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MOZQ2okxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOUYWYkxEeOMQ5AKLd10lA" annotatedElement="_MOUYWIkxEeOMQ5AKLd10lA">
<body>The set of InterfaceRealizations owned by the BehavioredClassifier. Interface realizations reference the Interfaces of which the BehavioredClassifier is an implementation.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOUYWokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOUYW4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOU_YIkxEeOMQ5AKLd10lA" name="ownedBehavior" type="_TUPtYGveEdq4DLWZOhbdEA" aggregation="composite" subsettedProperty="_MNQBWIkxEeOMQ5AKLd10lA" association="_MOZQ04kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOU_YYkxEeOMQ5AKLd10lA" annotatedElement="_MOU_YIkxEeOMQ5AKLd10lA">
<body>Behaviors owned by a BehavioredClassifier.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOU_YokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOU_Y4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedOperation xmi:id="_lbuPQK69EdqjppZik4kD8A" name="getAllImplementedInterfaces">
<ownedComment xmi:id="_-G81cOwfEdqYHf-imTcTdw" annotatedElement="_lbuPQK69EdqjppZik4kD8A">
<body>Retrieves all the interfaces on which this behaviored classifier or any of its parents has an interface realization dependency.</body>
</ownedComment>
<ownedParameter xmi:id="_lbuPQa69EdqjppZik4kD8A" type="_8Ugn8GvtEdqG6fBIPwe-mw" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_lbuPQ669EdqjppZik4kD8A"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_lbuPQq69EdqjppZik4kD8A" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_dx6lQK69EdqjppZik4kD8A" name="getImplementedInterfaces">
<ownedComment xmi:id="_5-ADEOwfEdqYHf-imTcTdw" annotatedElement="_dx6lQK69EdqjppZik4kD8A">
<body>Retrieves the interfaces on which this behaviored classifier has an interface realization dependency.</body>
</ownedComment>
<ownedParameter xmi:id="_gSQbEK69EdqjppZik4kD8A" type="_8Ugn8GvtEdqG6fBIPwe-mw" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iwNEMK69EdqjppZik4kD8A"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iwNEMa69EdqjppZik4kD8A" value="*"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="__1ap4HLzEdqziYxiZo0YtA" name="DataType">
<ownedComment xmi:id="_MOU_ZIkxEeOMQ5AKLd10lA" annotatedElement="__1ap4HLzEdqziYxiZo0YtA">
<body>A DataType is a type whose instances are identified only by their value.</body>
</ownedComment>
<generalization xmi:id="_MOU_ZYkxEeOMQ5AKLd10lA" general="_6UV2QGwJEdq7X4sGURiZYA"/>
<ownedAttribute xmi:id="_MOU_ZokxEeOMQ5AKLd10lA" name="ownedAttribute" type="_Jp_1oGveEdq4DLWZOhbdEA" isOrdered="true" aggregation="composite" subsettedProperty="_ML-O9IkxEeOMQ5AKLd10lA _MNQBWIkxEeOMQ5AKLd10lA" association="_MOZQ0YkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOU_Z4kxEeOMQ5AKLd10lA" annotatedElement="_MOU_ZokxEeOMQ5AKLd10lA">
<body>The attributes owned by the DataType.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOU_aIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOU_aYkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOU_aokxEeOMQ5AKLd10lA" name="ownedOperation" type="_M4X2IGveEdq4DLWZOhbdEA" isOrdered="true" aggregation="composite" subsettedProperty="_MMmhFYkxEeOMQ5AKLd10lA _ML-2AIkxEeOMQ5AKLd10lA _MNQBWIkxEeOMQ5AKLd10lA" association="_MOZQ0okxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOU_a4kxEeOMQ5AKLd10lA" annotatedElement="_MOU_aokxEeOMQ5AKLd10lA">
<body>The Operations owned by the DataType.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOU_bIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOU_bYkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedOperation xmi:id="_WJZCQHL0EdqziYxiZo0YtA" name="createOwnedAttribute">
<ownedComment xmi:id="_I4T3gOwmEdqYHf-imTcTdw" annotatedElement="_WJZCQHL0EdqziYxiZo0YtA">
<body>Creates a property with the specified name, type, lower bound, and upper bound as an owned attribute of this data type.</body>
</ownedComment>
<ownedParameter xmi:id="_WJZCQXL0EdqziYxiZo0YtA" type="_Jp_1oGveEdq4DLWZOhbdEA" direction="return"/>
<ownedParameter xmi:id="_WJZCQnL0EdqziYxiZo0YtA" name="name" effect="read">
<ownedComment xmi:id="_kDvt0PIAEdulR8T2OJRyFQ" annotatedElement="_WJZCQnL0EdqziYxiZo0YtA">
<body>The name for the new attribute, or null.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_0pOgQKOxEdqi_5gqUMOQtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0pOgQaOxEdqi_5gqUMOQtA" value="1"/>
</ownedParameter>
<ownedParameter xmi:id="_WJZCQ3L0EdqziYxiZo0YtA" name="type" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
<ownedComment xmi:id="_lgIMQPIAEdulR8T2OJRyFQ" annotatedElement="_WJZCQ3L0EdqziYxiZo0YtA">
<body>The type for the new attribute, or null.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_2bXMQKOxEdqi_5gqUMOQtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_2bXMQaOxEdqi_5gqUMOQtA" value="1"/>
</ownedParameter>
<ownedParameter xmi:id="_WJZCRHL0EdqziYxiZo0YtA" name="lower" effect="read">
<ownedComment xmi:id="_iw5l4PIAEdulR8T2OJRyFQ" annotatedElement="_WJZCRHL0EdqziYxiZo0YtA">
<body>The lower bound for the new attribute.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
</ownedParameter>
<ownedParameter xmi:id="_WJZCRXL0EdqziYxiZo0YtA" name="upper" effect="read">
<ownedComment xmi:id="_nuRe0PIAEdulR8T2OJRyFQ" annotatedElement="_WJZCRXL0EdqziYxiZo0YtA">
<body>The upper bound for the new attribute.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_FDM9YHL0EdqziYxiZo0YtA" name="createOwnedOperation">
<ownedComment xmi:id="_GrDVwOwmEdqYHf-imTcTdw" annotatedElement="_FDM9YHL0EdqziYxiZo0YtA">
<body>Creates an operation with the specified name, parameter names, parameter types, and return type (or null) as an owned operation of this data type.</body>
</ownedComment>
<ownedParameter xmi:id="_FDM9YXL0EdqziYxiZo0YtA" type="_M4X2IGveEdq4DLWZOhbdEA" direction="return"/>
<ownedParameter xmi:id="_FDM9YnL0EdqziYxiZo0YtA" name="name" effect="read">
<ownedComment xmi:id="_qJiAUPIAEdulR8T2OJRyFQ" annotatedElement="_FDM9YnL0EdqziYxiZo0YtA">
<body>The name for the new operation, or null.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wfr4AKOxEdqi_5gqUMOQtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wfr4AaOxEdqi_5gqUMOQtA" value="1"/>
</ownedParameter>
<ownedParameter xmi:id="_FDM9ZHL0EdqziYxiZo0YtA" name="parameterNames" effect="read">
<ownedComment xmi:id="_sw2n4PIAEdulR8T2OJRyFQ" annotatedElement="_FDM9ZHL0EdqziYxiZo0YtA">
<body>The parameter names for the new operation, or null.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FDM9ZnL0EdqziYxiZo0YtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FDM9ZXL0EdqziYxiZo0YtA" value="*"/>
</ownedParameter>
<ownedParameter xmi:id="_FDM9Z3L0EdqziYxiZo0YtA" name="parameterTypes" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
<ownedComment xmi:id="_uKsvsPIAEdulR8T2OJRyFQ" annotatedElement="_FDM9Z3L0EdqziYxiZo0YtA">
<body>The parameter types for the new operation, or null.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FDM9aXL0EdqziYxiZo0YtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FDM9aHL0EdqziYxiZo0YtA" value="*"/>
</ownedParameter>
<ownedParameter xmi:id="_FDM9Y3L0EdqziYxiZo0YtA" name="returnType" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
<ownedComment xmi:id="_wCpIwPIAEdulR8T2OJRyFQ" annotatedElement="_FDM9Y3L0EdqziYxiZo0YtA">
<body>The return type for the new operation, or null.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_yc2vUKOxEdqi_5gqUMOQtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yc2vUaOxEdqi_5gqUMOQtA" value="1"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_I6N3UGwGEdq7X4sGURiZYA" name="Enumeration">
<ownedComment xmi:id="_MOU_bokxEeOMQ5AKLd10lA" annotatedElement="_I6N3UGwGEdq7X4sGURiZYA">
<body>An Enumeration is a DataType whose values are enumerated in the model as EnumerationLiterals.</body>
</ownedComment>
<ownedRule xmi:id="_MOVmcIkxEeOMQ5AKLd10lA" name="immutable" constrainedElement="_I6N3UGwGEdq7X4sGURiZYA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOVmcYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>ownedAttribute->forAll(isReadOnly)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MOVmcokxEeOMQ5AKLd10lA" general="__1ap4HLzEdqziYxiZo0YtA"/>
<ownedAttribute xmi:id="_MOVmc4kxEeOMQ5AKLd10lA" name="ownedLiteral" type="_OQcbgGwOEdq7X4sGURiZYA" isOrdered="true" aggregation="composite" subsettedProperty="_MNQBWIkxEeOMQ5AKLd10lA" association="_MOZQ0IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOVmdIkxEeOMQ5AKLd10lA" annotatedElement="_MOVmc4kxEeOMQ5AKLd10lA">
<body>The ordered set of literals owned by this Enumeration.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOVmdYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOVmdokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_OQcbgGwOEdq7X4sGURiZYA" name="EnumerationLiteral">
<ownedComment xmi:id="_MOVmd4kxEeOMQ5AKLd10lA" annotatedElement="_OQcbgGwOEdq7X4sGURiZYA">
<body>An EnumerationLiteral is a user-defined data value for an Enumeration.</body>
</ownedComment>
<generalization xmi:id="_MOVmeIkxEeOMQ5AKLd10lA" general="_MMJ1IIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MOVmeYkxEeOMQ5AKLd10lA" name="classifier" type="_I6N3UGwGEdq7X4sGURiZYA" isReadOnly="true" isDerived="true" redefinedProperty="_MMJ1MYkxEeOMQ5AKLd10lA" association="_MOYpzIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOVmeokxEeOMQ5AKLd10lA" annotatedElement="_MOVmeYkxEeOMQ5AKLd10lA">
<body>The classifier of this EnumerationLiteral derived to be equal to its Enumeration.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MOVme4kxEeOMQ5AKLd10lA" name="enumeration" type="_I6N3UGwGEdq7X4sGURiZYA" subsettedProperty="_1vzv0LbIEeCRxrN1JUGuxA" association="_MOZQ0IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOVmfIkxEeOMQ5AKLd10lA" annotatedElement="_MOVme4kxEeOMQ5AKLd10lA">
<body>The Enumeration that this EnumerationLiteral is a member of.</body>
</ownedComment>
</ownedAttribute>
<ownedOperation xmi:id="_WlaJALNJEeCT16-4OmDs9g" name="getClassifiers" visibility="protected">
<ownedParameter xmi:id="_WlaJAbNJEeCT16-4OmDs9g" type="_6UV2QGwJEdq7X4sGURiZYA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_WlaJA7NJEeCT16-4OmDs9g"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_WlaJArNJEeCT16-4OmDs9g" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_dgJcQLL2EeCBifIhhuFqZA" name="classifier" visibility="protected" bodyCondition="_MOVmfokxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MOVmfYkxEeOMQ5AKLd10lA" annotatedElement="_dgJcQLL2EeCBifIhhuFqZA">
<body>Derivation of Enumeration::/classifier</body>
</ownedComment>
<ownedRule xmi:id="_MOVmfokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_dgJcQLL2EeCBifIhhuFqZA _MOVmeYkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOVmf4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (enumeration)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_rcqacLL2EeCBifIhhuFqZA" name="result" type="_I6N3UGwGEdq7X4sGURiZYA" direction="return"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_8Ugn8GvtEdqG6fBIPwe-mw" name="Interface">
<ownedComment xmi:id="_MOWNgIkxEeOMQ5AKLd10lA" annotatedElement="_8Ugn8GvtEdqG6fBIPwe-mw">
<body>Interfaces declare coherent services that are implemented by BehavioredClassifiers that implement the Interfaces via InterfaceRealizations.</body>
</ownedComment>
<ownedRule xmi:id="_MOWNgYkxEeOMQ5AKLd10lA" name="visibility" constrainedElement="_8Ugn8GvtEdqG6fBIPwe-mw">
<ownedComment xmi:id="_MOWNgokxEeOMQ5AKLd10lA" annotatedElement="_MOWNgYkxEeOMQ5AKLd10lA">
<body>The visibility of all Features owned by an Interface must be public.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOWNg4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>feature->forAll(visibility = VisibilityKind::public)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MOWNhIkxEeOMQ5AKLd10lA" general="_6UV2QGwJEdq7X4sGURiZYA"/>
<ownedAttribute xmi:id="_MOWNhYkxEeOMQ5AKLd10lA" name="nestedClassifier" type="_6UV2QGwJEdq7X4sGURiZYA" isOrdered="true" aggregation="composite" subsettedProperty="_MMmhFYkxEeOMQ5AKLd10lA _MNQBWIkxEeOMQ5AKLd10lA" association="_MOYpx4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOWNhokxEeOMQ5AKLd10lA" annotatedElement="_MOWNhYkxEeOMQ5AKLd10lA">
<body>References all the Classifiers that are defined (nested) within the Interface.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOWNh4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOWNiIkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOWNiYkxEeOMQ5AKLd10lA" name="ownedAttribute" type="_Jp_1oGveEdq4DLWZOhbdEA" isOrdered="true" aggregation="composite" subsettedProperty="_ML-O9IkxEeOMQ5AKLd10lA _MNQBWIkxEeOMQ5AKLd10lA" association="_MOYpy4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOWNiokxEeOMQ5AKLd10lA" annotatedElement="_MOWNiYkxEeOMQ5AKLd10lA">
<body>The attributes (i.e., the Properties) owned by the Interface.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOWNi4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOWNjIkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOW0kIkxEeOMQ5AKLd10lA" name="ownedOperation" type="_M4X2IGveEdq4DLWZOhbdEA" isOrdered="true" aggregation="composite" subsettedProperty="_MMmhFYkxEeOMQ5AKLd10lA _ML-2AIkxEeOMQ5AKLd10lA _MNQBWIkxEeOMQ5AKLd10lA" association="_MOYpyokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOW0kYkxEeOMQ5AKLd10lA" annotatedElement="_MOW0kIkxEeOMQ5AKLd10lA">
<body>The Operations owned by the Interface.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOW0kokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOW0k4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOW0lIkxEeOMQ5AKLd10lA" name="ownedReception" type="_MOXbo4kxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_ML-2AIkxEeOMQ5AKLd10lA _MNQBWIkxEeOMQ5AKLd10lA" association="_MOYpwIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOW0lYkxEeOMQ5AKLd10lA" annotatedElement="_MOW0lIkxEeOMQ5AKLd10lA">
<body>Receptions that objects providing this Interface are willing to accept.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOW0lokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOW0l4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOW0mIkxEeOMQ5AKLd10lA" name="protocol" type="_MObGAIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MNQBWIkxEeOMQ5AKLd10lA" association="_MOYCu4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOW0mYkxEeOMQ5AKLd10lA" annotatedElement="_MOW0mIkxEeOMQ5AKLd10lA">
<body>References a ProtocolStateMachine specifying the legal sequences of the invocation of the BehavioralFeatures described in the Interface.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOW0mokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOW0m4kxEeOMQ5AKLd10lA" name="redefinedInterface" type="_8Ugn8GvtEdqG6fBIPwe-mw" subsettedProperty="_ML_dIYkxEeOMQ5AKLd10lA" association="_MOYpw4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOW0nIkxEeOMQ5AKLd10lA" annotatedElement="_MOW0m4kxEeOMQ5AKLd10lA">
<body>References all the Interfaces redefined by this Interface.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOW0nYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOW0nokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedOperation xmi:id="_XUC3gHL0EdqziYxiZo0YtA" name="createOwnedAttribute">
<ownedComment xmi:id="_-2N5wOwgEdqYHf-imTcTdw" annotatedElement="_XUC3gHL0EdqziYxiZo0YtA">
<body>Creates a property with the specified name, type, lower bound, and upper bound as an owned attribute of this interface.</body>
</ownedComment>
<ownedParameter xmi:id="_XUC3gXL0EdqziYxiZo0YtA" type="_Jp_1oGveEdq4DLWZOhbdEA" direction="return"/>
<ownedParameter xmi:id="_XUC3gnL0EdqziYxiZo0YtA" name="name" effect="read">
<ownedComment xmi:id="_NDNDAPIDEdulR8T2OJRyFQ" annotatedElement="_XUC3gnL0EdqziYxiZo0YtA">
<body>The name for the new attribute, or null.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EKqDQKOxEdqi_5gqUMOQtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_EKqDQaOxEdqi_5gqUMOQtA" value="1"/>
</ownedParameter>
<ownedParameter xmi:id="_XUC3g3L0EdqziYxiZo0YtA" name="type" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
<ownedComment xmi:id="_OoiCEPIDEdulR8T2OJRyFQ" annotatedElement="_XUC3g3L0EdqziYxiZo0YtA">
<body>The type for the new attribute, or null.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_IuRYYKOxEdqi_5gqUMOQtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_IuRYYaOxEdqi_5gqUMOQtA" value="1"/>
</ownedParameter>
<ownedParameter xmi:id="_XUC3hHL0EdqziYxiZo0YtA" name="lower" effect="read">
<ownedComment xmi:id="_LlK-wPIDEdulR8T2OJRyFQ" annotatedElement="_XUC3hHL0EdqziYxiZo0YtA">
<body>The lower bound for the new attribute.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
</ownedParameter>
<ownedParameter xmi:id="_XUC3hXL0EdqziYxiZo0YtA" name="upper" effect="read">
<ownedComment xmi:id="_Qy-gYPIDEdulR8T2OJRyFQ" annotatedElement="_XUC3hXL0EdqziYxiZo0YtA">
<body>The upper bound for the new attribute.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_FzLo0HL0EdqziYxiZo0YtA" name="createOwnedOperation">
<ownedComment xmi:id="_59cM8OwgEdqYHf-imTcTdw" annotatedElement="_FzLo0HL0EdqziYxiZo0YtA">
<body>Creates an operation with the specified name, parameter names, parameter types, and return type (or null) as an owned operation of this interface.</body>
</ownedComment>
<ownedParameter xmi:id="_FzLo0XL0EdqziYxiZo0YtA" type="_M4X2IGveEdq4DLWZOhbdEA" direction="return"/>
<ownedParameter xmi:id="_FzLo0nL0EdqziYxiZo0YtA" name="name" effect="read">
<ownedComment xmi:id="_mB3gAPIDEdulR8T2OJRyFQ" annotatedElement="_FzLo0nL0EdqziYxiZo0YtA">
<body>The name for the new operation, or null.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7NjlYKOwEdqi_5gqUMOQtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7NjlYaOwEdqi_5gqUMOQtA" value="1"/>
</ownedParameter>
<ownedParameter xmi:id="_FzLo1HL0EdqziYxiZo0YtA" name="parameterNames" effect="read">
<ownedComment xmi:id="_oBbkAPIDEdulR8T2OJRyFQ" annotatedElement="_FzLo1HL0EdqziYxiZo0YtA">
<body>The parameter names for the new operation, or null.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FzLo1nL0EdqziYxiZo0YtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FzLo1XL0EdqziYxiZo0YtA" value="*"/>
</ownedParameter>
<ownedParameter xmi:id="_FzLo13L0EdqziYxiZo0YtA" name="parameterTypes" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
<ownedComment xmi:id="_pvZhsPIDEdulR8T2OJRyFQ" annotatedElement="_FzLo13L0EdqziYxiZo0YtA">
<body>The parameter types for the new operation, or null.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FzLo2XL0EdqziYxiZo0YtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FzLo2HL0EdqziYxiZo0YtA" value="*"/>
</ownedParameter>
<ownedParameter xmi:id="_FzLo03L0EdqziYxiZo0YtA" name="returnType" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
<ownedComment xmi:id="_sWcccPIDEdulR8T2OJRyFQ" annotatedElement="_FzLo03L0EdqziYxiZo0YtA">
<body>The return type for the new operation, or null.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="__G_8IKOwEdqi_5gqUMOQtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__G_8IaOwEdqi_5gqUMOQtA" value="1"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_l2mXcHLzEdqziYxiZo0YtA" name="InterfaceRealization">
<ownedComment xmi:id="_MOW0n4kxEeOMQ5AKLd10lA" annotatedElement="_l2mXcHLzEdqziYxiZo0YtA">
<body>An InterfaceRealization is a specialized realization relationship between a BehavioredClassifier and an Interface. This relationship signifies that the realizing BehavioredClassifier conforms to the contract specified by the Interface.</body>
</ownedComment>
<generalization xmi:id="_MOW0oIkxEeOMQ5AKLd10lA" general="_MNTrsYkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MOW0oYkxEeOMQ5AKLd10lA" name="contract" type="_8Ugn8GvtEdqG6fBIPwe-mw" subsettedProperty="_MNBX0IkxEeOMQ5AKLd10lA" association="_MOYCt4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOW0ookxEeOMQ5AKLd10lA" annotatedElement="_MOW0oYkxEeOMQ5AKLd10lA">
<body>References the Interface specifying the conformance contract.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MOW0o4kxEeOMQ5AKLd10lA" name="implementingClassifier" type="_iY7sMGvsEdqG6fBIPwe-mw" subsettedProperty="_sD4acEzSEeO2z-YY6ENIIA _N3hRMAtAEeGcpbeCPJfCmw" association="_MOZQ2okxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOXboIkxEeOMQ5AKLd10lA" annotatedElement="_MOW0o4kxEeOMQ5AKLd10lA">
<body>References the BehavioredClassifier that owns this InterfaceRealization, i.e., the BehavioredClassifier that realizes the Interface to which it refers.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_V6vuYGwGEdq7X4sGURiZYA" name="PrimitiveType">
<ownedComment xmi:id="_MOXboYkxEeOMQ5AKLd10lA" annotatedElement="_V6vuYGwGEdq7X4sGURiZYA">
<body>A PrimitiveType defines a predefined DataType, without any substructure. A PrimitiveType may have an algebra and operations defined outside of UML, for example, mathematically.</body>
</ownedComment>
<generalization xmi:id="_MOXbookxEeOMQ5AKLd10lA" general="__1ap4HLzEdqziYxiZo0YtA"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MOXbo4kxEeOMQ5AKLd10lA" name="Reception">
<ownedComment xmi:id="_MOXbpIkxEeOMQ5AKLd10lA" annotatedElement="_MOXbo4kxEeOMQ5AKLd10lA">
<body>A Reception is a declaration stating that a Classifier is prepared to react to the receipt of a Signal.</body>
</ownedComment>
<ownedRule xmi:id="_MOXbpYkxEeOMQ5AKLd10lA" name="same_name_as_signal" constrainedElement="_MOXbo4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOXbpokxEeOMQ5AKLd10lA" annotatedElement="_MOXbpYkxEeOMQ5AKLd10lA">
<body>A Reception has the same name as its signal</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOXbp4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>name = signal.name</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOXbqIkxEeOMQ5AKLd10lA" name="same_structure_as_signal" constrainedElement="_MOXbo4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOXbqYkxEeOMQ5AKLd10lA" annotatedElement="_MOXbqIkxEeOMQ5AKLd10lA">
<body>A Reception's parameters match the ownedAttributes of its signal by name, type, and multiplicity</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOXbqokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>signal.ownedAttribute->size() = ownedParameter->size() and&#xD;
Sequence{1..signal.ownedAttribute->size()}->forAll( i | &#xD;
ownedParameter->at(i).direction = ParameterDirectionKind::_'in' and &#xD;
ownedParameter->at(i).name = signal.ownedAttribute->at(i).name and&#xD;
ownedParameter->at(i).type = signal.ownedAttribute->at(i).type and&#xD;
ownedParameter->at(i).lowerBound() = signal.ownedAttribute->at(i).lowerBound() and&#xD;
ownedParameter->at(i).upperBound() = signal.ownedAttribute->at(i).upperBound()&#xD;
)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MOXbq4kxEeOMQ5AKLd10lA" general="_rHT3YKOsEdqi_5gqUMOQtA"/>
<ownedAttribute xmi:id="_MOXbrIkxEeOMQ5AKLd10lA" name="signal" type="_Pu3O0HL0EdqziYxiZo0YtA" association="_MOYCs4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOXbrYkxEeOMQ5AKLd10lA" annotatedElement="_MOXbrIkxEeOMQ5AKLd10lA">
<body>The Signal that this Reception handles.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_Pu3O0HL0EdqziYxiZo0YtA" name="Signal">
<ownedComment xmi:id="_MOXbrokxEeOMQ5AKLd10lA" annotatedElement="_Pu3O0HL0EdqziYxiZo0YtA">
<body>A Signal is a specification of a kind of communication between objects in which a reaction is asynchronously triggered in the receiver without a reply.</body>
</ownedComment>
<generalization xmi:id="_MOXbr4kxEeOMQ5AKLd10lA" general="_6UV2QGwJEdq7X4sGURiZYA"/>
<ownedAttribute xmi:id="_MOXbsIkxEeOMQ5AKLd10lA" name="ownedAttribute" type="_Jp_1oGveEdq4DLWZOhbdEA" isOrdered="true" aggregation="composite" subsettedProperty="_ML-O9IkxEeOMQ5AKLd10lA _MNQBWIkxEeOMQ5AKLd10lA" association="_MOYCsIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOXbsYkxEeOMQ5AKLd10lA" annotatedElement="_MOXbsIkxEeOMQ5AKLd10lA">
<body>The attributes owned by the Signal.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOXbsokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOXbs4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedOperation xmi:id="_YIM4UHL0EdqziYxiZo0YtA" name="createOwnedAttribute">
<ownedComment xmi:id="_MBen4OwmEdqYHf-imTcTdw" annotatedElement="_YIM4UHL0EdqziYxiZo0YtA">
<body>Creates a property with the specified name, type, lower bound, and upper bound as an owned attribute of this signal.</body>
</ownedComment>
<ownedParameter xmi:id="_YIM4UXL0EdqziYxiZo0YtA" type="_Jp_1oGveEdq4DLWZOhbdEA" direction="return"/>
<ownedParameter xmi:id="_YIM4UnL0EdqziYxiZo0YtA" name="name" effect="read">
<ownedComment xmi:id="_zWJHkPIFEdulR8T2OJRyFQ" annotatedElement="_YIM4UnL0EdqziYxiZo0YtA">
<body>The name for the new attribute, or null.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5RAjsKOxEdqi_5gqUMOQtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5RAjsaOxEdqi_5gqUMOQtA" value="1"/>
</ownedParameter>
<ownedParameter xmi:id="_YIM4U3L0EdqziYxiZo0YtA" name="type" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
<ownedComment xmi:id="_1J7ZYPIFEdulR8T2OJRyFQ" annotatedElement="_YIM4U3L0EdqziYxiZo0YtA">
<body>The type for the new attribute, or null.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_7g9NEKOxEdqi_5gqUMOQtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7g9NEaOxEdqi_5gqUMOQtA" value="1"/>
</ownedParameter>
<ownedParameter xmi:id="_YIM4VHL0EdqziYxiZo0YtA" name="lower" effect="read">
<ownedComment xmi:id="_whrb4PIFEdulR8T2OJRyFQ" annotatedElement="_YIM4VHL0EdqziYxiZo0YtA">
<body>The lower bound for the new attribute.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
</ownedParameter>
<ownedParameter xmi:id="_YIM4VXL0EdqziYxiZo0YtA" name="upper" effect="read">
<ownedComment xmi:id="_xbf_0PIFEdulR8T2OJRyFQ" annotatedElement="_YIM4VXL0EdqziYxiZo0YtA">
<body>The upper bound for the new attribute.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MOYCsIkxEeOMQ5AKLd10lA" name="A_ownedAttribute_owningSignal" memberEnd="_MOXbsIkxEeOMQ5AKLd10lA _MOYCsYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MOYCsYkxEeOMQ5AKLd10lA" name="owningSignal" type="_Pu3O0HL0EdqziYxiZo0YtA" subsettedProperty="_MMsAqIkxEeOMQ5AKLd10lA _1vzv0LbIEeCRxrN1JUGuxA" association="_MOYCsIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOYCsokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MOYCs4kxEeOMQ5AKLd10lA" name="A_signal_reception" memberEnd="_MOXbrIkxEeOMQ5AKLd10lA _MOYCtIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MOYCtIkxEeOMQ5AKLd10lA" name="reception" type="_MOXbo4kxEeOMQ5AKLd10lA" association="_MOYCs4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOYCtYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOYCtokxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MOYCt4kxEeOMQ5AKLd10lA" name="A_contract_interfaceRealization" memberEnd="_MOW0oYkxEeOMQ5AKLd10lA _MOYCuIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MOYCuIkxEeOMQ5AKLd10lA" name="interfaceRealization" type="_l2mXcHLzEdqziYxiZo0YtA" subsettedProperty="_MNc1oYkxEeOMQ5AKLd10lA" association="_MOYCt4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOYCuYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOYCuokxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MOYCu4kxEeOMQ5AKLd10lA" name="A_protocol_interface" memberEnd="_MOW0mIkxEeOMQ5AKLd10lA _MOYCvIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MOYCvIkxEeOMQ5AKLd10lA" name="interface" type="_8Ugn8GvtEdqG6fBIPwe-mw" subsettedProperty="_1vzv0LbIEeCRxrN1JUGuxA" association="_MOYCu4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOYCvYkxEeOMQ5AKLd10lA" annotatedElement="_MOYCvIkxEeOMQ5AKLd10lA">
<body>Specifies the namespace in which the protocol state machine is defined.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOYCvokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MOYpwIkxEeOMQ5AKLd10lA" name="A_ownedReception_interface" memberEnd="_MOW0lIkxEeOMQ5AKLd10lA _MOYpwYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MOYpwYkxEeOMQ5AKLd10lA" name="interface" type="_8Ugn8GvtEdqG6fBIPwe-mw" subsettedProperty="_YUdlwLbAEeCRxrN1JUGuxA _1vzv0LbIEeCRxrN1JUGuxA" association="_MOYpwIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOYpwokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MOYpw4kxEeOMQ5AKLd10lA" name="A_redefinedInterface_interface" memberEnd="_MOW0m4kxEeOMQ5AKLd10lA _MOYpxIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MOYpxIkxEeOMQ5AKLd10lA" name="interface" type="_8Ugn8GvtEdqG6fBIPwe-mw" subsettedProperty="_MMsAoYkxEeOMQ5AKLd10lA" association="_MOYpw4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOYpxYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOYpxokxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MOYpx4kxEeOMQ5AKLd10lA" name="A_nestedClassifier_interface" memberEnd="_MOWNhYkxEeOMQ5AKLd10lA _MOYpyIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MOYpyIkxEeOMQ5AKLd10lA" name="interface" type="_8Ugn8GvtEdqG6fBIPwe-mw" subsettedProperty="_1vzv0LbIEeCRxrN1JUGuxA _zYrE4La-EeCRxrN1JUGuxA" association="_MOYpx4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOYpyYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MOYpyokxEeOMQ5AKLd10lA" name="A_ownedOperation_interface" memberEnd="_MOW0kIkxEeOMQ5AKLd10lA _MMLDSokxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MOYpy4kxEeOMQ5AKLd10lA" name="A_ownedAttribute_interface" memberEnd="_MOWNiYkxEeOMQ5AKLd10lA _68HLsLa_EeCRxrN1JUGuxA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MOYpzIkxEeOMQ5AKLd10lA" name="A_classifier_enumerationLiteral" isDerived="true" memberEnd="_MOVmeYkxEeOMQ5AKLd10lA _MOYpzokxEeOMQ5AKLd10lA">
<generalization xmi:id="_MOYpzYkxEeOMQ5AKLd10lA" general="_MMpkbIkxEeOMQ5AKLd10lA"/>
<ownedEnd xmi:id="_MOYpzokxEeOMQ5AKLd10lA" name="enumerationLiteral" type="_OQcbgGwOEdq7X4sGURiZYA" redefinedProperty="_MMpkbYkxEeOMQ5AKLd10lA" association="_MOYpzIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOYpz4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOYp0IkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MOZQ0IkxEeOMQ5AKLd10lA" name="A_ownedLiteral_enumeration" memberEnd="_MOVmc4kxEeOMQ5AKLd10lA _MOVme4kxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MOZQ0YkxEeOMQ5AKLd10lA" name="A_ownedAttribute_datatype" memberEnd="_MOU_ZokxEeOMQ5AKLd10lA _06bWELa_EeCRxrN1JUGuxA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MOZQ0okxEeOMQ5AKLd10lA" name="A_ownedOperation_datatype" memberEnd="_MOU_aokxEeOMQ5AKLd10lA _MMLDR4kxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MOZQ04kxEeOMQ5AKLd10lA" name="A_ownedBehavior_behavioredClassifier" memberEnd="_MOU_YIkxEeOMQ5AKLd10lA _MOZQ1IkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MOZQ1IkxEeOMQ5AKLd10lA" name="behavioredClassifier" type="_iY7sMGvsEdqG6fBIPwe-mw" subsettedProperty="_1vzv0LbIEeCRxrN1JUGuxA" association="_MOZQ04kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOZQ1YkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MOZQ1okxEeOMQ5AKLd10lA" name="A_classifierBehavior_behavioredClassifier" memberEnd="_MOUYVYkxEeOMQ5AKLd10lA _MOZQ2IkxEeOMQ5AKLd10lA">
<generalization xmi:id="_MOZQ14kxEeOMQ5AKLd10lA" general="_MOZQ04kxEeOMQ5AKLd10lA"/>
<ownedEnd xmi:id="_MOZQ2IkxEeOMQ5AKLd10lA" name="behavioredClassifier" type="_iY7sMGvsEdqG6fBIPwe-mw" redefinedProperty="_MOZQ1IkxEeOMQ5AKLd10lA" association="_MOZQ1okxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOZQ2YkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MOZQ2okxEeOMQ5AKLd10lA" name="A_interfaceRealization_implementingClassifier" memberEnd="_MOUYWIkxEeOMQ5AKLd10lA _MOW0o4kxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Class" xmi:id="_MOZ34IkxEeOMQ5AKLd10lA" name="ConnectionPointReference">
<ownedComment xmi:id="_MOZ34YkxEeOMQ5AKLd10lA" annotatedElement="_MOZ34IkxEeOMQ5AKLd10lA">
<body>A ConnectionPointReference represents a usage (as part of a submachine State) of an entry/exit point Pseudostate defined in the StateMachine referenced by the submachine State.</body>
</ownedComment>
<ownedRule xmi:id="_MOZ34okxEeOMQ5AKLd10lA" name="exit_pseudostates" constrainedElement="_MOZ34IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOZ344kxEeOMQ5AKLd10lA" annotatedElement="_MOZ34okxEeOMQ5AKLd10lA">
<body>The exit Pseudostates must be Pseudostates with kind exitPoint.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOZ35IkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>exit->forAll(kind = PseudostateKind::exitPoint)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOZ35YkxEeOMQ5AKLd10lA" name="entry_pseudostates" constrainedElement="_MOZ34IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOZ35okxEeOMQ5AKLd10lA" annotatedElement="_MOZ35YkxEeOMQ5AKLd10lA">
<body>The entry Pseudostates must be Pseudostates with kind entryPoint.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOZ354kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>entry->forAll(kind = PseudostateKind::entryPoint)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MOZ36IkxEeOMQ5AKLd10lA" general="_xM1WoPnlEdunWsS3se92JQ"/>
<ownedAttribute xmi:id="_MOZ36YkxEeOMQ5AKLd10lA" name="entry" type="_MOc7MIkxEeOMQ5AKLd10lA" association="_MOpvjIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOZ36okxEeOMQ5AKLd10lA" annotatedElement="_MOZ36YkxEeOMQ5AKLd10lA">
<body>The entryPoint Pseudostates corresponding to this connection point.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOZ364kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOZ37IkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOZ37YkxEeOMQ5AKLd10lA" name="exit" type="_MOc7MIkxEeOMQ5AKLd10lA" association="_MOpvj4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOZ37okxEeOMQ5AKLd10lA" annotatedElement="_MOZ37YkxEeOMQ5AKLd10lA">
<body>The exitPoints kind Pseudostates corresponding to this connection point.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOZ374kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOZ38IkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOZ38YkxEeOMQ5AKLd10lA" name="state" type="_AjbzoIRREeOnobsWSpJONg" subsettedProperty="_1vzv0LbIEeCRxrN1JUGuxA" association="_MOohZ4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOZ38okxEeOMQ5AKLd10lA" annotatedElement="_MOZ38YkxEeOMQ5AKLd10lA">
<body>The State in which the ConnectionPointReference is defined.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOZ384kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MOae8IkxEeOMQ5AKLd10lA" name="FinalState">
<ownedComment xmi:id="_MOae8YkxEeOMQ5AKLd10lA" annotatedElement="_MOae8IkxEeOMQ5AKLd10lA">
<body>A special kind of State, which, when entered, signifies that the enclosing Region has completed. If the enclosing Region is directly contained in a StateMachine and all other Regions in that StateMachine also are completed, then it means that the entire StateMachine behavior is completed.</body>
</ownedComment>
<ownedRule xmi:id="_MOae8okxEeOMQ5AKLd10lA" name="no_exit_behavior" constrainedElement="_MOae8IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOae84kxEeOMQ5AKLd10lA" annotatedElement="_MOae8okxEeOMQ5AKLd10lA">
<body>A FinalState has no exit Behavior.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOae9IkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>exit->isEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOae9YkxEeOMQ5AKLd10lA" name="no_outgoing_transitions" constrainedElement="_MOae8IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOae9okxEeOMQ5AKLd10lA" annotatedElement="_MOae9YkxEeOMQ5AKLd10lA">
<body>A FinalState cannot have any outgoing Transitions.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOae94kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>outgoing->size() = 0</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOae-IkxEeOMQ5AKLd10lA" name="no_regions" constrainedElement="_MOae8IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOae-YkxEeOMQ5AKLd10lA" annotatedElement="_MOae-IkxEeOMQ5AKLd10lA">
<body>A FinalState cannot have Regions.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOae-okxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>region->size() = 0</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOae-4kxEeOMQ5AKLd10lA" name="cannot_reference_submachine" constrainedElement="_MOae8IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOae_IkxEeOMQ5AKLd10lA" annotatedElement="_MOae-4kxEeOMQ5AKLd10lA">
<body>A FinalState cannot reference a submachine.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOae_YkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>submachine->isEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOae_okxEeOMQ5AKLd10lA" name="no_entry_behavior" constrainedElement="_MOae8IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOae_4kxEeOMQ5AKLd10lA" annotatedElement="_MOae_okxEeOMQ5AKLd10lA">
<body>A FinalState has no entry Behavior.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOafAIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>entry->isEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOafAYkxEeOMQ5AKLd10lA" name="no_state_behavior" constrainedElement="_MOae8IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOafAokxEeOMQ5AKLd10lA" annotatedElement="_MOafAYkxEeOMQ5AKLd10lA">
<body>A FinalState has no state (doActivity) Behavior.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOafA4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>doActivity->isEmpty()</body>
</specification>
</ownedRule>
<generalization xmi:id="_MOafBIkxEeOMQ5AKLd10lA" general="_AjbzoIRREeOnobsWSpJONg"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MOafBYkxEeOMQ5AKLd10lA" name="ProtocolConformance">
<ownedComment xmi:id="_MOafBokxEeOMQ5AKLd10lA" annotatedElement="_MOafBYkxEeOMQ5AKLd10lA">
<body>A ProtocolStateMachine can be redefined into a more specific ProtocolStateMachine or into behavioral StateMachine. ProtocolConformance declares that the specific ProtocolStateMachine specifies a protocol that conforms to the general ProtocolStateMachine or that the specific behavioral StateMachine abides by the protocol of the general ProtocolStateMachine.</body>
</ownedComment>
<generalization xmi:id="_MOafB4kxEeOMQ5AKLd10lA" general="_JBgfoKPAEdqi_5gqUMOQtA"/>
<ownedAttribute xmi:id="_MOafCIkxEeOMQ5AKLd10lA" name="generalMachine" type="_MObGAIkxEeOMQ5AKLd10lA" subsettedProperty="_MNB-44kxEeOMQ5AKLd10lA" association="_MOpviIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOafCYkxEeOMQ5AKLd10lA" annotatedElement="_MOafCIkxEeOMQ5AKLd10lA">
<body>Specifies the ProtocolStateMachine to which the specific ProtocolStateMachine conforms.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MOafCokxEeOMQ5AKLd10lA" name="specificMachine" type="_MObGAIkxEeOMQ5AKLd10lA" subsettedProperty="_MNB-4IkxEeOMQ5AKLd10lA _N3hRMAtAEeGcpbeCPJfCmw" association="_MOpvh4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOafC4kxEeOMQ5AKLd10lA" annotatedElement="_MOafCokxEeOMQ5AKLd10lA">
<body>Specifies the ProtocolStateMachine which conforms to the general ProtocolStateMachine.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MObGAIkxEeOMQ5AKLd10lA" name="ProtocolStateMachine">
<ownedComment xmi:id="_MObGAYkxEeOMQ5AKLd10lA" annotatedElement="_MObGAIkxEeOMQ5AKLd10lA">
<body>A ProtocolStateMachine is always defined in the context of a Classifier. It specifies which BehavioralFeatures of the Classifier can be called in which State and under which conditions, thus specifying the allowed invocation sequences on the Classifier's BehavioralFeatures. A ProtocolStateMachine specifies the possible and permitted Transitions on the instances of its context Classifier, together with the BehavioralFeatures that carry the Transitions. In this manner, an instance lifecycle can be specified for a Classifier, by defining the order in which the BehavioralFeatures can be activated and the States through which an instance progresses during its existence.</body>
</ownedComment>
<ownedRule xmi:id="_MObGAokxEeOMQ5AKLd10lA" name="classifier_context" constrainedElement="_MObGAIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MObGA4kxEeOMQ5AKLd10lA" annotatedElement="_MObGAokxEeOMQ5AKLd10lA">
<body>A ProtocolStateMachine must only have a Classifier context, not a BehavioralFeature context.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MObGBIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>_'context' &lt;> null and specification = null</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MObGBYkxEeOMQ5AKLd10lA" name="deep_or_shallow_history" constrainedElement="_MObGAIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MObGBokxEeOMQ5AKLd10lA" annotatedElement="_MObGBYkxEeOMQ5AKLd10lA">
<body>ProtocolStateMachines cannot have deep or shallow history Pseudostates.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MObGB4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>region->forAll (r | r.subvertex->forAll (v | v.oclIsKindOf(Pseudostate) implies
((v.oclAsType(Pseudostate).kind &lt;> PseudostateKind::deepHistory) and (v.oclAsType(Pseudostate).kind &lt;> PseudostateKind::shallowHistory))))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MObGCIkxEeOMQ5AKLd10lA" name="entry_exit_do" constrainedElement="_MObGAIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MObGCYkxEeOMQ5AKLd10lA" annotatedElement="_MObGCIkxEeOMQ5AKLd10lA">
<body>The states of a ProtocolStateMachine cannot have entry, exit, or do activity Behaviors.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MObGCokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>region->forAll(r | r.subvertex->forAll(v | v.oclIsKindOf(State) implies
(v.oclAsType(State).entry->isEmpty() and v.oclAsType(State).exit->isEmpty() and v.oclAsType(State).doActivity->isEmpty())))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MObGC4kxEeOMQ5AKLd10lA" name="protocol_transitions" constrainedElement="_MObGAIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MObGDIkxEeOMQ5AKLd10lA" annotatedElement="_MObGC4kxEeOMQ5AKLd10lA">
<body>All Transitions of a ProtocolStateMachine must be ProtocolTransitions.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MObGDYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>region->forAll(r | r.transition->forAll(t | t.oclIsTypeOf(ProtocolTransition)))</body>
</specification>
</ownedRule>
<generalization xmi:id="_MObGDokxEeOMQ5AKLd10lA" general="_MOhzsIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MObGD4kxEeOMQ5AKLd10lA" name="conformance" type="_MOafBYkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MNcOlIkxEeOMQ5AKLd10lA _GDD2YAtAEeGcpbeCPJfCmw" association="_MOpvh4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MObGEIkxEeOMQ5AKLd10lA" annotatedElement="_MObGD4kxEeOMQ5AKLd10lA">
<body>Conformance between ProtocolStateMachine</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MObGEYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MObGEokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_Dtp8ULL7EeCBifIhhuFqZA" name="ProtocolTransition">
<ownedComment xmi:id="_MObGE4kxEeOMQ5AKLd10lA" annotatedElement="_Dtp8ULL7EeCBifIhhuFqZA">
<body>A ProtocolTransition specifies a legal Transition for an Operation. Transitions of ProtocolStateMachines have the following information: a pre-condition (guard), a Trigger, and a post-condition. Every ProtocolTransition is associated with at most one BehavioralFeature belonging to the context Classifier of the ProtocolStateMachine.</body>
</ownedComment>
<ownedRule xmi:id="_MObGFIkxEeOMQ5AKLd10lA" name="refers_to_operation" constrainedElement="_Dtp8ULL7EeCBifIhhuFqZA">
<ownedComment xmi:id="_MObGFYkxEeOMQ5AKLd10lA" annotatedElement="_MObGFIkxEeOMQ5AKLd10lA">
<body>If a ProtocolTransition refers to an Operation (i.e., has a CallEvent trigger corresponding to an Operation), then that Operation should apply to the context Classifier of the StateMachine of the ProtocolTransition.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MObGFokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>if (referred()->notEmpty() and containingStateMachine()._'context'->notEmpty()) then &#xD;
containingStateMachine()._'context'.oclAsType(BehavioredClassifier).allFeatures()->includesAll(referred())&#xD;
else true endif</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MObGF4kxEeOMQ5AKLd10lA" name="associated_actions" constrainedElement="_Dtp8ULL7EeCBifIhhuFqZA">
<ownedComment xmi:id="_MObGGIkxEeOMQ5AKLd10lA" annotatedElement="_MObGF4kxEeOMQ5AKLd10lA">
<body>A ProtocolTransition never has associated Behaviors.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MObGGYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>effect = null</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MObGGokxEeOMQ5AKLd10lA" name="belongs_to_psm" constrainedElement="_Dtp8ULL7EeCBifIhhuFqZA">
<ownedComment xmi:id="_MObGG4kxEeOMQ5AKLd10lA" annotatedElement="_MObGGokxEeOMQ5AKLd10lA">
<body>A ProtocolTransition always belongs to a ProtocolStateMachine.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MObGHIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>container.belongsToPSM()</body>
</specification>
</ownedRule>
<generalization xmi:id="_MObGHYkxEeOMQ5AKLd10lA" general="_ykKV8PnlEdunWsS3se92JQ"/>
<ownedAttribute xmi:id="_MObtEIkxEeOMQ5AKLd10lA" name="postCondition" type="_MNAJsIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MNQBXIkxEeOMQ5AKLd10lA" association="_MOpvhIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MObtEYkxEeOMQ5AKLd10lA" annotatedElement="_MObtEIkxEeOMQ5AKLd10lA">
<body>Specifies the post condition of the Transition which is the Condition that should be obtained once the Transition is triggered. This post condition is part of the post condition of the Operation connected to the Transition.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MObtEokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MObtE4kxEeOMQ5AKLd10lA" name="preCondition" type="_MNAJsIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MOjB1okxEeOMQ5AKLd10lA" association="_MOpvgIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MObtFIkxEeOMQ5AKLd10lA" annotatedElement="_MObtE4kxEeOMQ5AKLd10lA">
<body>Specifies the precondition of the Transition. It specifies the Condition that should be verified before triggering the Transition. This guard condition added to the source State will be evaluated as part of the precondition of the Operation referred by the Transition if any.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MObtFYkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MObtFokxEeOMQ5AKLd10lA" name="referred" type="_M4X2IGveEdq4DLWZOhbdEA" isReadOnly="true" isDerived="true" association="_MOpIfokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MObtF4kxEeOMQ5AKLd10lA" annotatedElement="_MObtFokxEeOMQ5AKLd10lA">
<body>This association refers to the associated Operation. It is derived from the Operation of the CallEvent Trigger when applicable.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MObtGIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MObtGYkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedOperation xmi:id="_IZYEkLL7EeCBifIhhuFqZA" name="referred" visibility="protected" bodyCondition="_MObtG4kxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MObtGokxEeOMQ5AKLd10lA" annotatedElement="_IZYEkLL7EeCBifIhhuFqZA">
<body>Derivation for ProtocolTransition::/referred</body>
</ownedComment>
<ownedRule xmi:id="_MObtG4kxEeOMQ5AKLd10lA" name="spec" constrainedElement="_IZYEkLL7EeCBifIhhuFqZA _MObtFokxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MObtHIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (trigger->collect(event)->select(oclIsKindOf(CallEvent))->collect(oclAsType(CallEvent).operation)->asSet())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_JnbMELL7EeCBifIhhuFqZA" name="result" type="_M4X2IGveEdq4DLWZOhbdEA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MObtHYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MObtHokxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MOc7MIkxEeOMQ5AKLd10lA" name="Pseudostate">
<ownedComment xmi:id="_MOc7MYkxEeOMQ5AKLd10lA" annotatedElement="_MOc7MIkxEeOMQ5AKLd10lA">
<body>A Pseudostate is an abstraction that encompasses different types of transient Vertices in the StateMachine graph. A StateMachine instance never comes to rest in a Pseudostate, instead, it will exit and enter the Pseudostate within a single run-to-completion step.</body>
</ownedComment>
<ownedRule xmi:id="_MOc7MokxEeOMQ5AKLd10lA" name="transitions_outgoing" constrainedElement="_MOc7MIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOc7M4kxEeOMQ5AKLd10lA" annotatedElement="_MOc7MokxEeOMQ5AKLd10lA">
<body>All transitions outgoing a fork vertex must target states in different regions of an orthogonal state.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOc7NIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(kind = PseudostateKind::fork) implies&#xD;
&#xD;
-- for any pair of outgoing transitions there exists an orthogonal state which contains the targets of these transitions &#xD;
-- such that these targets belong to different regions of that orthogonal state &#xD;
&#xD;
outgoing->forAll(t1:Transition, t2:Transition | let contState:State = containingStateMachine().LCAState(t1.target, t2.target) in&#xD;
((contState &lt;> null) and (contState.region&#xD;
->exists(r1:Region, r2: Region | (r1 &lt;> r2) and t1.target.isContainedInRegion(r1) and t2.target.isContainedInRegion(r2)))))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOc7NYkxEeOMQ5AKLd10lA" name="choice_vertex" constrainedElement="_MOc7MIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOc7NokxEeOMQ5AKLd10lA" annotatedElement="_MOc7NYkxEeOMQ5AKLd10lA">
<body>In a complete statemachine, a choice Vertex must have at least one incoming and one outgoing Transition.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOc7N4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(kind = PseudostateKind::choice) implies (incoming->size() >= 1 and outgoing->size() >= 1)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOc7OIkxEeOMQ5AKLd10lA" name="outgoing_from_initial" constrainedElement="_MOc7MIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOc7OYkxEeOMQ5AKLd10lA" annotatedElement="_MOc7OIkxEeOMQ5AKLd10lA">
<body>The outgoing Transition from an initial vertex may have a behavior, but not a trigger or a guard.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOc7OokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(kind = PseudostateKind::initial) implies (outgoing.guard = null and outgoing.trigger->isEmpty())</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOc7O4kxEeOMQ5AKLd10lA" name="join_vertex" constrainedElement="_MOc7MIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOc7PIkxEeOMQ5AKLd10lA" annotatedElement="_MOc7O4kxEeOMQ5AKLd10lA">
<body>In a complete StateMachine, a join Vertex must have at least two incoming Transitions and exactly one outgoing Transition.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOc7PYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(kind = PseudostateKind::join) implies (outgoing->size() = 1 and incoming->size() >= 2)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOc7PokxEeOMQ5AKLd10lA" name="junction_vertex" constrainedElement="_MOc7MIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOc7P4kxEeOMQ5AKLd10lA" annotatedElement="_MOc7PokxEeOMQ5AKLd10lA">
<body>In a complete StateMachine, a junction Vertex must have at least one incoming and one outgoing Transition.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOc7QIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(kind = PseudostateKind::junction) implies (incoming->size() >= 1 and outgoing->size() >= 1)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOc7QYkxEeOMQ5AKLd10lA" name="history_vertices" constrainedElement="_MOc7MIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOc7QokxEeOMQ5AKLd10lA" annotatedElement="_MOc7QYkxEeOMQ5AKLd10lA">
<body>History Vertices can have at most one outgoing Transition.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOc7Q4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>((kind = PseudostateKind::deepHistory) or (kind = PseudostateKind::shallowHistory)) implies (outgoing->size() &lt;= 1)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOc7RIkxEeOMQ5AKLd10lA" name="initial_vertex" constrainedElement="_MOc7MIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOc7RYkxEeOMQ5AKLd10lA" annotatedElement="_MOc7RIkxEeOMQ5AKLd10lA">
<body>An initial Vertex can have at most one outgoing Transition.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOc7RokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(kind = PseudostateKind::initial) implies (outgoing->size() &lt;= 1)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOc7R4kxEeOMQ5AKLd10lA" name="fork_vertex" constrainedElement="_MOc7MIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOc7SIkxEeOMQ5AKLd10lA" annotatedElement="_MOc7R4kxEeOMQ5AKLd10lA">
<body>In a complete StateMachine, a fork Vertex must have at least two outgoing Transitions and exactly one incoming Transition.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOc7SYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(kind = PseudostateKind::fork) implies (incoming->size() = 1 and outgoing->size() >= 2)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOc7SokxEeOMQ5AKLd10lA" name="transitions_incoming" constrainedElement="_MOc7MIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOc7S4kxEeOMQ5AKLd10lA" annotatedElement="_MOc7SokxEeOMQ5AKLd10lA">
<body>All Transitions incoming a join Vertex must originate in different Regions of an orthogonal State.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOc7TIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(kind = PseudostateKind::join) implies
-- for any pair of incoming transitions there exists an orthogonal state which contains the source vetices of these transitions
-- such that these source vertices belong to different regions of that orthogonal state
incoming->forAll(t1:Transition, t2:Transition | let contState:State = containingStateMachine().LCAState(t1.source, t2.source) in
((contState &lt;> null) and (contState.region
->exists(r1:Region, r2: Region | (r1 &lt;> r2) and t1.source.isContainedInRegion(r1) and t2.source.isContainedInRegion(r2)))))</body>
</specification>
</ownedRule>
<generalization xmi:id="_MOc7TYkxEeOMQ5AKLd10lA" general="_xM1WoPnlEdunWsS3se92JQ"/>
<ownedAttribute xmi:id="_MOc7TokxEeOMQ5AKLd10lA" name="kind" type="_WTCRYC-TEeO5Ur9hrpFPZA">
<ownedComment xmi:id="_MOc7T4kxEeOMQ5AKLd10lA" annotatedElement="_MOc7TokxEeOMQ5AKLd10lA">
<body>Determines the precise type of the Pseudostate and can be one of: entryPoint, exitPoint, initial, deepHistory, shallowHistory, join, fork, junction, terminate or choice.</body>
</ownedComment>
<defaultValue xmi:type="uml:InstanceValue" xmi:id="_MOc7UIkxEeOMQ5AKLd10lA" type="_WTCRYC-TEeO5Ur9hrpFPZA" instance="_WTCRYi-TEeO5Ur9hrpFPZA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOc7UYkxEeOMQ5AKLd10lA" name="state" type="_AjbzoIRREeOnobsWSpJONg" subsettedProperty="_1vzv0LbIEeCRxrN1JUGuxA" association="_MOoha4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOc7UokxEeOMQ5AKLd10lA" annotatedElement="_MOc7UYkxEeOMQ5AKLd10lA">
<body>The State that owns this Pseudostate and in which it appears.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOc7U4kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOc7VIkxEeOMQ5AKLd10lA" name="stateMachine" type="_MOhzsIkxEeOMQ5AKLd10lA" subsettedProperty="_1vzv0LbIEeCRxrN1JUGuxA" association="_MOn6UIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOc7VYkxEeOMQ5AKLd10lA" annotatedElement="_MOc7VIkxEeOMQ5AKLd10lA">
<body>The StateMachine in which this Pseudostate is defined. This only applies to Pseudostates of the kind entryPoint or exitPoint.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOc7VokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MOdiQIkxEeOMQ5AKLd10lA" name="Region">
<ownedComment xmi:id="_MOdiQYkxEeOMQ5AKLd10lA" annotatedElement="_MOdiQIkxEeOMQ5AKLd10lA">
<body>A Region is a top-level part of a StateMachine or a composite State, that serves as a container for the Vertices and Transitions of the StateMachine. A StateMachine or composite State may contain multiple Regions representing behaviors that may occur in parallel.</body>
</ownedComment>
<ownedRule xmi:id="_MOdiQokxEeOMQ5AKLd10lA" name="deep_history_vertex" constrainedElement="_MOdiQIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOdiQ4kxEeOMQ5AKLd10lA" annotatedElement="_MOdiQokxEeOMQ5AKLd10lA">
<body>A Region can have at most one deep history Vertex.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOdiRIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>self.subvertex->select (oclIsKindOf(Pseudostate))->collect(oclAsType(Pseudostate))->
select(kind = PseudostateKind::deepHistory)->size() &lt;= 1</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOdiRYkxEeOMQ5AKLd10lA" name="shallow_history_vertex" constrainedElement="_MOdiQIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOdiRokxEeOMQ5AKLd10lA" annotatedElement="_MOdiRYkxEeOMQ5AKLd10lA">
<body>A Region can have at most one shallow history Vertex.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOdiR4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>subvertex->select(oclIsKindOf(Pseudostate))->collect(oclAsType(Pseudostate))->
select(kind = PseudostateKind::shallowHistory)->size() &lt;= 1</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOdiSIkxEeOMQ5AKLd10lA" name="owned" constrainedElement="_MOdiQIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOdiSYkxEeOMQ5AKLd10lA" annotatedElement="_MOdiSIkxEeOMQ5AKLd10lA">
<body>If a Region is owned by a StateMachine, then it cannot also be owned by a State and vice versa.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOdiSokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(stateMachine &lt;> null implies state = null) and (state &lt;> null implies stateMachine = null)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOdiS4kxEeOMQ5AKLd10lA" name="initial_vertex" constrainedElement="_MOdiQIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOdiTIkxEeOMQ5AKLd10lA" annotatedElement="_MOdiS4kxEeOMQ5AKLd10lA">
<body>A Region can have at most one initial Vertex.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOdiTYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>self.subvertex->select (oclIsKindOf(Pseudostate))->collect(oclAsType(Pseudostate))->
select(kind = PseudostateKind::initial)->size() &lt;= 1</body>
</specification>
</ownedRule>
<generalization xmi:id="_MOdiTokxEeOMQ5AKLd10lA" general="_ZiwkoGwLEdq7X4sGURiZYA"/>
<generalization xmi:id="_MOdiT4kxEeOMQ5AKLd10lA" general="_uCRA4La-EeCRxrN1JUGuxA"/>
<ownedAttribute xmi:id="_MOdiUIkxEeOMQ5AKLd10lA" name="extendedRegion" type="_MOdiQIkxEeOMQ5AKLd10lA" subsettedProperty="_MMfMVIkxEeOMQ5AKLd10lA" association="_MOpIc4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOdiUYkxEeOMQ5AKLd10lA" annotatedElement="_MOdiUIkxEeOMQ5AKLd10lA">
<body>The region of which this region is an extension.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOdiUokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOdiU4kxEeOMQ5AKLd10lA" name="redefinitionContext" type="_6UV2QGwJEdq7X4sGURiZYA" isReadOnly="true" isDerived="true" redefinedProperty="_zYrE4La-EeCRxrN1JUGuxA" association="_MOpIeIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOdiVIkxEeOMQ5AKLd10lA" annotatedElement="_MOdiU4kxEeOMQ5AKLd10lA">
<body>References the Classifier in which context this element may be redefined.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MOdiVYkxEeOMQ5AKLd10lA" name="state" type="_AjbzoIRREeOnobsWSpJONg" subsettedProperty="_1vzv0LbIEeCRxrN1JUGuxA" association="_MOn6W4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOdiVokxEeOMQ5AKLd10lA" annotatedElement="_MOdiVYkxEeOMQ5AKLd10lA">
<body>The State that owns the Region. If a Region is owned by a State, then it cannot also be owned by a StateMachine.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOdiV4kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOdiWIkxEeOMQ5AKLd10lA" name="stateMachine" type="_MOhzsIkxEeOMQ5AKLd10lA" subsettedProperty="_1vzv0LbIEeCRxrN1JUGuxA" association="_MOn6UYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOdiWYkxEeOMQ5AKLd10lA" annotatedElement="_MOdiWIkxEeOMQ5AKLd10lA">
<body>The StateMachine that owns the Region. If a Region is owned by a StateMachine, then it cannot also be owned by a State.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOdiWokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOdiW4kxEeOMQ5AKLd10lA" name="subvertex" type="_xM1WoPnlEdunWsS3se92JQ" aggregation="composite" subsettedProperty="_MNQBWIkxEeOMQ5AKLd10lA" association="_MOpId4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOdiXIkxEeOMQ5AKLd10lA" annotatedElement="_MOdiW4kxEeOMQ5AKLd10lA">
<body>The set of Vertices that are owned by this Region.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOdiXYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOdiXokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOdiX4kxEeOMQ5AKLd10lA" name="transition" type="_ykKV8PnlEdunWsS3se92JQ" aggregation="composite" subsettedProperty="_MNQBWIkxEeOMQ5AKLd10lA" association="_MOpIfYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOdiYIkxEeOMQ5AKLd10lA" annotatedElement="_MOdiX4kxEeOMQ5AKLd10lA">
<body>The set of Transitions owned by the Region.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOdiYYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOdiYokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedOperation xmi:id="_MOdiY4kxEeOMQ5AKLd10lA" name="belongsToPSM" bodyCondition="_MOdiZYkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MOdiZIkxEeOMQ5AKLd10lA" annotatedElement="_MOdiY4kxEeOMQ5AKLd10lA">
<body>The operation belongsToPSM () checks if the Region belongs to a ProtocolStateMachine.</body>
</ownedComment>
<ownedRule xmi:id="_MOdiZYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MOdiY4kxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOdiZokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if stateMachine &lt;> null
then
stateMachine.oclIsKindOf(ProtocolStateMachine)
else
state &lt;> null implies state.container.belongsToPSM()
endif )</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MOdiZ4kxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MOdiaIkxEeOMQ5AKLd10lA" name="containingStateMachine" bodyCondition="_MOdiaokxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MOdiaYkxEeOMQ5AKLd10lA" annotatedElement="_MOdiaIkxEeOMQ5AKLd10lA">
<body>The operation containingStateMachine() returns the StateMachine in which this Region is defined.</body>
</ownedComment>
<ownedRule xmi:id="_MOdiaokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MOdiaIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOdia4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if stateMachine = null
then
state.containingStateMachine()
else
stateMachine
endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MOdibIkxEeOMQ5AKLd10lA" name="result" type="_MOhzsIkxEeOMQ5AKLd10lA" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="_MOdibYkxEeOMQ5AKLd10lA" name="isConsistentWith" bodyCondition="_MOdib4kxEeOMQ5AKLd10lA" isQuery="true" precondition="_MOdicYkxEeOMQ5AKLd10lA" redefinedOperation="_MMfzYIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOdibokxEeOMQ5AKLd10lA" annotatedElement="_MOdibYkxEeOMQ5AKLd10lA">
<body>The query isConsistentWith() specifies that a redefining Region is consistent with a redefined Region provided that the redefining Region is an extension of the Redefined region, i.e., its Vertices and Transitions conform to one of the following: (1) they are equal to corresponding elements of the redefined Region or, (2) they consistently redefine a State or Transition of the redefined region, or (3) they add new States or Transitions.</body>
</ownedComment>
<ownedRule xmi:id="_MOdib4kxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MOdibYkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOdicIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (-- the following is merely a default body; it is expected that the specific form of this constraint will be specified by profiles&#xD;
true)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOdicYkxEeOMQ5AKLd10lA" name="pre" constrainedElement="_MOdibYkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOdicokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>redefiningElement.isRedefinitionContextValid(self)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MOdic4kxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_MOdidIkxEeOMQ5AKLd10lA" name="redefiningElement" type="_uCRA4La-EeCRxrN1JUGuxA"/>
</ownedOperation>
<ownedOperation xmi:id="_MOdidYkxEeOMQ5AKLd10lA" name="isRedefinitionContextValid" bodyCondition="_MOdid4kxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MMfzaIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOdidokxEeOMQ5AKLd10lA" annotatedElement="_MOdidYkxEeOMQ5AKLd10lA">
<body>The query isRedefinitionContextValid() specifies whether the redefinition contexts of a Region are properly related to the redefinition contexts of the specified Region to allow this element to redefine the other. The containing StateMachine or State of a redefining Region must Redefine the containing StateMachine or State of the redefined Region.</body>
</ownedComment>
<ownedRule xmi:id="_MOdid4kxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MOdidYkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOdieIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if redefinedElement.oclIsKindOf(Region) then&#xD;
let redefinedRegion : Region = redefinedElement.oclAsType(Region) in&#xD;
if stateMachine->isEmpty() then&#xD;
-- the Region is owned by a State&#xD;
(state.redefinedState->notEmpty() and state.redefinedState.region->includes(redefinedRegion))&#xD;
else -- the region is owned by a StateMachine&#xD;
(stateMachine.extendedStateMachine->notEmpty() and&#xD;
stateMachine.extendedStateMachine->exists(sm : StateMachine |&#xD;
sm.region->includes(redefinedRegion)))&#xD;
endif&#xD;
else&#xD;
false&#xD;
endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MOdieYkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_MOdieokxEeOMQ5AKLd10lA" name="redefinedElement" type="_uCRA4La-EeCRxrN1JUGuxA"/>
</ownedOperation>
<ownedOperation xmi:id="_MOdie4kxEeOMQ5AKLd10lA" name="redefinitionContext" bodyCondition="_MOdifYkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MOdifIkxEeOMQ5AKLd10lA" annotatedElement="_MOdie4kxEeOMQ5AKLd10lA">
<body>The redefinition context of a Region is the nearest containing StateMachine.</body>
</ownedComment>
<ownedRule xmi:id="_MOdifYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MOdie4kxEeOMQ5AKLd10lA _MOdiU4kxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOdifokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (let sm : StateMachine = containingStateMachine() in
if sm._'context' = null or sm.general->notEmpty() then
sm
else
sm._'context'
endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MOdif4kxEeOMQ5AKLd10lA" name="result" type="_6UV2QGwJEdq7X4sGURiZYA" direction="return"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_AjbzoIRREeOnobsWSpJONg" name="State">
<ownedComment xmi:id="_MOeJUIkxEeOMQ5AKLd10lA" annotatedElement="_AjbzoIRREeOnobsWSpJONg">
<body>A State models a situation during which some (usually implicit) invariant condition holds.</body>
</ownedComment>
<ownedRule xmi:id="_MOeJUYkxEeOMQ5AKLd10lA" name="entry_or_exit" constrainedElement="_AjbzoIRREeOnobsWSpJONg">
<ownedComment xmi:id="_MOeJUokxEeOMQ5AKLd10lA" annotatedElement="_MOeJUYkxEeOMQ5AKLd10lA">
<body>Only entry or exit Pseudostates can serve as connection points.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOeJU4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>connectionPoint->forAll(kind = PseudostateKind::entryPoint or kind = PseudostateKind::exitPoint)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOeJVIkxEeOMQ5AKLd10lA" name="submachine_states" constrainedElement="_AjbzoIRREeOnobsWSpJONg">
<ownedComment xmi:id="_MOeJVYkxEeOMQ5AKLd10lA" annotatedElement="_MOeJVIkxEeOMQ5AKLd10lA">
<body>Only submachine States can have connection point references.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOeJVokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>isSubmachineState implies connection->notEmpty( )</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOeJV4kxEeOMQ5AKLd10lA" name="composite_states" constrainedElement="_AjbzoIRREeOnobsWSpJONg">
<ownedComment xmi:id="_MOeJWIkxEeOMQ5AKLd10lA" annotatedElement="_MOeJV4kxEeOMQ5AKLd10lA">
<body>Only composite States can have entry or exit Pseudostates defined.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOeJWYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>connectionPoint->notEmpty() implies isComposite</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOeJWokxEeOMQ5AKLd10lA" name="destinations_or_sources_of_transitions" constrainedElement="_AjbzoIRREeOnobsWSpJONg">
<ownedComment xmi:id="_MOeJW4kxEeOMQ5AKLd10lA" annotatedElement="_MOeJWokxEeOMQ5AKLd10lA">
<body>The connection point references used as destinations/sources of Transitions associated with a submachine State must be defined as entry/exit points in the submachine StateMachine.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOeJXIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>self.isSubmachineState implies (self.connection->forAll (cp |&#xD;
cp.entry->forAll (ps | ps.stateMachine = self.submachine) and&#xD;
cp.exit->forAll (ps | ps.stateMachine = self.submachine)))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOeJXYkxEeOMQ5AKLd10lA" name="submachine_or_regions" constrainedElement="_AjbzoIRREeOnobsWSpJONg">
<ownedComment xmi:id="_MOeJXokxEeOMQ5AKLd10lA" annotatedElement="_MOeJXYkxEeOMQ5AKLd10lA">
<body>A State is not allowed to have both a submachine and Regions.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOeJX4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>isComposite implies not isSubmachineState</body>
</specification>
</ownedRule>
<generalization xmi:id="_MOeJYIkxEeOMQ5AKLd10lA" general="_uCRA4La-EeCRxrN1JUGuxA"/>
<generalization xmi:id="_MOeJYYkxEeOMQ5AKLd10lA" general="_ZiwkoGwLEdq7X4sGURiZYA"/>
<generalization xmi:id="_MOewYIkxEeOMQ5AKLd10lA" general="_xM1WoPnlEdunWsS3se92JQ"/>
<ownedAttribute xmi:id="_MOewYYkxEeOMQ5AKLd10lA" name="connection" type="_MOZ34IkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MNQBWIkxEeOMQ5AKLd10lA" association="_MOohZ4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOewYokxEeOMQ5AKLd10lA" annotatedElement="_MOewYYkxEeOMQ5AKLd10lA">
<body>The entry and exit connection points used in conjunction with this (submachine) State, i.e., as targets and sources, respectively, in the Region with the submachine State. A connection point reference references the corresponding definition of a connection point Pseudostate in the StateMachine referenced by the submachine State.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOewY4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOewZIkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOewZYkxEeOMQ5AKLd10lA" name="connectionPoint" type="_MOc7MIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MNQBWIkxEeOMQ5AKLd10lA" association="_MOoha4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOewZokxEeOMQ5AKLd10lA" annotatedElement="_MOewZYkxEeOMQ5AKLd10lA">
<body>The entry and exit Pseudostates of a composite State. These can only be entry or exit Pseudostates, and they must have different names. They can only be defined for composite States.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOewZ4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOewaIkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOewaYkxEeOMQ5AKLd10lA" name="deferrableTrigger" type="_MM6qIIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MOohZIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOewaokxEeOMQ5AKLd10lA" annotatedElement="_MOewaYkxEeOMQ5AKLd10lA">
<body>A list of Triggers that are candidates to be retained by the StateMachine if they trigger no Transitions out of the State (not consumed). A deferred Trigger is retained until the StateMachine reaches a State configuration where it is no longer deferred.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOewa4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOewbIkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOewbYkxEeOMQ5AKLd10lA" name="doActivity" type="_TUPtYGveEdq4DLWZOhbdEA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MOohbIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOewbokxEeOMQ5AKLd10lA" annotatedElement="_MOewbYkxEeOMQ5AKLd10lA">
<body>An optional Behavior that is executed while being in the State. The execution starts when this State is entered, and ceases either by itself when done, or when the State is exited, whichever comes first.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOewb4kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOewcIkxEeOMQ5AKLd10lA" name="entry" type="_TUPtYGveEdq4DLWZOhbdEA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MOohaIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOewcYkxEeOMQ5AKLd10lA" annotatedElement="_MOewcIkxEeOMQ5AKLd10lA">
<body>An optional Behavior that is executed whenever this State is entered regardless of the Transition taken to reach the State. If defined, entry Behaviors are always executed to completion prior to any internal Behavior or Transitions performed within the State.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOewcokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOewc4kxEeOMQ5AKLd10lA" name="exit" type="_TUPtYGveEdq4DLWZOhbdEA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MOpIcIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOewdIkxEeOMQ5AKLd10lA" annotatedElement="_MOewc4kxEeOMQ5AKLd10lA">
<body>An optional Behavior that is executed whenever this State is exited regardless of which Transition was taken out of the State. If defined, exit Behaviors are always executed to completion only after all internal and transition Behaviors have completed execution.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOewdYkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOewdokxEeOMQ5AKLd10lA" name="isComposite" isReadOnly="true" isDerived="true">
<ownedComment xmi:id="_MOewd4kxEeOMQ5AKLd10lA" annotatedElement="_MOewdokxEeOMQ5AKLd10lA">
<body>A state with isComposite=true is said to be a composite State. A composite State is a State that contains at least one Region.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOeweIkxEeOMQ5AKLd10lA" name="isOrthogonal" isReadOnly="true" isDerived="true">
<ownedComment xmi:id="_MOeweYkxEeOMQ5AKLd10lA" annotatedElement="_MOeweIkxEeOMQ5AKLd10lA">
<body>A State with isOrthogonal=true is said to be an orthogonal composite State An orthogonal composite State contains two or more Regions.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedAttribute>
<ownedAttribute xmi:id="_ECR5EIRREeOnobsWSpJONg" name="isSimple" isReadOnly="true" isDerived="true">
<ownedComment xmi:id="_MOfXcIkxEeOMQ5AKLd10lA" annotatedElement="_ECR5EIRREeOnobsWSpJONg">
<body>A State with isSimple=true is said to be a simple State A simple State does not have any Regions and it does not refer to any submachine StateMachine.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_Q8o2sIRREeOnobsWSpJONg" value="true"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOfXcYkxEeOMQ5AKLd10lA" name="isSubmachineState" isReadOnly="true" isDerived="true">
<ownedComment xmi:id="_MOfXcokxEeOMQ5AKLd10lA" annotatedElement="_MOfXcYkxEeOMQ5AKLd10lA">
<body>A State with isSubmachineState=true is said to be a submachine State Such a State refers to another StateMachine(submachine).</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOfXc4kxEeOMQ5AKLd10lA" name="redefinedState" type="_AjbzoIRREeOnobsWSpJONg" subsettedProperty="_MMfMVIkxEeOMQ5AKLd10lA" association="_MOohYIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOfXdIkxEeOMQ5AKLd10lA" annotatedElement="_MOfXc4kxEeOMQ5AKLd10lA">
<body>The State of which this State is a redefinition.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOfXdYkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOfXdokxEeOMQ5AKLd10lA" name="redefinitionContext" type="_6UV2QGwJEdq7X4sGURiZYA" isReadOnly="true" isDerived="true" redefinedProperty="_zYrE4La-EeCRxrN1JUGuxA" association="_MOn6VokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOfXd4kxEeOMQ5AKLd10lA" annotatedElement="_MOfXdokxEeOMQ5AKLd10lA">
<body>References the Classifier in which context this element may be redefined.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MOfXeIkxEeOMQ5AKLd10lA" name="region" type="_MOdiQIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MNQBWIkxEeOMQ5AKLd10lA" association="_MOn6W4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOfXeYkxEeOMQ5AKLd10lA" annotatedElement="_MOfXeIkxEeOMQ5AKLd10lA">
<body>The Regions owned directly by the State.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOfXeokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOfXe4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOfXfIkxEeOMQ5AKLd10lA" name="stateInvariant" type="_MNAJsIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MNQBXIkxEeOMQ5AKLd10lA" association="_MOn6XIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOfXfYkxEeOMQ5AKLd10lA" annotatedElement="_MOfXfIkxEeOMQ5AKLd10lA">
<body>Specifies conditions that are always true when this State is the current State. In ProtocolStateMachines state invariants are additional conditions to the preconditions of the outgoing Transitions, and to the postcondition of the incoming Transitions.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOfXfokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOfXf4kxEeOMQ5AKLd10lA" name="submachine" type="_MOhzsIkxEeOMQ5AKLd10lA" association="_MOnTTIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOfXgIkxEeOMQ5AKLd10lA" annotatedElement="_MOfXf4kxEeOMQ5AKLd10lA">
<body>The StateMachine that is to be inserted in place of the (submachine) State.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOfXgYkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedOperation xmi:id="_MOf-gIkxEeOMQ5AKLd10lA" name="containingStateMachine" bodyCondition="_MOf-gokxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MOkP_IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOf-gYkxEeOMQ5AKLd10lA" annotatedElement="_MOf-gIkxEeOMQ5AKLd10lA">
<body>The query containingStateMachine() returns the StateMachine that contains the State either directly or transitively.</body>
</ownedComment>
<ownedRule xmi:id="_MOf-gokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MOf-gIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOf-g4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (container.containingStateMachine())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MOf-hIkxEeOMQ5AKLd10lA" name="result" type="_MOhzsIkxEeOMQ5AKLd10lA" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="_MOf-hYkxEeOMQ5AKLd10lA" name="isComposite" bodyCondition="_MOf-h4kxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MOf-hokxEeOMQ5AKLd10lA" annotatedElement="_MOf-hYkxEeOMQ5AKLd10lA">
<body>A composite State is a State with at least one Region.</body>
</ownedComment>
<ownedRule xmi:id="_MOf-h4kxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MOf-hYkxEeOMQ5AKLd10lA _MOewdokxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOf-iIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (region->notEmpty())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MOf-iYkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MOf-iokxEeOMQ5AKLd10lA" name="isConsistentWith" bodyCondition="_MOf-jIkxEeOMQ5AKLd10lA" isQuery="true" precondition="_MOf-jokxEeOMQ5AKLd10lA" redefinedOperation="_MMfzYIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOf-i4kxEeOMQ5AKLd10lA" annotatedElement="_MOf-iokxEeOMQ5AKLd10lA">
<body>The query isConsistentWith() specifies that a redefining State is consistent with a redefined State provided that the redefining State is an extension of the redefined State A simple State can be redefined (extended) to become a composite State (by adding one or more Regions) and a composite State can be redefined (extended) by adding Regions and by adding Vertices, States, and Transitions to inherited Regions. All States may add or replace entry, exit, and 'doActivity' Behaviors.</body>
</ownedComment>
<ownedRule xmi:id="_MOf-jIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MOf-iokxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOf-jYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (-- the following is merely a default body; it is expected that the specific form of this constraint will be specified by profiles&#xD;
true)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOf-jokxEeOMQ5AKLd10lA" name="pre" constrainedElement="_MOf-iokxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOf-j4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>redefiningElement.isRedefinitionContextValid(self)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MOf-kIkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_MOf-kYkxEeOMQ5AKLd10lA" name="redefiningElement" type="_uCRA4La-EeCRxrN1JUGuxA"/>
</ownedOperation>
<ownedOperation xmi:id="_MOf-kokxEeOMQ5AKLd10lA" name="isOrthogonal" bodyCondition="_MOf-lIkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MOf-k4kxEeOMQ5AKLd10lA" annotatedElement="_MOf-kokxEeOMQ5AKLd10lA">
<body>An orthogonal State is a composite state with at least 2 regions.</body>
</ownedComment>
<ownedRule xmi:id="_MOf-lIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MOf-kokxEeOMQ5AKLd10lA _MOeweIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOf-lYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (region->size () > 1)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MOf-lokxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MOf-l4kxEeOMQ5AKLd10lA" name="isRedefinitionContextValid" bodyCondition="_MOf-mYkxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MMfzaIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOf-mIkxEeOMQ5AKLd10lA" annotatedElement="_MOf-l4kxEeOMQ5AKLd10lA">
<body>The query isRedefinitionContextValid() specifies whether the redefinition contexts of a State are properly related to the redefinition contexts of the specified State to allow this element to redefine the other. This means that the containing Region of a redefining State must redefine the containing Region of the redefined State.</body>
</ownedComment>
<ownedRule xmi:id="_MOf-mYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MOf-l4kxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOf-mokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if redefinedElement.oclIsKindOf(State) then&#xD;
let redefinedState : State = redefinedElement.oclAsType(State) in&#xD;
container.redefinedElement.oclAsType(Region)->exists(r:Region |&#xD;
r.subvertex->includes(redefinedState))&#xD;
else&#xD;
false&#xD;
endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MOf-m4kxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_MOf-nIkxEeOMQ5AKLd10lA" name="redefinedElement" type="_uCRA4La-EeCRxrN1JUGuxA"/>
</ownedOperation>
<ownedOperation xmi:id="_MOglkIkxEeOMQ5AKLd10lA" name="isSimple" bodyCondition="_MOglkokxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MOglkYkxEeOMQ5AKLd10lA" annotatedElement="_MOglkIkxEeOMQ5AKLd10lA">
<body>A simple State is a State without any regions.</body>
</ownedComment>
<ownedRule xmi:id="_MOglkokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MOglkIkxEeOMQ5AKLd10lA _ECR5EIRREeOnobsWSpJONg">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOglk4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = ((region->isEmpty()) and not isSubmachineState())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MOgllIkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MOgllYkxEeOMQ5AKLd10lA" name="isSubmachineState" bodyCondition="_MOgll4kxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MOgllokxEeOMQ5AKLd10lA" annotatedElement="_MOgllYkxEeOMQ5AKLd10lA">
<body>Only submachine State references another StateMachine.</body>
</ownedComment>
<ownedRule xmi:id="_MOgll4kxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MOgllYkxEeOMQ5AKLd10lA _MOfXcYkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOglmIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (submachine &lt;> null)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MOglmYkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MOglmokxEeOMQ5AKLd10lA" name="redefinitionContext" bodyCondition="_MOglnIkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MOglm4kxEeOMQ5AKLd10lA" annotatedElement="_MOglmokxEeOMQ5AKLd10lA">
<body>The redefinition context of a State is the nearest containing StateMachine.</body>
</ownedComment>
<ownedRule xmi:id="_MOglnIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MOglmokxEeOMQ5AKLd10lA _MOfXdokxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOglnYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (let sm : StateMachine = containingStateMachine() in
if sm._'context' = null or sm.general->notEmpty() then
sm
else
sm._'context'
endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MOglnokxEeOMQ5AKLd10lA" name="result" type="_6UV2QGwJEdq7X4sGURiZYA" direction="return"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MOhzsIkxEeOMQ5AKLd10lA" name="StateMachine">
<ownedComment xmi:id="_MOhzsYkxEeOMQ5AKLd10lA" annotatedElement="_MOhzsIkxEeOMQ5AKLd10lA">
<body>StateMachines can be used to express event-driven behaviors of parts of a system. Behavior is modeled as a traversal of a graph of Vertices interconnected by one or more joined Transition arcs that are triggered by the dispatching of successive Event occurrences. During this traversal, the StateMachine may execute a sequence of Behaviors associated with various elements of the StateMachine.</body>
</ownedComment>
<ownedRule xmi:id="_MOhzsokxEeOMQ5AKLd10lA" name="connection_points" constrainedElement="_MOhzsIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOhzs4kxEeOMQ5AKLd10lA" annotatedElement="_MOhzsokxEeOMQ5AKLd10lA">
<body>The connection points of a StateMachine are Pseudostates of kind entry point or exit point.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOhztIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>connectionPoint->forAll (kind = PseudostateKind::entryPoint or kind = PseudostateKind::exitPoint)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOhztYkxEeOMQ5AKLd10lA" name="classifier_context" constrainedElement="_MOhzsIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOhztokxEeOMQ5AKLd10lA" annotatedElement="_MOhztYkxEeOMQ5AKLd10lA">
<body>The Classifier context of a StateMachine cannot be an Interface.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOhzt4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>_'context' &lt;> null implies not _'context'.oclIsKindOf(Interface)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOhzuIkxEeOMQ5AKLd10lA" name="method" constrainedElement="_MOhzsIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOhzuYkxEeOMQ5AKLd10lA" annotatedElement="_MOhzuIkxEeOMQ5AKLd10lA">
<body>A StateMachine as the method for a BehavioralFeature cannot have entry/exit connection points.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOhzuokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>specification &lt;> null implies connectionPoint->isEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOhzu4kxEeOMQ5AKLd10lA" name="context_classifier" constrainedElement="_MOhzsIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOhzvIkxEeOMQ5AKLd10lA" annotatedElement="_MOhzu4kxEeOMQ5AKLd10lA">
<body>The context Classifier of the method StateMachine of a BehavioralFeature must be the Classifier that owns the BehavioralFeature.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOhzvYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>specification &lt;> null implies ( _'context' &lt;> null and specification.featuringClassifier->exists(c | c = _'context'))</body>
</specification>
</ownedRule>
<generalization xmi:id="_MOhzvokxEeOMQ5AKLd10lA" general="_TUPtYGveEdq4DLWZOhbdEA"/>
<ownedAttribute xmi:id="_MOhzv4kxEeOMQ5AKLd10lA" name="connectionPoint" type="_MOc7MIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MNQBWIkxEeOMQ5AKLd10lA" association="_MOn6UIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOhzwIkxEeOMQ5AKLd10lA" annotatedElement="_MOhzv4kxEeOMQ5AKLd10lA">
<body>The connection points defined for this StateMachine. They represent the interface of the StateMachine when used as part of submachine State</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOhzwYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOhzwokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOhzw4kxEeOMQ5AKLd10lA" name="extendedStateMachine" type="_MOhzsIkxEeOMQ5AKLd10lA" redefinedProperty="_MM0jh4kxEeOMQ5AKLd10lA" association="_MOn6UokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOhzxIkxEeOMQ5AKLd10lA" annotatedElement="_MOhzw4kxEeOMQ5AKLd10lA">
<body>The StateMachines of which this is an extension.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOhzxYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOhzxokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOhzx4kxEeOMQ5AKLd10lA" name="region" type="_MOdiQIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MNQBWIkxEeOMQ5AKLd10lA" association="_MOn6UYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOhzyIkxEeOMQ5AKLd10lA" annotatedElement="_MOhzx4kxEeOMQ5AKLd10lA">
<body>The Regions owned directly by the StateMachine.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOhzyYkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOhzyokxEeOMQ5AKLd10lA" name="submachineState" type="_AjbzoIRREeOnobsWSpJONg" association="_MOnTTIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOhzy4kxEeOMQ5AKLd10lA" annotatedElement="_MOhzyokxEeOMQ5AKLd10lA">
<body>References the submachine(s) in case of a submachine State. Multiple machines are referenced in case of a concurrent State.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOhzzIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOhzzYkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedOperation xmi:id="_MOhzzokxEeOMQ5AKLd10lA" name="LCA" bodyCondition="_MOhz0IkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MOhzz4kxEeOMQ5AKLd10lA" annotatedElement="_MOhzzokxEeOMQ5AKLd10lA">
<body>The operation LCA(s1,s2) returns the Region that is the least common ancestor of Vertices s1 and s2, based on the StateMachine containment hierarchy.</body>
</ownedComment>
<ownedRule xmi:id="_MOhz0IkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MOhzzokxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOhz0YkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if ancestor(s1, s2) then &#xD;
s2.container&#xD;
else&#xD;
if ancestor(s2, s1) then&#xD;
s1.container &#xD;
else &#xD;
LCA(s1.container.state, s2.container.state)&#xD;
endif&#xD;
endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MOhz0okxEeOMQ5AKLd10lA" name="result" type="_MOdiQIkxEeOMQ5AKLd10lA" direction="return"/>
<ownedParameter xmi:id="_MOhz04kxEeOMQ5AKLd10lA" name="s1" type="_xM1WoPnlEdunWsS3se92JQ"/>
<ownedParameter xmi:id="_MOhz1IkxEeOMQ5AKLd10lA" name="s2" type="_xM1WoPnlEdunWsS3se92JQ"/>
</ownedOperation>
<ownedOperation xmi:id="_MOhz1YkxEeOMQ5AKLd10lA" name="ancestor" bodyCondition="_MOhz14kxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MOhz1okxEeOMQ5AKLd10lA" annotatedElement="_MOhz1YkxEeOMQ5AKLd10lA">
<body>The query ancestor(s1, s2) checks whether Vertex s2 is an ancestor of Vertex s1.</body>
</ownedComment>
<ownedRule xmi:id="_MOhz14kxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MOhz1YkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOhz2IkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if (s2 = s1) then &#xD;
true &#xD;
else &#xD;
if s1.container.stateMachine->notEmpty() then &#xD;
true&#xD;
else &#xD;
if s2.container.stateMachine->notEmpty() then &#xD;
false&#xD;
else&#xD;
ancestor(s1, s2.container.state)&#xD;
endif&#xD;
endif&#xD;
endif )</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MOhz2YkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_MOhz2okxEeOMQ5AKLd10lA" name="s1" type="_xM1WoPnlEdunWsS3se92JQ"/>
<ownedParameter xmi:id="_MOhz24kxEeOMQ5AKLd10lA" name="s2" type="_xM1WoPnlEdunWsS3se92JQ"/>
</ownedOperation>
<ownedOperation xmi:id="_MOhz3IkxEeOMQ5AKLd10lA" name="isConsistentWith" bodyCondition="_MOhz3okxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MMfzYIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOhz3YkxEeOMQ5AKLd10lA" annotatedElement="_MOhz3IkxEeOMQ5AKLd10lA">
<body>The query isConsistentWith() specifies that a redefining StateMachine is consistent with a redefined StateMachine provided that the redefining StateMachine is an extension of the redefined StateMachine : Regions are inherited and Regions can be added, inherited Regions can be redefined. In case of multiple redefining StateMachine, extension implies that the redefining StateMachine gets orthogonal Regions for each of the redefined StateMachine.</body>
</ownedComment>
<ownedRule xmi:id="_MOhz3okxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MOhz3IkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOhz34kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (-- the following is merely a default body; it is expected that the specific form of this constraint will be specified by profiles&#xD;
true)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MOhz4IkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_MOhz4YkxEeOMQ5AKLd10lA" name="redefiningElement" type="_uCRA4La-EeCRxrN1JUGuxA"/>
</ownedOperation>
<ownedOperation xmi:id="_MOhz4okxEeOMQ5AKLd10lA" name="isRedefinitionContextValid" bodyCondition="_MOhz5IkxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MMfzaIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOhz44kxEeOMQ5AKLd10lA" annotatedElement="_MOhz4okxEeOMQ5AKLd10lA">
<body>The query isRedefinitionContextValid() specifies whether the redefinition context of a StateMachine is properly related to the redefinition contexts of the specified StateMachine to allow this element to redefine the other. The context Classifier of a redefining StateMachine must redefine the context Classifier of the redefined StateMachine.</body>
</ownedComment>
<ownedRule xmi:id="_MOhz5IkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MOhz4okxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOhz5YkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if redefinedElement.oclIsKindOf(StateMachine) then&#xD;
let redefinedStateMachine : StateMachine = redefinedElement.oclAsType(StateMachine) in&#xD;
self._'context'().oclAsType(BehavioredClassifier).redefinedClassifier->&#xD;
includes(redefinedStateMachine._'context'())&#xD;
else&#xD;
false&#xD;
endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MOhz5okxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_MOhz54kxEeOMQ5AKLd10lA" name="redefinedElement" type="_uCRA4La-EeCRxrN1JUGuxA"/>
</ownedOperation>
<ownedOperation xmi:id="_MOhz6IkxEeOMQ5AKLd10lA" name="LCAState" bodyCondition="_MOhz6okxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MOhz6YkxEeOMQ5AKLd10lA" annotatedElement="_MOhz6IkxEeOMQ5AKLd10lA">
<body>This utility funciton is like the LCA, except that it returns the nearest composite State that contains both input Vertices.</body>
</ownedComment>
<ownedRule xmi:id="_MOhz6okxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MOhz6IkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOhz64kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if v2.oclIsTypeOf(State) and ancestor(v1, v2) then&#xD;
v2.oclAsType(State)&#xD;
else if v1.oclIsTypeOf(State) and ancestor(v2, v1) then&#xD;
v1.oclAsType(State)&#xD;
else if (v1.container.state->isEmpty() or v2.container.state->isEmpty()) then &#xD;
null.oclAsType(State)&#xD;
else LCAState(v1.container.state, v2.container.state)&#xD;
endif endif endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MOhz7IkxEeOMQ5AKLd10lA" name="result" type="_AjbzoIRREeOnobsWSpJONg" direction="return"/>
<ownedParameter xmi:id="_MOhz7YkxEeOMQ5AKLd10lA" name="v1" type="_xM1WoPnlEdunWsS3se92JQ"/>
<ownedParameter xmi:id="_MOhz7okxEeOMQ5AKLd10lA" name="v2" type="_xM1WoPnlEdunWsS3se92JQ"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_ykKV8PnlEdunWsS3se92JQ" name="Transition">
<ownedComment xmi:id="_MOhz74kxEeOMQ5AKLd10lA" annotatedElement="_ykKV8PnlEdunWsS3se92JQ">
<body>A Transition represents an arc between exactly one source Vertex and exactly one Target vertex (the source and targets may be the same Vertex). It may form part of a compound transition, which takes the StateMachine from one steady State configuration to another, representing the full response of the StateMachine to an occurrence of an Event that triggered it.</body>
</ownedComment>
<ownedRule xmi:id="_MOhz8IkxEeOMQ5AKLd10lA" name="state_is_external" constrainedElement="_ykKV8PnlEdunWsS3se92JQ">
<ownedComment xmi:id="_MOhz8YkxEeOMQ5AKLd10lA" annotatedElement="_MOhz8IkxEeOMQ5AKLd10lA">
<body>A Transition with kind external can source any Vertex except entry points.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOiawIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(kind = TransitionKind::external) implies&#xD;
not (source.oclIsKindOf(Pseudostate) and source.oclAsType(Pseudostate).kind = PseudostateKind::entryPoint)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOiawYkxEeOMQ5AKLd10lA" name="join_segment_guards" constrainedElement="_ykKV8PnlEdunWsS3se92JQ">
<ownedComment xmi:id="_MOiawokxEeOMQ5AKLd10lA" annotatedElement="_MOiawYkxEeOMQ5AKLd10lA">
<body>A join segment must not have Guards or Triggers.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOiaw4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(target.oclIsKindOf(Pseudostate) and target.oclAsType(Pseudostate).kind = PseudostateKind::join) implies (guard = null and trigger->isEmpty())</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOiaxIkxEeOMQ5AKLd10lA" name="state_is_internal" constrainedElement="_ykKV8PnlEdunWsS3se92JQ">
<ownedComment xmi:id="_MOiaxYkxEeOMQ5AKLd10lA" annotatedElement="_MOiaxIkxEeOMQ5AKLd10lA">
<body>A Transition with kind internal must have a State as its source, and its source and target must be equal.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOiaxokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(kind = TransitionKind::internal) implies&#xD;
(source.oclIsKindOf (State) and source = target)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOiax4kxEeOMQ5AKLd10lA" name="outgoing_pseudostates" constrainedElement="_ykKV8PnlEdunWsS3se92JQ">
<ownedComment xmi:id="_MOiayIkxEeOMQ5AKLd10lA" annotatedElement="_MOiax4kxEeOMQ5AKLd10lA">
<body>Transitions outgoing Pseudostates may not have a Trigger.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOiayYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>source.oclIsKindOf(Pseudostate) and (source.oclAsType(Pseudostate).kind &lt;> PseudostateKind::initial) implies trigger->isEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOiayokxEeOMQ5AKLd10lA" name="join_segment_state" constrainedElement="_ykKV8PnlEdunWsS3se92JQ">
<ownedComment xmi:id="_MOiay4kxEeOMQ5AKLd10lA" annotatedElement="_MOiayokxEeOMQ5AKLd10lA">
<body>A join segment must always originate from a State.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOiazIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(target.oclIsKindOf(Pseudostate) and target.oclAsType(Pseudostate).kind = PseudostateKind::join) implies (source.oclIsKindOf(State))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOiazYkxEeOMQ5AKLd10lA" name="fork_segment_state" constrainedElement="_ykKV8PnlEdunWsS3se92JQ">
<ownedComment xmi:id="_MOiazokxEeOMQ5AKLd10lA" annotatedElement="_MOiazYkxEeOMQ5AKLd10lA">
<body>A fork segment must always target a State.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOiaz4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(source.oclIsKindOf(Pseudostate) and source.oclAsType(Pseudostate).kind = PseudostateKind::fork) implies (target.oclIsKindOf(State))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOia0IkxEeOMQ5AKLd10lA" name="state_is_local" constrainedElement="_ykKV8PnlEdunWsS3se92JQ">
<ownedComment xmi:id="_MOia0YkxEeOMQ5AKLd10lA" annotatedElement="_MOia0IkxEeOMQ5AKLd10lA">
<body>A Transition with kind local must have a composite State or an entry point as its source.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOia0okxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(kind = TransitionKind::local) implies&#xD;
((source.oclIsKindOf (State) and source.oclAsType(State).isComposite) or&#xD;
(source.oclIsKindOf (Pseudostate) and source.oclAsType(Pseudostate).kind = PseudostateKind::entryPoint))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOia04kxEeOMQ5AKLd10lA" name="initial_transition" constrainedElement="_ykKV8PnlEdunWsS3se92JQ">
<ownedComment xmi:id="_MOia1IkxEeOMQ5AKLd10lA" annotatedElement="_MOia04kxEeOMQ5AKLd10lA">
<body>An initial Transition at the topmost level Region of a StateMachine that has no Trigger.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOia1YkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(source.oclIsKindOf(Pseudostate) and container.stateMachine->notEmpty()) implies
trigger->isEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOia1okxEeOMQ5AKLd10lA" name="fork_segment_guards" constrainedElement="_ykKV8PnlEdunWsS3se92JQ">
<ownedComment xmi:id="_MOia14kxEeOMQ5AKLd10lA" annotatedElement="_MOia1okxEeOMQ5AKLd10lA">
<body>A fork segment must not have Guards or Triggers.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOia2IkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(source.oclIsKindOf(Pseudostate) and source.oclAsType(Pseudostate).kind = PseudostateKind::fork) implies (guard = null and trigger->isEmpty())</body>
</specification>
</ownedRule>
<generalization xmi:id="_MOia2YkxEeOMQ5AKLd10lA" general="_ZiwkoGwLEdq7X4sGURiZYA"/>
<generalization xmi:id="_MOjB0IkxEeOMQ5AKLd10lA" general="_uCRA4La-EeCRxrN1JUGuxA"/>
<ownedAttribute xmi:id="_MOjB0YkxEeOMQ5AKLd10lA" name="container" type="_MOdiQIkxEeOMQ5AKLd10lA" subsettedProperty="_1vzv0LbIEeCRxrN1JUGuxA" association="_MOpIfYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOjB0okxEeOMQ5AKLd10lA" annotatedElement="_MOjB0YkxEeOMQ5AKLd10lA">
<body>Designates the Region that owns this Transition.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MOjB04kxEeOMQ5AKLd10lA" name="effect" type="_TUPtYGveEdq4DLWZOhbdEA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MOnTSYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOjB1IkxEeOMQ5AKLd10lA" annotatedElement="_MOjB04kxEeOMQ5AKLd10lA">
<body>Specifies an optional behavior to be performed when the Transition fires.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOjB1YkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOjB1okxEeOMQ5AKLd10lA" name="guard" type="_MNAJsIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MNQBXIkxEeOMQ5AKLd10lA" association="_MOmsO4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOjB14kxEeOMQ5AKLd10lA" annotatedElement="_MOjB1okxEeOMQ5AKLd10lA">
<body>A guard is a Constraint that provides a fine-grained control over the firing of the Transition. The guard is evaluated when an Event occurrence is dispatched by the StateMachine. If the guard is true at that time, the Transition may be enabled, otherwise, it is disabled. Guards should be pure expressions without side effects. Guard expressions with side effects are ill formed.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOjB2IkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOjB2YkxEeOMQ5AKLd10lA" name="kind" type="_MOmsMIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOjB2okxEeOMQ5AKLd10lA" annotatedElement="_MOjB2YkxEeOMQ5AKLd10lA">
<body>Indicates the precise type of the Transition.</body>
</ownedComment>
<defaultValue xmi:type="uml:InstanceValue" xmi:id="_MOjB24kxEeOMQ5AKLd10lA" type="_MOmsMIkxEeOMQ5AKLd10lA" instance="_MOmsNokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOjB3IkxEeOMQ5AKLd10lA" name="redefinedTransition" type="_ykKV8PnlEdunWsS3se92JQ" subsettedProperty="_MMfMVIkxEeOMQ5AKLd10lA" association="_MOnTQIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOjB3YkxEeOMQ5AKLd10lA" annotatedElement="_MOjB3IkxEeOMQ5AKLd10lA">
<body>The Transition that is redefined by this Transition.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOjB3okxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOjB34kxEeOMQ5AKLd10lA" name="redefinitionContext" type="_6UV2QGwJEdq7X4sGURiZYA" isReadOnly="true" isDerived="true" redefinedProperty="_zYrE4La-EeCRxrN1JUGuxA" association="_MOnTRIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOjB4IkxEeOMQ5AKLd10lA" annotatedElement="_MOjB34kxEeOMQ5AKLd10lA">
<body>References the Classifier in which context this element may be redefined.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_JPYJofnmEdunWsS3se92JQ" name="source" visibility="public" type="_xM1WoPnlEdunWsS3se92JQ" association="_JPYJoPnmEdunWsS3se92JQ">
<ownedComment xmi:id="_MOjB4YkxEeOMQ5AKLd10lA" annotatedElement="_JPYJofnmEdunWsS3se92JQ">
<body>Designates the originating Vertex (State or Pseudostate) of the Transition.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JPYJovnmEdunWsS3se92JQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JPYJo_nmEdunWsS3se92JQ" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="_EhVtMPnmEdunWsS3se92JQ" name="target" visibility="public" type="_xM1WoPnlEdunWsS3se92JQ" association="_EhL8MPnmEdunWsS3se92JQ">
<ownedComment xmi:id="_MOjB4okxEeOMQ5AKLd10lA" annotatedElement="_EhVtMPnmEdunWsS3se92JQ">
<body>Designates the target Vertex that is reached when the Transition is taken.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EhVtMfnmEdunWsS3se92JQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_EhVtMvnmEdunWsS3se92JQ" value="1"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOjo4IkxEeOMQ5AKLd10lA" name="trigger" type="_MM6qIIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MOmsOIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOjo4YkxEeOMQ5AKLd10lA" annotatedElement="_MOjo4IkxEeOMQ5AKLd10lA">
<body>Specifies the Triggers that may fire the transition.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOjo4okxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOjo44kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedOperation xmi:id="_MOjo5IkxEeOMQ5AKLd10lA" name="containingStateMachine" bodyCondition="_MOjo5okxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MOjo5YkxEeOMQ5AKLd10lA" annotatedElement="_MOjo5IkxEeOMQ5AKLd10lA">
<body>The query containingStateMachine() returns the StateMachine that contains the Transition either directly or transitively.</body>
</ownedComment>
<ownedRule xmi:id="_MOjo5okxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MOjo5IkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOjo54kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (container.containingStateMachine())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MOjo6IkxEeOMQ5AKLd10lA" name="result" type="_MOhzsIkxEeOMQ5AKLd10lA" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="_MOjo6YkxEeOMQ5AKLd10lA" name="isConsistentWith" bodyCondition="_MOjo64kxEeOMQ5AKLd10lA" isQuery="true" precondition="_MOjo7YkxEeOMQ5AKLd10lA" redefinedOperation="_MMfzYIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOjo6okxEeOMQ5AKLd10lA" annotatedElement="_MOjo6YkxEeOMQ5AKLd10lA">
<body>The query isConsistentWith() specifies that a redefining Transition is consistent with a redefined Transition provided that the redefining Transition has the following relation to the redefined Transition: A redefining Transition redefines all properties of the corresponding redefined Transition except the source State and the Trigger.</body>
</ownedComment>
<ownedRule xmi:id="_MOjo64kxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MOjo6YkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOjo7IkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (-- the following is merely a default body; it is expected that the specific form of this constraint will be specified by profiles&#xD;
true)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOjo7YkxEeOMQ5AKLd10lA" name="pre" constrainedElement="_MOjo6YkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOjo7okxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>redefiningElement.isRedefinitionContextValid(self)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MOjo74kxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_MOjo8IkxEeOMQ5AKLd10lA" name="redefiningElement" type="_uCRA4La-EeCRxrN1JUGuxA"/>
</ownedOperation>
<ownedOperation xmi:id="_MOjo8YkxEeOMQ5AKLd10lA" name="redefinitionContext" bodyCondition="_MOjo84kxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MOjo8okxEeOMQ5AKLd10lA" annotatedElement="_MOjo8YkxEeOMQ5AKLd10lA">
<body>The redefinition context of a Transition is the nearest containing StateMachine.</body>
</ownedComment>
<ownedRule xmi:id="_MOjo84kxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MOjo8YkxEeOMQ5AKLd10lA _MOjB34kxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOjo9IkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (let sm : StateMachine = containingStateMachine() in
if sm._'context' = null or sm.general->notEmpty() then
sm
else
sm._'context'
endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MOjo9YkxEeOMQ5AKLd10lA" name="result" type="_6UV2QGwJEdq7X4sGURiZYA" direction="return"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_xM1WoPnlEdunWsS3se92JQ" name="Vertex" isAbstract="true">
<ownedComment xmi:id="_MOjo9okxEeOMQ5AKLd10lA" annotatedElement="_xM1WoPnlEdunWsS3se92JQ">
<body>A Vertex is an abstraction of a node in a StateMachine graph. It can be the source or destination of any number of Transitions.</body>
</ownedComment>
<generalization xmi:id="_MOkP8IkxEeOMQ5AKLd10lA" general="_csVgUGvtEdqG6fBIPwe-mw"/>
<ownedAttribute xmi:id="_MOkP8YkxEeOMQ5AKLd10lA" name="container" type="_MOdiQIkxEeOMQ5AKLd10lA" subsettedProperty="_1vzv0LbIEeCRxrN1JUGuxA" association="_MOpId4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOkP8okxEeOMQ5AKLd10lA" annotatedElement="_MOkP8YkxEeOMQ5AKLd10lA">
<body>The Region that contains this Vertex.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOkP84kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOkP9IkxEeOMQ5AKLd10lA" name="incoming" type="_ykKV8PnlEdunWsS3se92JQ" isReadOnly="true" isDerived="true" association="_EhL8MPnmEdunWsS3se92JQ">
<ownedComment xmi:id="_MOkP9YkxEeOMQ5AKLd10lA" annotatedElement="_MOkP9IkxEeOMQ5AKLd10lA">
<body>Specifies the Transitions entering this Vertex.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOkP9okxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOkP94kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOkP-IkxEeOMQ5AKLd10lA" name="outgoing" type="_ykKV8PnlEdunWsS3se92JQ" isReadOnly="true" isDerived="true" association="_JPYJoPnmEdunWsS3se92JQ">
<ownedComment xmi:id="_MOkP-YkxEeOMQ5AKLd10lA" annotatedElement="_MOkP-IkxEeOMQ5AKLd10lA">
<body>Specifies the Transitions departing from this Vertex.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOkP-okxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOkP-4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedOperation xmi:id="_MOkP_IkxEeOMQ5AKLd10lA" name="containingStateMachine" bodyCondition="_MOkP_okxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MOkP_YkxEeOMQ5AKLd10lA" annotatedElement="_MOkP_IkxEeOMQ5AKLd10lA">
<body>The operation containingStateMachine() returns the StateMachine in which this Vertex is defined.</body>
</ownedComment>
<ownedRule xmi:id="_MOkP_okxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MOkP_IkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOkP_4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if container &lt;> null
then
-- the container is a region
container.containingStateMachine()
else
if (self.oclIsKindOf(Pseudostate)) and ((self.oclAsType(Pseudostate).kind = PseudostateKind::entryPoint) or (self.oclAsType(Pseudostate).kind = PseudostateKind::exitPoint)) then
self.oclAsType(Pseudostate).stateMachine
else
if (self.oclIsKindOf(ConnectionPointReference)) then
self.oclAsType(ConnectionPointReference).state.containingStateMachine() -- no other valid cases possible
else
null
endif
endif
endif
)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MOkQAIkxEeOMQ5AKLd10lA" name="result" type="_MOhzsIkxEeOMQ5AKLd10lA" direction="return"/>
</ownedOperation>
<ownedOperation xmi:id="_ZdMVcLL8EeCBifIhhuFqZA" name="incoming" visibility="protected" bodyCondition="_MOkQAokxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MOkQAYkxEeOMQ5AKLd10lA" annotatedElement="_ZdMVcLL8EeCBifIhhuFqZA">
<body>Derivation for Vertex::/incoming.</body>
</ownedComment>
<ownedRule xmi:id="_MOkQAokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_ZdMVcLL8EeCBifIhhuFqZA _MOkP9IkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOkQA4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (Transition.allInstances()->select(target=self))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_apiMwLL8EeCBifIhhuFqZA" name="result" type="_ykKV8PnlEdunWsS3se92JQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOkQBIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOk3AIkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_982T8LL9EeCBifIhhuFqZA" name="outgoing" visibility="protected" bodyCondition="_MOk3AokxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MOk3AYkxEeOMQ5AKLd10lA" annotatedElement="_982T8LL9EeCBifIhhuFqZA">
<body>Derivation for Vertex::/outgoing</body>
</ownedComment>
<ownedRule xmi:id="_MOk3AokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_982T8LL9EeCBifIhhuFqZA _MOkP-IkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOk3A4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (Transition.allInstances()->select(source=self))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_982T8bL9EeCBifIhhuFqZA" name="result" type="_ykKV8PnlEdunWsS3se92JQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOk3BIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOk3BYkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MOleEIkxEeOMQ5AKLd10lA" name="isContainedInState" bodyCondition="_MOleEokxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MOleEYkxEeOMQ5AKLd10lA" annotatedElement="_MOleEIkxEeOMQ5AKLd10lA">
<body>This utility operation returns true if the Vertex is contained in the State s (input argument).</body>
</ownedComment>
<ownedRule xmi:id="_MOleEokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MOleEIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOleE4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if not s.isComposite() or container->isEmpty() then&#xD;
false&#xD;
else&#xD;
if container.state = s then &#xD;
true&#xD;
else&#xD;
container.state.isContainedInState(s)&#xD;
endif&#xD;
endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MOleFIkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_MOleFYkxEeOMQ5AKLd10lA" name="s" type="_AjbzoIRREeOnobsWSpJONg"/>
</ownedOperation>
<ownedOperation xmi:id="_MOleFokxEeOMQ5AKLd10lA" name="isContainedInRegion" bodyCondition="_MOleGIkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MOleF4kxEeOMQ5AKLd10lA" annotatedElement="_MOleFokxEeOMQ5AKLd10lA">
<body>This utility query returns true if the Vertex is contained in the Region r (input argument).</body>
</ownedComment>
<ownedRule xmi:id="_MOleGIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MOleFokxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOleGYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if (container = r) then&#xD;
true&#xD;
else&#xD;
if (r.state->isEmpty()) then&#xD;
false&#xD;
else&#xD;
container.state.isContainedInRegion(r)&#xD;
endif&#xD;
endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MOleGokxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_MOleG4kxEeOMQ5AKLd10lA" name="r" type="_MOdiQIkxEeOMQ5AKLd10lA"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Enumeration" xmi:id="_WTCRYC-TEeO5Ur9hrpFPZA" name="PseudostateKind" visibility="private">
<ownedComment xmi:id="_MOleHIkxEeOMQ5AKLd10lA" annotatedElement="_WTCRYC-TEeO5Ur9hrpFPZA">
<body>PseudostateKind is an Enumeration type that is used to differentiate various kinds of Pseudostates.</body>
</ownedComment>
<ownedLiteral xmi:id="_WTCRYi-TEeO5Ur9hrpFPZA" name="initial">
<ownedComment xmi:id="_WTCRYy-TEeO5Ur9hrpFPZA" annotatedElement="_WTCRYi-TEeO5Ur9hrpFPZA">
<body>An initial pseudostate represents a default vertex that is the source for a single transition to the default state of a composite state. There can be at most one initial vertex in a region. The outgoing transition from the initial vertex may have a behavior, but not a trigger or guard.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_WTCRZC-TEeO5Ur9hrpFPZA" name="deepHistory">
<ownedComment xmi:id="_WTCRZS-TEeO5Ur9hrpFPZA" annotatedElement="_WTCRZC-TEeO5Ur9hrpFPZA">
<body>DeepHistory represents the most recent active configuration of the composite state that directly contains this pseudostate; e.g. the state configuration that was active when the composite state was last exited. A composite state can have at most one deep history vertex. At most one transition may originate from the history connector to the default deep history state. This transition is taken in case the composite state had never been active before. Entry actions of states entered on the path to the state represented by a deep history are performed.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_WTCRZi-TEeO5Ur9hrpFPZA" name="shallowHistory">
<ownedComment xmi:id="_WTCRZy-TEeO5Ur9hrpFPZA" annotatedElement="_WTCRZi-TEeO5Ur9hrpFPZA">
<body>ShallowHistory represents the most recent active substate of its containing state (but not the substates of that substate). A composite state can have at most one shallow history vertex. A transition coming into the shallow history vertex is equivalent to a transition coming into the most recent active substate of a state. At most one transition may originate from the history connector to the default shallow history state. This transition is taken in case the composite state had never been active before. Entry actions of states entered on the path to the state represented by a shallow history are performed.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_WTCRaC-TEeO5Ur9hrpFPZA" name="join">
<ownedComment xmi:id="_WTCRaS-TEeO5Ur9hrpFPZA" annotatedElement="_WTCRaC-TEeO5Ur9hrpFPZA">
<body>Join vertices serve to merge several transitions emanating from source vertices in different orthogonal regions. The transitions entering a join vertex cannot have guards or triggers.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_WTCRai-TEeO5Ur9hrpFPZA" name="fork">
<ownedComment xmi:id="_WTCRay-TEeO5Ur9hrpFPZA" annotatedElement="_WTCRai-TEeO5Ur9hrpFPZA">
<body>Fork vertices serve to split an incoming transition into two or more transitions terminating on orthogonal target vertices (i.e. vertices in different regions of a composite state). The segments outgoing from a fork vertex must not have guards or triggers.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_WTCRbC-TEeO5Ur9hrpFPZA" name="junction">
<ownedComment xmi:id="_WTCRbS-TEeO5Ur9hrpFPZA" annotatedElement="_WTCRbC-TEeO5Ur9hrpFPZA">
<body>Junction vertices are semantic-free vertices that are used to chain together multiple transitions. They are used to construct compound transition paths between states. For example, a junction can be used to converge multiple incoming transitions into a single outgoing transition representing a shared transition path (this is known as an merge). Conversely, they can be used to split an incoming transition into multiple outgoing transition segments with different guard conditions. This realizes a static conditional branch. (In the latter case, outgoing transitions whose guard conditions evaluate to false are disabled. A predefined guard denoted 'else' may be defined for at most one outgoing transition. This transition is enabled if all the guards labeling the other transitions are false.) Static conditional branches are distinct from dynamic conditional branches that are realized by choice vertices (described below).</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_WTCRbi-TEeO5Ur9hrpFPZA" name="choice">
<ownedComment xmi:id="_WTCRby-TEeO5Ur9hrpFPZA" annotatedElement="_WTCRbi-TEeO5Ur9hrpFPZA">
<body>Choice vertices which, when reached, result in the dynamic evaluation of the guards of the triggers of its outgoing transitions. This realizes a dynamic conditional branch. It allows splitting of transitions into multiple outgoing paths such that the decision on which path to take may be a function of the results of prior actions performed in the same run-tocompletion step. If more than one of the guards evaluates to true, an arbitrary one is selected. If none of the guards evaluates to true, then the model is considered ill-formed. (To avoid this, it is recommended to define one outgoing transition with the predefined else guard for every choice vertex.) Choice vertices should be distinguished from static branch points that are based on junction points (described above).</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_WTCRcC-TEeO5Ur9hrpFPZA" name="entryPoint">
<ownedComment xmi:id="_WTCRcS-TEeO5Ur9hrpFPZA" annotatedElement="_WTCRcC-TEeO5Ur9hrpFPZA">
<body>An entry point pseudostate is an entry point of a state machine or composite state. In each region of the state machine or composite state it has a single transition to a vertex within the same region.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_WTCRci-TEeO5Ur9hrpFPZA" name="exitPoint">
<ownedComment xmi:id="_WTCRcy-TEeO5Ur9hrpFPZA" annotatedElement="_WTCRci-TEeO5Ur9hrpFPZA">
<body>An exit point pseudostate is an exit point of a state machine or composite state. Entering an exit point within any region of the composite state or state machine referenced by a submachine state implies the exit of this composite state or submachine state and the triggering of the transition that has this exit point as source in the state machine enclosing the submachine or composite state.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_WTCRdC-TEeO5Ur9hrpFPZA" name="terminate">
<ownedComment xmi:id="_WTCRdS-TEeO5Ur9hrpFPZA" annotatedElement="_WTCRdC-TEeO5Ur9hrpFPZA">
<body>Entering a terminate pseudostate implies that the execution of this state machine by means of its context object is terminated. The state machine does not exit any states nor does it perform any exit actions other than those associated with the transition leading to the terminate pseudostate. Entering a terminate pseudostate is equivalent to invoking a DestroyObjectAction.</body>
</ownedComment>
</ownedLiteral>
</packagedElement>
<packagedElement xmi:type="uml:Enumeration" xmi:id="_MOmsMIkxEeOMQ5AKLd10lA" name="TransitionKind">
<ownedComment xmi:id="_MOmsMYkxEeOMQ5AKLd10lA" annotatedElement="_MOmsMIkxEeOMQ5AKLd10lA">
<body>TransitionKind is an Enumeration type used to differentiate the various kinds of Transitions.</body>
</ownedComment>
<ownedLiteral xmi:id="_MOmsMokxEeOMQ5AKLd10lA" name="internal">
<ownedComment xmi:id="_MOmsM4kxEeOMQ5AKLd10lA" annotatedElement="_MOmsMokxEeOMQ5AKLd10lA">
<body>Implies that the Transition, if triggered, occurs without exiting or entering the source State (i.e., it does not cause a state change). This means that the entry or exit condition of the source State will not be invoked. An internal Transition can be taken even if the SateMachine is in one or more Regions nested within the associated State.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_MOmsNIkxEeOMQ5AKLd10lA" name="local">
<ownedComment xmi:id="_MOmsNYkxEeOMQ5AKLd10lA" annotatedElement="_MOmsNIkxEeOMQ5AKLd10lA">
<body>Implies that the Transition, if triggered, will not exit the composite (source) State, but it will exit and re-enter any state within the composite State that is in the current state configuration.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_MOmsNokxEeOMQ5AKLd10lA" name="external">
<ownedComment xmi:id="_MOmsN4kxEeOMQ5AKLd10lA" annotatedElement="_MOmsNokxEeOMQ5AKLd10lA">
<body>Implies that the Transition, if triggered, will exit the composite (source) State.</body>
</ownedComment>
</ownedLiteral>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_EhL8MPnmEdunWsS3se92JQ" name="A_incoming_target_vertex" memberEnd="_MOkP9IkxEeOMQ5AKLd10lA _EhVtMPnmEdunWsS3se92JQ _EhVtM_nmEdunWsS3se92JQ">
<ownedEnd xmi:id="_EhVtM_nmEdunWsS3se92JQ" name="incoming" visibility="private" type="_ykKV8PnlEdunWsS3se92JQ" association="_EhL8MPnmEdunWsS3se92JQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_EhVtNPnmEdunWsS3se92JQ"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_EhVtNfnmEdunWsS3se92JQ" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_JPYJoPnmEdunWsS3se92JQ" name="A_outgoing_source_vertex" memberEnd="_MOkP-IkxEeOMQ5AKLd10lA _JPYJofnmEdunWsS3se92JQ _JPh6oPnmEdunWsS3se92JQ">
<ownedEnd xmi:id="_JPh6oPnmEdunWsS3se92JQ" name="outgoing" visibility="private" type="_ykKV8PnlEdunWsS3se92JQ" association="_JPYJoPnmEdunWsS3se92JQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JPh6ofnmEdunWsS3se92JQ"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JPh6ovnmEdunWsS3se92JQ" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MOmsOIkxEeOMQ5AKLd10lA" name="A_trigger_transition" memberEnd="_MOjo4IkxEeOMQ5AKLd10lA _MOmsOYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MOmsOYkxEeOMQ5AKLd10lA" name="transition" type="_ykKV8PnlEdunWsS3se92JQ" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MOmsOIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOmsOokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MOmsO4kxEeOMQ5AKLd10lA" name="A_guard_transition" memberEnd="_MOjB1okxEeOMQ5AKLd10lA _MOmsPIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MOmsPIkxEeOMQ5AKLd10lA" name="transition" type="_ykKV8PnlEdunWsS3se92JQ" subsettedProperty="_MNAJwIkxEeOMQ5AKLd10lA" association="_MOmsO4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOmsPYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MOnTQIkxEeOMQ5AKLd10lA" name="A_redefinedTransition_transition" memberEnd="_MOjB3IkxEeOMQ5AKLd10lA _MOnTQYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MOnTQYkxEeOMQ5AKLd10lA" name="transition" type="_ykKV8PnlEdunWsS3se92JQ" subsettedProperty="_MMmhGYkxEeOMQ5AKLd10lA" association="_MOnTQIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOnTQokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOnTQ4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MOnTRIkxEeOMQ5AKLd10lA" name="A_redefinitionContext_transition" isDerived="true" memberEnd="_MOjB34kxEeOMQ5AKLd10lA _MOnTRokxEeOMQ5AKLd10lA">
<generalization xmi:id="_MOnTRYkxEeOMQ5AKLd10lA" general="_MMmhFIkxEeOMQ5AKLd10lA"/>
<ownedEnd xmi:id="_MOnTRokxEeOMQ5AKLd10lA" name="transition" type="_ykKV8PnlEdunWsS3se92JQ" subsettedProperty="_MMmhFYkxEeOMQ5AKLd10lA" association="_MOnTRIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOnTR4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOnTSIkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MOnTSYkxEeOMQ5AKLd10lA" name="A_effect_transition" memberEnd="_MOjB04kxEeOMQ5AKLd10lA _MOnTSokxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MOnTSokxEeOMQ5AKLd10lA" name="transition" type="_ykKV8PnlEdunWsS3se92JQ" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MOnTSYkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOnTS4kxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MOnTTIkxEeOMQ5AKLd10lA" name="A_submachineState_submachine" memberEnd="_MOhzyokxEeOMQ5AKLd10lA _MOfXf4kxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MOn6UIkxEeOMQ5AKLd10lA" name="A_connectionPoint_stateMachine" memberEnd="_MOhzv4kxEeOMQ5AKLd10lA _MOc7VIkxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MOn6UYkxEeOMQ5AKLd10lA" name="A_region_stateMachine" memberEnd="_MOhzx4kxEeOMQ5AKLd10lA _MOdiWIkxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MOn6UokxEeOMQ5AKLd10lA" name="A_extendedStateMachine_stateMachine" memberEnd="_MOhzw4kxEeOMQ5AKLd10lA _MOn6U4kxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MOn6U4kxEeOMQ5AKLd10lA" name="stateMachine" type="_MOhzsIkxEeOMQ5AKLd10lA" subsettedProperty="_MM8fWokxEeOMQ5AKLd10lA" association="_MOn6UokxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOn6VIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOn6VYkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MOn6VokxEeOMQ5AKLd10lA" name="A_redefinitionContext_state" isDerived="true" memberEnd="_MOfXdokxEeOMQ5AKLd10lA _MOn6WIkxEeOMQ5AKLd10lA">
<generalization xmi:id="_MOn6V4kxEeOMQ5AKLd10lA" general="_MMmhFIkxEeOMQ5AKLd10lA"/>
<ownedEnd xmi:id="_MOn6WIkxEeOMQ5AKLd10lA" name="state" type="_AjbzoIRREeOnobsWSpJONg" subsettedProperty="_MMmhFYkxEeOMQ5AKLd10lA" association="_MOn6VokxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOn6WYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOn6WokxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MOn6W4kxEeOMQ5AKLd10lA" name="A_region_state" memberEnd="_MOfXeIkxEeOMQ5AKLd10lA _MOdiVYkxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MOn6XIkxEeOMQ5AKLd10lA" name="A_stateInvariant_owningState" memberEnd="_MOfXfIkxEeOMQ5AKLd10lA _MOn6XYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MOn6XYkxEeOMQ5AKLd10lA" name="owningState" type="_AjbzoIRREeOnobsWSpJONg" subsettedProperty="_MNAJwIkxEeOMQ5AKLd10lA" association="_MOn6XIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOn6XokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MOohYIkxEeOMQ5AKLd10lA" name="A_redefinedState_state" memberEnd="_MOfXc4kxEeOMQ5AKLd10lA _MOohYYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MOohYYkxEeOMQ5AKLd10lA" name="state" type="_AjbzoIRREeOnobsWSpJONg" subsettedProperty="_MMmhGYkxEeOMQ5AKLd10lA" association="_MOohYIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOohYokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOohY4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MOohZIkxEeOMQ5AKLd10lA" name="A_deferrableTrigger_state" memberEnd="_MOewaYkxEeOMQ5AKLd10lA _MOohZYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MOohZYkxEeOMQ5AKLd10lA" name="state" type="_AjbzoIRREeOnobsWSpJONg" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MOohZIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOohZokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MOohZ4kxEeOMQ5AKLd10lA" name="A_connection_state" memberEnd="_MOewYYkxEeOMQ5AKLd10lA _MOZ38YkxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MOohaIkxEeOMQ5AKLd10lA" name="A_entry_state" memberEnd="_MOewcIkxEeOMQ5AKLd10lA _MOohaYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MOohaYkxEeOMQ5AKLd10lA" name="state" type="_AjbzoIRREeOnobsWSpJONg" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MOohaIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOohaokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MOoha4kxEeOMQ5AKLd10lA" name="A_connectionPoint_state" memberEnd="_MOewZYkxEeOMQ5AKLd10lA _MOc7UYkxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MOohbIkxEeOMQ5AKLd10lA" name="A_doActivity_state" memberEnd="_MOewbYkxEeOMQ5AKLd10lA _MOohbYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MOohbYkxEeOMQ5AKLd10lA" name="state" type="_AjbzoIRREeOnobsWSpJONg" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MOohbIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOohbokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MOpIcIkxEeOMQ5AKLd10lA" name="A_exit_state" memberEnd="_MOewc4kxEeOMQ5AKLd10lA _MOpIcYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MOpIcYkxEeOMQ5AKLd10lA" name="state" type="_AjbzoIRREeOnobsWSpJONg" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MOpIcIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOpIcokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MOpIc4kxEeOMQ5AKLd10lA" name="A_extendedRegion_region" memberEnd="_MOdiUIkxEeOMQ5AKLd10lA _MOpIdIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MOpIdIkxEeOMQ5AKLd10lA" name="region" type="_MOdiQIkxEeOMQ5AKLd10lA" subsettedProperty="_MMmhGYkxEeOMQ5AKLd10lA" association="_MOpIc4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOpIdYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOpIdokxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MOpId4kxEeOMQ5AKLd10lA" name="A_subvertex_container" memberEnd="_MOdiW4kxEeOMQ5AKLd10lA _MOkP8YkxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MOpIeIkxEeOMQ5AKLd10lA" name="A_redefinitionContext_region" isDerived="true" memberEnd="_MOdiU4kxEeOMQ5AKLd10lA _MOpIeokxEeOMQ5AKLd10lA">
<generalization xmi:id="_MOpIeYkxEeOMQ5AKLd10lA" general="_MMmhFIkxEeOMQ5AKLd10lA"/>
<ownedEnd xmi:id="_MOpIeokxEeOMQ5AKLd10lA" name="region" type="_MOdiQIkxEeOMQ5AKLd10lA" subsettedProperty="_MMmhFYkxEeOMQ5AKLd10lA" association="_MOpIeIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOpIe4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOpIfIkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MOpIfYkxEeOMQ5AKLd10lA" name="A_transition_container" memberEnd="_MOdiX4kxEeOMQ5AKLd10lA _MOjB0YkxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MOpIfokxEeOMQ5AKLd10lA" name="A_referred_protocolTransition" isDerived="true" memberEnd="_MObtFokxEeOMQ5AKLd10lA _MOpIf4kxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MOpIf4kxEeOMQ5AKLd10lA" name="protocolTransition" type="_Dtp8ULL7EeCBifIhhuFqZA" association="_MOpIfokxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOpIgIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOpIgYkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MOpvgIkxEeOMQ5AKLd10lA" name="A_preCondition_protocolTransition" memberEnd="_MObtE4kxEeOMQ5AKLd10lA _MOpvgokxEeOMQ5AKLd10lA">
<generalization xmi:id="_MOpvgYkxEeOMQ5AKLd10lA" general="_MOmsO4kxEeOMQ5AKLd10lA"/>
<ownedEnd xmi:id="_MOpvgokxEeOMQ5AKLd10lA" name="protocolTransition" type="_Dtp8ULL7EeCBifIhhuFqZA" redefinedProperty="_MOmsPIkxEeOMQ5AKLd10lA" association="_MOpvgIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOpvg4kxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MOpvhIkxEeOMQ5AKLd10lA" name="A_postCondition_owningTransition" memberEnd="_MObtEIkxEeOMQ5AKLd10lA _MOpvhYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MOpvhYkxEeOMQ5AKLd10lA" name="owningTransition" type="_Dtp8ULL7EeCBifIhhuFqZA" subsettedProperty="_MNAJwIkxEeOMQ5AKLd10lA" association="_MOpvhIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOpvhokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MOpvh4kxEeOMQ5AKLd10lA" name="A_conformance_specificMachine" memberEnd="_MObGD4kxEeOMQ5AKLd10lA _MOafCokxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MOpviIkxEeOMQ5AKLd10lA" name="A_generalMachine_protocolConformance" memberEnd="_MOafCIkxEeOMQ5AKLd10lA _MOpviYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MOpviYkxEeOMQ5AKLd10lA" name="protocolConformance" type="_MOafBYkxEeOMQ5AKLd10lA" subsettedProperty="_MNcOmIkxEeOMQ5AKLd10lA" association="_MOpviIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOpviokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOpvi4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MOpvjIkxEeOMQ5AKLd10lA" name="A_entry_connectionPointReference" memberEnd="_MOZ36YkxEeOMQ5AKLd10lA _MOpvjYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MOpvjYkxEeOMQ5AKLd10lA" name="connectionPointReference" type="_MOZ34IkxEeOMQ5AKLd10lA" association="_MOpvjIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOpvjokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MOpvj4kxEeOMQ5AKLd10lA" name="A_exit_connectionPointReference" memberEnd="_MOZ37YkxEeOMQ5AKLd10lA _MOpvkIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MOpvkIkxEeOMQ5AKLd10lA" name="connectionPointReference" type="_MOZ34IkxEeOMQ5AKLd10lA" association="_MOpvj4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOpvkYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_AwvxoGwNEdq7X4sGURiZYA" name="Association">
<ownedComment xmi:id="_MOrksIkxEeOMQ5AKLd10lA" annotatedElement="_AwvxoGwNEdq7X4sGURiZYA">
<body>A link is a tuple of values that refer to typed objects. An Association classifies a set of links, each of which is an instance of the Association. Each value in the link refers to an instance of the type of the corresponding end of the Association.</body>
</ownedComment>
<ownedRule xmi:id="_MOrksYkxEeOMQ5AKLd10lA" name="specialized_end_number" constrainedElement="_AwvxoGwNEdq7X4sGURiZYA">
<ownedComment xmi:id="_MOsLwIkxEeOMQ5AKLd10lA" annotatedElement="_MOrksYkxEeOMQ5AKLd10lA">
<body>An Association specializing another Association has the same number of ends as the other Association.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOsLwYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>parents()->select(oclIsKindOf(Association)).oclAsType(Association)->forAll(p | p.memberEnd->size() = self.memberEnd->size())</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOsLwokxEeOMQ5AKLd10lA" name="specialized_end_types" constrainedElement="_AwvxoGwNEdq7X4sGURiZYA">
<ownedComment xmi:id="_MOsLw4kxEeOMQ5AKLd10lA" annotatedElement="_MOsLwokxEeOMQ5AKLd10lA">
<body>When an Association specializes another Association, every end of the specific Association corresponds to an end of the general Association, and the specific end reaches the same type or a subtype of the corresponding general end.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOsLxIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>Sequence{1..memberEnd->size()}->&#xD;
forAll(i | general->select(oclIsKindOf(Association)).oclAsType(Association)->&#xD;
forAll(ga | self.memberEnd->at(i).type.conformsTo(ga.memberEnd->at(i).type)))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOsLxYkxEeOMQ5AKLd10lA" name="binary_associations" constrainedElement="_AwvxoGwNEdq7X4sGURiZYA">
<ownedComment xmi:id="_MOsLxokxEeOMQ5AKLd10lA" annotatedElement="_MOsLxYkxEeOMQ5AKLd10lA">
<body>Only binary Associations can be aggregations.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOsLx4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>memberEnd->exists(aggregation &lt;> AggregationKind::none) implies (memberEnd->size() = 2 and memberEnd->exists(aggregation = AggregationKind::none))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOsLyIkxEeOMQ5AKLd10lA" name="association_ends" constrainedElement="_AwvxoGwNEdq7X4sGURiZYA">
<ownedComment xmi:id="_MOsLyYkxEeOMQ5AKLd10lA" annotatedElement="_MOsLyIkxEeOMQ5AKLd10lA">
<body>Ends of Associations with more than two ends must be owned by the Association itself.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOsLyokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>memberEnd->size() > 2 implies ownedEnd->includesAll(memberEnd)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOsLy4kxEeOMQ5AKLd10lA" name="ends_must_be_typed" constrainedElement="_AwvxoGwNEdq7X4sGURiZYA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOsLzIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>memberEnd->forAll(type->notEmpty())</body>
</specification>
</ownedRule>
<generalization xmi:id="_MOsLzYkxEeOMQ5AKLd10lA" general="_DH62EKPAEdqi_5gqUMOQtA"/>
<generalization xmi:id="_MOsLzokxEeOMQ5AKLd10lA" general="_6UV2QGwJEdq7X4sGURiZYA"/>
<ownedAttribute xmi:id="_MOsLz4kxEeOMQ5AKLd10lA" name="endType" type="_ynRtoGvtEdqG6fBIPwe-mw" isReadOnly="true" isDerived="true" subsettedProperty="_MNTrtokxEeOMQ5AKLd10lA" association="_MO_tyYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOsL0IkxEeOMQ5AKLd10lA" annotatedElement="_MOsLz4kxEeOMQ5AKLd10lA">
<body>The Classifiers that are used as types of the ends of the Association.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOsL0YkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOsL0okxEeOMQ5AKLd10lA" name="isDerived">
<ownedComment xmi:id="_MOsL04kxEeOMQ5AKLd10lA" annotatedElement="_MOsL0okxEeOMQ5AKLd10lA">
<body>Specifies whether the Association is derived from other model elements such as other Associations.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MOsL1IkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOsL1YkxEeOMQ5AKLd10lA" name="memberEnd" type="_Jp_1oGveEdq4DLWZOhbdEA" isOrdered="true" subsettedProperty="_MNQBVIkxEeOMQ5AKLd10lA" association="_MO_tyIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOsL1okxEeOMQ5AKLd10lA" annotatedElement="_MOsL1YkxEeOMQ5AKLd10lA">
<body>Each end represents participation of instances of the Classifier connected to the end in links of the Association.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOsL14kxEeOMQ5AKLd10lA" value="2"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOsL2IkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOsy0IkxEeOMQ5AKLd10lA" name="navigableOwnedEnd" type="_Jp_1oGveEdq4DLWZOhbdEA" subsettedProperty="_MOsy1IkxEeOMQ5AKLd10lA" association="_MPAU0IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOsy0YkxEeOMQ5AKLd10lA" annotatedElement="_MOsy0IkxEeOMQ5AKLd10lA">
<body>The navigable ends that are owned by the Association itself.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOsy0okxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOsy04kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOsy1IkxEeOMQ5AKLd10lA" name="ownedEnd" type="_Jp_1oGveEdq4DLWZOhbdEA" isOrdered="true" aggregation="composite" subsettedProperty="_MMmhFYkxEeOMQ5AKLd10lA _MOsL1YkxEeOMQ5AKLd10lA _ML-2AIkxEeOMQ5AKLd10lA _MNQBWIkxEeOMQ5AKLd10lA" association="_MO_tzYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOsy1YkxEeOMQ5AKLd10lA" annotatedElement="_MOsy1IkxEeOMQ5AKLd10lA">
<body>The ends that are owned by the Association itself.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOsy1okxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOsy14kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedOperation xmi:id="_WSPusK69EdqjppZik4kD8A" name="isBinary">
<ownedComment xmi:id="_4TWQYOwlEdqYHf-imTcTdw" annotatedElement="_WSPusK69EdqjppZik4kD8A">
<body>Determines whether this association is a binary association, i.e. whether it has exactly two member ends.</body>
</ownedComment>
<ownedParameter xmi:id="_YmN8cK69EdqjppZik4kD8A" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_6VRNQLLREeCsYvaJqFFivQ" name="endType" visibility="protected" bodyCondition="_MOsy2YkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MOsy2IkxEeOMQ5AKLd10lA" annotatedElement="_6VRNQLLREeCsYvaJqFFivQ">
<body>endType is derived from the types of the member ends.</body>
</ownedComment>
<ownedRule xmi:id="_MOsy2YkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_6VRNQLLREeCsYvaJqFFivQ _MOsLz4kxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOsy2okxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (memberEnd->collect(type)->asSet())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_-obEgLLREeCsYvaJqFFivQ" name="result" type="_ynRtoGvtEdqG6fBIPwe-mw" direction="return">
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOsy24kxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MOtZ4IkxEeOMQ5AKLd10lA" name="AssociationClass">
<ownedComment xmi:id="_MOtZ4YkxEeOMQ5AKLd10lA" annotatedElement="_MOtZ4IkxEeOMQ5AKLd10lA">
<body>A model element that has both Association and Class properties. An AssociationClass can be seen as an Association that also has Class properties, or as a Class that also has Association properties. It not only connects a set of Classifiers but also defines a set of Features that belong to the Association itself and not to any of the associated Classifiers.</body>
</ownedComment>
<ownedRule xmi:id="_MOtZ4okxEeOMQ5AKLd10lA" name="cannot_be_defined" constrainedElement="_MOtZ4IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOtZ44kxEeOMQ5AKLd10lA" annotatedElement="_MOtZ4okxEeOMQ5AKLd10lA">
<body>An AssociationClass cannot be defined between itself and something else.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOtZ5IkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>self.endType()->excludes(self) and self.endType()->collect(et|et.oclAsType(Classifier).allParents())->flatten()->excludes(self)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOtZ5YkxEeOMQ5AKLd10lA" name="disjoint_attributes_ends" constrainedElement="_MOtZ4IkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOtZ5okxEeOMQ5AKLd10lA" annotatedElement="_MOtZ5YkxEeOMQ5AKLd10lA">
<body>The owned attributes and owned ends of an AssociationClass are disjoint.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOtZ54kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>ownedAttribute->intersection(ownedEnd)->isEmpty()</body>
</specification>
</ownedRule>
<generalization xmi:id="_MOtZ6IkxEeOMQ5AKLd10lA" general="_00owUGvdEdq4DLWZOhbdEA"/>
<generalization xmi:id="_MOtZ6YkxEeOMQ5AKLd10lA" general="_AwvxoGwNEdq7X4sGURiZYA"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_00owUGvdEdq4DLWZOhbdEA" name="Class">
<ownedComment xmi:id="_MOtZ6okxEeOMQ5AKLd10lA" annotatedElement="_00owUGvdEdq4DLWZOhbdEA">
<body>A Class classifies a set of objects and specifies the features that characterize the structure and behavior of those objects. A Class may have an internal structure and Ports.</body>
</ownedComment>
<ownedRule xmi:id="_MOtZ64kxEeOMQ5AKLd10lA" name="passive_class" constrainedElement="_00owUGvdEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MOtZ7IkxEeOMQ5AKLd10lA" annotatedElement="_MOtZ64kxEeOMQ5AKLd10lA">
<body>Only an active Class may own Receptions and have a classifierBehavior.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOtZ7YkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>not isActive implies (ownedReception->isEmpty() and classifierBehavior = null)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MOtZ7okxEeOMQ5AKLd10lA" general="_iY7sMGvsEdqG6fBIPwe-mw"/>
<generalization xmi:id="_MOtZ74kxEeOMQ5AKLd10lA" general="_HiSd0LL2EeCBifIhhuFqZA"/>
<ownedAttribute xmi:id="_MOuA8IkxEeOMQ5AKLd10lA" name="extension" type="_skHGwGvsEdqG6fBIPwe-mw" isReadOnly="true" isDerived="true" association="_MO_twIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOuA8YkxEeOMQ5AKLd10lA" annotatedElement="_MOuA8IkxEeOMQ5AKLd10lA">
<body>This property is used when the Class is acting as a metaclass. It references the Extensions that specify additional properties of the metaclass. The property is derived from the Extensions whose memberEnds are typed by the Class.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOuA8okxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOuA84kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOuA9IkxEeOMQ5AKLd10lA" name="isAbstract" redefinedProperty="_ML_dEIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOuA9YkxEeOMQ5AKLd10lA" annotatedElement="_MOuA9IkxEeOMQ5AKLd10lA">
<body>If true, the Class does not provide a complete declaration and cannot be instantiated. An abstract Class is typically used as a target of Associations or Generalizations.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MOuA9okxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOuA94kxEeOMQ5AKLd10lA" name="isActive">
<ownedComment xmi:id="_MOuA-IkxEeOMQ5AKLd10lA" annotatedElement="_MOuA94kxEeOMQ5AKLd10lA">
<body>Determines whether an object specified by this Class is active or not. If true, then the owning Class is referred to as an active Class. If false, then such a Class is referred to as a passive Class.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MOuA-YkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOuA-okxEeOMQ5AKLd10lA" name="nestedClassifier" type="_6UV2QGwJEdq7X4sGURiZYA" isOrdered="true" aggregation="composite" subsettedProperty="_MMmhFYkxEeOMQ5AKLd10lA _MNQBWIkxEeOMQ5AKLd10lA" association="_MO_twokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOuA-4kxEeOMQ5AKLd10lA" annotatedElement="_MOuA-okxEeOMQ5AKLd10lA">
<body>The Classifiers owned by the Class that are not ownedBehaviors.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOuA_IkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOuA_YkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOuA_okxEeOMQ5AKLd10lA" name="ownedAttribute" type="_Jp_1oGveEdq4DLWZOhbdEA" isOrdered="true" aggregation="composite" redefinedProperty="_MO6OMYkxEeOMQ5AKLd10lA" subsettedProperty="_ML-O9IkxEeOMQ5AKLd10lA _MNQBWIkxEeOMQ5AKLd10lA" association="_MO_twYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOuA_4kxEeOMQ5AKLd10lA" annotatedElement="_MOuA_okxEeOMQ5AKLd10lA">
<body>The attributes (i.e., the Properties) owned by the Class.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOuBAIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOuBAYkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOuBAokxEeOMQ5AKLd10lA" name="ownedOperation" type="_M4X2IGveEdq4DLWZOhbdEA" isOrdered="true" aggregation="composite" subsettedProperty="_MMmhFYkxEeOMQ5AKLd10lA _ML-2AIkxEeOMQ5AKLd10lA _MNQBWIkxEeOMQ5AKLd10lA" association="_MO_Gu4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOuBA4kxEeOMQ5AKLd10lA" annotatedElement="_MOuBAokxEeOMQ5AKLd10lA">
<body>The Operations owned by the Class.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOuBBIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOuBBYkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOuBBokxEeOMQ5AKLd10lA" name="ownedReception" type="_MOXbo4kxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_ML-2AIkxEeOMQ5AKLd10lA _MNQBWIkxEeOMQ5AKLd10lA" association="_MO_txYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOuBB4kxEeOMQ5AKLd10lA" annotatedElement="_MOuBBokxEeOMQ5AKLd10lA">
<body>The Receptions owned by the Class.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOuBCIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOuBCYkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOuBCokxEeOMQ5AKLd10lA" name="superClass" type="_00owUGvdEdq4DLWZOhbdEA" isDerived="true" redefinedProperty="_ML-2BIkxEeOMQ5AKLd10lA" association="_MO_GvIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOuBC4kxEeOMQ5AKLd10lA" annotatedElement="_MOuBCokxEeOMQ5AKLd10lA">
<body>The superclasses of a Class, derived from its Generalizations.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOuBDIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOuBDYkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedOperation xmi:id="_EpigwGwQEdq14q0ETb1t3g" name="createOwnedOperation">
<ownedComment xmi:id="_ZFCecOweEdqYHf-imTcTdw" annotatedElement="_EpigwGwQEdq14q0ETb1t3g">
<body>Creates an operation with the specified name, parameter names, parameter types, and return type (or null) as an owned operation of this class.</body>
</ownedComment>
<ownedParameter xmi:id="_IMMIIGwQEdq14q0ETb1t3g" type="_M4X2IGveEdq4DLWZOhbdEA" direction="return"/>
<ownedParameter xmi:id="_bWQJQGwQEdq14q0ETb1t3g" name="name" effect="read">
<ownedComment xmi:id="_Fa5AEPH-EdulR8T2OJRyFQ" annotatedElement="_bWQJQGwQEdq14q0ETb1t3g">
<body>The name for the new operation, or null.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_qFIE0KOwEdqi_5gqUMOQtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_qFIE0aOwEdqi_5gqUMOQtA" value="1"/>
</ownedParameter>
<ownedParameter xmi:id="_LLEUEGwQEdq14q0ETb1t3g" name="parameterNames" effect="read">
<ownedComment xmi:id="_HOXv4PH-EdulR8T2OJRyFQ" annotatedElement="_LLEUEGwQEdq14q0ETb1t3g">
<body>The parameter names for the new operation, or null.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mIoGsGwQEdq14q0ETb1t3g"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mIoGsWwQEdq14q0ETb1t3g" value="*"/>
</ownedParameter>
<ownedParameter xmi:id="_RCurAGwQEdq14q0ETb1t3g" name="parameterTypes" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
<ownedComment xmi:id="_JQnUcPH-EdulR8T2OJRyFQ" annotatedElement="_RCurAGwQEdq14q0ETb1t3g">
<body>The parameter types for the new operation, or null.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jYfhYGwQEdq14q0ETb1t3g"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jYfhYWwQEdq14q0ETb1t3g" value="*"/>
</ownedParameter>
<ownedParameter xmi:id="_WoD70GwQEdq14q0ETb1t3g" name="returnType" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
<ownedComment xmi:id="_LYzwAPH-EdulR8T2OJRyFQ" annotatedElement="_WoD70GwQEdq14q0ETb1t3g">
<body>The return type for the new operation, or null.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_r-30sKOwEdqi_5gqUMOQtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_r-30saOwEdqi_5gqUMOQtA" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_shXKYGwQEdq14q0ETb1t3g" name="isMetaclass" isQuery="true">
<ownedComment xmi:id="_hb-7QOweEdqYHf-imTcTdw" annotatedElement="_shXKYGwQEdq14q0ETb1t3g">
<body>Determines whether this class is a metaclass.</body>
</ownedComment>
<ownedParameter xmi:id="_urWVsGwQEdq14q0ETb1t3g" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_4xcu4FYKEdqrn7iZ0eqieg" name="extension" visibility="protected" bodyCondition="_MOuoAYkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MOuoAIkxEeOMQ5AKLd10lA" annotatedElement="_4xcu4FYKEdqrn7iZ0eqieg">
<body>Derivation for Class::/extension : Extension</body>
</ownedComment>
<ownedRule xmi:id="_MOuoAYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_4xcu4FYKEdqrn7iZ0eqieg _MOuA8IkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOuoAokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (Extension.allInstances()->select(ext | &#xD;
let endTypes : Sequence(Classifier) = ext.memberEnd->collect(type.oclAsType(Classifier)) in&#xD;
endTypes->includes(self) or endTypes.allParents()->includes(self) ))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_8-RUoFYKEdqrn7iZ0eqieg" name="result" type="_skHGwGvsEdqG6fBIPwe-mw" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOuoA4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOuoBIkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_hIWcYLLSEeCsYvaJqFFivQ" name="superClass" visibility="protected" bodyCondition="_MOuoBokxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MOuoBYkxEeOMQ5AKLd10lA" annotatedElement="_hIWcYLLSEeCsYvaJqFFivQ">
<body>Derivation for Class::/superClass : Class</body>
</ownedComment>
<ownedRule xmi:id="_MOuoBokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_hIWcYLLSEeCsYvaJqFFivQ _MOuBCokxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOuoB4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (self.general()->select(oclIsKindOf(Class))->collect(oclAsType(Class))->asSet())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_kX9L8LLSEeCsYvaJqFFivQ" name="result" type="_00owUGvdEdq4DLWZOhbdEA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOuoCIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOuoCYkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MOvPEIkxEeOMQ5AKLd10lA" name="Collaboration">
<ownedComment xmi:id="_MOvPEYkxEeOMQ5AKLd10lA" annotatedElement="_MOvPEIkxEeOMQ5AKLd10lA">
<body>A Collaboration describes a structure of collaborating elements (roles), each performing a specialized function, which collectively accomplish some desired functionality.</body>
</ownedComment>
<generalization xmi:id="_MOvPEokxEeOMQ5AKLd10lA" general="_FQiVsGwYEdqHKKVoxc0dlA"/>
<generalization xmi:id="_MOvPE4kxEeOMQ5AKLd10lA" general="_iY7sMGvsEdqG6fBIPwe-mw"/>
<ownedAttribute xmi:id="_MOvPFIkxEeOMQ5AKLd10lA" name="collaborationRole" type="_0dB44PnhEdunWsS3se92JQ" subsettedProperty="_MO6OPYkxEeOMQ5AKLd10lA" association="_MO_Gt4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOvPFYkxEeOMQ5AKLd10lA" annotatedElement="_MOvPFIkxEeOMQ5AKLd10lA">
<body>Represents the participants in the Collaboration.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOvPFokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOvPF4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MOv2IIkxEeOMQ5AKLd10lA" name="CollaborationUse">
<ownedComment xmi:id="_MOv2IYkxEeOMQ5AKLd10lA" annotatedElement="_MOv2IIkxEeOMQ5AKLd10lA">
<body>A CollaborationUse is used to specify the application of a pattern specified by a Collaboration to a specific situation.</body>
</ownedComment>
<ownedRule xmi:id="_MOv2IokxEeOMQ5AKLd10lA" name="client_elements" constrainedElement="_MOv2IIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOv2I4kxEeOMQ5AKLd10lA" annotatedElement="_MOv2IokxEeOMQ5AKLd10lA">
<body>All the client elements of a roleBinding are in one Classifier and all supplier elements of a roleBinding are in one Collaboration.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOv2JIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>roleBinding->collect(client)->forAll(ne1, ne2 |&#xD;
ne1.oclIsKindOf(ConnectableElement) and ne2.oclIsKindOf(ConnectableElement) and&#xD;
let ce1 : ConnectableElement = ne1.oclAsType(ConnectableElement), ce2 : ConnectableElement = ne2.oclAsType(ConnectableElement) in&#xD;
ce1.structuredClassifier = ce2.structuredClassifier)&#xD;
and&#xD;
roleBinding->collect(supplier)->forAll(ne1, ne2 |&#xD;
ne1.oclIsKindOf(ConnectableElement) and ne2.oclIsKindOf(ConnectableElement) and&#xD;
let ce1 : ConnectableElement = ne1.oclAsType(ConnectableElement), ce2 : ConnectableElement = ne2.oclAsType(ConnectableElement) in&#xD;
ce1.collaboration = ce2.collaboration)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOv2JYkxEeOMQ5AKLd10lA" name="every_role" constrainedElement="_MOv2IIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOv2JokxEeOMQ5AKLd10lA" annotatedElement="_MOv2JYkxEeOMQ5AKLd10lA">
<body>Every collaborationRole in the Collaboration is bound within the CollaborationUse.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOv2J4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>type.collaborationRole->forAll(role | roleBinding->exists(rb | rb.supplier->includes(role)))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOv2KIkxEeOMQ5AKLd10lA" name="connectors" constrainedElement="_MOv2IIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOv2KYkxEeOMQ5AKLd10lA" annotatedElement="_MOv2KIkxEeOMQ5AKLd10lA">
<body>Connectors in a Collaboration typing a CollaborationUse must have corresponding Connectors between elements bound in the context Classifier, and these corresponding Connectors must have the same or more general type than the Collaboration Connectors.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOv2KokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>type.ownedConnector->forAll(connector |&#xD;
let rolesConnectedInCollab : Set(ConnectableElement) = connector.end.role->asSet(),&#xD;
relevantBindings : Set(Dependency) = roleBinding->select(rb | rb.supplier->intersection(rolesConnectedInCollab)->notEmpty()),&#xD;
boundRoles : Set(ConnectableElement) = relevantBindings->collect(client.oclAsType(ConnectableElement))->asSet(),&#xD;
contextClassifier : StructuredClassifier = boundRoles->any(true).structuredClassifier->any(true) in&#xD;
contextClassifier.ownedConnector->exists( correspondingConnector | &#xD;
correspondingConnector.end.role->forAll( role | boundRoles->includes(role) )&#xD;
and (connector.type->notEmpty() and correspondingConnector.type->notEmpty()) implies connector.type->forAll(conformsTo(correspondingConnector.type)) )&#xD;
)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MOv2K4kxEeOMQ5AKLd10lA" general="_csVgUGvtEdqG6fBIPwe-mw"/>
<ownedAttribute xmi:id="_MOv2LIkxEeOMQ5AKLd10lA" name="roleBinding" type="_rEDGkGwKEdq7X4sGURiZYA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MO_GtIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOv2LYkxEeOMQ5AKLd10lA" annotatedElement="_MOv2LIkxEeOMQ5AKLd10lA">
<body>A mapping between features of the Collaboration and features of the owning Classifier. This mapping indicates which ConnectableElement of the Classifier plays which role(s) in the Collaboration. A ConnectableElement may be bound to multiple roles in the same CollaborationUse (that is, it may play multiple roles).</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOv2LokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOv2L4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOv2MIkxEeOMQ5AKLd10lA" name="type" type="_MOvPEIkxEeOMQ5AKLd10lA" association="_MO_GsIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOv2MYkxEeOMQ5AKLd10lA" annotatedElement="_MOv2MIkxEeOMQ5AKLd10lA">
<body>The Collaboration which is used in this CollaborationUse. The Collaboration defines the cooperation between its roles which are mapped to ConnectableElements relating to the Classifier owning the CollaborationUse.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_DAbfwa69EdqjppZik4kD8A" name="Component">
<ownedComment xmi:id="_MOv2MokxEeOMQ5AKLd10lA" annotatedElement="_DAbfwa69EdqjppZik4kD8A">
<body>A Component represents a modular part of a system that encapsulates its contents and whose manifestation is replaceable within its environment.</body>
</ownedComment>
<ownedRule xmi:id="_MOv2M4kxEeOMQ5AKLd10lA" name="no_nested_classifiers" constrainedElement="_DAbfwa69EdqjppZik4kD8A">
<ownedComment xmi:id="_MOv2NIkxEeOMQ5AKLd10lA" annotatedElement="_MOv2M4kxEeOMQ5AKLd10lA">
<body>A Component cannot nest Classifiers.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOv2NYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>nestedClassifier->isEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOv2NokxEeOMQ5AKLd10lA" name="no_packaged_elements" constrainedElement="_DAbfwa69EdqjppZik4kD8A">
<ownedComment xmi:id="_MOv2N4kxEeOMQ5AKLd10lA" annotatedElement="_MOv2NokxEeOMQ5AKLd10lA">
<body>A Component nested in a Class cannot have any packaged elements.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOv2OIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>nestingClass &lt;> null implies packagedElement->isEmpty()</body>
</specification>
</ownedRule>
<generalization xmi:id="_MOwdMIkxEeOMQ5AKLd10lA" general="_00owUGvdEdq4DLWZOhbdEA"/>
<ownedAttribute xmi:id="_MOwdMYkxEeOMQ5AKLd10lA" name="isIndirectlyInstantiated">
<ownedComment xmi:id="_MOwdMokxEeOMQ5AKLd10lA" annotatedElement="_MOwdMYkxEeOMQ5AKLd10lA">
<body>If true, the Component is defined at design-time, but at run-time (or execution-time) an object specified by the Component does not exist, that is, the Component is instantiated indirectly, through the instantiation of its realizing Classifiers or parts.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MOwdM4kxEeOMQ5AKLd10lA" value="true"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOwdNIkxEeOMQ5AKLd10lA" name="packagedElement" type="_jKxnwGwLEdq7X4sGURiZYA" aggregation="composite" subsettedProperty="_MNQBWIkxEeOMQ5AKLd10lA" association="_MO94oYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOwdNYkxEeOMQ5AKLd10lA" annotatedElement="_MOwdNIkxEeOMQ5AKLd10lA">
<body>The set of PackageableElements that a Component owns. In the namespace of a Component, all model elements that are involved in or related to its definition may be owned or imported explicitly. These may include e.g., Classes, Interfaces, Components, Packages, UseCases, Dependencies (e.g., mappings), and Artifacts.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOwdNokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOwdN4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOwdOIkxEeOMQ5AKLd10lA" name="provided" type="_8Ugn8GvtEdqG6fBIPwe-mw" isReadOnly="true" isDerived="true" association="_MO-foYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOwdOYkxEeOMQ5AKLd10lA" annotatedElement="_MOwdOIkxEeOMQ5AKLd10lA">
<body>The Interfaces that the Component exposes to its environment. These Interfaces may be Realized by the Component or any of its realizingClassifiers, or they may be the Interfaces that are provided by its public Ports.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOwdOokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOwdO4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOwdPIkxEeOMQ5AKLd10lA" name="realization" type="_MOySYIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MNc1oYkxEeOMQ5AKLd10lA _GDD2YAtAEeGcpbeCPJfCmw" association="_MO-foIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOwdPYkxEeOMQ5AKLd10lA" annotatedElement="_MOwdPIkxEeOMQ5AKLd10lA">
<body>The set of Realizations owned by the Component. Realizations reference the Classifiers of which the Component is an abstraction; i.e., that realize its behavior.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOwdPokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOwdP4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOwdQIkxEeOMQ5AKLd10lA" name="required" type="_8Ugn8GvtEdqG6fBIPwe-mw" isReadOnly="true" isDerived="true" association="_MO94nYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOwdQYkxEeOMQ5AKLd10lA" annotatedElement="_MOwdQIkxEeOMQ5AKLd10lA">
<body>The Interfaces that the Component requires from other Components in its environment in order to be able to offer its full set of provided functionality. These Interfaces may be used by the Component or any of its realizingClassifiers, or they may be the Interfaces that are required by its public Ports.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOwdQokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOwdQ4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedOperation xmi:id="_IJwKAK69EdqjppZik4kD8A" name="createOwnedClass">
<ownedComment xmi:id="_gykdUPZPEdqYHf-imTcTdw" annotatedElement="_IJwKAK69EdqjppZik4kD8A">
<body>Creates a(n) (abstract) class with the specified name as a packaged element of this component.</body>
</ownedComment>
<ownedParameter xmi:id="_IJwKAa69EdqjppZik4kD8A" type="_00owUGvdEdq4DLWZOhbdEA" direction="return"/>
<ownedParameter xmi:id="_IJwKAq69EdqjppZik4kD8A" name="name" effect="read">
<ownedComment xmi:id="_C_nlkPIAEdulR8T2OJRyFQ" annotatedElement="_IJwKAq69EdqjppZik4kD8A">
<body>The name for the new class, or null.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
<ownedParameter xmi:id="_IJwKA669EdqjppZik4kD8A" name="isAbstract" effect="read">
<ownedComment xmi:id="_HLGHgPIAEdulR8T2OJRyFQ" annotatedElement="_IJwKA669EdqjppZik4kD8A">
<body>Whether the new class should be abstract.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_IJwKBK69EdqjppZik4kD8A" name="createOwnedEnumeration">
<ownedComment xmi:id="_lEKOUPZPEdqYHf-imTcTdw" annotatedElement="_IJwKBK69EdqjppZik4kD8A">
<body>Creates a enumeration with the specified name as a packaged element of this component.</body>
</ownedComment>
<ownedParameter xmi:id="_IJwKBa69EdqjppZik4kD8A" type="_I6N3UGwGEdq7X4sGURiZYA" direction="return"/>
<ownedParameter xmi:id="_IJwKBq69EdqjppZik4kD8A" name="name" effect="read">
<ownedComment xmi:id="_Jrb9UPIAEdulR8T2OJRyFQ" annotatedElement="_IJwKBq69EdqjppZik4kD8A">
<body>The name for the new enumeration, or null.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_IJwKCq69EdqjppZik4kD8A" name="createOwnedInterface">
<ownedComment xmi:id="_s-DiwPZPEdqYHf-imTcTdw" annotatedElement="_IJwKCq69EdqjppZik4kD8A">
<body>Creates an interface with the specified name as a packaged element of this component.</body>
</ownedComment>
<ownedParameter xmi:id="_IJwKC669EdqjppZik4kD8A" type="_8Ugn8GvtEdqG6fBIPwe-mw" direction="return"/>
<ownedParameter xmi:id="_IJwKDK69EdqjppZik4kD8A" name="name" effect="read">
<ownedComment xmi:id="_O886QPIAEdulR8T2OJRyFQ" annotatedElement="_IJwKDK69EdqjppZik4kD8A">
<body>The name for the new interface, or null.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_IJwKB669EdqjppZik4kD8A" name="createOwnedPrimitiveType">
<ownedComment xmi:id="_o0qrgPZPEdqYHf-imTcTdw" annotatedElement="_IJwKB669EdqjppZik4kD8A">
<body>Creates a primitive type with the specified name as a packaged element of this component.</body>
</ownedComment>
<ownedParameter xmi:id="_IJwKCK69EdqjppZik4kD8A" type="_V6vuYGwGEdq7X4sGURiZYA" direction="return"/>
<ownedParameter xmi:id="_IJwKCa69EdqjppZik4kD8A" name="name" effect="read">
<ownedComment xmi:id="_Q2ZvMPIAEdulR8T2OJRyFQ" annotatedElement="_IJwKCa69EdqjppZik4kD8A">
<body>The name for the new primitive type, or null.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_PGB0gLLUEeCsYvaJqFFivQ" name="provided" visibility="protected" bodyCondition="_MOxEQIkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MOwdRIkxEeOMQ5AKLd10lA" annotatedElement="_PGB0gLLUEeCsYvaJqFFivQ">
<body>Derivation for Component::/provided</body>
</ownedComment>
<ownedRule xmi:id="_MOxEQIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_PGB0gLLUEeCsYvaJqFFivQ _MOwdOIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOxEQYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (let ris : Set(Interface) = allRealizedInterfaces(),&#xD;
realizingClassifiers : Set(Classifier) = self.realization.realizingClassifier->union(self.allParents()->collect(realization.realizingClassifier))->asSet(),&#xD;
allRealizingClassifiers : Set(Classifier) = realizingClassifiers->union(realizingClassifiers.allParents())->asSet(),&#xD;
realizingClassifierInterfaces : Set(Interface) = allRealizingClassifiers->iterate(c; rci : Set(Interface) = Set{} | rci->union(c.allRealizedInterfaces())),&#xD;
ports : Set(Port) = self.ownedPort->union(allParents()->collect(ownedPort))->asSet(),&#xD;
providedByPorts : Set(Interface) = ports.provided->asSet()&#xD;
in ris->union(realizingClassifierInterfaces) ->union(providedByPorts)->asSet())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_R-77ULLUEeCsYvaJqFFivQ" name="result" type="_8Ugn8GvtEdqG6fBIPwe-mw" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOxEQokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOxEQ4kxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_lHjyALLUEeCsYvaJqFFivQ" name="required" visibility="protected" bodyCondition="_MOxrUIkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MOxERIkxEeOMQ5AKLd10lA" annotatedElement="_lHjyALLUEeCsYvaJqFFivQ">
<body>Derivation for Component::/required</body>
</ownedComment>
<ownedRule xmi:id="_MOxrUIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_lHjyALLUEeCsYvaJqFFivQ _MOwdQIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOxrUYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (let uis : Set(Interface) = allUsedInterfaces(),&#xD;
realizingClassifiers : Set(Classifier) = self.realization.realizingClassifier->union(self.allParents()->collect(realization.realizingClassifier))->asSet(),&#xD;
allRealizingClassifiers : Set(Classifier) = realizingClassifiers->union(realizingClassifiers.allParents())->asSet(),&#xD;
realizingClassifierInterfaces : Set(Interface) = allRealizingClassifiers->iterate(c; rci : Set(Interface) = Set{} | rci->union(c.allUsedInterfaces())),&#xD;
ports : Set(Port) = self.ownedPort->union(allParents()->collect(ownedPort))->asSet(),&#xD;
usedByPorts : Set(Interface) = ports.required->asSet()&#xD;
in uis->union(realizingClassifierInterfaces)->union(usedByPorts)->asSet()&#xD;
)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_lHjyAbLUEeCsYvaJqFFivQ" name="result" type="_8Ugn8GvtEdqG6fBIPwe-mw" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOxrUokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOxrU4kxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MOySYIkxEeOMQ5AKLd10lA" name="ComponentRealization">
<ownedComment xmi:id="_MOySYYkxEeOMQ5AKLd10lA" annotatedElement="_MOySYIkxEeOMQ5AKLd10lA">
<body>Realization is specialized to (optionally) define the Classifiers that realize the contract offered by a Component in terms of its provided and required Interfaces. The Component forms an abstraction from these various Classifiers.</body>
</ownedComment>
<generalization xmi:id="_MOySYokxEeOMQ5AKLd10lA" general="_MNTrsYkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MOySY4kxEeOMQ5AKLd10lA" name="abstraction" type="_DAbfwa69EdqjppZik4kD8A" subsettedProperty="_MNBX0IkxEeOMQ5AKLd10lA _N3hRMAtAEeGcpbeCPJfCmw" association="_MO-foIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOySZIkxEeOMQ5AKLd10lA" annotatedElement="_MOySY4kxEeOMQ5AKLd10lA">
<body>The Component that owns this ComponentRealization and which is implemented by its realizing Classifiers.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOySZYkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOySZokxEeOMQ5AKLd10lA" name="realizingClassifier" type="_6UV2QGwJEdq7X4sGURiZYA" subsettedProperty="_sD4acEzSEeO2z-YY6ENIIA" association="_MO94mYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOySZ4kxEeOMQ5AKLd10lA" annotatedElement="_MOySZokxEeOMQ5AKLd10lA">
<body>The Classifiers that are involved in the implementation of the Component that owns this Realization.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOySaIkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_0dB44PnhEdunWsS3se92JQ" name="ConnectableElement" isAbstract="true">
<ownedComment xmi:id="_MOySaYkxEeOMQ5AKLd10lA" annotatedElement="_0dB44PnhEdunWsS3se92JQ">
<body>ConnectableElement is an abstract metaclass representing a set of instances that play roles of a StructuredClassifier. ConnectableElements may be joined by attached Connectors and specify configurations of linked instances to be created within an instance of the containing StructuredClassifier.</body>
</ownedComment>
<generalization xmi:id="_MOySaokxEeOMQ5AKLd10lA" general="_MNWvAIkxEeOMQ5AKLd10lA"/>
<generalization xmi:id="_MOySa4kxEeOMQ5AKLd10lA" general="_MNTEp4kxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MOySbIkxEeOMQ5AKLd10lA" name="end" type="_aOgw0GveEdq4DLWZOhbdEA" isReadOnly="true" isDerived="true" association="_81UZgPnhEdunWsS3se92JQ">
<ownedComment xmi:id="_MOySbYkxEeOMQ5AKLd10lA" annotatedElement="_MOySbIkxEeOMQ5AKLd10lA">
<body>A set of ConnectorEnds that attach to this ConnectableElement.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOySbokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOySb4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOyScIkxEeOMQ5AKLd10lA" name="templateParameter" type="_MOy5dIkxEeOMQ5AKLd10lA" redefinedProperty="_MNTErYkxEeOMQ5AKLd10lA" association="_MO94mIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOyScYkxEeOMQ5AKLd10lA" annotatedElement="_MOyScIkxEeOMQ5AKLd10lA">
<body>The ConnectableElementTemplateParameter for this ConnectableElement parameter.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOyScokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedOperation xmi:id="_ETr20LLVEeCsYvaJqFFivQ" name="end" visibility="protected" bodyCondition="_MOy5cIkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MOySc4kxEeOMQ5AKLd10lA" annotatedElement="_ETr20LLVEeCsYvaJqFFivQ">
<body>Derivation for ConnectableElement::/end : ConnectorEnd</body>
</ownedComment>
<ownedRule xmi:id="_MOy5cIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_ETr20LLVEeCsYvaJqFFivQ _MOySbIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOy5cYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (ConnectorEnd.allInstances()->select(role = self))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_Hrm04LLVEeCsYvaJqFFivQ" name="result" type="_aOgw0GveEdq4DLWZOhbdEA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOy5cokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOy5c4kxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MOy5dIkxEeOMQ5AKLd10lA" name="ConnectableElementTemplateParameter">
<ownedComment xmi:id="_MOy5dYkxEeOMQ5AKLd10lA" annotatedElement="_MOy5dIkxEeOMQ5AKLd10lA">
<body>A ConnectableElementTemplateParameter exposes a ConnectableElement as a formal parameter for a template.</body>
</ownedComment>
<generalization xmi:id="_MOy5dokxEeOMQ5AKLd10lA" general="_KxRzgGvuEdqG6fBIPwe-mw"/>
<ownedAttribute xmi:id="_MOy5d4kxEeOMQ5AKLd10lA" name="parameteredElement" type="_0dB44PnhEdunWsS3se92JQ" redefinedProperty="_MNU53okxEeOMQ5AKLd10lA" association="_MO94mIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOy5eIkxEeOMQ5AKLd10lA" annotatedElement="_MOy5d4kxEeOMQ5AKLd10lA">
<body>The ConnectableElement for this ConnectableElementTemplateParameter.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_YxC2YLLWEeCsYvaJqFFivQ" name="Connector">
<ownedComment xmi:id="_MOy5eYkxEeOMQ5AKLd10lA" annotatedElement="_YxC2YLLWEeCsYvaJqFFivQ">
<body>A Connector specifies links that enables communication between two or more instances. In contrast to Associations, which specify links between any instance of the associated Classifiers, Connectors specify links between instances playing the connected parts only.</body>
</ownedComment>
<ownedRule xmi:id="_MOzggIkxEeOMQ5AKLd10lA" name="types" constrainedElement="_YxC2YLLWEeCsYvaJqFFivQ">
<ownedComment xmi:id="_MOzggYkxEeOMQ5AKLd10lA" annotatedElement="_MOzggIkxEeOMQ5AKLd10lA">
<body>The types of the ConnectableElements that the ends of a Connector are attached to must conform to the types of the ends of the Association that types the Connector, if any.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOzggokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>type&lt;>null implies &#xD;
let noOfEnds : Integer = end->size() in &#xD;
(type.memberEnd->size() = noOfEnds) and Sequence{1..noOfEnds}->forAll(i | end->at(i).role.type.conformsTo(type.memberEnd->at(i).type))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MOzgg4kxEeOMQ5AKLd10lA" name="roles" constrainedElement="_YxC2YLLWEeCsYvaJqFFivQ">
<ownedComment xmi:id="_MOzghIkxEeOMQ5AKLd10lA" annotatedElement="_MOzgg4kxEeOMQ5AKLd10lA">
<body>The ConnectableElements attached as roles to each ConnectorEnd owned by a Connector must be owned or inherited roles of the Classifier that owned the Connector, or they must be Ports of such roles.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MOzghYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>structuredClassifier &lt;> null&#xD;
and&#xD;
end->forAll( e | structuredClassifier.allRoles()->includes(e.role)&#xD;
or&#xD;
e.role.oclIsKindOf(Port) and structuredClassifier.allRoles()->includes(e.partWithPort))</body>
</specification>
</ownedRule>
<generalization xmi:id="_MOzghokxEeOMQ5AKLd10lA" general="_UL0VYLbAEeCRxrN1JUGuxA"/>
<ownedAttribute xmi:id="_MOzgh4kxEeOMQ5AKLd10lA" name="contract" type="_TUPtYGveEdq4DLWZOhbdEA" association="_MO94kIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOzgiIkxEeOMQ5AKLd10lA" annotatedElement="_MOzgh4kxEeOMQ5AKLd10lA">
<body>The set of Behaviors that specify the valid interaction patterns across the Connector.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOzgiYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOzgiokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOzgi4kxEeOMQ5AKLd10lA" name="end" type="_aOgw0GveEdq4DLWZOhbdEA" isOrdered="true" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MO9RjokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOzgjIkxEeOMQ5AKLd10lA" annotatedElement="_MOzgi4kxEeOMQ5AKLd10lA">
<body>A Connector has at least two ConnectorEnds, each representing the participation of instances of the Classifiers typing the ConnectableElements attached to the end. The set of ConnectorEnds is ordered.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOzgjYkxEeOMQ5AKLd10lA" value="2"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOzgjokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOzgj4kxEeOMQ5AKLd10lA" name="kind" type="_echygLLWEeCsYvaJqFFivQ" isReadOnly="true" isDerived="true">
<ownedComment xmi:id="_MOzgkIkxEeOMQ5AKLd10lA" annotatedElement="_MOzgj4kxEeOMQ5AKLd10lA">
<body>Indicates the kind of Connector. This is derived: a Connector with one or more ends connected to a Port which is not on a Part and which is not a behavior port is a delegation; otherwise it is an assembly.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MOzgkYkxEeOMQ5AKLd10lA" name="redefinedConnector" type="_YxC2YLLWEeCsYvaJqFFivQ" subsettedProperty="_MMfMVIkxEeOMQ5AKLd10lA" association="_MO9RkIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOzgkokxEeOMQ5AKLd10lA" annotatedElement="_MOzgkYkxEeOMQ5AKLd10lA">
<body>A Connector may be redefined when its containing Classifier is specialized. The redefining Connector may have a type that specializes the type of the redefined Connector. The types of the ConnectorEnds of the redefining Connector may specialize the types of the ConnectorEnds of the redefined Connector. The properties of the ConnectorEnds of the redefining Connector may be replaced.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOzgk4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MOzglIkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MOzglYkxEeOMQ5AKLd10lA" name="type" type="_AwvxoGwNEdq7X4sGURiZYA" association="_MO94lIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MOzglokxEeOMQ5AKLd10lA" annotatedElement="_MOzglYkxEeOMQ5AKLd10lA">
<body>An optional Association that classifies links corresponding to this Connector.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MOzgl4kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedOperation xmi:id="_lgjO4LLWEeCsYvaJqFFivQ" name="kind" visibility="protected" bodyCondition="_MO0HkIkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MOzgmIkxEeOMQ5AKLd10lA" annotatedElement="_lgjO4LLWEeCsYvaJqFFivQ">
<body>Derivation for Connector::/kind : ConnectorKind</body>
</ownedComment>
<ownedRule xmi:id="_MO0HkIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_lgjO4LLWEeCsYvaJqFFivQ _MOzgj4kxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MO0HkYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if end->exists(&#xD;
role.oclIsKindOf(Port) &#xD;
and partWithPort->isEmpty()&#xD;
and not role.oclAsType(Port).isBehavior)&#xD;
then ConnectorKind::delegation &#xD;
else ConnectorKind::assembly &#xD;
endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_o537ILLWEeCsYvaJqFFivQ" name="result" type="_echygLLWEeCsYvaJqFFivQ" direction="return"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_aOgw0GveEdq4DLWZOhbdEA" name="ConnectorEnd">
<ownedComment xmi:id="_MO0uoIkxEeOMQ5AKLd10lA" annotatedElement="_aOgw0GveEdq4DLWZOhbdEA">
<body>A ConnectorEnd is an endpoint of a Connector, which attaches the Connector to a ConnectableElement.</body>
</ownedComment>
<ownedRule xmi:id="_MO0uoYkxEeOMQ5AKLd10lA" name="role_and_part_with_port" constrainedElement="_aOgw0GveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MO0uookxEeOMQ5AKLd10lA" annotatedElement="_MO0uoYkxEeOMQ5AKLd10lA">
<body>If a ConnectorEnd references a partWithPort, then the role must be a Port that is defined or inherited by the type of the partWithPort.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MO0uo4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>partWithPort->notEmpty() implies &#xD;
(role.oclIsKindOf(Port) and partWithPort.type.oclAsType(Namespace).member->includes(role))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MO0upIkxEeOMQ5AKLd10lA" name="part_with_port_empty" constrainedElement="_aOgw0GveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MO0upYkxEeOMQ5AKLd10lA" annotatedElement="_MO0upIkxEeOMQ5AKLd10lA">
<body>If a ConnectorEnd is attached to a Port of the containing Classifier, partWithPort will be empty.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MO0upokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>(role.oclIsKindOf(Port) and role.owner = connector.owner) implies partWithPort->isEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MO0up4kxEeOMQ5AKLd10lA" name="multiplicity" constrainedElement="_aOgw0GveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MO0uqIkxEeOMQ5AKLd10lA" annotatedElement="_MO0up4kxEeOMQ5AKLd10lA">
<body>The multiplicity of the ConnectorEnd may not be more general than the multiplicity of the corresponding end of the Association typing the owning Connector, if any.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MO0uqYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>self.compatibleWith(definingEnd)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MO0uqokxEeOMQ5AKLd10lA" name="self_part_with_port" constrainedElement="_aOgw0GveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MO0uq4kxEeOMQ5AKLd10lA" annotatedElement="_MO0uqokxEeOMQ5AKLd10lA">
<body>The Property held in self.partWithPort must not be a Port.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MO0urIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>partWithPort->notEmpty() implies not partWithPort.oclIsKindOf(Port)</body>
</specification>
</ownedRule>
<generalization xmi:id="_MO1VsIkxEeOMQ5AKLd10lA" general="_Gjgl0GveEdq4DLWZOhbdEA"/>
<ownedAttribute xmi:id="_MO1VsYkxEeOMQ5AKLd10lA" name="definingEnd" type="_Jp_1oGveEdq4DLWZOhbdEA" isReadOnly="true" isDerived="true" association="_MO9RiokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MO1VsokxEeOMQ5AKLd10lA" annotatedElement="_MO1VsYkxEeOMQ5AKLd10lA">
<body>A derived property referencing the corresponding end on the Association which types the Connector owing this ConnectorEnd, if any. It is derived by selecting the end at the same place in the ordering of Association ends as this ConnectorEnd.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO1Vs4kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MO1VtIkxEeOMQ5AKLd10lA" name="partWithPort" type="_Jp_1oGveEdq4DLWZOhbdEA" association="_MO9RhokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MO1VtYkxEeOMQ5AKLd10lA" annotatedElement="_MO1VtIkxEeOMQ5AKLd10lA">
<body>Indicates the role of the internal structure of a Classifier with the Port to which the ConnectorEnd is attached.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO1VtokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_81UZgfnhEdunWsS3se92JQ" name="role" visibility="public" type="_0dB44PnhEdunWsS3se92JQ" association="_81UZgPnhEdunWsS3se92JQ">
<ownedComment xmi:id="_MO1Vt4kxEeOMQ5AKLd10lA" annotatedElement="_81UZgfnhEdunWsS3se92JQ">
<body>The ConnectableElement attached at this ConnectorEnd. When an instance of the containing Classifier is created, a link may (depending on the multiplicities) be created to an instance of the Classifier that types this ConnectableElement.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_81UZgvnhEdunWsS3se92JQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_81UZg_nhEdunWsS3se92JQ" value="1"/>
</ownedAttribute>
<ownedOperation xmi:id="_QT7XMFYKEdqrn7iZ0eqieg" name="definingEnd" visibility="protected" bodyCondition="_MO1VuYkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MO1VuIkxEeOMQ5AKLd10lA" annotatedElement="_QT7XMFYKEdqrn7iZ0eqieg">
<body>Derivation for ConnectorEnd::/definingEnd : Property</body>
</ownedComment>
<ownedRule xmi:id="_MO1VuYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_QT7XMFYKEdqrn7iZ0eqieg _MO1VsYkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MO1VuokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if connector.type = null &#xD;
then&#xD;
null &#xD;
else&#xD;
let index : Integer = connector.end->indexOf(self) in&#xD;
connector.type.memberEnd->at(index)&#xD;
endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_VkstQFYKEdqrn7iZ0eqieg" name="result" type="_Jp_1oGveEdq4DLWZOhbdEA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO18wIkxEeOMQ5AKLd10lA"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_HiSd0LL2EeCBifIhhuFqZA" name="EncapsulatedClassifier" isAbstract="true">
<ownedComment xmi:id="_MO18wYkxEeOMQ5AKLd10lA" annotatedElement="_HiSd0LL2EeCBifIhhuFqZA">
<body>An EncapsulatedClassifier may own Ports to specify typed interaction points.</body>
</ownedComment>
<generalization xmi:id="_MO2j0IkxEeOMQ5AKLd10lA" general="_FQiVsGwYEdqHKKVoxc0dlA"/>
<ownedAttribute xmi:id="_MO2j0YkxEeOMQ5AKLd10lA" name="ownedPort" type="_ZAuvEGveEdq4DLWZOhbdEA" isReadOnly="true" aggregation="composite" isDerived="true" subsettedProperty="_MO6OMYkxEeOMQ5AKLd10lA" association="_MO9Rg4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MO2j0okxEeOMQ5AKLd10lA" annotatedElement="_MO2j0YkxEeOMQ5AKLd10lA">
<body>The Ports owned by the EncapsulatedClassifier.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO2j04kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MO2j1IkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedOperation xmi:id="_O9x_ALL2EeCBifIhhuFqZA" name="ownedPort" visibility="protected" bodyCondition="_MO2j1okxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MO2j1YkxEeOMQ5AKLd10lA" annotatedElement="_O9x_ALL2EeCBifIhhuFqZA">
<body>Derivation for EncapsulatedClassifier::/ownedPort : Port</body>
</ownedComment>
<ownedRule xmi:id="_MO2j1okxEeOMQ5AKLd10lA" name="spec" constrainedElement="_O9x_ALL2EeCBifIhhuFqZA _MO2j0YkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MO2j14kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (ownedAttribute->select(oclIsKindOf(Port))->collect(oclAsType(Port))->asOrderedSet())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_PyQI4LL2EeCBifIhhuFqZA" name="result" type="_ZAuvEGveEdq4DLWZOhbdEA" isOrdered="true" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO2j2IkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MO2j2YkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_ZAuvEGveEdq4DLWZOhbdEA" name="Port">
<ownedComment xmi:id="_MO3K4IkxEeOMQ5AKLd10lA" annotatedElement="_ZAuvEGveEdq4DLWZOhbdEA">
<body>A Port is a property of an EncapsulatedClassifier that specifies a distinct interaction point between that EncapsulatedClassifier and its environment or between the (behavior of the) EncapsulatedClassifier and its internal parts. Ports are connected to Properties of the EncapsulatedClassifier by Connectors through which requests can be made to invoke BehavioralFeatures. A Port may specify the services an EncapsulatedClassifier provides (offers) to its environment as well as the services that an EncapsulatedClassifier expects (requires) of its environment. A Port may have an associated ProtocolStateMachine.</body>
</ownedComment>
<ownedRule xmi:id="_MO3K4YkxEeOMQ5AKLd10lA" name="port_aggregation" constrainedElement="_ZAuvEGveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MO3K4okxEeOMQ5AKLd10lA" annotatedElement="_MO3K4YkxEeOMQ5AKLd10lA">
<body>Port.aggregation must be composite.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MO3K44kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>aggregation = AggregationKind::composite</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MO3x8IkxEeOMQ5AKLd10lA" name="default_value" constrainedElement="_ZAuvEGveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MO3x8YkxEeOMQ5AKLd10lA" annotatedElement="_MO3x8IkxEeOMQ5AKLd10lA">
<body>A defaultValue for port cannot be specified when the type of the Port is an Interface.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MO3x8okxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>type.oclIsKindOf(Interface) implies defaultValue->isEmpty()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MO3x84kxEeOMQ5AKLd10lA" name="encapsulated_owner" constrainedElement="_ZAuvEGveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MO3x9IkxEeOMQ5AKLd10lA" annotatedElement="_MO3x84kxEeOMQ5AKLd10lA">
<body>All Ports are owned by an EncapsulatedClassifier.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MO3x9YkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>owner = encapsulatedClassifier</body>
</specification>
</ownedRule>
<generalization xmi:id="_MO3x9okxEeOMQ5AKLd10lA" general="_Jp_1oGveEdq4DLWZOhbdEA"/>
<ownedAttribute xmi:id="_MO3x94kxEeOMQ5AKLd10lA" name="isBehavior">
<ownedComment xmi:id="_MO3x-IkxEeOMQ5AKLd10lA" annotatedElement="_MO3x94kxEeOMQ5AKLd10lA">
<body>Specifies whether requests arriving at this Port are sent to the classifier behavior of this EncapsulatedClassifier. Such a Port is referred to as a behavior Port. Any invocation of a BehavioralFeature targeted at a behavior Port will be handled by the instance of the owning EncapsulatedClassifier itself, rather than by any instances that it may contain.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MO3x-YkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MO3x-okxEeOMQ5AKLd10lA" name="isConjugated">
<ownedComment xmi:id="_MO3x-4kxEeOMQ5AKLd10lA" annotatedElement="_MO3x-okxEeOMQ5AKLd10lA">
<body>Specifies the way that the provided and required Interfaces are derived from the Port’s Type.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MO3x_IkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MO3x_YkxEeOMQ5AKLd10lA" name="isService">
<ownedComment xmi:id="_MO3x_okxEeOMQ5AKLd10lA" annotatedElement="_MO3x_YkxEeOMQ5AKLd10lA">
<body>If true, indicates that this Port is used to provide the published functionality of an EncapsulatedClassifier. If false, this Port is used to implement the EncapsulatedClassifier but is not part of the essential externally-visible functionality of the EncapsulatedClassifier and can, therefore, be altered or deleted along with the internal implementation of the EncapsulatedClassifier and other properties that are considered part of its implementation.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MO3x_4kxEeOMQ5AKLd10lA" value="true"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MO4ZAIkxEeOMQ5AKLd10lA" name="protocol" type="_MObGAIkxEeOMQ5AKLd10lA" association="_MO8DbokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MO4ZAYkxEeOMQ5AKLd10lA" annotatedElement="_MO4ZAIkxEeOMQ5AKLd10lA">
<body>An optional ProtocolStateMachine which describes valid interactions at this interaction point.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO4ZAokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MO4ZA4kxEeOMQ5AKLd10lA" name="provided" type="_8Ugn8GvtEdqG6fBIPwe-mw" isReadOnly="true" isDerived="true" association="_MO8qeIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MO4ZBIkxEeOMQ5AKLd10lA" annotatedElement="_MO4ZA4kxEeOMQ5AKLd10lA">
<body>The Interfaces specifying the set of Operations and Receptions that the EncapsulatedCclassifier offers to its environment via this Port, and which it will handle either directly or by forwarding it to a part of its internal structure. This association is derived according to the value of isConjugated. If isConjugated is false, provided is derived as the union of the sets of Interfaces realized by the type of the port and its supertypes, or directly from the type of the Port if the Port is typed by an Interface. If isConjugated is true, it is derived as the union of the sets of Interfaces used by the type of the Port and its supertypes.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO4ZBYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MO4ZBokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MO4ZB4kxEeOMQ5AKLd10lA" name="redefinedPort" type="_ZAuvEGveEdq4DLWZOhbdEA" subsettedProperty="_MMaT2okxEeOMQ5AKLd10lA" association="_MO8qdIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MO4ZCIkxEeOMQ5AKLd10lA" annotatedElement="_MO4ZB4kxEeOMQ5AKLd10lA">
<body>A Port may be redefined when its containing EncapsulatedClassifier is specialized. The redefining Port may have additional Interfaces to those that are associated with the redefined Port or it may replace an Interface by one of its subtypes.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO4ZCYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MO4ZCokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MO4ZC4kxEeOMQ5AKLd10lA" name="required" type="_8Ugn8GvtEdqG6fBIPwe-mw" isReadOnly="true" isDerived="true" association="_MO8qcIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MO4ZDIkxEeOMQ5AKLd10lA" annotatedElement="_MO4ZC4kxEeOMQ5AKLd10lA">
<body>The Interfaces specifying the set of Operations and Receptions that the EncapsulatedCassifier expects its environment to handle via this port. This association is derived according to the value of isConjugated. If isConjugated is false, required is derived as the union of the sets of Interfaces used by the type of the Port and its supertypes. If isConjugated is true, it is derived as the union of the sets of Interfaces realized by the type of the Port and its supertypes, or directly from the type of the Port if the Port is typed by an Interface.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO4ZDYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MO4ZDokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedOperation xmi:id="_gtr8cFYhEdqB6vblk3tuMA" name="provided" visibility="protected" bodyCondition="_MO4ZEIkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MO4ZD4kxEeOMQ5AKLd10lA" annotatedElement="_gtr8cFYhEdqB6vblk3tuMA">
<body>Derivation for Port::/provided</body>
</ownedComment>
<ownedRule xmi:id="_MO4ZEIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_gtr8cFYhEdqB6vblk3tuMA _MO4ZA4kxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MO4ZEYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if isConjugated then basicRequired() else basicProvided() endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_jIqKEFYhEdqB6vblk3tuMA" name="result" type="_8Ugn8GvtEdqG6fBIPwe-mw" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO4ZEokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MO5AEIkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_mxt7cFYhEdqB6vblk3tuMA" name="required" visibility="protected" bodyCondition="_MO5AEokxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MO5AEYkxEeOMQ5AKLd10lA" annotatedElement="_mxt7cFYhEdqB6vblk3tuMA">
<body>Derivation for Port::/required</body>
</ownedComment>
<ownedRule xmi:id="_MO5AEokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_mxt7cFYhEdqB6vblk3tuMA _MO4ZC4kxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MO5AE4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if isConjugated then basicProvided() else basicRequired() endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_osMrIFYhEdqB6vblk3tuMA" name="result" type="_8Ugn8GvtEdqG6fBIPwe-mw" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO5AFIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MO5AFYkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MO5nIIkxEeOMQ5AKLd10lA" name="basicProvided" bodyCondition="_MO5nIokxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MO5nIYkxEeOMQ5AKLd10lA" annotatedElement="_MO5nIIkxEeOMQ5AKLd10lA">
<body>The union of the sets of Interfaces realized by the type of the Port and its supertypes, or directly the type of the Port if the Port is typed by an Interface.</body>
</ownedComment>
<ownedRule xmi:id="_MO5nIokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MO5nIIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MO5nI4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if type.oclIsKindOf(Interface) &#xD;
then type.oclAsType(Interface)->asSet() &#xD;
else type.oclAsType(Classifier).allRealizedInterfaces() &#xD;
endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MO5nJIkxEeOMQ5AKLd10lA" name="result" type="_8Ugn8GvtEdqG6fBIPwe-mw" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO5nJYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MO5nJokxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MO5nJ4kxEeOMQ5AKLd10lA" name="basicRequired" bodyCondition="_MO5nKYkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MO5nKIkxEeOMQ5AKLd10lA" annotatedElement="_MO5nJ4kxEeOMQ5AKLd10lA">
<body>The union of the sets of Interfaces used by the type of the Port and its supertypes.</body>
</ownedComment>
<ownedRule xmi:id="_MO5nKYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MO5nJ4kxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MO5nKokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = ( type.oclAsType(Classifier).allUsedInterfaces() )</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MO5nK4kxEeOMQ5AKLd10lA" name="result" type="_8Ugn8GvtEdqG6fBIPwe-mw" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO5nLIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MO5nLYkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_FQiVsGwYEdqHKKVoxc0dlA" name="StructuredClassifier" isAbstract="true">
<ownedComment xmi:id="_MO5nLokxEeOMQ5AKLd10lA" annotatedElement="_FQiVsGwYEdqHKKVoxc0dlA">
<body>StructuredClassifiers may contain an internal structure of connected elements each of which plays a role in the overall Behavior modeled by the StructuredClassifier.</body>
</ownedComment>
<generalization xmi:id="_MO6OMIkxEeOMQ5AKLd10lA" general="_6UV2QGwJEdq7X4sGURiZYA"/>
<ownedAttribute xmi:id="_MO6OMYkxEeOMQ5AKLd10lA" name="ownedAttribute" type="_Jp_1oGveEdq4DLWZOhbdEA" isOrdered="true" aggregation="composite" subsettedProperty="_ML-O9IkxEeOMQ5AKLd10lA _MNQBWIkxEeOMQ5AKLd10lA _MO6OPYkxEeOMQ5AKLd10lA" association="_MO8DZokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MO6OMokxEeOMQ5AKLd10lA" annotatedElement="_MO6OMYkxEeOMQ5AKLd10lA">
<body>The Properties owned by the StructuredClassifier.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO6OM4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MO6ONIkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MO6ONYkxEeOMQ5AKLd10lA" name="ownedConnector" type="_YxC2YLLWEeCsYvaJqFFivQ" aggregation="composite" subsettedProperty="_MMmhFYkxEeOMQ5AKLd10lA _ML-2AIkxEeOMQ5AKLd10lA _MNQBWIkxEeOMQ5AKLd10lA" association="_MO8DY4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MO6ONokxEeOMQ5AKLd10lA" annotatedElement="_MO6ONYkxEeOMQ5AKLd10lA">
<body>The connectors owned by the StructuredClassifier.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO6ON4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MO6OOIkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MO6OOYkxEeOMQ5AKLd10lA" name="part" type="_Jp_1oGveEdq4DLWZOhbdEA" isReadOnly="true" isDerived="true" association="_MO8DYIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MO6OOokxEeOMQ5AKLd10lA" annotatedElement="_MO6OOYkxEeOMQ5AKLd10lA">
<body>The Properties specifying instances that the StructuredClassifier owns by composition. This collection is derived, selecting those owned Properties where isComposite is true.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO6OO4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MO6OPIkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MO6OPYkxEeOMQ5AKLd10lA" name="role" type="_0dB44PnhEdunWsS3se92JQ" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_MNQBVIkxEeOMQ5AKLd10lA" association="_MO8DaokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MO6OPokxEeOMQ5AKLd10lA" annotatedElement="_MO6OPYkxEeOMQ5AKLd10lA">
<body>The roles that instances may play in this StructuredClassifier.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO6OP4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MO6OQIkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedOperation xmi:id="_YorvMHL0EdqziYxiZo0YtA" name="createOwnedAttribute">
<ownedComment xmi:id="_9BZT4OwlEdqYHf-imTcTdw" annotatedElement="_YorvMHL0EdqziYxiZo0YtA">
<body>Creates a property with the specified name, type, lower bound, and upper bound as an owned attribute of this structured classifier.</body>
</ownedComment>
<ownedParameter xmi:id="_YorvMXL0EdqziYxiZo0YtA" type="_Jp_1oGveEdq4DLWZOhbdEA" direction="return"/>
<ownedParameter xmi:id="_YorvMnL0EdqziYxiZo0YtA" name="name" effect="read">
<ownedComment xmi:id="_GYWNMPIGEdulR8T2OJRyFQ" annotatedElement="_YorvMnL0EdqziYxiZo0YtA">
<body>The name for the new attribute, or null.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_gKEUcKOxEdqi_5gqUMOQtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_gKEUcaOxEdqi_5gqUMOQtA" value="1"/>
</ownedParameter>
<ownedParameter xmi:id="_YorvM3L0EdqziYxiZo0YtA" name="type" type="_ynRtoGvtEdqG6fBIPwe-mw" effect="read">
<ownedComment xmi:id="_Ic0mYPIGEdulR8T2OJRyFQ" annotatedElement="_YorvM3L0EdqziYxiZo0YtA">
<body>The type for the new attribute, or null.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iJ7TYKOxEdqi_5gqUMOQtA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iJ7TYaOxEdqi_5gqUMOQtA" value="1"/>
</ownedParameter>
<ownedParameter xmi:id="_YorvNHL0EdqziYxiZo0YtA" name="lower" effect="read">
<ownedComment xmi:id="_EwVGgPIGEdulR8T2OJRyFQ" annotatedElement="_YorvNHL0EdqziYxiZo0YtA">
<body>The lower bound for the new attribute.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
</ownedParameter>
<ownedParameter xmi:id="_YorvNXL0EdqziYxiZo0YtA" name="upper" effect="read">
<ownedComment xmi:id="_JWfZUPIGEdulR8T2OJRyFQ" annotatedElement="_YorvNXL0EdqziYxiZo0YtA">
<body>The upper bound for the new attribute.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_ATcCwLL8EeCBifIhhuFqZA" name="part" visibility="protected" bodyCondition="_MO61QIkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MO6OQYkxEeOMQ5AKLd10lA" annotatedElement="_ATcCwLL8EeCBifIhhuFqZA">
<body>Derivation for StructuredClassifier::/part</body>
</ownedComment>
<ownedRule xmi:id="_MO61QIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_ATcCwLL8EeCBifIhhuFqZA _MO6OOYkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MO61QYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (ownedAttribute->select(isComposite)->asSet())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_BPYtoLL8EeCBifIhhuFqZA" name="result" type="_Jp_1oGveEdq4DLWZOhbdEA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO61QokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MO61Q4kxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MO61RIkxEeOMQ5AKLd10lA" name="allRoles" bodyCondition="_MO61RokxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MO61RYkxEeOMQ5AKLd10lA" annotatedElement="_MO61RIkxEeOMQ5AKLd10lA">
<body>All features of type ConnectableElement, equivalent to all direct and inherited roles.</body>
</ownedComment>
<ownedRule xmi:id="_MO61RokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MO61RIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MO61R4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (allFeatures()->select(oclIsKindOf(ConnectableElement))->collect(oclAsType(ConnectableElement))->asSet())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MO61SIkxEeOMQ5AKLd10lA" name="result" type="_0dB44PnhEdunWsS3se92JQ" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO61SYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MO61SokxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Enumeration" xmi:id="_echygLLWEeCsYvaJqFFivQ" name="ConnectorKind" visibility="private">
<ownedComment xmi:id="_MO7cUIkxEeOMQ5AKLd10lA" annotatedElement="_echygLLWEeCsYvaJqFFivQ">
<body>ConnectorKind is an enumeration that defines whether a Connector is an assembly or a delegation.</body>
</ownedComment>
<ownedLiteral xmi:id="_MO7cUYkxEeOMQ5AKLd10lA" name="assembly">
<ownedComment xmi:id="_MO7cUokxEeOMQ5AKLd10lA" annotatedElement="_MO7cUYkxEeOMQ5AKLd10lA">
<body>Indicates that the Connector is an assembly Connector.</body>
</ownedComment>
</ownedLiteral>
<ownedLiteral xmi:id="_MO7cU4kxEeOMQ5AKLd10lA" name="delegation">
<ownedComment xmi:id="_MO7cVIkxEeOMQ5AKLd10lA" annotatedElement="_MO7cU4kxEeOMQ5AKLd10lA">
<body>Indicates that the Connector is a delegation Connector.</body>
</ownedComment>
</ownedLiteral>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MO8DYIkxEeOMQ5AKLd10lA" name="A_part_structuredClassifier" isDerived="true" memberEnd="_MO6OOYkxEeOMQ5AKLd10lA _MO8DYYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MO8DYYkxEeOMQ5AKLd10lA" name="structuredClassifier" type="_FQiVsGwYEdqHKKVoxc0dlA" association="_MO8DYIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO8DYokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MO8DY4kxEeOMQ5AKLd10lA" name="A_ownedConnector_structuredClassifier" memberEnd="_MO6ONYkxEeOMQ5AKLd10lA _MO8DZIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MO8DZIkxEeOMQ5AKLd10lA" name="structuredClassifier" type="_FQiVsGwYEdqHKKVoxc0dlA" subsettedProperty="_YUdlwLbAEeCRxrN1JUGuxA _1vzv0LbIEeCRxrN1JUGuxA _zYrE4La-EeCRxrN1JUGuxA" association="_MO8DY4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO8DZYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MO8DZokxEeOMQ5AKLd10lA" name="A_ownedAttribute_structuredClassifier" memberEnd="_MO6OMYkxEeOMQ5AKLd10lA _MO8DaIkxEeOMQ5AKLd10lA">
<generalization xmi:id="_MO8DZ4kxEeOMQ5AKLd10lA" general="_MO8DaokxEeOMQ5AKLd10lA"/>
<ownedEnd xmi:id="_MO8DaIkxEeOMQ5AKLd10lA" name="structuredClassifier" type="_FQiVsGwYEdqHKKVoxc0dlA" redefinedProperty="_MO8Da4kxEeOMQ5AKLd10lA" subsettedProperty="_MMsAqIkxEeOMQ5AKLd10lA _1vzv0LbIEeCRxrN1JUGuxA" association="_MO8DZokxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO8DaYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MO8DaokxEeOMQ5AKLd10lA" name="A_role_structuredClassifier" isDerived="true" memberEnd="_MO6OPYkxEeOMQ5AKLd10lA _MO8Da4kxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MO8Da4kxEeOMQ5AKLd10lA" name="structuredClassifier" type="_FQiVsGwYEdqHKKVoxc0dlA" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="_MNbAcYkxEeOMQ5AKLd10lA" association="_MO8DaokxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO8DbIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MO8DbYkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MO8DbokxEeOMQ5AKLd10lA" name="A_protocol_port" memberEnd="_MO4ZAIkxEeOMQ5AKLd10lA _MO8Db4kxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MO8Db4kxEeOMQ5AKLd10lA" name="port" type="_ZAuvEGveEdq4DLWZOhbdEA" association="_MO8DbokxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO8DcIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MO8DcYkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MO8qcIkxEeOMQ5AKLd10lA" name="A_required_port" isDerived="true" memberEnd="_MO4ZC4kxEeOMQ5AKLd10lA _MO8qcYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MO8qcYkxEeOMQ5AKLd10lA" name="port" type="_ZAuvEGveEdq4DLWZOhbdEA" association="_MO8qcIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO8qcokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MO8qc4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MO8qdIkxEeOMQ5AKLd10lA" name="A_redefinedPort_port" memberEnd="_MO4ZB4kxEeOMQ5AKLd10lA _MO8qdYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MO8qdYkxEeOMQ5AKLd10lA" name="port" type="_ZAuvEGveEdq4DLWZOhbdEA" subsettedProperty="_MMnIIokxEeOMQ5AKLd10lA" association="_MO8qdIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO8qdokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MO8qd4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MO8qeIkxEeOMQ5AKLd10lA" name="A_provided_port" isDerived="true" memberEnd="_MO4ZA4kxEeOMQ5AKLd10lA _MO9RgIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MO9RgIkxEeOMQ5AKLd10lA" name="port" type="_ZAuvEGveEdq4DLWZOhbdEA" association="_MO8qeIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO9RgYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MO9RgokxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MO9Rg4kxEeOMQ5AKLd10lA" name="A_ownedPort_encapsulatedClassifier" isDerived="true" memberEnd="_MO2j0YkxEeOMQ5AKLd10lA _MO9RhIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MO9RhIkxEeOMQ5AKLd10lA" name="encapsulatedClassifier" type="_HiSd0LL2EeCBifIhhuFqZA" subsettedProperty="_MO8DaIkxEeOMQ5AKLd10lA" association="_MO9Rg4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO9RhYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MO9RhokxEeOMQ5AKLd10lA" name="A_partWithPort_connectorEnd" memberEnd="_MO1VtIkxEeOMQ5AKLd10lA _MO9Rh4kxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MO9Rh4kxEeOMQ5AKLd10lA" name="connectorEnd" type="_aOgw0GveEdq4DLWZOhbdEA" association="_MO9RhokxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO9RiIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MO9RiYkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MO9RiokxEeOMQ5AKLd10lA" name="A_definingEnd_connectorEnd" isDerived="true" memberEnd="_MO1VsYkxEeOMQ5AKLd10lA _MO9Ri4kxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MO9Ri4kxEeOMQ5AKLd10lA" name="connectorEnd" type="_aOgw0GveEdq4DLWZOhbdEA" association="_MO9RiokxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO9RjIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MO9RjYkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MO9RjokxEeOMQ5AKLd10lA" name="A_end_connector" memberEnd="_MOzgi4kxEeOMQ5AKLd10lA _MO9Rj4kxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MO9Rj4kxEeOMQ5AKLd10lA" name="connector" type="_YxC2YLLWEeCsYvaJqFFivQ" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MO9RjokxEeOMQ5AKLd10lA"/>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MO9RkIkxEeOMQ5AKLd10lA" name="A_redefinedConnector_connector" memberEnd="_MOzgkYkxEeOMQ5AKLd10lA _MO9RkYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MO9RkYkxEeOMQ5AKLd10lA" name="connector" type="_YxC2YLLWEeCsYvaJqFFivQ" subsettedProperty="_MMmhGYkxEeOMQ5AKLd10lA" association="_MO9RkIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO9RkokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MO9Rk4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MO94kIkxEeOMQ5AKLd10lA" name="A_contract_connector" memberEnd="_MOzgh4kxEeOMQ5AKLd10lA _MO94kYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MO94kYkxEeOMQ5AKLd10lA" name="connector" type="_YxC2YLLWEeCsYvaJqFFivQ" association="_MO94kIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO94kokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MO94k4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MO94lIkxEeOMQ5AKLd10lA" name="A_type_connector" memberEnd="_MOzglYkxEeOMQ5AKLd10lA _MO94lYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MO94lYkxEeOMQ5AKLd10lA" name="connector" type="_YxC2YLLWEeCsYvaJqFFivQ" association="_MO94lIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO94lokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MO94l4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MO94mIkxEeOMQ5AKLd10lA" name="A_connectableElement_templateParameter_parameteredElement" memberEnd="_MOyScIkxEeOMQ5AKLd10lA _MOy5d4kxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_81UZgPnhEdunWsS3se92JQ" name="A_end_role" memberEnd="_MOySbIkxEeOMQ5AKLd10lA _81UZgfnhEdunWsS3se92JQ _81UZhPnhEdunWsS3se92JQ">
<ownedEnd xmi:id="_81UZhPnhEdunWsS3se92JQ" name="end" visibility="private" type="_aOgw0GveEdq4DLWZOhbdEA" association="_81UZgPnhEdunWsS3se92JQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_81UZhfnhEdunWsS3se92JQ"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_81UZhvnhEdunWsS3se92JQ" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MO94mYkxEeOMQ5AKLd10lA" name="A_realizingClassifier_componentRealization" memberEnd="_MOySZokxEeOMQ5AKLd10lA _MO94mokxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MO94mokxEeOMQ5AKLd10lA" name="componentRealization" type="_MOySYIkxEeOMQ5AKLd10lA" association="_MO94mYkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO94m4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MO94nIkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MO94nYkxEeOMQ5AKLd10lA" name="A_required_component" isDerived="true" memberEnd="_MOwdQIkxEeOMQ5AKLd10lA _MO94nokxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MO94nokxEeOMQ5AKLd10lA" name="component" type="_DAbfwa69EdqjppZik4kD8A" association="_MO94nYkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO94n4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MO94oIkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MO94oYkxEeOMQ5AKLd10lA" name="A_packagedElement_component" memberEnd="_MOwdNIkxEeOMQ5AKLd10lA _MO94ookxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MO94ookxEeOMQ5AKLd10lA" name="component" type="_DAbfwa69EdqjppZik4kD8A" subsettedProperty="_1vzv0LbIEeCRxrN1JUGuxA" association="_MO94oYkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO94o4kxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MO-foIkxEeOMQ5AKLd10lA" name="A_realization_abstraction_component" memberEnd="_MOwdPIkxEeOMQ5AKLd10lA _MOySY4kxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MO-foYkxEeOMQ5AKLd10lA" name="A_provided_component" isDerived="true" memberEnd="_MOwdOIkxEeOMQ5AKLd10lA _MO-fookxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MO-fookxEeOMQ5AKLd10lA" name="component" type="_DAbfwa69EdqjppZik4kD8A" association="_MO-foYkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO-fo4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MO-fpIkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MO_GsIkxEeOMQ5AKLd10lA" name="A_type_collaborationUse" memberEnd="_MOv2MIkxEeOMQ5AKLd10lA _MO_GsYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MO_GsYkxEeOMQ5AKLd10lA" name="collaborationUse" type="_MOv2IIkxEeOMQ5AKLd10lA" association="_MO_GsIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO_GsokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MO_Gs4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MO_GtIkxEeOMQ5AKLd10lA" name="A_roleBinding_collaborationUse" memberEnd="_MOv2LIkxEeOMQ5AKLd10lA _MO_GtYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MO_GtYkxEeOMQ5AKLd10lA" name="collaborationUse" type="_MOv2IIkxEeOMQ5AKLd10lA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MO_GtIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO_GtokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MO_Gt4kxEeOMQ5AKLd10lA" name="A_collaborationRole_collaboration" memberEnd="_MOvPFIkxEeOMQ5AKLd10lA _MO_GuIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MO_GuIkxEeOMQ5AKLd10lA" name="collaboration" type="_MOvPEIkxEeOMQ5AKLd10lA" subsettedProperty="_MO8Da4kxEeOMQ5AKLd10lA" association="_MO_Gt4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO_GuYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MO_GuokxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MO_Gu4kxEeOMQ5AKLd10lA" name="A_ownedOperation_class" memberEnd="_MOuBAokxEeOMQ5AKLd10lA _MMLDRIkxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MO_GvIkxEeOMQ5AKLd10lA" name="A_superClass_class" isDerived="true" memberEnd="_MOuBCokxEeOMQ5AKLd10lA _MO_GvYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MO_GvYkxEeOMQ5AKLd10lA" name="class" type="_00owUGvdEdq4DLWZOhbdEA" subsettedProperty="_MMqyiIkxEeOMQ5AKLd10lA" association="_MO_GvIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO_GvokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MO_Gv4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MO_twIkxEeOMQ5AKLd10lA" name="A_extension_metaclass" isDerived="true" memberEnd="_MOuA8IkxEeOMQ5AKLd10lA _MOCEeokxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MO_twYkxEeOMQ5AKLd10lA" name="A_ownedAttribute_class" memberEnd="_MOuA_okxEeOMQ5AKLd10lA _Ef_yMLa_EeCRxrN1JUGuxA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MO_twokxEeOMQ5AKLd10lA" name="A_nestedClassifier_nestingClass" memberEnd="_MOuA-okxEeOMQ5AKLd10lA _MO_tw4kxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MO_tw4kxEeOMQ5AKLd10lA" name="nestingClass" type="_00owUGvdEdq4DLWZOhbdEA" subsettedProperty="_1vzv0LbIEeCRxrN1JUGuxA _zYrE4La-EeCRxrN1JUGuxA" association="_MO_twokxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO_txIkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MO_txYkxEeOMQ5AKLd10lA" name="A_ownedReception_class" memberEnd="_MOuBBokxEeOMQ5AKLd10lA _MO_txokxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MO_txokxEeOMQ5AKLd10lA" name="class" type="_00owUGvdEdq4DLWZOhbdEA" subsettedProperty="_YUdlwLbAEeCRxrN1JUGuxA _1vzv0LbIEeCRxrN1JUGuxA" association="_MO_txYkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO_tx4kxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MO_tyIkxEeOMQ5AKLd10lA" name="A_memberEnd_association" memberEnd="_MOsL1YkxEeOMQ5AKLd10lA _MMYepIkxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MO_tyYkxEeOMQ5AKLd10lA" name="A_endType_association" isDerived="true" memberEnd="_MOsLz4kxEeOMQ5AKLd10lA _MO_tyokxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MO_tyokxEeOMQ5AKLd10lA" name="association" type="_AwvxoGwNEdq7X4sGURiZYA" subsettedProperty="_MNZyWIkxEeOMQ5AKLd10lA" association="_MO_tyYkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MO_ty4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MO_tzIkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MO_tzYkxEeOMQ5AKLd10lA" name="A_ownedEnd_owningAssociation" memberEnd="_MOsy1IkxEeOMQ5AKLd10lA _MMaT04kxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MPAU0IkxEeOMQ5AKLd10lA" name="A_navigableOwnedEnd_association" memberEnd="_MOsy0IkxEeOMQ5AKLd10lA _MPAU0YkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MPAU0YkxEeOMQ5AKLd10lA" name="association" type="_AwvxoGwNEdq7X4sGURiZYA" subsettedProperty="_MMaT04kxEeOMQ5AKLd10lA" association="_MPAU0IkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPAU0okxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MPCKAIkxEeOMQ5AKLd10lA" name="Actor">
<ownedComment xmi:id="_MPCKAYkxEeOMQ5AKLd10lA" annotatedElement="_MPCKAIkxEeOMQ5AKLd10lA">
<body>An Actor specifies a role played by a user or any other system that interacts with the subject.</body>
</ownedComment>
<ownedRule xmi:id="_MPCKAokxEeOMQ5AKLd10lA" name="associations" constrainedElement="_MPCKAIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPCKA4kxEeOMQ5AKLd10lA" annotatedElement="_MPCKAokxEeOMQ5AKLd10lA">
<body>An Actor can only have Associations to UseCases, Components, and Classes. Furthermore these Associations must be binary.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPCKBIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>Association.allInstances()->forAll( a |
a.memberEnd->collect(type)->includes(self) implies
(
a.memberEnd->size() = 2 and
let actorEnd : Property = a.memberEnd->any(type = self) in
actorEnd.opposite.class.oclIsKindOf(UseCase) or
( actorEnd.opposite.class.oclIsKindOf(Class) and not
actorEnd.opposite.class.oclIsKindOf(Behavior))
)
)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MPCKBYkxEeOMQ5AKLd10lA" name="must_have_name" constrainedElement="_MPCKAIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPCKBokxEeOMQ5AKLd10lA" annotatedElement="_MPCKBYkxEeOMQ5AKLd10lA">
<body>An Actor must have a name.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPCKB4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>name->notEmpty()</body>
</specification>
</ownedRule>
<generalization xmi:id="_MPCKCIkxEeOMQ5AKLd10lA" general="_iY7sMGvsEdqG6fBIPwe-mw"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MPCKCYkxEeOMQ5AKLd10lA" name="Extend">
<ownedComment xmi:id="_MPCKCokxEeOMQ5AKLd10lA" annotatedElement="_MPCKCYkxEeOMQ5AKLd10lA">
<body>A relationship from an extending UseCase to an extended UseCase that specifies how and when the behavior defined in the extending UseCase can be inserted into the behavior defined in the extended UseCase.</body>
</ownedComment>
<ownedRule xmi:id="_MPCKC4kxEeOMQ5AKLd10lA" name="extension_points" constrainedElement="_MPCKCYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPCKDIkxEeOMQ5AKLd10lA" annotatedElement="_MPCKC4kxEeOMQ5AKLd10lA">
<body>The ExtensionPoints referenced by the Extend relationship must belong to the UseCase that is being extended.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPCKDYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>extensionLocation->forAll (xp | extendedCase.extensionPoint->includes(xp))</body>
</specification>
</ownedRule>
<generalization xmi:id="_MPCKDokxEeOMQ5AKLd10lA" general="_csVgUGvtEdqG6fBIPwe-mw"/>
<generalization xmi:id="_MPCKD4kxEeOMQ5AKLd10lA" general="_JBgfoKPAEdqi_5gqUMOQtA"/>
<ownedAttribute xmi:id="_MPCKEIkxEeOMQ5AKLd10lA" name="condition" type="_MNAJsIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MPEmRIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPCKEYkxEeOMQ5AKLd10lA" annotatedElement="_MPCKEIkxEeOMQ5AKLd10lA">
<body>References the condition that must hold when the first ExtensionPoint is reached for the extension to take place. If no constraint is associated with the Extend relationship, the extension is unconditional.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPCKEokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MPCKE4kxEeOMQ5AKLd10lA" name="extendedCase" type="_MPDYIIkxEeOMQ5AKLd10lA" subsettedProperty="_MNB-44kxEeOMQ5AKLd10lA" association="_MPEmR4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPCKFIkxEeOMQ5AKLd10lA" annotatedElement="_MPCKE4kxEeOMQ5AKLd10lA">
<body>The UseCase that is being extended.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MPCKFYkxEeOMQ5AKLd10lA" name="extension" type="_MPDYIIkxEeOMQ5AKLd10lA" subsettedProperty="_MNB-4IkxEeOMQ5AKLd10lA _1vzv0LbIEeCRxrN1JUGuxA" association="_MPD_M4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPCKFokxEeOMQ5AKLd10lA" annotatedElement="_MPCKFYkxEeOMQ5AKLd10lA">
<body>The UseCase that represents the extension and owns the Extend relationship.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MPCKF4kxEeOMQ5AKLd10lA" name="extensionLocation" type="_MPCxEIkxEeOMQ5AKLd10lA" isOrdered="true" association="_MPEmQIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPCKGIkxEeOMQ5AKLd10lA" annotatedElement="_MPCKF4kxEeOMQ5AKLd10lA">
<body>An ordered list of ExtensionPoints belonging to the extended UseCase, specifying where the respective behavioral fragments of the extending UseCase are to be inserted. The first fragment in the extending UseCase is associated with the first extension point in the list, the second fragment with the second point, and so on. Note that, in most practical cases, the extending UseCase has just a single behavior fragment, so that the list of ExtensionPoints is trivial.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MPCKGYkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MPCxEIkxEeOMQ5AKLd10lA" name="ExtensionPoint">
<ownedComment xmi:id="_MPCxEYkxEeOMQ5AKLd10lA" annotatedElement="_MPCxEIkxEeOMQ5AKLd10lA">
<body>An ExtensionPoint identifies a point in the behavior of a UseCase where that behavior can be extended by the behavior of some other (extending) UseCase, as specified by an Extend relationship.</body>
</ownedComment>
<ownedRule xmi:id="_MPCxEokxEeOMQ5AKLd10lA" name="must_have_name" constrainedElement="_MPCxEIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPCxE4kxEeOMQ5AKLd10lA" annotatedElement="_MPCxEokxEeOMQ5AKLd10lA">
<body>An ExtensionPoint must have a name.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPCxFIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>name->notEmpty ()</body>
</specification>
</ownedRule>
<generalization xmi:id="_MPCxFYkxEeOMQ5AKLd10lA" general="_uCRA4La-EeCRxrN1JUGuxA"/>
<ownedAttribute xmi:id="_MPCxFokxEeOMQ5AKLd10lA" name="useCase" type="_MPDYIIkxEeOMQ5AKLd10lA" subsettedProperty="_1vzv0LbIEeCRxrN1JUGuxA" association="_MPD_MIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPCxF4kxEeOMQ5AKLd10lA" annotatedElement="_MPCxFokxEeOMQ5AKLd10lA">
<body>The UseCase that owns this ExtensionPoint.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MPCxGIkxEeOMQ5AKLd10lA" name="Include">
<ownedComment xmi:id="_MPCxGYkxEeOMQ5AKLd10lA" annotatedElement="_MPCxGIkxEeOMQ5AKLd10lA">
<body>An Include relationship specifies that a UseCase contains the behavior defined in another UseCase.</body>
</ownedComment>
<generalization xmi:id="_MPCxGokxEeOMQ5AKLd10lA" general="_JBgfoKPAEdqi_5gqUMOQtA"/>
<generalization xmi:id="_MPCxG4kxEeOMQ5AKLd10lA" general="_csVgUGvtEdqG6fBIPwe-mw"/>
<ownedAttribute xmi:id="_MPCxHIkxEeOMQ5AKLd10lA" name="addition" type="_MPDYIIkxEeOMQ5AKLd10lA" subsettedProperty="_MNB-44kxEeOMQ5AKLd10lA" association="_MPD_NIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPCxHYkxEeOMQ5AKLd10lA" annotatedElement="_MPCxHIkxEeOMQ5AKLd10lA">
<body>The UseCase that is to be included.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MPCxHokxEeOMQ5AKLd10lA" name="includingCase" type="_MPDYIIkxEeOMQ5AKLd10lA" subsettedProperty="_MNB-4IkxEeOMQ5AKLd10lA _1vzv0LbIEeCRxrN1JUGuxA" association="_MPD_MYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPCxH4kxEeOMQ5AKLd10lA" annotatedElement="_MPCxHokxEeOMQ5AKLd10lA">
<body>The UseCase which includes the addition and owns the Include relationship.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MPDYIIkxEeOMQ5AKLd10lA" name="UseCase">
<ownedComment xmi:id="_MPDYIYkxEeOMQ5AKLd10lA" annotatedElement="_MPDYIIkxEeOMQ5AKLd10lA">
<body>A UseCase specifies a set of actions performed by its subjects, which yields an observable result that is of value for one or more Actors or other stakeholders of each subject.</body>
</ownedComment>
<ownedRule xmi:id="_MPDYIokxEeOMQ5AKLd10lA" name="binary_associations" constrainedElement="_MPDYIIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPDYI4kxEeOMQ5AKLd10lA" annotatedElement="_MPDYIokxEeOMQ5AKLd10lA">
<body>UseCases can only be involved in binary Associations.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPDYJIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>Association.allInstances()->forAll(a | a.memberEnd.type->includes(self) implies a.memberEnd->size() = 2)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MPDYJYkxEeOMQ5AKLd10lA" name="no_association_to_use_case" constrainedElement="_MPDYIIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPDYJokxEeOMQ5AKLd10lA" annotatedElement="_MPDYJYkxEeOMQ5AKLd10lA">
<body>UseCases cannot have Associations to UseCases specifying the same subject.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPDYJ4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>Association.allInstances()->forAll(a | a.memberEnd.type->includes(self) implies &#xD;
(&#xD;
let usecases: Set(UseCase) = a.memberEnd.type->select(oclIsKindOf(UseCase))->collect(oclAsType(UseCase))->asSet() in&#xD;
usecases->size() > 1 implies usecases->collect(subject)->size() > 1&#xD;
)&#xD;
)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MPDYKIkxEeOMQ5AKLd10lA" name="cannot_include_self" constrainedElement="_MPDYIIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPDYKYkxEeOMQ5AKLd10lA" annotatedElement="_MPDYKIkxEeOMQ5AKLd10lA">
<body>A UseCase cannot include UseCases that directly or indirectly include it.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPDYKokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>not allIncludedUseCases()->includes(self)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MPDYK4kxEeOMQ5AKLd10lA" name="must_have_name" constrainedElement="_MPDYIIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPDYLIkxEeOMQ5AKLd10lA" annotatedElement="_MPDYK4kxEeOMQ5AKLd10lA">
<body>A UseCase must have a name.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPDYLYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>name -> notEmpty ()</body>
</specification>
</ownedRule>
<generalization xmi:id="_MPDYLokxEeOMQ5AKLd10lA" general="_iY7sMGvsEdqG6fBIPwe-mw"/>
<ownedAttribute xmi:id="_MPDYL4kxEeOMQ5AKLd10lA" name="extend" type="_MPCKCYkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MNcOlIkxEeOMQ5AKLd10lA _MNQBWIkxEeOMQ5AKLd10lA" association="_MPD_M4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPDYMIkxEeOMQ5AKLd10lA" annotatedElement="_MPDYL4kxEeOMQ5AKLd10lA">
<body>The Extend relationships owned by this UseCase.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPDYMYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MPDYMokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MPDYM4kxEeOMQ5AKLd10lA" name="extensionPoint" type="_MPCxEIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MNQBWIkxEeOMQ5AKLd10lA" association="_MPD_MIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPDYNIkxEeOMQ5AKLd10lA" annotatedElement="_MPDYM4kxEeOMQ5AKLd10lA">
<body>The ExtensionPoints owned by this UseCase.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPDYNYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MPDYNokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MPDYN4kxEeOMQ5AKLd10lA" name="include" type="_MPCxGIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_MNcOlIkxEeOMQ5AKLd10lA _MNQBWIkxEeOMQ5AKLd10lA" association="_MPD_MYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPDYOIkxEeOMQ5AKLd10lA" annotatedElement="_MPDYN4kxEeOMQ5AKLd10lA">
<body>The Include relationships owned by this UseCase.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPDYOYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MPDYOokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MPDYO4kxEeOMQ5AKLd10lA" name="subject" type="_6UV2QGwJEdq7X4sGURiZYA" association="_MPD_MokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPDYPIkxEeOMQ5AKLd10lA" annotatedElement="_MPDYO4kxEeOMQ5AKLd10lA">
<body>The subjects to which this UseCase applies. Each subject or its parts realize all the UseCases that apply to it.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPDYPYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MPDYPokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedOperation xmi:id="_MPDYP4kxEeOMQ5AKLd10lA" name="allIncludedUseCases" bodyCondition="_MPDYQYkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MPDYQIkxEeOMQ5AKLd10lA" annotatedElement="_MPDYP4kxEeOMQ5AKLd10lA">
<body>The query allIncludedUseCases() returns the transitive closure of all UseCases (directly or indirectly) included by this UseCase.</body>
</ownedComment>
<ownedRule xmi:id="_MPDYQYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MPDYP4kxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPDYQokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (self.include.addition->union(self.include.addition->collect(uc | uc.allIncludedUseCases()))->asSet())</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MPDYQ4kxEeOMQ5AKLd10lA" name="result" type="_MPDYIIkxEeOMQ5AKLd10lA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPDYRIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MPDYRYkxEeOMQ5AKLd10lA" value="*"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MPD_MIkxEeOMQ5AKLd10lA" name="A_extensionPoint_useCase" memberEnd="_MPDYM4kxEeOMQ5AKLd10lA _MPCxFokxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MPD_MYkxEeOMQ5AKLd10lA" name="A_include_includingCase" memberEnd="_MPDYN4kxEeOMQ5AKLd10lA _MPCxHokxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MPD_MokxEeOMQ5AKLd10lA" name="A_subject_useCase" memberEnd="_MPDYO4kxEeOMQ5AKLd10lA _MMAEKokxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MPD_M4kxEeOMQ5AKLd10lA" name="A_extend_extension" memberEnd="_MPDYL4kxEeOMQ5AKLd10lA _MPCKFYkxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MPD_NIkxEeOMQ5AKLd10lA" name="A_addition_include" memberEnd="_MPCxHIkxEeOMQ5AKLd10lA _MPD_NYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MPD_NYkxEeOMQ5AKLd10lA" name="include" type="_MPCxGIkxEeOMQ5AKLd10lA" subsettedProperty="_MNcOmIkxEeOMQ5AKLd10lA" association="_MPD_NIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPD_NokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MPD_N4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MPEmQIkxEeOMQ5AKLd10lA" name="A_extensionLocation_extension" memberEnd="_MPCKF4kxEeOMQ5AKLd10lA _MPEmQYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MPEmQYkxEeOMQ5AKLd10lA" name="extension" type="_MPCKCYkxEeOMQ5AKLd10lA" association="_MPEmQIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPEmQokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MPEmQ4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MPEmRIkxEeOMQ5AKLd10lA" name="A_condition_extend" memberEnd="_MPCKEIkxEeOMQ5AKLd10lA _MPEmRYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MPEmRYkxEeOMQ5AKLd10lA" name="extend" type="_MPCKCYkxEeOMQ5AKLd10lA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MPEmRIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPEmRokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MPEmR4kxEeOMQ5AKLd10lA" name="A_extendedCase_extend" memberEnd="_MPCKE4kxEeOMQ5AKLd10lA _MPEmSIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MPEmSIkxEeOMQ5AKLd10lA" name="extend" type="_MPCKCYkxEeOMQ5AKLd10lA" subsettedProperty="_MNcOmIkxEeOMQ5AKLd10lA" association="_MPEmR4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPEmSYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MPEmSokxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_-Ixo8H4XEdq7cMP_l1l5Gg" name="Duration">
<ownedComment xmi:id="_MPFNUIkxEeOMQ5AKLd10lA" annotatedElement="_-Ixo8H4XEdq7cMP_l1l5Gg">
<body>A Duration is a ValueSpecification that specifies the temporal distance between two time instants.</body>
</ownedComment>
<ownedRule xmi:id="_MPFNUYkxEeOMQ5AKLd10lA" name="no_expr_requires_observation" constrainedElement="_-Ixo8H4XEdq7cMP_l1l5Gg">
<ownedComment xmi:id="_MPFNUokxEeOMQ5AKLd10lA" annotatedElement="_MPFNUYkxEeOMQ5AKLd10lA">
<body>If a Duration has no expr, then it must have a single observation that is a DurationObservation.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPFNU4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>expr = null implies (observation->size() = 1 and observation->forAll(oclIsKindOf(DurationObservation)))</body>
</specification>
</ownedRule>
<generalization xmi:id="_MPFNVIkxEeOMQ5AKLd10lA" general="_MPO-UIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MPFNVYkxEeOMQ5AKLd10lA" name="expr" type="_MPO-UIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MPSosIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPFNVokxEeOMQ5AKLd10lA" annotatedElement="_MPFNVYkxEeOMQ5AKLd10lA">
<body>A ValueSpecification that evaluates to the value of the Duration.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPFNV4kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MPFNWIkxEeOMQ5AKLd10lA" name="observation" type="_MPKs5YkxEeOMQ5AKLd10lA" association="_MPSos4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPFNWYkxEeOMQ5AKLd10lA" annotatedElement="_MPFNWIkxEeOMQ5AKLd10lA">
<body>Refers to the Observations that are involved in the computation of the Duration value</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPFNWokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MPFNW4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedOperation xmi:id="_I3a88H4YEdq7cMP_l1l5Gg" name="stringValue" visibility="protected" isQuery="true">
<ownedParameter xmi:id="_I3a88X4YEdq7cMP_l1l5Gg" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MPF0YIkxEeOMQ5AKLd10lA" name="DurationConstraint">
<ownedComment xmi:id="_MPF0YYkxEeOMQ5AKLd10lA" annotatedElement="_MPF0YIkxEeOMQ5AKLd10lA">
<body>A DurationConstraint is a Constraint that refers to a DurationInterval.</body>
</ownedComment>
<ownedRule xmi:id="_MPF0YokxEeOMQ5AKLd10lA" name="first_event_multiplicity" constrainedElement="_MPF0YIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPF0Y4kxEeOMQ5AKLd10lA" annotatedElement="_MPF0YokxEeOMQ5AKLd10lA">
<body>The multiplicity of firstEvent must be 2 if the multiplicity of constrainedElement is 2. Otherwise the multiplicity of firstEvent is 0.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPF0ZIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>if (constrainedElement->size() = 2)&#xD;
then (firstEvent->size() = 2) else (firstEvent->size() = 0) &#xD;
endif</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MPF0ZYkxEeOMQ5AKLd10lA" name="has_one_or_two_constrainedElements" constrainedElement="_MPF0YIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPF0ZokxEeOMQ5AKLd10lA" annotatedElement="_MPF0ZYkxEeOMQ5AKLd10lA">
<body>A DurationConstraint has either one or two constrainedElements.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPF0Z4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>constrainedElement->size() = 1 or constrainedElement->size()=2</body>
</specification>
</ownedRule>
<generalization xmi:id="_MPF0aIkxEeOMQ5AKLd10lA" general="_MPHCh4kxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MPF0aYkxEeOMQ5AKLd10lA" name="firstEvent">
<ownedComment xmi:id="_MPF0aokxEeOMQ5AKLd10lA" annotatedElement="_MPF0aYkxEeOMQ5AKLd10lA">
<body>The value of firstEvent[i] is related to constrainedElement[i] (where i is 1 or 2). If firstEvent[i] is true, then the corresponding observation event is the first time instant the execution enters constrainedElement[i]. If firstEvent[i] is false, then the corresponding observation event is the last time instant the execution is within constrainedElement[i].</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPF0a4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MPF0bIkxEeOMQ5AKLd10lA" value="2"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MPF0bYkxEeOMQ5AKLd10lA" name="specification" type="_MPF0b4kxEeOMQ5AKLd10lA" aggregation="composite" redefinedProperty="_MPHCiokxEeOMQ5AKLd10lA _MNAJw4kxEeOMQ5AKLd10lA" association="_MPSBqokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPF0bokxEeOMQ5AKLd10lA" annotatedElement="_MPF0bYkxEeOMQ5AKLd10lA">
<body>The DurationInterval constraining the duration.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MPF0b4kxEeOMQ5AKLd10lA" name="DurationInterval">
<ownedComment xmi:id="_MPF0cIkxEeOMQ5AKLd10lA" annotatedElement="_MPF0b4kxEeOMQ5AKLd10lA">
<body>A DurationInterval defines the range between two Durations.</body>
</ownedComment>
<generalization xmi:id="_MPF0cYkxEeOMQ5AKLd10lA" general="_MPHCgIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MPF0cokxEeOMQ5AKLd10lA" name="max" type="_-Ixo8H4XEdq7cMP_l1l5Gg" redefinedProperty="_MPHCg4kxEeOMQ5AKLd10lA" association="_MPSBoIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPF0c4kxEeOMQ5AKLd10lA" annotatedElement="_MPF0cokxEeOMQ5AKLd10lA">
<body>Refers to the Duration denoting the maximum value of the range.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MPF0dIkxEeOMQ5AKLd10lA" name="min" type="_-Ixo8H4XEdq7cMP_l1l5Gg" redefinedProperty="_MPHChYkxEeOMQ5AKLd10lA" association="_MPSBpYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPF0dYkxEeOMQ5AKLd10lA" annotatedElement="_MPF0dIkxEeOMQ5AKLd10lA">
<body>Refers to the Duration denoting the minimum value of the range.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MPGbcIkxEeOMQ5AKLd10lA" name="DurationObservation">
<ownedComment xmi:id="_MPGbcYkxEeOMQ5AKLd10lA" annotatedElement="_MPGbcIkxEeOMQ5AKLd10lA">
<body>A DurationObservation is a reference to a duration during an execution. It points out the NamedElement(s) in the model to observe and whether the observations are when this NamedElement is entered or when it is exited.</body>
</ownedComment>
<ownedRule xmi:id="_MPGbcokxEeOMQ5AKLd10lA" name="first_event_multiplicity" constrainedElement="_MPGbcIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPGbc4kxEeOMQ5AKLd10lA" annotatedElement="_MPGbcokxEeOMQ5AKLd10lA">
<body>The multiplicity of firstEvent must be 2 if the multiplicity of event is 2. Otherwise the multiplicity of firstEvent is 0.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPGbdIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>if (event->size() = 2)&#xD;
then (firstEvent->size() = 2) else (firstEvent->size() = 0)&#xD;
endif</body>
</specification>
</ownedRule>
<generalization xmi:id="_MPGbdYkxEeOMQ5AKLd10lA" general="_MPKs5YkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MPGbdokxEeOMQ5AKLd10lA" name="event" type="_csVgUGvtEdqG6fBIPwe-mw" isOrdered="true" association="_MPRan4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPGbd4kxEeOMQ5AKLd10lA" annotatedElement="_MPGbdokxEeOMQ5AKLd10lA">
<body>The DurationObservation is determined as the duration between the entering or exiting of a single event Element during execution, or the entering/exiting of one event Element and the entering/exiting of a second.</body>
</ownedComment>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MPGbeIkxEeOMQ5AKLd10lA" value="2"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MPGbeYkxEeOMQ5AKLd10lA" name="firstEvent">
<ownedComment xmi:id="_MPGbeokxEeOMQ5AKLd10lA" annotatedElement="_MPGbeYkxEeOMQ5AKLd10lA">
<body>The value of firstEvent[i] is related to event[i] (where i is 1 or 2). If firstEvent[i] is true, then the corresponding observation event is the first time instant the execution enters event[i]. If firstEvent[i] is false, then the corresponding observation event is the time instant the execution exits event[i].</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPGbe4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MPGbfIkxEeOMQ5AKLd10lA" value="2"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_8QuDcLG3EeCDe8CO90iVKQ" name="Expression">
<ownedComment xmi:id="_MPGbfYkxEeOMQ5AKLd10lA" annotatedElement="_8QuDcLG3EeCDe8CO90iVKQ">
<body>An Expression represents a node in an expression tree, which may be non-terminal or terminal. It defines a symbol, and has a possibly empty sequence of operands that are ValueSpecifications. It denotes a (possibly empty) set of values when evaluated in a context.</body>
</ownedComment>
<generalization xmi:id="_MPGbfokxEeOMQ5AKLd10lA" general="_MPO-UIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MPGbf4kxEeOMQ5AKLd10lA" name="operand" type="_MPO-UIkxEeOMQ5AKLd10lA" isOrdered="true" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MPRanIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPGbgIkxEeOMQ5AKLd10lA" annotatedElement="_MPGbf4kxEeOMQ5AKLd10lA">
<body>Specifies a sequence of operand ValueSpecifications.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPGbgYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MPGbgokxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_-NPagLG3EeCDe8CO90iVKQ" name="symbol">
<ownedComment xmi:id="_MPGbg4kxEeOMQ5AKLd10lA" annotatedElement="_-NPagLG3EeCDe8CO90iVKQ">
<body>The symbol associated with this node in the expression tree.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPGbhIkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MPHCgIkxEeOMQ5AKLd10lA" name="Interval">
<ownedComment xmi:id="_MPHCgYkxEeOMQ5AKLd10lA" annotatedElement="_MPHCgIkxEeOMQ5AKLd10lA">
<body>An Interval defines the range between two ValueSpecifications.</body>
</ownedComment>
<generalization xmi:id="_MPHCgokxEeOMQ5AKLd10lA" general="_MPO-UIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MPHCg4kxEeOMQ5AKLd10lA" name="max" type="_MPO-UIkxEeOMQ5AKLd10lA" association="_MPRalIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPHChIkxEeOMQ5AKLd10lA" annotatedElement="_MPHCg4kxEeOMQ5AKLd10lA">
<body>Refers to the ValueSpecification denoting the maximum value of the range.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MPHChYkxEeOMQ5AKLd10lA" name="min" type="_MPO-UIkxEeOMQ5AKLd10lA" association="_MPRamIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPHChokxEeOMQ5AKLd10lA" annotatedElement="_MPHChYkxEeOMQ5AKLd10lA">
<body>Refers to the ValueSpecification denoting the minimum value of the range.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MPHCh4kxEeOMQ5AKLd10lA" name="IntervalConstraint">
<ownedComment xmi:id="_MPHCiIkxEeOMQ5AKLd10lA" annotatedElement="_MPHCh4kxEeOMQ5AKLd10lA">
<body>An IntervalConstraint is a Constraint that is specified by an Interval.</body>
</ownedComment>
<generalization xmi:id="_MPHCiYkxEeOMQ5AKLd10lA" general="_MNAJsIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MPHCiokxEeOMQ5AKLd10lA" name="specification" type="_MPHCgIkxEeOMQ5AKLd10lA" aggregation="composite" redefinedProperty="_MNAJw4kxEeOMQ5AKLd10lA" association="_MPRakIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPHCi4kxEeOMQ5AKLd10lA" annotatedElement="_MPHCiokxEeOMQ5AKLd10lA">
<body>The Interval that specifies the condition of the IntervalConstraint.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_FFMNsGveEdq4DLWZOhbdEA" name="LiteralBoolean">
<ownedComment xmi:id="_MPHCjIkxEeOMQ5AKLd10lA" annotatedElement="_FFMNsGveEdq4DLWZOhbdEA">
<body>A LiteralBoolean is a specification of a Boolean value.</body>
</ownedComment>
<generalization xmi:id="_MPHCjYkxEeOMQ5AKLd10lA" general="_MPI3y4kxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MPHpkIkxEeOMQ5AKLd10lA" name="value">
<ownedComment xmi:id="_MPHpkYkxEeOMQ5AKLd10lA" annotatedElement="_MPHpkIkxEeOMQ5AKLd10lA">
<body>The specified Boolean value.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MPHpkokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedOperation xmi:id="_aXS3gGWKEdq-f4093SZhVA" name="stringValue" visibility="protected" isQuery="true">
<ownedParameter xmi:id="_cFthIGWKEdq-f4093SZhVA" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MPHpk4kxEeOMQ5AKLd10lA" name="booleanValue" bodyCondition="_MPHplYkxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MPO-VIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPHplIkxEeOMQ5AKLd10lA" annotatedElement="_MPHpk4kxEeOMQ5AKLd10lA">
<body>The query booleanValue() gives the value.</body>
</ownedComment>
<ownedRule xmi:id="_MPHplYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MPHpk4kxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPHplokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (value)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MPHpl4kxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MPHpmIkxEeOMQ5AKLd10lA" name="isComputable" bodyCondition="_MPHpmokxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MPO-ZokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPHpmYkxEeOMQ5AKLd10lA" annotatedElement="_MPHpmIkxEeOMQ5AKLd10lA">
<body>The query isComputable() is redefined to be true.</body>
</ownedComment>
<ownedRule xmi:id="_MPHpmokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MPHpmIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPHpm4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (true)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MPHpnIkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_Dy77oGveEdq4DLWZOhbdEA" name="LiteralInteger">
<ownedComment xmi:id="_MPHpnYkxEeOMQ5AKLd10lA" annotatedElement="_Dy77oGveEdq4DLWZOhbdEA">
<body>A LiteralInteger is a specification of an Integer value.</body>
</ownedComment>
<generalization xmi:id="_MPHpnokxEeOMQ5AKLd10lA" general="_MPI3y4kxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MPHpn4kxEeOMQ5AKLd10lA" name="value">
<ownedComment xmi:id="_MPHpoIkxEeOMQ5AKLd10lA" annotatedElement="_MPHpn4kxEeOMQ5AKLd10lA">
<body>The specified Integer value.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
<defaultValue xmi:type="uml:LiteralInteger" xmi:id="_MPHpoYkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedOperation xmi:id="_e2SLUGWKEdq-f4093SZhVA" name="stringValue" visibility="protected" isQuery="true">
<ownedParameter xmi:id="_hAkRkGWKEdq-f4093SZhVA" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MPIQoIkxEeOMQ5AKLd10lA" name="integerValue" bodyCondition="_MPIQookxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MPO-WokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPIQoYkxEeOMQ5AKLd10lA" annotatedElement="_MPIQoIkxEeOMQ5AKLd10lA">
<body>The query integerValue() gives the value.</body>
</ownedComment>
<ownedRule xmi:id="_MPIQookxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MPIQoIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPIQo4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (value)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MPIQpIkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MPIQpYkxEeOMQ5AKLd10lA" name="isComputable" bodyCondition="_MPIQp4kxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MPO-ZokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPIQpokxEeOMQ5AKLd10lA" annotatedElement="_MPIQpYkxEeOMQ5AKLd10lA">
<body>The query isComputable() is redefined to be true.</body>
</ownedComment>
<ownedRule xmi:id="_MPIQp4kxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MPIQpYkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPIQqIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (true)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MPIQqYkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MPI3sIkxEeOMQ5AKLd10lA" name="LiteralNull">
<ownedComment xmi:id="_MPI3sYkxEeOMQ5AKLd10lA" annotatedElement="_MPI3sIkxEeOMQ5AKLd10lA">
<body>A LiteralNull specifies the lack of a value.</body>
</ownedComment>
<generalization xmi:id="_MPI3sokxEeOMQ5AKLd10lA" general="_MPI3y4kxEeOMQ5AKLd10lA"/>
<ownedOperation xmi:id="_MPI3s4kxEeOMQ5AKLd10lA" name="isComputable" bodyCondition="_MPI3tYkxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MPO-ZokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPI3tIkxEeOMQ5AKLd10lA" annotatedElement="_MPI3s4kxEeOMQ5AKLd10lA">
<body>The query isComputable() is redefined to be true.</body>
</ownedComment>
<ownedRule xmi:id="_MPI3tYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MPI3s4kxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPI3tokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (true)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MPI3t4kxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MPI3uIkxEeOMQ5AKLd10lA" name="isNull" bodyCondition="_MPI3uokxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MPO-a4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPI3uYkxEeOMQ5AKLd10lA" annotatedElement="_MPI3uIkxEeOMQ5AKLd10lA">
<body>The query isNull() returns true.</body>
</ownedComment>
<ownedRule xmi:id="_MPI3uokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MPI3uIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPI3u4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (true)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MPI3vIkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_KF5QYK3PEeCff5DsMzqH0w" name="LiteralReal">
<ownedComment xmi:id="_MPI3vYkxEeOMQ5AKLd10lA" annotatedElement="_KF5QYK3PEeCff5DsMzqH0w">
<body>A LiteralReal is a specification of a Real value.</body>
</ownedComment>
<generalization xmi:id="_MPI3vokxEeOMQ5AKLd10lA" general="_MPI3y4kxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MPI3v4kxEeOMQ5AKLd10lA" name="value">
<ownedComment xmi:id="_MPI3wIkxEeOMQ5AKLd10lA" annotatedElement="_MPI3v4kxEeOMQ5AKLd10lA">
<body>The specified Real value.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
</ownedAttribute>
<ownedOperation xmi:id="_KF5QYa3PEeCff5DsMzqH0w" name="stringValue" visibility="protected" isQuery="true">
<ownedParameter xmi:id="_KF5QYq3PEeCff5DsMzqH0w" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MPI3wYkxEeOMQ5AKLd10lA" name="isComputable" bodyCondition="_MPI3w4kxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MPO-ZokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPI3wokxEeOMQ5AKLd10lA" annotatedElement="_MPI3wYkxEeOMQ5AKLd10lA">
<body>The query isComputable() is redefined to be true.</body>
</ownedComment>
<ownedRule xmi:id="_MPI3w4kxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MPI3wYkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPI3xIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (true)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MPI3xYkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MPI3xokxEeOMQ5AKLd10lA" name="realValue" bodyCondition="_MPI3yIkxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MPO-cIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPI3x4kxEeOMQ5AKLd10lA" annotatedElement="_MPI3xokxEeOMQ5AKLd10lA">
<body>The query realValue() gives the value.</body>
</ownedComment>
<ownedRule xmi:id="_MPI3yIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MPI3xokxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPI3yYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (value)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MPI3yokxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MPI3y4kxEeOMQ5AKLd10lA" name="LiteralSpecification" isAbstract="true">
<ownedComment xmi:id="_MPI3zIkxEeOMQ5AKLd10lA" annotatedElement="_MPI3y4kxEeOMQ5AKLd10lA">
<body>A LiteralSpecification identifies a literal constant being modeled.</body>
</ownedComment>
<generalization xmi:id="_MPI3zYkxEeOMQ5AKLd10lA" general="_MPO-UIkxEeOMQ5AKLd10lA"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_5jXJsTEkEdu9VoNTbEBQkQ" name="LiteralString">
<ownedComment xmi:id="_MPJewIkxEeOMQ5AKLd10lA" annotatedElement="_5jXJsTEkEdu9VoNTbEBQkQ">
<body>A LiteralString is a specification of a String value.</body>
</ownedComment>
<generalization xmi:id="_MPJewYkxEeOMQ5AKLd10lA" general="_MPI3y4kxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_RFmAkLG4EeCDe8CO90iVKQ" name="value">
<ownedComment xmi:id="_MPJewokxEeOMQ5AKLd10lA" annotatedElement="_RFmAkLG4EeCDe8CO90iVKQ">
<body>The specified String value.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPJew4kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedOperation xmi:id="_-SmgADEkEdu9VoNTbEBQkQ" name="integerValue" visibility="protected" isQuery="true">
<ownedParameter xmi:id="_-SmgATEkEdu9VoNTbEBQkQ" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_FbLFMDElEdu9VoNTbEBQkQ" name="unlimitedValue" visibility="protected" isQuery="true">
<ownedParameter xmi:id="_FbLFMTElEdu9VoNTbEBQkQ" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MPJexIkxEeOMQ5AKLd10lA" name="isComputable" bodyCondition="_MPJexokxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MPO-ZokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPJexYkxEeOMQ5AKLd10lA" annotatedElement="_MPJexIkxEeOMQ5AKLd10lA">
<body>The query isComputable() is redefined to be true.</body>
</ownedComment>
<ownedRule xmi:id="_MPJexokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MPJexIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPJex4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (true)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MPJeyIkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MPJeyYkxEeOMQ5AKLd10lA" name="stringValue" bodyCondition="_MPJey4kxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MPO-dokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPJeyokxEeOMQ5AKLd10lA" annotatedElement="_MPJeyYkxEeOMQ5AKLd10lA">
<body>The query stringValue() gives the value.</body>
</ownedComment>
<ownedRule xmi:id="_MPJey4kxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MPJeyYkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPJezIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (value)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MPJezYkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_Q-yR4GveEdq4DLWZOhbdEA" name="LiteralUnlimitedNatural">
<ownedComment xmi:id="_MPKF0IkxEeOMQ5AKLd10lA" annotatedElement="_Q-yR4GveEdq4DLWZOhbdEA">
<body>A LiteralUnlimitedNatural is a specification of an UnlimitedNatural number.</body>
</ownedComment>
<generalization xmi:id="_MPKF0YkxEeOMQ5AKLd10lA" general="_MPI3y4kxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MPKF0okxEeOMQ5AKLd10lA" name="value">
<ownedComment xmi:id="_MPKF04kxEeOMQ5AKLd10lA" annotatedElement="_MPKF0okxEeOMQ5AKLd10lA">
<body>The specified UnlimitedNatural value.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
<defaultValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MPKF1IkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedOperation xmi:id="_lSARkGWKEdq-f4093SZhVA" name="stringValue" visibility="protected" isQuery="true">
<ownedParameter xmi:id="_nyfRUGWKEdq-f4093SZhVA" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MPKF1YkxEeOMQ5AKLd10lA" name="isComputable" bodyCondition="_MPKF14kxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MPO-ZokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPKF1okxEeOMQ5AKLd10lA" annotatedElement="_MPKF1YkxEeOMQ5AKLd10lA">
<body>The query isComputable() is redefined to be true.</body>
</ownedComment>
<ownedRule xmi:id="_MPKF14kxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MPKF1YkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPKF2IkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (true)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MPKF2YkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MPKs4IkxEeOMQ5AKLd10lA" name="unlimitedValue" bodyCondition="_MPKs4okxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MPO-fIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPKs4YkxEeOMQ5AKLd10lA" annotatedElement="_MPKs4IkxEeOMQ5AKLd10lA">
<body>The query unlimitedValue() gives the value.</body>
</ownedComment>
<ownedRule xmi:id="_MPKs4okxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MPKs4IkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPKs44kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (value)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MPKs5IkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MPKs5YkxEeOMQ5AKLd10lA" name="Observation" isAbstract="true">
<ownedComment xmi:id="_MPKs5okxEeOMQ5AKLd10lA" annotatedElement="_MPKs5YkxEeOMQ5AKLd10lA">
<body>Observation specifies a value determined by observing an event or events that occur relative to other model Elements.</body>
</ownedComment>
<generalization xmi:id="_MPKs54kxEeOMQ5AKLd10lA" general="_jKxnwGwLEdq7X4sGURiZYA"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_ChRfcGveEdq4DLWZOhbdEA" name="OpaqueExpression">
<ownedComment xmi:id="_MPKs6IkxEeOMQ5AKLd10lA" annotatedElement="_ChRfcGveEdq4DLWZOhbdEA">
<body>An OpaqueExpression is a ValueSpecification that specifies the computation of a collection of values either in terms of a UML Behavior or based on a textual statement in a language other than UML</body>
</ownedComment>
<ownedRule xmi:id="_MPKs6YkxEeOMQ5AKLd10lA" name="language_body_size" constrainedElement="_ChRfcGveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MPKs6okxEeOMQ5AKLd10lA" annotatedElement="_MPKs6YkxEeOMQ5AKLd10lA">
<body>If the language attribute is not empty, then the size of the body and language arrays must be the same.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPKs64kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>language->notEmpty() implies (_'body'->size() = language->size())</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MPKs7IkxEeOMQ5AKLd10lA" name="one_return_result_parameter" constrainedElement="_ChRfcGveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MPKs7YkxEeOMQ5AKLd10lA" annotatedElement="_MPKs7IkxEeOMQ5AKLd10lA">
<body>The behavior must have exactly one return result parameter.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPKs7okxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>behavior &lt;> null implies&#xD;
behavior.ownedParameter->select(direction=ParameterDirectionKind::return)->size() = 1</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MPKs74kxEeOMQ5AKLd10lA" name="only_return_result_parameters" constrainedElement="_ChRfcGveEdq4DLWZOhbdEA">
<ownedComment xmi:id="_MPKs8IkxEeOMQ5AKLd10lA" annotatedElement="_MPKs74kxEeOMQ5AKLd10lA">
<body>The behavior may only have return result parameters.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPKs8YkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>behavior &lt;> null implies behavior.ownedParameter->select(direction&lt;>ParameterDirectionKind::return)->isEmpty()</body>
</specification>
</ownedRule>
<generalization xmi:id="_MPKs8okxEeOMQ5AKLd10lA" general="_MPO-UIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MPKs84kxEeOMQ5AKLd10lA" name="behavior" type="_TUPtYGveEdq4DLWZOhbdEA" association="_MPQziYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPKs9IkxEeOMQ5AKLd10lA" annotatedElement="_MPKs84kxEeOMQ5AKLd10lA">
<body>Specifies the behavior of the OpaqueExpression as a UML Behavior.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPKs9YkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_w__dcLG0EeCDe8CO90iVKQ" name="body" isOrdered="true" isUnique="false">
<ownedComment xmi:id="_MPLT8IkxEeOMQ5AKLd10lA" annotatedElement="_w__dcLG0EeCDe8CO90iVKQ">
<body>A textual definition of the behavior of the OpaqueExpression, possibly in multiple languages.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPLT8YkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MPLT8okxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_D0kWwLG1EeCDe8CO90iVKQ" name="language" isOrdered="true">
<ownedComment xmi:id="_MPLT84kxEeOMQ5AKLd10lA" annotatedElement="_D0kWwLG1EeCDe8CO90iVKQ">
<body>Specifies the languages used to express the textual bodies of the OpaqueExpression. Languages are matched to body Strings by order. The interpretation of the body depends on the languages. If the languages are unspecified, they may be implicit from the expression body or the context.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPLT9IkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MPLT9YkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MPL7AIkxEeOMQ5AKLd10lA" name="result" type="_KyaPMGveEdq4DLWZOhbdEA" isReadOnly="true" isDerived="true" association="_MPQzhYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPL7AYkxEeOMQ5AKLd10lA" annotatedElement="_MPL7AIkxEeOMQ5AKLd10lA">
<body>If an OpaqueExpression is specified using a UML Behavior, then this refers to the single required return Parameter of that Behavior. When the Behavior completes execution, the values on this Parameter give the result of evaluating the OpaqueExpression.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPL7AokxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedOperation xmi:id="_qQchgGWKEdq-f4093SZhVA" name="stringValue" visibility="protected" isQuery="true">
<ownedParameter xmi:id="_sRo9MGWKEdq-f4093SZhVA" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MPL7A4kxEeOMQ5AKLd10lA" name="isIntegral" bodyCondition="_MPL7BYkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MPL7BIkxEeOMQ5AKLd10lA" annotatedElement="_MPL7A4kxEeOMQ5AKLd10lA">
<body>The query isIntegral() tells whether an expression is intended to produce an Integer.</body>
</ownedComment>
<ownedRule xmi:id="_MPL7BYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MPL7A4kxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPL7BokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (false)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MPL7B4kxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MPL7CIkxEeOMQ5AKLd10lA" name="isNonNegative" bodyCondition="_MPL7DIkxEeOMQ5AKLd10lA" isQuery="true" precondition="_MPL7CokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPL7CYkxEeOMQ5AKLd10lA" annotatedElement="_MPL7CIkxEeOMQ5AKLd10lA">
<body>The query isNonNegative() tells whether an integer expression has a non-negative value.</body>
</ownedComment>
<ownedRule xmi:id="_MPL7CokxEeOMQ5AKLd10lA" name="pre" constrainedElement="_MPL7CIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPL7C4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>self.isIntegral()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MPL7DIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MPL7CIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPL7DYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (false)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MPL7DokxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MPL7D4kxEeOMQ5AKLd10lA" name="isPositive" bodyCondition="_MPL7EYkxEeOMQ5AKLd10lA" isQuery="true" precondition="_MPL7E4kxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPL7EIkxEeOMQ5AKLd10lA" annotatedElement="_MPL7D4kxEeOMQ5AKLd10lA">
<body>The query isPositive() tells whether an integer expression has a positive value.</body>
</ownedComment>
<ownedRule xmi:id="_MPL7EYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MPL7D4kxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPL7EokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (false)</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MPL7E4kxEeOMQ5AKLd10lA" name="pre" constrainedElement="_MPL7D4kxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPL7FIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>self.isIntegral()</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MPL7FYkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_mv9LcFYiEdqB6vblk3tuMA" name="result" visibility="protected" bodyCondition="_MPL7F4kxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MPL7FokxEeOMQ5AKLd10lA" annotatedElement="_mv9LcFYiEdqB6vblk3tuMA">
<body>Derivation for OpaqueExpression::/result</body>
</ownedComment>
<ownedRule xmi:id="_MPL7F4kxEeOMQ5AKLd10lA" name="spec" constrainedElement="_mv9LcFYiEdqB6vblk3tuMA _MPL7AIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPL7GIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if behavior = null then&#xD;
null&#xD;
else&#xD;
behavior.ownedParameter->first()&#xD;
endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_vXTbwFYiEdqB6vblk3tuMA" name="result" type="_KyaPMGveEdq4DLWZOhbdEA" direction="return">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPL7GYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_0JhNkVYiEdqB6vblk3tuMA" value="1"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MPMiEIkxEeOMQ5AKLd10lA" name="value" bodyCondition="_MPMiFIkxEeOMQ5AKLd10lA" isQuery="true" precondition="_MPMiEokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPMiEYkxEeOMQ5AKLd10lA" annotatedElement="_MPMiEIkxEeOMQ5AKLd10lA">
<body>The query value() gives an integer value for an expression intended to produce one.</body>
</ownedComment>
<ownedRule xmi:id="_MPMiEokxEeOMQ5AKLd10lA" name="pre" constrainedElement="_MPMiEIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPMiE4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>self.isIntegral()</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MPMiFIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MPMiEIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPMiFYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (0)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MPMiFokxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MPNJIIkxEeOMQ5AKLd10lA" name="StringExpression">
<ownedComment xmi:id="_MPNJIYkxEeOMQ5AKLd10lA" annotatedElement="_MPNJIIkxEeOMQ5AKLd10lA">
<body>A StringExpression is an Expression that specifies a String value that is derived by concatenating a sequence of operands with String values or a sequence of subExpressions, some of which might be template parameters.</body>
</ownedComment>
<ownedRule xmi:id="_MPNJIokxEeOMQ5AKLd10lA" name="operands" constrainedElement="_MPNJIIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPNJI4kxEeOMQ5AKLd10lA" annotatedElement="_MPNJIokxEeOMQ5AKLd10lA">
<body>All the operands of a StringExpression must be LiteralStrings</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPNJJIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>operand->forAll (oclIsKindOf (LiteralString))</body>
</specification>
</ownedRule>
<ownedRule xmi:id="_MPNJJYkxEeOMQ5AKLd10lA" name="subexpressions" constrainedElement="_MPNJIIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPNJJokxEeOMQ5AKLd10lA" annotatedElement="_MPNJJYkxEeOMQ5AKLd10lA">
<body>If a StringExpression has sub-expressions, it cannot have operands and vice versa (this avoids the problem of having to define a collating sequence between operands and subexpressions).</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPNJJ4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>if subExpression->notEmpty() then operand->isEmpty() else operand->notEmpty() endif</body>
</specification>
</ownedRule>
<generalization xmi:id="_MPNJKIkxEeOMQ5AKLd10lA" general="_MNUSwIkxEeOMQ5AKLd10lA"/>
<generalization xmi:id="_MPNJKYkxEeOMQ5AKLd10lA" general="_8QuDcLG3EeCDe8CO90iVKQ"/>
<ownedAttribute xmi:id="_MPNJKokxEeOMQ5AKLd10lA" name="owningExpression" type="_MPNJIIkxEeOMQ5AKLd10lA" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MPQzhIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPNJK4kxEeOMQ5AKLd10lA" annotatedElement="_MPNJKokxEeOMQ5AKLd10lA">
<body>The StringExpression of which this StringExpression is a subExpression.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPNJLIkxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MPNJLYkxEeOMQ5AKLd10lA" name="subExpression" type="_MPNJIIkxEeOMQ5AKLd10lA" isOrdered="true" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MPQzhIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPNJLokxEeOMQ5AKLd10lA" annotatedElement="_MPNJLYkxEeOMQ5AKLd10lA">
<body>The StringExpressions that constitute this StringExpression.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPNJL4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MPNJMIkxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedOperation xmi:id="_MPNJMYkxEeOMQ5AKLd10lA" name="stringValue" bodyCondition="_MPNJM4kxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MPO-dokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPNJMokxEeOMQ5AKLd10lA" annotatedElement="_MPNJMYkxEeOMQ5AKLd10lA">
<body>The query stringValue() returns the String resulting from concatenating, in order, all the component String values of all the operands or subExpressions that are part of the StringExpression.</body>
</ownedComment>
<ownedRule xmi:id="_MPNJM4kxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MPNJMYkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPNJNIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (if subExpression->notEmpty()
then subExpression->iterate(se; stringValue: String = '' | stringValue.concat(se.stringValue()))
else operand->iterate(op; stringValue: String = '' | stringValue.concat(op.stringValue()))
endif)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MPNJNYkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MPNwMIkxEeOMQ5AKLd10lA" name="TimeConstraint">
<ownedComment xmi:id="_MPNwMYkxEeOMQ5AKLd10lA" annotatedElement="_MPNwMIkxEeOMQ5AKLd10lA">
<body>A TimeConstraint is a Constraint that refers to a TimeInterval.</body>
</ownedComment>
<ownedRule xmi:id="_MPNwMokxEeOMQ5AKLd10lA" name="has_one_constrainedElement" constrainedElement="_MPNwMIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPNwM4kxEeOMQ5AKLd10lA" annotatedElement="_MPNwMokxEeOMQ5AKLd10lA">
<body>A TimeConstraint has one constrainedElement.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPNwNIkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>constrainedElement->size() = 1</body>
</specification>
</ownedRule>
<generalization xmi:id="_MPNwNYkxEeOMQ5AKLd10lA" general="_MPHCh4kxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MPNwNokxEeOMQ5AKLd10lA" name="firstEvent">
<ownedComment xmi:id="_MPNwN4kxEeOMQ5AKLd10lA" annotatedElement="_MPNwNokxEeOMQ5AKLd10lA">
<body>The value of firstEvent is related to the constrainedElement. If firstEvent is true, then the corresponding observation event is the first time instant the execution enters the constrainedElement. If firstEvent is false, then the corresponding observation event is the last time instant the execution is within the constrainedElement.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPNwOIkxEeOMQ5AKLd10lA"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MPNwOYkxEeOMQ5AKLd10lA" value="true"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MPNwOokxEeOMQ5AKLd10lA" name="specification" type="_MPOXQIkxEeOMQ5AKLd10lA" aggregation="composite" redefinedProperty="_MPHCiokxEeOMQ5AKLd10lA _MNAJw4kxEeOMQ5AKLd10lA" association="_MPQzgIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPNwO4kxEeOMQ5AKLd10lA" annotatedElement="_MPNwOokxEeOMQ5AKLd10lA">
<body>TheTimeInterval constraining the duration.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_DylKEH4YEdq7cMP_l1l5Gg" name="TimeExpression">
<ownedComment xmi:id="_MPNwPIkxEeOMQ5AKLd10lA" annotatedElement="_DylKEH4YEdq7cMP_l1l5Gg">
<body>A TimeExpression is a ValueSpecification that represents a time value.</body>
</ownedComment>
<ownedRule xmi:id="_MPNwPYkxEeOMQ5AKLd10lA" name="no_expr_requires_observation" constrainedElement="_DylKEH4YEdq7cMP_l1l5Gg">
<ownedComment xmi:id="_MPNwPokxEeOMQ5AKLd10lA" annotatedElement="_MPNwPYkxEeOMQ5AKLd10lA">
<body>If a TimeExpression has no expr, then it must have a single observation that is a TimeObservation.</body>
</ownedComment>
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPNwP4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>expr = null implies (observation->size() = 1 and observation->forAll(oclIsKindOf(TimeObservation)))</body>
</specification>
</ownedRule>
<generalization xmi:id="_MPNwQIkxEeOMQ5AKLd10lA" general="_MPO-UIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MPNwQYkxEeOMQ5AKLd10lA" name="expr" type="_MPO-UIkxEeOMQ5AKLd10lA" aggregation="composite" subsettedProperty="_GDD2YAtAEeGcpbeCPJfCmw" association="_MPQMeokxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPNwQokxEeOMQ5AKLd10lA" annotatedElement="_MPNwQYkxEeOMQ5AKLd10lA">
<body>A ValueSpecification that evaluates to the value of the TimeExpression.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPNwQ4kxEeOMQ5AKLd10lA"/>
</ownedAttribute>
<ownedAttribute xmi:id="_MPNwRIkxEeOMQ5AKLd10lA" name="observation" type="_MPKs5YkxEeOMQ5AKLd10lA" association="_MPQMfYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPNwRYkxEeOMQ5AKLd10lA" annotatedElement="_MPNwRIkxEeOMQ5AKLd10lA">
<body>Refers to the Observations that are involved in the computation of the TimeExpression value.</body>
</ownedComment>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPNwRokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MPNwR4kxEeOMQ5AKLd10lA" value="*"/>
</ownedAttribute>
<ownedOperation xmi:id="_JdkW8H4YEdq7cMP_l1l5Gg" name="stringValue" visibility="protected" isQuery="true">
<ownedParameter xmi:id="_JdkW8X4YEdq7cMP_l1l5Gg" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MPOXQIkxEeOMQ5AKLd10lA" name="TimeInterval">
<ownedComment xmi:id="_MPOXQYkxEeOMQ5AKLd10lA" annotatedElement="_MPOXQIkxEeOMQ5AKLd10lA">
<body>A TimeInterval defines the range between two TimeExpressions.</body>
</ownedComment>
<generalization xmi:id="_MPOXQokxEeOMQ5AKLd10lA" general="_MPHCgIkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MPOXQ4kxEeOMQ5AKLd10lA" name="max" type="_DylKEH4YEdq7cMP_l1l5Gg" redefinedProperty="_MPHCg4kxEeOMQ5AKLd10lA" association="_MPQMcIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPOXRIkxEeOMQ5AKLd10lA" annotatedElement="_MPOXQ4kxEeOMQ5AKLd10lA">
<body>Refers to the TimeExpression denoting the maximum value of the range.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MPOXRYkxEeOMQ5AKLd10lA" name="min" type="_DylKEH4YEdq7cMP_l1l5Gg" redefinedProperty="_MPHChYkxEeOMQ5AKLd10lA" association="_MPQMdYkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPOXRokxEeOMQ5AKLd10lA" annotatedElement="_MPOXRYkxEeOMQ5AKLd10lA">
<body>Refers to the TimeExpression denoting the minimum value of the range.</body>
</ownedComment>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MPOXR4kxEeOMQ5AKLd10lA" name="TimeObservation">
<ownedComment xmi:id="_MPOXSIkxEeOMQ5AKLd10lA" annotatedElement="_MPOXR4kxEeOMQ5AKLd10lA">
<body>A TimeObservation is a reference to a time instant during an execution. It points out the NamedElement in the model to observe and whether the observation is when this NamedElement is entered or when it is exited.</body>
</ownedComment>
<generalization xmi:id="_MPOXSYkxEeOMQ5AKLd10lA" general="_MPKs5YkxEeOMQ5AKLd10lA"/>
<ownedAttribute xmi:id="_MPOXSokxEeOMQ5AKLd10lA" name="event" type="_csVgUGvtEdqG6fBIPwe-mw" association="_MPPlYIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPOXS4kxEeOMQ5AKLd10lA" annotatedElement="_MPOXSokxEeOMQ5AKLd10lA">
<body>The TimeObservation is determined by the entering or exiting of the event Element during execution.</body>
</ownedComment>
</ownedAttribute>
<ownedAttribute xmi:id="_MPOXTIkxEeOMQ5AKLd10lA" name="firstEvent">
<ownedComment xmi:id="_MPOXTYkxEeOMQ5AKLd10lA" annotatedElement="_MPOXTIkxEeOMQ5AKLd10lA">
<body>The value of firstEvent is related to the event. If firstEvent is true, then the corresponding observation event is the first time instant the execution enters the event Element. If firstEvent is false, then the corresponding observation event is the time instant the execution exits the event Element.</body>
</ownedComment>
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_MPOXTokxEeOMQ5AKLd10lA" value="true"/>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_MPO-UIkxEeOMQ5AKLd10lA" name="ValueSpecification" isAbstract="true">
<ownedComment xmi:id="_MPO-UYkxEeOMQ5AKLd10lA" annotatedElement="_MPO-UIkxEeOMQ5AKLd10lA">
<body>A ValueSpecification is the specification of a (possibly empty) set of values. A ValueSpecification is a ParameterableElement that may be exposed as a formal TemplateParameter and provided as the actual parameter in the binding of a template.</body>
</ownedComment>
<generalization xmi:id="_MPO-UokxEeOMQ5AKLd10lA" general="_MNWvAIkxEeOMQ5AKLd10lA"/>
<generalization xmi:id="_MPO-U4kxEeOMQ5AKLd10lA" general="_jKxnwGwLEdq7X4sGURiZYA"/>
<ownedOperation xmi:id="_MPO-VIkxEeOMQ5AKLd10lA" name="booleanValue" bodyCondition="_MPO-VokxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MPO-VYkxEeOMQ5AKLd10lA" annotatedElement="_MPO-VIkxEeOMQ5AKLd10lA">
<body>The query booleanValue() gives a single Boolean value when one can be computed.</body>
</ownedComment>
<ownedRule xmi:id="_MPO-VokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MPO-VIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPO-V4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (null)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MPO-WIkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPO-WYkxEeOMQ5AKLd10lA"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MPO-WokxEeOMQ5AKLd10lA" name="integerValue" bodyCondition="_MPO-XIkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MPO-W4kxEeOMQ5AKLd10lA" annotatedElement="_MPO-WokxEeOMQ5AKLd10lA">
<body>The query integerValue() gives a single Integer value when one can be computed.</body>
</ownedComment>
<ownedRule xmi:id="_MPO-XIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MPO-WokxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPO-XYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (null)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MPO-XokxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPO-X4kxEeOMQ5AKLd10lA"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MPO-YIkxEeOMQ5AKLd10lA" name="isCompatibleWith" bodyCondition="_MPO-YokxEeOMQ5AKLd10lA" isQuery="true" redefinedOperation="_MNTEsIkxEeOMQ5AKLd10lA">
<ownedComment xmi:id="_MPO-YYkxEeOMQ5AKLd10lA" annotatedElement="_MPO-YIkxEeOMQ5AKLd10lA">
<body>The query isCompatibleWith() determines if this ValueSpecification is compatible with the specified ParameterableElement. This ValueSpecification is compatible with ParameterableElement p if the kind of this ValueSpecification is the same as or a subtype of the kind of p. Further, if p is a TypedElement, then the type of this ValueSpecification must be conformant with the type of p.</body>
</ownedComment>
<ownedRule xmi:id="_MPO-YokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MPO-YIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPO-Y4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (self.oclIsKindOf(p.oclType()) and (p.oclIsKindOf(TypedElement) implies &#xD;
self.type.conformsTo(p.oclAsType(TypedElement).type)))</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MPO-ZIkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
<ownedParameter xmi:id="_MPO-ZYkxEeOMQ5AKLd10lA" name="p" type="_MNTEp4kxEeOMQ5AKLd10lA"/>
</ownedOperation>
<ownedOperation xmi:id="_MPO-ZokxEeOMQ5AKLd10lA" name="isComputable" bodyCondition="_MPO-aIkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MPO-Z4kxEeOMQ5AKLd10lA" annotatedElement="_MPO-ZokxEeOMQ5AKLd10lA">
<body>The query isComputable() determines whether a value specification can be computed in a model. This operation cannot be fully defined in OCL. A conforming implementation is expected to deliver true for this operation for all ValueSpecifications that it can compute, and to compute all of those for which the operation is true. A conforming implementation is expected to be able to compute at least the value of all LiteralSpecifications.</body>
</ownedComment>
<ownedRule xmi:id="_MPO-aIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MPO-ZokxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPO-aYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (false)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MPO-aokxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MPO-a4kxEeOMQ5AKLd10lA" name="isNull" bodyCondition="_MPO-bYkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MPO-bIkxEeOMQ5AKLd10lA" annotatedElement="_MPO-a4kxEeOMQ5AKLd10lA">
<body>The query isNull() returns true when it can be computed that the value is null.</body>
</ownedComment>
<ownedRule xmi:id="_MPO-bYkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MPO-a4kxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPO-bokxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (false)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MPO-b4kxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MPO-cIkxEeOMQ5AKLd10lA" name="realValue" bodyCondition="_MPO-cokxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MPO-cYkxEeOMQ5AKLd10lA" annotatedElement="_MPO-cIkxEeOMQ5AKLd10lA">
<body>The query realValue() gives a single Real value when one can be computed.</body>
</ownedComment>
<ownedRule xmi:id="_MPO-cokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MPO-cIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPO-c4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (null)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MPO-dIkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPO-dYkxEeOMQ5AKLd10lA"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MPO-dokxEeOMQ5AKLd10lA" name="stringValue" bodyCondition="_MPO-eIkxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MPO-d4kxEeOMQ5AKLd10lA" annotatedElement="_MPO-dokxEeOMQ5AKLd10lA">
<body>The query stringValue() gives a single String value when one can be computed.</body>
</ownedComment>
<ownedRule xmi:id="_MPO-eIkxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MPO-dokxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPO-eYkxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (null)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MPO-eokxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPO-e4kxEeOMQ5AKLd10lA"/>
</ownedParameter>
</ownedOperation>
<ownedOperation xmi:id="_MPO-fIkxEeOMQ5AKLd10lA" name="unlimitedValue" bodyCondition="_MPO-fokxEeOMQ5AKLd10lA" isQuery="true">
<ownedComment xmi:id="_MPO-fYkxEeOMQ5AKLd10lA" annotatedElement="_MPO-fIkxEeOMQ5AKLd10lA">
<body>The query unlimitedValue() gives a single UnlimitedNatural value when one can be computed.</body>
</ownedComment>
<ownedRule xmi:id="_MPO-fokxEeOMQ5AKLd10lA" name="spec" constrainedElement="_MPO-fIkxEeOMQ5AKLd10lA">
<specification xmi:type="uml:OpaqueExpression" xmi:id="_MPO-f4kxEeOMQ5AKLd10lA">
<language>OCL</language>
<body>result = (null)</body>
</specification>
</ownedRule>
<ownedParameter xmi:id="_MPO-gIkxEeOMQ5AKLd10lA" name="result" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPO-gYkxEeOMQ5AKLd10lA"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MPPlYIkxEeOMQ5AKLd10lA" name="A_event_timeObservation" memberEnd="_MPOXSokxEeOMQ5AKLd10lA _MPPlYYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MPPlYYkxEeOMQ5AKLd10lA" name="timeObservation" type="_MPOXR4kxEeOMQ5AKLd10lA" association="_MPPlYIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPPlYokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MPPlY4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MPQMcIkxEeOMQ5AKLd10lA" name="A_max_timeInterval" memberEnd="_MPOXQ4kxEeOMQ5AKLd10lA _MPQMcokxEeOMQ5AKLd10lA">
<generalization xmi:id="_MPQMcYkxEeOMQ5AKLd10lA" general="_MPRalIkxEeOMQ5AKLd10lA"/>
<ownedEnd xmi:id="_MPQMcokxEeOMQ5AKLd10lA" name="timeInterval" type="_MPOXQIkxEeOMQ5AKLd10lA" redefinedProperty="_MPRalYkxEeOMQ5AKLd10lA" association="_MPQMcIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPQMc4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MPQMdIkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MPQMdYkxEeOMQ5AKLd10lA" name="A_min_timeInterval" memberEnd="_MPOXRYkxEeOMQ5AKLd10lA _MPQMd4kxEeOMQ5AKLd10lA">
<generalization xmi:id="_MPQMdokxEeOMQ5AKLd10lA" general="_MPRamIkxEeOMQ5AKLd10lA"/>
<ownedEnd xmi:id="_MPQMd4kxEeOMQ5AKLd10lA" name="timeInterval" type="_MPOXQIkxEeOMQ5AKLd10lA" redefinedProperty="_MPRamYkxEeOMQ5AKLd10lA" association="_MPQMdYkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPQMeIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MPQMeYkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MPQMeokxEeOMQ5AKLd10lA" name="A_expr_timeExpression" memberEnd="_MPNwQYkxEeOMQ5AKLd10lA _MPQMe4kxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MPQMe4kxEeOMQ5AKLd10lA" name="timeExpression" type="_DylKEH4YEdq7cMP_l1l5Gg" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MPQMeokxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPQMfIkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MPQMfYkxEeOMQ5AKLd10lA" name="A_observation_timeExpression" memberEnd="_MPNwRIkxEeOMQ5AKLd10lA _MPQMfokxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MPQMfokxEeOMQ5AKLd10lA" name="timeExpression" type="_DylKEH4YEdq7cMP_l1l5Gg" association="_MPQMfYkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPQMf4kxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MPQzgIkxEeOMQ5AKLd10lA" name="A_specification_timeConstraint" memberEnd="_MPNwOokxEeOMQ5AKLd10lA _MPQzgokxEeOMQ5AKLd10lA">
<generalization xmi:id="_MPQzgYkxEeOMQ5AKLd10lA" general="_MPRakIkxEeOMQ5AKLd10lA"/>
<ownedEnd xmi:id="_MPQzgokxEeOMQ5AKLd10lA" name="timeConstraint" type="_MPNwMIkxEeOMQ5AKLd10lA" redefinedProperty="_MPRakokxEeOMQ5AKLd10lA" association="_MPQzgIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPQzg4kxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MPQzhIkxEeOMQ5AKLd10lA" name="A_subExpression_owningExpression" memberEnd="_MPNJLYkxEeOMQ5AKLd10lA _MPNJKokxEeOMQ5AKLd10lA"/>
<packagedElement xmi:type="uml:Association" xmi:id="_MPQzhYkxEeOMQ5AKLd10lA" name="A_result_opaqueExpression" isDerived="true" memberEnd="_MPL7AIkxEeOMQ5AKLd10lA _MPQzhokxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MPQzhokxEeOMQ5AKLd10lA" name="opaqueExpression" type="_ChRfcGveEdq4DLWZOhbdEA" association="_MPQzhYkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPQzh4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MPQziIkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MPQziYkxEeOMQ5AKLd10lA" name="A_behavior_opaqueExpression" memberEnd="_MPKs84kxEeOMQ5AKLd10lA _MPQziokxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MPQziokxEeOMQ5AKLd10lA" name="opaqueExpression" type="_ChRfcGveEdq4DLWZOhbdEA" association="_MPQziYkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPQzi4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MPQzjIkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MPRakIkxEeOMQ5AKLd10lA" name="A_specification_intervalConstraint" memberEnd="_MPHCiokxEeOMQ5AKLd10lA _MPRakokxEeOMQ5AKLd10lA">
<generalization xmi:id="_MPRakYkxEeOMQ5AKLd10lA" general="_MNdcsIkxEeOMQ5AKLd10lA"/>
<ownedEnd xmi:id="_MPRakokxEeOMQ5AKLd10lA" name="intervalConstraint" type="_MPHCh4kxEeOMQ5AKLd10lA" redefinedProperty="_MNdcsYkxEeOMQ5AKLd10lA" association="_MPRakIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPRak4kxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MPRalIkxEeOMQ5AKLd10lA" name="A_max_interval" memberEnd="_MPHCg4kxEeOMQ5AKLd10lA _MPRalYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MPRalYkxEeOMQ5AKLd10lA" name="interval" type="_MPHCgIkxEeOMQ5AKLd10lA" association="_MPRalIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPRalokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MPRal4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MPRamIkxEeOMQ5AKLd10lA" name="A_min_interval" memberEnd="_MPHChYkxEeOMQ5AKLd10lA _MPRamYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MPRamYkxEeOMQ5AKLd10lA" name="interval" type="_MPHCgIkxEeOMQ5AKLd10lA" association="_MPRamIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPRamokxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MPRam4kxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MPRanIkxEeOMQ5AKLd10lA" name="A_operand_expression" memberEnd="_MPGbf4kxEeOMQ5AKLd10lA _MPRanYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MPRanYkxEeOMQ5AKLd10lA" name="expression" type="_8QuDcLG3EeCDe8CO90iVKQ" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MPRanIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPRanokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MPRan4kxEeOMQ5AKLd10lA" name="A_event_durationObservation" memberEnd="_MPGbdokxEeOMQ5AKLd10lA _MPRaoIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MPRaoIkxEeOMQ5AKLd10lA" name="durationObservation" type="_MPGbcIkxEeOMQ5AKLd10lA" association="_MPRan4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPRaoYkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MPRaookxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MPSBoIkxEeOMQ5AKLd10lA" name="A_max_durationInterval" memberEnd="_MPF0cokxEeOMQ5AKLd10lA _MPSBookxEeOMQ5AKLd10lA">
<generalization xmi:id="_MPSBoYkxEeOMQ5AKLd10lA" general="_MPRalIkxEeOMQ5AKLd10lA"/>
<ownedEnd xmi:id="_MPSBookxEeOMQ5AKLd10lA" name="durationInterval" type="_MPF0b4kxEeOMQ5AKLd10lA" redefinedProperty="_MPRalYkxEeOMQ5AKLd10lA" association="_MPSBoIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPSBo4kxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MPSBpIkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MPSBpYkxEeOMQ5AKLd10lA" name="A_min_durationInterval" memberEnd="_MPF0dIkxEeOMQ5AKLd10lA _MPSBp4kxEeOMQ5AKLd10lA">
<generalization xmi:id="_MPSBpokxEeOMQ5AKLd10lA" general="_MPRamIkxEeOMQ5AKLd10lA"/>
<ownedEnd xmi:id="_MPSBp4kxEeOMQ5AKLd10lA" name="durationInterval" type="_MPF0b4kxEeOMQ5AKLd10lA" redefinedProperty="_MPRamYkxEeOMQ5AKLd10lA" association="_MPSBpYkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPSBqIkxEeOMQ5AKLd10lA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MPSBqYkxEeOMQ5AKLd10lA" value="*"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MPSBqokxEeOMQ5AKLd10lA" name="A_specification_durationConstraint" memberEnd="_MPF0bYkxEeOMQ5AKLd10lA _MPSBrIkxEeOMQ5AKLd10lA">
<generalization xmi:id="_MPSBq4kxEeOMQ5AKLd10lA" general="_MPRakIkxEeOMQ5AKLd10lA"/>
<ownedEnd xmi:id="_MPSBrIkxEeOMQ5AKLd10lA" name="durationConstraint" type="_MPF0YIkxEeOMQ5AKLd10lA" redefinedProperty="_MPRakokxEeOMQ5AKLd10lA" association="_MPSBqokxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPSBrYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MPSosIkxEeOMQ5AKLd10lA" name="A_expr_duration" memberEnd="_MPFNVYkxEeOMQ5AKLd10lA _MPSosYkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MPSosYkxEeOMQ5AKLd10lA" name="duration" type="_-Ixo8H4XEdq7cMP_l1l5Gg" subsettedProperty="_N3hRMAtAEeGcpbeCPJfCmw" association="_MPSosIkxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPSosokxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<packagedElement xmi:type="uml:Association" xmi:id="_MPSos4kxEeOMQ5AKLd10lA" name="A_observation_duration" memberEnd="_MPFNWIkxEeOMQ5AKLd10lA _MPSotIkxEeOMQ5AKLd10lA">
<ownedEnd xmi:id="_MPSotIkxEeOMQ5AKLd10lA" name="duration" type="_-Ixo8H4XEdq7cMP_l1l5Gg" association="_MPSos4kxEeOMQ5AKLd10lA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MPSotYkxEeOMQ5AKLd10lA"/>
</ownedEnd>
</packagedElement>
<profileApplication xmi:id="_0TBYYGvaEdq4DLWZOhbdEA">
<eAnnotations xmi:id="_0TBYYWvaEdq4DLWZOhbdEA" source="http://www.eclipse.org/uml2/2.0.0/UML">
<references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA"/>
</eAnnotations>
<appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
</profileApplication>
</uml:Model>
<Ecore:EPackage xmi:id="_LWVYQN7NEduglsXU_NKRsA" base_Package="_o8I_sGvaEdq4DLWZOhbdEA" packageName="uml" nsPrefix="uml" nsURI="http://www.eclipse.org/uml2/5.0.0/UML" basePackage="org.eclipse.uml2" prefix="UML"/>
<Ecore:EGenericType xmi:id="_PUkIYN7NEduglsXU_NKRsA" base_DataType="_HmwyMtrxEduW-vlXzvw90A"/>
<Ecore:EGenericType xmi:id="_QfhfoN7NEduglsXU_NKRsA" base_DataType="_HmwyNtrxEduW-vlXzvw90A"/>
<Ecore:EOperation xmi:id="_SnLRYMb4EdyrC427ygySag" base_Operation="_mv9LcFYiEdqB6vblk3tuMA" operationName="getResult" visibility="None"/>
<Ecore:EOperation xmi:id="_xkIRwMb4EdyrC427ygySag" base_Operation="_7UJKkFYJEdqrn7iZ0eqieg" operationName="getDefault" visibility="None"/>
<Ecore:EOperation xmi:id="_zi8H0Mb4EdyrC427ygySag" base_Operation="_QKbgcWXCEdqEJs8umHJc9g" visibility="None"/>
<Ecore:EOperation xmi:id="_1Bty8Mb4EdyrC427ygySag" base_Operation="_5FAasFYjEdqB6vblk3tuMA" visibility="None"/>
<Ecore:EOperation xmi:id="_3E_SQMb4EdyrC427ygySag" base_Operation="_VQnXIGXCEdqEJs8umHJc9g" visibility="None"/>
<Ecore:EOperation xmi:id="_hObjwMb6EdyrC427ygySag" base_Operation="_4xcu4FYKEdqrn7iZ0eqieg" operationName="getExtensions" visibility="None"/>
<Ecore:EOperation xmi:id="_kCb8cMb6EdyrC427ygySag" base_Operation="_WLw30FYLEdqrn7iZ0eqieg" visibility="None"/>
<Ecore:EOperation xmi:id="_wTSDAMb6EdyrC427ygySag" base_Operation="_FvJUYFYLEdqrn7iZ0eqieg" operationName="getInheritedParameters" visibility="None"/>
<Ecore:EOperation xmi:id="_26LegMb6EdyrC427ygySag" base_Operation="_qQchgGWKEdq-f4093SZhVA" visibility="None"/>
<Ecore:EOperation xmi:id="_5WV-8Mb6EdyrC427ygySag" base_Operation="_e2SLUGWKEdq-f4093SZhVA" visibility="None"/>
<Ecore:EOperation xmi:id="_n89b0Mb7EdyrC427ygySag" base_Operation="_aXS3gGWKEdq-f4093SZhVA" visibility="None"/>
<Ecore:EOperation xmi:id="_poGH8Mb7EdyrC427ygySag" base_Operation="_qtCaIFYkEdqB6vblk3tuMA" visibility="None"/>
<Ecore:EOperation xmi:id="_q6DfEMb7EdyrC427ygySag" base_Operation="_vlEgEFYkEdqB6vblk3tuMA" visibility="None"/>
<Ecore:EOperation xmi:id="_wtF0sMb7EdyrC427ygySag" base_Operation="_d8dDkFYkEdqB6vblk3tuMA" visibility="None"/>
<Ecore:EOperation xmi:id="_xr-e0Mb7EdyrC427ygySag" base_Operation="_sJdfYFYlEdqB6vblk3tuMA" visibility="None"/>
<Ecore:EOperation xmi:id="_ADORMMb8EdyrC427ygySag" base_Operation="_ho5pgFYLEdqrn7iZ0eqieg" operationName="getLower" visibility="None"/>
<Ecore:EOperation xmi:id="_Bqyr8Mb8EdyrC427ygySag" base_Operation="_ljsEEFYLEdqrn7iZ0eqieg" operationName="getUpper" visibility="None"/>
<Ecore:EOperation xmi:id="_M8TccMb8EdyrC427ygySag" base_Operation="_QUJ-oWWKEdq-f4093SZhVA" visibility="None"/>
<Ecore:EOperation xmi:id="_O5LY0Mb8EdyrC427ygySag" base_Operation="_lSARkGWKEdq-f4093SZhVA" visibility="None"/>
<Ecore:EOperation xmi:id="_Qrd10Mb8EdyrC427ygySag" base_Operation="_Zp2iwFYgEdqB6vblk3tuMA" operationName="getContext" visibility="None"/>
<Ecore:EOperation xmi:id="_SnJfYMb8EdyrC427ygySag" base_Operation="_gtr8cFYhEdqB6vblk3tuMA" operationName="getProvideds" visibility="None"/>
<Ecore:EOperation xmi:id="_UIAOIMb8EdyrC427ygySag" base_Operation="_mxt7cFYhEdqB6vblk3tuMA" operationName="getRequireds" visibility="None"/>
<Ecore:EOperation xmi:id="_WQMpsMb8EdyrC427ygySag" base_Operation="_QT7XMFYKEdqrn7iZ0eqieg" operationName="getDefiningEnd" visibility="None"/>
<Ecore:EOperation xmi:id="_YY_iMMb8EdyrC427ygySag" base_Operation="_8U6CAFYfEdqB6vblk3tuMA" operationName="getMessageKind" visibility="None"/>
<Ecore:EOperation xmi:id="_oEJMcMb8EdyrC427ygySag" base_Operation="_I3a88H4YEdq7cMP_l1l5Gg" visibility="None"/>
<Ecore:EOperation xmi:id="_p3eLQMb8EdyrC427ygySag" base_Operation="_JdkW8H4YEdq7cMP_l1l5Gg" visibility="None"/>
<Ecore:EOperation xmi:id="_tDBhQMb8EdyrC427ygySag" base_Operation="_-SmgADEkEdu9VoNTbEBQkQ" visibility="None"/>
<Ecore:EOperation xmi:id="_upizIMb8EdyrC427ygySag" base_Operation="_FbLFMDElEdu9VoNTbEBQkQ" visibility="None"/>
<Ecore:EAttribute xmi:id="_qlk0MLGzEeCDe8CO90iVKQ" isUnsettable="true" xmlFeatureKind="Element" base_Property="_WiuJ4LGzEeCDe8CO90iVKQ"/>
<Ecore:EAttribute xmi:id="_F9XrwLG0EeCDe8CO90iVKQ" isUnsettable="true" base_Property="_8n2t4LGzEeCDe8CO90iVKQ"/>
<Ecore:EAttribute xmi:id="_Y0N18LG0EeCDe8CO90iVKQ" isUnsettable="true" base_Property="_PfdtELG0EeCDe8CO90iVKQ"/>
<Ecore:EAttribute xmi:id="_m8ZRkLG0EeCDe8CO90iVKQ" isUnsettable="true" base_Property="_fO7PkLG0EeCDe8CO90iVKQ"/>
<Ecore:EAttribute xmi:id="_78jRoLG0EeCDe8CO90iVKQ" isUnsettable="true" xmlFeatureKind="Element" base_Property="_w__dcLG0EeCDe8CO90iVKQ"/>
<Ecore:EAttribute xmi:id="_HIUmgLG1EeCDe8CO90iVKQ" isUnsettable="true" base_Property="_D0kWwLG1EeCDe8CO90iVKQ"/>
<Ecore:EAttribute xmi:id="_ez3OwLG1EeCDe8CO90iVKQ" isUnsettable="true" base_Property="_ZSw9sLG1EeCDe8CO90iVKQ"/>
<Ecore:EAttribute xmi:id="_7MAJALG1EeCDe8CO90iVKQ" isUnsettable="true" base_Property="_rkJDULG1EeCDe8CO90iVKQ"/>
<Ecore:EAttribute xmi:id="_gB_ZULG2EeCDe8CO90iVKQ" isUnsettable="true" base_Property="_at8FwLG2EeCDe8CO90iVKQ"/>
<Ecore:EAttribute xmi:id="_oqhVYLG2EeCDe8CO90iVKQ" isUnsettable="true" base_Property="_lncl8LG2EeCDe8CO90iVKQ"/>
<Ecore:EAttribute xmi:id="_15YjYLG2EeCDe8CO90iVKQ" isUnsettable="true" base_Property="_wvc1ILG2EeCDe8CO90iVKQ"/>
<Ecore:EAttribute xmi:id="_VA4m4LG3EeCDe8CO90iVKQ" isUnsettable="true" base_Property="_N4PwQLG3EeCDe8CO90iVKQ"/>
<Ecore:EAttribute xmi:id="_dFvOILG3EeCDe8CO90iVKQ" isUnsettable="true" base_Property="_ZCc-4LG3EeCDe8CO90iVKQ"/>
<Ecore:EAttribute xmi:id="_lgZGQLG3EeCDe8CO90iVKQ" isUnsettable="true" base_Property="_j4KkMLG3EeCDe8CO90iVKQ"/>
<Ecore:EAttribute xmi:id="_yBw8ILG3EeCDe8CO90iVKQ" isUnsettable="true" base_Property="_vyLfILG3EeCDe8CO90iVKQ"/>
<Ecore:EAttribute xmi:id="_A6JssLG4EeCDe8CO90iVKQ" isUnsettable="true" base_Property="_-NPagLG3EeCDe8CO90iVKQ"/>
<Ecore:EAttribute xmi:id="_XOU5YLG4EeCDe8CO90iVKQ" isUnsettable="true" base_Property="_RFmAkLG4EeCDe8CO90iVKQ"/>
<Ecore:EAttribute xmi:id="_tNrsoLG4EeCDe8CO90iVKQ" isUnsettable="true" xmlFeatureKind="Element" base_Property="_k9tagbG4EeCDe8CO90iVKQ"/>
<Ecore:EAttribute xmi:id="_zHmtYLG4EeCDe8CO90iVKQ" isUnsettable="true" base_Property="_k9tahLG4EeCDe8CO90iVKQ"/>
<Ecore:EAttribute xmi:id="_CYKtYLG5EeCDe8CO90iVKQ" isUnsettable="true" xmlFeatureKind="Element" base_Property="__pbPMbG4EeCDe8CO90iVKQ"/>
<Ecore:EAttribute xmi:id="_FL4LILG5EeCDe8CO90iVKQ" isUnsettable="true" base_Property="__pbPNLG4EeCDe8CO90iVKQ"/>
<Ecore:EOperation xmi:id="_glNIILKHEeCwDd6B2NQzWA" base_Operation="_CytvwLKHEeCwDd6B2NQzWA" operationName="getType" visibility="None"/>
<Ecore:EOperation xmi:id="_Lsf0QLLREeCsYvaJqFFivQ" base_Operation="_CroQsLLREeCsYvaJqFFivQ" operationName="getContext" visibility="None"/>
<Ecore:EOperation xmi:id="_CRhSILLSEeCsYvaJqFFivQ" base_Operation="_6VRNQLLREeCsYvaJqFFivQ" operationName="getEndTypes" visibility="None"/>
<Ecore:EOperation xmi:id="_q1_mYLLSEeCsYvaJqFFivQ" base_Operation="_hIWcYLLSEeCsYvaJqFFivQ" operationName="getSuperClasses" visibility="None"/>
<Ecore:EOperation xmi:id="_52-SQLLSEeCsYvaJqFFivQ" base_Operation="_wKRjcLLSEeCsYvaJqFFivQ" operationName="getGenerals" visibility="None"/>
<Ecore:EOperation xmi:id="_JTGpELLTEeCsYvaJqFFivQ" base_Operation="_A3QeILLTEeCsYvaJqFFivQ" operationName="getInheritedMembers" visibility="None"/>
<Ecore:EOperation xmi:id="_VEmrwLLUEeCsYvaJqFFivQ" base_Operation="_PGB0gLLUEeCsYvaJqFFivQ" operationName="getProvideds" visibility="None"/>
<Ecore:EOperation xmi:id="_tPlpELLUEeCsYvaJqFFivQ" base_Operation="_lHjyALLUEeCsYvaJqFFivQ" operationName="getRequireds" visibility="None"/>
<Ecore:EOperation xmi:id="_LwnicLLVEeCsYvaJqFFivQ" base_Operation="_ETr20LLVEeCsYvaJqFFivQ" operationName="getEnds" visibility="None"/>
<Ecore:EOperation xmi:id="_rodBQLLWEeCsYvaJqFFivQ" base_Operation="_lgjO4LLWEeCsYvaJqFFivQ" operationName="getKind" visibility="None"/>
<Ecore:EOperation xmi:id="_9YlJELLYEeCsYvaJqFFivQ" base_Operation="_7EO9ULLXEeCsYvaJqFFivQ" operationName="getDeployedElements" visibility="None"/>
<Ecore:EOperation xmi:id="_WhXsQLL2EeCBifIhhuFqZA" base_Operation="_O9x_ALL2EeCBifIhhuFqZA" operationName="getOwnedPorts" visibility="None"/>
<Ecore:EOperation xmi:id="_uIYZ0LL2EeCBifIhhuFqZA" base_Operation="_dgJcQLL2EeCBifIhhuFqZA" operationName="getClassifier"/>
<Ecore:EOperation xmi:id="_GdT9ULL3EeCBifIhhuFqZA" base_Operation="__PcocLL2EeCBifIhhuFqZA" operationName="getMetaclass" visibility="None"/>
<Ecore:EOperation xmi:id="_ezWUELL3EeCBifIhhuFqZA" base_Operation="_Y8IpELL3EeCBifIhhuFqZA" operationName="getLower" visibility="None"/>
<Ecore:EOperation xmi:id="_ig3HoLL3EeCBifIhhuFqZA" base_Operation="_a_qnELL3EeCBifIhhuFqZA" operationName="getUpper" visibility="None"/>
<Ecore:EOperation xmi:id="_0bHGsLL3EeCBifIhhuFqZA" base_Operation="_qV1f0LL3EeCBifIhhuFqZA" operationName="getNamespace" visibility="None"/>
<Ecore:EOperation xmi:id="_GMe2kLL4EeCBifIhhuFqZA" base_Operation="_8RZtgLL3EeCBifIhhuFqZA" operationName="getQualifiedName" visibility="None"/>
<Ecore:EOperation xmi:id="_WLi7ULL4EeCBifIhhuFqZA" base_Operation="_OanVoLL4EeCBifIhhuFqZA" operationName="getImportedMembers" visibility="None"/>
<Ecore:EOperation xmi:id="_kOOy8LL4EeCBifIhhuFqZA" base_Operation="_aGIhkLL4EeCBifIhhuFqZA" operationName="getOwnedMembers" visibility="None"/>
<Ecore:EOperation xmi:id="_K1fzoLL5EeCBifIhhuFqZA" base_Operation="__wMTILL4EeCBifIhhuFqZA" operationName="getNestedPackages" visibility="None"/>
<Ecore:EOperation xmi:id="_rz9_0LL5EeCBifIhhuFqZA" base_Operation="_kWuyMLL5EeCBifIhhuFqZA" operationName="getOwnedStereotypes" visibility="None"/>
<Ecore:EOperation xmi:id="_ANO_ALL6EeCBifIhhuFqZA" base_Operation="_yfRaMLL5EeCBifIhhuFqZA" operationName="getOwnedTypes" visibility="None"/>
<Ecore:EOperation xmi:id="_zo6GULL6EeCBifIhhuFqZA" base_Operation="_meukALL6EeCBifIhhuFqZA" operationName="getOpposite" visibility="None"/>
<Ecore:EOperation xmi:id="_SxtxYLL7EeCBifIhhuFqZA" base_Operation="_IZYEkLL7EeCBifIhhuFqZA" operationName="getReferreds" visibility="None"/>
<Ecore:EOperation xmi:id="_1Kjp0LL7EeCBifIhhuFqZA" base_Operation="_jDbsYLL7EeCBifIhhuFqZA" operationName="getProfile" visibility="None"/>
<Ecore:EOperation xmi:id="_G_HQkLL8EeCBifIhhuFqZA" base_Operation="_ATcCwLL8EeCBifIhhuFqZA" operationName="getParts" visibility="None"/>
<Ecore:EOperation xmi:id="_0SoRYLL9EeCBifIhhuFqZA" base_Operation="_ZdMVcLL8EeCBifIhhuFqZA" operationName="getIncomings" visibility="None"/>
<Ecore:EOperation xmi:id="_BI5ZMLL-EeCBifIhhuFqZA" base_Operation="_982T8LL9EeCBifIhhuFqZA" operationName="getOutgoings" visibility="None"/>
<Ecore:EOperation xmi:id="_dy4cULNJEeCT16-4OmDs9g" base_Operation="_WlaJALNJEeCT16-4OmDs9g" visibility="None"/>
<Ecore:EAttribute xmi:id="_dFQKQNwaEeCT5O2F6sGn5g" isUnsettable="true" base_Property="_Q1JqkNwaEeCT5O2F6sGn5g"/>
<Ecore:EReference xmi:id="_JWtREAtDEeGcpbeCPJfCmw" xmlName="group" xmlFeatureKind="Element" base_Property="_zRopoAs9EeGcpbeCPJfCmw"/>
<Ecore:EReference xmi:id="_N4I04AtDEeGcpbeCPJfCmw" xmlName="node" xmlFeatureKind="Element" base_Property="_5DNmsAs9EeGcpbeCPJfCmw"/>
<Ecore:EReference xmi:id="_1XKowBCNEeG9F6n8Twp9jA" xmlFeatureKind="Attribute" base_Property="_RoJfoAs_EeGcpbeCPJfCmw">
<annotation>http://www.eclipse.org/emf/CDO persistent='true' filter='ownedNode'</annotation>
</Ecore:EReference>
<Ecore:EReference xmi:id="_4FNjYBCNEeG9F6n8Twp9jA" xmlFeatureKind="Attribute" base_Property="_PCvjoAs_EeGcpbeCPJfCmw">
<annotation>http://www.eclipse.org/emf/CDO persistent='true' filter='ownedGroup'</annotation>
</Ecore:EReference>
<Ecore:EAttribute xmi:id="_oHuy0IPZEeOyLuI0bir0Bg" isTransient="true" isVolatile="true" isUnsettable="true" visibility="None" base_Property="_L_JWELG2EeCDe8CO90iVKQ"/>
<Ecore:EOperation xmi:id="_64Y1cIPZEeOyLuI0bir0Bg" base_Operation="_f-9wMGXCEdqEJs8umHJc9g" visibility="None"/>
<Ecore:EOperation xmi:id="_GwdPoIPaEeOyLuI0bir0Bg" base_Operation="_kGtosGXCEdqEJs8umHJc9g" visibility="None"/>
<Ecore:EOperation xmi:id="_6p4ogIRfEeOrzvVsV3Q4sA" base_Operation="_uR4xEIRfEeOrzvVsV3Q4sA" operationName="getClientDependencies" visibility="None"/>
<Ecore:EAttribute xmi:id="_nyeDgH2aEeSVK_cyXH-KWw" isUnsettable="true" base_Property="_MNSdlokxEeOMQ5AKLd10lA"/>
</xmi:XMI>