{
	"csm": {
		"nodes": {
			"29": {
				"typename": {
					"type": "string",
					"value": "ClassIcon"
				},
				"position": {
					"type": "list<double>",
					"value": [
						236,
						203
					]
				},
				"orientation": {
					"type": "double",
					"value": 0
				},
				"scale": {
					"type": "list<double>",
					"value": [
						1,
						1
					]
				},
				"mapper": {
					"type": "code",
					"value": "/* specify code that evaluates to an associative array of the form {...,csattr:val,...} */"
				},
				"parser": {
					"type": "code",
					"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */"
				},
				"$contents": {
					"type": "map<string,*>",
					"value": {
						"nodes": {
							"96": {
								"width": {
									"type": "double",
									"value": 200
								},
								"height": {
									"type": "double",
									"value": 125
								},
								"cornerRadius": {
									"type": "double",
									"value": 0
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"stroke": "#000000",
										"stroke-dasharray": "",
										"fill": "#ffffff",
										"fill-opacity": 0.75,
										"stroke-width": 2
									}
								},
								"mapper": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,csattr:val,...} */"
								},
								"parser": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */"
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Rectangle",
								"position": {
									"type": "list<double>",
									"value": [
										4,
										3
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								}
							},
							"97": {
								"segments": {
									"type": "string",
									"value": "m0,0l197,0"
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"stroke": "#000000",
										"stroke-dasharray": "",
										"fill": "#ffffff",
										"fill-opacity": 0.75,
										"font-size": "20px",
										"stroke-width": 2,
										"arrow-start": "none",
										"arrow-end": "none"
									}
								},
								"mapper": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,csattr:val,...} */"
								},
								"parser": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */"
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Path",
								"position": {
									"type": "list<double>",
									"value": [
										6,
										36
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								}
							},
							"98": {
								"textContent": {
									"type": "string",
									"value": "State"
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"font-size": "18px",
										"font-style": "normal",
										"font-weight": "bold",
										"line-height": "100%",
										"letter-spacing": "0px",
										"word-spacing": "0px",
										"fill": "#000000",
										"fill-opacity": "1",
										"stroke": "none"
									}
								},
								"mapper": {
									"type": "code",
									"value": "var style = \n{\n   \"font-size\": \"18px\",\n   \"font-style\": \"normal\",\n   \"font-weight\": \"bold\",\n   \"line-height\": \"100%\",\n   \"letter-spacing\": \"0px\",\n   \"word-spacing\": \"0px\",\n   \"fill\": \"#000000\",\n   \"fill-opacity\": \"1\",\n   \"stroke\": \"none\",\n       \"font-style\": (getAttr('abstract') ? 'italic' : 'normal')\n};\n\n({'textContent': getAttr('name'), 'style':style})\n\n\n"
								},
								"parser": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */\n({'name': getAttr('textContent')})"
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Text",
								"position": {
									"type": "list<double>",
									"value": [
										8,
										8
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								}
							},
							"99": {
								"textContent": {
									"type": "string",
									"value": "+ name : string\n+ initial : boolean\n+ current : boolean"
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"font-size": "14px",
										"font-style": "normal",
										"font-weight": "bold",
										"line-height": "100%",
										"letter-spacing": "0px",
										"word-spacing": "0px",
										"fill": "#000000",
										"fill-opacity": "1",
										"stroke": "none"
									}
								},
								"mapper": {
									"type": "code",
									"value": "var filenames = getAttr('attributes').map(\n            function(attr)\n            {\n                var s = '+ '+attr['name'] + ' : ' + attr['type'];\n                if (attr['default'])\n                    s += ' = ' + attr['default'];\n                return s;\n            });\n\n({'textContent': filenames.join('\\n')})"
								},
								"parser": {
									"type": "code",
									"value": ""
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Text",
								"position": {
									"type": "list<double>",
									"value": [
										10,
										41
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								}
							},
							"100": {
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Contain",
								"position": {
									"type": "list<double>",
									"value": [
										68.5,
										36.5
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								},
								"link-style": {
									"type": "map<string,string>",
									"value": {
										"stroke": "#00ffff",
										"stroke-dasharray": "",
										"stroke-opacity": 0.1,
										"stroke-width": 1
									}
								}
							},
							"101": {
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Contain",
								"position": {
									"type": "list<double>",
									"value": [
										12.5,
										27
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								},
								"link-style": {
									"type": "map<string,string>",
									"value": {
										"stroke": "#00ffff",
										"stroke-dasharray": "",
										"stroke-opacity": 0.1,
										"stroke-width": 1
									}
								}
							},
							"102": {
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Contain",
								"position": {
									"type": "list<double>",
									"value": [
										53.75,
										20
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								},
								"link-style": {
									"type": "map<string,string>",
									"value": {
										"stroke": "#00ffff",
										"stroke-dasharray": "",
										"stroke-opacity": 0.1,
										"stroke-width": 1
									}
								}
							}
						},
						"edges": [
							{
								"src": "96",
								"dest": "100"
							},
							{
								"src": "100",
								"dest": "98"
							},
							{
								"src": "96",
								"dest": "101"
							},
							{
								"src": "101",
								"dest": "99"
							},
							{
								"src": "96",
								"dest": "102"
							},
							{
								"src": "102",
								"dest": "97"
							}
						]
					}
				},
				"$asuri": {
					"type": "string",
					"value": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram/Class/13.instance"
				},
				"$type": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram.umlIcons/ClassIcon"
			},
			"30": {
				"typename": {
					"type": "string",
					"value": "ClassIcon"
				},
				"position": {
					"type": "list<double>",
					"value": [
						627,
						497
					]
				},
				"orientation": {
					"type": "double",
					"value": 0
				},
				"scale": {
					"type": "list<double>",
					"value": [
						1,
						1
					]
				},
				"mapper": {
					"type": "code",
					"value": "/* specify code that evaluates to an associative array of the form {...,csattr:val,...} */"
				},
				"parser": {
					"type": "code",
					"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */"
				},
				"$contents": {
					"type": "map<string,*>",
					"value": {
						"nodes": {
							"96": {
								"width": {
									"type": "double",
									"value": 200
								},
								"height": {
									"type": "double",
									"value": 125
								},
								"cornerRadius": {
									"type": "double",
									"value": 0
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"stroke": "#000000",
										"stroke-dasharray": "",
										"fill": "#ffffff",
										"fill-opacity": 0.75,
										"stroke-width": 2
									}
								},
								"mapper": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,csattr:val,...} */"
								},
								"parser": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */"
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Rectangle",
								"position": {
									"type": "list<double>",
									"value": [
										4,
										3
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								}
							},
							"97": {
								"segments": {
									"type": "string",
									"value": "m0,0l197,0"
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"stroke": "#000000",
										"stroke-dasharray": "",
										"fill": "#ffffff",
										"fill-opacity": 0.75,
										"font-size": "20px",
										"stroke-width": 2,
										"arrow-start": "none",
										"arrow-end": "none"
									}
								},
								"mapper": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,csattr:val,...} */"
								},
								"parser": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */"
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Path",
								"position": {
									"type": "list<double>",
									"value": [
										6,
										36
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								}
							},
							"98": {
								"textContent": {
									"type": "string",
									"value": "Interrupt"
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"font-size": "18px",
										"font-style": "normal",
										"font-weight": "bold",
										"line-height": "100%",
										"letter-spacing": "0px",
										"word-spacing": "0px",
										"fill": "#000000",
										"fill-opacity": "1",
										"stroke": "none"
									}
								},
								"mapper": {
									"type": "code",
									"value": "var style = \n{\n   \"font-size\": \"18px\",\n   \"font-style\": \"normal\",\n   \"font-weight\": \"bold\",\n   \"line-height\": \"100%\",\n   \"letter-spacing\": \"0px\",\n   \"word-spacing\": \"0px\",\n   \"fill\": \"#000000\",\n   \"fill-opacity\": \"1\",\n   \"stroke\": \"none\",\n       \"font-style\": (getAttr('abstract') ? 'italic' : 'normal')\n};\n\n({'textContent': getAttr('name'), 'style':style})\n\n\n"
								},
								"parser": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */\n({'name': getAttr('textContent')})"
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Text",
								"position": {
									"type": "list<double>",
									"value": [
										8,
										8
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								}
							},
							"99": {
								"textContent": {
									"type": "string",
									"value": "+ at : int\n+ event : string = E"
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"font-size": "14px",
										"font-style": "normal",
										"font-weight": "bold",
										"line-height": "100%",
										"letter-spacing": "0px",
										"word-spacing": "0px",
										"fill": "#000000",
										"fill-opacity": "1",
										"stroke": "none"
									}
								},
								"mapper": {
									"type": "code",
									"value": "var filenames = getAttr('attributes').map(\n            function(attr)\n            {\n                var s = '+ '+attr['name'] + ' : ' + attr['type'];\n                if (attr['default'])\n                    s += ' = ' + attr['default'];\n                return s;\n            });\n\n({'textContent': filenames.join('\\n')})"
								},
								"parser": {
									"type": "code",
									"value": ""
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Text",
								"position": {
									"type": "list<double>",
									"value": [
										10,
										41
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								}
							},
							"100": {
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Contain",
								"position": {
									"type": "list<double>",
									"value": [
										68.5,
										36.5
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								},
								"link-style": {
									"type": "map<string,string>",
									"value": {
										"stroke": "#00ffff",
										"stroke-dasharray": "",
										"stroke-opacity": 0.1,
										"stroke-width": 1
									}
								}
							},
							"101": {
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Contain",
								"position": {
									"type": "list<double>",
									"value": [
										12.5,
										27
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								},
								"link-style": {
									"type": "map<string,string>",
									"value": {
										"stroke": "#00ffff",
										"stroke-dasharray": "",
										"stroke-opacity": 0.1,
										"stroke-width": 1
									}
								}
							},
							"102": {
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Contain",
								"position": {
									"type": "list<double>",
									"value": [
										53.75,
										20
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								},
								"link-style": {
									"type": "map<string,string>",
									"value": {
										"stroke": "#00ffff",
										"stroke-dasharray": "",
										"stroke-opacity": 0.1,
										"stroke-width": 1
									}
								}
							}
						},
						"edges": [
							{
								"src": "96",
								"dest": "100"
							},
							{
								"src": "100",
								"dest": "98"
							},
							{
								"src": "96",
								"dest": "101"
							},
							{
								"src": "101",
								"dest": "99"
							},
							{
								"src": "96",
								"dest": "102"
							},
							{
								"src": "102",
								"dest": "97"
							}
						]
					}
				},
				"$asuri": {
					"type": "string",
					"value": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram/Class/16.instance"
				},
				"$type": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram.umlIcons/ClassIcon"
			},
			"31": {
				"link-style": {
					"type": "map<string,string>",
					"value": {
						"stroke": "#000000",
						"stroke-dasharray": "",
						"stroke-opacity": 1,
						"stroke-width": 2
					}
				},
				"arrowHead": {
					"type": "ENUM(circle-black,circle-black-large,circle-white,circle-white-large,diamond-black,diamond-black-large,diamond-white,diamond-white-large,triangle-black,triangle-black-large,triangle-white,triangle-white-large,arrow-black,arrow-black-large,arrow-empty,arrow-empty-large,custom)",
					"value": "custom"
				},
				"arrowTail": {
					"type": "ENUM(circle-black,circle-black-large,circle-white,circle-white-large,diamond-black,diamond-black-large,diamond-white,diamond-white-large,triangle-black,triangle-black-large,triangle-white,triangle-white-large,arrow-black,arrow-black-large,arrow-empty,arrow-empty-large,custom)",
					"value": "arrow-black"
				},
				"typename": {
					"type": "string",
					"value": "AssociationLink"
				},
				"position": {
					"type": "list<double>",
					"value": [
						527.3127594312485,
						233.2016332703214
					]
				},
				"orientation": {
					"type": "double",
					"value": 0
				},
				"scale": {
					"type": "list<double>",
					"value": [
						1,
						1
					]
				},
				"mapper": {
					"type": "code",
					"value": "/* specify code that evaluates to an associative array of the form {...,csattr:val,...} */"
				},
				"parser": {
					"type": "code",
					"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */"
				},
				"$contents": {
					"type": "map<string,*>",
					"value": {
						"nodes": {
							"71": {
								"textContent": {
									"type": "string",
									"value": "TimedTransition"
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"font-size": "20px",
										"font-style": "normal",
										"font-weight": "normal",
										"line-height": "100%",
										"letter-spacing": "0px",
										"word-spacing": "0px",
										"fill": "#000000",
										"fill-opacity": "1",
										"stroke": "none",
										"font-family": "Sans"
									}
								},
								"mapper": {
									"type": "code",
									"value": "({'textContent':getAttr('name')})"
								},
								"parser": {
									"type": "code",
									"value": "({'name':getAttr('textContent')})"
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Text",
								"position": {
									"type": "list<double>",
									"value": [
										"0;-11.858771701187152,0%",
										"0;-41.701633270321395,0%"
									]
								},
								"orientation": {
									"type": "double",
									"value": "0;0"
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								},
								"$linkDecoratorInfo": {
									"type": "map<string,double>",
									"value": {
										"xratio": 0.3803680981595092,
										"yoffset": -28.5
									}
								}
							},
							"74": {
								"textContent": {
									"type": "string",
									"value": "*"
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"font-size": "20px",
										"font-style": "normal",
										"font-weight": "normal",
										"line-height": "100%",
										"letter-spacing": "0px",
										"word-spacing": "0px",
										"fill": "#000000",
										"fill-opacity": "1",
										"stroke": "none",
										"font-family": "Sans"
									}
								},
								"mapper": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,csattr:val,...} */\nvar clazz = getNeighbors('>'),\n    mult = '';\nif (clazz.length > 0) {\n    clazz = clazz[0];\n    var cardinalities = getAttr('cardinalities', clazz), card;\n    for (i = 0; i < cardinalities.length; i++) {\n        if (cardinalities[i]['type'] == getAttr('name') && cardinalities[i]['dir'] == 'in') {\n            card = cardinalities[i];\n            break;\n        }\n    }\n    if (card) {\n        var min = card['min'],\n            max = card['max'];\n        if (min == '')\n            min = '0';\n        if (max == '' || max == 'Infinity')\n            max = '*';\n        if (min == '0' && max == '*')\n            mult = '*';\n        else if (min == max)\n            mult = max;\n        else mult = min + '..' + max;\n    }\n}\nif (mult == '')\n    mult = '*';\n({'textContent': mult})"
								},
								"parser": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */"
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Text",
								"position": {
									"type": "list<double>",
									"value": [
										"0;-75.98147108769024,0%",
										"0;-38.701633270321395,0%"
									]
								},
								"orientation": {
									"type": "double",
									"value": "0;0"
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								},
								"$linkDecoratorInfo": {
									"type": "map<string,double>",
									"value": {
										"xratio": 0.06134969325153374,
										"yoffset": -25.5
									}
								}
							},
							"77": {
								"textContent": {
									"type": "string",
									"value": "0..1"
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"font-size": "20px",
										"font-style": "normal",
										"font-weight": "normal",
										"line-height": "100%",
										"letter-spacing": "0px",
										"word-spacing": "0px",
										"fill": "#000000",
										"fill-opacity": "1",
										"stroke": "none",
										"font-family": "Sans"
									}
								},
								"mapper": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,csattr:val,...} */\nvar clazz = getNeighbors('<'),\n    mult = '';\nif (clazz.length > 0) {\n    clazz = clazz[0];\n    var cardinalities = getAttr('cardinalities', clazz), card;\n    for (i = 0; i < cardinalities.length; i++) {\n        if (cardinalities[i]['type'] == getAttr('name') && cardinalities[i]['dir'] == 'out') {\n            card = cardinalities[i];\n            break;\n        }\n    }\n    if (card) {\n        var min = card['min'],\n            max = card['max'];\n        if (min == '')\n            min = '0';\n        if (max == '' || max == 'Infinity')\n            max = '*';\n        if (min == '0' && max == '*')\n            mult = '*';\n        else if (min == max)\n            mult = max;\n        else mult = min + '..' + max;\n    }\n}\nif (mult == '')\n    mult = '*';\n({'textContent': mult})"
								},
								"parser": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */"
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Text",
								"position": {
									"type": "list<double>",
									"value": [
										"0;-87.31275943124854,-100%",
										"0;36.298366729678605,1.2246467991473532e-14%"
									]
								},
								"orientation": {
									"type": "double",
									"value": "0;180"
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								},
								"$linkDecoratorInfo": {
									"type": "map<string,double>",
									"value": {
										"xratio": 1.0245398773006136,
										"yoffset": -23.5
									}
								}
							},
							"140": {
								"segments": {
									"type": "string",
									"value": "m0,0 l20,8 l-20,8"
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"stroke": "#000000",
										"fill": "#000000",
										"fill-opacity": 0,
										"stroke-width": 1,
										"opacity": 1
									}
								},
								"mapper": {
									"type": "code",
									"value": ""
								},
								"parser": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */"
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Path",
								"position": {
									"type": "list<double>",
									"value": [
										"0;-87.31275943124854,-100%",
										"0;20.798366729678605,1.2246467991473532e-14%"
									]
								},
								"orientation": {
									"type": "double",
									"value": "0;180"
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								},
								"$linkDecoratorInfo": {
									"type": "map<string,double>",
									"value": {
										"xratio": 1,
										"yoffset": -8
									}
								}
							}
						},
						"edges": []
					}
				},
				"$asuri": {
					"type": "string",
					"value": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram/Association/19.instance"
				},
				"$segments": {
					"type": "map<string,list<string>>",
					"value": {
						"/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram.umlIcons/ClassIcon/29.instance--/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram.umlIcons/AssociationLink/31.instance": "M439,220L527,220L527,233",
						"/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram.umlIcons/AssociationLink/31.instance--/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram.umlIcons/ClassIcon/29.instance": "M527,233L527,246L464,246L440,246"
					}
				},
				"$type": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram.umlIcons/AssociationLink"
			},
			"32": {
				"link-style": {
					"type": "map<string,string>",
					"value": {
						"stroke": "#000000",
						"stroke-dasharray": "",
						"stroke-opacity": 1,
						"stroke-width": 2
					}
				},
				"arrowHead": {
					"type": "ENUM(circle-black,circle-black-large,circle-white,circle-white-large,diamond-black,diamond-black-large,diamond-white,diamond-white-large,triangle-black,triangle-black-large,triangle-white,triangle-white-large,arrow-black,arrow-black-large,arrow-empty,arrow-empty-large,custom)",
					"value": "custom"
				},
				"arrowTail": {
					"type": "ENUM(circle-black,circle-black-large,circle-white,circle-white-large,diamond-black,diamond-black-large,diamond-white,diamond-white-large,triangle-black,triangle-black-large,triangle-white,triangle-white-large,arrow-black,arrow-black-large,arrow-empty,arrow-empty-large,custom)",
					"value": "arrow-black"
				},
				"typename": {
					"type": "string",
					"value": "AssociationLink"
				},
				"position": {
					"type": "list<double>",
					"value": [
						524.2597932111449,
						297.11661247637056
					]
				},
				"orientation": {
					"type": "double",
					"value": 0
				},
				"scale": {
					"type": "list<double>",
					"value": [
						1,
						1
					]
				},
				"mapper": {
					"type": "code",
					"value": "/* specify code that evaluates to an associative array of the form {...,csattr:val,...} */"
				},
				"parser": {
					"type": "code",
					"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */"
				},
				"$contents": {
					"type": "map<string,*>",
					"value": {
						"nodes": {
							"71": {
								"textContent": {
									"type": "string",
									"value": "InterruptTransition"
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"font-size": "20px",
										"font-style": "normal",
										"font-weight": "normal",
										"line-height": "100%",
										"letter-spacing": "0px",
										"word-spacing": "0px",
										"fill": "#000000",
										"fill-opacity": "1",
										"stroke": "none",
										"font-family": "Sans"
									}
								},
								"mapper": {
									"type": "code",
									"value": "({'textContent':getAttr('name')})"
								},
								"parser": {
									"type": "code",
									"value": "({'name':getAttr('textContent')})"
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Text",
								"position": {
									"type": "list<double>",
									"value": [
										"0;-3.903964990285999,0%",
										"0;-42.61661247637056,0%"
									]
								},
								"orientation": {
									"type": "double",
									"value": "0;0"
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								},
								"$linkDecoratorInfo": {
									"type": "map<string,double>",
									"value": {
										"xratio": 0.3803680981595092,
										"yoffset": -28.5
									}
								}
							},
							"74": {
								"textContent": {
									"type": "string",
									"value": "*"
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"font-size": "20px",
										"font-style": "normal",
										"font-weight": "normal",
										"line-height": "100%",
										"letter-spacing": "0px",
										"word-spacing": "0px",
										"fill": "#000000",
										"fill-opacity": "1",
										"stroke": "none",
										"font-family": "Sans"
									}
								},
								"mapper": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,csattr:val,...} */\nvar clazz = getNeighbors('>'),\n    mult = '';\nif (clazz.length > 0) {\n    clazz = clazz[0];\n    var cardinalities = getAttr('cardinalities', clazz), card;\n    for (i = 0; i < cardinalities.length; i++) {\n        if (cardinalities[i]['type'] == getAttr('name') && cardinalities[i]['dir'] == 'in') {\n            card = cardinalities[i];\n            break;\n        }\n    }\n    if (card) {\n        var min = card['min'],\n            max = card['max'];\n        if (min == '')\n            min = '0';\n        if (max == '' || max == 'Infinity')\n            max = '*';\n        if (min == '0' && max == '*')\n            mult = '*';\n        else if (min == max)\n            mult = max;\n        else mult = min + '..' + max;\n    }\n}\nif (mult == '')\n    mult = '*';\n({'textContent': mult})"
								},
								"parser": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */"
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Text",
								"position": {
									"type": "list<double>",
									"value": [
										"0;-69.62175640132898,0%",
										"0;-39.61661247637056,0%"
									]
								},
								"orientation": {
									"type": "double",
									"value": "0;0"
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								},
								"$linkDecoratorInfo": {
									"type": "map<string,double>",
									"value": {
										"xratio": 0.06134969325153374,
										"yoffset": -25.5
									}
								}
							},
							"77": {
								"textContent": {
									"type": "string",
									"value": "*"
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"font-size": "20px",
										"font-style": "normal",
										"font-weight": "normal",
										"line-height": "100%",
										"letter-spacing": "0px",
										"word-spacing": "0px",
										"fill": "#000000",
										"fill-opacity": "1",
										"stroke": "none",
										"font-family": "Sans"
									}
								},
								"mapper": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,csattr:val,...} */\nvar clazz = getNeighbors('<'),\n    mult = '';\nif (clazz.length > 0) {\n    clazz = clazz[0];\n    var cardinalities = getAttr('cardinalities', clazz), card;\n    for (i = 0; i < cardinalities.length; i++) {\n        if (cardinalities[i]['type'] == getAttr('name') && cardinalities[i]['dir'] == 'out') {\n            card = cardinalities[i];\n            break;\n        }\n    }\n    if (card) {\n        var min = card['min'],\n            max = card['max'];\n        if (min == '')\n            min = '0';\n        if (max == '' || max == 'Infinity')\n            max = '*';\n        if (min == '0' && max == '*')\n            mult = '*';\n        else if (min == max)\n            mult = max;\n        else mult = min + '..' + max;\n    }\n}\nif (mult == '')\n    mult = '*';\n({'textContent': mult})"
								},
								"parser": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */"
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Text",
								"position": {
									"type": "list<double>",
									"value": [
										"0;-85.25979321114494,-100%",
										"0;48.38338752362944,1.2246467991473532e-14%"
									]
								},
								"orientation": {
									"type": "double",
									"value": "0;180"
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								},
								"$linkDecoratorInfo": {
									"type": "map<string,double>",
									"value": {
										"xratio": 1.0245398773006136,
										"yoffset": -23.5
									}
								}
							},
							"140": {
								"segments": {
									"type": "string",
									"value": "m0,0 l20,8 l-20,8"
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"stroke": "#000000",
										"fill": "#000000",
										"fill-opacity": 0,
										"stroke-width": 1,
										"opacity": 1
									}
								},
								"mapper": {
									"type": "code",
									"value": ""
								},
								"parser": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */"
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Path",
								"position": {
									"type": "list<double>",
									"value": [
										"0;-85.25979321114494,-100%",
										"0;32.88338752362944,1.2246467991473532e-14%"
									]
								},
								"orientation": {
									"type": "double",
									"value": "0;180"
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								},
								"$linkDecoratorInfo": {
									"type": "map<string,double>",
									"value": {
										"xratio": 1,
										"yoffset": -8
									}
								}
							}
						},
						"edges": []
					}
				},
				"$asuri": {
					"type": "string",
					"value": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram/Association/20.instance"
				},
				"$segments": {
					"type": "map<string,list<string>>",
					"value": {
						"/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram.umlIcons/ClassIcon/29.instance--/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram.umlIcons/AssociationLink/32.instance": "M442,283L524,283L524,297",
						"/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram.umlIcons/AssociationLink/32.instance--/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram.umlIcons/ClassIcon/29.instance": "M524,297L524,322L439,322"
					}
				},
				"$type": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram.umlIcons/AssociationLink"
			},
			"33": {
				"typename": {
					"type": "string",
					"value": "ClassIcon"
				},
				"position": {
					"type": "list<double>",
					"value": [
						987,
						203.18049999999994
					]
				},
				"orientation": {
					"type": "double",
					"value": 0
				},
				"scale": {
					"type": "list<double>",
					"value": [
						1,
						1
					]
				},
				"mapper": {
					"type": "code",
					"value": "/* specify code that evaluates to an associative array of the form {...,csattr:val,...} */"
				},
				"parser": {
					"type": "code",
					"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */"
				},
				"$contents": {
					"type": "map<string,*>",
					"value": {
						"nodes": {
							"96": {
								"width": {
									"type": "double",
									"value": 200
								},
								"height": {
									"type": "double",
									"value": 125
								},
								"cornerRadius": {
									"type": "double",
									"value": 0
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"stroke": "#000000",
										"stroke-dasharray": "",
										"fill": "#ffffff",
										"fill-opacity": 0.75,
										"stroke-width": 2
									}
								},
								"mapper": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,csattr:val,...} */"
								},
								"parser": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */"
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Rectangle",
								"position": {
									"type": "list<double>",
									"value": [
										4,
										3
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								}
							},
							"97": {
								"segments": {
									"type": "string",
									"value": "m0,0l197,0"
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"stroke": "#000000",
										"stroke-dasharray": "",
										"fill": "#ffffff",
										"fill-opacity": 0.75,
										"font-size": "20px",
										"stroke-width": 2,
										"arrow-start": "none",
										"arrow-end": "none"
									}
								},
								"mapper": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,csattr:val,...} */"
								},
								"parser": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */"
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Path",
								"position": {
									"type": "list<double>",
									"value": [
										6,
										36
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								}
							},
							"98": {
								"textContent": {
									"type": "string",
									"value": "Time"
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"font-size": "18px",
										"font-style": "normal",
										"font-weight": "bold",
										"line-height": "100%",
										"letter-spacing": "0px",
										"word-spacing": "0px",
										"fill": "#000000",
										"fill-opacity": "1",
										"stroke": "none"
									}
								},
								"mapper": {
									"type": "code",
									"value": "var style = \n{\n   \"font-size\": \"18px\",\n   \"font-style\": \"normal\",\n   \"font-weight\": \"bold\",\n   \"line-height\": \"100%\",\n   \"letter-spacing\": \"0px\",\n   \"word-spacing\": \"0px\",\n   \"fill\": \"#000000\",\n   \"fill-opacity\": \"1\",\n   \"stroke\": \"none\",\n       \"font-style\": (getAttr('abstract') ? 'italic' : 'normal')\n};\n\n({'textContent': getAttr('name'), 'style':style})\n\n\n"
								},
								"parser": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */\n({'name': getAttr('textContent')})"
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Text",
								"position": {
									"type": "list<double>",
									"value": [
										8,
										8
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								}
							},
							"99": {
								"textContent": {
									"type": "string",
									"value": "+ clock : int"
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"font-size": "14px",
										"font-style": "normal",
										"font-weight": "bold",
										"line-height": "100%",
										"letter-spacing": "0px",
										"word-spacing": "0px",
										"fill": "#000000",
										"fill-opacity": "1",
										"stroke": "none"
									}
								},
								"mapper": {
									"type": "code",
									"value": "var filenames = getAttr('attributes').map(\n            function(attr)\n            {\n                var s = '+ '+attr['name'] + ' : ' + attr['type'];\n                if (attr['default'])\n                    s += ' = ' + attr['default'];\n                return s;\n            });\n\n({'textContent': filenames.join('\\n')})"
								},
								"parser": {
									"type": "code",
									"value": ""
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Text",
								"position": {
									"type": "list<double>",
									"value": [
										10,
										41
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								}
							},
							"100": {
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Contain",
								"position": {
									"type": "list<double>",
									"value": [
										68.5,
										36.5
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								},
								"link-style": {
									"type": "map<string,string>",
									"value": {
										"stroke": "#00ffff",
										"stroke-dasharray": "",
										"stroke-opacity": 0.1,
										"stroke-width": 1
									}
								}
							},
							"101": {
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Contain",
								"position": {
									"type": "list<double>",
									"value": [
										12.5,
										27
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								},
								"link-style": {
									"type": "map<string,string>",
									"value": {
										"stroke": "#00ffff",
										"stroke-dasharray": "",
										"stroke-opacity": 0.1,
										"stroke-width": 1
									}
								}
							},
							"102": {
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Contain",
								"position": {
									"type": "list<double>",
									"value": [
										53.75,
										20
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								},
								"link-style": {
									"type": "map<string,string>",
									"value": {
										"stroke": "#00ffff",
										"stroke-dasharray": "",
										"stroke-opacity": 0.1,
										"stroke-width": 1
									}
								}
							}
						},
						"edges": [
							{
								"src": "96",
								"dest": "100"
							},
							{
								"src": "100",
								"dest": "98"
							},
							{
								"src": "96",
								"dest": "101"
							},
							{
								"src": "101",
								"dest": "99"
							},
							{
								"src": "96",
								"dest": "102"
							},
							{
								"src": "102",
								"dest": "97"
							}
						]
					}
				},
				"$asuri": {
					"type": "string",
					"value": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram/Class/21.instance"
				},
				"$type": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram.umlIcons/ClassIcon"
			},
			"34": {
				"typename": {
					"type": "string",
					"value": "ClassIcon"
				},
				"position": {
					"type": "list<double>",
					"value": [
						725,
						203
					]
				},
				"orientation": {
					"type": "double",
					"value": 0
				},
				"scale": {
					"type": "list<double>",
					"value": [
						1,
						1
					]
				},
				"mapper": {
					"type": "code",
					"value": "/* specify code that evaluates to an associative array of the form {...,csattr:val,...} */"
				},
				"parser": {
					"type": "code",
					"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */"
				},
				"$contents": {
					"type": "map<string,*>",
					"value": {
						"nodes": {
							"96": {
								"width": {
									"type": "double",
									"value": 200
								},
								"height": {
									"type": "double",
									"value": 125
								},
								"cornerRadius": {
									"type": "double",
									"value": 0
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"stroke": "#000000",
										"stroke-dasharray": "",
										"fill": "#ffffff",
										"fill-opacity": 0.75,
										"stroke-width": 2
									}
								},
								"mapper": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,csattr:val,...} */"
								},
								"parser": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */"
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Rectangle",
								"position": {
									"type": "list<double>",
									"value": [
										4,
										3
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								}
							},
							"97": {
								"segments": {
									"type": "string",
									"value": "m0,0l197,0"
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"stroke": "#000000",
										"stroke-dasharray": "",
										"fill": "#ffffff",
										"fill-opacity": 0.75,
										"font-size": "20px",
										"stroke-width": 2,
										"arrow-start": "none",
										"arrow-end": "none"
									}
								},
								"mapper": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,csattr:val,...} */"
								},
								"parser": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */"
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Path",
								"position": {
									"type": "list<double>",
									"value": [
										6,
										36
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								}
							},
							"98": {
								"textContent": {
									"type": "string",
									"value": "AbstractInterrupt"
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"font-size": "18px",
										"font-style": "italic",
										"font-weight": "bold",
										"line-height": "100%",
										"letter-spacing": "0px",
										"word-spacing": "0px",
										"fill": "#000000",
										"fill-opacity": "1",
										"stroke": "none"
									}
								},
								"mapper": {
									"type": "code",
									"value": "var style = \n{\n   \"font-size\": \"18px\",\n   \"font-style\": \"normal\",\n   \"font-weight\": \"bold\",\n   \"line-height\": \"100%\",\n   \"letter-spacing\": \"0px\",\n   \"word-spacing\": \"0px\",\n   \"fill\": \"#000000\",\n   \"fill-opacity\": \"1\",\n   \"stroke\": \"none\",\n       \"font-style\": (getAttr('abstract') ? 'italic' : 'normal')\n};\n\n({'textContent': getAttr('name'), 'style':style})\n\n\n"
								},
								"parser": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */\n({'name': getAttr('textContent')})"
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Text",
								"position": {
									"type": "list<double>",
									"value": [
										8,
										8
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								}
							},
							"99": {
								"textContent": {
									"type": "string",
									"value": "+ current : boolean"
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"font-size": "14px",
										"font-style": "normal",
										"font-weight": "bold",
										"line-height": "100%",
										"letter-spacing": "0px",
										"word-spacing": "0px",
										"fill": "#000000",
										"fill-opacity": "1",
										"stroke": "none"
									}
								},
								"mapper": {
									"type": "code",
									"value": "var filenames = getAttr('attributes').map(\n            function(attr)\n            {\n                var s = '+ '+attr['name'] + ' : ' + attr['type'];\n                if (attr['default'])\n                    s += ' = ' + attr['default'];\n                return s;\n            });\n\n({'textContent': filenames.join('\\n')})"
								},
								"parser": {
									"type": "code",
									"value": ""
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Text",
								"position": {
									"type": "list<double>",
									"value": [
										10,
										41
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								}
							},
							"100": {
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Contain",
								"position": {
									"type": "list<double>",
									"value": [
										68.5,
										36.5
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								},
								"link-style": {
									"type": "map<string,string>",
									"value": {
										"stroke": "#00ffff",
										"stroke-dasharray": "",
										"stroke-opacity": 0.1,
										"stroke-width": 1
									}
								}
							},
							"101": {
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Contain",
								"position": {
									"type": "list<double>",
									"value": [
										12.5,
										27
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								},
								"link-style": {
									"type": "map<string,string>",
									"value": {
										"stroke": "#00ffff",
										"stroke-dasharray": "",
										"stroke-opacity": 0.1,
										"stroke-width": 1
									}
								}
							},
							"102": {
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Contain",
								"position": {
									"type": "list<double>",
									"value": [
										53.75,
										20
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								},
								"link-style": {
									"type": "map<string,string>",
									"value": {
										"stroke": "#00ffff",
										"stroke-dasharray": "",
										"stroke-opacity": 0.1,
										"stroke-width": 1
									}
								}
							}
						},
						"edges": [
							{
								"src": "96",
								"dest": "100"
							},
							{
								"src": "100",
								"dest": "98"
							},
							{
								"src": "96",
								"dest": "101"
							},
							{
								"src": "101",
								"dest": "99"
							},
							{
								"src": "96",
								"dest": "102"
							},
							{
								"src": "102",
								"dest": "97"
							}
						]
					}
				},
				"$asuri": {
					"type": "string",
					"value": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram/Class/22.instance"
				},
				"$type": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram.umlIcons/ClassIcon"
			},
			"35": {
				"link-style": {
					"type": "map<string,string>",
					"value": {
						"stroke": "#000000",
						"stroke-dasharray": "",
						"stroke-opacity": 1,
						"stroke-width": 2
					}
				},
				"arrowHead": {
					"type": "ENUM(circle-black,circle-black-large,circle-white,circle-white-large,diamond-black,diamond-black-large,diamond-white,diamond-white-large,triangle-black,triangle-black-large,triangle-white,triangle-white-large,arrow-black,arrow-black-large,arrow-empty,arrow-empty-large,custom)",
					"value": "custom"
				},
				"arrowTail": {
					"type": "ENUM(circle-black,circle-black-large,circle-white,circle-white-large,diamond-black,diamond-black-large,diamond-white,diamond-white-large,triangle-black,triangle-black-large,triangle-white,triangle-white-large,arrow-black,arrow-black-large,arrow-empty,arrow-empty-large,custom)",
					"value": "arrow-black"
				},
				"typename": {
					"type": "string",
					"value": "AssociationLink"
				},
				"position": {
					"type": "list<double>",
					"value": [
						764.0966941268182,
						376.3847108487938
					]
				},
				"orientation": {
					"type": "double",
					"value": 0
				},
				"scale": {
					"type": "list<double>",
					"value": [
						1,
						1
					]
				},
				"mapper": {
					"type": "code",
					"value": "/* specify code that evaluates to an associative array of the form {...,csattr:val,...} */"
				},
				"parser": {
					"type": "code",
					"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */"
				},
				"$contents": {
					"type": "map<string,*>",
					"value": {
						"nodes": {
							"71": {
								"textContent": {
									"type": "string",
									"value": "Next"
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"font-size": "20px",
										"font-style": "normal",
										"font-weight": "normal",
										"line-height": "100%",
										"letter-spacing": "0px",
										"word-spacing": "0px",
										"fill": "#000000",
										"fill-opacity": "1",
										"stroke": "none",
										"font-family": "Sans"
									}
								},
								"mapper": {
									"type": "code",
									"value": "({'textContent':getAttr('name')})"
								},
								"parser": {
									"type": "code",
									"value": "({'name':getAttr('textContent')})"
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Text",
								"position": {
									"type": "list<double>",
									"value": [
										"0;-28.596694126818193,0%",
										"0;58.71344866040863,0%"
									]
								},
								"orientation": {
									"type": "double",
									"value": "0;-90"
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								},
								"$linkDecoratorInfo": {
									"type": "map<string,double>",
									"value": {
										"xratio": 0.3803680981595092,
										"yoffset": -28.5
									}
								}
							},
							"74": {
								"textContent": {
									"type": "string",
									"value": "0..1"
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"font-size": "20px",
										"font-style": "normal",
										"font-weight": "normal",
										"line-height": "100%",
										"letter-spacing": "0px",
										"word-spacing": "0px",
										"fill": "#000000",
										"fill-opacity": "1",
										"stroke": "none",
										"font-family": "Sans"
									}
								},
								"mapper": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,csattr:val,...} */\nvar clazz = getNeighbors('>'),\n    mult = '';\nif (clazz.length > 0) {\n    clazz = clazz[0];\n    var cardinalities = getAttr('cardinalities', clazz), card;\n    for (i = 0; i < cardinalities.length; i++) {\n        if (cardinalities[i]['type'] == getAttr('name') && cardinalities[i]['dir'] == 'in') {\n            card = cardinalities[i];\n            break;\n        }\n    }\n    if (card) {\n        var min = card['min'],\n            max = card['max'];\n        if (min == '')\n            min = '0';\n        if (max == '' || max == 'Infinity')\n            max = '*';\n        if (min == '0' && max == '*')\n            mult = '*';\n        else if (min == max)\n            mult = max;\n        else mult = min + '..' + max;\n    }\n}\nif (mult == '')\n    mult = '*';\n({'textContent': mult})"
								},
								"parser": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */"
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Text",
								"position": {
									"type": "list<double>",
									"value": [
										"0;-25.596694126818193,0%",
										"0;112.30854068494853,0%"
									]
								},
								"orientation": {
									"type": "double",
									"value": "0;-90"
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								},
								"$linkDecoratorInfo": {
									"type": "map<string,double>",
									"value": {
										"xratio": 0.06134969325153374,
										"yoffset": -25.5
									}
								}
							},
							"77": {
								"textContent": {
									"type": "string",
									"value": "0..1"
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"font-size": "20px",
										"font-style": "normal",
										"font-weight": "normal",
										"line-height": "100%",
										"letter-spacing": "0px",
										"word-spacing": "0px",
										"fill": "#000000",
										"fill-opacity": "1",
										"stroke": "none",
										"font-family": "Sans"
									}
								},
								"mapper": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,csattr:val,...} */\nvar clazz = getNeighbors('<'),\n    mult = '';\nif (clazz.length > 0) {\n    clazz = clazz[0];\n    var cardinalities = getAttr('cardinalities', clazz), card;\n    for (i = 0; i < cardinalities.length; i++) {\n        if (cardinalities[i]['type'] == getAttr('name') && cardinalities[i]['dir'] == 'out') {\n            card = cardinalities[i];\n            break;\n        }\n    }\n    if (card) {\n        var min = card['min'],\n            max = card['max'];\n        if (min == '')\n            min = '0';\n        if (max == '' || max == 'Infinity')\n            max = '*';\n        if (min == '0' && max == '*')\n            mult = '*';\n        else if (min == max)\n            mult = max;\n        else mult = min + '..' + max;\n    }\n}\nif (mult == '')\n    mult = '*';\n({'textContent': mult})"
								},
								"parser": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */"
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Text",
								"position": {
									"type": "list<double>",
									"value": [
										"0;-23.596694126818193,6.123233995736766e-15%",
										"0;-45.384710848793816,-100%"
									]
								},
								"orientation": {
									"type": "double",
									"value": "0;-90"
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								},
								"$linkDecoratorInfo": {
									"type": "map<string,double>",
									"value": {
										"xratio": 1.0245398773006136,
										"yoffset": -23.5
									}
								}
							},
							"140": {
								"segments": {
									"type": "string",
									"value": "m0,0 l20,8 l-20,8"
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"stroke": "#000000",
										"fill": "#000000",
										"fill-opacity": 0,
										"stroke-width": 1,
										"opacity": 1
									}
								},
								"mapper": {
									"type": "code",
									"value": ""
								},
								"parser": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */"
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Path",
								"position": {
									"type": "list<double>",
									"value": [
										"0;-8.096694126818193,6.123233995736766e-15%",
										"0;-45.384710848793816,-100%"
									]
								},
								"orientation": {
									"type": "double",
									"value": "0;-90"
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								},
								"$linkDecoratorInfo": {
									"type": "map<string,double>",
									"value": {
										"xratio": 1,
										"yoffset": -8
									}
								}
							}
						},
						"edges": []
					}
				},
				"$asuri": {
					"type": "string",
					"value": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram/Association/23.instance"
				},
				"$segments": {
					"type": "map<string,list<string>>",
					"value": {
						"/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram.umlIcons/ClassIcon/30.instance--/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram.umlIcons/AssociationLink/35.instance": "M764,499L764,376",
						"/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram.umlIcons/AssociationLink/35.instance--/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram.umlIcons/ClassIcon/34.instance": "M764,376L764,331"
					}
				},
				"$type": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram.umlIcons/AssociationLink"
			},
			"36": {
				"typename": {
					"type": "string",
					"value": "ClassIcon"
				},
				"position": {
					"type": "list<double>",
					"value": [
						856,
						496
					]
				},
				"orientation": {
					"type": "double",
					"value": 0
				},
				"scale": {
					"type": "list<double>",
					"value": [
						1,
						1
					]
				},
				"mapper": {
					"type": "code",
					"value": "/* specify code that evaluates to an associative array of the form {...,csattr:val,...} */"
				},
				"parser": {
					"type": "code",
					"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */"
				},
				"$contents": {
					"type": "map<string,*>",
					"value": {
						"nodes": {
							"96": {
								"width": {
									"type": "double",
									"value": 200
								},
								"height": {
									"type": "double",
									"value": 125
								},
								"cornerRadius": {
									"type": "double",
									"value": 0
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"stroke": "#000000",
										"stroke-dasharray": "",
										"fill": "#ffffff",
										"fill-opacity": 0.75,
										"stroke-width": 2
									}
								},
								"mapper": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,csattr:val,...} */"
								},
								"parser": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */"
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Rectangle",
								"position": {
									"type": "list<double>",
									"value": [
										4,
										3
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								}
							},
							"97": {
								"segments": {
									"type": "string",
									"value": "m0,0l197,0"
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"stroke": "#000000",
										"stroke-dasharray": "",
										"fill": "#ffffff",
										"fill-opacity": 0.75,
										"font-size": "20px",
										"stroke-width": 2,
										"arrow-start": "none",
										"arrow-end": "none"
									}
								},
								"mapper": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,csattr:val,...} */"
								},
								"parser": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */"
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Path",
								"position": {
									"type": "list<double>",
									"value": [
										6,
										36
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								}
							},
							"98": {
								"textContent": {
									"type": "string",
									"value": "End"
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"font-size": "18px",
										"font-style": "normal",
										"font-weight": "bold",
										"line-height": "100%",
										"letter-spacing": "0px",
										"word-spacing": "0px",
										"fill": "#000000",
										"fill-opacity": "1",
										"stroke": "none"
									}
								},
								"mapper": {
									"type": "code",
									"value": "var style = \n{\n   \"font-size\": \"18px\",\n   \"font-style\": \"normal\",\n   \"font-weight\": \"bold\",\n   \"line-height\": \"100%\",\n   \"letter-spacing\": \"0px\",\n   \"word-spacing\": \"0px\",\n   \"fill\": \"#000000\",\n   \"fill-opacity\": \"1\",\n   \"stroke\": \"none\",\n       \"font-style\": (getAttr('abstract') ? 'italic' : 'normal')\n};\n\n({'textContent': getAttr('name'), 'style':style})\n\n\n"
								},
								"parser": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */\n({'name': getAttr('textContent')})"
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Text",
								"position": {
									"type": "list<double>",
									"value": [
										8,
										8
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								}
							},
							"99": {
								"textContent": {
									"type": "string",
									"value": ""
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"font-size": "14px",
										"font-style": "normal",
										"font-weight": "bold",
										"line-height": "100%",
										"letter-spacing": "0px",
										"word-spacing": "0px",
										"fill": "#000000",
										"fill-opacity": "1",
										"stroke": "none"
									}
								},
								"mapper": {
									"type": "code",
									"value": "var filenames = getAttr('attributes').map(\n            function(attr)\n            {\n                var s = '+ '+attr['name'] + ' : ' + attr['type'];\n                if (attr['default'])\n                    s += ' = ' + attr['default'];\n                return s;\n            });\n\n({'textContent': filenames.join('\\n')})"
								},
								"parser": {
									"type": "code",
									"value": ""
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Text",
								"position": {
									"type": "list<double>",
									"value": [
										10,
										41
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								}
							},
							"100": {
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Contain",
								"position": {
									"type": "list<double>",
									"value": [
										68.5,
										36.5
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								},
								"link-style": {
									"type": "map<string,string>",
									"value": {
										"stroke": "#00ffff",
										"stroke-dasharray": "",
										"stroke-opacity": 0.1,
										"stroke-width": 1
									}
								}
							},
							"101": {
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Contain",
								"position": {
									"type": "list<double>",
									"value": [
										12.5,
										27
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								},
								"link-style": {
									"type": "map<string,string>",
									"value": {
										"stroke": "#00ffff",
										"stroke-dasharray": "",
										"stroke-opacity": 0.1,
										"stroke-width": 1
									}
								}
							},
							"102": {
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Contain",
								"position": {
									"type": "list<double>",
									"value": [
										53.75,
										20
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								},
								"link-style": {
									"type": "map<string,string>",
									"value": {
										"stroke": "#00ffff",
										"stroke-dasharray": "",
										"stroke-opacity": 0.1,
										"stroke-width": 1
									}
								}
							}
						},
						"edges": [
							{
								"src": "96",
								"dest": "100"
							},
							{
								"src": "100",
								"dest": "98"
							},
							{
								"src": "96",
								"dest": "101"
							},
							{
								"src": "101",
								"dest": "99"
							},
							{
								"src": "96",
								"dest": "102"
							},
							{
								"src": "102",
								"dest": "97"
							}
						]
					}
				},
				"$asuri": {
					"type": "string",
					"value": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram/Class/24.instance"
				},
				"$type": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram.umlIcons/ClassIcon"
			},
			"37": {
				"link-style": {
					"type": "map<string,string>",
					"value": {
						"stroke": "#000000",
						"stroke-dasharray": "",
						"stroke-opacity": 1,
						"stroke-width": 2
					}
				},
				"arrowHead": {
					"type": "ENUM(circle-black,circle-black-large,circle-white,circle-white-large,diamond-black,diamond-black-large,diamond-white,diamond-white-large,triangle-black,triangle-black-large,triangle-white,triangle-white-large,arrow-black,arrow-black-large,arrow-empty,arrow-empty-large,custom)",
					"value": "custom"
				},
				"arrowTail": {
					"type": "ENUM(circle-black,circle-black-large,circle-white,circle-white-large,diamond-black,diamond-black-large,diamond-white,diamond-white-large,triangle-black,triangle-black-large,triangle-white,triangle-white-large,arrow-black,arrow-black-large,arrow-empty,arrow-empty-large,custom)",
					"value": "arrow-black"
				},
				"typename": {
					"type": "string",
					"value": "InheritanceLink"
				},
				"position": {
					"type": "list<double>",
					"value": [
						797.5749998647917,
						372.3691862823399
					]
				},
				"orientation": {
					"type": "double",
					"value": 0
				},
				"scale": {
					"type": "list<double>",
					"value": [
						1,
						1
					]
				},
				"mapper": {
					"type": "code",
					"value": "/* specify code that evaluates to an associative array of the form {...,csattr:val,...} */"
				},
				"parser": {
					"type": "code",
					"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */"
				},
				"$contents": {
					"type": "map<string,*>",
					"value": {
						"nodes": {
							"164": {
								"segments": {
									"type": "string",
									"value": "m0,0 l20,10 l-20,10 z"
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"stroke": "#000000",
										"fill": "#ffffff",
										"opacity": 1,
										"stroke-width": 1
									}
								},
								"mapper": {
									"type": "code",
									"value": ""
								},
								"parser": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */"
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Path",
								"position": {
									"type": "list<double>",
									"value": [
										"0;-10.574999864791721,6.123233995736766e-15%",
										"0;-41.36918628233991,-100%"
									]
								},
								"orientation": {
									"type": "double",
									"value": "0;-90"
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								},
								"$linkDecoratorInfo": {
									"type": "map<string,double>",
									"value": {
										"xratio": 1,
										"yoffset": -10
									}
								}
							}
						},
						"edges": []
					}
				},
				"$asuri": {
					"type": "string",
					"value": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram/Inheritance/25.instance"
				},
				"$segments": {
					"type": "map<string,list<string>>",
					"value": {
						"/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram.umlIcons/ClassIcon/30.instance--/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram.umlIcons/InheritanceLink/37.instance": "M797,500L797,372",
						"/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram.umlIcons/InheritanceLink/37.instance--/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram.umlIcons/ClassIcon/34.instance": "M797,372L797,331"
					}
				},
				"$type": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram.umlIcons/InheritanceLink"
			},
			"38": {
				"link-style": {
					"type": "map<string,string>",
					"value": {
						"stroke": "#000000",
						"stroke-dasharray": "",
						"stroke-opacity": 1,
						"stroke-width": 2
					}
				},
				"arrowHead": {
					"type": "ENUM(circle-black,circle-black-large,circle-white,circle-white-large,diamond-black,diamond-black-large,diamond-white,diamond-white-large,triangle-black,triangle-black-large,triangle-white,triangle-white-large,arrow-black,arrow-black-large,arrow-empty,arrow-empty-large,custom)",
					"value": "custom"
				},
				"arrowTail": {
					"type": "ENUM(circle-black,circle-black-large,circle-white,circle-white-large,diamond-black,diamond-black-large,diamond-white,diamond-white-large,triangle-black,triangle-black-large,triangle-white,triangle-white-large,arrow-black,arrow-black-large,arrow-empty,arrow-empty-large,custom)",
					"value": "arrow-black"
				},
				"typename": {
					"type": "string",
					"value": "InheritanceLink"
				},
				"position": {
					"type": "list<double>",
					"value": [
						892.4159342012896,
						372.87472547643154
					]
				},
				"orientation": {
					"type": "double",
					"value": 0
				},
				"scale": {
					"type": "list<double>",
					"value": [
						1,
						1
					]
				},
				"mapper": {
					"type": "code",
					"value": "/* specify code that evaluates to an associative array of the form {...,csattr:val,...} */"
				},
				"parser": {
					"type": "code",
					"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */"
				},
				"$contents": {
					"type": "map<string,*>",
					"value": {
						"nodes": {
							"164": {
								"segments": {
									"type": "string",
									"value": "m0,0 l20,10 l-20,10 z"
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"stroke": "#000000",
										"fill": "#ffffff",
										"opacity": 1,
										"stroke-width": 1
									}
								},
								"mapper": {
									"type": "code",
									"value": ""
								},
								"parser": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */"
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Path",
								"position": {
									"type": "list<double>",
									"value": [
										"0;-10.415934201289588,6.123233995736766e-15%",
										"0;-40.874725476431536,-100%"
									]
								},
								"orientation": {
									"type": "double",
									"value": "0;-90"
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								},
								"$linkDecoratorInfo": {
									"type": "map<string,double>",
									"value": {
										"xratio": 1,
										"yoffset": -10
									}
								}
							}
						},
						"edges": []
					}
				},
				"$asuri": {
					"type": "string",
					"value": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram/Inheritance/26.instance"
				},
				"$segments": {
					"type": "map<string,list<string>>",
					"value": {
						"/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram.umlIcons/ClassIcon/36.instance--/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram.umlIcons/InheritanceLink/38.instance": "M892,499L892,372",
						"/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram.umlIcons/InheritanceLink/38.instance--/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram.umlIcons/ClassIcon/34.instance": "M892,372L892,332"
					}
				},
				"$type": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram.umlIcons/InheritanceLink"
			},
			"39": {
				"typename": {
					"type": "string",
					"value": "ClassIcon"
				},
				"position": {
					"type": "list<double>",
					"value": [
						238,
						497.2672713745117
					]
				},
				"orientation": {
					"type": "double",
					"value": 0
				},
				"scale": {
					"type": "list<double>",
					"value": [
						1,
						1
					]
				},
				"mapper": {
					"type": "code",
					"value": "/* specify code that evaluates to an associative array of the form {...,csattr:val,...} */"
				},
				"parser": {
					"type": "code",
					"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */"
				},
				"$contents": {
					"type": "map<string,*>",
					"value": {
						"nodes": {
							"96": {
								"width": {
									"type": "double",
									"value": 200
								},
								"height": {
									"type": "double",
									"value": 125
								},
								"cornerRadius": {
									"type": "double",
									"value": 0
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"stroke": "#000000",
										"stroke-dasharray": "",
										"fill": "#ffffff",
										"fill-opacity": 0.75,
										"stroke-width": 2
									}
								},
								"mapper": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,csattr:val,...} */"
								},
								"parser": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */"
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Rectangle",
								"position": {
									"type": "list<double>",
									"value": [
										4,
										3
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								}
							},
							"97": {
								"segments": {
									"type": "string",
									"value": "m0,0l197,0"
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"stroke": "#000000",
										"stroke-dasharray": "",
										"fill": "#ffffff",
										"fill-opacity": 0.75,
										"font-size": "20px",
										"stroke-width": 2,
										"arrow-start": "none",
										"arrow-end": "none"
									}
								},
								"mapper": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,csattr:val,...} */"
								},
								"parser": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */"
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Path",
								"position": {
									"type": "list<double>",
									"value": [
										6,
										36
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								}
							},
							"98": {
								"textContent": {
									"type": "string",
									"value": "Visualisation"
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"font-size": "18px",
										"font-style": "normal",
										"font-weight": "bold",
										"line-height": "100%",
										"letter-spacing": "0px",
										"word-spacing": "0px",
										"fill": "#000000",
										"fill-opacity": "1",
										"stroke": "none"
									}
								},
								"mapper": {
									"type": "code",
									"value": "var style = \n{\n   \"font-size\": \"18px\",\n   \"font-style\": \"normal\",\n   \"font-weight\": \"bold\",\n   \"line-height\": \"100%\",\n   \"letter-spacing\": \"0px\",\n   \"word-spacing\": \"0px\",\n   \"fill\": \"#000000\",\n   \"fill-opacity\": \"1\",\n   \"stroke\": \"none\",\n       \"font-style\": (getAttr('abstract') ? 'italic' : 'normal')\n};\n\n({'textContent': getAttr('name'), 'style':style})\n\n\n"
								},
								"parser": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */\n({'name': getAttr('textContent')})"
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Text",
								"position": {
									"type": "list<double>",
									"value": [
										8,
										8
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								}
							},
							"99": {
								"textContent": {
									"type": "string",
									"value": "+ red : boolean\n+ yellow : boolean\n+ green : boolean"
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"font-size": "14px",
										"font-style": "normal",
										"font-weight": "bold",
										"line-height": "100%",
										"letter-spacing": "0px",
										"word-spacing": "0px",
										"fill": "#000000",
										"fill-opacity": "1",
										"stroke": "none"
									}
								},
								"mapper": {
									"type": "code",
									"value": "var filenames = getAttr('attributes').map(\n            function(attr)\n            {\n                var s = '+ '+attr['name'] + ' : ' + attr['type'];\n                if (attr['default'])\n                    s += ' = ' + attr['default'];\n                return s;\n            });\n\n({'textContent': filenames.join('\\n')})"
								},
								"parser": {
									"type": "code",
									"value": ""
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Text",
								"position": {
									"type": "list<double>",
									"value": [
										10,
										41
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								}
							},
							"100": {
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Contain",
								"position": {
									"type": "list<double>",
									"value": [
										68.5,
										36.5
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								},
								"link-style": {
									"type": "map<string,string>",
									"value": {
										"stroke": "#00ffff",
										"stroke-dasharray": "",
										"stroke-opacity": 0.1,
										"stroke-width": 1
									}
								}
							},
							"101": {
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Contain",
								"position": {
									"type": "list<double>",
									"value": [
										12.5,
										27
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								},
								"link-style": {
									"type": "map<string,string>",
									"value": {
										"stroke": "#00ffff",
										"stroke-dasharray": "",
										"stroke-opacity": 0.1,
										"stroke-width": 1
									}
								}
							},
							"102": {
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Contain",
								"position": {
									"type": "list<double>",
									"value": [
										53.75,
										20
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								},
								"link-style": {
									"type": "map<string,string>",
									"value": {
										"stroke": "#00ffff",
										"stroke-dasharray": "",
										"stroke-opacity": 0.1,
										"stroke-width": 1
									}
								}
							}
						},
						"edges": [
							{
								"src": "96",
								"dest": "100"
							},
							{
								"src": "100",
								"dest": "98"
							},
							{
								"src": "96",
								"dest": "101"
							},
							{
								"src": "101",
								"dest": "99"
							},
							{
								"src": "96",
								"dest": "102"
							},
							{
								"src": "102",
								"dest": "97"
							}
						]
					}
				},
				"$asuri": {
					"type": "string",
					"value": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram/Class/27.instance"
				},
				"$type": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram.umlIcons/ClassIcon"
			},
			"40": {
				"link-style": {
					"type": "map<string,string>",
					"value": {
						"stroke": "#000000",
						"stroke-dasharray": "",
						"stroke-opacity": 1,
						"stroke-width": 2
					}
				},
				"arrowHead": {
					"type": "ENUM(circle-black,circle-black-large,circle-white,circle-white-large,diamond-black,diamond-black-large,diamond-white,diamond-white-large,triangle-black,triangle-black-large,triangle-white,triangle-white-large,arrow-black,arrow-black-large,arrow-empty,arrow-empty-large,custom)",
					"value": "custom"
				},
				"arrowTail": {
					"type": "ENUM(circle-black,circle-black-large,circle-white,circle-white-large,diamond-black,diamond-black-large,diamond-white,diamond-white-large,triangle-black,triangle-black-large,triangle-white,triangle-white-large,arrow-black,arrow-black-large,arrow-empty,arrow-empty-large,custom)",
					"value": "arrow-black"
				},
				"typename": {
					"type": "string",
					"value": "AssociationLink"
				},
				"position": {
					"type": "list<double>",
					"value": [
						331.5,
						410.0034713745117
					]
				},
				"orientation": {
					"type": "double",
					"value": 0
				},
				"scale": {
					"type": "list<double>",
					"value": [
						1,
						1
					]
				},
				"mapper": {
					"type": "code",
					"value": "/* specify code that evaluates to an associative array of the form {...,csattr:val,...} */"
				},
				"parser": {
					"type": "code",
					"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */"
				},
				"$contents": {
					"type": "map<string,*>",
					"value": {
						"nodes": {
							"71": {
								"textContent": {
									"type": "string",
									"value": "VisualisedBy"
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"font-size": "20px",
										"font-style": "normal",
										"font-weight": "normal",
										"line-height": "100%",
										"letter-spacing": "0px",
										"word-spacing": "0px",
										"fill": "#000000",
										"fill-opacity": "1",
										"stroke": "none",
										"font-family": "Sans"
									}
								},
								"mapper": {
									"type": "code",
									"value": "({'textContent':getAttr('name')})"
								},
								"parser": {
									"type": "code",
									"value": "({'name':getAttr('textContent')})"
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Text",
								"position": {
									"type": "list<double>",
									"value": [
										"0;28,0%",
										"0;-17.623103276352197,0%"
									]
								},
								"orientation": {
									"type": "double",
									"value": "0;90"
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								},
								"$linkDecoratorInfo": {
									"type": "map<string,double>",
									"value": {
										"xratio": 0.3803680981595092,
										"yoffset": -28.5
									}
								}
							},
							"74": {
								"textContent": {
									"type": "string",
									"value": "*"
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"font-size": "20px",
										"font-style": "normal",
										"font-weight": "normal",
										"line-height": "100%",
										"letter-spacing": "0px",
										"word-spacing": "0px",
										"fill": "#000000",
										"fill-opacity": "1",
										"stroke": "none",
										"font-family": "Sans"
									}
								},
								"mapper": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,csattr:val,...} */\nvar clazz = getNeighbors('>'),\n    mult = '';\nif (clazz.length > 0) {\n    clazz = clazz[0];\n    var cardinalities = getAttr('cardinalities', clazz), card;\n    for (i = 0; i < cardinalities.length; i++) {\n        if (cardinalities[i]['type'] == getAttr('name') && cardinalities[i]['dir'] == 'in') {\n            card = cardinalities[i];\n            break;\n        }\n    }\n    if (card) {\n        var min = card['min'],\n            max = card['max'];\n        if (min == '')\n            min = '0';\n        if (max == '' || max == 'Infinity')\n            max = '*';\n        if (min == '0' && max == '*')\n            mult = '*';\n        else if (min == max)\n            mult = max;\n        else mult = min + '..' + max;\n    }\n}\nif (mult == '')\n    mult = '*';\n({'textContent': mult})"
								},
								"parser": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */"
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Text",
								"position": {
									"type": "list<double>",
									"value": [
										"0;25,0%",
										"0;-69.94212168126018,0%"
									]
								},
								"orientation": {
									"type": "double",
									"value": "0;90"
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								},
								"$linkDecoratorInfo": {
									"type": "map<string,double>",
									"value": {
										"xratio": 0.06134969325153374,
										"yoffset": -25.5
									}
								}
							},
							"77": {
								"textContent": {
									"type": "string",
									"value": "1"
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"font-size": "20px",
										"font-style": "normal",
										"font-weight": "normal",
										"line-height": "100%",
										"letter-spacing": "0px",
										"word-spacing": "0px",
										"fill": "#000000",
										"fill-opacity": "1",
										"stroke": "none",
										"font-family": "Sans"
									}
								},
								"mapper": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,csattr:val,...} */\nvar clazz = getNeighbors('<'),\n    mult = '';\nif (clazz.length > 0) {\n    clazz = clazz[0];\n    var cardinalities = getAttr('cardinalities', clazz), card;\n    for (i = 0; i < cardinalities.length; i++) {\n        if (cardinalities[i]['type'] == getAttr('name') && cardinalities[i]['dir'] == 'out') {\n            card = cardinalities[i];\n            break;\n        }\n    }\n    if (card) {\n        var min = card['min'],\n            max = card['max'];\n        if (min == '')\n            min = '0';\n        if (max == '' || max == 'Infinity')\n            max = '*';\n        if (min == '0' && max == '*')\n            mult = '*';\n        else if (min == max)\n            mult = max;\n        else mult = min + '..' + max;\n    }\n}\nif (mult == '')\n    mult = '*';\n({'textContent': mult})"
								},
								"parser": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */"
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Text",
								"position": {
									"type": "list<double>",
									"value": [
										"0;23,6.123233995736766e-15%",
										"0;83.99652862548828,100%"
									]
								},
								"orientation": {
									"type": "double",
									"value": "0;90"
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								},
								"$linkDecoratorInfo": {
									"type": "map<string,double>",
									"value": {
										"xratio": 1.0245398773006136,
										"yoffset": -23.5
									}
								}
							},
							"140": {
								"segments": {
									"type": "string",
									"value": "m0,0 l20,8 l-20,8"
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"stroke": "#000000",
										"fill": "#000000",
										"fill-opacity": 0,
										"stroke-width": 1,
										"opacity": 1
									}
								},
								"mapper": {
									"type": "code",
									"value": ""
								},
								"parser": {
									"type": "code",
									"value": "/* specify code that evaluates to an associative array of the form {...,attr:val,...} */"
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Path",
								"position": {
									"type": "list<double>",
									"value": [
										"0;7.5,6.123233995736766e-15%",
										"0;83.99652862548828,100%"
									]
								},
								"orientation": {
									"type": "double",
									"value": "0;90"
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								},
								"$linkDecoratorInfo": {
									"type": "map<string,double>",
									"value": {
										"xratio": 1,
										"yoffset": -8
									}
								}
							}
						},
						"edges": []
					}
				},
				"$asuri": {
					"type": "string",
					"value": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram/Association/28.instance"
				},
				"$segments": {
					"type": "map<string,list<string>>",
					"value": {
						"/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram.umlIcons/ClassIcon/29.instance--/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram.umlIcons/AssociationLink/40.instance": "M331,330L331,410",
						"/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram.umlIcons/AssociationLink/40.instance--/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram.umlIcons/ClassIcon/39.instance": "M331,410L331,494"
					}
				},
				"$type": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram.umlIcons/AssociationLink"
			},
			"41": {
				"typename": {
					"type": "string",
					"value": "GlobalConstraintIcon"
				},
				"position": {
					"type": "list<double>",
					"value": [
						1308,
						489
					]
				},
				"orientation": {
					"type": "double",
					"value": 0
				},
				"scale": {
					"type": "list<double>",
					"value": [
						1,
						1
					]
				},
				"mapper": {
					"type": "code",
					"value": ""
				},
				"parser": {
					"type": "code",
					"value": ""
				},
				"$contents": {
					"type": "map<string,*>",
					"value": {
						"nodes": {
							"11": {
								"textContent": {
									"type": "string",
									"value": "check one-time-instance on validate"
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"stroke": "#00ff70",
										"stroke-dasharray": "",
										"fill": "#00ff70",
										"fill-opacity": 0.75,
										"font-size": "20px",
										"stroke-width": 1,
										"arrow-start": "none",
										"arrow-end": "none"
									}
								},
								"mapper": {
									"type": "code",
									"value": "({'textContent' : 'check '+getAttr('name')+' on '+(getAttr('event') || 'validate')})\n"
								},
								"parser": {
									"type": "code",
									"value": ""
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Text",
								"position": {
									"type": "list<double>",
									"value": [
										0,
										-1
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								}
							}
						},
						"edges": []
					}
				},
				"$asuri": {
					"type": "string",
					"value": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram/GlobalConstraint/29.instance"
				},
				"$type": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram.umlIcons/GlobalConstraintIcon"
			},
			"43": {
				"typename": {
					"type": "string",
					"value": "GlobalActionIcon"
				},
				"position": {
					"type": "list<double>",
					"value": [
						1354,
						299
					]
				},
				"orientation": {
					"type": "double",
					"value": 0
				},
				"scale": {
					"type": "list<double>",
					"value": [
						1,
						1
					]
				},
				"mapper": {
					"type": "code",
					"value": ""
				},
				"parser": {
					"type": "code",
					"value": ""
				},
				"$contents": {
					"type": "map<string,*>",
					"value": {
						"nodes": {
							"13": {
								"textContent": {
									"type": "string",
									"value": "do set-clock on post-create"
								},
								"style": {
									"type": "map<string,string>",
									"value": {
										"stroke": "#af00ff",
										"stroke-dasharray": "",
										"fill": "#af00ff",
										"fill-opacity": 0.75,
										"font-size": "20px",
										"stroke-width": 1,
										"arrow-start": "none",
										"arrow-end": "none"
									}
								},
								"mapper": {
									"type": "code",
									"value": "({'textContent' : 'do '+getAttr('name')+' on '+getAttr('event')})\n"
								},
								"parser": {
									"type": "code",
									"value": ""
								},
								"$type": "/Formalisms/__LanguageSyntax__/ConcreteSyntax/ConcreteSyntax/Text",
								"position": {
									"type": "list<double>",
									"value": [
										0,
										1
									]
								},
								"orientation": {
									"type": "double",
									"value": 0
								},
								"scale": {
									"type": "list<double>",
									"value": [
										1,
										1
									]
								}
							}
						},
						"edges": []
					}
				},
				"$asuri": {
					"type": "string",
					"value": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram/GlobalAction/31.instance"
				},
				"$type": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram.umlIcons/GlobalActionIcon"
			}
		},
		"edges": [],
		"metamodels": [
			"/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram.umlIcons"
		]
	},
	"asm": {
		"nodes": {
			"13": {
				"name": {
					"type": "string",
					"value": "State"
				},
				"attributes": {
					"type": "list<$ATTRIBUTE>",
					"value": [
						{
							"name": "name",
							"type": "string",
							"default": ""
						},
						{
							"name": "initial",
							"type": "boolean",
							"default": false
						},
						{
							"name": "current",
							"type": "boolean",
							"default": false
						}
					]
				},
				"constraints": {
					"type": "list<$EVENT_HANDLER>",
					"value": []
				},
				"actions": {
					"type": "list<$EVENT_HANDLER>",
					"value": []
				},
				"cardinalities": {
					"type": "list<$CARDINALITY>",
					"value": [
						{
							"dir": "out",
							"type": "TimedTransition",
							"min": 0,
							"max": 1
						},
						{
							"dir": "out",
							"type": "VisualisedBy",
							"min": 1,
							"max": 1
						}
					]
				},
				"abstract": {
					"type": "boolean",
					"value": false
				},
				"$type": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram/Class"
			},
			"16": {
				"name": {
					"type": "string",
					"value": "Interrupt"
				},
				"attributes": {
					"type": "list<$ATTRIBUTE>",
					"value": [
						{
							"name": "at",
							"type": "int",
							"default": 0
						},
						{
							"name": "event",
							"type": "string",
							"default": "E"
						}
					]
				},
				"constraints": {
					"type": "list<$EVENT_HANDLER>",
					"value": []
				},
				"actions": {
					"type": "list<$EVENT_HANDLER>",
					"value": []
				},
				"cardinalities": {
					"type": "list<$CARDINALITY>",
					"value": [
						{
							"dir": "out",
							"type": "Next",
							"min": "0",
							"max": "1"
						}
					]
				},
				"abstract": {
					"type": "boolean",
					"value": false
				},
				"$type": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram/Class"
			},
			"19": {
				"name": {
					"type": "string",
					"value": "TimedTransition"
				},
				"attributes": {
					"type": "list<$ATTRIBUTE>",
					"value": [
						{
							"name": "after",
							"type": "int",
							"default": 0
						}
					]
				},
				"constraints": {
					"type": "list<$EVENT_HANDLER>",
					"value": []
				},
				"actions": {
					"type": "list<$EVENT_HANDLER>",
					"value": []
				},
				"cardinalities": {
					"type": "list<$CARDINALITY>",
					"value": []
				},
				"linktype": {
					"type": "ENUM(visual,containment)",
					"value": "visual"
				},
				"$type": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram/Association"
			},
			"20": {
				"name": {
					"type": "string",
					"value": "InterruptTransition"
				},
				"attributes": {
					"type": "list<$ATTRIBUTE>",
					"value": [
						{
							"name": "interrupt",
							"type": "string",
							"default": "E"
						}
					]
				},
				"constraints": {
					"type": "list<$EVENT_HANDLER>",
					"value": []
				},
				"actions": {
					"type": "list<$EVENT_HANDLER>",
					"value": []
				},
				"cardinalities": {
					"type": "list<$CARDINALITY>",
					"value": []
				},
				"linktype": {
					"type": "ENUM(visual,containment)",
					"value": "visual"
				},
				"$type": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram/Association"
			},
			"21": {
				"name": {
					"type": "string",
					"value": "Time"
				},
				"attributes": {
					"type": "list<$ATTRIBUTE>",
					"value": [
						{
							"name": "clock",
							"type": "int",
							"default": 0
						}
					]
				},
				"constraints": {
					"type": "list<$EVENT_HANDLER>",
					"value": [
						{
							"name": "max-one-instance",
							"event": "pre-create",
							"code": "getAllNodes(['/Formalisms/TrafficLight/TrafficLight/Time']).length == 0"
						}
					]
				},
				"actions": {
					"type": "list<$EVENT_HANDLER>",
					"value": [
						{
							"name": "set-clock",
							"event": "post-create",
							"code": "setAttr('clock', 1)"
						}
					]
				},
				"cardinalities": {
					"type": "list<$CARDINALITY>",
					"value": []
				},
				"abstract": {
					"type": "boolean",
					"value": false
				},
				"$type": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram/Class"
			},
			"22": {
				"name": {
					"type": "string",
					"value": "AbstractInterrupt"
				},
				"attributes": {
					"type": "list<$ATTRIBUTE>",
					"value": [
						{
							"name": "current",
							"type": "boolean",
							"default": false
						}
					]
				},
				"constraints": {
					"type": "list<$EVENT_HANDLER>",
					"value": []
				},
				"actions": {
					"type": "list<$EVENT_HANDLER>",
					"value": []
				},
				"cardinalities": {
					"type": "list<$CARDINALITY>",
					"value": [
						{
							"dir": "in",
							"type": "Next",
							"min": "0",
							"max": "1"
						}
					]
				},
				"abstract": {
					"type": "boolean",
					"value": true
				},
				"$type": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram/Class"
			},
			"23": {
				"name": {
					"type": "string",
					"value": "Next"
				},
				"attributes": {
					"type": "list<$ATTRIBUTE>",
					"value": []
				},
				"constraints": {
					"type": "list<$EVENT_HANDLER>",
					"value": []
				},
				"actions": {
					"type": "list<$EVENT_HANDLER>",
					"value": []
				},
				"cardinalities": {
					"type": "list<$CARDINALITY>",
					"value": []
				},
				"linktype": {
					"type": "ENUM(visual,containment)",
					"value": "visual"
				},
				"$type": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram/Association"
			},
			"24": {
				"name": {
					"type": "string",
					"value": "End"
				},
				"attributes": {
					"type": "list<$ATTRIBUTE>",
					"value": []
				},
				"constraints": {
					"type": "list<$EVENT_HANDLER>",
					"value": []
				},
				"actions": {
					"type": "list<$EVENT_HANDLER>",
					"value": []
				},
				"cardinalities": {
					"type": "list<$CARDINALITY>",
					"value": []
				},
				"abstract": {
					"type": "boolean",
					"value": false
				},
				"$type": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram/Class"
			},
			"25": {
				"$type": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram/Inheritance"
			},
			"26": {
				"$type": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram/Inheritance"
			},
			"27": {
				"name": {
					"type": "string",
					"value": "Visualisation"
				},
				"attributes": {
					"type": "list<$ATTRIBUTE>",
					"value": [
						{
							"name": "red",
							"type": "boolean",
							"default": false
						},
						{
							"name": "yellow",
							"type": "boolean",
							"default": false
						},
						{
							"name": "green",
							"type": "boolean",
							"default": false
						}
					]
				},
				"constraints": {
					"type": "list<$EVENT_HANDLER>",
					"value": []
				},
				"actions": {
					"type": "list<$EVENT_HANDLER>",
					"value": []
				},
				"cardinalities": {
					"type": "list<$CARDINALITY>",
					"value": []
				},
				"abstract": {
					"type": "boolean",
					"value": false
				},
				"$type": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram/Class"
			},
			"28": {
				"name": {
					"type": "string",
					"value": "VisualisedBy"
				},
				"attributes": {
					"type": "list<$ATTRIBUTE>",
					"value": []
				},
				"constraints": {
					"type": "list<$EVENT_HANDLER>",
					"value": []
				},
				"actions": {
					"type": "list<$EVENT_HANDLER>",
					"value": []
				},
				"cardinalities": {
					"type": "list<$CARDINALITY>",
					"value": []
				},
				"linktype": {
					"type": "ENUM(visual,containment)",
					"value": "visual"
				},
				"$type": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram/Association"
			},
			"29": {
				"name": {
					"type": "string",
					"value": "one-time-instance"
				},
				"event": {
					"type": "$EVENT",
					"value": ""
				},
				"code": {
					"type": "code",
					"value": "var time_instances = getAllNodes(['/Formalisms/TrafficLight/TrafficLight/Time']);\ntime_instances.length == 1"
				},
				"$type": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram/GlobalConstraint"
			},
			"31": {
				"name": {
					"type": "string",
					"value": "set-clock"
				},
				"event": {
					"type": "$EVENT",
					"value": "post-create"
				},
				"code": {
					"type": "code",
					"value": "var instances = getAllNodes(['/Formalisms/TrafficLight/TrafficLight/Time']);\nconsole.log(instances.length);\nif (instances.length) {\n   setAttr('clock', 0, instances[0]);\n}"
				},
				"$type": "/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram/GlobalAction"
			}
		},
		"edges": [
			{
				"src": "13",
				"dest": "19"
			},
			{
				"src": "19",
				"dest": "13"
			},
			{
				"src": "13",
				"dest": "20"
			},
			{
				"src": "20",
				"dest": "13"
			},
			{
				"src": "16",
				"dest": "23"
			},
			{
				"src": "23",
				"dest": "22"
			},
			{
				"src": "16",
				"dest": "25"
			},
			{
				"src": "25",
				"dest": "22"
			},
			{
				"src": "24",
				"dest": "26"
			},
			{
				"src": "26",
				"dest": "22"
			},
			{
				"src": "13",
				"dest": "28"
			},
			{
				"src": "28",
				"dest": "27"
			}
		],
		"metamodels": [
			"/Formalisms/__LanguageSyntax__/SimpleClassDiagram/SimpleClassDiagram"
		]
	}
}