Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian W. Damus2014-01-20 23:00:52 +0000
committerChristian W. Damus2014-01-21 20:15:22 +0000
commit420f24ed767922df86bf5a2ef7321b90e9584210 (patch)
treeb4198c68b6b09d0aaaaeb078bc2b3681dcf8c199
parentaa458bf567ee6786a2d8bf681bcb86573e7e227a (diff)
downloadorg.eclipse.uml2-420f24ed767922df86bf5a2ef7321b90e9584210.tar.gz
org.eclipse.uml2-420f24ed767922df86bf5a2ef7321b90e9584210.tar.xz
org.eclipse.uml2-420f24ed767922df86bf5a2ef7321b90e9584210.zip
[382342] Make Getting Started Documentation more helpful
https://bugs.eclipse.org/bugs/show_bug.cgi?id=382342 Implement example plug-ins with complete source and models for the getting-started tutorials on the wiki.
-rw-r--r--examples/org.eclipse.uml2.examples.gettingstarted/.classpath7
-rw-r--r--examples/org.eclipse.uml2.examples.gettingstarted/.project28
-rw-r--r--examples/org.eclipse.uml2.examples.gettingstarted/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--examples/org.eclipse.uml2.examples.gettingstarted/GettingStartedWithUML2.launch13
-rw-r--r--examples/org.eclipse.uml2.examples.gettingstarted/META-INF/MANIFEST.MF10
-rw-r--r--examples/org.eclipse.uml2.examples.gettingstarted/build.properties14
-rw-r--r--examples/org.eclipse.uml2.examples.gettingstarted/models/ExtendedPO2.graffle3359
-rw-r--r--examples/org.eclipse.uml2.examples.gettingstarted/models/ExtendedPO2.pngbin0 -> 75186 bytes
-rw-r--r--examples/org.eclipse.uml2.examples.gettingstarted/models/ExtendedPO2.uml199
-rw-r--r--examples/org.eclipse.uml2.examples.gettingstarted/plugin.properties14
-rw-r--r--examples/org.eclipse.uml2.examples.gettingstarted/src/org/eclipse/uml2/examples/gettingstarted/GettingStartedWithUML2.java420
-rw-r--r--examples/org.eclipse.uml2.examples.introtoprofiles/.classpath7
-rw-r--r--examples/org.eclipse.uml2.examples.introtoprofiles/.project28
-rw-r--r--examples/org.eclipse.uml2.examples.introtoprofiles/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--examples/org.eclipse.uml2.examples.introtoprofiles/ExtendedPO2.uml199
-rw-r--r--examples/org.eclipse.uml2.examples.introtoprofiles/IntroductionToUMLProfiles.launch13
-rw-r--r--examples/org.eclipse.uml2.examples.introtoprofiles/META-INF/MANIFEST.MF10
-rw-r--r--examples/org.eclipse.uml2.examples.introtoprofiles/build.properties14
-rw-r--r--examples/org.eclipse.uml2.examples.introtoprofiles/plugin.properties14
-rw-r--r--examples/org.eclipse.uml2.examples.introtoprofiles/profiles/Ecore.graffle1090
-rw-r--r--examples/org.eclipse.uml2.examples.introtoprofiles/profiles/Ecore.pngbin0 -> 66947 bytes
-rw-r--r--examples/org.eclipse.uml2.examples.introtoprofiles/profiles/Ecore.profile.uml164
-rw-r--r--examples/org.eclipse.uml2.examples.introtoprofiles/src/org/eclipse/uml2/examples/introtoprofiles/IntroductionToUMLProfiles.java616
23 files changed, 6233 insertions, 0 deletions
diff --git a/examples/org.eclipse.uml2.examples.gettingstarted/.classpath b/examples/org.eclipse.uml2.examples.gettingstarted/.classpath
new file mode 100644
index 000000000..64c5e31b7
--- /dev/null
+++ b/examples/org.eclipse.uml2.examples.gettingstarted/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/examples/org.eclipse.uml2.examples.gettingstarted/.project b/examples/org.eclipse.uml2.examples.gettingstarted/.project
new file mode 100644
index 000000000..df9303cd2
--- /dev/null
+++ b/examples/org.eclipse.uml2.examples.gettingstarted/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.uml2.examples.gettingstarted</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/examples/org.eclipse.uml2.examples.gettingstarted/.settings/org.eclipse.jdt.core.prefs b/examples/org.eclipse.uml2.examples.gettingstarted/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 000000000..66c27085a
--- /dev/null
+++ b/examples/org.eclipse.uml2.examples.gettingstarted/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+#Wed Nov 08 08:52:48 EST 2006
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/examples/org.eclipse.uml2.examples.gettingstarted/GettingStartedWithUML2.launch b/examples/org.eclipse.uml2.examples.gettingstarted/GettingStartedWithUML2.launch
new file mode 100644
index 000000000..369fe5501
--- /dev/null
+++ b/examples/org.eclipse.uml2.examples.gettingstarted/GettingStartedWithUML2.launch
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.uml2.examples.gettingstarted/src/org/eclipse/uml2/examples/gettingstarted/GettingStartedWithUML2.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.uml2.examples.gettingstarted.GettingStartedWithUML2"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="${project_loc:/org.eclipse.uml2.examples.gettingstarted}"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.uml2.examples.gettingstarted"/>
+</launchConfiguration>
diff --git a/examples/org.eclipse.uml2.examples.gettingstarted/META-INF/MANIFEST.MF b/examples/org.eclipse.uml2.examples.gettingstarted/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..202f59a4c
--- /dev/null
+++ b/examples/org.eclipse.uml2.examples.gettingstarted/META-INF/MANIFEST.MF
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.uml2.examples.gettingstarted
+Bundle-Version: 5.0.0.qualifier
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Require-Bundle: org.eclipse.uml2.uml,
+ org.eclipse.uml2.uml.resources
diff --git a/examples/org.eclipse.uml2.examples.gettingstarted/build.properties b/examples/org.eclipse.uml2.examples.gettingstarted/build.properties
new file mode 100644
index 000000000..a9fa4ddba
--- /dev/null
+++ b/examples/org.eclipse.uml2.examples.gettingstarted/build.properties
@@ -0,0 +1,14 @@
+# Copyright (c) 2014 CEA and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# Christian W. Damus (CEA) - initial API and implementation
+#
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.properties
diff --git a/examples/org.eclipse.uml2.examples.gettingstarted/models/ExtendedPO2.graffle b/examples/org.eclipse.uml2.examples.gettingstarted/models/ExtendedPO2.graffle
new file mode 100644
index 000000000..fe1b83f8b
--- /dev/null
+++ b/examples/org.eclipse.uml2.examples.gettingstarted/models/ExtendedPO2.graffle
@@ -0,0 +1,3359 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>ActiveLayerIndex</key>
+ <integer>0</integer>
+ <key>ApplicationVersion</key>
+ <array>
+ <string>com.omnigroup.OmniGraffle.MacAppStore</string>
+ <string>139.18</string>
+ </array>
+ <key>AutoAdjust</key>
+ <true/>
+ <key>BackgroundGraphic</key>
+ <dict>
+ <key>Bounds</key>
+ <string>{{0, 0}, {733, 576}}</string>
+ <key>Class</key>
+ <string>SolidGraphic</string>
+ <key>ID</key>
+ <integer>2</integer>
+ <key>Style</key>
+ <dict>
+ <key>shadow</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>stroke</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ </dict>
+ </dict>
+ <key>BaseZoom</key>
+ <integer>0</integer>
+ <key>CanvasOrigin</key>
+ <string>{0, 0}</string>
+ <key>ColumnAlign</key>
+ <integer>1</integer>
+ <key>ColumnSpacing</key>
+ <real>36</real>
+ <key>CreationDate</key>
+ <string>2014-01-20 15:22:54 +0000</string>
+ <key>Creator</key>
+ <string>Christian W. Damus</string>
+ <key>DisplayScale</key>
+ <string>1 0/72 in = 1.0000 in</string>
+ <key>GraphDocumentVersion</key>
+ <integer>8</integer>
+ <key>GraphicsList</key>
+ <array>
+ <dict>
+ <key>Class</key>
+ <string>TableGroup</string>
+ <key>Graphics</key>
+ <array>
+ <dict>
+ <key>Bounds</key>
+ <string>{{493, 72}, {100.49527740478516, 28}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>34</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientCenter</key>
+ <string>{-0.29411799999999999, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\fs24 \cf0 \'abenumeration\'bb
+\b \
+OrderStatus}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{493, 100}, {100.49527740478516, 42}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>35</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientCenter</key>
+ <string>{-0.29411799999999999, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\fs24 \cf0 Pending\
+BackOrder\
+Complete}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ <key>GridH</key>
+ <array>
+ <integer>34</integer>
+ <integer>35</integer>
+ <array/>
+ </array>
+ <key>ID</key>
+ <integer>33</integer>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{36.003494657576084, 213.62804011195203}, {84.091156005859375, 14}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>118</integer>
+ <key>Line</key>
+ <dict>
+ <key>ID</key>
+ <integer>116</integer>
+ <key>Offset</key>
+ <real>40</real>
+ <key>Position</key>
+ <real>0.8898048996925354</real>
+ <key>RotationType</key>
+ <integer>0</integer>
+ </dict>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>shadow</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>stroke</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\fs24 \cf0 + customers}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{19.84220639616251, 215.60183271774531}, {16, 14}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>117</integer>
+ <key>Line</key>
+ <dict>
+ <key>ID</key>
+ <integer>116</integer>
+ <key>Offset</key>
+ <real>-10.206866264343262</real>
+ <key>Position</key>
+ <real>0.89926862716674805</real>
+ <key>RotationType</key>
+ <integer>0</integer>
+ </dict>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>shadow</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>stroke</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\fs24 \cf0 *}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>53</integer>
+ <key>Info</key>
+ <integer>1</integer>
+ </dict>
+ <key>ID</key>
+ <integer>116</integer>
+ <key>OrthogonalBarAutomatic</key>
+ <true/>
+ <key>OrthogonalBarPoint</key>
+ <string>{0, 0}</string>
+ <key>OrthogonalBarPosition</key>
+ <real>-1</real>
+ <key>Points</key>
+ <array>
+ <string>{95, 91.999990463256836}</string>
+ <string>{38.049072660505772, 243.61050415039062}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>HeadArrow</key>
+ <string>StickArrow</string>
+ <key>Legacy</key>
+ <true/>
+ <key>LineType</key>
+ <integer>2</integer>
+ <key>TailArrow</key>
+ <string>FilledDiamond</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>45</integer>
+ <key>Info</key>
+ <integer>11</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{118.1586616282938, 235.26979313098175}, {100.49527509265215, 14}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>115</integer>
+ <key>Line</key>
+ <dict>
+ <key>ID</key>
+ <integer>111</integer>
+ <key>Offset</key>
+ <real>8.6179580688476562</real>
+ <key>Position</key>
+ <real>0.33617675304412842</real>
+ <key>RotationType</key>
+ <integer>0</integer>
+ </dict>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>shadow</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>stroke</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\fs24 \cf0 + customer}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{121.52156607691438, 252.67219351125448}, {30.500008046627045, 14}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>114</integer>
+ <key>Line</key>
+ <dict>
+ <key>ID</key>
+ <integer>111</integer>
+ <key>Offset</key>
+ <real>-8.8688383102416992</real>
+ <key>Position</key>
+ <real>0.12520366907119751</real>
+ <key>RotationType</key>
+ <integer>0</integer>
+ </dict>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>shadow</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>stroke</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\fs24 \cf0 1}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{207.70938139384299, 235.46926250596638}, {100.49527509265215, 14}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>113</integer>
+ <key>Line</key>
+ <dict>
+ <key>ID</key>
+ <integer>111</integer>
+ <key>Offset</key>
+ <real>8.6575708389282227</real>
+ <key>Position</key>
+ <real>0.93427544832229614</real>
+ <key>RotationType</key>
+ <integer>0</integer>
+ </dict>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>shadow</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>stroke</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\fs24 \cf0 + orders}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{240.66028552406357, 253.1997877906328}, {16, 14}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>112</integer>
+ <key>Line</key>
+ <dict>
+ <key>ID</key>
+ <integer>111</integer>
+ <key>Offset</key>
+ <real>-9.0977115631103516</real>
+ <key>Position</key>
+ <real>0.87250030040740967</real>
+ <key>RotationType</key>
+ <integer>0</integer>
+ </dict>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>shadow</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>stroke</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\fs24 \cf0 *}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>49</integer>
+ <key>Info</key>
+ <integer>16</integer>
+ </dict>
+ <key>ID</key>
+ <integer>111</integer>
+ <key>Points</key>
+ <array>
+ <string>{118.04907048493691, 250.75333831098322}</string>
+ <string>{267.77453517913818, 251.1530749797821}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>HeadArrow</key>
+ <string>0</string>
+ <key>Legacy</key>
+ <true/>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>54</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{115.43220916390419, 127.81516378188473}, {30.500008046627045, 14}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>110</integer>
+ <key>Line</key>
+ <dict>
+ <key>ID</key>
+ <integer>107</integer>
+ <key>Offset</key>
+ <real>13.182218551635742</real>
+ <key>Position</key>
+ <real>0.0870494544506073</real>
+ <key>RotationType</key>
+ <integer>0</integer>
+ </dict>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>shadow</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>stroke</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\fs24 \cf0 0..1}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{168.80171439675919, 208.16214799880981}, {100.49527509265215, 14}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>109</integer>
+ <key>Line</key>
+ <dict>
+ <key>ID</key>
+ <integer>107</integer>
+ <key>Offset</key>
+ <real>8.6575708389282227</real>
+ <key>Position</key>
+ <real>0.81409287452697754</real>
+ <key>RotationType</key>
+ <integer>0</integer>
+ </dict>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>shadow</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>stroke</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\fs24 \cf0 + shippedOrders}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{242.10720315651693, 225.91743040084839}, {16, 14}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>108</integer>
+ <key>Line</key>
+ <dict>
+ <key>ID</key>
+ <integer>107</integer>
+ <key>Offset</key>
+ <real>-9.0977115631103516</real>
+ <key>Position</key>
+ <real>0.93259161710739136</real>
+ <key>RotationType</key>
+ <integer>0</integer>
+ </dict>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>shadow</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>stroke</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\fs24 \cf0 *}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>49</integer>
+ <key>Info</key>
+ <integer>18</integer>
+ </dict>
+ <key>ID</key>
+ <integer>107</integer>
+ <key>OrthogonalBarAutomatic</key>
+ <true/>
+ <key>OrthogonalBarPoint</key>
+ <string>{0, 0}</string>
+ <key>OrthogonalBarPosition</key>
+ <real>-1</real>
+ <key>Points</key>
+ <array>
+ <string>{117.49999463558197, 112}</string>
+ <string>{267.77453517913818, 223.81971883773804}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>HeadArrow</key>
+ <string>StickArrow</string>
+ <key>Legacy</key>
+ <true/>
+ <key>LineType</key>
+ <integer>2</integer>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>45</integer>
+ <key>Info</key>
+ <integer>9</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{160.43220648169518, 127.75877319755557}, {30.500008046627045, 14}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>106</integer>
+ <key>Line</key>
+ <dict>
+ <key>ID</key>
+ <integer>103</integer>
+ <key>Offset</key>
+ <real>13.182218551635742</real>
+ <key>Position</key>
+ <real>0.11993391066789627</real>
+ <key>RotationType</key>
+ <integer>0</integer>
+ </dict>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>shadow</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>stroke</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\fs24 \cf0 0..1}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{164.49342825810396, 180.82884073257446}, {100.49527509265215, 14}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>105</integer>
+ <key>Line</key>
+ <dict>
+ <key>ID</key>
+ <integer>103</integer>
+ <key>Offset</key>
+ <real>8.6575708389282227</real>
+ <key>Position</key>
+ <real>0.72052490711212158</real>
+ <key>RotationType</key>
+ <integer>0</integer>
+ </dict>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>shadow</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>stroke</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\fs24 \cf0 + pendingOrders}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{239.31361881026777, 198.58412313461304}, {16, 14}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>104</integer>
+ <key>Line</key>
+ <dict>
+ <key>ID</key>
+ <integer>103</integer>
+ <key>Offset</key>
+ <real>-9.0977115631103516</real>
+ <key>Position</key>
+ <real>0.89217525720596313</real>
+ <key>RotationType</key>
+ <integer>0</integer>
+ </dict>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>shadow</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>stroke</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\fs24 \cf0 *}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>49</integer>
+ </dict>
+ <key>ID</key>
+ <integer>103</integer>
+ <key>OrthogonalBarAutomatic</key>
+ <true/>
+ <key>OrthogonalBarPoint</key>
+ <string>{0, 0}</string>
+ <key>OrthogonalBarPosition</key>
+ <real>-1</real>
+ <key>Points</key>
+ <array>
+ <string>{162.49999195337296, 112}</string>
+ <string>{267.77453517913818, 196.48641157150269}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>HeadArrow</key>
+ <string>StickArrow</string>
+ <key>Legacy</key>
+ <true/>
+ <key>LineType</key>
+ <integer>2</integer>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>45</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{234.16145972907543, 153.57876680917315}, {58.885189056396484, 14}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>101</integer>
+ <key>Line</key>
+ <dict>
+ <key>ID</key>
+ <integer>98</integer>
+ <key>Offset</key>
+ <real>-24.837148666381836</real>
+ <key>Position</key>
+ <real>0.88550984859466553</real>
+ <key>RotationType</key>
+ <integer>0</integer>
+ </dict>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>shadow</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>stroke</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\fs24 \cf0 + orders}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{291.50634364783764, 149.02141673911598}, {16, 14}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>99</integer>
+ <key>Line</key>
+ <dict>
+ <key>ID</key>
+ <integer>98</integer>
+ <key>Offset</key>
+ <real>11.065140724182129</real>
+ <key>Position</key>
+ <real>0.86204993724822998</real>
+ <key>RotationType</key>
+ <integer>0</integer>
+ </dict>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>shadow</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>stroke</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\fs24 \cf0 *}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>49</integer>
+ </dict>
+ <key>ID</key>
+ <integer>98</integer>
+ <key>OrthogonalBarAutomatic</key>
+ <true/>
+ <key>OrthogonalBarPoint</key>
+ <string>{0, 0}</string>
+ <key>OrthogonalBarPosition</key>
+ <real>-1</real>
+ <key>Points</key>
+ <array>
+ <string>{185, 92.000006357828966}</string>
+ <string>{288.44120292365551, 182.81973838806152}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>HeadArrow</key>
+ <string>StickArrow</string>
+ <key>Legacy</key>
+ <true/>
+ <key>LineType</key>
+ <integer>2</integer>
+ <key>TailArrow</key>
+ <string>FilledDiamond</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>45</integer>
+ <key>Info</key>
+ <integer>5</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{282.33458232879639, 278.1104066509842}, {58.885189056396484, 14}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>97</integer>
+ <key>Line</key>
+ <dict>
+ <key>ID</key>
+ <integer>93</integer>
+ <key>Offset</key>
+ <real>-17.997358322143555</real>
+ <key>Position</key>
+ <real>0.25149482488632202</real>
+ <key>RotationType</key>
+ <integer>0</integer>
+ </dict>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>shadow</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>stroke</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\fs24 \cf0 + order}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{282.58546161651611, 323.03310961604387}, {58.885189056396484, 14}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>96</integer>
+ <key>Line</key>
+ <dict>
+ <key>ID</key>
+ <integer>93</integer>
+ <key>Offset</key>
+ <real>-17.746479034423828</real>
+ <key>Position</key>
+ <real>0.80829405784606934</real>
+ <key>RotationType</key>
+ <integer>0</integer>
+ </dict>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>shadow</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>stroke</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\fs24 \cf0 + items}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{328.33879566192627, 278.72137491628177}, {17, 14}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>YES</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>95</integer>
+ <key>Line</key>
+ <dict>
+ <key>ID</key>
+ <integer>93</integer>
+ <key>Offset</key>
+ <real>7.0642604827880859</real>
+ <key>Position</key>
+ <real>0.25906753540039062</real>
+ <key>RotationType</key>
+ <integer>0</integer>
+ </dict>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>shadow</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>stroke</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\fs24 \cf0 1}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>Wrap</key>
+ <string>NO</string>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{332.83967590332031, 327.37015283767687}, {16, 14}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>94</integer>
+ <key>Line</key>
+ <dict>
+ <key>ID</key>
+ <integer>93</integer>
+ <key>Offset</key>
+ <real>11.065140724182129</real>
+ <key>Position</key>
+ <real>0.86204993724822998</real>
+ <key>RotationType</key>
+ <integer>0</integer>
+ </dict>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>shadow</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>stroke</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\fs24 \cf0 *}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>74</integer>
+ </dict>
+ <key>ID</key>
+ <integer>93</integer>
+ <key>Points</key>
+ <array>
+ <string>{329.77453517913818, 264.81973838806152}</string>
+ <string>{329.77453517913818, 345.4999999882524}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>HeadArrow</key>
+ <string>0</string>
+ <key>Legacy</key>
+ <true/>
+ <key>LineType</key>
+ <integer>1</integer>
+ <key>TailArrow</key>
+ <string>FilledDiamond</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>49</integer>
+ <key>Info</key>
+ <integer>13</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{323.09316419296056, 121.00176048278809}, {98.533048417629743, 14}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>92</integer>
+ <key>Line</key>
+ <dict>
+ <key>ID</key>
+ <integer>89</integer>
+ <key>Offset</key>
+ <real>11.998239517211914</real>
+ <key>Position</key>
+ <real>0.67153030633926392</real>
+ <key>RotationType</key>
+ <integer>0</integer>
+ </dict>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>shadow</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>stroke</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\fs24 \cf0 + previousOrder}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{350.66158884763718, 148.63110248855082}, {37.420150756835938, 14}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>90</integer>
+ <key>Line</key>
+ <dict>
+ <key>ID</key>
+ <integer>89</integer>
+ <key>Offset</key>
+ <real>18.930458068847656</real>
+ <key>Position</key>
+ <real>0.86204993724822998</real>
+ <key>RotationType</key>
+ <integer>0</integer>
+ </dict>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>shadow</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>stroke</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\fs24 \cf0 0..1}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>49</integer>
+ </dict>
+ <key>ID</key>
+ <integer>89</integer>
+ <key>OrthogonalBarAutomatic</key>
+ <true/>
+ <key>OrthogonalBarPoint</key>
+ <string>{0, 0}</string>
+ <key>OrthogonalBarPosition</key>
+ <real>8.1627330780029297</real>
+ <key>Points</key>
+ <array>
+ <string>{391.77453517913818, 196.4864054620266}</string>
+ <string>{420, 172}</string>
+ <string>{390.55751408139872, 140}</string>
+ <string>{350.44120615720749, 182.81973838806152}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>HeadArrow</key>
+ <string>StickArrow</string>
+ <key>Legacy</key>
+ <true/>
+ <key>LineType</key>
+ <integer>2</integer>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>49</integer>
+ <key>Info</key>
+ <integer>6</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{455.03025684753391, 190.62238558152168}, {48.901283264160156, 14}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>88</integer>
+ <key>Line</key>
+ <dict>
+ <key>ID</key>
+ <integer>85</integer>
+ <key>Offset</key>
+ <real>12.482394218444824</real>
+ <key>Position</key>
+ <real>0.70044249296188354</real>
+ <key>RotationType</key>
+ <integer>0</integer>
+ </dict>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>shadow</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>stroke</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\fs24 \cf0 + billTo}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{499.23289730696695, 213.15992368325908}, {16, 14}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>86</integer>
+ <key>Line</key>
+ <dict>
+ <key>ID</key>
+ <integer>85</integer>
+ <key>Offset</key>
+ <real>-10.070422172546387</real>
+ <key>Position</key>
+ <real>0.92195957899093628</real>
+ <key>RotationType</key>
+ <integer>0</integer>
+ </dict>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>shadow</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>stroke</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\fs24 \cf0 1}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>57</integer>
+ <key>Info</key>
+ <integer>12</integer>
+ </dict>
+ <key>ID</key>
+ <integer>85</integer>
+ <key>Points</key>
+ <array>
+ <string>{391.77453517913818, 210.15307742357254}</string>
+ <string>{517, 210.08412170410156}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>HeadArrow</key>
+ <string>StickArrow</string>
+ <key>Legacy</key>
+ <true/>
+ <key>LineType</key>
+ <integer>1</integer>
+ <key>TailArrow</key>
+ <string>FilledDiamond</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>49</integer>
+ <key>Info</key>
+ <integer>7</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{450.22681799056664, 217.72158099143414}, {58.885189056396484, 14}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>84</integer>
+ <key>Line</key>
+ <dict>
+ <key>ID</key>
+ <integer>16</integer>
+ <key>Offset</key>
+ <real>12.482394218444824</real>
+ <key>Position</key>
+ <real>0.70221322774887085</real>
+ <key>RotationType</key>
+ <integer>0</integer>
+ </dict>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>shadow</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>stroke</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\fs24 \cf0 + shipTo}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{500.09332289563446, 240.18319961830576}, {16, 14}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>82</integer>
+ <key>Line</key>
+ <dict>
+ <key>ID</key>
+ <integer>16</integer>
+ <key>Offset</key>
+ <real>-10.070422172546387</real>
+ <key>Position</key>
+ <real>0.92861652374267578</real>
+ <key>RotationType</key>
+ <integer>0</integer>
+ </dict>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>shadow</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>stroke</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\fs24 \cf0 1}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>57</integer>
+ <key>Info</key>
+ <integer>10</integer>
+ </dict>
+ <key>ID</key>
+ <integer>16</integer>
+ <key>Points</key>
+ <array>
+ <string>{391.77453517913818, 237.48640912771225}</string>
+ <string>{517, 237.08411204814911}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>HeadArrow</key>
+ <string>StickArrow</string>
+ <key>Legacy</key>
+ <true/>
+ <key>LineType</key>
+ <integer>1</integer>
+ <key>TailArrow</key>
+ <string>FilledDiamond</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>49</integer>
+ <key>Info</key>
+ <integer>9</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>70</integer>
+ </dict>
+ <key>ID</key>
+ <integer>81</integer>
+ <key>OrthogonalBarAutomatic</key>
+ <true/>
+ <key>OrthogonalBarPoint</key>
+ <string>{0, 0}</string>
+ <key>OrthogonalBarPosition</key>
+ <real>-1</real>
+ <key>Points</key>
+ <array>
+ <string>{638.00000310353607, 346.58412170410156}</string>
+ <string>{638.00000310353607, 393.08412170410156}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>HeadArrow</key>
+ <string>UMLInheritance</string>
+ <key>Legacy</key>
+ <true/>
+ <key>LineType</key>
+ <integer>2</integer>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>65</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>57</integer>
+ <key>Info</key>
+ <integer>8</integer>
+ </dict>
+ <key>ID</key>
+ <integer>80</integer>
+ <key>OrthogonalBarAutomatic</key>
+ <false/>
+ <key>OrthogonalBarPoint</key>
+ <string>{0, 0}</string>
+ <key>OrthogonalBarPosition</key>
+ <real>0.0</real>
+ <key>Points</key>
+ <array>
+ <string>{630.07766372896083, 306.2443101588741}</string>
+ <string>{570, 250.58412170410156}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>HeadArrow</key>
+ <string>UMLInheritance</string>
+ <key>Legacy</key>
+ <true/>
+ <key>LineType</key>
+ <integer>2</integer>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>66</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>57</integer>
+ <key>Info</key>
+ <integer>8</integer>
+ </dict>
+ <key>ID</key>
+ <integer>27</integer>
+ <key>OrthogonalBarAutomatic</key>
+ <false/>
+ <key>OrthogonalBarPoint</key>
+ <string>{0, 0}</string>
+ <key>OrthogonalBarPosition</key>
+ <real>0.0</real>
+ <key>Points</key>
+ <array>
+ <string>{496.62048817816253, 306.28182344838785}</string>
+ <string>{570, 250.58412170410156}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>HeadArrow</key>
+ <string>UMLInheritance</string>
+ <key>Legacy</key>
+ <true/>
+ <key>LineType</key>
+ <integer>2</integer>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>62</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{120, 395.63946533203125}, {75, 29}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>ID</key>
+ <integer>79</integer>
+ <key>Magnets</key>
+ <array>
+ <string>{0, 1}</string>
+ <string>{0, -1}</string>
+ <string>{1, 0}</string>
+ <string>{-1, 0}</string>
+ </array>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict/>
+ <key>Text</key>
+ <dict>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 SKU}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{120, 340.63946533203125}, {75, 29}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>ID</key>
+ <integer>78</integer>
+ <key>Magnets</key>
+ <array>
+ <string>{0, 1}</string>
+ <string>{0, -1}</string>
+ <string>{1, 0}</string>
+ <string>{-1, 0}</string>
+ </array>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict/>
+ <key>Text</key>
+ <dict>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 Date}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{30, 395.63946533203125}, {75, 29}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>ID</key>
+ <integer>77</integer>
+ <key>Magnets</key>
+ <array>
+ <string>{0, 1}</string>
+ <string>{0, -1}</string>
+ <string>{1, 0}</string>
+ <string>{-1, 0}</string>
+ </array>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict/>
+ <key>Text</key>
+ <dict>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 String}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{30, 340.63946533203125}, {75, 29}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>ID</key>
+ <integer>11</integer>
+ <key>Magnets</key>
+ <array>
+ <string>{0, 1}</string>
+ <string>{0, -1}</string>
+ <string>{1, 0}</string>
+ <string>{-1, 0}</string>
+ </array>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict/>
+ <key>Text</key>
+ <dict>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 int}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>TableGroup</string>
+ <key>Graphics</key>
+ <array>
+ <dict>
+ <key>Bounds</key>
+ <string>{{267.77453517913818, 346}, {124, 14}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>74</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientCenter</key>
+ <string>{-0.29411799999999999, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 Item}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{267.77453517913818, 360}, {124, 84}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>75</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientCenter</key>
+ <string>{-0.29411799999999999, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\fs24 \cf0 productName : String\
+quantity : int\
+USPrice : int\
+comment : String\
+shipDate : Date\
+partNum : SKU}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{267.77453517913818, 444}, {124, 12}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>76</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientCenter</key>
+ <string>{-0.29411799999999999, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ <key>GridH</key>
+ <array>
+ <integer>74</integer>
+ <integer>75</integer>
+ <integer>76</integer>
+ <array/>
+ </array>
+ <key>ID</key>
+ <integer>73</integer>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>TableGroup</string>
+ <key>Graphics</key>
+ <array>
+ <dict>
+ <key>Bounds</key>
+ <string>{{585, 393.58412170410156}, {106, 14}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>70</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientCenter</key>
+ <string>{-0.29411799999999999, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 GlobalLocation}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{585, 407.58412170410156}, {106, 14}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>71</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientCenter</key>
+ <string>{-0.29411799999999999, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\fs24 \cf0 countryCode : int}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{585, 421.58412170410156}, {106, 12}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>72</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientCenter</key>
+ <string>{-0.29411799999999999, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ <key>GridH</key>
+ <array>
+ <integer>70</integer>
+ <integer>71</integer>
+ <integer>72</integer>
+ <array/>
+ </array>
+ <key>ID</key>
+ <integer>69</integer>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>TableGroup</string>
+ <key>Graphics</key>
+ <array>
+ <dict>
+ <key>Bounds</key>
+ <string>{{585, 306.58412170410156}, {106, 14}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>66</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientCenter</key>
+ <string>{-0.29411799999999999, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 GlobalAddress}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{585, 320.58412170410156}, {106, 14}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>67</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientCenter</key>
+ <string>{-0.29411799999999999, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\fs24 \cf0 location : String}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{585, 334.58412170410156}, {106, 12}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>68</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientCenter</key>
+ <string>{-0.29411799999999999, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ <key>GridH</key>
+ <array>
+ <integer>66</integer>
+ <integer>67</integer>
+ <integer>68</integer>
+ <array/>
+ </array>
+ <key>GroupConnect</key>
+ <string>YES</string>
+ <key>ID</key>
+ <integer>65</integer>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>TableGroup</string>
+ <key>Graphics</key>
+ <array>
+ <dict>
+ <key>Bounds</key>
+ <string>{{434, 306.58412170410156}, {106, 14}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>62</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientCenter</key>
+ <string>{-0.29411799999999999, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 USAddress}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{434, 320.58412170410156}, {106, 56}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>63</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientCenter</key>
+ <string>{-0.29411799999999999, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\fs24 \cf0 street : String\
+city : String\
+state : String\
+zip : int}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{434, 376.58412170410156}, {106, 12}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>64</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientCenter</key>
+ <string>{-0.29411799999999999, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ <key>GridH</key>
+ <array>
+ <integer>62</integer>
+ <integer>63</integer>
+ <integer>64</integer>
+ <array/>
+ </array>
+ <key>ID</key>
+ <integer>61</integer>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>TableGroup</string>
+ <key>Graphics</key>
+ <array>
+ <dict>
+ <key>Bounds</key>
+ <string>{{517, 196.58412170410156}, {106, 14}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>58</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientCenter</key>
+ <string>{-0.29411799999999999, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\i\b\fs24 \cf0 Address}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{517, 210.58412170410156}, {106, 28}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>59</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientCenter</key>
+ <string>{-0.29411799999999999, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\fs24 \cf0 name : String\
+country : String}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{517, 238.58412170410156}, {106, 12}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>60</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientCenter</key>
+ <string>{-0.29411799999999999, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ <key>GridH</key>
+ <array>
+ <integer>58</integer>
+ <integer>59</integer>
+ <integer>60</integer>
+ <array/>
+ </array>
+ <key>GroupConnect</key>
+ <string>YES</string>
+ <key>ID</key>
+ <integer>57</integer>
+ <key>Magnets</key>
+ <array>
+ <string>{-0.59628479784302701, -1.1925696134567261}</string>
+ <string>{1.9868215517249155e-08, -1.3333333730697632}</string>
+ <string>{0.59628487781105122, -1.1925696134567261}</string>
+ <string>{1.1925696134567261, -0.59628480672836304}</string>
+ <string>{1.3333333730697632, 1.5894572413799324e-07}</string>
+ <string>{1.1925696134567261, 0.59628473564567486}</string>
+ <string>{0.59628465308492196, 1.1925697326660156}</string>
+ <string>{0, 1.3333333730697632}</string>
+ <string>{-0.5962849488937394, 1.1925696134567261}</string>
+ <string>{-1.1925697326660156, 0.5962844398368361}</string>
+ <string>{-1.3333333730697632, -6.3578289655197295e-07}</string>
+ <string>{-1.1925696134567261, -0.59628480672836304}</string>
+ </array>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>TableGroup</string>
+ <key>Graphics</key>
+ <array>
+ <dict>
+ <key>Bounds</key>
+ <string>{{11.549072265625, 243.61050415039062}, {106, 14}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>54</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientCenter</key>
+ <string>{-0.29411799999999999, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 Customer}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{11.549072265625, 257.61050415039062}, {106, 14}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>55</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientCenter</key>
+ <string>{-0.29411799999999999, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\fs24 \cf0 customerID : int}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{11.549072265625, 271.61050415039062}, {106, 12}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>56</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientCenter</key>
+ <string>{-0.29411799999999999, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ <key>GridH</key>
+ <array>
+ <integer>54</integer>
+ <integer>55</integer>
+ <integer>56</integer>
+ <array/>
+ </array>
+ <key>GroupConnect</key>
+ <string>YES</string>
+ <key>ID</key>
+ <integer>53</integer>
+ <key>Magnets</key>
+ <array>
+ <string>{-0.59628479784302701, -1.1925696134567261}</string>
+ <string>{1.9868215517249155e-08, -1.3333333730697632}</string>
+ <string>{0.59628487781105122, -1.1925696134567261}</string>
+ <string>{1.1925696134567259, -0.59628480672836304}</string>
+ <string>{1.333333373069763, 1.5894572413799324e-07}</string>
+ <string>{1.1925696134567259, 0.59628473564567486}</string>
+ <string>{0.59628465308492196, 1.1925697326660156}</string>
+ <string>{0, 1.3333333730697632}</string>
+ <string>{-0.5962849488937394, 1.1925696134567261}</string>
+ <string>{-1.1925697326660156, 0.5962844398368361}</string>
+ <string>{-1.3333333730697632, -6.3578289655197295e-07}</string>
+ <string>{-1.1925696134567261, -0.59628480672836304}</string>
+ </array>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>TableGroup</string>
+ <key>Graphics</key>
+ <array>
+ <dict>
+ <key>Bounds</key>
+ <string>{{267.77453517913818, 182.81973838806152}, {124, 14}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>50</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientCenter</key>
+ <string>{-0.29411799999999999, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 PurchaseOrder}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{267.77453517913818, 196.81973838806152}, {124, 56}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>51</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientCenter</key>
+ <string>{-0.29411799999999999, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\fs24 \cf0 comment : String\
+orderDate : Date\
+status : OrderStatus\
+totalAmount : int}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{267.77453517913818, 252.81973838806152}, {124, 12}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>52</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientCenter</key>
+ <string>{-0.29411799999999999, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ <key>GridH</key>
+ <array>
+ <integer>50</integer>
+ <integer>51</integer>
+ <integer>52</integer>
+ <array/>
+ </array>
+ <key>GroupConnect</key>
+ <string>YES</string>
+ <key>ID</key>
+ <integer>49</integer>
+ <key>Magnets</key>
+ <array>
+ <string>{-0.7396002417658698, -1.1094003915786743}</string>
+ <string>{-0.42163697454145854, -1.2649110555648804}</string>
+ <string>{1.9868215517249155e-08, -1.3333333730697632}</string>
+ <string>{0.42163710648196329, -1.2649110555648804}</string>
+ <string>{0.73960031615696309, -1.1094003915786743}</string>
+ <string>{1.1094003915786743, -0.73960025003154684}</string>
+ <string>{1.2649110555648804, -0.4216368426009538}</string>
+ <string>{1.3333333730697632, 1.5894572413799324e-07}</string>
+ <string>{1.2649110555648804, 0.42163714417925036}</string>
+ <string>{1.1094003915786743, 0.73960034921967122}</string>
+ <string>{0.73960021696883871, 1.1094003915786743}</string>
+ <string>{0.42163699339010208, 1.2649110555648804}</string>
+ <string>{0, 1.3333333730697632}</string>
+ <string>{-0.42163733062650977, 1.2649109363555908}</string>
+ <string>{-0.73960021696883871, 1.1094003915786743}</string>
+ <string>{-1.1094003915786743, 0.73960034921967122}</string>
+ <string>{-1.2649110555648804, 0.42163676720637966}</string>
+ <string>{-1.3333333730697632, -6.3578289655197295e-07}</string>
+ <string>{-1.2649109363555908, -0.4216371798373757}</string>
+ <string>{-1.1094005107879639, -0.73960016419084695}</string>
+ </array>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>TableGroup</string>
+ <key>Graphics</key>
+ <array>
+ <dict>
+ <key>Bounds</key>
+ <string>{{95, 72}, {90, 14}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>46</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientCenter</key>
+ <string>{-0.29411799999999999, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 Supplier}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{95, 86}, {90, 14}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>47</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientCenter</key>
+ <string>{-0.29411799999999999, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\fs24 \cf0 name : String}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{95, 100}, {90, 12}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>48</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientCenter</key>
+ <string>{-0.29411799999999999, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ <key>GridH</key>
+ <array>
+ <integer>46</integer>
+ <integer>47</integer>
+ <integer>48</integer>
+ <array/>
+ </array>
+ <key>GroupConnect</key>
+ <string>YES</string>
+ <key>ID</key>
+ <integer>45</integer>
+ <key>Magnets</key>
+ <array>
+ <string>{-0.59628479784302701, -1.1925696134567261}</string>
+ <string>{1.9868215517249155e-08, -1.3333333730697632}</string>
+ <string>{0.59628487781105122, -1.1925696134567261}</string>
+ <string>{1.1925696134567261, -0.59628480672836304}</string>
+ <string>{1.3333333730697632, 1.5894572413799324e-07}</string>
+ <string>{1.1925696134567261, 0.59628473564567486}</string>
+ <string>{0.59628465308492196, 1.1925697326660156}</string>
+ <string>{0, 1.3333333730697632}</string>
+ <string>{-0.5962849488937394, 1.1925696134567261}</string>
+ <string>{-1.1925697326660156, 0.5962844398368361}</string>
+ <string>{-1.3333333730697632, -6.3578289655197295e-07}</string>
+ <string>{-1.1925696134567261, -0.59628480672836304}</string>
+ </array>
+ </dict>
+ </array>
+ <key>GridInfo</key>
+ <dict/>
+ <key>GuidesLocked</key>
+ <string>NO</string>
+ <key>GuidesVisible</key>
+ <string>YES</string>
+ <key>HPages</key>
+ <integer>1</integer>
+ <key>ImageCounter</key>
+ <integer>1</integer>
+ <key>KeepToScale</key>
+ <false/>
+ <key>Layers</key>
+ <array>
+ <dict>
+ <key>Lock</key>
+ <string>NO</string>
+ <key>Name</key>
+ <string>Layer 1</string>
+ <key>Print</key>
+ <string>YES</string>
+ <key>View</key>
+ <string>YES</string>
+ </dict>
+ </array>
+ <key>LayoutInfo</key>
+ <dict>
+ <key>Animate</key>
+ <string>NO</string>
+ <key>circoMinDist</key>
+ <real>18</real>
+ <key>circoSeparation</key>
+ <real>0.0</real>
+ <key>layoutEngine</key>
+ <string>dot</string>
+ <key>neatoSeparation</key>
+ <real>0.0</real>
+ <key>twopiSeparation</key>
+ <real>0.0</real>
+ </dict>
+ <key>LinksVisible</key>
+ <string>NO</string>
+ <key>MagnetsVisible</key>
+ <string>NO</string>
+ <key>MasterSheets</key>
+ <array/>
+ <key>ModificationDate</key>
+ <string>2014-01-20 17:15:49 +0000</string>
+ <key>Modifier</key>
+ <string>Christian W. Damus</string>
+ <key>NotesVisible</key>
+ <string>NO</string>
+ <key>Orientation</key>
+ <integer>1</integer>
+ <key>OriginVisible</key>
+ <string>NO</string>
+ <key>PageBreaks</key>
+ <string>YES</string>
+ <key>PrintInfo</key>
+ <dict>
+ <key>NSBottomMargin</key>
+ <array>
+ <string>float</string>
+ <string>41</string>
+ </array>
+ <key>NSHorizonalPagination</key>
+ <array>
+ <string>coded</string>
+ <string>BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG</string>
+ </array>
+ <key>NSLeftMargin</key>
+ <array>
+ <string>float</string>
+ <string>18</string>
+ </array>
+ <key>NSPaperSize</key>
+ <array>
+ <string>size</string>
+ <string>{612, 792}</string>
+ </array>
+ <key>NSPrintReverseOrientation</key>
+ <array>
+ <string>int</string>
+ <string>0</string>
+ </array>
+ <key>NSRightMargin</key>
+ <array>
+ <string>float</string>
+ <string>18</string>
+ </array>
+ <key>NSTopMargin</key>
+ <array>
+ <string>float</string>
+ <string>18</string>
+ </array>
+ </dict>
+ <key>PrintOnePage</key>
+ <false/>
+ <key>ReadOnly</key>
+ <string>NO</string>
+ <key>RowAlign</key>
+ <integer>1</integer>
+ <key>RowSpacing</key>
+ <real>36</real>
+ <key>SheetTitle</key>
+ <string>Canvas 1</string>
+ <key>SmartAlignmentGuidesActive</key>
+ <string>YES</string>
+ <key>SmartDistanceGuidesActive</key>
+ <string>YES</string>
+ <key>UniqueID</key>
+ <integer>1</integer>
+ <key>UseEntirePage</key>
+ <false/>
+ <key>VPages</key>
+ <integer>1</integer>
+ <key>WindowInfo</key>
+ <dict>
+ <key>CurrentSheet</key>
+ <integer>0</integer>
+ <key>ExpandedCanvases</key>
+ <array>
+ <dict>
+ <key>name</key>
+ <string>Canvas 1</string>
+ </dict>
+ </array>
+ <key>Frame</key>
+ <string>{{840, 525}, {1043, 872}}</string>
+ <key>ListView</key>
+ <true/>
+ <key>OutlineWidth</key>
+ <integer>142</integer>
+ <key>RightSidebar</key>
+ <false/>
+ <key>ShowRuler</key>
+ <true/>
+ <key>Sidebar</key>
+ <true/>
+ <key>SidebarWidth</key>
+ <integer>120</integer>
+ <key>VisibleRegion</key>
+ <string>{{-88, -78}, {908, 733}}</string>
+ <key>Zoom</key>
+ <real>1</real>
+ <key>ZoomValues</key>
+ <array>
+ <array>
+ <string>Canvas 1</string>
+ <real>1</real>
+ <real>1</real>
+ </array>
+ </array>
+ </dict>
+</dict>
+</plist>
diff --git a/examples/org.eclipse.uml2.examples.gettingstarted/models/ExtendedPO2.png b/examples/org.eclipse.uml2.examples.gettingstarted/models/ExtendedPO2.png
new file mode 100644
index 000000000..0c19dfdf2
--- /dev/null
+++ b/examples/org.eclipse.uml2.examples.gettingstarted/models/ExtendedPO2.png
Binary files differ
diff --git a/examples/org.eclipse.uml2.examples.gettingstarted/models/ExtendedPO2.uml b/examples/org.eclipse.uml2.examples.gettingstarted/models/ExtendedPO2.uml
new file mode 100644
index 000000000..da21537ee
--- /dev/null
+++ b/examples/org.eclipse.uml2.examples.gettingstarted/models/ExtendedPO2.uml
@@ -0,0 +1,199 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="20110701" xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML" xmi:id="_stid4YH4EeOZq68N3n_w7g" name="epo2">
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_stk6IIH4EeOZq68N3n_w7g" name="int"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_stk6IYH4EeOZq68N3n_w7g" name="String"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_stk6IoH4EeOZq68N3n_w7g" name="Date"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_stk6I4H4EeOZq68N3n_w7g" name="SKU"/>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_stk6JIH4EeOZq68N3n_w7g" name="OrderStatus">
+ <ownedLiteral xmi:id="_stk6JYH4EeOZq68N3n_w7g" name="Pending"/>
+ <ownedLiteral xmi:id="_stk6JoH4EeOZq68N3n_w7g" name="BackOrder"/>
+ <ownedLiteral xmi:id="_stk6J4H4EeOZq68N3n_w7g" name="Complete"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_stk6KIH4EeOZq68N3n_w7g" name="Supplier">
+ <ownedAttribute xmi:id="_stk6KYH4EeOZq68N3n_w7g" name="name" type="_stk6IYH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stk6KoH4EeOZq68N3n_w7g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stk6K4H4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stk6LIH4EeOZq68N3n_w7g" name="orders" type="_stlhQIH4EeOZq68N3n_w7g" aggregation="composite" association="_stmIaIH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stk6LYH4EeOZq68N3n_w7g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stk6LoH4EeOZq68N3n_w7g" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stlhMIH4EeOZq68N3n_w7g" name="pendingOrders" type="_stlhQIH4EeOZq68N3n_w7g" association="_stmIbIH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhMYH4EeOZq68N3n_w7g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhMoH4EeOZq68N3n_w7g" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stlhM4H4EeOZq68N3n_w7g" name="shippedOrders" type="_stlhQIH4EeOZq68N3n_w7g" association="_stmIcIH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhNIH4EeOZq68N3n_w7g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhNYH4EeOZq68N3n_w7g" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stlhNoH4EeOZq68N3n_w7g" name="customers" type="_stlhOYH4EeOZq68N3n_w7g" aggregation="composite" association="_stmvU4H4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhN4H4EeOZq68N3n_w7g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhOIH4EeOZq68N3n_w7g" value="*"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_stlhOYH4EeOZq68N3n_w7g" name="Customer">
+ <ownedAttribute xmi:id="_stlhOoH4EeOZq68N3n_w7g" name="customerID" type="_stk6IIH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhO4H4EeOZq68N3n_w7g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhPIH4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stlhPYH4EeOZq68N3n_w7g" name="orders" type="_stlhQIH4EeOZq68N3n_w7g" association="_stmvV4H4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhPoH4EeOZq68N3n_w7g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhP4H4EeOZq68N3n_w7g" value="*"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_stlhQIH4EeOZq68N3n_w7g" name="PurchaseOrder">
+ <ownedAttribute xmi:id="_stlhQYH4EeOZq68N3n_w7g" name="comment" type="_stk6IYH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhQoH4EeOZq68N3n_w7g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhQ4H4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stlhRIH4EeOZq68N3n_w7g" name="orderDate" type="_stk6IoH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhRYH4EeOZq68N3n_w7g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhRoH4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stlhR4H4EeOZq68N3n_w7g" name="status" type="_stk6JIH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhSIH4EeOZq68N3n_w7g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhSYH4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stlhSoH4EeOZq68N3n_w7g" name="totalAmount" type="_stk6IIH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhS4H4EeOZq68N3n_w7g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhTIH4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stlhTYH4EeOZq68N3n_w7g" name="customer" type="_stlhOYH4EeOZq68N3n_w7g" association="_stmvV4H4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhToH4EeOZq68N3n_w7g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhT4H4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stlhUIH4EeOZq68N3n_w7g" name="previousOrder" type="_stlhQIH4EeOZq68N3n_w7g" association="_stmvWIH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhUYH4EeOZq68N3n_w7g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhUoH4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stlhU4H4EeOZq68N3n_w7g" name="items" type="_stlhXIH4EeOZq68N3n_w7g" aggregation="composite" association="_stmvXIH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhVIH4EeOZq68N3n_w7g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhVYH4EeOZq68N3n_w7g" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stlhVoH4EeOZq68N3n_w7g" name="billTo" type="_stmISYH4EeOZq68N3n_w7g" aggregation="composite" association="_stmvXYH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhV4H4EeOZq68N3n_w7g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhWIH4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stlhWYH4EeOZq68N3n_w7g" name="shipTo" type="_stmISYH4EeOZq68N3n_w7g" aggregation="composite" association="_stmvYYH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhWoH4EeOZq68N3n_w7g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhW4H4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_stlhXIH4EeOZq68N3n_w7g" name="Item">
+ <ownedAttribute xmi:id="_stlhXYH4EeOZq68N3n_w7g" name="productName" type="_stk6IYH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhXoH4EeOZq68N3n_w7g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhX4H4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stlhYIH4EeOZq68N3n_w7g" name="quantity" type="_stk6IIH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhYYH4EeOZq68N3n_w7g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhYoH4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stlhY4H4EeOZq68N3n_w7g" name="usPrice" type="_stk6IIH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhZIH4EeOZq68N3n_w7g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhZYH4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stlhZoH4EeOZq68N3n_w7g" name="comment" type="_stk6IYH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhZ4H4EeOZq68N3n_w7g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhaIH4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stmIQIH4EeOZq68N3n_w7g" name="shipDate" type="_stk6IoH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIQYH4EeOZq68N3n_w7g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIQoH4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stmIQ4H4EeOZq68N3n_w7g" name="partNum" type="_stk6I4H4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIRIH4EeOZq68N3n_w7g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIRYH4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stmIRoH4EeOZq68N3n_w7g" name="order" type="_stlhQIH4EeOZq68N3n_w7g" association="_stmvXIH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIR4H4EeOZq68N3n_w7g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmISIH4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_stmISYH4EeOZq68N3n_w7g" name="Address" isAbstract="true">
+ <ownedAttribute xmi:id="_stmISoH4EeOZq68N3n_w7g" name="name" type="_stk6IYH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIS4H4EeOZq68N3n_w7g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmITIH4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stmITYH4EeOZq68N3n_w7g" name="country" type="_stk6IYH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIToH4EeOZq68N3n_w7g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIT4H4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_stmIUIH4EeOZq68N3n_w7g" name="USAddress">
+ <generalization xmi:id="_stmIUYH4EeOZq68N3n_w7g" general="_stmISYH4EeOZq68N3n_w7g"/>
+ <ownedAttribute xmi:id="_stmIUoH4EeOZq68N3n_w7g" name="street" type="_stk6IYH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIU4H4EeOZq68N3n_w7g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIVIH4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stmIVYH4EeOZq68N3n_w7g" name="city" type="_stk6IYH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIVoH4EeOZq68N3n_w7g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIV4H4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stmIWIH4EeOZq68N3n_w7g" name="state" type="_stk6IYH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIWYH4EeOZq68N3n_w7g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIWoH4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stmIW4H4EeOZq68N3n_w7g" name="zip" type="_stk6IYH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIXIH4EeOZq68N3n_w7g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIXYH4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_stmIXoH4EeOZq68N3n_w7g" name="GlobalAddress">
+ <generalization xmi:id="_stmIX4H4EeOZq68N3n_w7g" general="_stmISYH4EeOZq68N3n_w7g"/>
+ <generalization xmi:id="_stmIYIH4EeOZq68N3n_w7g" general="_stmIZIH4EeOZq68N3n_w7g"/>
+ <ownedAttribute xmi:id="_stmIYYH4EeOZq68N3n_w7g" name="location" type="_stk6IYH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIYoH4EeOZq68N3n_w7g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIY4H4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_stmIZIH4EeOZq68N3n_w7g" name="GlobalLocation">
+ <ownedAttribute xmi:id="_stmIZYH4EeOZq68N3n_w7g" name="countryCode" type="_stk6IIH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIZoH4EeOZq68N3n_w7g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIZ4H4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_stmIaIH4EeOZq68N3n_w7g" memberEnd="_stk6LIH4EeOZq68N3n_w7g _stmIaYH4EeOZq68N3n_w7g">
+ <ownedEnd xmi:id="_stmIaYH4EeOZq68N3n_w7g" name="" type="_stk6KIH4EeOZq68N3n_w7g" association="_stmIaIH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIaoH4EeOZq68N3n_w7g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIa4H4EeOZq68N3n_w7g" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_stmIbIH4EeOZq68N3n_w7g" memberEnd="_stlhMIH4EeOZq68N3n_w7g _stmIbYH4EeOZq68N3n_w7g">
+ <ownedEnd xmi:id="_stmIbYH4EeOZq68N3n_w7g" name="" type="_stk6KIH4EeOZq68N3n_w7g" association="_stmIbIH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIboH4EeOZq68N3n_w7g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIb4H4EeOZq68N3n_w7g" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_stmIcIH4EeOZq68N3n_w7g" memberEnd="_stlhM4H4EeOZq68N3n_w7g _stmvUIH4EeOZq68N3n_w7g">
+ <ownedEnd xmi:id="_stmvUIH4EeOZq68N3n_w7g" name="" type="_stk6KIH4EeOZq68N3n_w7g" association="_stmIcIH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmvUYH4EeOZq68N3n_w7g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmvUoH4EeOZq68N3n_w7g" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_stmvU4H4EeOZq68N3n_w7g" memberEnd="_stlhNoH4EeOZq68N3n_w7g _stmvVIH4EeOZq68N3n_w7g">
+ <ownedEnd xmi:id="_stmvVIH4EeOZq68N3n_w7g" name="" type="_stk6KIH4EeOZq68N3n_w7g" association="_stmvU4H4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmvVYH4EeOZq68N3n_w7g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmvVoH4EeOZq68N3n_w7g" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_stmvV4H4EeOZq68N3n_w7g" memberEnd="_stlhPYH4EeOZq68N3n_w7g _stlhTYH4EeOZq68N3n_w7g"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_stmvWIH4EeOZq68N3n_w7g" memberEnd="_stlhUIH4EeOZq68N3n_w7g _stmvWYH4EeOZq68N3n_w7g">
+ <ownedEnd xmi:id="_stmvWYH4EeOZq68N3n_w7g" name="" type="_stlhQIH4EeOZq68N3n_w7g" association="_stmvWIH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmvWoH4EeOZq68N3n_w7g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmvW4H4EeOZq68N3n_w7g" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_stmvXIH4EeOZq68N3n_w7g" memberEnd="_stlhU4H4EeOZq68N3n_w7g _stmIRoH4EeOZq68N3n_w7g"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_stmvXYH4EeOZq68N3n_w7g" memberEnd="_stlhVoH4EeOZq68N3n_w7g _stmvXoH4EeOZq68N3n_w7g">
+ <ownedEnd xmi:id="_stmvXoH4EeOZq68N3n_w7g" name="" type="_stlhQIH4EeOZq68N3n_w7g" association="_stmvXYH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmvX4H4EeOZq68N3n_w7g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmvYIH4EeOZq68N3n_w7g" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_stmvYYH4EeOZq68N3n_w7g" memberEnd="_stlhWYH4EeOZq68N3n_w7g _stmvYoH4EeOZq68N3n_w7g">
+ <ownedEnd xmi:id="_stmvYoH4EeOZq68N3n_w7g" name="" type="_stlhQIH4EeOZq68N3n_w7g" association="_stmvYYH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmvY4H4EeOZq68N3n_w7g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmvZIH4EeOZq68N3n_w7g" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+</uml:Model>
diff --git a/examples/org.eclipse.uml2.examples.gettingstarted/plugin.properties b/examples/org.eclipse.uml2.examples.gettingstarted/plugin.properties
new file mode 100644
index 000000000..fa4aec2ee
--- /dev/null
+++ b/examples/org.eclipse.uml2.examples.gettingstarted/plugin.properties
@@ -0,0 +1,14 @@
+# Copyright (c) 2014 CEA and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# Christian W. Damus (CEA) - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+pluginName = Getting Started with UML2 Example Project
+providerName = Eclipse Modeling Project
diff --git a/examples/org.eclipse.uml2.examples.gettingstarted/src/org/eclipse/uml2/examples/gettingstarted/GettingStartedWithUML2.java b/examples/org.eclipse.uml2.examples.gettingstarted/src/org/eclipse/uml2/examples/gettingstarted/GettingStartedWithUML2.java
new file mode 100644
index 000000000..2651640c0
--- /dev/null
+++ b/examples/org.eclipse.uml2.examples.gettingstarted/src/org/eclipse/uml2/examples/gettingstarted/GettingStartedWithUML2.java
@@ -0,0 +1,420 @@
+/*
+ * Copyright (c) 2014 CEA and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Christian W. Damus (CEA) - Initial API and implementation
+ *
+ */
+package org.eclipse.uml2.examples.gettingstarted;
+
+import java.io.File;
+import java.io.IOException;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.uml2.common.util.UML2Util;
+import org.eclipse.uml2.uml.AggregationKind;
+import org.eclipse.uml2.uml.Association;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Enumeration;
+import org.eclipse.uml2.uml.EnumerationLiteral;
+import org.eclipse.uml2.uml.Generalization;
+import org.eclipse.uml2.uml.LiteralUnlimitedNatural;
+import org.eclipse.uml2.uml.Model;
+import org.eclipse.uml2.uml.PrimitiveType;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Type;
+import org.eclipse.uml2.uml.UMLFactory;
+import org.eclipse.uml2.uml.resource.UMLResource;
+import org.eclipse.uml2.uml.resources.util.UMLResourcesUtil;
+
+/**
+ * A Java program that may be run stand-alone (with the required EMF and UML2
+ * bundle JARs on the classpath) to create the example model illustrated in the
+ * <em>Getting Started with UML2</em> article on the Wiki.
+ *
+ * @see http://wiki.eclipse.org/MDT/UML2/Getting_Started_with_UML2
+ */
+public class GettingStartedWithUML2 {
+
+ public static boolean DEBUG = true;
+
+ private static File outputDir;
+
+ /**
+ * The main program. It expects one argument, which is the local filesystem
+ * path of a directory in which to create the <tt>ExtendedPO2.uml</tt> file.
+ *
+ * @param the
+ * program arguments, which must consist of a single filesystem
+ * path
+ */
+ public static void main(String[] args)
+ throws Exception {
+
+ if (!processArgs(args)) {
+ System.exit(1);
+ }
+
+ banner("Creating root model package and primitive types.");
+
+ // Create the root package (a model).
+ Model epo2Model = createModel("epo2");
+
+ // Create primitive types to be used as types of attributes in our
+ // classes.
+ PrimitiveType intPrimitiveType = createPrimitiveType(epo2Model, "int");
+ PrimitiveType stringPrimitiveType = createPrimitiveType(epo2Model,
+ "String");
+ PrimitiveType datePrimitiveType = createPrimitiveType(epo2Model, "Date");
+ PrimitiveType skuPrimitiveType = createPrimitiveType(epo2Model, "SKU");
+
+ // Create enumerations to be used as types of attributes in our classes.
+ Enumeration orderStatusEnumeration = createEnumeration(epo2Model,
+ "OrderStatus");
+ createEnumerationLiteral(orderStatusEnumeration, "Pending");
+ createEnumerationLiteral(orderStatusEnumeration, "BackOrder");
+ createEnumerationLiteral(orderStatusEnumeration, "Complete");
+
+ banner("Creating model classes.");
+
+ // Create the classes.
+ org.eclipse.uml2.uml.Class supplierClass = createClass(epo2Model,
+ "Supplier", false);
+ org.eclipse.uml2.uml.Class customerClass = createClass(epo2Model,
+ "Customer", false);
+ org.eclipse.uml2.uml.Class purchaseOrderClass = createClass(epo2Model,
+ "PurchaseOrder", false);
+ org.eclipse.uml2.uml.Class itemClass = createClass(epo2Model, "Item",
+ false);
+ org.eclipse.uml2.uml.Class addressClass = createClass(epo2Model,
+ "Address", true);
+ org.eclipse.uml2.uml.Class usAddressClass = createClass(epo2Model,
+ "USAddress", false);
+ org.eclipse.uml2.uml.Class globalAddressClass = createClass(epo2Model,
+ "GlobalAddress", false);
+ org.eclipse.uml2.uml.Class globalLocationClass = createClass(epo2Model,
+ "GlobalLocation", false);
+
+ // Create generalization relationships amongst our classes.
+ createGeneralization(usAddressClass, addressClass);
+ createGeneralization(globalAddressClass, addressClass);
+ createGeneralization(globalAddressClass, globalLocationClass);
+
+ banner("Creating attributes of model classes.");
+
+ // Create attributes in our classes.
+ createAttribute(supplierClass, "name", stringPrimitiveType, 0, 1);
+ createAttribute(customerClass, "customerID", intPrimitiveType, 1, 1);
+ createAttribute(purchaseOrderClass, "comment", stringPrimitiveType, 0,
+ 1);
+ createAttribute(purchaseOrderClass, "orderDate", datePrimitiveType, 1,
+ 1);
+ createAttribute(purchaseOrderClass, "status", orderStatusEnumeration,
+ 1, 1);
+ createAttribute(purchaseOrderClass, "totalAmount", intPrimitiveType, 0,
+ 1);
+ createAttribute(itemClass, "productName", stringPrimitiveType, 0, 1);
+ createAttribute(itemClass, "quantity", intPrimitiveType, 0, 1);
+ createAttribute(itemClass, "usPrice", intPrimitiveType, 0, 1);
+ createAttribute(itemClass, "comment", stringPrimitiveType, 0, 1);
+ createAttribute(itemClass, "shipDate", datePrimitiveType, 0, 1);
+ createAttribute(itemClass, "partNum", skuPrimitiveType, 1, 1);
+ createAttribute(addressClass, "name", stringPrimitiveType, 0, 1);
+ createAttribute(addressClass, "country", stringPrimitiveType, 0, 1);
+ createAttribute(usAddressClass, "street", stringPrimitiveType, 1, 1);
+ createAttribute(usAddressClass, "city", stringPrimitiveType, 1, 1);
+ createAttribute(usAddressClass, "state", stringPrimitiveType, 1, 1);
+ createAttribute(usAddressClass, "zip", stringPrimitiveType, 1, 1);
+ createAttribute(globalAddressClass, "location", stringPrimitiveType, 1,
+ 1);
+ createAttribute(globalLocationClass, "countryCode", intPrimitiveType,
+ 1, 1);
+
+ banner("Creating associations between model classes.");
+
+ // Create associations between our classes.
+ createAssociation(supplierClass, true,
+ AggregationKind.COMPOSITE_LITERAL, "orders", 0,
+ LiteralUnlimitedNatural.UNLIMITED, purchaseOrderClass, false,
+ AggregationKind.NONE_LITERAL, "", 1, 1);
+ createAssociation(supplierClass, true, AggregationKind.NONE_LITERAL,
+ "pendingOrders", 0, LiteralUnlimitedNatural.UNLIMITED,
+ purchaseOrderClass, false, AggregationKind.NONE_LITERAL, "", 0, 1);
+ createAssociation(supplierClass, true, AggregationKind.NONE_LITERAL,
+ "shippedOrders", 0, LiteralUnlimitedNatural.UNLIMITED,
+ purchaseOrderClass, false, AggregationKind.NONE_LITERAL, "", 0, 1);
+ createAssociation(supplierClass, true,
+ AggregationKind.COMPOSITE_LITERAL, "customers", 0,
+ LiteralUnlimitedNatural.UNLIMITED, customerClass, false,
+ AggregationKind.NONE_LITERAL, "", 1, 1);
+ createAssociation(customerClass, true, AggregationKind.NONE_LITERAL,
+ "orders", 0, LiteralUnlimitedNatural.UNLIMITED, purchaseOrderClass,
+ true, AggregationKind.NONE_LITERAL, "customer", 1, 1);
+ createAssociation(purchaseOrderClass, true,
+ AggregationKind.NONE_LITERAL, "previousOrder", 0, 1,
+ purchaseOrderClass, false, AggregationKind.NONE_LITERAL, "", 0, 1);
+ createAssociation(purchaseOrderClass, true,
+ AggregationKind.COMPOSITE_LITERAL, "items", 0,
+ LiteralUnlimitedNatural.UNLIMITED, itemClass, true,
+ AggregationKind.NONE_LITERAL, "order", 1, 1);
+ createAssociation(purchaseOrderClass, true,
+ AggregationKind.COMPOSITE_LITERAL, "billTo", 1, 1, addressClass,
+ false, AggregationKind.NONE_LITERAL, "", 1, 1);
+ createAssociation(purchaseOrderClass, true,
+ AggregationKind.COMPOSITE_LITERAL, "shipTo", 1, 1, addressClass,
+ false, AggregationKind.NONE_LITERAL, "", 1, 1);
+
+ // Save our model to a file in the user-specified output directory
+ URI outputURI = URI.createFileURI(outputDir.getAbsolutePath())
+ .appendSegment("ExtendedPO2")
+ .appendFileExtension(UMLResource.FILE_EXTENSION);
+ banner("Saving the model to %s.", outputURI.toFileString());
+ save(epo2Model, outputURI);
+ }
+
+ //
+ // Model-building utilities
+ //
+
+ protected static Model createModel(String name) {
+ Model model = UMLFactory.eINSTANCE.createModel();
+ model.setName(name);
+
+ out("Model '%s' created.", model.getQualifiedName());
+
+ return model;
+ }
+
+ protected static org.eclipse.uml2.uml.Package createPackage(
+ org.eclipse.uml2.uml.Package nestingPackage, String name) {
+
+ org.eclipse.uml2.uml.Package package_ = nestingPackage
+ .createNestedPackage(name);
+
+ out("Package '%s' created.", package_.getQualifiedName());
+
+ return package_;
+ }
+
+ protected static PrimitiveType createPrimitiveType(
+ org.eclipse.uml2.uml.Package package_, String name) {
+
+ PrimitiveType primitiveType = package_.createOwnedPrimitiveType(name);
+
+ out("Primitive type '%s' created.", primitiveType.getQualifiedName());
+
+ return primitiveType;
+ }
+
+ protected static Enumeration createEnumeration(
+ org.eclipse.uml2.uml.Package package_, String name) {
+
+ Enumeration enumeration = package_.createOwnedEnumeration(name);
+
+ out("Enumeration '%s' created.", enumeration.getQualifiedName());
+
+ return enumeration;
+ }
+
+ protected static EnumerationLiteral createEnumerationLiteral(
+ Enumeration enumeration, String name) {
+
+ EnumerationLiteral enumerationLiteral = enumeration
+ .createOwnedLiteral(name);
+
+ out("Enumeration literal '%s' created.",
+ enumerationLiteral.getQualifiedName());
+
+ return enumerationLiteral;
+ }
+
+ protected static org.eclipse.uml2.uml.Class createClass(
+ org.eclipse.uml2.uml.Package package_, String name,
+ boolean isAbstract) {
+
+ org.eclipse.uml2.uml.Class class_ = package_.createOwnedClass(name,
+ isAbstract);
+
+ out("Class '%s' created.", class_.getQualifiedName());
+
+ return class_;
+ }
+
+ protected static Generalization createGeneralization(
+ Classifier specificClassifier, Classifier generalClassifier) {
+
+ Generalization generalization = specificClassifier
+ .createGeneralization(generalClassifier);
+
+ out("Generalization %s --|> %s created.",
+ specificClassifier.getQualifiedName(),
+ generalClassifier.getQualifiedName());
+
+ return generalization;
+ }
+
+ protected static Property createAttribute(
+ org.eclipse.uml2.uml.Class class_, String name, Type type,
+ int lowerBound, int upperBound) {
+
+ Property attribute = class_.createOwnedAttribute(name, type,
+ lowerBound, upperBound);
+
+ out("Attribute '%s' : %s [%s..%s] created.", //
+ attribute.getQualifiedName(), // attribute name
+ type.getQualifiedName(), // type name
+ lowerBound, // no special case for multiplicity lower bound
+ (upperBound == LiteralUnlimitedNatural.UNLIMITED)
+ ? "*" // special case for unlimited bound
+ : upperBound);
+
+ return attribute;
+ }
+
+ protected static Association createAssociation(Type type1,
+ boolean end1IsNavigable, AggregationKind end1Aggregation,
+ String end1Name, int end1LowerBound, int end1UpperBound,
+ Type type2, boolean end2IsNavigable,
+ AggregationKind end2Aggregation, String end2Name,
+ int end2LowerBound, int end2UpperBound) {
+
+ Association association = type1.createAssociation(end1IsNavigable,
+ end1Aggregation, end1Name, end1LowerBound, end1UpperBound, type2,
+ end2IsNavigable, end2Aggregation, end2Name, end2LowerBound,
+ end2UpperBound);
+
+ out("Association %s [%s..%s] %s-%s %s [%s..%s] created.", //
+ UML2Util.isEmpty(end1Name)
+ // compute a placeholder for the name
+ ? String.format("{%s}", type1.getQualifiedName()) //
+ // user-specified name
+ : String.format("'%s::%s'", type1.getQualifiedName(), end1Name), //
+ end1LowerBound, // no special case for this
+ (end1UpperBound == LiteralUnlimitedNatural.UNLIMITED)
+ ? "*" // special case for unlimited upper bound
+ : end1UpperBound, // finite upper bound
+ end2IsNavigable
+ ? "<" // indicate navigability
+ : "-", // not navigable
+ end1IsNavigable
+ ? ">" // indicate navigability
+ : "-", // not navigable
+ UML2Util.isEmpty(end2Name)
+ // compute a placeholder for the name
+ ? String.format("{%s}", type2.getQualifiedName()) //
+ // user-specified name
+ : String.format("'%s::%s'", type2.getQualifiedName(), end2Name), //
+ end2LowerBound, // no special case for this
+ (end2UpperBound == LiteralUnlimitedNatural.UNLIMITED)
+ ? "*" // special case for unlimited upper bound
+ : end2UpperBound);
+
+ return association;
+ }
+
+ //
+ // Program control
+ //
+
+ private static boolean processArgs(String[] args)
+ throws IOException {
+
+ if (args.length != 1) {
+ err("Expected 1 argument.");
+ err("Usage: java -jar ... %s <dir>",
+ GettingStartedWithUML2.class.getSimpleName());
+ err("where");
+ err("<dir> - path to output folder in which to save the UML model");
+ return false;
+ }
+
+ outputDir = new File(args[0]).getCanonicalFile();
+ if (!outputDir.exists()) {
+ err("No such directory: %s", outputDir.getAbsolutePath());
+ return false;
+ }
+
+ if (!outputDir.isDirectory()) {
+ err("Not a directory: %s", outputDir.getAbsolutePath());
+ return false;
+ }
+
+ if (!outputDir.canWrite()) {
+ err("Cannot create a file in directory: %s",
+ outputDir.getAbsolutePath());
+ return false;
+ }
+
+ return true;
+ }
+
+ protected static void save(org.eclipse.uml2.uml.Package package_, URI uri) {
+ // Create a resource-set to contain the resource(s) that we are saving
+ ResourceSet resourceSet = new ResourceSetImpl();
+
+ // Initialize registrations of resource factories, library models,
+ // profiles, Ecore metadata, and other dependencies required for
+ // serializing and working with UML resources. This is only necessary in
+ // applications that are not hosted in the Eclipse platform run-time, in
+ // which case these registrations are discovered automatically from
+ // Eclipse extension points.
+ UMLResourcesUtil.init(resourceSet);
+
+ // Create the output resource and add our model package to it.
+ Resource resource = resourceSet.createResource(uri);
+ resource.getContents().add(package_);
+
+ // And save
+ try {
+ resource.save(null); // no save options needed
+ out("Done.");
+ } catch (IOException ioe) {
+ err(ioe.getMessage());
+ }
+ }
+
+ //
+ // Logging utilities
+ //
+
+ protected static void banner(String format, Object... args) {
+ System.out.println();
+ hrule();
+
+ System.out.printf(format, args);
+ if (!format.endsWith("%n")) {
+ System.out.println();
+ }
+
+ hrule();
+ System.out.println();
+ }
+
+ protected static void hrule() {
+ System.out.println("------------------------------------");
+ }
+
+ protected static void out(String format, Object... args) {
+ if (DEBUG) {
+ System.out.printf(format, args);
+ if (!format.endsWith("%n")) {
+ System.out.println();
+ }
+ }
+ }
+
+ protected static void err(String format, Object... args) {
+ System.err.printf(format, args);
+ if (!format.endsWith("%n")) {
+ System.err.println();
+ }
+ }
+}
diff --git a/examples/org.eclipse.uml2.examples.introtoprofiles/.classpath b/examples/org.eclipse.uml2.examples.introtoprofiles/.classpath
new file mode 100644
index 000000000..64c5e31b7
--- /dev/null
+++ b/examples/org.eclipse.uml2.examples.introtoprofiles/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/examples/org.eclipse.uml2.examples.introtoprofiles/.project b/examples/org.eclipse.uml2.examples.introtoprofiles/.project
new file mode 100644
index 000000000..2740b23fb
--- /dev/null
+++ b/examples/org.eclipse.uml2.examples.introtoprofiles/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.uml2.examples.introtoprofiles</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/examples/org.eclipse.uml2.examples.introtoprofiles/.settings/org.eclipse.jdt.core.prefs b/examples/org.eclipse.uml2.examples.introtoprofiles/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 000000000..66c27085a
--- /dev/null
+++ b/examples/org.eclipse.uml2.examples.introtoprofiles/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+#Wed Nov 08 08:52:48 EST 2006
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/examples/org.eclipse.uml2.examples.introtoprofiles/ExtendedPO2.uml b/examples/org.eclipse.uml2.examples.introtoprofiles/ExtendedPO2.uml
new file mode 100644
index 000000000..da21537ee
--- /dev/null
+++ b/examples/org.eclipse.uml2.examples.introtoprofiles/ExtendedPO2.uml
@@ -0,0 +1,199 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="20110701" xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML" xmi:id="_stid4YH4EeOZq68N3n_w7g" name="epo2">
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_stk6IIH4EeOZq68N3n_w7g" name="int"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_stk6IYH4EeOZq68N3n_w7g" name="String"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_stk6IoH4EeOZq68N3n_w7g" name="Date"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_stk6I4H4EeOZq68N3n_w7g" name="SKU"/>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_stk6JIH4EeOZq68N3n_w7g" name="OrderStatus">
+ <ownedLiteral xmi:id="_stk6JYH4EeOZq68N3n_w7g" name="Pending"/>
+ <ownedLiteral xmi:id="_stk6JoH4EeOZq68N3n_w7g" name="BackOrder"/>
+ <ownedLiteral xmi:id="_stk6J4H4EeOZq68N3n_w7g" name="Complete"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_stk6KIH4EeOZq68N3n_w7g" name="Supplier">
+ <ownedAttribute xmi:id="_stk6KYH4EeOZq68N3n_w7g" name="name" type="_stk6IYH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stk6KoH4EeOZq68N3n_w7g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stk6K4H4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stk6LIH4EeOZq68N3n_w7g" name="orders" type="_stlhQIH4EeOZq68N3n_w7g" aggregation="composite" association="_stmIaIH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stk6LYH4EeOZq68N3n_w7g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stk6LoH4EeOZq68N3n_w7g" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stlhMIH4EeOZq68N3n_w7g" name="pendingOrders" type="_stlhQIH4EeOZq68N3n_w7g" association="_stmIbIH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhMYH4EeOZq68N3n_w7g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhMoH4EeOZq68N3n_w7g" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stlhM4H4EeOZq68N3n_w7g" name="shippedOrders" type="_stlhQIH4EeOZq68N3n_w7g" association="_stmIcIH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhNIH4EeOZq68N3n_w7g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhNYH4EeOZq68N3n_w7g" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stlhNoH4EeOZq68N3n_w7g" name="customers" type="_stlhOYH4EeOZq68N3n_w7g" aggregation="composite" association="_stmvU4H4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhN4H4EeOZq68N3n_w7g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhOIH4EeOZq68N3n_w7g" value="*"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_stlhOYH4EeOZq68N3n_w7g" name="Customer">
+ <ownedAttribute xmi:id="_stlhOoH4EeOZq68N3n_w7g" name="customerID" type="_stk6IIH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhO4H4EeOZq68N3n_w7g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhPIH4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stlhPYH4EeOZq68N3n_w7g" name="orders" type="_stlhQIH4EeOZq68N3n_w7g" association="_stmvV4H4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhPoH4EeOZq68N3n_w7g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhP4H4EeOZq68N3n_w7g" value="*"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_stlhQIH4EeOZq68N3n_w7g" name="PurchaseOrder">
+ <ownedAttribute xmi:id="_stlhQYH4EeOZq68N3n_w7g" name="comment" type="_stk6IYH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhQoH4EeOZq68N3n_w7g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhQ4H4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stlhRIH4EeOZq68N3n_w7g" name="orderDate" type="_stk6IoH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhRYH4EeOZq68N3n_w7g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhRoH4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stlhR4H4EeOZq68N3n_w7g" name="status" type="_stk6JIH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhSIH4EeOZq68N3n_w7g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhSYH4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stlhSoH4EeOZq68N3n_w7g" name="totalAmount" type="_stk6IIH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhS4H4EeOZq68N3n_w7g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhTIH4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stlhTYH4EeOZq68N3n_w7g" name="customer" type="_stlhOYH4EeOZq68N3n_w7g" association="_stmvV4H4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhToH4EeOZq68N3n_w7g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhT4H4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stlhUIH4EeOZq68N3n_w7g" name="previousOrder" type="_stlhQIH4EeOZq68N3n_w7g" association="_stmvWIH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhUYH4EeOZq68N3n_w7g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhUoH4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stlhU4H4EeOZq68N3n_w7g" name="items" type="_stlhXIH4EeOZq68N3n_w7g" aggregation="composite" association="_stmvXIH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhVIH4EeOZq68N3n_w7g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhVYH4EeOZq68N3n_w7g" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stlhVoH4EeOZq68N3n_w7g" name="billTo" type="_stmISYH4EeOZq68N3n_w7g" aggregation="composite" association="_stmvXYH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhV4H4EeOZq68N3n_w7g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhWIH4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stlhWYH4EeOZq68N3n_w7g" name="shipTo" type="_stmISYH4EeOZq68N3n_w7g" aggregation="composite" association="_stmvYYH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhWoH4EeOZq68N3n_w7g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhW4H4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_stlhXIH4EeOZq68N3n_w7g" name="Item">
+ <ownedAttribute xmi:id="_stlhXYH4EeOZq68N3n_w7g" name="productName" type="_stk6IYH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhXoH4EeOZq68N3n_w7g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhX4H4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stlhYIH4EeOZq68N3n_w7g" name="quantity" type="_stk6IIH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhYYH4EeOZq68N3n_w7g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhYoH4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stlhY4H4EeOZq68N3n_w7g" name="usPrice" type="_stk6IIH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhZIH4EeOZq68N3n_w7g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhZYH4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stlhZoH4EeOZq68N3n_w7g" name="comment" type="_stk6IYH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stlhZ4H4EeOZq68N3n_w7g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stlhaIH4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stmIQIH4EeOZq68N3n_w7g" name="shipDate" type="_stk6IoH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIQYH4EeOZq68N3n_w7g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIQoH4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stmIQ4H4EeOZq68N3n_w7g" name="partNum" type="_stk6I4H4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIRIH4EeOZq68N3n_w7g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIRYH4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stmIRoH4EeOZq68N3n_w7g" name="order" type="_stlhQIH4EeOZq68N3n_w7g" association="_stmvXIH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIR4H4EeOZq68N3n_w7g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmISIH4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_stmISYH4EeOZq68N3n_w7g" name="Address" isAbstract="true">
+ <ownedAttribute xmi:id="_stmISoH4EeOZq68N3n_w7g" name="name" type="_stk6IYH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIS4H4EeOZq68N3n_w7g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmITIH4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stmITYH4EeOZq68N3n_w7g" name="country" type="_stk6IYH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIToH4EeOZq68N3n_w7g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIT4H4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_stmIUIH4EeOZq68N3n_w7g" name="USAddress">
+ <generalization xmi:id="_stmIUYH4EeOZq68N3n_w7g" general="_stmISYH4EeOZq68N3n_w7g"/>
+ <ownedAttribute xmi:id="_stmIUoH4EeOZq68N3n_w7g" name="street" type="_stk6IYH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIU4H4EeOZq68N3n_w7g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIVIH4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stmIVYH4EeOZq68N3n_w7g" name="city" type="_stk6IYH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIVoH4EeOZq68N3n_w7g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIV4H4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stmIWIH4EeOZq68N3n_w7g" name="state" type="_stk6IYH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIWYH4EeOZq68N3n_w7g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIWoH4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_stmIW4H4EeOZq68N3n_w7g" name="zip" type="_stk6IYH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIXIH4EeOZq68N3n_w7g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIXYH4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_stmIXoH4EeOZq68N3n_w7g" name="GlobalAddress">
+ <generalization xmi:id="_stmIX4H4EeOZq68N3n_w7g" general="_stmISYH4EeOZq68N3n_w7g"/>
+ <generalization xmi:id="_stmIYIH4EeOZq68N3n_w7g" general="_stmIZIH4EeOZq68N3n_w7g"/>
+ <ownedAttribute xmi:id="_stmIYYH4EeOZq68N3n_w7g" name="location" type="_stk6IYH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIYoH4EeOZq68N3n_w7g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIY4H4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_stmIZIH4EeOZq68N3n_w7g" name="GlobalLocation">
+ <ownedAttribute xmi:id="_stmIZYH4EeOZq68N3n_w7g" name="countryCode" type="_stk6IIH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIZoH4EeOZq68N3n_w7g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIZ4H4EeOZq68N3n_w7g" value="1"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_stmIaIH4EeOZq68N3n_w7g" memberEnd="_stk6LIH4EeOZq68N3n_w7g _stmIaYH4EeOZq68N3n_w7g">
+ <ownedEnd xmi:id="_stmIaYH4EeOZq68N3n_w7g" name="" type="_stk6KIH4EeOZq68N3n_w7g" association="_stmIaIH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIaoH4EeOZq68N3n_w7g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIa4H4EeOZq68N3n_w7g" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_stmIbIH4EeOZq68N3n_w7g" memberEnd="_stlhMIH4EeOZq68N3n_w7g _stmIbYH4EeOZq68N3n_w7g">
+ <ownedEnd xmi:id="_stmIbYH4EeOZq68N3n_w7g" name="" type="_stk6KIH4EeOZq68N3n_w7g" association="_stmIbIH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmIboH4EeOZq68N3n_w7g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmIb4H4EeOZq68N3n_w7g" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_stmIcIH4EeOZq68N3n_w7g" memberEnd="_stlhM4H4EeOZq68N3n_w7g _stmvUIH4EeOZq68N3n_w7g">
+ <ownedEnd xmi:id="_stmvUIH4EeOZq68N3n_w7g" name="" type="_stk6KIH4EeOZq68N3n_w7g" association="_stmIcIH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmvUYH4EeOZq68N3n_w7g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmvUoH4EeOZq68N3n_w7g" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_stmvU4H4EeOZq68N3n_w7g" memberEnd="_stlhNoH4EeOZq68N3n_w7g _stmvVIH4EeOZq68N3n_w7g">
+ <ownedEnd xmi:id="_stmvVIH4EeOZq68N3n_w7g" name="" type="_stk6KIH4EeOZq68N3n_w7g" association="_stmvU4H4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmvVYH4EeOZq68N3n_w7g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmvVoH4EeOZq68N3n_w7g" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_stmvV4H4EeOZq68N3n_w7g" memberEnd="_stlhPYH4EeOZq68N3n_w7g _stlhTYH4EeOZq68N3n_w7g"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_stmvWIH4EeOZq68N3n_w7g" memberEnd="_stlhUIH4EeOZq68N3n_w7g _stmvWYH4EeOZq68N3n_w7g">
+ <ownedEnd xmi:id="_stmvWYH4EeOZq68N3n_w7g" name="" type="_stlhQIH4EeOZq68N3n_w7g" association="_stmvWIH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmvWoH4EeOZq68N3n_w7g"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmvW4H4EeOZq68N3n_w7g" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_stmvXIH4EeOZq68N3n_w7g" memberEnd="_stlhU4H4EeOZq68N3n_w7g _stmIRoH4EeOZq68N3n_w7g"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="_stmvXYH4EeOZq68N3n_w7g" memberEnd="_stlhVoH4EeOZq68N3n_w7g _stmvXoH4EeOZq68N3n_w7g">
+ <ownedEnd xmi:id="_stmvXoH4EeOZq68N3n_w7g" name="" type="_stlhQIH4EeOZq68N3n_w7g" association="_stmvXYH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmvX4H4EeOZq68N3n_w7g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmvYIH4EeOZq68N3n_w7g" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_stmvYYH4EeOZq68N3n_w7g" memberEnd="_stlhWYH4EeOZq68N3n_w7g _stmvYoH4EeOZq68N3n_w7g">
+ <ownedEnd xmi:id="_stmvYoH4EeOZq68N3n_w7g" name="" type="_stlhQIH4EeOZq68N3n_w7g" association="_stmvYYH4EeOZq68N3n_w7g">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_stmvY4H4EeOZq68N3n_w7g" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_stmvZIH4EeOZq68N3n_w7g" value="1"/>
+ </ownedEnd>
+ </packagedElement>
+</uml:Model>
diff --git a/examples/org.eclipse.uml2.examples.introtoprofiles/IntroductionToUMLProfiles.launch b/examples/org.eclipse.uml2.examples.introtoprofiles/IntroductionToUMLProfiles.launch
new file mode 100644
index 000000000..ed34d78c9
--- /dev/null
+++ b/examples/org.eclipse.uml2.examples.introtoprofiles/IntroductionToUMLProfiles.launch
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
+<listEntry value="/org.eclipse.uml2.examples.introtoprofiles/src/org/eclipse/uml2/examples/introtoprofiles/IntroductionToUMLProfiles.java"/>
+</listAttribute>
+<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
+<listEntry value="1"/>
+</listAttribute>
+<booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
+<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.eclipse.uml2.examples.introtoprofiles.IntroductionToUMLProfiles"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="${project_loc:/org.eclipse.uml2.examples.introtoprofiles}"/>
+<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="org.eclipse.uml2.examples.introtoprofiles"/>
+</launchConfiguration>
diff --git a/examples/org.eclipse.uml2.examples.introtoprofiles/META-INF/MANIFEST.MF b/examples/org.eclipse.uml2.examples.introtoprofiles/META-INF/MANIFEST.MF
new file mode 100644
index 000000000..fd8497176
--- /dev/null
+++ b/examples/org.eclipse.uml2.examples.introtoprofiles/META-INF/MANIFEST.MF
@@ -0,0 +1,10 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.uml2.examples.introtoprofiles
+Bundle-Version: 5.0.0.qualifier
+Bundle-Vendor: %providerName
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Bundle-Localization: plugin
+Require-Bundle: org.eclipse.uml2.uml,
+ org.eclipse.uml2.uml.resources
diff --git a/examples/org.eclipse.uml2.examples.introtoprofiles/build.properties b/examples/org.eclipse.uml2.examples.introtoprofiles/build.properties
new file mode 100644
index 000000000..a9fa4ddba
--- /dev/null
+++ b/examples/org.eclipse.uml2.examples.introtoprofiles/build.properties
@@ -0,0 +1,14 @@
+# Copyright (c) 2014 CEA and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# Christian W. Damus (CEA) - initial API and implementation
+#
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.properties
diff --git a/examples/org.eclipse.uml2.examples.introtoprofiles/plugin.properties b/examples/org.eclipse.uml2.examples.introtoprofiles/plugin.properties
new file mode 100644
index 000000000..5bea4f07b
--- /dev/null
+++ b/examples/org.eclipse.uml2.examples.introtoprofiles/plugin.properties
@@ -0,0 +1,14 @@
+# Copyright (c) 2014 CEA and others.
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Eclipse Public License v1.0
+# which accompanies this distribution, and is available at
+# http://www.eclipse.org/legal/epl-v10.html
+#
+# Contributors:
+# Christian W. Damus (CEA) - initial API and implementation
+#
+
+# NLS_MESSAGEFORMAT_VAR
+
+pluginName = Introduction to UML Profiles Example Project
+providerName = Eclipse Modeling Project
diff --git a/examples/org.eclipse.uml2.examples.introtoprofiles/profiles/Ecore.graffle b/examples/org.eclipse.uml2.examples.introtoprofiles/profiles/Ecore.graffle
new file mode 100644
index 000000000..fc12c4319
--- /dev/null
+++ b/examples/org.eclipse.uml2.examples.introtoprofiles/profiles/Ecore.graffle
@@ -0,0 +1,1090 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>ActiveLayerIndex</key>
+ <integer>0</integer>
+ <key>ApplicationVersion</key>
+ <array>
+ <string>com.omnigroup.OmniGraffle.MacAppStore</string>
+ <string>139.18</string>
+ </array>
+ <key>AutoAdjust</key>
+ <true/>
+ <key>BackgroundGraphic</key>
+ <dict>
+ <key>Bounds</key>
+ <string>{{0, 0}, {733, 576}}</string>
+ <key>Class</key>
+ <string>SolidGraphic</string>
+ <key>ID</key>
+ <integer>2</integer>
+ <key>Style</key>
+ <dict>
+ <key>shadow</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ <key>stroke</key>
+ <dict>
+ <key>Draws</key>
+ <string>NO</string>
+ </dict>
+ </dict>
+ </dict>
+ <key>BaseZoom</key>
+ <integer>0</integer>
+ <key>CanvasOrigin</key>
+ <string>{0, 0}</string>
+ <key>ColumnAlign</key>
+ <integer>1</integer>
+ <key>ColumnSpacing</key>
+ <real>36</real>
+ <key>CreationDate</key>
+ <string>2014-01-20 15:22:54 +0000</string>
+ <key>Creator</key>
+ <string>Christian W. Damus</string>
+ <key>DisplayScale</key>
+ <string>1 0/72 in = 1.0000 in</string>
+ <key>GraphDocumentVersion</key>
+ <integer>8</integer>
+ <key>GraphicsList</key>
+ <array>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>10</integer>
+ <key>Info</key>
+ <integer>2</integer>
+ </dict>
+ <key>ID</key>
+ <integer>135</integer>
+ <key>OrthogonalBarAutomatic</key>
+ <false/>
+ <key>OrthogonalBarPoint</key>
+ <string>{0, 0}</string>
+ <key>OrthogonalBarPosition</key>
+ <real>24</real>
+ <key>Points</key>
+ <array>
+ <string>{370.87620268213163, 342.33507913166756}</string>
+ <string>{276, 428}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>HeadArrow</key>
+ <string>FilledArrow</string>
+ <key>HeadScale</key>
+ <real>1.5000001192092896</real>
+ <key>Legacy</key>
+ <true/>
+ <key>LineType</key>
+ <integer>2</integer>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>132</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>10</integer>
+ <key>Info</key>
+ <integer>2</integer>
+ </dict>
+ <key>ID</key>
+ <integer>134</integer>
+ <key>OrthogonalBarAutomatic</key>
+ <false/>
+ <key>OrthogonalBarPoint</key>
+ <string>{0, 0}</string>
+ <key>OrthogonalBarPosition</key>
+ <real>38</real>
+ <key>Points</key>
+ <array>
+ <string>{157.22412184048872, 328.32141989750818}</string>
+ <string>{276, 428}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>HeadArrow</key>
+ <string>FilledArrow</string>
+ <key>HeadScale</key>
+ <real>1.5000001192092896</real>
+ <key>Legacy</key>
+ <true/>
+ <key>LineType</key>
+ <integer>2</integer>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>128</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>28</integer>
+ <key>Info</key>
+ <integer>1</integer>
+ </dict>
+ <key>ID</key>
+ <integer>133</integer>
+ <key>OrthogonalBarAutomatic</key>
+ <true/>
+ <key>OrthogonalBarPoint</key>
+ <string>{0, 0}</string>
+ <key>OrthogonalBarPosition</key>
+ <real>14.865490913391113</real>
+ <key>Points</key>
+ <array>
+ <string>{356.64520555737698, 271.73098227066612}</string>
+ <string>{261.5, 211}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>HeadArrow</key>
+ <string>UMLInheritance</string>
+ <key>Legacy</key>
+ <true/>
+ <key>LineType</key>
+ <integer>2</integer>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>130</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>LineGraphic</string>
+ <key>Head</key>
+ <dict>
+ <key>ID</key>
+ <integer>28</integer>
+ </dict>
+ <key>ID</key>
+ <integer>27</integer>
+ <key>OrthogonalBarAutomatic</key>
+ <true/>
+ <key>OrthogonalBarPoint</key>
+ <string>{0, 0}</string>
+ <key>OrthogonalBarPosition</key>
+ <real>14.861750602722168</real>
+ <key>Points</key>
+ <array>
+ <string>{170.00992477597092, 271.72350125488657}</string>
+ <string>{261.5, 211}</string>
+ </array>
+ <key>Style</key>
+ <dict>
+ <key>stroke</key>
+ <dict>
+ <key>HeadArrow</key>
+ <string>UMLInheritance</string>
+ <key>Legacy</key>
+ <true/>
+ <key>LineType</key>
+ <integer>2</integer>
+ <key>TailArrow</key>
+ <string>0</string>
+ </dict>
+ </dict>
+ <key>Tail</key>
+ <dict>
+ <key>ID</key>
+ <integer>126</integer>
+ </dict>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>TableGroup</string>
+ <key>Graphics</key>
+ <array>
+ <dict>
+ <key>Bounds</key>
+ <string>{{277.5, 272}, {203, 28}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>130</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientCenter</key>
+ <string>{-0.29411799999999999, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\fs24 \cf0 \'abstereotype\'bb
+\b \
+EReference}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{277.5, 300}, {203, 28}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>131</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientCenter</key>
+ <string>{-0.29411799999999999, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\fs24 \cf0 referenceName : String [0..1]\
+isResolveProxies : Boolean = true}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{277.5, 328}, {203, 14}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>132</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientCenter</key>
+ <string>{-0.29411799999999999, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\fs24 \cf0 }</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ <key>GridH</key>
+ <array>
+ <integer>130</integer>
+ <integer>131</integer>
+ <integer>132</integer>
+ <array/>
+ </array>
+ <key>ID</key>
+ <integer>129</integer>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>TableGroup</string>
+ <key>Graphics</key>
+ <array>
+ <dict>
+ <key>Bounds</key>
+ <string>{{47, 272}, {203, 28}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>126</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientCenter</key>
+ <string>{-0.29411799999999999, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\fs24 \cf0 \'abstereotype\'bb
+\b \
+EAttribute}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{47, 300}, {203, 14}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>127</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientCenter</key>
+ <string>{-0.29411799999999999, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\fs24 \cf0 attributeName : String [0..1]}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{47, 314}, {203, 14}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>128</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientCenter</key>
+ <string>{-0.29411799999999999, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\fs24 \cf0 }</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ <key>GridH</key>
+ <array>
+ <integer>126</integer>
+ <integer>127</integer>
+ <integer>128</integer>
+ <array/>
+ </array>
+ <key>ID</key>
+ <integer>125</integer>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>TableGroup</string>
+ <key>Graphics</key>
+ <array>
+ <dict>
+ <key>Bounds</key>
+ <string>{{580, 71}, {122, 28}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>123</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientCenter</key>
+ <string>{-0.29411799999999999, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\fs24 \cf0 \'abenumeration\'bb
+\b \
+FeatureKind}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{580, 99}, {122, 98}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>124</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientCenter</key>
+ <string>{-0.29411799999999999, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\fs24 \cf0 Unspecified\
+Simple\
+Attribute\
+Element\
+AttributeWildcard\
+ElementWildcard\
+Group}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ <key>GridH</key>
+ <array>
+ <integer>123</integer>
+ <integer>124</integer>
+ <array/>
+ </array>
+ <key>ID</key>
+ <integer>122</integer>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>TableGroup</string>
+ <key>Graphics</key>
+ <array>
+ <dict>
+ <key>Bounds</key>
+ <string>{{421, 71}, {135, 28}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>34</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientCenter</key>
+ <string>{-0.29411799999999999, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\fs24 \cf0 \'abenumeration\'bb
+\b \
+VisibilityKind}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{421, 99}, {135, 84}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>35</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientCenter</key>
+ <string>{-0.29411799999999999, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\fs24 \cf0 Unspecified\
+None\
+ReadOnly\
+ReadWrite\
+ReadOnlyUnsettable\
+ReadWriteUnsettable}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ <key>GridH</key>
+ <array>
+ <integer>34</integer>
+ <integer>35</integer>
+ <array/>
+ </array>
+ <key>ID</key>
+ <integer>33</integer>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{40, 490}, {145, 36}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>ID</key>
+ <integer>120</integer>
+ <key>Magnets</key>
+ <array>
+ <string>{0, 1}</string>
+ <string>{0, -1}</string>
+ <string>{1, 0}</string>
+ <string>{-1, 0}</string>
+ </array>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict/>
+ <key>Text</key>
+ <dict>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 String\
+
+\b0 (from PrimitiveTypes)}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{40, 428}, {145, 36}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>ID</key>
+ <integer>119</integer>
+ <key>Magnets</key>
+ <array>
+ <string>{0, 1}</string>
+ <string>{0, -1}</string>
+ <string>{1, 0}</string>
+ <string>{-1, 0}</string>
+ </array>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict/>
+ <key>Text</key>
+ <dict>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\b\fs24 \cf0 Boolean\
+
+\b0 (from PrimitiveTypes)}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Class</key>
+ <string>TableGroup</string>
+ <key>Graphics</key>
+ <array>
+ <dict>
+ <key>Bounds</key>
+ <string>{{160, 71}, {203, 28}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>42</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientCenter</key>
+ <string>{-0.29411799999999999, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\fs24 \cf0 \'abstereotype\'bb
+\b \
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\i \cf0 EStructuralFeature}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{160, 99}, {203, 98}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>43</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientCenter</key>
+ <string>{-0.29411799999999999, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\fs24 \cf0 isTransient : Boolean [0..1]\
+isUnsettable : Boolean [0..1]\
+isVolatile : Boolean [0..1]\
+visibility : VisibilityKind [0..1]\
+xmlName : String [0..1]\
+xmlNamespace : String [0..1]\
+xmlFeatureKind : FeatureKind [0..1]}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{160, 197}, {203, 14}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>FitText</key>
+ <string>Vertical</string>
+ <key>Flow</key>
+ <string>Resize</string>
+ <key>ID</key>
+ <integer>44</integer>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict>
+ <key>fill</key>
+ <dict>
+ <key>GradientCenter</key>
+ <string>{-0.29411799999999999, -0.264706}</string>
+ </dict>
+ </dict>
+ <key>Text</key>
+ <dict>
+ <key>Align</key>
+ <integer>0</integer>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
+
+\f0\fs24 \cf0 }</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ <key>TextPlacement</key>
+ <integer>0</integer>
+ </dict>
+ </array>
+ <key>GridH</key>
+ <array>
+ <integer>42</integer>
+ <integer>43</integer>
+ <integer>44</integer>
+ <array/>
+ </array>
+ <key>GroupConnect</key>
+ <string>YES</string>
+ <key>ID</key>
+ <integer>28</integer>
+ <key>Magnets</key>
+ <array>
+ <string>{0, 1}</string>
+ <string>{0, -1}</string>
+ <string>{1, 0}</string>
+ <string>{-1, 0}</string>
+ </array>
+ </dict>
+ <dict>
+ <key>Bounds</key>
+ <string>{{231, 428}, {90, 52}}</string>
+ <key>Class</key>
+ <string>ShapedGraphic</string>
+ <key>ID</key>
+ <integer>10</integer>
+ <key>Magnets</key>
+ <array>
+ <string>{0, 1}</string>
+ <string>{0, -1}</string>
+ <string>{1, 0}</string>
+ <string>{-1, 0}</string>
+ </array>
+ <key>Shape</key>
+ <string>Rectangle</string>
+ <key>Style</key>
+ <dict/>
+ <key>Text</key>
+ <dict>
+ <key>Text</key>
+ <string>{\rtf1\ansi\ansicpg1252\cocoartf1265
+\cocoascreenfonts1{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
+{\colortbl;\red255\green255\blue255;}
+\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc
+
+\f0\fs24 \cf0 \'abmetaclass\'bb
+\b \
+Property\
+
+\b0 (from UML)}</string>
+ <key>VerticalPad</key>
+ <integer>0</integer>
+ </dict>
+ </dict>
+ </array>
+ <key>GridInfo</key>
+ <dict/>
+ <key>GuidesLocked</key>
+ <string>NO</string>
+ <key>GuidesVisible</key>
+ <string>YES</string>
+ <key>HPages</key>
+ <integer>1</integer>
+ <key>ImageCounter</key>
+ <integer>1</integer>
+ <key>KeepToScale</key>
+ <false/>
+ <key>Layers</key>
+ <array>
+ <dict>
+ <key>Lock</key>
+ <string>NO</string>
+ <key>Name</key>
+ <string>Layer 1</string>
+ <key>Print</key>
+ <string>YES</string>
+ <key>View</key>
+ <string>YES</string>
+ </dict>
+ </array>
+ <key>LayoutInfo</key>
+ <dict>
+ <key>Animate</key>
+ <string>NO</string>
+ <key>circoMinDist</key>
+ <real>18</real>
+ <key>circoSeparation</key>
+ <real>0.0</real>
+ <key>layoutEngine</key>
+ <string>dot</string>
+ <key>neatoSeparation</key>
+ <real>0.0</real>
+ <key>twopiSeparation</key>
+ <real>0.0</real>
+ </dict>
+ <key>LinksVisible</key>
+ <string>NO</string>
+ <key>MagnetsVisible</key>
+ <string>NO</string>
+ <key>MasterSheets</key>
+ <array/>
+ <key>ModificationDate</key>
+ <string>2014-01-20 22:02:49 +0000</string>
+ <key>Modifier</key>
+ <string>Christian W. Damus</string>
+ <key>NotesVisible</key>
+ <string>NO</string>
+ <key>Orientation</key>
+ <integer>1</integer>
+ <key>OriginVisible</key>
+ <string>NO</string>
+ <key>PageBreaks</key>
+ <string>YES</string>
+ <key>PrintInfo</key>
+ <dict>
+ <key>NSBottomMargin</key>
+ <array>
+ <string>float</string>
+ <string>41</string>
+ </array>
+ <key>NSHorizonalPagination</key>
+ <array>
+ <string>coded</string>
+ <string>BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFxlwCG</string>
+ </array>
+ <key>NSLeftMargin</key>
+ <array>
+ <string>float</string>
+ <string>18</string>
+ </array>
+ <key>NSPaperSize</key>
+ <array>
+ <string>size</string>
+ <string>{612, 792}</string>
+ </array>
+ <key>NSPrintReverseOrientation</key>
+ <array>
+ <string>int</string>
+ <string>0</string>
+ </array>
+ <key>NSRightMargin</key>
+ <array>
+ <string>float</string>
+ <string>18</string>
+ </array>
+ <key>NSTopMargin</key>
+ <array>
+ <string>float</string>
+ <string>18</string>
+ </array>
+ </dict>
+ <key>PrintOnePage</key>
+ <false/>
+ <key>ReadOnly</key>
+ <string>NO</string>
+ <key>RowAlign</key>
+ <integer>1</integer>
+ <key>RowSpacing</key>
+ <real>36</real>
+ <key>SheetTitle</key>
+ <string>Canvas 1</string>
+ <key>SmartAlignmentGuidesActive</key>
+ <string>YES</string>
+ <key>SmartDistanceGuidesActive</key>
+ <string>YES</string>
+ <key>UniqueID</key>
+ <integer>1</integer>
+ <key>UseEntirePage</key>
+ <false/>
+ <key>VPages</key>
+ <integer>1</integer>
+ <key>WindowInfo</key>
+ <dict>
+ <key>CurrentSheet</key>
+ <integer>0</integer>
+ <key>ExpandedCanvases</key>
+ <array>
+ <dict>
+ <key>name</key>
+ <string>Canvas 1</string>
+ </dict>
+ </array>
+ <key>Frame</key>
+ <string>{{1021, 77}, {1043, 872}}</string>
+ <key>ListView</key>
+ <true/>
+ <key>OutlineWidth</key>
+ <integer>142</integer>
+ <key>RightSidebar</key>
+ <false/>
+ <key>ShowRuler</key>
+ <true/>
+ <key>Sidebar</key>
+ <true/>
+ <key>SidebarWidth</key>
+ <integer>120</integer>
+ <key>VisibleRegion</key>
+ <string>{{-88, -78}, {908, 733}}</string>
+ <key>Zoom</key>
+ <real>1</real>
+ <key>ZoomValues</key>
+ <array>
+ <array>
+ <string>Canvas 1</string>
+ <real>1</real>
+ <real>1</real>
+ </array>
+ </array>
+ </dict>
+</dict>
+</plist>
diff --git a/examples/org.eclipse.uml2.examples.introtoprofiles/profiles/Ecore.png b/examples/org.eclipse.uml2.examples.introtoprofiles/profiles/Ecore.png
new file mode 100644
index 000000000..d8507881d
--- /dev/null
+++ b/examples/org.eclipse.uml2.examples.introtoprofiles/profiles/Ecore.png
Binary files differ
diff --git a/examples/org.eclipse.uml2.examples.introtoprofiles/profiles/Ecore.profile.uml b/examples/org.eclipse.uml2.examples.introtoprofiles/profiles/Ecore.profile.uml
new file mode 100644
index 000000000..d2056bd1d
--- /dev/null
+++ b/examples/org.eclipse.uml2.examples.introtoprofiles/profiles/Ecore.profile.uml
@@ -0,0 +1,164 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Profile xmi:version="20110701" xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML" xmi:id="_SHb-oIIcEeOAOd2oyrcqGg" name="ecore" URI="http://www.eclipse.org/schema/UML2/examples/ecore" metaclassReference="_SHclvIIcEeOAOd2oyrcqGg">
+ <eAnnotations xmi:id="_SHb-oYIcEeOAOd2oyrcqGg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <contents xmi:type="ecore:EPackage" xmi:id="_SHb-ooIcEeOAOd2oyrcqGg" name="ecore" nsURI="http://www.eclipse.org/schema/UML2/examples/ecore" nsPrefix="ecore">
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_SHb-o4IcEeOAOd2oyrcqGg" name="VisibilityKind">
+ <eAnnotations xmi:id="_SHb-pIIcEeOAOd2oyrcqGg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_SHclvYIcEeOAOd2oyrcqGg"/>
+ <eLiterals xmi:id="_SHb-pYIcEeOAOd2oyrcqGg" name="Unspecified"/>
+ <eLiterals xmi:id="_SHb-poIcEeOAOd2oyrcqGg" name="None" value="1"/>
+ <eLiterals xmi:id="_SHb-p4IcEeOAOd2oyrcqGg" name="ReadOnly" value="2"/>
+ <eLiterals xmi:id="_SHb-qIIcEeOAOd2oyrcqGg" name="ReadWrite" value="3"/>
+ <eLiterals xmi:id="_SHb-qYIcEeOAOd2oyrcqGg" name="ReadOnlyUnsettable" value="4"/>
+ <eLiterals xmi:id="_SHb-qoIcEeOAOd2oyrcqGg" name="ReadWriteUnsettable" value="5"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EEnum" xmi:id="_SHb-q4IcEeOAOd2oyrcqGg" name="FeatureKind">
+ <eAnnotations xmi:id="_SHb-rIIcEeOAOd2oyrcqGg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_SHclxIIcEeOAOd2oyrcqGg"/>
+ <eLiterals xmi:id="_SHb-rYIcEeOAOd2oyrcqGg" name="Unspecified"/>
+ <eLiterals xmi:id="_SHb-roIcEeOAOd2oyrcqGg" name="Simple" value="1"/>
+ <eLiterals xmi:id="_SHb-r4IcEeOAOd2oyrcqGg" name="Attribute" value="2"/>
+ <eLiterals xmi:id="_SHb-sIIcEeOAOd2oyrcqGg" name="Element" value="3"/>
+ <eLiterals xmi:id="_SHb-sYIcEeOAOd2oyrcqGg" name="AttributeWildcard" value="4"/>
+ <eLiterals xmi:id="_SHb-soIcEeOAOd2oyrcqGg" name="ElementWildcard" value="5"/>
+ <eLiterals xmi:id="_SHb-s4IcEeOAOd2oyrcqGg" name="Group" value="6"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_SHb-tIIcEeOAOd2oyrcqGg" name="EStructuralFeature" abstract="true">
+ <eAnnotations xmi:id="_SHb-tYIcEeOAOd2oyrcqGg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_SHclzIIcEeOAOd2oyrcqGg"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_SHb-toIcEeOAOd2oyrcqGg" name="isTransient" ordered="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//Boolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_SHb-uIIcEeOAOd2oyrcqGg" name="isUnsettable" ordered="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//Boolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_SHb-uoIcEeOAOd2oyrcqGg" name="isVolatile" ordered="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//Boolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_SHb-vIIcEeOAOd2oyrcqGg" name="visibility" ordered="false" eType="_SHb-o4IcEeOAOd2oyrcqGg" defaultValueLiteral="Unspecified"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_SHb-voIcEeOAOd2oyrcqGg" name="xmlName" ordered="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//String"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_SHb-wIIcEeOAOd2oyrcqGg" name="xmlNamespace" ordered="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//String"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_SHb-woIcEeOAOd2oyrcqGg" name="xmlFeatureKind" ordered="false" eType="_SHb-q4IcEeOAOd2oyrcqGg" defaultValueLiteral="Unspecified"/>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_SHb-xIIcEeOAOd2oyrcqGg" name="EAttribute" eSuperTypes="_SHb-tIIcEeOAOd2oyrcqGg">
+ <eAnnotations xmi:id="_SHb-xYIcEeOAOd2oyrcqGg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_SHcl5IIcEeOAOd2oyrcqGg"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_SHb-xoIcEeOAOd2oyrcqGg" name="attributeName" ordered="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//String"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_SHb-yIIcEeOAOd2oyrcqGg" name="base_Property" ordered="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Property"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ <eClassifiers xmi:type="ecore:EClass" xmi:id="_SHclsYIcEeOAOd2oyrcqGg" name="EReference" eSuperTypes="_SHb-tIIcEeOAOd2oyrcqGg">
+ <eAnnotations xmi:id="_SHclsoIcEeOAOd2oyrcqGg" source="http://www.eclipse.org/uml2/2.0.0/UML" references="_SHcl6oIcEeOAOd2oyrcqGg"/>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_SHcls4IcEeOAOd2oyrcqGg" name="referenceName" ordered="false">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//String"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_SHcltYIcEeOAOd2oyrcqGg" name="isResolveProxies" ordered="false" defaultValueLiteral="true">
+ <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/4.0.0/Types#//Boolean"/>
+ </eStructuralFeatures>
+ <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_SHclt4IcEeOAOd2oyrcqGg" name="base_Property" ordered="false" lowerBound="1">
+ <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/4.0.0/UML#//Property"/>
+ </eStructuralFeatures>
+ </eClassifiers>
+ </contents>
+ </eAnnotations>
+ <elementImport xmi:id="_SHcluoIcEeOAOd2oyrcqGg">
+ <importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </elementImport>
+ <elementImport xmi:id="_SHclu4IcEeOAOd2oyrcqGg">
+ <importedElement xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </elementImport>
+ <elementImport xmi:id="_SHclvIIcEeOAOd2oyrcqGg">
+ <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+ </elementImport>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_SHclvYIcEeOAOd2oyrcqGg" name="VisibilityKind">
+ <ownedLiteral xmi:id="_SHclvoIcEeOAOd2oyrcqGg" name="Unspecified"/>
+ <ownedLiteral xmi:id="_SHclv4IcEeOAOd2oyrcqGg" name="None"/>
+ <ownedLiteral xmi:id="_SHclwIIcEeOAOd2oyrcqGg" name="ReadOnly"/>
+ <ownedLiteral xmi:id="_SHclwYIcEeOAOd2oyrcqGg" name="ReadWrite"/>
+ <ownedLiteral xmi:id="_SHclwoIcEeOAOd2oyrcqGg" name="ReadOnlyUnsettable"/>
+ <ownedLiteral xmi:id="_SHclw4IcEeOAOd2oyrcqGg" name="ReadWriteUnsettable"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Enumeration" xmi:id="_SHclxIIcEeOAOd2oyrcqGg" name="FeatureKind">
+ <ownedLiteral xmi:id="_SHclxYIcEeOAOd2oyrcqGg" name="Unspecified"/>
+ <ownedLiteral xmi:id="_SHclxoIcEeOAOd2oyrcqGg" name="Simple"/>
+ <ownedLiteral xmi:id="_SHclx4IcEeOAOd2oyrcqGg" name="Attribute"/>
+ <ownedLiteral xmi:id="_SHclyIIcEeOAOd2oyrcqGg" name="Element"/>
+ <ownedLiteral xmi:id="_SHclyYIcEeOAOd2oyrcqGg" name="AttributeWildcard"/>
+ <ownedLiteral xmi:id="_SHclyoIcEeOAOd2oyrcqGg" name="ElementWildcard"/>
+ <ownedLiteral xmi:id="_SHcly4IcEeOAOd2oyrcqGg" name="Group"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_SHclzIIcEeOAOd2oyrcqGg" name="EStructuralFeature" isAbstract="true">
+ <ownedAttribute xmi:id="_SHclzYIcEeOAOd2oyrcqGg" name="isTransient">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SHclzoIcEeOAOd2oyrcqGg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SHclz4IcEeOAOd2oyrcqGg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SHcl0IIcEeOAOd2oyrcqGg" name="isUnsettable">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SHcl0YIcEeOAOd2oyrcqGg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SHcl0oIcEeOAOd2oyrcqGg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SHcl04IcEeOAOd2oyrcqGg" name="isVolatile">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SHcl1IIcEeOAOd2oyrcqGg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SHcl1YIcEeOAOd2oyrcqGg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SHcl1oIcEeOAOd2oyrcqGg" name="visibility" type="_SHclvYIcEeOAOd2oyrcqGg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SHcl14IcEeOAOd2oyrcqGg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SHcl2IIcEeOAOd2oyrcqGg" value="1"/>
+ <defaultValue xmi:type="uml:InstanceValue" xmi:id="_SHcl2YIcEeOAOd2oyrcqGg" instance="_SHclvoIcEeOAOd2oyrcqGg"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SHcl2oIcEeOAOd2oyrcqGg" name="xmlName">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SHcl24IcEeOAOd2oyrcqGg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SHcl3IIcEeOAOd2oyrcqGg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SHcl3YIcEeOAOd2oyrcqGg" name="xmlNamespace">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SHcl3oIcEeOAOd2oyrcqGg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SHcl34IcEeOAOd2oyrcqGg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SHcl4IIcEeOAOd2oyrcqGg" name="xmlFeatureKind" type="_SHclxIIcEeOAOd2oyrcqGg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SHcl4YIcEeOAOd2oyrcqGg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SHcl4oIcEeOAOd2oyrcqGg" value="1"/>
+ <defaultValue xmi:type="uml:InstanceValue" xmi:id="_SHcl44IcEeOAOd2oyrcqGg" instance="_SHclxYIcEeOAOd2oyrcqGg"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_SHcl5IIcEeOAOd2oyrcqGg" name="EAttribute">
+ <generalization xmi:id="_SHcl5YIcEeOAOd2oyrcqGg" general="_SHclzIIcEeOAOd2oyrcqGg"/>
+ <ownedAttribute xmi:id="_SHcl5oIcEeOAOd2oyrcqGg" name="attributeName">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SHcl54IcEeOAOd2oyrcqGg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SHcl6IIcEeOAOd2oyrcqGg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SHcl6YIcEeOAOd2oyrcqGg" name="base_Property" association="_SHdMwIIcEeOAOd2oyrcqGg">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Stereotype" xmi:id="_SHcl6oIcEeOAOd2oyrcqGg" name="EReference">
+ <generalization xmi:id="_SHcl64IcEeOAOd2oyrcqGg" general="_SHclzIIcEeOAOd2oyrcqGg"/>
+ <ownedAttribute xmi:id="_SHcl7IIcEeOAOd2oyrcqGg" name="referenceName">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SHcl7YIcEeOAOd2oyrcqGg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SHcl7oIcEeOAOd2oyrcqGg" value="1"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SHcl74IcEeOAOd2oyrcqGg" name="isResolveProxies">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_SHcl8IIcEeOAOd2oyrcqGg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_SHcl8YIcEeOAOd2oyrcqGg" value="1"/>
+ <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_SHcl8oIcEeOAOd2oyrcqGg" value="true"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="_SHcl84IcEeOAOd2oyrcqGg" name="base_Property" association="_SHdMwoIcEeOAOd2oyrcqGg">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_SHdMwIIcEeOAOd2oyrcqGg" name="Property_EAttribute" memberEnd="_SHdMwYIcEeOAOd2oyrcqGg _SHcl6YIcEeOAOd2oyrcqGg">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_SHdMwYIcEeOAOd2oyrcqGg" name="extension_EAttribute" type="_SHcl5IIcEeOAOd2oyrcqGg" aggregation="composite" association="_SHdMwIIcEeOAOd2oyrcqGg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Extension" xmi:id="_SHdMwoIcEeOAOd2oyrcqGg" name="Property_EReference" memberEnd="_SHdMw4IcEeOAOd2oyrcqGg _SHcl84IcEeOAOd2oyrcqGg">
+ <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_SHdMw4IcEeOAOd2oyrcqGg" name="extension_EReference" type="_SHcl6oIcEeOAOd2oyrcqGg" aggregation="composite" association="_SHdMwoIcEeOAOd2oyrcqGg"/>
+ </packagedElement>
+</uml:Profile>
diff --git a/examples/org.eclipse.uml2.examples.introtoprofiles/src/org/eclipse/uml2/examples/introtoprofiles/IntroductionToUMLProfiles.java b/examples/org.eclipse.uml2.examples.introtoprofiles/src/org/eclipse/uml2/examples/introtoprofiles/IntroductionToUMLProfiles.java
new file mode 100644
index 000000000..fdd0b826b
--- /dev/null
+++ b/examples/org.eclipse.uml2.examples.introtoprofiles/src/org/eclipse/uml2/examples/introtoprofiles/IntroductionToUMLProfiles.java
@@ -0,0 +1,616 @@
+/*
+ * Copyright (c) 2014 CEA and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Christian W. Damus (CEA) - Initial API and implementation
+ *
+ */
+package org.eclipse.uml2.examples.introtoprofiles;
+
+import java.io.File;
+import java.io.IOException;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.common.util.WrappedException;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.uml2.uml.Classifier;
+import org.eclipse.uml2.uml.Enumeration;
+import org.eclipse.uml2.uml.EnumerationLiteral;
+import org.eclipse.uml2.uml.Extension;
+import org.eclipse.uml2.uml.Generalization;
+import org.eclipse.uml2.uml.InstanceValue;
+import org.eclipse.uml2.uml.LiteralBoolean;
+import org.eclipse.uml2.uml.LiteralString;
+import org.eclipse.uml2.uml.LiteralUnlimitedNatural;
+import org.eclipse.uml2.uml.Model;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.PrimitiveType;
+import org.eclipse.uml2.uml.Profile;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Stereotype;
+import org.eclipse.uml2.uml.Type;
+import org.eclipse.uml2.uml.UMLFactory;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.uml2.uml.resource.UMLResource;
+import org.eclipse.uml2.uml.resources.util.UMLResourcesUtil;
+
+
+/**
+ * A Java program that may be run stand-alone (with the required EMF and UML2
+ * bundle JARs on the classpath) to create the example profile illustrated in
+ * the <em>Introduction to UML Profiles</em> article on the Wiki.
+ *
+ * @see http://wiki.eclipse.org/MDT/UML2/Introduction_to_UML2_Profiles
+ */
+public class IntroductionToUMLProfiles {
+
+ public static boolean DEBUG = true;
+
+ private static File outputDir;
+
+ private static final ResourceSet RESOURCE_SET;
+
+ static {
+ // Create a resource-set to contain the resource(s) that we load and
+ // save
+ RESOURCE_SET = new ResourceSetImpl();
+
+ // Initialize registrations of resource factories, library models,
+ // profiles, Ecore metadata, and other dependencies required for
+ // serializing and working with UML resources. This is only necessary in
+ // applications that are not hosted in the Eclipse platform run-time, in
+ // which case these registrations are discovered automatically from
+ // Eclipse extension points.
+ UMLResourcesUtil.init(RESOURCE_SET);
+
+ }
+
+ /**
+ * The main program. It expects one argument, which is the local filesystem
+ * path of a directory in which to create the <tt>Ecore.profile.uml</tt>
+ * file.
+ *
+ * @param the
+ * program arguments, which must consist of a single filesystem
+ * path
+ */
+ public static void main(String[] args)
+ throws Exception {
+
+ if (!processArgs(args)) {
+ System.exit(1);
+ }
+
+ banner("Creating root profile package and importing primitive types.");
+
+ // Create the root profile package.
+ Profile ecoreProfile = createProfile("ecore",
+ "http://www.eclipse.org/schema/UML2/examples/ecore");
+
+ // Import UML standard primitive types to be used as types of attributes
+ // in our stereotypes.
+ PrimitiveType booleanPrimitiveType = importPrimitiveType(ecoreProfile,
+ "Boolean");
+ PrimitiveType stringPrimitiveType = importPrimitiveType(ecoreProfile,
+ "String");
+
+ banner("Creating profile enumeration types.");
+
+ // Create enumerations to be used as types of attributes in our
+ // stereotypes.
+ Enumeration visibilityKindEnumeration = createEnumeration(ecoreProfile,
+ "VisibilityKind");
+ Enumeration featureKindEnumeration = createEnumeration(ecoreProfile,
+ "FeatureKind");
+ createEnumerationLiteral(visibilityKindEnumeration, "Unspecified");
+ createEnumerationLiteral(visibilityKindEnumeration, "None");
+ createEnumerationLiteral(visibilityKindEnumeration, "ReadOnly");
+ createEnumerationLiteral(visibilityKindEnumeration, "ReadWrite");
+ createEnumerationLiteral(visibilityKindEnumeration,
+ "ReadOnlyUnsettable");
+ createEnumerationLiteral(visibilityKindEnumeration,
+ "ReadWriteUnsettable");
+ createEnumerationLiteral(featureKindEnumeration, "Unspecified");
+ createEnumerationLiteral(featureKindEnumeration, "Simple");
+ createEnumerationLiteral(featureKindEnumeration, "Attribute");
+ createEnumerationLiteral(featureKindEnumeration, "Element");
+ createEnumerationLiteral(featureKindEnumeration, "AttributeWildcard");
+ createEnumerationLiteral(featureKindEnumeration, "ElementWildcard");
+ createEnumerationLiteral(featureKindEnumeration, "Group");
+
+ banner("Creating stereotypes.");
+
+ // Create the stereotypes.
+ Stereotype eStructuralFeatureStereotype = createStereotype(
+ ecoreProfile, "EStructuralFeature", true);
+ Stereotype eAttributeStereotype = createStereotype(ecoreProfile,
+ "EAttribute", false);
+ Stereotype eReferenceStereotype = createStereotype(ecoreProfile,
+ "EReference", false);
+
+ // Create generalization relationships amongst our stereotypes.
+ createGeneralization(eAttributeStereotype, eStructuralFeatureStereotype);
+ createGeneralization(eReferenceStereotype, eStructuralFeatureStereotype);
+
+ banner("Creating attributes (\"tagged values\") of the stereotypes.");
+
+ // Create attributes in our stereotypes.
+ Property isTransientProperty = createAttribute(
+ eStructuralFeatureStereotype, "isTransient", booleanPrimitiveType,
+ 0, 1, null);
+ Property isUnsettableProperty = createAttribute(
+ eStructuralFeatureStereotype, "isUnsettable", booleanPrimitiveType,
+ 0, 1, null);
+ Property isVolatileProperty = createAttribute(
+ eStructuralFeatureStereotype, "isVolatile", booleanPrimitiveType,
+ 0, 1, null);
+ Property visibilityProperty = createAttribute(
+ eStructuralFeatureStereotype, "visibility",
+ visibilityKindEnumeration, 0, 1, "Unspecified");
+ Property xmlNameProperty = createAttribute(
+ eStructuralFeatureStereotype, "xmlName", stringPrimitiveType, 0, 1,
+ null);
+ Property xmlNamespaceProperty = createAttribute(
+ eStructuralFeatureStereotype, "xmlNamespace", stringPrimitiveType,
+ 0, 1, null);
+ Property xmlFeatureKindProperty = createAttribute(
+ eStructuralFeatureStereotype, "xmlFeatureKind",
+ featureKindEnumeration, 0, 1, "Unspecified");
+ Property attributeNameProperty = createAttribute(eAttributeStereotype,
+ "attributeName", stringPrimitiveType, 0, 1, null);
+ Property referenceNameProperty = createAttribute(eReferenceStereotype,
+ "referenceName", stringPrimitiveType, 0, 1, null);
+ Property isResolveProxiesProperty = createAttribute(
+ eReferenceStereotype, "isResolveProxies", booleanPrimitiveType, 0,
+ 1, true);
+
+ banner("Creating metaclass extensions for the stereotypes.");
+
+ // Reference metaclasses from UML that we will extend with our
+ // stereotypes.
+ org.eclipse.uml2.uml.Class propertyMetaclass = referenceMetaclass(
+ ecoreProfile, UMLPackage.Literals.PROPERTY.getName());
+
+ // Create metaclass extensions for our stereotypes.
+ createExtension(propertyMetaclass, eAttributeStereotype, false);
+ createExtension(propertyMetaclass, eReferenceStereotype, false);
+
+ banner("Defining the profile (creating the Ecore metamodel).");
+
+ // Create the Ecore definition of the profile to prepare for use.
+ defineProfile(ecoreProfile);
+
+ // Save our profile to a file in the user-specified output directory
+ URI outputURI = URI.createFileURI(outputDir.getAbsolutePath())
+ .appendSegment("Ecore")
+ .appendFileExtension(UMLResource.PROFILE_FILE_EXTENSION);
+ banner("Saving the profile to %s.", outputURI.toFileString());
+ save(ecoreProfile, outputURI);
+
+ banner("Applying the profile to an example model.");
+
+ // Load a model to which to apply the profile
+ Model epo2Model = (Model) load(URI.createURI(args[0])
+ .appendSegment("ExtendedPO2")
+ .appendFileExtension(UMLResource.FILE_EXTENSION));
+
+ // Apply the profile to the model
+ applyProfile(epo2Model, ecoreProfile);
+
+ banner("Applying stereotypes to elements in the model.");
+
+ // Apply stereotypes to some model elements
+ org.eclipse.uml2.uml.Class supplierClass = (org.eclipse.uml2.uml.Class) epo2Model
+ .getOwnedType("Supplier");
+ Property pendingOrdersProperty = supplierClass.getOwnedAttribute(
+ "pendingOrders", null);
+ applyStereotype(pendingOrdersProperty, eReferenceStereotype);
+ Property shippedOrdersProperty = supplierClass.getOwnedAttribute(
+ "shippedOrders", null);
+ applyStereotype(shippedOrdersProperty, eReferenceStereotype);
+ org.eclipse.uml2.uml.Class customerClass = (org.eclipse.uml2.uml.Class) epo2Model
+ .getOwnedType("Customer");
+ Property ordersProperty = customerClass.getOwnedAttribute("orders",
+ null);
+ applyStereotype(ordersProperty, eReferenceStereotype);
+ org.eclipse.uml2.uml.Class purchaseOrderClass = (org.eclipse.uml2.uml.Class) epo2Model
+ .getOwnedType("PurchaseOrder");
+ Property customerProperty = purchaseOrderClass.getOwnedAttribute(
+ "customer", null);
+ applyStereotype(customerProperty, eReferenceStereotype);
+ Property previousOrderProperty = purchaseOrderClass.getOwnedAttribute(
+ "previousOrder", null);
+ applyStereotype(previousOrderProperty, eReferenceStereotype);
+ Property totalAmountProperty = purchaseOrderClass.getOwnedAttribute(
+ "totalAmount", null);
+ // This is not a reference property
+ applyStereotype(totalAmountProperty, eAttributeStereotype);
+
+ banner("Inspecting stereotype attribute values (\"tagged values\") in the model.");
+
+ // Inspect some stereotype property values
+ getStereotypePropertyValue(pendingOrdersProperty, eReferenceStereotype,
+ isVolatileProperty);
+ getStereotypePropertyValue(pendingOrdersProperty, eReferenceStereotype,
+ isTransientProperty);
+ getStereotypePropertyValue(pendingOrdersProperty, eReferenceStereotype,
+ visibilityProperty);
+ getStereotypePropertyValue(pendingOrdersProperty, eReferenceStereotype,
+ referenceNameProperty);
+ getStereotypePropertyValue(pendingOrdersProperty, eReferenceStereotype,
+ isResolveProxiesProperty);
+ getStereotypePropertyValue(totalAmountProperty, eAttributeStereotype,
+ isUnsettableProperty);
+ getStereotypePropertyValue(totalAmountProperty, eAttributeStereotype,
+ xmlNameProperty);
+ getStereotypePropertyValue(totalAmountProperty, eAttributeStereotype,
+ xmlNamespaceProperty);
+ getStereotypePropertyValue(totalAmountProperty, eAttributeStereotype,
+ xmlFeatureKindProperty);
+ getStereotypePropertyValue(totalAmountProperty, eAttributeStereotype,
+ attributeNameProperty);
+
+ banner("Setting stereotype attribute values in the model.");
+
+ // Set new values for the stereotype properties
+ setStereotypePropertyValue(pendingOrdersProperty, eReferenceStereotype,
+ isVolatileProperty, true);
+ setStereotypePropertyValue(pendingOrdersProperty, eReferenceStereotype,
+ isTransientProperty, true);
+ setStereotypePropertyValue(pendingOrdersProperty, eReferenceStereotype,
+ visibilityProperty, "ReadWrite");
+ setStereotypePropertyValue(pendingOrdersProperty, eReferenceStereotype,
+ referenceNameProperty, "pending");
+ setStereotypePropertyValue(pendingOrdersProperty, eReferenceStereotype,
+ isResolveProxiesProperty, false);
+ setStereotypePropertyValue(totalAmountProperty, eAttributeStereotype,
+ isUnsettableProperty, true);
+ setStereotypePropertyValue(totalAmountProperty, eAttributeStereotype,
+ xmlNameProperty, "total");
+ setStereotypePropertyValue(totalAmountProperty, eAttributeStereotype,
+ xmlNamespaceProperty,
+ "http://www.eclipse.org/schema/UML2/examples/ecore/xml");
+ setStereotypePropertyValue(totalAmountProperty, eAttributeStereotype,
+ xmlFeatureKindProperty, "Element");
+ setStereotypePropertyValue(totalAmountProperty, eAttributeStereotype,
+ attributeNameProperty, "total");
+
+ banner("Reading new stereotype attribute values in the model.");
+
+ // Inspect the stereotype property values again
+ getStereotypePropertyValue(pendingOrdersProperty, eReferenceStereotype,
+ isVolatileProperty);
+ getStereotypePropertyValue(pendingOrdersProperty, eReferenceStereotype,
+ isTransientProperty);
+ getStereotypePropertyValue(pendingOrdersProperty, eReferenceStereotype,
+ visibilityProperty);
+ getStereotypePropertyValue(pendingOrdersProperty, eReferenceStereotype,
+ referenceNameProperty);
+ getStereotypePropertyValue(pendingOrdersProperty, eReferenceStereotype,
+ isResolveProxiesProperty);
+ getStereotypePropertyValue(totalAmountProperty, eAttributeStereotype,
+ isUnsettableProperty);
+ getStereotypePropertyValue(totalAmountProperty, eAttributeStereotype,
+ xmlNameProperty);
+ getStereotypePropertyValue(totalAmountProperty, eAttributeStereotype,
+ xmlNamespaceProperty);
+ getStereotypePropertyValue(totalAmountProperty, eAttributeStereotype,
+ xmlFeatureKindProperty);
+ getStereotypePropertyValue(totalAmountProperty, eAttributeStereotype,
+ attributeNameProperty);
+ }
+
+ //
+ // Profile- and model-building utilities
+ //
+
+ protected static Profile createProfile(String name, String nsURI) {
+ Profile profile = UMLFactory.eINSTANCE.createProfile();
+ profile.setName(name);
+ profile.setURI(nsURI);
+
+ out("Profile '%s' created.", profile.getQualifiedName());
+
+ return profile;
+ }
+
+ protected static PrimitiveType importPrimitiveType(
+ org.eclipse.uml2.uml.Package package_, String name) {
+
+ org.eclipse.uml2.uml.Package umlLibrary = (org.eclipse.uml2.uml.Package) load(URI
+ .createURI(UMLResource.UML_PRIMITIVE_TYPES_LIBRARY_URI));
+
+ PrimitiveType primitiveType = (PrimitiveType) umlLibrary
+ .getOwnedType(name);
+
+ package_.createElementImport(primitiveType);
+
+ out("Primitive type '%s' imported.", primitiveType.getQualifiedName());
+
+ return primitiveType;
+ }
+
+ protected static Enumeration createEnumeration(
+ org.eclipse.uml2.uml.Package package_, String name) {
+
+ Enumeration enumeration = package_.createOwnedEnumeration(name);
+
+ out("Enumeration '%s' created.", enumeration.getQualifiedName());
+
+ return enumeration;
+ }
+
+ protected static EnumerationLiteral createEnumerationLiteral(
+ Enumeration enumeration, String name) {
+
+ EnumerationLiteral enumerationLiteral = enumeration
+ .createOwnedLiteral(name);
+
+ out("Enumeration literal '%s' created.",
+ enumerationLiteral.getQualifiedName());
+
+ return enumerationLiteral;
+ }
+
+ protected static Stereotype createStereotype(Profile profile, String name,
+ boolean isAbstract) {
+
+ Stereotype stereotype = profile.createOwnedStereotype(name, isAbstract);
+
+ out("Stereotype '%s' created.", stereotype.getQualifiedName());
+
+ return stereotype;
+ }
+
+ protected static Generalization createGeneralization(
+ Classifier specificClassifier, Classifier generalClassifier) {
+
+ Generalization generalization = specificClassifier
+ .createGeneralization(generalClassifier);
+
+ out("Generalization %s --|> %s created.",
+ specificClassifier.getQualifiedName(),
+ generalClassifier.getQualifiedName());
+
+ return generalization;
+ }
+
+ protected static Property createAttribute(
+ org.eclipse.uml2.uml.Class class_, String name, Type type,
+ int lowerBound, int upperBound, Object defaultValue) {
+
+ Property attribute = class_.createOwnedAttribute(name, type,
+ lowerBound, upperBound);
+
+ if (defaultValue instanceof Boolean) {
+ LiteralBoolean literal = (LiteralBoolean) attribute
+ .createDefaultValue(null, null,
+ UMLPackage.Literals.LITERAL_BOOLEAN);
+ literal.setValue(((Boolean) defaultValue).booleanValue());
+ } else if (defaultValue instanceof String) {
+ if (type instanceof Enumeration) {
+ InstanceValue value = (InstanceValue) attribute
+ .createDefaultValue(null, null,
+ UMLPackage.Literals.INSTANCE_VALUE);
+ value.setInstance(((Enumeration) type)
+ .getOwnedLiteral((String) defaultValue));
+ } else {
+ LiteralString literal = (LiteralString) attribute
+ .createDefaultValue(null, null,
+ UMLPackage.Literals.LITERAL_STRING);
+ literal.setValue((String) defaultValue);
+ }
+ }
+
+ out("Attribute '%s' : %s [%s..%s]%s created.", //
+ attribute.getQualifiedName(), // attribute name
+ type.getQualifiedName(), // type name
+ lowerBound, // no special case for multiplicity lower bound
+ (upperBound == LiteralUnlimitedNatural.UNLIMITED)
+ ? "*" // special case for unlimited bound
+ : upperBound, // finite upper bound
+ (defaultValue == null)
+ ? "" // no default value (use type's intrinsic default)
+ : String.format(" = %s", defaultValue));
+
+ return attribute;
+ }
+
+ protected static org.eclipse.uml2.uml.Class referenceMetaclass(
+ Profile profile, String name) {
+
+ Model umlMetamodel = (Model) load(URI
+ .createURI(UMLResource.UML_METAMODEL_URI));
+
+ org.eclipse.uml2.uml.Class metaclass = (org.eclipse.uml2.uml.Class) umlMetamodel
+ .getOwnedType(name);
+
+ profile.createMetaclassReference(metaclass);
+
+ out("Metaclass '%s' referenced.", metaclass.getQualifiedName());
+
+ return metaclass;
+ }
+
+ protected static Extension createExtension(
+ org.eclipse.uml2.uml.Class metaclass, Stereotype stereotype,
+ boolean required) {
+
+ Extension extension = stereotype.createExtension(metaclass, required);
+
+ out("%sxtension '%s' created.", //
+ required
+ ? "Required e" // it's a required extension
+ : "E", // an optional extension
+ extension.getQualifiedName());
+
+ return extension;
+ }
+
+ protected static void defineProfile(Profile profile) {
+ profile.define();
+
+ out("Profile '%s' defined.", profile.getQualifiedName());
+ }
+
+ protected static void applyProfile(org.eclipse.uml2.uml.Package package_,
+ Profile profile) {
+
+ package_.applyProfile(profile);
+
+ out("Profile '%s' applied to package '%s'.",
+ profile.getQualifiedName(), package_.getQualifiedName());
+ }
+
+ protected static void applyStereotype(NamedElement namedElement,
+ Stereotype stereotype) {
+
+ namedElement.applyStereotype(stereotype);
+
+ out("Stereotype '%s' applied to element '%s'.",
+ stereotype.getQualifiedName(), namedElement.getQualifiedName());
+ }
+
+ protected static Object getStereotypePropertyValue(
+ NamedElement namedElement, Stereotype stereotype, Property property) {
+
+ Object value = namedElement.getValue(stereotype, property.getName());
+
+ out("Value of stereotype property '%s' on element '%s' is %s.",
+ property.getQualifiedName(), namedElement.getQualifiedName(), value);
+
+ return value;
+ }
+
+ protected static void setStereotypePropertyValue(NamedElement namedElement,
+ Stereotype stereotype, Property property, Object value) {
+
+ Object valueToSet = value;
+
+ if ((value instanceof String)
+ && (property.getType() instanceof Enumeration)) {
+ // Get the corresponding enumeration literal
+ valueToSet = ((Enumeration) property.getType())
+ .getOwnedLiteral((String) value);
+ }
+
+ namedElement.setValue(stereotype, property.getName(), valueToSet);
+
+ out("Value of stereotype property '%s' on element '%s' set to %s.",
+ property.getQualifiedName(), namedElement.getQualifiedName(), value);
+ }
+
+ //
+ // Program control
+ //
+
+ private static boolean processArgs(String[] args)
+ throws IOException {
+
+ if (args.length != 1) {
+ err("Expected 1 argument.");
+ err("Usage: java -jar ... %s <dir>",
+ IntroductionToUMLProfiles.class.getSimpleName());
+ err("where");
+ err("<dir> - path to output folder in which to save the UML profile");
+ return false;
+ }
+
+ outputDir = new File(args[0]).getCanonicalFile();
+ if (!outputDir.exists()) {
+ err("No such directory: %s", outputDir.getAbsolutePath());
+ return false;
+ }
+
+ if (!outputDir.isDirectory()) {
+ err("Not a directory: %s", outputDir.getAbsolutePath());
+ return false;
+ }
+
+ if (!outputDir.canWrite()) {
+ err("Cannot create a file in directory: %s",
+ outputDir.getAbsolutePath());
+ return false;
+ }
+
+ return true;
+ }
+
+ protected static void save(org.eclipse.uml2.uml.Package package_, URI uri) {
+ // Create the resource to be saved and add the package to it
+ Resource resource = RESOURCE_SET.createResource(uri);
+ resource.getContents().add(package_);
+
+ // And save.
+ try {
+ resource.save(null);
+ out("Done.");
+ } catch (IOException ioe) {
+ err(ioe.getMessage());
+ }
+ }
+
+ protected static org.eclipse.uml2.uml.Package load(URI uri) {
+ org.eclipse.uml2.uml.Package package_ = null;
+
+ try {
+ // Load the requested resource
+ Resource resource = RESOURCE_SET.getResource(uri, true);
+
+ // Get the first (should be only) package from it
+ package_ = (org.eclipse.uml2.uml.Package) EcoreUtil
+ .getObjectByType(resource.getContents(),
+ UMLPackage.Literals.PACKAGE);
+ } catch (WrappedException we) {
+ err(we.getMessage());
+ System.exit(1);
+ }
+
+ return package_;
+ }
+
+ //
+ // Logging utilities
+ //
+
+ protected static void banner(String format, Object... args) {
+ System.out.println();
+ hrule();
+
+ System.out.printf(format, args);
+ if (!format.endsWith("%n")) {
+ System.out.println();
+ }
+
+ hrule();
+ System.out.println();
+ }
+
+ protected static void hrule() {
+ System.out.println("------------------------------------");
+ }
+
+ protected static void out(String format, Object... args) {
+ if (DEBUG) {
+ System.out.printf(format, args);
+ if (!format.endsWith("%n")) {
+ System.out.println();
+ }
+ }
+ }
+
+ protected static void err(String format, Object... args) {
+ System.err.printf(format, args);
+ if (!format.endsWith("%n")) {
+ System.err.println();
+ }
+ }
+}

Back to the top