Remove FMU export (i.e., the FMU wrapper and the FMU exporter).

Add plugin oep.moka.fmi.export.rcp that provide in its resources the
Moka RCP for FMI export.

Change-Id: Ie1e8d7457a9082ecdf3fb353b7765d689ccb9a76
Signed-off-by: jeremie.tatibouet <jeremie.tatibouet@cea.fr>
diff --git a/.project b/.project
deleted file mode 100644
index f819ae9..0000000
--- a/.project
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<projectDescription>

-	<name>org.eclipse.papyrus-moka</name>

-	<comment></comment>

-	<projects>

-	</projects>

-	<buildSpec>

-	</buildSpec>

-	<natures>

-	</natures>

-</projectDescription>

diff --git a/bundles/core/pom.xml b/bundles/core/pom.xml
index 7943c8e..5bd5e9b 100644
--- a/bundles/core/pom.xml
+++ b/bundles/core/pom.xml
@@ -9,13 +9,14 @@
 	<parent>

 		<groupId>org.eclipse.papyrus.moka</groupId>

 		<artifactId>org.eclipse.papyrus.moka.bundles</artifactId>

-		<version>2.0.100-SNAPSHOT</version>

+		<version>2.1.0-SNAPSHOT</version>

 	</parent>

 	

 	<!-- POM Description -->

 	<artifactId>org.eclipse.papyrus.moka.bundles.core</artifactId>

 	<packaging>pom</packaging>

 	<name>Moka Core (Core folder)</name>

+	<version>2.0.100-SNAPSHOT</version>

 	

 	<!-- Modules to build -->

 	<modules>

diff --git a/bundles/fmi/engines/pom.xml b/bundles/fmi/engines/pom.xml
index f3ddf8f..9e093d4 100644
--- a/bundles/fmi/engines/pom.xml
+++ b/bundles/fmi/engines/pom.xml
@@ -9,13 +9,14 @@
 	<parent>

 		<groupId>org.eclipse.papyrus.moka</groupId>

 		<artifactId>org.eclipse.papyrus.moka.bundles.fmi</artifactId>

-		<version>2.0.100-SNAPSHOT</version>

+		<version>2.1.0-SNAPSHOT</version>

 	</parent>

 	

 	<!-- POM Description -->

 	<artifactId>org.eclipse.papyrus.moka.bundles.fmi.engines</artifactId>

 	<packaging>pom</packaging>

 	<name>FMI Engines (Engines folder)</name>

+	<version>2.0.100-SNAPSHOT</version>

 	

 	<!-- Modules to build -->

 	<modules>

diff --git a/bundles/fmi/language/pom.xml b/bundles/fmi/language/pom.xml
index fce2251..8d5d319 100644
--- a/bundles/fmi/language/pom.xml
+++ b/bundles/fmi/language/pom.xml
@@ -8,13 +8,14 @@
 	<parent>

 		<groupId>org.eclipse.papyrus.moka</groupId>

 		<artifactId>org.eclipse.papyrus.moka.bundles.fmi</artifactId>

-		<version>2.0.100-SNAPSHOT</version>

+		<version>2.1.0-SNAPSHOT</version>

 	</parent>

 

 	<!-- POM Description -->

 	<artifactId>org.eclipse.papyrus.moka.bundles.fmi.language</artifactId>

 	<packaging>pom</packaging>

 	<name>FMI Language (Language folder)</name>

+	<version>2.0.100-SNAPSHOT</version>

 

 	<!-- Modules to build -->

 	<modules>

diff --git a/bundles/fmi/pom.xml b/bundles/fmi/pom.xml
index adf1039..f0bb6d9 100644
--- a/bundles/fmi/pom.xml
+++ b/bundles/fmi/pom.xml
@@ -9,7 +9,7 @@
 	<parent>

 		<groupId>org.eclipse.papyrus.moka</groupId>

 		<artifactId>org.eclipse.papyrus.moka.bundles</artifactId>

-		<version>2.0.100-SNAPSHOT</version>

+		<version>2.1.0-SNAPSHOT</version>

 	</parent>

 	

 	<!-- POM Description -->

diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/.classpath b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/.classpath
deleted file mode 100644
index 54f561c..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/.classpath
+++ /dev/null
@@ -1,7 +0,0 @@
-<?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/JavaSE-1.8"/>

-	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>

-	<classpathentry kind="src" path="src"/>

-	<classpathentry kind="output" path="target/classes"/>

-</classpath>

diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/.project b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/.project
deleted file mode 100644
index 9c88b5e..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/.project
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<projectDescription>

-	<name>org.eclipse.papyrus.moka.fmi.exporter</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>

-		<buildCommand>

-			<name>org.eclipse.m2e.core.maven2Builder</name>

-			<arguments>

-			</arguments>

-		</buildCommand>

-	</buildSpec>

-	<natures>

-		<nature>org.eclipse.m2e.core.maven2Nature</nature>

-		<nature>org.eclipse.pde.PluginNature</nature>

-		<nature>org.eclipse.jdt.core.javanature</nature>

-	</natures>

-</projectDescription>

diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/META-INF/MANIFEST.MF b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/META-INF/MANIFEST.MF
deleted file mode 100644
index f19854a..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,14 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Name: Moka FMU Exporter
-Bundle-SymbolicName: org.eclipse.papyrus.moka.fmi.exporter
-Bundle-Version: 2.0.100.qualifier
-Bundle-Activator: org.eclipse.papyrus.moka.fmi.exporter.Activator
-Bundle-Vendor: Eclipse Modeling Project
-Require-Bundle: org.eclipse.core.runtime;bundle-version="[3.13.0,4.0.0)",
- org.eclipse.papyrus.moka.fmi.profile;bundle-version="2.0.100",
- org.eclipse.papyrus.moka.utils;bundle-version="2.0.100",
- org.eclipse.papyrus.moka.fmu.rcp;bundle-version="2.0.100"
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
-Bundle-ActivationPolicy: lazy
-Export-Package: org.eclipse.papyrus.moka.fmi.exporter
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/about.html b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/about.html
deleted file mode 100644
index 82d49bf..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/about.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

-<html xmlns="http://www.w3.org/1999/xhtml">

-<head>

-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>

-<title>About</title>

-</head>

-<body lang="EN-US">

-<h2>About This Content</h2>

- 

-<p>June 5, 2007</p>	

-<h3>License</h3>

-

-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 

-indicated below, the Content is provided to you under the terms and conditions of the

-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 

-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.

-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>

-

-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 

-being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may

-apply to your use of any object code in the Content.  Check the Redistributor's license that was 

-provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise

-indicated below, the terms and conditions of the EPL still apply to any source code in the Content

-and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>

-

-</body>

-</html>

diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/pom.xml b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/pom.xml
deleted file mode 100644
index 6f28529..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/pom.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

-	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

-	<modelVersion>4.0.0</modelVersion>

-

-	<!-- Parent POM (i.e., Tools) -->

-	<parent>

-		<groupId>org.eclipse.papyrus.moka</groupId>

-		<artifactId>org.eclipse.papyrus.moka.bundles.fmi.tools</artifactId>

-		<version>2.0.100-SNAPSHOT</version>

-	</parent>

-

-	<!-- POM Description -->

-	<artifactId>org.eclipse.papyrus.moka.fmi.exporter</artifactId>

-	<packaging>eclipse-plugin</packaging>

-	<name>org.eclipse.papyrus.moka.fmi.exporter</name>

-	<description>UML to FMU exporter</description>

-	

-	<dependencies>

-		<dependency>

-			<groupId>org.eclipse.papyrus.moka</groupId>

-			<artifactId>org.eclipse.papyrus.moka.fmu.product</artifactId>

-			<version>2.0.0-SNAPSHOT</version>

-			<type>eclipse-repository</type>

-		</dependency>

-	</dependencies>

-

-</project>
\ No newline at end of file
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/resources/linux32/.gitignore b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/resources/linux32/.gitignore
deleted file mode 100644
index 131f5a3..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/resources/linux32/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-# Ignore everything in this directory

-*.zip

-# Except this file

-!.gitignore
\ No newline at end of file
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/resources/linux32/libfmuwrapper.so b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/resources/linux32/libfmuwrapper.so
deleted file mode 100755
index 2fc41c5..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/resources/linux32/libfmuwrapper.so
+++ /dev/null
Binary files differ
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/resources/linux64/.gitignore b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/resources/linux64/.gitignore
deleted file mode 100644
index 131f5a3..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/resources/linux64/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-# Ignore everything in this directory

-*.zip

-# Except this file

-!.gitignore
\ No newline at end of file
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/resources/linux64/libfmuwrapper.so b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/resources/linux64/libfmuwrapper.so
deleted file mode 100755
index 771e87f..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/resources/linux64/libfmuwrapper.so
+++ /dev/null
Binary files differ
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/resources/win64/.gitignore b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/resources/win64/.gitignore
deleted file mode 100644
index 131f5a3..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/resources/win64/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-# Ignore everything in this directory

-*.zip

-# Except this file

-!.gitignore
\ No newline at end of file
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/resources/win64/libfmuwrapper.dll b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/resources/win64/libfmuwrapper.dll
deleted file mode 100755
index 06d6376..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/resources/win64/libfmuwrapper.dll
+++ /dev/null
Binary files differ
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/src/org/eclipse/papyrus/moka/fmi/exporter/Activator.java b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/src/org/eclipse/papyrus/moka/fmi/exporter/Activator.java
deleted file mode 100644
index 141d016..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/src/org/eclipse/papyrus/moka/fmi/exporter/Activator.java
+++ /dev/null
@@ -1,37 +0,0 @@
-/*****************************************************************************

- * 

- * Copyright (c) 2016 CEA LIST.

- * 

- * 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:

- *  CEA LIST Initial API and implementation

- * 

- *****************************************************************************/

-package org.eclipse.papyrus.moka.fmi.exporter;

-

-

-import org.eclipse.core.runtime.Plugin;

-

-

-import org.osgi.framework.BundleContext;

-

-public class Activator extends Plugin  {

-	

-	public static final String bundleID = "org.eclipse.papyrus.moka.fmi.exporter";

-	private static Activator instance;

-

-	public static Activator getDefault(){

-		return instance;

-	}

-	

-	

-	@Override

-	public void start(BundleContext context) throws Exception {

-			super.start(context);

-			instance = this;

-	}

-}

diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/src/org/eclipse/papyrus/moka/fmi/exporter/FMUExporter.java b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/src/org/eclipse/papyrus/moka/fmi/exporter/FMUExporter.java
deleted file mode 100644
index 4e26df6..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/src/org/eclipse/papyrus/moka/fmi/exporter/FMUExporter.java
+++ /dev/null
@@ -1,389 +0,0 @@
-/*****************************************************************************

- * 

- * Copyright (c) 2016 CEA LIST.

- * 

- * 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:

- *  CEA LIST Initial API and implementation

- * 

- *****************************************************************************/

-package org.eclipse.papyrus.moka.fmi.exporter;

-

-import java.io.File;

-import java.io.FileNotFoundException;

-import java.io.FileOutputStream;

-import java.io.IOException;

-import java.net.URL;

-import java.nio.file.Files;

-import java.nio.file.Path;

-import java.util.ArrayList;

-import java.util.Arrays;

-import java.util.HashMap;

-import java.util.Iterator;

-import java.util.List;

-import java.util.Map;

-import java.util.Properties;

-

-import org.eclipse.core.runtime.FileLocator;

-import org.eclipse.emf.common.util.URI;

-import org.eclipse.emf.ecore.EObject;

-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.papyrus.moka.fmi.fmu.FMUResource;

-import org.eclipse.papyrus.moka.fmi.fmumetamodel.ArchiveToUnzipInFMU;

-import org.eclipse.papyrus.moka.fmi.fmumetamodel.FMUBundle;

-import org.eclipse.papyrus.moka.fmi.fmumetamodel.FmumetamodelFactory;

-import org.eclipse.papyrus.moka.fmi.fmumetamodel.JavaFileProxy;

-import org.eclipse.papyrus.moka.fmi.modeldescription.FmiModelDescriptionType;

-import org.eclipse.papyrus.moka.fmi.util.FMUResourceUtil;

-import org.eclipse.papyrus.moka.fmu.rcp.FMURCPApplication;

-import org.eclipse.uml2.uml.Class;

-import org.eclipse.uml2.uml.Profile;

-import org.eclipse.uml2.uml.UMLPlugin;

-import org.eclipse.uml2.uml.resource.UMLResource;

-import org.osgi.framework.Bundle;

-

-public class FMUExporter {

-

-	private static final String RESOURCE_DIR = "resources";

-	private static final String LIB_NAME = "libfmuwrapper";

-	private static final String RCP_FOLDER_NAME = "rcp";

-

-	public static final String MODEL_FODLER = "model";

-	

-	

-	

-	private static Map<String, String> platformsToRCPfile;

-

-	private static List<String> dontExportURIs= Arrays.asList();//UMLResource.ECORE_PROFILE_URI);

-	

-	static {

-		platformsToRCPfile = new HashMap<String, String>();

-		platformsToRCPfile.put(FMUResourceUtil.BINARIES_LINUX32, "rcp-linux.gtk.x86.zip");

-		platformsToRCPfile.put(FMUResourceUtil.BINARIES_LINUX64, "rcp-linux.gtk.x86_64.zip");

-		platformsToRCPfile.put(FMUResourceUtil.BINARIES_WIN64, "rcp-win32.win32.x86_64.zip");

-	}

-

-	public static void generateFMU(Class umlClass, String fmuName, String outputPath, String targetPlatform,

-			String jrePath) {

-		ResourceSet resSet = new ResourceSetImpl();

-

-		

-		FMUBundle fmuBundle = FmumetamodelFactory.eINSTANCE.createFMUBundle();

-	

-

-		addModelDescription(umlClass, fmuName, fmuBundle);

-		 List<String> exportedUMLGeneratedPackageURIs = new ArrayList<String>();

-		 List<String> remappedURIs = new ArrayList<String>();

-		String mainModelPath = addUMLFile(umlClass, resSet, fmuBundle, exportedUMLGeneratedPackageURIs, remappedURIs);

-

-		addPropertiesFile(umlClass, mainModelPath, fmuBundle, exportedUMLGeneratedPackageURIs, remappedURIs);

-

-		addRcp(targetPlatform, fmuBundle);

-

-		addLibrary(targetPlatform, fmuName, fmuBundle);

-		

-		FMUResource fmuRes = (FMUResource) resSet

-				.createResource(URI.createFileURI(outputPath).appendSegment(fmuName).appendFileExtension("fmu"));

-		fmuRes.getContents().add(fmuBundle);

-		if (jrePath != null) {

-			addJRE(jrePath, fmuBundle);

-		}

-

-		try {

-			fmuRes.save(null);

-		} catch (IOException e) {

-			// TODO Auto-generated catch block

-			e.printStackTrace();

-		}

-	}

-

-	private static void addJRE(String jrePath, FMUBundle fmuBundle) {

-		File jreFile = new File(jrePath);

-		JavaFileProxy proxy = FMUResourceUtil.createJavaFileProxy(jreFile, "rcp/jre");

-		fmuBundle.getResourcesFiles().add(proxy);

-	}

-

-	private static void addLibrary(String targetPlatform, String fmuName, FMUBundle fmuBundle) {

-		Bundle bundle = Activator.getDefault().getBundle();

-

-		String fileExtension;

-		if (targetPlatform.startsWith("linux")) {

-			fileExtension = ".so";

-		} else {

-			fileExtension = ".dll";

-		}

-		URL libURL = bundle.getEntry(RESOURCE_DIR + "/" + targetPlatform + "/" + LIB_NAME + fileExtension);

-		try {

-			libURL = FileLocator.toFileURL(libURL);

-			File libFile = new File(libURL.getFile());

-			JavaFileProxy proxy = FMUResourceUtil.createJavaFileProxy(libFile, fmuName + fileExtension);

-

-			switch (targetPlatform) {

-			case FMUResourceUtil.BINARIES_LINUX32:

-				fmuBundle.getLinux32Files().add(proxy);

-				break;

-			case FMUResourceUtil.BINARIES_LINUX64:

-				fmuBundle.getLinux64Files().add(proxy);

-				break;

-			case FMUResourceUtil.BINARIES_WIN64:

-				fmuBundle.getWin64Files().add(proxy);

-				break;

-			}

-

-		} catch (IOException e) {

-			// TODO Auto-generated catch block

-			e.printStackTrace();

-		}

-

-	}

-

-	private static void addRcp(String targetPlatform, FMUBundle fmuBundle) {

-		Bundle bundle = Activator.getDefault().getBundle();

-		URL rcpURL = bundle

-				.getEntry(RESOURCE_DIR + "/" + targetPlatform + "/" + platformsToRCPfile.get(targetPlatform));

-		try {

-			rcpURL = FileLocator.toFileURL(rcpURL);

-			File rcpFile = new File(rcpURL.getFile());

-			ArchiveToUnzipInFMU archive = FMUResourceUtil.createArchiveToUnzipInFMU(rcpFile);

-			archive.setName(RCP_FOLDER_NAME);

-			fmuBundle.getResourcesFiles().add(archive);

-

-		} catch (IOException e) {

-			// TODO Auto-generated catch block

-			e.printStackTrace();

-		}

-

-	}

-

-	private static void addPropertiesFile(Class umlClass, String mainModelPath, FMUBundle fmuBundle, List<String> exportedUMLGeneratedPackageURIs, List<String> remappedURIs) {

-		Properties prop = new Properties();

-		prop.setProperty(FMURCPApplication.FMU_ID,umlClass.eResource().getURIFragment(umlClass));

-		prop.setProperty(FMURCPApplication.MODEL_PATH_PROP, mainModelPath);

-		

-		Iterator<String> profilesURIMapsIterator = exportedUMLGeneratedPackageURIs.iterator();

-		if (profilesURIMapsIterator.hasNext()){

-			String propValue = profilesURIMapsIterator.next();

-			while(profilesURIMapsIterator.hasNext()){

-				propValue +=","+profilesURIMapsIterator.next();

-			}

-			prop.setProperty(FMURCPApplication.PROFILE_URI_MAP, propValue);

-		}

-		

-		Iterator<String> uriRemapIterator = remappedURIs.iterator();

-		if (uriRemapIterator.hasNext()){

-			String propValue = uriRemapIterator.next();

-			while(uriRemapIterator.hasNext()){

-				propValue +=","+uriRemapIterator.next();

-			}

-			prop.setProperty(FMURCPApplication.URI_REMAP, propValue);

-		}

-		

-

-		try {

-			File propFile = File.createTempFile("fmuExport", null, null); 

-			prop.store(new FileOutputStream(propFile), null);

-			propFile.deleteOnExit();

-			JavaFileProxy proxy = FMUResourceUtil.createJavaFileProxy(propFile, FMURCPApplication.MOKA_PROP_FILE_NAME);

-			fmuBundle.getResourcesFiles().add(proxy);

-

-		} catch (FileNotFoundException e) {

-			// TODO Auto-generated catch block

-			e.printStackTrace();

-		} catch (IOException e) {

-			// TODO Auto-generated catch block

-			e.printStackTrace();

-		}

-

-	}

-

-	private static String addUMLFile(Class umlClass, ResourceSet resSet, FMUBundle fmuBundle,  List<String> exportedUMLGeneratedPackageURIs, List<String> remappedURIs) {

-		Resource originalUMLResource = umlClass.eResource();

-		

-		

-		

-		try {

-			Path tmpDirPath = Files.createTempDirectory("fmuExport");

-

-			URI tmpURI = URI.createFileURI(tmpDirPath.toAbsolutePath().toString());

-			String mainModelPath= null; 

-

-			//tmpURI = tmpURI.appendSegment(fileName);

-			Resource reloadedResource = resSet.getResource(originalUMLResource.getURI(), true);

-			EcoreUtil.resolveAll(resSet);

-			

-			Map<String, URI> staticProfileRegistry = UMLPlugin.getEPackageNsURIToProfileLocationMap();

-			Map<Profile, String> savedStaticProfilesMap = new HashMap<Profile, String>();

-			Map<String, String> newUriRemap = new HashMap<String, String>();

-			List<Resource> sourceResources = new ArrayList<Resource>(resSet.getResources());

-			List<Resource> targetResources = new ArrayList<Resource>();

-			

-//			resSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("uml", new Resource.Factory(){

-//

-//				@Override

-//				public Resource createResource(URI uri) {

-//					return new BinaryResourceImpl(uri);

-//				}

-//				

-//			});

-			

-			for (Resource resSetResource : sourceResources){

-				if( shouldBeExported(resSetResource)){

-					//we get the new output resource with potential new URI remap for resources that were saved in a plugin and referenced 

-					//with an URI remap

-					Resource outputResource = getOuputResource(resSet, tmpURI, resSetResource, newUriRemap);

-					targetResources.add(outputResource);

-					if (resSetResource == reloadedResource){

-						mainModelPath = getPathRelativeToFMUResourceFolder(tmpURI, outputResource.getURI());

-					}

-					

-					EObject rootObject = resSetResource.getContents().get(0);				

-					

-					//we also need to redirect EPackage static profiles for profiles which were saved in a plugin an now embedded in the FMU 

-					if (rootObject instanceof Profile){

-						URI normalizedProfileURI =  resSet.getURIConverter().normalize(EcoreUtil.getURI(rootObject));

-						

-						for (Map.Entry<String, URI> mapEntry : staticProfileRegistry.entrySet()){

-							URI registeredProfileURI = mapEntry.getValue();

-							if(normalizedProfileURI.equals( resSet.getURIConverter().normalize(registeredProfileURI))){

-								savedStaticProfilesMap.put((Profile) rootObject,mapEntry.getKey());

-								break;

-							}

-								

-						}	

-					}

-					addFilteredContentsInOutputResource(outputResource, resSetResource);

-					

-					

-				}

-				

-			}

-		

-

-		

-

-			for(Map.Entry<String, String> remappedURIEntry : newUriRemap.entrySet()){

-				remappedURIs.add(remappedURIEntry.getKey()+"="+remappedURIEntry.getValue());	

-			}

-			

-			

-			for(Map.Entry<Profile, String> profileEntry : savedStaticProfilesMap.entrySet()){

-				exportedUMLGeneratedPackageURIs.add(profileEntry.getValue()+"="+getPathRelativeToFMUResourceFolder(tmpURI,EcoreUtil.getURI(profileEntry.getKey())));	

-			}

-			

-			

-			for (Resource targetRes: targetResources){

-				//if (targetRes == reloadedResource){

-					//HashMap<Object, Object> options = new HashMap<Object, Object>();

-					//options.put(XMLResource.OPTION_BINARY, Boolean.TRUE);

-				//}

-			

-				targetRes.save(null);

-				File newResourceFile = new File(targetRes.getURI().toFileString());

-				newResourceFile.deleteOnExit();

-				

-				JavaFileProxy proxy = FMUResourceUtil.createJavaFileProxy(newResourceFile, getPathRelativeToFMUResourceFolder(tmpURI,targetRes.getURI()));

-				fmuBundle.getResourcesFiles().add(proxy);

-			}

-			

-			

-

-			return mainModelPath;

-

-		} catch (IOException e) {

-			// TODO Auto-generated catch block

-			e.printStackTrace();

-		}

-

-		return null;

-	}

-

-	private static void addFilteredContentsInOutputResource(Resource outputResource, Resource inputPesource) {

-		//we are removing EcoreProfile stereotypeApplications, since they considerably slow down the resource loading

-		//process, mainly due to the fact that it's a dynamic profile which has to be fully loaded  for the

-		//the stereotype application instantiations. By opposition static profile don't require to load the Profile UML

-		//for instantiating the applications.

-		//Moreover EcoreProfile is only used for code generation purpose, it is currently not needed for model execution.

-		

-		List<EObject> objectsToAdd = new ArrayList<EObject>();

-		for (EObject content: inputPesource.getContents()){

-			if (!UMLResource.ECORE_PROFILE_NS_URI.equals(content.eClass().getEPackage().getNsURI())){

-				objectsToAdd.add(content);

-				

-			}

-		}

-		outputResource.getContents().addAll(objectsToAdd);

-		

-		

-	}

-

-	private static String getPathRelativeToFMUResourceFolder(URI tmpURI, URI targetURI){

-		return targetURI.toString().replaceFirst(tmpURI.toString(),MODEL_FODLER);

-	}

-	

-	private static Resource getOuputResource(ResourceSet resSet, URI tmpURI, Resource resSetResource, Map<String, String> newUriRemap) {

-		

-		URI sourceURI = resSetResource.getURI();

-		URI normalizedSourceURI = resSet.getURIConverter().normalize(sourceURI);

-		String resourcePath =normalizedSourceURI.path();

-		URI targetURI = URI.createURI(tmpURI.toString()+resourcePath);

-		URI normalizedTargetURI = resSet.getURIConverter().normalize(targetURI);

-		String normalizedTargetURIString = normalizedTargetURI.toString();

-		

-		for (Map.Entry<URI, URI> remapEntry : org.eclipse.emf.ecore.resource.URIConverter.URI_MAP.entrySet()){

-			if (remapEntry.getKey().isPrefix()){

-				URI substitutedSourceURI = sourceURI.replacePrefix(remapEntry.getKey(), remapEntry.getValue());

-				if( substitutedSourceURI != null){

-					URI substitutedSourceURINormalized =resSet.getURIConverter().normalize(substitutedSourceURI);

-					//if our source URI was containing a remapped prefix

-					if(substitutedSourceURINormalized.equals(normalizedSourceURI) ){

-						//we have to compute the new remap prefix

-						//Example : sourceURI = pathmap://EXAMPLE/model/resource.uml

-						//URIMAP pathmap://EXAMPLE/ --> platform:/plugin/my.plugin/

-						//normalizedSourceURI =  platform:/plugin/my.plugin/model/resource.uml

-						//normalizedTargetURI = file://tmpURI/plugin/my.plugin/model/resource.uml

-						

-						// the new remap is : pathmap://EXAMPLE/  --> file://tmpURI/plugin/my.plugin/

-						

-						//should be model/resource.uml

-						String resourcePathRelativeToRemappedPrefix = sourceURI.deresolve(remapEntry.getKey()).toString();

-						 

-						String newPrefix = normalizedTargetURIString.substring(0, normalizedTargetURIString.lastIndexOf(resourcePathRelativeToRemappedPrefix));

-						newPrefix = newPrefix.replaceFirst(tmpURI.toString(), MODEL_FODLER)+"/";

-						newUriRemap.put(remapEntry.getKey().toString(), newPrefix);

-						

-					}

-				}

-			}

-			

-		}

-		

-		Resource result = resSet.createResource(normalizedTargetURI);

-		

-		return result;

-	}

-

-	private static boolean shouldBeExported(Resource resSetResource) {

-		

-		if ( resSetResource instanceof UMLResource && !resSetResource.getContents().isEmpty()) {

-			return ! dontExportURIs.contains(resSetResource.getURI().toString());

-		};

-		return false;

-	}

-

-	private static void addModelDescription(Class umlClass, String fmuName, FMUBundle fmuBundle) {

-

-		FmiModelDescriptionType modelDesc = MokaUML2FMI.getModelDescription(umlClass, fmuName);

-		if (modelDesc != null) {

-			fmuBundle.setModelDescription(modelDesc);

-		}

-

-	}

-

-}

diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/src/org/eclipse/papyrus/moka/fmi/exporter/MokaUML2FMI.java b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/src/org/eclipse/papyrus/moka/fmi/exporter/MokaUML2FMI.java
deleted file mode 100644
index d468d88..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/src/org/eclipse/papyrus/moka/fmi/exporter/MokaUML2FMI.java
+++ /dev/null
@@ -1,253 +0,0 @@
-/*****************************************************************************

- * 

- * Copyright (c) 2016 CEA LIST.

- * 

- * 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:

- *  CEA LIST Initial API and implementation

- * 

- *****************************************************************************/

-package org.eclipse.papyrus.moka.fmi.exporter;

-

-import java.util.ArrayList;

-import java.util.Date;

-import java.util.GregorianCalendar;

-import java.util.List;

-import java.util.UUID;

-

-import javax.xml.datatype.DatatypeConfigurationException;

-import javax.xml.datatype.DatatypeFactory;

-import javax.xml.datatype.XMLGregorianCalendar;

-

-import org.eclipse.papyrus.moka.fmi.fmiprofile.CS_FMU;

-import org.eclipse.papyrus.moka.fmi.fmiprofile.CalculatedParameter;

-import org.eclipse.papyrus.moka.fmi.fmiprofile.FlowDirection;

-import org.eclipse.papyrus.moka.fmi.fmiprofile.Independent;

-import org.eclipse.papyrus.moka.fmi.fmiprofile.Local;

-import org.eclipse.papyrus.moka.fmi.fmiprofile.Parameter;

-import org.eclipse.papyrus.moka.fmi.fmiprofile.Port;

-import org.eclipse.papyrus.moka.fmi.fmiprofile.ScalarVariable;

-import org.eclipse.papyrus.moka.fmi.modeldescription.BooleanType;

-import org.eclipse.papyrus.moka.fmi.modeldescription.CausalityType;

-import org.eclipse.papyrus.moka.fmi.modeldescription.CoSimulationType;

-import org.eclipse.papyrus.moka.fmi.modeldescription.Fmi2ScalarVariable;

-import org.eclipse.papyrus.moka.fmi.modeldescription.Fmi2VariableDependency;

-import org.eclipse.papyrus.moka.fmi.modeldescription.FmiFactory;

-import org.eclipse.papyrus.moka.fmi.modeldescription.FmiModelDescriptionType;

-import org.eclipse.papyrus.moka.fmi.modeldescription.InitialType;

-import org.eclipse.papyrus.moka.fmi.modeldescription.IntegerType;

-import org.eclipse.papyrus.moka.fmi.modeldescription.ModelStructureType;

-import org.eclipse.papyrus.moka.fmi.modeldescription.ModelVariablesType;

-import org.eclipse.papyrus.moka.fmi.modeldescription.RealType;

-import org.eclipse.papyrus.moka.fmi.modeldescription.StringType;

-import org.eclipse.papyrus.moka.fmi.modeldescription.UnknownType1;

-import org.eclipse.papyrus.moka.fmi.modeldescription.VariabilityType;

-import org.eclipse.papyrus.moka.fmi.profile.util.FMIProfileUtil;

-import org.eclipse.papyrus.moka.utils.UMLPrimitiveTypesUtils;

-import org.eclipse.uml2.uml.Class;

-import org.eclipse.uml2.uml.Comment;

-import org.eclipse.uml2.uml.Property;

-

-public class MokaUML2FMI {

-

-	public static void setDefaultValuesForMokaFMU(Class umlClass) {

-		CS_FMU csFMU = FMIProfileUtil.getCSFMU(umlClass);

-

-		csFMU.setCanHandleVariableCommunicationStepSize(true);

-		csFMU.setCanInterpolateInputs(false);

-		csFMU.setCanRunAsynchronuously(false);

-		csFMU.setMaxOutputDerivativeOrder(0);

-		csFMU.setNeedsExecutionTool(false);

-		csFMU.setFmiVersion("2.0");

-		csFMU.setGenerationTool("Moka Exporter");

-

-	}

-

-	public static FmiModelDescriptionType getModelDescription(Class umlClass, String modelIdentifier) {

-		CS_FMU csFMU = FMIProfileUtil.getCSFMU(umlClass);

-

-		if (csFMU != null) {

-			FmiModelDescriptionType result = FmiFactory.eINSTANCE.createFmiModelDescriptionType();

-			result.setGenerationTool("Moka FMU exporter");

-			result.setFmiVersion("2.0");

-

-			GregorianCalendar date = new GregorianCalendar();

-			date.setTime(new Date());

-			XMLGregorianCalendar xmlDate;

-			try {

-				xmlDate = DatatypeFactory.newInstance().newXMLGregorianCalendar(date);

-				result.setGenerationDateAndTime(xmlDate);

-			} catch (DatatypeConfigurationException e) {

-				e.printStackTrace();

-			}

-

-			result.setModelName(umlClass.getLabel());

-			result.setGuid(UUID.randomUUID().toString());

-

-			CoSimulationType cosim = FmiFactory.eINSTANCE.createCoSimulationType();

-			result.getCoSimulation().add(cosim);

-			cosim.setCanGetAndSetFMUstate(false);

-			cosim.setCanHandleVariableCommunicationStepSize(true);

-			cosim.setCanBeInstantiatedOnlyOncePerProcess(true);

-			cosim.setCanInterpolateInputs(false);

-			cosim.setCanNotUseMemoryManagementFunctions(true);

-			cosim.setCanSerializeFMUstate(false);

-			cosim.setCanRunAsynchronuously(false);

-			cosim.setNeedsExecutionTool(false);

-			cosim.setProvidesDirectionalDerivative(false);

-			cosim.setMaxOutputDerivativeOrder(0);

-

-			if (modelIdentifier == null) {

-				modelIdentifier = umlClass.getName();

-			}

-			cosim.setModelIdentifier(modelIdentifier);

-

-			List<ScalarVariable> umlVariables = FMIProfileUtil.collectScalarVariables(umlClass);

-			List<Port> outputUMLVariables = new ArrayList<Port>();

-			if (!umlVariables.isEmpty()) {

-				ModelVariablesType modelVariables = FmiFactory.eINSTANCE.createModelVariablesType();

-				result.setModelVariables(modelVariables);

-				for (ScalarVariable umlVariable : umlVariables) {

-					modelVariables.getScalarVariable().add(createFMIScalarVariable(umlVariable));

-					if (umlVariable instanceof Port && ((Port) umlVariable).getDirection().equals(FlowDirection.OUT)) {

-						outputUMLVariables.add((Port) umlVariable);

-					}

-				}

-

-			}

-

-			if (!outputUMLVariables.isEmpty()) {

-

-				ModelStructureType modelStructure = FmiFactory.eINSTANCE.createModelStructureType();

-				result.setModelStructure(modelStructure);

-				Fmi2VariableDependency outputs = FmiFactory.eINSTANCE.createFmi2VariableDependency();

-				modelStructure.setOutputs(outputs);

-				for (Port outputPort : outputUMLVariables) {

-					outputs.getUnknown().add(createUnknown(outputPort, umlVariables));

-				}

-

-			}

-

-			return result;

-		} else {

-			return null;

-		}

-

-	}

-

-	private static UnknownType1 createUnknown(Port outputPort, List<ScalarVariable> umlVariables) {

-		UnknownType1 result = FmiFactory.eINSTANCE.createUnknownType1();

-		result.setIndex(umlVariables.indexOf(outputPort) + 1);

-		return result;

-	}

-

-	private static Fmi2ScalarVariable createFMIScalarVariable(ScalarVariable umlVariable) {

-		Fmi2ScalarVariable result = FmiFactory.eINSTANCE.createFmi2ScalarVariable();

-		Property baseProperty = umlVariable.getBase_Property();

-		if (baseProperty == null && umlVariable instanceof Port) {

-			baseProperty = ((Port) umlVariable).getBase_Port();

-		}

-		result.setName(baseProperty.getName());

-		result.setValueReference(umlVariable.getValueReference());

-

-		if (!baseProperty.getOwnedComments().isEmpty()) {

-			String description = "";

-			for (Comment comment : baseProperty.getOwnedComments()) {

-				if (comment.getBody() != null) {

-					description += comment.getBody() + "\n";

-				}

-			}

-			result.setDescription(description);

-		}

-

-		result.setVariability(VariabilityType.DISCRETE);

-

-		CausalityType causality = computeCausality(umlVariable);

-		result.setCausality(causality);

-		updateTypeAndInitial(result, baseProperty, causality);

-

-		return result;

-	}

-

-	private static void updateTypeAndInitial(Fmi2ScalarVariable result, Property baseProperty,

-			CausalityType causality) {

-		if (baseProperty.getType().equals(UMLPrimitiveTypesUtils.getReal(baseProperty))) {

-			RealType fmiReal = FmiFactory.eINSTANCE.createRealType();

-			result.setReal(fmiReal);

-			if (causality == CausalityType.INPUT) {

-				result.setInitial(InitialType.APPROX);

-			} else {

-				result.setInitial(InitialType.EXACT);

-			}

-			String defaultValue = baseProperty.getDefault();

-			if (defaultValue != null) {

-				fmiReal.setStart(Double.parseDouble(defaultValue));

-			}

-

-		} else if (baseProperty.getType().equals(UMLPrimitiveTypesUtils.getInteger(baseProperty))) {

-			IntegerType fmiInteger = FmiFactory.eINSTANCE.createIntegerType();

-			result.setInteger(fmiInteger);

-			if (causality == CausalityType.INPUT) {

-				result.setInitial(InitialType.APPROX);

-			} else {

-				result.setInitial(InitialType.EXACT);

-			}

-			String defaultValue = baseProperty.getDefault();

-			if (defaultValue != null) {

-				fmiInteger.setStart(Integer.decode(defaultValue));

-			}

-

-		} else if (baseProperty.getType().equals(UMLPrimitiveTypesUtils.getBoolean(baseProperty))) {

-			BooleanType fmiBoolean = FmiFactory.eINSTANCE.createBooleanType();

-			result.setBoolean(fmiBoolean);

-			if (causality == CausalityType.INPUT) {

-				result.setInitial(InitialType.APPROX);

-			} else {

-				result.setInitial(InitialType.EXACT);

-			}

-			String defaultValue = baseProperty.getDefault();

-			if (defaultValue != null) {

-				fmiBoolean.setStart(Boolean.getBoolean(defaultValue));

-			}

-

-		} else {

-			StringType fmiString = FmiFactory.eINSTANCE.createStringType();

-			result.setString(fmiString);

-			if (causality == CausalityType.INPUT) {

-				result.setInitial(InitialType.APPROX);

-			} else {

-				result.setInitial(InitialType.EXACT);

-			}

-			String defaultValue = baseProperty.getDefault();

-			if (defaultValue != null) {

-				fmiString.setStart(defaultValue);

-			}

-		}

-

-	}

-

-	public static CausalityType computeCausality(ScalarVariable umlVariable) {

-		if (umlVariable instanceof Local) {

-			return CausalityType.LOCAL;

-		} else if (umlVariable instanceof CalculatedParameter) {

-			return CausalityType.CALCULATED_PARAMETER;

-		} else if (umlVariable instanceof Port) {

-			FlowDirection direction = ((Port) umlVariable).getDirection();

-			if (direction.equals(FlowDirection.IN)) {

-				return CausalityType.INPUT;

-			} else {

-				return CausalityType.OUTPUT;

-			}

-		} else if (umlVariable instanceof Parameter) {

-			return CausalityType.PARAMETER;

-		} else if (umlVariable instanceof Independent) {

-			return CausalityType.INDEPENDENT;

-		}

-

-		return null;

-	}

-}

diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.fmi2uml/pom.xml b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.fmi2uml/pom.xml
index 68331bf..7aebdb3 100644
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.fmi2uml/pom.xml
+++ b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.fmi2uml/pom.xml
@@ -6,7 +6,7 @@
 	<parent>

 		<groupId>org.eclipse.papyrus.moka</groupId>

 		<artifactId>org.eclipse.papyrus.moka.bundles.fmi.tools</artifactId>

-		<version>2.0.100-SNAPSHOT</version>

+		<version>2.1.0-SNAPSHOT</version>

 	</parent>

 

 	<!-- POM Description -->

@@ -14,5 +14,6 @@
 	<packaging>eclipse-plugin</packaging>

 	<name>org.eclipse.papyrus.moka.fmi.fmi2uml</name>

 	<description>FMI 2 UML Importer</description>

+	<version>2.0.100-SNAPSHOT</version>

 

 </project>
\ No newline at end of file
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.profile.ui/pom.xml b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.profile.ui/pom.xml
index 147f9ca..a0cbd3c 100644
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.profile.ui/pom.xml
+++ b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.profile.ui/pom.xml
@@ -6,7 +6,7 @@
 	<parent>
 		<groupId>org.eclipse.papyrus.moka</groupId>
 		<artifactId>org.eclipse.papyrus.moka.bundles.fmi.tools</artifactId>
-		<version>2.0.100-SNAPSHOT</version>
+		<version>2.1.0-SNAPSHOT</version>
 	</parent>
 
 	<!-- POM Description -->
@@ -14,5 +14,6 @@
 	<packaging>eclipse-plugin</packaging>
 	<name>org.eclipse.papyrus.moka.fmi.profile.ui</name>
 	<description>Papyrus integration of FMI 2.0 profile</description>
+	<version>2.0.100-SNAPSHOT</version>
 
 </project>
\ No newline at end of file
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.rcp.export/.classpath b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.rcp.export/.classpath
new file mode 100644
index 0000000..ac00167
--- /dev/null
+++ b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.rcp.export/.classpath
@@ -0,0 +1,11 @@
+<?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/JavaSE-1.8">

+		<attributes>

+			<attribute name="maven.pomderived" value="true"/>

+		</attributes>

+	</classpathentry>

+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>

+	<classpathentry kind="src" path="src/"/>

+	<classpathentry kind="output" path="target/classes"/>

+</classpath>

diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.rcp.export/.project b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.rcp.export/.project
new file mode 100644
index 0000000..8a2074d
--- /dev/null
+++ b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.rcp.export/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>

+<projectDescription>

+	<name>org.eclipse.papyrus.moka.fmi.rcp.export</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>

+		<buildCommand>

+			<name>org.eclipse.m2e.core.maven2Builder</name>

+			<arguments>

+			</arguments>

+		</buildCommand>

+	</buildSpec>

+	<natures>

+		<nature>org.eclipse.m2e.core.maven2Nature</nature>

+		<nature>org.eclipse.pde.PluginNature</nature>

+		<nature>org.eclipse.jdt.core.javanature</nature>

+	</natures>

+</projectDescription>

diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.rcp.export/META-INF/MANIFEST.MF b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.rcp.export/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..615efc7
--- /dev/null
+++ b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.rcp.export/META-INF/MANIFEST.MF
@@ -0,0 +1,7 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Moka RCP for FMI export
+Bundle-SymbolicName: org.eclipse.papyrus.moka.fmi.rcp.export
+Bundle-Version: 1.0.0.qualifier
+Bundle-Vendor: Eclipse Modeling project
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/build.properties b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.rcp.export/build.properties
similarity index 100%
rename from bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/build.properties
rename to bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.rcp.export/build.properties
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.rcp.export/pom.xml b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.rcp.export/pom.xml
new file mode 100644
index 0000000..a6f7c00
--- /dev/null
+++ b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.rcp.export/pom.xml
@@ -0,0 +1,28 @@
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

+	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

+	<modelVersion>4.0.0</modelVersion>

+

+	<!-- Parent POM (i.e., Tools) -->

+	<parent>

+		<groupId>org.eclipse.papyrus.moka</groupId>

+		<artifactId>org.eclipse.papyrus.moka.bundles.fmi.tools</artifactId>

+		<version>2.1.0-SNAPSHOT</version>

+	</parent>

+

+	<!-- POM Description -->

+	<artifactId>org.eclipse.papyrus.moka.fmi.rcp.export</artifactId>

+	<packaging>eclipse-plugin</packaging>

+	<name>org.eclipse.papyrus.moka.fmi.rcp.export</name>

+	<description>Moka RCP for FMI export</description>

+	<version>1.0.0-SNAPSHOT</version>

+	

+	<dependencies>

+		<dependency>

+			<groupId>org.eclipse.papyrus.moka</groupId>

+			<artifactId>org.eclipse.papyrus.moka.fmu.product</artifactId>

+			<version>2.0.0-SNAPSHOT</version>

+			<type>eclipse-repository</type>

+		</dependency>

+	</dependencies>

+

+</project>
\ No newline at end of file
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi/pom.xml b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi/pom.xml
index 3310bf8..13bcafe 100644
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi/pom.xml
+++ b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmi/pom.xml
@@ -6,7 +6,7 @@
 	<parent>

 		<groupId>org.eclipse.papyrus.moka</groupId>

 		<artifactId>org.eclipse.papyrus.moka.bundles.fmi.tools</artifactId>

-		<version>2.0.100-SNAPSHOT</version>

+		<version>2.1.0-SNAPSHOT</version>

 	</parent>

 

 	<!-- POM Description -->

@@ -14,5 +14,6 @@
 	<packaging>eclipse-plugin</packaging>

 	<name>org.eclipse.papyrus.moka.fmi</name>

 	<description>EMF-based FMI 2.0 model description XML parser/serializer</description>

+	<version>2.0.100-SNAPSHOT</version>

 

 </project>
\ No newline at end of file
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.rcp/pom.xml b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.rcp/pom.xml
index 8648436..bcb3537 100644
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.rcp/pom.xml
+++ b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.rcp/pom.xml
@@ -6,7 +6,7 @@
 	<parent>

 		<groupId>org.eclipse.papyrus.moka</groupId>

 		<artifactId>org.eclipse.papyrus.moka.bundles.fmi.tools</artifactId>

-		<version>2.0.100-SNAPSHOT</version>

+		<version>2.1.0-SNAPSHOT</version>

 	</parent>

 

 	<!-- POM Description -->

@@ -14,5 +14,6 @@
 	<packaging>eclipse-plugin</packaging>

 	<name>org.eclipse.papyrus.moka.fmu.rcp</name>

 	<description>Moka standlone RCP for FMU simulation</description>

+	<version>2.0.100-SNAPSHOT</version>

 

 </project>
\ No newline at end of file
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/.cproject b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/.cproject
deleted file mode 100644
index 0d27b6d..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/.cproject
+++ /dev/null
@@ -1,407 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>

-<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">

-	<storageModule moduleId="org.eclipse.cdt.core.settings">

-		<cconfiguration id="cdt.managedbuild.config.gnu.so.debug.938440568">

-			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.so.debug.938440568" moduleId="org.eclipse.cdt.core.settings" name="Debug">

-				<externalSettings>

-					<externalSetting>

-						<entry flags="VALUE_WORKSPACE_PATH" kind="includePath" name="/org.eclipse.papyrus.moka.fmu.wrapper"/>

-						<entry flags="VALUE_WORKSPACE_PATH" kind="libraryPath" name="/org.eclipse.papyrus.moka.fmu.wrapper/Debug"/>

-						<entry flags="RESOLVED" kind="libraryFile" name="fmuwrapper" srcPrefixMapping="" srcRootPath=""/>

-					</externalSetting>

-				</externalSettings>

-				<extensions>

-					<extension id="org.eclipse.cdt.core.GNU_ELF" point="org.eclipse.cdt.core.BinaryParser"/>

-					<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>

-					<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>

-					<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>

-				</extensions>

-			</storageModule>

-			<storageModule moduleId="cdtBuildSystem" version="4.0.0">

-				<configuration artifactExtension="so" artifactName="fmuwrapper" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.sharedLib" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.sharedLib,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.so.debug.938440568" name="Debug" parent="cdt.managedbuild.config.gnu.so.debug">

-					<folderInfo id="cdt.managedbuild.config.gnu.so.debug.938440568." name="/" resourcePath="">

-						<toolChain id="cdt.managedbuild.toolchain.gnu.so.debug.1834294652" name="Linux GCC" nonInternalBuilderId="cdt.managedbuild.target.gnu.builder.so.debug" superClass="cdt.managedbuild.toolchain.gnu.so.debug">

-							<targetPlatform id="cdt.managedbuild.target.gnu.platform.so.debug.454330761" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.so.debug"/>

-							<builder autoBuildTarget="all" buildPath="${workspace_loc:/org.eclipse.papyrus.moka.fmu.wrapper}/Debug" cleanBuildTarget="clean" enableAutoBuild="true" id="org.eclipse.cdt.build.core.internal.builder.41919056" incrementalBuildTarget="all" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="CDT Internal Builder" superClass="org.eclipse.cdt.build.core.internal.builder"/>

-							<tool id="cdt.managedbuild.tool.gnu.archiver.base.900883890" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>

-							<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.so.debug.705238463" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.so.debug">

-								<option id="gnu.cpp.compiler.so.debug.option.optimization.level.861629374" name="Optimization Level" superClass="gnu.cpp.compiler.so.debug.option.optimization.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.optimization.level.none" valueType="enumerated"/>

-								<option id="gnu.cpp.compiler.so.debug.option.debugging.level.1492573625" name="Debug Level" superClass="gnu.cpp.compiler.so.debug.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/>

-								<option id="gnu.cpp.compiler.option.dialect.std.1308449428" name="Language standard" superClass="gnu.cpp.compiler.option.dialect.std" useByScannerDiscovery="true" value="gnu.cpp.compiler.dialect.c++11" valueType="enumerated"/>

-								<option id="gnu.cpp.compiler.option.include.paths.270802528" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">

-									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/asio/include}&quot;"/>

-									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/fmi}&quot;"/>

-									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/fmuwrapper/include}&quot;"/>

-									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/rapidjson/include}&quot;"/>

-								</option>

-								<option id="gnu.cpp.compiler.option.other.pic.575052922" name="Position Independent Code (-fPIC)" superClass="gnu.cpp.compiler.option.other.pic" value="true" valueType="boolean"/>

-								<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.2022581088" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>

-							</tool>

-							<tool id="cdt.managedbuild.tool.gnu.c.compiler.so.debug.1483806738" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.so.debug">

-								<option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.so.debug.option.optimization.level.1498605052" name="Optimization Level" superClass="gnu.c.compiler.so.debug.option.optimization.level" useByScannerDiscovery="false" valueType="enumerated"/>

-								<option id="gnu.c.compiler.so.debug.option.debugging.level.1332170109" name="Debug Level" superClass="gnu.c.compiler.so.debug.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.max" valueType="enumerated"/>

-								<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1036534337" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>

-							</tool>

-							<tool id="cdt.managedbuild.tool.gnu.c.linker.so.debug.729477463" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.so.debug">

-								<option defaultValue="true" id="gnu.c.link.so.debug.option.shared.1568602007" name="Shared (-shared)" superClass="gnu.c.link.so.debug.option.shared" valueType="boolean"/>

-							</tool>

-							<tool id="cdt.managedbuild.tool.gnu.cpp.linker.so.debug.1782940993" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.so.debug">

-								<option defaultValue="true" id="gnu.cpp.link.so.debug.option.shared.1902727032" name="Shared (-shared)" superClass="gnu.cpp.link.so.debug.option.shared" valueType="boolean"/>

-								<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.537011690" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">

-									<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>

-									<additionalInput kind="additionalinput" paths="$(LIBS)"/>

-								</inputType>

-							</tool>

-							<tool id="cdt.managedbuild.tool.gnu.assembler.so.debug.2022896747" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.so.debug">

-								<inputType id="cdt.managedbuild.tool.gnu.assembler.input.291640632" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>

-							</tool>

-						</toolChain>

-					</folderInfo>

-					<sourceEntries>

-						<entry excluding="fmuwrapper|rapidjson|fmi|asio" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>

-						<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="fmi"/>

-						<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="fmuwrapper"/>

-						<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="rapidjson"/>

-					</sourceEntries>

-				</configuration>

-			</storageModule>

-			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>

-		</cconfiguration>

-		<cconfiguration id="cdt.managedbuild.config.gnu.so.release.1633590379">

-			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.so.release.1633590379" moduleId="org.eclipse.cdt.core.settings" name="Release">

-				<externalSettings>

-					<externalSetting>

-						<entry flags="VALUE_WORKSPACE_PATH" kind="includePath" name="/org.eclipse.papyrus.moka.fmu.wrapper"/>

-						<entry flags="VALUE_WORKSPACE_PATH" kind="libraryPath" name="/org.eclipse.papyrus.moka.fmu.wrapper/Release"/>

-						<entry flags="RESOLVED" kind="libraryFile" name="fmuwrapper" srcPrefixMapping="" srcRootPath=""/>

-					</externalSetting>

-				</externalSettings>

-				<extensions>

-					<extension id="org.eclipse.cdt.core.GNU_ELF" point="org.eclipse.cdt.core.BinaryParser"/>

-					<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>

-					<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>

-					<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>

-				</extensions>

-			</storageModule>

-			<storageModule moduleId="cdtBuildSystem" version="4.0.0">

-				<configuration artifactExtension="so" artifactName="fmuwrapper" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.sharedLib" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.sharedLib,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.so.release.1633590379" name="Release" parent="cdt.managedbuild.config.gnu.so.release">

-					<folderInfo id="cdt.managedbuild.config.gnu.so.release.1633590379." name="/" resourcePath="">

-						<toolChain id="cdt.managedbuild.toolchain.gnu.so.release.2136466372" name="Linux GCC" nonInternalBuilderId="cdt.managedbuild.target.gnu.builder.so.release" superClass="cdt.managedbuild.toolchain.gnu.so.release">

-							<targetPlatform id="cdt.managedbuild.target.gnu.platform.so.release.1934954113" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.so.release"/>

-							<builder autoBuildTarget="all" buildPath="${workspace_loc:/org.eclipse.papyrus.moka.fmu.wrapper}/Release" cleanBuildTarget="clean" id="org.eclipse.cdt.build.core.internal.builder.1976246492" incrementalBuildTarget="all" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="CDT Internal Builder" superClass="org.eclipse.cdt.build.core.internal.builder"/>

-							<tool id="cdt.managedbuild.tool.gnu.archiver.base.523254989" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>

-							<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.so.release.2063131096" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.so.release">

-								<option id="gnu.cpp.compiler.so.release.option.optimization.level.52877473" name="Optimization Level" superClass="gnu.cpp.compiler.so.release.option.optimization.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>

-								<option id="gnu.cpp.compiler.so.release.option.debugging.level.612730110" name="Debug Level" superClass="gnu.cpp.compiler.so.release.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.debugging.level.none" valueType="enumerated"/>

-								<option id="gnu.cpp.compiler.option.dialect.std.498342329" name="Language standard" superClass="gnu.cpp.compiler.option.dialect.std" value="gnu.cpp.compiler.dialect.c++11" valueType="enumerated"/>

-								<option id="gnu.cpp.compiler.option.include.paths.640802146" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" valueType="includePath">

-									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/asio/include}&quot;"/>

-									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/fmi}&quot;"/>

-									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/fmuwrapper/include}&quot;"/>

-									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/rapidjson/include}&quot;"/>

-								</option>

-								<option id="gnu.cpp.compiler.option.other.pic.1064471801" name="Position Independent Code (-fPIC)" superClass="gnu.cpp.compiler.option.other.pic" value="true" valueType="boolean"/>

-								<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1609031559" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>

-							</tool>

-							<tool id="cdt.managedbuild.tool.gnu.c.compiler.so.release.1972254947" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.so.release">

-								<option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.so.release.option.optimization.level.789725167" name="Optimization Level" superClass="gnu.c.compiler.so.release.option.optimization.level" useByScannerDiscovery="false" valueType="enumerated"/>

-								<option id="gnu.c.compiler.so.release.option.debugging.level.1822850953" name="Debug Level" superClass="gnu.c.compiler.so.release.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.none" valueType="enumerated"/>

-								<option id="gnu.c.compiler.option.dialect.std.482632896" name="Language standard" superClass="gnu.c.compiler.option.dialect.std" value="gnu.c.compiler.dialect.default" valueType="enumerated"/>

-								<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.100708275" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>

-							</tool>

-							<tool id="cdt.managedbuild.tool.gnu.c.linker.so.release.1099404021" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.so.release">

-								<option defaultValue="true" id="gnu.c.link.so.release.option.shared.398315938" name="Shared (-shared)" superClass="gnu.c.link.so.release.option.shared" valueType="boolean"/>

-							</tool>

-							<tool id="cdt.managedbuild.tool.gnu.cpp.linker.so.release.570189059" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.so.release">

-								<option defaultValue="true" id="gnu.cpp.link.so.release.option.shared.360935573" name="Shared (-shared)" superClass="gnu.cpp.link.so.release.option.shared" valueType="boolean"/>

-								<option id="gnu.cpp.link.option.soname.1209679029" name="Shared object name (-Wl,-soname=)" superClass="gnu.cpp.link.option.soname" value="fmuwrapper" valueType="string"/>

-								<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.295342987" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">

-									<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>

-									<additionalInput kind="additionalinput" paths="$(LIBS)"/>

-								</inputType>

-							</tool>

-							<tool id="cdt.managedbuild.tool.gnu.assembler.so.release.1970730142" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.so.release">

-								<inputType id="cdt.managedbuild.tool.gnu.assembler.input.435522932" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>

-							</tool>

-						</toolChain>

-					</folderInfo>

-					<sourceEntries>

-						<entry excluding="fmuwrapper|rapidjson|fmi|asio" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>

-						<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="fmi"/>

-						<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="fmuwrapper"/>

-						<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="rapidjson"/>

-					</sourceEntries>

-				</configuration>

-			</storageModule>

-			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>

-		</cconfiguration>

-		<cconfiguration id="cdt.managedbuild.config.gnu.so.debug.938440568.2121725992">

-			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.so.debug.938440568.2121725992" moduleId="org.eclipse.cdt.core.settings" name="Debug-win">

-				<externalSettings>

-					<externalSetting>

-						<entry flags="VALUE_WORKSPACE_PATH" kind="includePath" name="/org.eclipse.papyrus.moka.fmu.wrapper"/>

-						<entry flags="VALUE_WORKSPACE_PATH" kind="libraryPath" name="/org.eclipse.papyrus.moka.fmu.wrapper/Debug-win"/>

-						<entry flags="RESOLVED" kind="libraryFile" name="fmuwrapper" srcPrefixMapping="" srcRootPath=""/>

-					</externalSetting>

-				</externalSettings>

-				<extensions>

-					<extension id="org.eclipse.cdt.core.PE" point="org.eclipse.cdt.core.BinaryParser"/>

-					<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>

-					<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>

-					<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>

-				</extensions>

-			</storageModule>

-			<storageModule moduleId="cdtBuildSystem" version="4.0.0">

-				<configuration artifactExtension="dll" artifactName="fmuwrapper" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.sharedLib" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.sharedLib,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.so.debug.938440568.2121725992" name="Debug-win" parent="cdt.managedbuild.config.gnu.so.debug">

-					<folderInfo id="cdt.managedbuild.config.gnu.so.debug.938440568.2121725992." name="/" resourcePath="">

-						<toolChain id="cdt.managedbuild.toolchain.gnu.mingw.base.28236563" name="MinGW GCC" superClass="cdt.managedbuild.toolchain.gnu.mingw.base">

-							<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.PE" id="cdt.managedbuild.target.gnu.platform.mingw.base.558987370" name="Debug Platform" osList="win32" superClass="cdt.managedbuild.target.gnu.platform.mingw.base"/>

-							<builder buildPath="${workspace_loc:/org.eclipse.papyrus.moka.fmu.wrapper}/Debug-win" enableAutoBuild="true" id="cdt.managedbuild.tool.gnu.builder.mingw.base.571590925" keepEnvironmentInBuildfile="false" name="CDT Internal Builder" superClass="cdt.managedbuild.tool.gnu.builder.mingw.base"/>

-							<tool id="cdt.managedbuild.tool.gnu.assembler.mingw.base.780613434" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.mingw.base">

-								<inputType id="cdt.managedbuild.tool.gnu.assembler.input.773940526" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>

-							</tool>

-							<tool id="cdt.managedbuild.tool.gnu.archiver.mingw.base.1872079575" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.mingw.base"/>

-							<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.base.1907274893" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.base">

-								<option id="gnu.cpp.compiler.option.include.paths.1773288363" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">

-									<listOptionValue builtIn="false" value="&quot;${MINGW_HOME}\include&quot;"/>

-									<listOptionValue builtIn="false" value="&quot;C:\Program Files\mingw-w64\x86_64-5.3.0-win32-seh-rt_v4-rev0\mingw64\x86_64-w64-mingw32\include\c++\x86_64-w64-mingw32&quot;"/>

-									<listOptionValue builtIn="false" value="&quot;C:\Program Files\mingw-w64\x86_64-5.3.0-win32-seh-rt_v4-rev0\mingw64\x86_64-w64-mingw32\include\c++\backward&quot;"/>

-									<listOptionValue builtIn="false" value="&quot;C:\Program Files\mingw-w64\x86_64-5.3.0-win32-seh-rt_v4-rev0\mingw64\x86_64-w64-mingw32\include\c++&quot;"/>

-									<listOptionValue builtIn="false" value="&quot;C:\Program Files\mingw-w64\x86_64-5.3.0-win32-seh-rt_v4-rev0\mingw64\x86_64-w64-mingw32\include&quot;"/>

-									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/asio/include}&quot;"/>

-									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/fmi}&quot;"/>

-									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/fmuwrapper/include}&quot;"/>

-									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/rapidjson/include}&quot;"/>

-								</option>

-								<option id="gnu.cpp.compiler.option.preprocessor.def.255009294" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols">

-									<listOptionValue builtIn="false" value="ASIO_STANDALONE"/>

-									<listOptionValue builtIn="false" value="__NO_INLINE__ "/>

-								</option>

-								<option id="gnu.cpp.compiler.option.optimization.level.307684220" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>

-								<option id="gnu.cpp.compiler.option.debugging.level.411424795" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.debugging.level.max" valueType="enumerated"/>

-								<option id="gnu.cpp.compiler.option.dialect.std.1431995022" name="Language standard" superClass="gnu.cpp.compiler.option.dialect.std" useByScannerDiscovery="true" value="gnu.cpp.compiler.dialect.c++11" valueType="enumerated"/>

-								<option id="gnu.cpp.compiler.option.other.pic.763711191" name="Position Independent Code (-fPIC)" superClass="gnu.cpp.compiler.option.other.pic" useByScannerDiscovery="false" value="false" valueType="boolean"/>

-								<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.1772449755" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>

-							</tool>

-							<tool id="cdt.managedbuild.tool.gnu.c.compiler.mingw.base.552265339" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.mingw.base">

-								<option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.option.optimization.level.795788541" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false" valueType="enumerated"/>

-								<option id="gnu.c.compiler.option.debugging.level.287229489" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.max" valueType="enumerated"/>

-								<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1645196382" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>

-							</tool>

-							<tool id="cdt.managedbuild.tool.gnu.c.linker.mingw.base.1844598142" name="MinGW C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.mingw.base">

-								<option defaultValue="true" id="gnu.c.link.option.shared.213644815" name="Shared (-shared)" superClass="gnu.c.link.option.shared" valueType="boolean"/>

-							</tool>

-							<tool commandLinePattern="${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS} " id="cdt.managedbuild.tool.gnu.cpp.linker.mingw.base.1674593443" name="MinGW C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.mingw.base">

-								<option defaultValue="true" id="gnu.cpp.link.option.shared.608719505" name="Shared (-shared)" superClass="gnu.cpp.link.option.shared" valueType="boolean"/>

-								<option id="gnu.cpp.link.option.libs.1134986626" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs">

-									<listOptionValue builtIn="false" value="ws2_32"/>

-								</option>

-								<option id="gnu.cpp.link.option.userobjs.1301120938" name="Other objects" superClass="gnu.cpp.link.option.userobjs"/>

-								<option id="gnu.cpp.link.option.flags.342204332" name="Linker flags" superClass="gnu.cpp.link.option.flags" value="-static -static-libgcc -static-libstdc++" valueType="string"/>

-								<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1359754804" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">

-									<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>

-									<additionalInput kind="additionalinput" paths="$(LIBS)"/>

-								</inputType>

-								<outputType id="cdt.managedbuild.tool.gnu.cpp.linker.mingw.so.output.base.1503994865" outputPrefix="lib" superClass="cdt.managedbuild.tool.gnu.cpp.linker.mingw.so.output.base"/>

-							</tool>

-						</toolChain>

-					</folderInfo>

-					<sourceEntries>

-						<entry excluding="fmuwrapper|rapidjson|fmi|asio" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>

-						<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="fmi"/>

-						<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="fmuwrapper"/>

-						<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="rapidjson"/>

-					</sourceEntries>

-				</configuration>

-			</storageModule>

-			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>

-		</cconfiguration>

-		<cconfiguration id="cdt.managedbuild.config.gnu.so.debug.938440568.2121725992.988921259">

-			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.so.debug.938440568.2121725992.988921259" moduleId="org.eclipse.cdt.core.settings" name="Realease-win">

-				<externalSettings>

-					<externalSetting>

-						<entry flags="VALUE_WORKSPACE_PATH" kind="includePath" name="/org.eclipse.papyrus.moka.fmu.wrapper"/>

-						<entry flags="VALUE_WORKSPACE_PATH" kind="libraryPath" name="/org.eclipse.papyrus.moka.fmu.wrapper/Realease-win"/>

-						<entry flags="RESOLVED" kind="libraryFile" name="fmuwrapper" srcPrefixMapping="" srcRootPath=""/>

-					</externalSetting>

-				</externalSettings>

-				<extensions>

-					<extension id="org.eclipse.cdt.core.PE" point="org.eclipse.cdt.core.BinaryParser"/>

-					<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>

-					<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>

-					<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>

-				</extensions>

-			</storageModule>

-			<storageModule moduleId="cdtBuildSystem" version="4.0.0">

-				<configuration artifactExtension="dll" artifactName="fmuwrapper" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.sharedLib" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.sharedLib,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.debug" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.so.debug.938440568.2121725992.988921259" name="Realease-win" parent="cdt.managedbuild.config.gnu.so.debug">

-					<folderInfo id="cdt.managedbuild.config.gnu.so.debug.938440568.2121725992.988921259." name="/" resourcePath="">

-						<toolChain id="cdt.managedbuild.toolchain.gnu.mingw.base.2012866302" name="MinGW GCC" superClass="cdt.managedbuild.toolchain.gnu.mingw.base">

-							<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.PE" id="cdt.managedbuild.target.gnu.platform.mingw.base.363680552" name="Debug Platform" osList="win32" superClass="cdt.managedbuild.target.gnu.platform.mingw.base"/>

-							<builder buildPath="${workspace_loc:/org.eclipse.papyrus.moka.fmu.wrapper}/Debug-win" enableAutoBuild="true" id="cdt.managedbuild.tool.gnu.builder.mingw.base.684001557" keepEnvironmentInBuildfile="false" name="CDT Internal Builder" superClass="cdt.managedbuild.tool.gnu.builder.mingw.base"/>

-							<tool id="cdt.managedbuild.tool.gnu.assembler.mingw.base.1029303739" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.mingw.base">

-								<inputType id="cdt.managedbuild.tool.gnu.assembler.input.1838624185" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>

-							</tool>

-							<tool id="cdt.managedbuild.tool.gnu.archiver.mingw.base.2109281918" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.mingw.base"/>

-							<tool id="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.base.1815182781" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.mingw.base">

-								<option id="gnu.cpp.compiler.option.include.paths.1043237294" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">

-									<listOptionValue builtIn="false" value="&quot;${MINGW_HOME}\include&quot;"/>

-									<listOptionValue builtIn="false" value="&quot;C:\Program Files\mingw-w64\x86_64-5.3.0-win32-seh-rt_v4-rev0\mingw64\x86_64-w64-mingw32\include\c++\x86_64-w64-mingw32&quot;"/>

-									<listOptionValue builtIn="false" value="&quot;C:\Program Files\mingw-w64\x86_64-5.3.0-win32-seh-rt_v4-rev0\mingw64\x86_64-w64-mingw32\include\c++\backward&quot;"/>

-									<listOptionValue builtIn="false" value="&quot;C:\Program Files\mingw-w64\x86_64-5.3.0-win32-seh-rt_v4-rev0\mingw64\x86_64-w64-mingw32\include\c++&quot;"/>

-									<listOptionValue builtIn="false" value="&quot;C:\Program Files\mingw-w64\x86_64-5.3.0-win32-seh-rt_v4-rev0\mingw64\x86_64-w64-mingw32\include&quot;"/>

-									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/asio/include}&quot;"/>

-									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/fmi}&quot;"/>

-									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/fmuwrapper/include}&quot;"/>

-									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/rapidjson/include}&quot;"/>

-								</option>

-								<option id="gnu.cpp.compiler.option.preprocessor.def.1963665940" name="Defined symbols (-D)" superClass="gnu.cpp.compiler.option.preprocessor.def" useByScannerDiscovery="false" valueType="definedSymbols">

-									<listOptionValue builtIn="false" value="ASIO_STANDALONE"/>

-									<listOptionValue builtIn="false" value="__NO_INLINE__ "/>

-								</option>

-								<option id="gnu.cpp.compiler.option.optimization.level.623143513" name="Optimization Level" superClass="gnu.cpp.compiler.option.optimization.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>

-								<option id="gnu.cpp.compiler.option.debugging.level.1802356129" name="Debug Level" superClass="gnu.cpp.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.debugging.level.none" valueType="enumerated"/>

-								<option id="gnu.cpp.compiler.option.dialect.std.129957020" name="Language standard" superClass="gnu.cpp.compiler.option.dialect.std" useByScannerDiscovery="true" value="gnu.cpp.compiler.dialect.c++11" valueType="enumerated"/>

-								<option id="gnu.cpp.compiler.option.other.pic.1057105139" name="Position Independent Code (-fPIC)" superClass="gnu.cpp.compiler.option.other.pic" useByScannerDiscovery="false" value="false" valueType="boolean"/>

-								<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.901189229" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>

-							</tool>

-							<tool id="cdt.managedbuild.tool.gnu.c.compiler.mingw.base.1488616188" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.mingw.base">

-								<option defaultValue="gnu.c.optimization.level.none" id="gnu.c.compiler.option.optimization.level.250366037" name="Optimization Level" superClass="gnu.c.compiler.option.optimization.level" useByScannerDiscovery="false" valueType="enumerated"/>

-								<option id="gnu.c.compiler.option.debugging.level.1061329611" name="Debug Level" superClass="gnu.c.compiler.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.max" valueType="enumerated"/>

-								<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.2107217532" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>

-							</tool>

-							<tool id="cdt.managedbuild.tool.gnu.c.linker.mingw.base.1553154022" name="MinGW C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.mingw.base">

-								<option defaultValue="true" id="gnu.c.link.option.shared.339349967" name="Shared (-shared)" superClass="gnu.c.link.option.shared" valueType="boolean"/>

-							</tool>

-							<tool commandLinePattern="${COMMAND} ${FLAGS} ${OUTPUT_FLAG} ${OUTPUT_PREFIX}${OUTPUT} ${INPUTS} " id="cdt.managedbuild.tool.gnu.cpp.linker.mingw.base.1371764205" name="MinGW C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.mingw.base">

-								<option defaultValue="true" id="gnu.cpp.link.option.shared.1740409933" name="Shared (-shared)" superClass="gnu.cpp.link.option.shared" valueType="boolean"/>

-								<option id="gnu.cpp.link.option.libs.933815347" name="Libraries (-l)" superClass="gnu.cpp.link.option.libs" valueType="libs">

-									<listOptionValue builtIn="false" value="ws2_32"/>

-								</option>

-								<option id="gnu.cpp.link.option.userobjs.1215270670" name="Other objects" superClass="gnu.cpp.link.option.userobjs"/>

-								<option id="gnu.cpp.link.option.flags.2068122550" name="Linker flags" superClass="gnu.cpp.link.option.flags" value="-static -static-libgcc -static-libstdc++" valueType="string"/>

-								<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1695825722" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">

-									<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>

-									<additionalInput kind="additionalinput" paths="$(LIBS)"/>

-								</inputType>

-								<outputType id="cdt.managedbuild.tool.gnu.cpp.linker.mingw.so.output.base.1362620633" outputPrefix="lib" superClass="cdt.managedbuild.tool.gnu.cpp.linker.mingw.so.output.base"/>

-							</tool>

-						</toolChain>

-					</folderInfo>

-					<sourceEntries>

-						<entry excluding="fmuwrapper|rapidjson|fmi|asio" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>

-						<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="fmi"/>

-						<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="fmuwrapper"/>

-						<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="rapidjson"/>

-					</sourceEntries>

-				</configuration>

-			</storageModule>

-			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>

-		</cconfiguration>

-		<cconfiguration id="cdt.managedbuild.config.gnu.so.release.1633590379.716182634">

-			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.config.gnu.so.release.1633590379.716182634" moduleId="org.eclipse.cdt.core.settings" name="Release-linux32">

-				<externalSettings>

-					<externalSetting>

-						<entry flags="VALUE_WORKSPACE_PATH" kind="includePath" name="/org.eclipse.papyrus.moka.fmu.wrapper"/>

-						<entry flags="VALUE_WORKSPACE_PATH" kind="libraryPath" name="/org.eclipse.papyrus.moka.fmu.wrapper/Release-linux32"/>

-						<entry flags="RESOLVED" kind="libraryFile" name="fmuwrapper" srcPrefixMapping="" srcRootPath=""/>

-					</externalSetting>

-				</externalSettings>

-				<extensions>

-					<extension id="org.eclipse.cdt.core.GNU_ELF" point="org.eclipse.cdt.core.BinaryParser"/>

-					<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>

-					<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>

-					<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>

-				</extensions>

-			</storageModule>

-			<storageModule moduleId="cdtBuildSystem" version="4.0.0">

-				<configuration artifactExtension="so" artifactName="fmuwrapper" buildArtefactType="org.eclipse.cdt.build.core.buildArtefactType.sharedLib" buildProperties="org.eclipse.cdt.build.core.buildArtefactType=org.eclipse.cdt.build.core.buildArtefactType.sharedLib,org.eclipse.cdt.build.core.buildType=org.eclipse.cdt.build.core.buildType.release" cleanCommand="rm -rf" description="" id="cdt.managedbuild.config.gnu.so.release.1633590379.716182634" name="Release-linux32" parent="cdt.managedbuild.config.gnu.so.release">

-					<folderInfo id="cdt.managedbuild.config.gnu.so.release.1633590379.716182634." name="/" resourcePath="">

-						<toolChain id="cdt.managedbuild.toolchain.gnu.so.release.1058494710" name="Linux GCC" nonInternalBuilderId="cdt.managedbuild.target.gnu.builder.so.release" superClass="cdt.managedbuild.toolchain.gnu.so.release">

-							<targetPlatform id="cdt.managedbuild.target.gnu.platform.so.release.609328798" name="Debug Platform" superClass="cdt.managedbuild.target.gnu.platform.so.release"/>

-							<builder autoBuildTarget="all" buildPath="${workspace_loc:/org.eclipse.papyrus.moka.fmu.wrapper}/Release" cleanBuildTarget="clean" id="org.eclipse.cdt.build.core.internal.builder.1026344308" incrementalBuildTarget="all" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="CDT Internal Builder" superClass="org.eclipse.cdt.build.core.internal.builder"/>

-							<tool id="cdt.managedbuild.tool.gnu.archiver.base.456748396" name="GCC Archiver" superClass="cdt.managedbuild.tool.gnu.archiver.base"/>

-							<tool command="g++  -m32" id="cdt.managedbuild.tool.gnu.cpp.compiler.so.release.287475605" name="GCC C++ Compiler" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.so.release">

-								<option id="gnu.cpp.compiler.so.release.option.optimization.level.1810331134" name="Optimization Level" superClass="gnu.cpp.compiler.so.release.option.optimization.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.optimization.level.most" valueType="enumerated"/>

-								<option id="gnu.cpp.compiler.so.release.option.debugging.level.25766426" name="Debug Level" superClass="gnu.cpp.compiler.so.release.option.debugging.level" useByScannerDiscovery="false" value="gnu.cpp.compiler.debugging.level.none" valueType="enumerated"/>

-								<option id="gnu.cpp.compiler.option.dialect.std.1870849425" name="Language standard" superClass="gnu.cpp.compiler.option.dialect.std" useByScannerDiscovery="true" value="gnu.cpp.compiler.dialect.c++11" valueType="enumerated"/>

-								<option id="gnu.cpp.compiler.option.include.paths.747841227" name="Include paths (-I)" superClass="gnu.cpp.compiler.option.include.paths" useByScannerDiscovery="false" valueType="includePath">

-									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/asio/include}&quot;"/>

-									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/fmi}&quot;"/>

-									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/fmuwrapper/include}&quot;"/>

-									<listOptionValue builtIn="false" value="&quot;${workspace_loc:/${ProjName}/rapidjson/include}&quot;"/>

-								</option>

-								<option id="gnu.cpp.compiler.option.other.pic.1574486242" name="Position Independent Code (-fPIC)" superClass="gnu.cpp.compiler.option.other.pic" useByScannerDiscovery="false" value="true" valueType="boolean"/>

-								<inputType id="cdt.managedbuild.tool.gnu.cpp.compiler.input.2141861156" superClass="cdt.managedbuild.tool.gnu.cpp.compiler.input"/>

-							</tool>

-							<tool id="cdt.managedbuild.tool.gnu.c.compiler.so.release.1635307256" name="GCC C Compiler" superClass="cdt.managedbuild.tool.gnu.c.compiler.so.release">

-								<option defaultValue="gnu.c.optimization.level.most" id="gnu.c.compiler.so.release.option.optimization.level.1476943367" name="Optimization Level" superClass="gnu.c.compiler.so.release.option.optimization.level" useByScannerDiscovery="false" valueType="enumerated"/>

-								<option id="gnu.c.compiler.so.release.option.debugging.level.672863135" name="Debug Level" superClass="gnu.c.compiler.so.release.option.debugging.level" useByScannerDiscovery="false" value="gnu.c.debugging.level.none" valueType="enumerated"/>

-								<option id="gnu.c.compiler.option.dialect.std.1971918371" name="Language standard" superClass="gnu.c.compiler.option.dialect.std" useByScannerDiscovery="true" value="gnu.c.compiler.dialect.default" valueType="enumerated"/>

-								<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1314437742" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>

-							</tool>

-							<tool id="cdt.managedbuild.tool.gnu.c.linker.so.release.349988126" name="GCC C Linker" superClass="cdt.managedbuild.tool.gnu.c.linker.so.release">

-								<option defaultValue="true" id="gnu.c.link.so.release.option.shared.389969842" name="Shared (-shared)" superClass="gnu.c.link.so.release.option.shared" valueType="boolean"/>

-							</tool>

-							<tool command="g++ -m32" id="cdt.managedbuild.tool.gnu.cpp.linker.so.release.69312691" name="GCC C++ Linker" superClass="cdt.managedbuild.tool.gnu.cpp.linker.so.release">

-								<option defaultValue="true" id="gnu.cpp.link.so.release.option.shared.105078424" name="Shared (-shared)" superClass="gnu.cpp.link.so.release.option.shared" valueType="boolean"/>

-								<option id="gnu.cpp.link.option.soname.1929677375" name="Shared object name (-Wl,-soname=)" superClass="gnu.cpp.link.option.soname" value="fmuwrapper" valueType="string"/>

-								<inputType id="cdt.managedbuild.tool.gnu.cpp.linker.input.1479941538" superClass="cdt.managedbuild.tool.gnu.cpp.linker.input">

-									<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>

-									<additionalInput kind="additionalinput" paths="$(LIBS)"/>

-								</inputType>

-							</tool>

-							<tool id="cdt.managedbuild.tool.gnu.assembler.so.release.1010204289" name="GCC Assembler" superClass="cdt.managedbuild.tool.gnu.assembler.so.release">

-								<inputType id="cdt.managedbuild.tool.gnu.assembler.input.1495263229" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>

-							</tool>

-						</toolChain>

-					</folderInfo>

-					<sourceEntries>

-						<entry excluding="fmuwrapper|rapidjson|fmi|asio" flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name=""/>

-						<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="fmi"/>

-						<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="fmuwrapper"/>

-						<entry flags="VALUE_WORKSPACE_PATH|RESOLVED" kind="sourcePath" name="rapidjson"/>

-					</sourceEntries>

-				</configuration>

-			</storageModule>

-			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>

-		</cconfiguration>

-	</storageModule>

-	<storageModule moduleId="cdtBuildSystem" version="4.0.0">

-		<project id="org.eclipse.papyrus.moka.fmu.wrapper.cdt.managedbuild.target.gnu.so.1328453110" name="Shared Library" projectType="cdt.managedbuild.target.gnu.so"/>

-	</storageModule>

-	<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>

-	<storageModule moduleId="refreshScope" versionNumber="2">

-		<configuration configurationName="Realease-win"/>

-		<configuration configurationName="Debug-win"/>

-		<configuration configurationName="Debug">

-			<resource resourceType="PROJECT" workspacePath="/org.eclipse.papyrus.moka.fmu.wrapper"/>

-		</configuration>

-		<configuration configurationName="Release">

-			<resource resourceType="PROJECT" workspacePath="/org.eclipse.papyrus.moka.fmu.wrapper"/>

-		</configuration>

-		<configuration configurationName="Release-linux32"/>

-	</storageModule>

-	<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>

-	<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>

-	<storageModule moduleId="scannerConfiguration">

-		<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>

-		<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.so.debug.938440568;cdt.managedbuild.config.gnu.so.debug.938440568.;cdt.managedbuild.tool.gnu.c.compiler.so.debug.1483806738;cdt.managedbuild.tool.gnu.c.compiler.input.1036534337">

-			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>

-		</scannerConfigBuildInfo>

-		<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.so.debug.938440568;cdt.managedbuild.config.gnu.so.debug.938440568.;cdt.managedbuild.tool.gnu.cpp.compiler.so.debug.705238463;cdt.managedbuild.tool.gnu.cpp.compiler.input.2022581088">

-			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>

-		</scannerConfigBuildInfo>

-		<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.so.release.1633590379;cdt.managedbuild.config.gnu.so.release.1633590379.;cdt.managedbuild.tool.gnu.cpp.compiler.so.release.2063131096;cdt.managedbuild.tool.gnu.cpp.compiler.input.1609031559">

-			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>

-		</scannerConfigBuildInfo>

-		<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.so.debug.938440568.2121725992;cdt.managedbuild.config.gnu.so.debug.938440568.2121725992.;cdt.managedbuild.tool.gnu.cpp.compiler.mingw.base.1715499015;cdt.managedbuild.tool.gnu.cpp.compiler.input.364847476">

-			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>

-		</scannerConfigBuildInfo>

-		<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.so.release.1633590379;cdt.managedbuild.config.gnu.so.release.1633590379.;cdt.managedbuild.tool.gnu.c.compiler.so.release.1972254947;cdt.managedbuild.tool.gnu.c.compiler.input.100708275">

-			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>

-		</scannerConfigBuildInfo>

-		<scannerConfigBuildInfo instanceId="cdt.managedbuild.config.gnu.so.debug.938440568.2121725992;cdt.managedbuild.config.gnu.so.debug.938440568.2121725992.;cdt.managedbuild.tool.gnu.c.compiler.mingw.base.695463295;cdt.managedbuild.tool.gnu.c.compiler.input.690643609">

-			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>

-		</scannerConfigBuildInfo>

-	</storageModule>

-</cproject>

diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/.gitignore b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/.gitignore
deleted file mode 100644
index 86b9121..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-/Debug-win/
-/Debug/
-/Release-linux32/
-/Release/
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/.project b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/.project
deleted file mode 100644
index 1fab090..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/.project
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
-	<name>org.eclipse.papyrus.moka.fmu.wrapper</name>
-	<comment></comment>
-	<projects>
-	</projects>
-	<buildSpec>
-		<buildCommand>
-			<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
-			<arguments>
-			</arguments>
-		</buildCommand>
-		<buildCommand>
-			<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
-			<triggers>full,incremental,</triggers>
-			<arguments>
-			</arguments>
-		</buildCommand>
-	</buildSpec>
-	<natures>
-		<nature>org.eclipse.cdt.core.cnature</nature>
-		<nature>org.eclipse.cdt.core.ccnature</nature>
-		<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
-		<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
-	</natures>
-</projectDescription>
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/Debug-win/.gitignore b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/Debug-win/.gitignore
deleted file mode 100644
index 00a9597..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/Debug-win/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/libfmuwrapper.so
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/Debug-win/fmuwrapper/src/AbstractFMIComponent.o b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/Debug-win/fmuwrapper/src/AbstractFMIComponent.o
deleted file mode 100644
index bceb3b3..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/Debug-win/fmuwrapper/src/AbstractFMIComponent.o
+++ /dev/null
Binary files differ
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/Realease-win/.gitignore b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/Realease-win/.gitignore
deleted file mode 100644
index 9b62deb..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/Realease-win/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/libfmuwrapper.dll
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/Realease-win/fmuwrapper/src/.gitignore b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/Realease-win/fmuwrapper/src/.gitignore
deleted file mode 100644
index 7be8ab2..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/Realease-win/fmuwrapper/src/.gitignore
+++ /dev/null
@@ -1,3 +0,0 @@
-/JSONClient.o
-/JSONFMIComponent.o
-/JSONFMUWrapper.o
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/Realease-win/fmuwrapper/src/AbstractFMIComponent.o b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/Realease-win/fmuwrapper/src/AbstractFMIComponent.o
deleted file mode 100644
index cae00fe..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/Realease-win/fmuwrapper/src/AbstractFMIComponent.o
+++ /dev/null
Binary files differ
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/Release/fmuwrapper/.gitignore b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/Release/fmuwrapper/.gitignore
deleted file mode 100644
index 4f00cd9..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/Release/fmuwrapper/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/src/
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/about.html b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/about.html
deleted file mode 100644
index 82d49bf..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/about.html
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

-    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

-<html xmlns="http://www.w3.org/1999/xhtml">

-<head>

-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>

-<title>About</title>

-</head>

-<body lang="EN-US">

-<h2>About This Content</h2>

- 

-<p>June 5, 2007</p>	

-<h3>License</h3>

-

-<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;).  Unless otherwise 

-indicated below, the Content is provided to you under the terms and conditions of the

-Eclipse Public License Version 1.0 (&quot;EPL&quot;).  A copy of the EPL is available 

-at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.

-For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>

-

-<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is 

-being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may

-apply to your use of any object code in the Content.  Check the Redistributor's license that was 

-provided with the Content.  If no such license exists, contact the Redistributor.  Unless otherwise

-indicated below, the terms and conditions of the EPL still apply to any source code in the Content

-and such source code may be obtained at <a href="http://www.eclipse.org/">http://www.eclipse.org</a>.</p>

-

-</body>

-</html>

diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/LICENSE_1_0.txt b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/LICENSE_1_0.txt
deleted file mode 100644
index 36b7cd9..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/LICENSE_1_0.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-Boost Software License - Version 1.0 - August 17th, 2003
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/Makefile.am b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/Makefile.am
deleted file mode 100644
index 7fe3b28..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/Makefile.am
+++ /dev/null
@@ -1,411 +0,0 @@
-# find . -name "*.*pp" | sed -e 's/^\.\///' | sed -e 's/^.*$/  & \\/' | sort
-nobase_include_HEADERS = \
-	asio/async_result.hpp \
-	asio/basic_datagram_socket.hpp \
-	asio/basic_deadline_timer.hpp \
-	asio/basic_io_object.hpp \
-	asio/basic_raw_socket.hpp \
-	asio/basic_seq_packet_socket.hpp \
-	asio/basic_serial_port.hpp \
-	asio/basic_signal_set.hpp \
-	asio/basic_socket_acceptor.hpp \
-	asio/basic_socket.hpp \
-	asio/basic_socket_iostream.hpp \
-	asio/basic_socket_streambuf.hpp \
-	asio/basic_streambuf_fwd.hpp \
-	asio/basic_streambuf.hpp \
-	asio/basic_stream_socket.hpp \
-	asio/basic_waitable_timer.hpp \
-	asio/buffered_read_stream_fwd.hpp \
-	asio/buffered_read_stream.hpp \
-	asio/buffered_stream_fwd.hpp \
-	asio/buffered_stream.hpp \
-	asio/buffered_write_stream_fwd.hpp \
-	asio/buffered_write_stream.hpp \
-	asio/buffer.hpp \
-	asio/buffers_iterator.hpp \
-	asio/completion_condition.hpp \
-	asio/connect.hpp \
-	asio/coroutine.hpp \
-	asio/datagram_socket_service.hpp \
-	asio/deadline_timer.hpp \
-	asio/deadline_timer_service.hpp \
-	asio/detail/addressof.hpp \
-	asio/detail/array_fwd.hpp \
-	asio/detail/array.hpp \
-	asio/detail/assert.hpp \
-	asio/detail/atomic_count.hpp \
-	asio/detail/base_from_completion_cond.hpp \
-	asio/detail/bind_handler.hpp \
-	asio/detail/buffered_stream_storage.hpp \
-	asio/detail/buffer_resize_guard.hpp \
-	asio/detail/buffer_sequence_adapter.hpp \
-	asio/detail/call_stack.hpp \
-	asio/detail/chrono_time_traits.hpp \
-	asio/detail/completion_handler.hpp \
-	asio/detail/config.hpp \
-	asio/detail/consuming_buffers.hpp \
-	asio/detail/cstdint.hpp \
-	asio/detail/date_time_fwd.hpp \
-	asio/detail/deadline_timer_service.hpp \
-	asio/detail/dependent_type.hpp \
-	asio/detail/descriptor_ops.hpp \
-	asio/detail/descriptor_read_op.hpp \
-	asio/detail/descriptor_write_op.hpp \
-	asio/detail/dev_poll_reactor.hpp \
-	asio/detail/epoll_reactor.hpp \
-	asio/detail/eventfd_select_interrupter.hpp \
-	asio/detail/event.hpp \
-	asio/detail/fd_set_adapter.hpp \
-	asio/detail/fenced_block.hpp \
-	asio/detail/function.hpp \
-	asio/detail/gcc_arm_fenced_block.hpp \
-	asio/detail/gcc_hppa_fenced_block.hpp \
-	asio/detail/gcc_sync_fenced_block.hpp \
-	asio/detail/gcc_x86_fenced_block.hpp \
-	asio/detail/handler_alloc_helpers.hpp \
-	asio/detail/handler_cont_helpers.hpp \
-	asio/detail/handler_invoke_helpers.hpp \
-	asio/detail/handler_tracking.hpp \
-	asio/detail/handler_type_requirements.hpp \
-	asio/detail/hash_map.hpp \
-	asio/detail/impl/buffer_sequence_adapter.ipp \
-	asio/detail/impl/descriptor_ops.ipp \
-	asio/detail/impl/dev_poll_reactor.hpp \
-	asio/detail/impl/dev_poll_reactor.ipp \
-	asio/detail/impl/epoll_reactor.hpp \
-	asio/detail/impl/epoll_reactor.ipp \
-	asio/detail/impl/eventfd_select_interrupter.ipp \
-	asio/detail/impl/handler_tracking.ipp \
-	asio/detail/impl/kqueue_reactor.hpp \
-	asio/detail/impl/kqueue_reactor.ipp \
-	asio/detail/impl/pipe_select_interrupter.ipp \
-	asio/detail/impl/posix_event.ipp \
-	asio/detail/impl/posix_mutex.ipp \
-	asio/detail/impl/posix_thread.ipp \
-	asio/detail/impl/posix_tss_ptr.ipp \
-	asio/detail/impl/reactive_descriptor_service.ipp \
-	asio/detail/impl/reactive_serial_port_service.ipp \
-	asio/detail/impl/reactive_socket_service_base.ipp \
-	asio/detail/impl/resolver_service_base.ipp \
-	asio/detail/impl/select_reactor.hpp \
-	asio/detail/impl/select_reactor.ipp \
-	asio/detail/impl/service_registry.hpp \
-	asio/detail/impl/service_registry.ipp \
-	asio/detail/impl/signal_set_service.ipp \
-	asio/detail/impl/socket_ops.ipp \
-	asio/detail/impl/socket_select_interrupter.ipp \
-	asio/detail/impl/strand_service.hpp \
-	asio/detail/impl/strand_service.ipp \
-	asio/detail/impl/task_io_service.hpp \
-	asio/detail/impl/task_io_service.ipp \
-	asio/detail/impl/throw_error.ipp \
-	asio/detail/impl/timer_queue_ptime.ipp \
-	asio/detail/impl/timer_queue_set.ipp \
-	asio/detail/impl/win_event.ipp \
-	asio/detail/impl/win_iocp_handle_service.ipp \
-	asio/detail/impl/win_iocp_io_service.hpp \
-	asio/detail/impl/win_iocp_io_service.ipp \
-	asio/detail/impl/win_iocp_serial_port_service.ipp \
-	asio/detail/impl/win_iocp_socket_service_base.ipp \
-	asio/detail/impl/win_mutex.ipp \
-	asio/detail/impl/win_object_handle_service.ipp \
-	asio/detail/impl/winrt_ssocket_service_base.ipp \
-	asio/detail/impl/winrt_timer_scheduler.hpp \
-	asio/detail/impl/winrt_timer_scheduler.ipp \
-	asio/detail/impl/winsock_init.ipp \
-	asio/detail/impl/win_static_mutex.ipp \
-	asio/detail/impl/win_thread.ipp \
-	asio/detail/impl/win_tss_ptr.ipp \
-	asio/detail/io_control.hpp \
-	asio/detail/keyword_tss_ptr.hpp \
-	asio/detail/kqueue_reactor.hpp \
-	asio/detail/limits.hpp \
-	asio/detail/local_free_on_block_exit.hpp \
-	asio/detail/macos_fenced_block.hpp \
-	asio/detail/mutex.hpp \
-	asio/detail/noncopyable.hpp \
-	asio/detail/null_event.hpp \
-	asio/detail/null_fenced_block.hpp \
-	asio/detail/null_mutex.hpp \
-	asio/detail/null_reactor.hpp \
-	asio/detail/null_signal_blocker.hpp \
-	asio/detail/null_socket_service.hpp \
-	asio/detail/null_static_mutex.hpp \
-	asio/detail/null_thread.hpp \
-	asio/detail/null_tss_ptr.hpp \
-	asio/detail/object_pool.hpp \
-	asio/detail/old_win_sdk_compat.hpp \
-	asio/detail/operation.hpp \
-	asio/detail/op_queue.hpp \
-	asio/detail/pipe_select_interrupter.hpp \
-	asio/detail/pop_options.hpp \
-	asio/detail/posix_event.hpp \
-	asio/detail/posix_fd_set_adapter.hpp \
-	asio/detail/posix_mutex.hpp \
-	asio/detail/posix_signal_blocker.hpp \
-	asio/detail/posix_static_mutex.hpp \
-	asio/detail/posix_thread.hpp \
-	asio/detail/posix_tss_ptr.hpp \
-	asio/detail/push_options.hpp \
-	asio/detail/reactive_descriptor_service.hpp \
-	asio/detail/reactive_null_buffers_op.hpp \
-	asio/detail/reactive_serial_port_service.hpp \
-	asio/detail/reactive_socket_accept_op.hpp \
-	asio/detail/reactive_socket_connect_op.hpp \
-	asio/detail/reactive_socket_recvfrom_op.hpp \
-	asio/detail/reactive_socket_recvmsg_op.hpp \
-	asio/detail/reactive_socket_recv_op.hpp \
-	asio/detail/reactive_socket_send_op.hpp \
-	asio/detail/reactive_socket_sendto_op.hpp \
-	asio/detail/reactive_socket_service_base.hpp \
-	asio/detail/reactive_socket_service.hpp \
-	asio/detail/reactor_fwd.hpp \
-	asio/detail/reactor.hpp \
-	asio/detail/reactor_op.hpp \
-	asio/detail/reactor_op_queue.hpp \
-	asio/detail/regex_fwd.hpp \
-	asio/detail/resolve_endpoint_op.hpp \
-	asio/detail/resolve_op.hpp \
-	asio/detail/resolver_service_base.hpp \
-	asio/detail/resolver_service.hpp \
-	asio/detail/scoped_lock.hpp \
-	asio/detail/scoped_ptr.hpp \
-	asio/detail/select_interrupter.hpp \
-	asio/detail/select_reactor.hpp \
-	asio/detail/service_registry.hpp \
-	asio/detail/shared_ptr.hpp \
-	asio/detail/signal_blocker.hpp \
-	asio/detail/signal_handler.hpp \
-	asio/detail/signal_init.hpp \
-	asio/detail/signal_op.hpp \
-	asio/detail/signal_set_service.hpp \
-	asio/detail/socket_holder.hpp \
-	asio/detail/socket_ops.hpp \
-	asio/detail/socket_option.hpp \
-	asio/detail/socket_select_interrupter.hpp \
-	asio/detail/socket_types.hpp \
-	asio/detail/solaris_fenced_block.hpp \
-	asio/detail/static_mutex.hpp \
-	asio/detail/std_event.hpp \
-	asio/detail/std_mutex.hpp \
-	asio/detail/std_static_mutex.hpp \
-	asio/detail/std_thread.hpp \
-	asio/detail/strand_service.hpp \
-	asio/detail/task_io_service.hpp \
-	asio/detail/task_io_service_operation.hpp \
-	asio/detail/task_io_service_thread_info.hpp \
-	asio/detail/thread.hpp \
-	asio/detail/thread_info_base.hpp \
-	asio/detail/throw_error.hpp \
-	asio/detail/throw_exception.hpp \
-	asio/detail/timer_queue_base.hpp \
-	asio/detail/timer_queue.hpp \
-	asio/detail/timer_queue_ptime.hpp \
-	asio/detail/timer_queue_set.hpp \
-	asio/detail/timer_scheduler_fwd.hpp \
-	asio/detail/timer_scheduler.hpp \
-	asio/detail/tss_ptr.hpp \
-	asio/detail/type_traits.hpp \
-	asio/detail/variadic_templates.hpp \
-	asio/detail/wait_handler.hpp \
-	asio/detail/wait_op.hpp \
-	asio/detail/weak_ptr.hpp \
-	asio/detail/wince_thread.hpp \
-	asio/detail/win_event.hpp \
-	asio/detail/win_fd_set_adapter.hpp \
-	asio/detail/win_fenced_block.hpp \
-	asio/detail/win_iocp_handle_read_op.hpp \
-	asio/detail/win_iocp_handle_service.hpp \
-	asio/detail/win_iocp_handle_write_op.hpp \
-	asio/detail/win_iocp_io_service.hpp \
-	asio/detail/win_iocp_null_buffers_op.hpp \
-	asio/detail/win_iocp_operation.hpp \
-	asio/detail/win_iocp_overlapped_op.hpp \
-	asio/detail/win_iocp_overlapped_ptr.hpp \
-	asio/detail/win_iocp_serial_port_service.hpp \
-	asio/detail/win_iocp_socket_accept_op.hpp \
-	asio/detail/win_iocp_socket_connect_op.hpp \
-	asio/detail/win_iocp_socket_recvfrom_op.hpp \
-	asio/detail/win_iocp_socket_recvmsg_op.hpp \
-	asio/detail/win_iocp_socket_recv_op.hpp \
-	asio/detail/win_iocp_socket_send_op.hpp \
-	asio/detail/win_iocp_socket_service_base.hpp \
-	asio/detail/win_iocp_socket_service.hpp \
-	asio/detail/win_iocp_thread_info.hpp \
-	asio/detail/win_mutex.hpp \
-	asio/detail/win_object_handle_service.hpp \
-	asio/detail/winrt_async_manager.hpp \
-	asio/detail/winrt_async_op.hpp \
-	asio/detail/winrt_resolve_op.hpp \
-	asio/detail/winrt_resolver_service.hpp \
-	asio/detail/winrt_socket_connect_op.hpp \
-	asio/detail/winrt_socket_recv_op.hpp \
-	asio/detail/winrt_socket_send_op.hpp \
-	asio/detail/winrt_ssocket_service_base.hpp \
-	asio/detail/winrt_ssocket_service.hpp \
-	asio/detail/winrt_timer_scheduler.hpp \
-	asio/detail/winrt_utils.hpp \
-	asio/detail/winsock_init.hpp \
-	asio/detail/win_static_mutex.hpp \
-	asio/detail/win_thread.hpp \
-	asio/detail/win_tss_ptr.hpp \
-	asio/detail/wrapped_handler.hpp \
-	asio/error_code.hpp \
-	asio/error.hpp \
-	asio/generic/basic_endpoint.hpp \
-	asio/generic/datagram_protocol.hpp \
-	asio/generic/detail/endpoint.hpp \
-	asio/generic/detail/impl/endpoint.ipp \
-	asio/generic/raw_protocol.hpp \
-	asio/generic/seq_packet_protocol.hpp \
-	asio/generic/stream_protocol.hpp \
-	asio/handler_alloc_hook.hpp \
-	asio/handler_continuation_hook.hpp \
-	asio/handler_invoke_hook.hpp \
-	asio/handler_type.hpp \
-	asio/high_resolution_timer.hpp \
-	asio.hpp \
-	asio/impl/buffered_read_stream.hpp \
-	asio/impl/buffered_write_stream.hpp \
-	asio/impl/connect.hpp \
-	asio/impl/error_code.ipp \
-	asio/impl/error.ipp \
-	asio/impl/handler_alloc_hook.ipp \
-	asio/impl/io_service.hpp \
-	asio/impl/io_service.ipp \
-	asio/impl/read_at.hpp \
-	asio/impl/read.hpp \
-	asio/impl/read_until.hpp \
-	asio/impl/serial_port_base.hpp \
-	asio/impl/serial_port_base.ipp \
-	asio/impl/spawn.hpp \
-	asio/impl/src.cpp \
-	asio/impl/src.hpp \
-	asio/impl/use_future.hpp \
-	asio/impl/write_at.hpp \
-	asio/impl/write.hpp \
-	asio/io_service.hpp \
-	asio/ip/address.hpp \
-	asio/ip/address_v4.hpp \
-	asio/ip/address_v6.hpp \
-	asio/ip/basic_endpoint.hpp \
-	asio/ip/basic_resolver_entry.hpp \
-	asio/ip/basic_resolver.hpp \
-	asio/ip/basic_resolver_iterator.hpp \
-	asio/ip/basic_resolver_query.hpp \
-	asio/ip/detail/endpoint.hpp \
-	asio/ip/detail/impl/endpoint.ipp \
-	asio/ip/detail/socket_option.hpp \
-	asio/ip/host_name.hpp \
-	asio/ip/icmp.hpp \
-	asio/ip/impl/address.hpp \
-	asio/ip/impl/address.ipp \
-	asio/ip/impl/address_v4.hpp \
-	asio/ip/impl/address_v4.ipp \
-	asio/ip/impl/address_v6.hpp \
-	asio/ip/impl/address_v6.ipp \
-	asio/ip/impl/basic_endpoint.hpp \
-	asio/ip/impl/host_name.ipp \
-	asio/ip/multicast.hpp \
-	asio/ip/resolver_query_base.hpp \
-	asio/ip/resolver_service.hpp \
-	asio/ip/tcp.hpp \
-	asio/ip/udp.hpp \
-	asio/ip/unicast.hpp \
-	asio/ip/v6_only.hpp \
-	asio/is_read_buffered.hpp \
-	asio/is_write_buffered.hpp \
-	asio/local/basic_endpoint.hpp \
-	asio/local/connect_pair.hpp \
-	asio/local/datagram_protocol.hpp \
-	asio/local/detail/endpoint.hpp \
-	asio/local/detail/impl/endpoint.ipp \
-	asio/local/stream_protocol.hpp \
-	asio/placeholders.hpp \
-	asio/posix/basic_descriptor.hpp \
-	asio/posix/basic_stream_descriptor.hpp \
-	asio/posix/descriptor_base.hpp \
-	asio/posix/stream_descriptor.hpp \
-	asio/posix/stream_descriptor_service.hpp \
-	asio/raw_socket_service.hpp \
-	asio/read_at.hpp \
-	asio/read.hpp \
-	asio/read_until.hpp \
-	asio/seq_packet_socket_service.hpp \
-	asio/serial_port_base.hpp \
-	asio/serial_port.hpp \
-	asio/serial_port_service.hpp \
-	asio/signal_set.hpp \
-	asio/signal_set_service.hpp \
-	asio/socket_acceptor_service.hpp \
-	asio/socket_base.hpp \
-	asio/spawn.hpp \
-	asio/ssl/basic_context.hpp \
-	asio/ssl/context_base.hpp \
-	asio/ssl/context.hpp \
-	asio/ssl/context_service.hpp \
-	asio/ssl/detail/buffered_handshake_op.hpp \
-	asio/ssl/detail/engine.hpp \
-	asio/ssl/detail/handshake_op.hpp \
-	asio/ssl/detail/impl/engine.ipp \
-	asio/ssl/detail/impl/openssl_init.ipp \
-	asio/ssl/detail/io.hpp \
-	asio/ssl/detail/openssl_init.hpp \
-	asio/ssl/detail/openssl_types.hpp \
-	asio/ssl/detail/password_callback.hpp \
-	asio/ssl/detail/read_op.hpp \
-	asio/ssl/detail/shutdown_op.hpp \
-	asio/ssl/detail/stream_core.hpp \
-	asio/ssl/detail/verify_callback.hpp \
-	asio/ssl/detail/write_op.hpp \
-	asio/ssl/error.hpp \
-	asio/ssl.hpp \
-	asio/ssl/impl/context.hpp \
-	asio/ssl/impl/context.ipp \
-	asio/ssl/impl/error.ipp \
-	asio/ssl/impl/rfc2818_verification.ipp \
-	asio/ssl/impl/src.hpp \
-	asio/ssl/old/basic_context.hpp \
-	asio/ssl/old/context_service.hpp \
-	asio/ssl/old/detail/openssl_context_service.hpp \
-	asio/ssl/old/detail/openssl_operation.hpp \
-	asio/ssl/old/detail/openssl_stream_service.hpp \
-	asio/ssl/old/stream.hpp \
-	asio/ssl/old/stream_service.hpp \
-	asio/ssl/rfc2818_verification.hpp \
-	asio/ssl/stream_base.hpp \
-	asio/ssl/stream.hpp \
-	asio/ssl/stream_service.hpp \
-	asio/ssl/verify_context.hpp \
-	asio/ssl/verify_mode.hpp \
-	asio/steady_timer.hpp \
-	asio/strand.hpp \
-	asio/streambuf.hpp \
-	asio/stream_socket_service.hpp \
-	asio/system_error.hpp \
-	asio/system_timer.hpp \
-	asio/thread.hpp \
-	asio/time_traits.hpp \
-	asio/unyield.hpp \
-	asio/use_future.hpp \
-	asio/version.hpp \
-	asio/waitable_timer_service.hpp \
-	asio/wait_traits.hpp \
-	asio/windows/basic_handle.hpp \
-	asio/windows/basic_object_handle.hpp \
-	asio/windows/basic_random_access_handle.hpp \
-	asio/windows/basic_stream_handle.hpp \
-	asio/windows/object_handle.hpp \
-	asio/windows/object_handle_service.hpp \
-	asio/windows/overlapped_ptr.hpp \
-	asio/windows/random_access_handle.hpp \
-	asio/windows/random_access_handle_service.hpp \
-	asio/windows/stream_handle.hpp \
-	asio/windows/stream_handle_service.hpp \
-	asio/write_at.hpp \
-	asio/write.hpp \
-	asio/yield.hpp
-
-MAINTAINERCLEANFILES = \
-	$(srcdir)/Makefile.in
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/Makefile.in b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/Makefile.in
deleted file mode 100644
index dbe464f..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/Makefile.in
+++ /dev/null
@@ -1,935 +0,0 @@
-# Makefile.in generated by automake 1.14.1 from Makefile.am.
-# @configure_input@
-
-# Copyright (C) 1994-2013 Free Software Foundation, Inc.
-
-# This Makefile.in is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
-# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
-# PARTICULAR PURPOSE.
-
-@SET_MAKE@
-
-VPATH = @srcdir@
-am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)'
-am__make_running_with_option = \
-  case $${target_option-} in \
-      ?) ;; \
-      *) echo "am__make_running_with_option: internal error: invalid" \
-              "target option '$${target_option-}' specified" >&2; \
-         exit 1;; \
-  esac; \
-  has_opt=no; \
-  sane_makeflags=$$MAKEFLAGS; \
-  if $(am__is_gnu_make); then \
-    sane_makeflags=$$MFLAGS; \
-  else \
-    case $$MAKEFLAGS in \
-      *\\[\ \	]*) \
-        bs=\\; \
-        sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \
-          | sed "s/$$bs$$bs[$$bs $$bs	]*//g"`;; \
-    esac; \
-  fi; \
-  skip_next=no; \
-  strip_trailopt () \
-  { \
-    flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \
-  }; \
-  for flg in $$sane_makeflags; do \
-    test $$skip_next = yes && { skip_next=no; continue; }; \
-    case $$flg in \
-      *=*|--*) continue;; \
-        -*I) strip_trailopt 'I'; skip_next=yes;; \
-      -*I?*) strip_trailopt 'I';; \
-        -*O) strip_trailopt 'O'; skip_next=yes;; \
-      -*O?*) strip_trailopt 'O';; \
-        -*l) strip_trailopt 'l'; skip_next=yes;; \
-      -*l?*) strip_trailopt 'l';; \
-      -[dEDm]) skip_next=yes;; \
-      -[JT]) skip_next=yes;; \
-    esac; \
-    case $$flg in \
-      *$$target_option*) has_opt=yes; break;; \
-    esac; \
-  done; \
-  test $$has_opt = yes
-am__make_dryrun = (target_option=n; $(am__make_running_with_option))
-am__make_keepgoing = (target_option=k; $(am__make_running_with_option))
-pkgdatadir = $(datadir)/@PACKAGE@
-pkgincludedir = $(includedir)/@PACKAGE@
-pkglibdir = $(libdir)/@PACKAGE@
-pkglibexecdir = $(libexecdir)/@PACKAGE@
-am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
-install_sh_DATA = $(install_sh) -c -m 644
-install_sh_PROGRAM = $(install_sh) -c
-install_sh_SCRIPT = $(install_sh) -c
-INSTALL_HEADER = $(INSTALL_DATA)
-transform = $(program_transform_name)
-NORMAL_INSTALL = :
-PRE_INSTALL = :
-POST_INSTALL = :
-NORMAL_UNINSTALL = :
-PRE_UNINSTALL = :
-POST_UNINSTALL = :
-build_triplet = @build@
-host_triplet = @host@
-subdir = include
-DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
-	$(nobase_include_HEADERS)
-ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
-am__aclocal_m4_deps = $(top_srcdir)/configure.ac
-am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
-	$(ACLOCAL_M4)
-mkinstalldirs = $(install_sh) -d
-CONFIG_CLEAN_FILES =
-CONFIG_CLEAN_VPATH_FILES =
-AM_V_P = $(am__v_P_@AM_V@)
-am__v_P_ = $(am__v_P_@AM_DEFAULT_V@)
-am__v_P_0 = false
-am__v_P_1 = :
-AM_V_GEN = $(am__v_GEN_@AM_V@)
-am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@)
-am__v_GEN_0 = @echo "  GEN     " $@;
-am__v_GEN_1 = 
-AM_V_at = $(am__v_at_@AM_V@)
-am__v_at_ = $(am__v_at_@AM_DEFAULT_V@)
-am__v_at_0 = @
-am__v_at_1 = 
-SOURCES =
-DIST_SOURCES =
-am__can_run_installinfo = \
-  case $$AM_UPDATE_INFO_DIR in \
-    n|no|NO) false;; \
-    *) (install-info --version) >/dev/null 2>&1;; \
-  esac
-am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
-am__vpath_adj = case $$p in \
-    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
-    *) f=$$p;; \
-  esac;
-am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
-am__install_max = 40
-am__nobase_strip_setup = \
-  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
-am__nobase_strip = \
-  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
-am__nobase_list = $(am__nobase_strip_setup); \
-  for p in $$list; do echo "$$p $$p"; done | \
-  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
-  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
-    if (++n[$$2] == $(am__install_max)) \
-      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
-    END { for (dir in files) print dir, files[dir] }'
-am__base_list = \
-  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
-  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
-am__uninstall_files_from_dir = { \
-  test -z "$$files" \
-    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
-    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
-         $(am__cd) "$$dir" && rm -f $$files; }; \
-  }
-am__installdirs = "$(DESTDIR)$(includedir)"
-HEADERS = $(nobase_include_HEADERS)
-am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
-# Read a list of newline-separated strings from the standard input,
-# and print each of them once, without duplicates.  Input order is
-# *not* preserved.
-am__uniquify_input = $(AWK) '\
-  BEGIN { nonempty = 0; } \
-  { items[$$0] = 1; nonempty = 1; } \
-  END { if (nonempty) { for (i in items) print i; }; } \
-'
-# Make sure the list of sources is unique.  This is necessary because,
-# e.g., the same source file might be shared among _SOURCES variables
-# for different programs/libraries.
-am__define_uniq_tagged_files = \
-  list='$(am__tagged_files)'; \
-  unique=`for i in $$list; do \
-    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-  done | $(am__uniquify_input)`
-ETAGS = etags
-CTAGS = ctags
-DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
-ACLOCAL = @ACLOCAL@
-AMTAR = @AMTAR@
-AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
-AUTOCONF = @AUTOCONF@
-AUTOHEADER = @AUTOHEADER@
-AUTOMAKE = @AUTOMAKE@
-AWK = @AWK@
-CC = @CC@
-CCDEPMODE = @CCDEPMODE@
-CFLAGS = @CFLAGS@
-CPPFLAGS = @CPPFLAGS@
-CXX = @CXX@
-CXXCPP = @CXXCPP@
-CXXDEPMODE = @CXXDEPMODE@
-CXXFLAGS = @CXXFLAGS@
-CYGPATH_W = @CYGPATH_W@
-DEFS = @DEFS@
-DEPDIR = @DEPDIR@
-ECHO_C = @ECHO_C@
-ECHO_N = @ECHO_N@
-ECHO_T = @ECHO_T@
-EGREP = @EGREP@
-EXEEXT = @EXEEXT@
-GREP = @GREP@
-INSTALL = @INSTALL@
-INSTALL_DATA = @INSTALL_DATA@
-INSTALL_PROGRAM = @INSTALL_PROGRAM@
-INSTALL_SCRIPT = @INSTALL_SCRIPT@
-INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
-LDFLAGS = @LDFLAGS@
-LIBOBJS = @LIBOBJS@
-LIBS = @LIBS@
-LTLIBOBJS = @LTLIBOBJS@
-MAINT = @MAINT@
-MAKEINFO = @MAKEINFO@
-MKDIR_P = @MKDIR_P@
-OBJEXT = @OBJEXT@
-PACKAGE = @PACKAGE@
-PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
-PACKAGE_NAME = @PACKAGE_NAME@
-PACKAGE_STRING = @PACKAGE_STRING@
-PACKAGE_TARNAME = @PACKAGE_TARNAME@
-PACKAGE_URL = @PACKAGE_URL@
-PACKAGE_VERSION = @PACKAGE_VERSION@
-PATH_SEPARATOR = @PATH_SEPARATOR@
-RANLIB = @RANLIB@
-SET_MAKE = @SET_MAKE@
-SHELL = @SHELL@
-STRIP = @STRIP@
-VERSION = @VERSION@
-abs_builddir = @abs_builddir@
-abs_srcdir = @abs_srcdir@
-abs_top_builddir = @abs_top_builddir@
-abs_top_srcdir = @abs_top_srcdir@
-ac_ct_CC = @ac_ct_CC@
-ac_ct_CXX = @ac_ct_CXX@
-am__include = @am__include@
-am__leading_dot = @am__leading_dot@
-am__quote = @am__quote@
-am__tar = @am__tar@
-am__untar = @am__untar@
-bindir = @bindir@
-build = @build@
-build_alias = @build_alias@
-build_cpu = @build_cpu@
-build_os = @build_os@
-build_vendor = @build_vendor@
-builddir = @builddir@
-datadir = @datadir@
-datarootdir = @datarootdir@
-docdir = @docdir@
-dvidir = @dvidir@
-exec_prefix = @exec_prefix@
-host = @host@
-host_alias = @host_alias@
-host_cpu = @host_cpu@
-host_os = @host_os@
-host_vendor = @host_vendor@
-htmldir = @htmldir@
-includedir = @includedir@
-infodir = @infodir@
-install_sh = @install_sh@
-libdir = @libdir@
-libexecdir = @libexecdir@
-localedir = @localedir@
-localstatedir = @localstatedir@
-mandir = @mandir@
-mkdir_p = @mkdir_p@
-oldincludedir = @oldincludedir@
-pdfdir = @pdfdir@
-prefix = @prefix@
-program_transform_name = @program_transform_name@
-psdir = @psdir@
-sbindir = @sbindir@
-sharedstatedir = @sharedstatedir@
-srcdir = @srcdir@
-sysconfdir = @sysconfdir@
-target_alias = @target_alias@
-top_build_prefix = @top_build_prefix@
-top_builddir = @top_builddir@
-top_srcdir = @top_srcdir@
-
-# find . -name "*.*pp" | sed -e 's/^\.\///' | sed -e 's/^.*$/  & \\/' | sort
-nobase_include_HEADERS = \
-	asio/async_result.hpp \
-	asio/basic_datagram_socket.hpp \
-	asio/basic_deadline_timer.hpp \
-	asio/basic_io_object.hpp \
-	asio/basic_raw_socket.hpp \
-	asio/basic_seq_packet_socket.hpp \
-	asio/basic_serial_port.hpp \
-	asio/basic_signal_set.hpp \
-	asio/basic_socket_acceptor.hpp \
-	asio/basic_socket.hpp \
-	asio/basic_socket_iostream.hpp \
-	asio/basic_socket_streambuf.hpp \
-	asio/basic_streambuf_fwd.hpp \
-	asio/basic_streambuf.hpp \
-	asio/basic_stream_socket.hpp \
-	asio/basic_waitable_timer.hpp \
-	asio/buffered_read_stream_fwd.hpp \
-	asio/buffered_read_stream.hpp \
-	asio/buffered_stream_fwd.hpp \
-	asio/buffered_stream.hpp \
-	asio/buffered_write_stream_fwd.hpp \
-	asio/buffered_write_stream.hpp \
-	asio/buffer.hpp \
-	asio/buffers_iterator.hpp \
-	asio/completion_condition.hpp \
-	asio/connect.hpp \
-	asio/coroutine.hpp \
-	asio/datagram_socket_service.hpp \
-	asio/deadline_timer.hpp \
-	asio/deadline_timer_service.hpp \
-	asio/detail/addressof.hpp \
-	asio/detail/array_fwd.hpp \
-	asio/detail/array.hpp \
-	asio/detail/assert.hpp \
-	asio/detail/atomic_count.hpp \
-	asio/detail/base_from_completion_cond.hpp \
-	asio/detail/bind_handler.hpp \
-	asio/detail/buffered_stream_storage.hpp \
-	asio/detail/buffer_resize_guard.hpp \
-	asio/detail/buffer_sequence_adapter.hpp \
-	asio/detail/call_stack.hpp \
-	asio/detail/chrono_time_traits.hpp \
-	asio/detail/completion_handler.hpp \
-	asio/detail/config.hpp \
-	asio/detail/consuming_buffers.hpp \
-	asio/detail/cstdint.hpp \
-	asio/detail/date_time_fwd.hpp \
-	asio/detail/deadline_timer_service.hpp \
-	asio/detail/dependent_type.hpp \
-	asio/detail/descriptor_ops.hpp \
-	asio/detail/descriptor_read_op.hpp \
-	asio/detail/descriptor_write_op.hpp \
-	asio/detail/dev_poll_reactor.hpp \
-	asio/detail/epoll_reactor.hpp \
-	asio/detail/eventfd_select_interrupter.hpp \
-	asio/detail/event.hpp \
-	asio/detail/fd_set_adapter.hpp \
-	asio/detail/fenced_block.hpp \
-	asio/detail/function.hpp \
-	asio/detail/gcc_arm_fenced_block.hpp \
-	asio/detail/gcc_hppa_fenced_block.hpp \
-	asio/detail/gcc_sync_fenced_block.hpp \
-	asio/detail/gcc_x86_fenced_block.hpp \
-	asio/detail/handler_alloc_helpers.hpp \
-	asio/detail/handler_cont_helpers.hpp \
-	asio/detail/handler_invoke_helpers.hpp \
-	asio/detail/handler_tracking.hpp \
-	asio/detail/handler_type_requirements.hpp \
-	asio/detail/hash_map.hpp \
-	asio/detail/impl/buffer_sequence_adapter.ipp \
-	asio/detail/impl/descriptor_ops.ipp \
-	asio/detail/impl/dev_poll_reactor.hpp \
-	asio/detail/impl/dev_poll_reactor.ipp \
-	asio/detail/impl/epoll_reactor.hpp \
-	asio/detail/impl/epoll_reactor.ipp \
-	asio/detail/impl/eventfd_select_interrupter.ipp \
-	asio/detail/impl/handler_tracking.ipp \
-	asio/detail/impl/kqueue_reactor.hpp \
-	asio/detail/impl/kqueue_reactor.ipp \
-	asio/detail/impl/pipe_select_interrupter.ipp \
-	asio/detail/impl/posix_event.ipp \
-	asio/detail/impl/posix_mutex.ipp \
-	asio/detail/impl/posix_thread.ipp \
-	asio/detail/impl/posix_tss_ptr.ipp \
-	asio/detail/impl/reactive_descriptor_service.ipp \
-	asio/detail/impl/reactive_serial_port_service.ipp \
-	asio/detail/impl/reactive_socket_service_base.ipp \
-	asio/detail/impl/resolver_service_base.ipp \
-	asio/detail/impl/select_reactor.hpp \
-	asio/detail/impl/select_reactor.ipp \
-	asio/detail/impl/service_registry.hpp \
-	asio/detail/impl/service_registry.ipp \
-	asio/detail/impl/signal_set_service.ipp \
-	asio/detail/impl/socket_ops.ipp \
-	asio/detail/impl/socket_select_interrupter.ipp \
-	asio/detail/impl/strand_service.hpp \
-	asio/detail/impl/strand_service.ipp \
-	asio/detail/impl/task_io_service.hpp \
-	asio/detail/impl/task_io_service.ipp \
-	asio/detail/impl/throw_error.ipp \
-	asio/detail/impl/timer_queue_ptime.ipp \
-	asio/detail/impl/timer_queue_set.ipp \
-	asio/detail/impl/win_event.ipp \
-	asio/detail/impl/win_iocp_handle_service.ipp \
-	asio/detail/impl/win_iocp_io_service.hpp \
-	asio/detail/impl/win_iocp_io_service.ipp \
-	asio/detail/impl/win_iocp_serial_port_service.ipp \
-	asio/detail/impl/win_iocp_socket_service_base.ipp \
-	asio/detail/impl/win_mutex.ipp \
-	asio/detail/impl/win_object_handle_service.ipp \
-	asio/detail/impl/winrt_ssocket_service_base.ipp \
-	asio/detail/impl/winrt_timer_scheduler.hpp \
-	asio/detail/impl/winrt_timer_scheduler.ipp \
-	asio/detail/impl/winsock_init.ipp \
-	asio/detail/impl/win_static_mutex.ipp \
-	asio/detail/impl/win_thread.ipp \
-	asio/detail/impl/win_tss_ptr.ipp \
-	asio/detail/io_control.hpp \
-	asio/detail/keyword_tss_ptr.hpp \
-	asio/detail/kqueue_reactor.hpp \
-	asio/detail/limits.hpp \
-	asio/detail/local_free_on_block_exit.hpp \
-	asio/detail/macos_fenced_block.hpp \
-	asio/detail/mutex.hpp \
-	asio/detail/noncopyable.hpp \
-	asio/detail/null_event.hpp \
-	asio/detail/null_fenced_block.hpp \
-	asio/detail/null_mutex.hpp \
-	asio/detail/null_reactor.hpp \
-	asio/detail/null_signal_blocker.hpp \
-	asio/detail/null_socket_service.hpp \
-	asio/detail/null_static_mutex.hpp \
-	asio/detail/null_thread.hpp \
-	asio/detail/null_tss_ptr.hpp \
-	asio/detail/object_pool.hpp \
-	asio/detail/old_win_sdk_compat.hpp \
-	asio/detail/operation.hpp \
-	asio/detail/op_queue.hpp \
-	asio/detail/pipe_select_interrupter.hpp \
-	asio/detail/pop_options.hpp \
-	asio/detail/posix_event.hpp \
-	asio/detail/posix_fd_set_adapter.hpp \
-	asio/detail/posix_mutex.hpp \
-	asio/detail/posix_signal_blocker.hpp \
-	asio/detail/posix_static_mutex.hpp \
-	asio/detail/posix_thread.hpp \
-	asio/detail/posix_tss_ptr.hpp \
-	asio/detail/push_options.hpp \
-	asio/detail/reactive_descriptor_service.hpp \
-	asio/detail/reactive_null_buffers_op.hpp \
-	asio/detail/reactive_serial_port_service.hpp \
-	asio/detail/reactive_socket_accept_op.hpp \
-	asio/detail/reactive_socket_connect_op.hpp \
-	asio/detail/reactive_socket_recvfrom_op.hpp \
-	asio/detail/reactive_socket_recvmsg_op.hpp \
-	asio/detail/reactive_socket_recv_op.hpp \
-	asio/detail/reactive_socket_send_op.hpp \
-	asio/detail/reactive_socket_sendto_op.hpp \
-	asio/detail/reactive_socket_service_base.hpp \
-	asio/detail/reactive_socket_service.hpp \
-	asio/detail/reactor_fwd.hpp \
-	asio/detail/reactor.hpp \
-	asio/detail/reactor_op.hpp \
-	asio/detail/reactor_op_queue.hpp \
-	asio/detail/regex_fwd.hpp \
-	asio/detail/resolve_endpoint_op.hpp \
-	asio/detail/resolve_op.hpp \
-	asio/detail/resolver_service_base.hpp \
-	asio/detail/resolver_service.hpp \
-	asio/detail/scoped_lock.hpp \
-	asio/detail/scoped_ptr.hpp \
-	asio/detail/select_interrupter.hpp \
-	asio/detail/select_reactor.hpp \
-	asio/detail/service_registry.hpp \
-	asio/detail/shared_ptr.hpp \
-	asio/detail/signal_blocker.hpp \
-	asio/detail/signal_handler.hpp \
-	asio/detail/signal_init.hpp \
-	asio/detail/signal_op.hpp \
-	asio/detail/signal_set_service.hpp \
-	asio/detail/socket_holder.hpp \
-	asio/detail/socket_ops.hpp \
-	asio/detail/socket_option.hpp \
-	asio/detail/socket_select_interrupter.hpp \
-	asio/detail/socket_types.hpp \
-	asio/detail/solaris_fenced_block.hpp \
-	asio/detail/static_mutex.hpp \
-	asio/detail/std_event.hpp \
-	asio/detail/std_mutex.hpp \
-	asio/detail/std_static_mutex.hpp \
-	asio/detail/std_thread.hpp \
-	asio/detail/strand_service.hpp \
-	asio/detail/task_io_service.hpp \
-	asio/detail/task_io_service_operation.hpp \
-	asio/detail/task_io_service_thread_info.hpp \
-	asio/detail/thread.hpp \
-	asio/detail/thread_info_base.hpp \
-	asio/detail/throw_error.hpp \
-	asio/detail/throw_exception.hpp \
-	asio/detail/timer_queue_base.hpp \
-	asio/detail/timer_queue.hpp \
-	asio/detail/timer_queue_ptime.hpp \
-	asio/detail/timer_queue_set.hpp \
-	asio/detail/timer_scheduler_fwd.hpp \
-	asio/detail/timer_scheduler.hpp \
-	asio/detail/tss_ptr.hpp \
-	asio/detail/type_traits.hpp \
-	asio/detail/variadic_templates.hpp \
-	asio/detail/wait_handler.hpp \
-	asio/detail/wait_op.hpp \
-	asio/detail/weak_ptr.hpp \
-	asio/detail/wince_thread.hpp \
-	asio/detail/win_event.hpp \
-	asio/detail/win_fd_set_adapter.hpp \
-	asio/detail/win_fenced_block.hpp \
-	asio/detail/win_iocp_handle_read_op.hpp \
-	asio/detail/win_iocp_handle_service.hpp \
-	asio/detail/win_iocp_handle_write_op.hpp \
-	asio/detail/win_iocp_io_service.hpp \
-	asio/detail/win_iocp_null_buffers_op.hpp \
-	asio/detail/win_iocp_operation.hpp \
-	asio/detail/win_iocp_overlapped_op.hpp \
-	asio/detail/win_iocp_overlapped_ptr.hpp \
-	asio/detail/win_iocp_serial_port_service.hpp \
-	asio/detail/win_iocp_socket_accept_op.hpp \
-	asio/detail/win_iocp_socket_connect_op.hpp \
-	asio/detail/win_iocp_socket_recvfrom_op.hpp \
-	asio/detail/win_iocp_socket_recvmsg_op.hpp \
-	asio/detail/win_iocp_socket_recv_op.hpp \
-	asio/detail/win_iocp_socket_send_op.hpp \
-	asio/detail/win_iocp_socket_service_base.hpp \
-	asio/detail/win_iocp_socket_service.hpp \
-	asio/detail/win_iocp_thread_info.hpp \
-	asio/detail/win_mutex.hpp \
-	asio/detail/win_object_handle_service.hpp \
-	asio/detail/winrt_async_manager.hpp \
-	asio/detail/winrt_async_op.hpp \
-	asio/detail/winrt_resolve_op.hpp \
-	asio/detail/winrt_resolver_service.hpp \
-	asio/detail/winrt_socket_connect_op.hpp \
-	asio/detail/winrt_socket_recv_op.hpp \
-	asio/detail/winrt_socket_send_op.hpp \
-	asio/detail/winrt_ssocket_service_base.hpp \
-	asio/detail/winrt_ssocket_service.hpp \
-	asio/detail/winrt_timer_scheduler.hpp \
-	asio/detail/winrt_utils.hpp \
-	asio/detail/winsock_init.hpp \
-	asio/detail/win_static_mutex.hpp \
-	asio/detail/win_thread.hpp \
-	asio/detail/win_tss_ptr.hpp \
-	asio/detail/wrapped_handler.hpp \
-	asio/error_code.hpp \
-	asio/error.hpp \
-	asio/generic/basic_endpoint.hpp \
-	asio/generic/datagram_protocol.hpp \
-	asio/generic/detail/endpoint.hpp \
-	asio/generic/detail/impl/endpoint.ipp \
-	asio/generic/raw_protocol.hpp \
-	asio/generic/seq_packet_protocol.hpp \
-	asio/generic/stream_protocol.hpp \
-	asio/handler_alloc_hook.hpp \
-	asio/handler_continuation_hook.hpp \
-	asio/handler_invoke_hook.hpp \
-	asio/handler_type.hpp \
-	asio/high_resolution_timer.hpp \
-	asio.hpp \
-	asio/impl/buffered_read_stream.hpp \
-	asio/impl/buffered_write_stream.hpp \
-	asio/impl/connect.hpp \
-	asio/impl/error_code.ipp \
-	asio/impl/error.ipp \
-	asio/impl/handler_alloc_hook.ipp \
-	asio/impl/io_service.hpp \
-	asio/impl/io_service.ipp \
-	asio/impl/read_at.hpp \
-	asio/impl/read.hpp \
-	asio/impl/read_until.hpp \
-	asio/impl/serial_port_base.hpp \
-	asio/impl/serial_port_base.ipp \
-	asio/impl/spawn.hpp \
-	asio/impl/src.cpp \
-	asio/impl/src.hpp \
-	asio/impl/use_future.hpp \
-	asio/impl/write_at.hpp \
-	asio/impl/write.hpp \
-	asio/io_service.hpp \
-	asio/ip/address.hpp \
-	asio/ip/address_v4.hpp \
-	asio/ip/address_v6.hpp \
-	asio/ip/basic_endpoint.hpp \
-	asio/ip/basic_resolver_entry.hpp \
-	asio/ip/basic_resolver.hpp \
-	asio/ip/basic_resolver_iterator.hpp \
-	asio/ip/basic_resolver_query.hpp \
-	asio/ip/detail/endpoint.hpp \
-	asio/ip/detail/impl/endpoint.ipp \
-	asio/ip/detail/socket_option.hpp \
-	asio/ip/host_name.hpp \
-	asio/ip/icmp.hpp \
-	asio/ip/impl/address.hpp \
-	asio/ip/impl/address.ipp \
-	asio/ip/impl/address_v4.hpp \
-	asio/ip/impl/address_v4.ipp \
-	asio/ip/impl/address_v6.hpp \
-	asio/ip/impl/address_v6.ipp \
-	asio/ip/impl/basic_endpoint.hpp \
-	asio/ip/impl/host_name.ipp \
-	asio/ip/multicast.hpp \
-	asio/ip/resolver_query_base.hpp \
-	asio/ip/resolver_service.hpp \
-	asio/ip/tcp.hpp \
-	asio/ip/udp.hpp \
-	asio/ip/unicast.hpp \
-	asio/ip/v6_only.hpp \
-	asio/is_read_buffered.hpp \
-	asio/is_write_buffered.hpp \
-	asio/local/basic_endpoint.hpp \
-	asio/local/connect_pair.hpp \
-	asio/local/datagram_protocol.hpp \
-	asio/local/detail/endpoint.hpp \
-	asio/local/detail/impl/endpoint.ipp \
-	asio/local/stream_protocol.hpp \
-	asio/placeholders.hpp \
-	asio/posix/basic_descriptor.hpp \
-	asio/posix/basic_stream_descriptor.hpp \
-	asio/posix/descriptor_base.hpp \
-	asio/posix/stream_descriptor.hpp \
-	asio/posix/stream_descriptor_service.hpp \
-	asio/raw_socket_service.hpp \
-	asio/read_at.hpp \
-	asio/read.hpp \
-	asio/read_until.hpp \
-	asio/seq_packet_socket_service.hpp \
-	asio/serial_port_base.hpp \
-	asio/serial_port.hpp \
-	asio/serial_port_service.hpp \
-	asio/signal_set.hpp \
-	asio/signal_set_service.hpp \
-	asio/socket_acceptor_service.hpp \
-	asio/socket_base.hpp \
-	asio/spawn.hpp \
-	asio/ssl/basic_context.hpp \
-	asio/ssl/context_base.hpp \
-	asio/ssl/context.hpp \
-	asio/ssl/context_service.hpp \
-	asio/ssl/detail/buffered_handshake_op.hpp \
-	asio/ssl/detail/engine.hpp \
-	asio/ssl/detail/handshake_op.hpp \
-	asio/ssl/detail/impl/engine.ipp \
-	asio/ssl/detail/impl/openssl_init.ipp \
-	asio/ssl/detail/io.hpp \
-	asio/ssl/detail/openssl_init.hpp \
-	asio/ssl/detail/openssl_types.hpp \
-	asio/ssl/detail/password_callback.hpp \
-	asio/ssl/detail/read_op.hpp \
-	asio/ssl/detail/shutdown_op.hpp \
-	asio/ssl/detail/stream_core.hpp \
-	asio/ssl/detail/verify_callback.hpp \
-	asio/ssl/detail/write_op.hpp \
-	asio/ssl/error.hpp \
-	asio/ssl.hpp \
-	asio/ssl/impl/context.hpp \
-	asio/ssl/impl/context.ipp \
-	asio/ssl/impl/error.ipp \
-	asio/ssl/impl/rfc2818_verification.ipp \
-	asio/ssl/impl/src.hpp \
-	asio/ssl/old/basic_context.hpp \
-	asio/ssl/old/context_service.hpp \
-	asio/ssl/old/detail/openssl_context_service.hpp \
-	asio/ssl/old/detail/openssl_operation.hpp \
-	asio/ssl/old/detail/openssl_stream_service.hpp \
-	asio/ssl/old/stream.hpp \
-	asio/ssl/old/stream_service.hpp \
-	asio/ssl/rfc2818_verification.hpp \
-	asio/ssl/stream_base.hpp \
-	asio/ssl/stream.hpp \
-	asio/ssl/stream_service.hpp \
-	asio/ssl/verify_context.hpp \
-	asio/ssl/verify_mode.hpp \
-	asio/steady_timer.hpp \
-	asio/strand.hpp \
-	asio/streambuf.hpp \
-	asio/stream_socket_service.hpp \
-	asio/system_error.hpp \
-	asio/system_timer.hpp \
-	asio/thread.hpp \
-	asio/time_traits.hpp \
-	asio/unyield.hpp \
-	asio/use_future.hpp \
-	asio/version.hpp \
-	asio/waitable_timer_service.hpp \
-	asio/wait_traits.hpp \
-	asio/windows/basic_handle.hpp \
-	asio/windows/basic_object_handle.hpp \
-	asio/windows/basic_random_access_handle.hpp \
-	asio/windows/basic_stream_handle.hpp \
-	asio/windows/object_handle.hpp \
-	asio/windows/object_handle_service.hpp \
-	asio/windows/overlapped_ptr.hpp \
-	asio/windows/random_access_handle.hpp \
-	asio/windows/random_access_handle_service.hpp \
-	asio/windows/stream_handle.hpp \
-	asio/windows/stream_handle_service.hpp \
-	asio/write_at.hpp \
-	asio/write.hpp \
-	asio/yield.hpp
-
-MAINTAINERCLEANFILES = \
-	$(srcdir)/Makefile.in
-
-all: all-am
-
-.SUFFIXES:
-$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
-	@for dep in $?; do \
-	  case '$(am__configure_deps)' in \
-	    *$$dep*) \
-	      ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
-	        && { if test -f $@; then exit 0; else break; fi; }; \
-	      exit 1;; \
-	  esac; \
-	done; \
-	echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/Makefile'; \
-	$(am__cd) $(top_srcdir) && \
-	  $(AUTOMAKE) --foreign include/Makefile
-.PRECIOUS: Makefile
-Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
-	@case '$?' in \
-	  *config.status*) \
-	    cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
-	  *) \
-	    echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
-	    cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
-	esac;
-
-$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-
-$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
-	cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
-$(am__aclocal_m4_deps):
-install-nobase_includeHEADERS: $(nobase_include_HEADERS)
-	@$(NORMAL_INSTALL)
-	@list='$(nobase_include_HEADERS)'; test -n "$(includedir)" || list=; \
-	if test -n "$$list"; then \
-	  echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \
-	  $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \
-	fi; \
-	$(am__nobase_list) | while read dir files; do \
-	  xfiles=; for file in $$files; do \
-	    if test -f "$$file"; then xfiles="$$xfiles $$file"; \
-	    else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \
-	  test -z "$$xfiles" || { \
-	    test "x$$dir" = x. || { \
-	      echo " $(MKDIR_P) '$(DESTDIR)$(includedir)/$$dir'"; \
-	      $(MKDIR_P) "$(DESTDIR)$(includedir)/$$dir"; }; \
-	    echo " $(INSTALL_HEADER) $$xfiles '$(DESTDIR)$(includedir)/$$dir'"; \
-	    $(INSTALL_HEADER) $$xfiles "$(DESTDIR)$(includedir)/$$dir" || exit $$?; }; \
-	done
-
-uninstall-nobase_includeHEADERS:
-	@$(NORMAL_UNINSTALL)
-	@list='$(nobase_include_HEADERS)'; test -n "$(includedir)" || list=; \
-	$(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \
-	dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir)
-
-ID: $(am__tagged_files)
-	$(am__define_uniq_tagged_files); mkid -fID $$unique
-tags: tags-am
-TAGS: tags
-
-tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	set x; \
-	here=`pwd`; \
-	$(am__define_uniq_tagged_files); \
-	shift; \
-	if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
-	  test -n "$$unique" || unique=$$empty_fix; \
-	  if test $$# -gt 0; then \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      "$$@" $$unique; \
-	  else \
-	    $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
-	      $$unique; \
-	  fi; \
-	fi
-ctags: ctags-am
-
-CTAGS: ctags
-ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
-	$(am__define_uniq_tagged_files); \
-	test -z "$(CTAGS_ARGS)$$unique" \
-	  || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
-	     $$unique
-
-GTAGS:
-	here=`$(am__cd) $(top_builddir) && pwd` \
-	  && $(am__cd) $(top_srcdir) \
-	  && gtags -i $(GTAGS_ARGS) "$$here"
-cscopelist: cscopelist-am
-
-cscopelist-am: $(am__tagged_files)
-	list='$(am__tagged_files)'; \
-	case "$(srcdir)" in \
-	  [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
-	  *) sdir=$(subdir)/$(srcdir) ;; \
-	esac; \
-	for i in $$list; do \
-	  if test -f "$$i"; then \
-	    echo "$(subdir)/$$i"; \
-	  else \
-	    echo "$$sdir/$$i"; \
-	  fi; \
-	done >> $(top_builddir)/cscope.files
-
-distclean-tags:
-	-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
-
-distdir: $(DISTFILES)
-	@srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
-	list='$(DISTFILES)'; \
-	  dist_files=`for file in $$list; do echo $$file; done | \
-	  sed -e "s|^$$srcdirstrip/||;t" \
-	      -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
-	case $$dist_files in \
-	  */*) $(MKDIR_P) `echo "$$dist_files" | \
-			   sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
-			   sort -u` ;; \
-	esac; \
-	for file in $$dist_files; do \
-	  if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
-	  if test -d $$d/$$file; then \
-	    dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
-	    if test -d "$(distdir)/$$file"; then \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
-	      cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
-	      find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
-	    fi; \
-	    cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
-	  else \
-	    test -f "$(distdir)/$$file" \
-	    || cp -p $$d/$$file "$(distdir)/$$file" \
-	    || exit 1; \
-	  fi; \
-	done
-check-am: all-am
-check: check-am
-all-am: Makefile $(HEADERS)
-installdirs:
-	for dir in "$(DESTDIR)$(includedir)"; do \
-	  test -z "$$dir" || $(MKDIR_P) "$$dir"; \
-	done
-install: install-am
-install-exec: install-exec-am
-install-data: install-data-am
-uninstall: uninstall-am
-
-install-am: all-am
-	@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
-
-installcheck: installcheck-am
-install-strip:
-	if test -z '$(STRIP)'; then \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	      install; \
-	else \
-	  $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
-	    install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
-	    "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
-	fi
-mostlyclean-generic:
-
-clean-generic:
-
-distclean-generic:
-	-test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
-	-test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
-
-maintainer-clean-generic:
-	@echo "This command is intended for maintainers to use"
-	@echo "it deletes files that may require special tools to rebuild."
-	-test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES)
-clean: clean-am
-
-clean-am: clean-generic mostlyclean-am
-
-distclean: distclean-am
-	-rm -f Makefile
-distclean-am: clean-am distclean-generic distclean-tags
-
-dvi: dvi-am
-
-dvi-am:
-
-html: html-am
-
-html-am:
-
-info: info-am
-
-info-am:
-
-install-data-am: install-nobase_includeHEADERS
-
-install-dvi: install-dvi-am
-
-install-dvi-am:
-
-install-exec-am:
-
-install-html: install-html-am
-
-install-html-am:
-
-install-info: install-info-am
-
-install-info-am:
-
-install-man:
-
-install-pdf: install-pdf-am
-
-install-pdf-am:
-
-install-ps: install-ps-am
-
-install-ps-am:
-
-installcheck-am:
-
-maintainer-clean: maintainer-clean-am
-	-rm -f Makefile
-maintainer-clean-am: distclean-am maintainer-clean-generic
-
-mostlyclean: mostlyclean-am
-
-mostlyclean-am: mostlyclean-generic
-
-pdf: pdf-am
-
-pdf-am:
-
-ps: ps-am
-
-ps-am:
-
-uninstall-am: uninstall-nobase_includeHEADERS
-
-.MAKE: install-am install-strip
-
-.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \
-	cscopelist-am ctags ctags-am distclean distclean-generic \
-	distclean-tags distdir dvi dvi-am html html-am info info-am \
-	install install-am install-data install-data-am install-dvi \
-	install-dvi-am install-exec install-exec-am install-html \
-	install-html-am install-info install-info-am install-man \
-	install-nobase_includeHEADERS install-pdf install-pdf-am \
-	install-ps install-ps-am install-strip installcheck \
-	installcheck-am installdirs maintainer-clean \
-	maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
-	pdf-am ps ps-am tags tags-am uninstall uninstall-am \
-	uninstall-nobase_includeHEADERS
-
-
-# Tell versions [3.59,3.63) of GNU make to not export all variables.
-# Otherwise a system limit (for SysV at least) may be exceeded.
-.NOEXPORT:
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio.hpp
deleted file mode 100644
index 59083da..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio.hpp
+++ /dev/null
@@ -1,122 +0,0 @@
-//
-// asio.hpp
-// ~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_HPP
-#define ASIO_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/async_result.hpp"
-#include "asio/basic_datagram_socket.hpp"
-#include "asio/basic_deadline_timer.hpp"
-#include "asio/basic_io_object.hpp"
-#include "asio/basic_raw_socket.hpp"
-#include "asio/basic_seq_packet_socket.hpp"
-#include "asio/basic_serial_port.hpp"
-#include "asio/basic_signal_set.hpp"
-#include "asio/basic_socket_acceptor.hpp"
-#include "asio/basic_socket_iostream.hpp"
-#include "asio/basic_socket_streambuf.hpp"
-#include "asio/basic_stream_socket.hpp"
-#include "asio/basic_streambuf.hpp"
-#include "asio/basic_waitable_timer.hpp"
-#include "asio/buffer.hpp"
-#include "asio/buffered_read_stream_fwd.hpp"
-#include "asio/buffered_read_stream.hpp"
-#include "asio/buffered_stream_fwd.hpp"
-#include "asio/buffered_stream.hpp"
-#include "asio/buffered_write_stream_fwd.hpp"
-#include "asio/buffered_write_stream.hpp"
-#include "asio/buffers_iterator.hpp"
-#include "asio/completion_condition.hpp"
-#include "asio/connect.hpp"
-#include "asio/coroutine.hpp"
-#include "asio/datagram_socket_service.hpp"
-#include "asio/deadline_timer_service.hpp"
-#include "asio/deadline_timer.hpp"
-#include "asio/error.hpp"
-#include "asio/error_code.hpp"
-#include "asio/generic/basic_endpoint.hpp"
-#include "asio/generic/datagram_protocol.hpp"
-#include "asio/generic/raw_protocol.hpp"
-#include "asio/generic/seq_packet_protocol.hpp"
-#include "asio/generic/stream_protocol.hpp"
-#include "asio/handler_alloc_hook.hpp"
-#include "asio/handler_continuation_hook.hpp"
-#include "asio/handler_invoke_hook.hpp"
-#include "asio/handler_type.hpp"
-#include "asio/io_service.hpp"
-#include "asio/ip/address.hpp"
-#include "asio/ip/address_v4.hpp"
-#include "asio/ip/address_v6.hpp"
-#include "asio/ip/basic_endpoint.hpp"
-#include "asio/ip/basic_resolver.hpp"
-#include "asio/ip/basic_resolver_entry.hpp"
-#include "asio/ip/basic_resolver_iterator.hpp"
-#include "asio/ip/basic_resolver_query.hpp"
-#include "asio/ip/host_name.hpp"
-#include "asio/ip/icmp.hpp"
-#include "asio/ip/multicast.hpp"
-#include "asio/ip/resolver_query_base.hpp"
-#include "asio/ip/resolver_service.hpp"
-#include "asio/ip/tcp.hpp"
-#include "asio/ip/udp.hpp"
-#include "asio/ip/unicast.hpp"
-#include "asio/ip/v6_only.hpp"
-#include "asio/is_read_buffered.hpp"
-#include "asio/is_write_buffered.hpp"
-#include "asio/local/basic_endpoint.hpp"
-#include "asio/local/connect_pair.hpp"
-#include "asio/local/datagram_protocol.hpp"
-#include "asio/local/stream_protocol.hpp"
-#include "asio/placeholders.hpp"
-#include "asio/posix/basic_descriptor.hpp"
-#include "asio/posix/basic_stream_descriptor.hpp"
-#include "asio/posix/descriptor_base.hpp"
-#include "asio/posix/stream_descriptor.hpp"
-#include "asio/posix/stream_descriptor_service.hpp"
-#include "asio/raw_socket_service.hpp"
-#include "asio/read.hpp"
-#include "asio/read_at.hpp"
-#include "asio/read_until.hpp"
-#include "asio/seq_packet_socket_service.hpp"
-#include "asio/serial_port.hpp"
-#include "asio/serial_port_base.hpp"
-#include "asio/serial_port_service.hpp"
-#include "asio/signal_set.hpp"
-#include "asio/signal_set_service.hpp"
-#include "asio/socket_acceptor_service.hpp"
-#include "asio/socket_base.hpp"
-#include "asio/strand.hpp"
-#include "asio/stream_socket_service.hpp"
-#include "asio/streambuf.hpp"
-#include "asio/system_error.hpp"
-#include "asio/thread.hpp"
-#include "asio/time_traits.hpp"
-#include "asio/version.hpp"
-#include "asio/wait_traits.hpp"
-#include "asio/waitable_timer_service.hpp"
-#include "asio/windows/basic_handle.hpp"
-#include "asio/windows/basic_object_handle.hpp"
-#include "asio/windows/basic_random_access_handle.hpp"
-#include "asio/windows/basic_stream_handle.hpp"
-#include "asio/windows/object_handle.hpp"
-#include "asio/windows/object_handle_service.hpp"
-#include "asio/windows/overlapped_ptr.hpp"
-#include "asio/windows/random_access_handle.hpp"
-#include "asio/windows/random_access_handle_service.hpp"
-#include "asio/windows/stream_handle.hpp"
-#include "asio/windows/stream_handle_service.hpp"
-#include "asio/write.hpp"
-#include "asio/write_at.hpp"
-
-#endif // ASIO_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/async_result.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/async_result.hpp
deleted file mode 100644
index 37e9c2e..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/async_result.hpp
+++ /dev/null
@@ -1,94 +0,0 @@
-//
-// async_result.hpp
-// ~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_ASYNC_RESULT_HPP
-#define ASIO_ASYNC_RESULT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/handler_type.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// An interface for customising the behaviour of an initiating function.
-/**
- * This template may be specialised for user-defined handler types.
- */
-template <typename Handler>
-class async_result
-{
-public:
-  /// The return type of the initiating function.
-  typedef void type;
-
-  /// Construct an async result from a given handler.
-  /**
-   * When using a specalised async_result, the constructor has an opportunity
-   * to initialise some state associated with the handler, which is then
-   * returned from the initiating function.
-   */
-  explicit async_result(Handler&)
-  {
-  }
-
-  /// Obtain the value to be returned from the initiating function.
-  type get()
-  {
-  }
-};
-
-namespace detail {
-
-// Helper template to deduce the true type of a handler, capture a local copy
-// of the handler, and then create an async_result for the handler.
-template <typename Handler, typename Signature>
-struct async_result_init
-{
-  explicit async_result_init(ASIO_MOVE_ARG(Handler) orig_handler)
-    : handler(ASIO_MOVE_CAST(Handler)(orig_handler)),
-      result(handler)
-  {
-  }
-
-  typename handler_type<Handler, Signature>::type handler;
-  async_result<typename handler_type<Handler, Signature>::type> result;
-};
-
-template <typename Handler, typename Signature>
-struct async_result_type_helper
-{
-  typedef typename async_result<
-      typename handler_type<Handler, Signature>::type
-    >::type type;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(GENERATING_DOCUMENTATION)
-# define ASIO_INITFN_RESULT_TYPE(h, sig) \
-  void_or_deduced
-#elif defined(_MSC_VER) && (_MSC_VER < 1500)
-# define ASIO_INITFN_RESULT_TYPE(h, sig) \
-  typename ::asio::detail::async_result_type_helper<h, sig>::type
-#else
-# define ASIO_INITFN_RESULT_TYPE(h, sig) \
-  typename ::asio::async_result< \
-    typename ::asio::handler_type<h, sig>::type>::type
-#endif
-
-#endif // ASIO_ASYNC_RESULT_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_datagram_socket.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_datagram_socket.hpp
deleted file mode 100644
index cce9fe0..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_datagram_socket.hpp
+++ /dev/null
@@ -1,949 +0,0 @@
-//
-// basic_datagram_socket.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_BASIC_DATAGRAM_SOCKET_HPP
-#define ASIO_BASIC_DATAGRAM_SOCKET_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cstddef>
-#include "asio/basic_socket.hpp"
-#include "asio/datagram_socket_service.hpp"
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/detail/type_traits.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Provides datagram-oriented socket functionality.
-/**
- * The basic_datagram_socket class template provides asynchronous and blocking
- * datagram-oriented socket functionality.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- */
-template <typename Protocol,
-    typename DatagramSocketService = datagram_socket_service<Protocol> >
-class basic_datagram_socket
-  : public basic_socket<Protocol, DatagramSocketService>
-{
-public:
-  /// (Deprecated: Use native_handle_type.) The native representation of a
-  /// socket.
-  typedef typename DatagramSocketService::native_handle_type native_type;
-
-  /// The native representation of a socket.
-  typedef typename DatagramSocketService::native_handle_type native_handle_type;
-
-  /// The protocol type.
-  typedef Protocol protocol_type;
-
-  /// The endpoint type.
-  typedef typename Protocol::endpoint endpoint_type;
-
-  /// Construct a basic_datagram_socket without opening it.
-  /**
-   * This constructor creates a datagram socket without opening it. The open()
-   * function must be called before data can be sent or received on the socket.
-   *
-   * @param io_service The io_service object that the datagram socket will use
-   * to dispatch handlers for any asynchronous operations performed on the
-   * socket.
-   */
-  explicit basic_datagram_socket(asio::io_service& io_service)
-    : basic_socket<Protocol, DatagramSocketService>(io_service)
-  {
-  }
-
-  /// Construct and open a basic_datagram_socket.
-  /**
-   * This constructor creates and opens a datagram socket.
-   *
-   * @param io_service The io_service object that the datagram socket will use
-   * to dispatch handlers for any asynchronous operations performed on the
-   * socket.
-   *
-   * @param protocol An object specifying protocol parameters to be used.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  basic_datagram_socket(asio::io_service& io_service,
-      const protocol_type& protocol)
-    : basic_socket<Protocol, DatagramSocketService>(io_service, protocol)
-  {
-  }
-
-  /// Construct a basic_datagram_socket, opening it and binding it to the given
-  /// local endpoint.
-  /**
-   * This constructor creates a datagram socket and automatically opens it bound
-   * to the specified endpoint on the local machine. The protocol used is the
-   * protocol associated with the given endpoint.
-   *
-   * @param io_service The io_service object that the datagram socket will use
-   * to dispatch handlers for any asynchronous operations performed on the
-   * socket.
-   *
-   * @param endpoint An endpoint on the local machine to which the datagram
-   * socket will be bound.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  basic_datagram_socket(asio::io_service& io_service,
-      const endpoint_type& endpoint)
-    : basic_socket<Protocol, DatagramSocketService>(io_service, endpoint)
-  {
-  }
-
-  /// Construct a basic_datagram_socket on an existing native socket.
-  /**
-   * This constructor creates a datagram socket object to hold an existing
-   * native socket.
-   *
-   * @param io_service The io_service object that the datagram socket will use
-   * to dispatch handlers for any asynchronous operations performed on the
-   * socket.
-   *
-   * @param protocol An object specifying protocol parameters to be used.
-   *
-   * @param native_socket The new underlying socket implementation.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  basic_datagram_socket(asio::io_service& io_service,
-      const protocol_type& protocol, const native_handle_type& native_socket)
-    : basic_socket<Protocol, DatagramSocketService>(
-        io_service, protocol, native_socket)
-  {
-  }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-  /// Move-construct a basic_datagram_socket from another.
-  /**
-   * This constructor moves a datagram socket from one object to another.
-   *
-   * @param other The other basic_datagram_socket object from which the move
-   * will occur.
-   *
-   * @note Following the move, the moved-from object is in the same state as if
-   * constructed using the @c basic_datagram_socket(io_service&) constructor.
-   */
-  basic_datagram_socket(basic_datagram_socket&& other)
-    : basic_socket<Protocol, DatagramSocketService>(
-        ASIO_MOVE_CAST(basic_datagram_socket)(other))
-  {
-  }
-
-  /// Move-assign a basic_datagram_socket from another.
-  /**
-   * This assignment operator moves a datagram socket from one object to
-   * another.
-   *
-   * @param other The other basic_datagram_socket object from which the move
-   * will occur.
-   *
-   * @note Following the move, the moved-from object is in the same state as if
-   * constructed using the @c basic_datagram_socket(io_service&) constructor.
-   */
-  basic_datagram_socket& operator=(basic_datagram_socket&& other)
-  {
-    basic_socket<Protocol, DatagramSocketService>::operator=(
-        ASIO_MOVE_CAST(basic_datagram_socket)(other));
-    return *this;
-  }
-
-  /// Move-construct a basic_datagram_socket from a socket of another protocol
-  /// type.
-  /**
-   * This constructor moves a datagram socket from one object to another.
-   *
-   * @param other The other basic_datagram_socket object from which the move
-   * will occur.
-   *
-   * @note Following the move, the moved-from object is in the same state as if
-   * constructed using the @c basic_datagram_socket(io_service&) constructor.
-   */
-  template <typename Protocol1, typename DatagramSocketService1>
-  basic_datagram_socket(
-      basic_datagram_socket<Protocol1, DatagramSocketService1>&& other,
-      typename enable_if<is_convertible<Protocol1, Protocol>::value>::type* = 0)
-    : basic_socket<Protocol, DatagramSocketService>(
-        ASIO_MOVE_CAST2(basic_datagram_socket<
-          Protocol1, DatagramSocketService1>)(other))
-  {
-  }
-
-  /// Move-assign a basic_datagram_socket from a socket of another protocol
-  /// type.
-  /**
-   * This assignment operator moves a datagram socket from one object to
-   * another.
-   *
-   * @param other The other basic_datagram_socket object from which the move
-   * will occur.
-   *
-   * @note Following the move, the moved-from object is in the same state as if
-   * constructed using the @c basic_datagram_socket(io_service&) constructor.
-   */
-  template <typename Protocol1, typename DatagramSocketService1>
-  typename enable_if<is_convertible<Protocol1, Protocol>::value,
-      basic_datagram_socket>::type& operator=(
-        basic_datagram_socket<Protocol1, DatagramSocketService1>&& other)
-  {
-    basic_socket<Protocol, DatagramSocketService>::operator=(
-        ASIO_MOVE_CAST2(basic_datagram_socket<
-          Protocol1, DatagramSocketService1>)(other));
-    return *this;
-  }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
-  /// Send some data on a connected socket.
-  /**
-   * This function is used to send data on the datagram socket. The function
-   * call will block until the data has been sent successfully or an error
-   * occurs.
-   *
-   * @param buffers One ore more data buffers to be sent on the socket.
-   *
-   * @returns The number of bytes sent.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note The send operation can only be used with a connected socket. Use
-   * the send_to function to send data on an unconnected datagram socket.
-   *
-   * @par Example
-   * To send a single data buffer use the @ref buffer function as follows:
-   * @code socket.send(asio::buffer(data, size)); @endcode
-   * See the @ref buffer documentation for information on sending multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t send(const ConstBufferSequence& buffers)
-  {
-    asio::error_code ec;
-    std::size_t s = this->get_service().send(
-        this->get_implementation(), buffers, 0, ec);
-    asio::detail::throw_error(ec, "send");
-    return s;
-  }
-
-  /// Send some data on a connected socket.
-  /**
-   * This function is used to send data on the datagram socket. The function
-   * call will block until the data has been sent successfully or an error
-   * occurs.
-   *
-   * @param buffers One ore more data buffers to be sent on the socket.
-   *
-   * @param flags Flags specifying how the send call is to be made.
-   *
-   * @returns The number of bytes sent.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note The send operation can only be used with a connected socket. Use
-   * the send_to function to send data on an unconnected datagram socket.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t send(const ConstBufferSequence& buffers,
-      socket_base::message_flags flags)
-  {
-    asio::error_code ec;
-    std::size_t s = this->get_service().send(
-        this->get_implementation(), buffers, flags, ec);
-    asio::detail::throw_error(ec, "send");
-    return s;
-  }
-
-  /// Send some data on a connected socket.
-  /**
-   * This function is used to send data on the datagram socket. The function
-   * call will block until the data has been sent successfully or an error
-   * occurs.
-   *
-   * @param buffers One or more data buffers to be sent on the socket.
-   *
-   * @param flags Flags specifying how the send call is to be made.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes sent.
-   *
-   * @note The send operation can only be used with a connected socket. Use
-   * the send_to function to send data on an unconnected datagram socket.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t send(const ConstBufferSequence& buffers,
-      socket_base::message_flags flags, asio::error_code& ec)
-  {
-    return this->get_service().send(
-        this->get_implementation(), buffers, flags, ec);
-  }
-
-  /// Start an asynchronous send on a connected socket.
-  /**
-   * This function is used to asynchronously send data on the datagram socket.
-   * The function call always returns immediately.
-   *
-   * @param buffers One or more data buffers to be sent on the socket. Although
-   * the buffers object may be copied as necessary, ownership of the underlying
-   * memory blocks is retained by the caller, which must guarantee that they
-   * remain valid until the handler is called.
-   *
-   * @param handler The handler to be called when the send operation completes.
-   * Copies will be made of the handler as required. The function signature of
-   * the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes sent.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   *
-   * @note The async_send operation can only be used with a connected socket.
-   * Use the async_send_to function to send data on an unconnected datagram
-   * socket.
-   *
-   * @par Example
-   * To send a single data buffer use the @ref buffer function as follows:
-   * @code
-   * socket.async_send(asio::buffer(data, size), handler);
-   * @endcode
-   * See the @ref buffer documentation for information on sending multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename ConstBufferSequence, typename WriteHandler>
-  ASIO_INITFN_RESULT_TYPE(WriteHandler,
-      void (asio::error_code, std::size_t))
-  async_send(const ConstBufferSequence& buffers,
-      ASIO_MOVE_ARG(WriteHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a WriteHandler.
-    ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
-    return this->get_service().async_send(this->get_implementation(),
-        buffers, 0, ASIO_MOVE_CAST(WriteHandler)(handler));
-  }
-
-  /// Start an asynchronous send on a connected socket.
-  /**
-   * This function is used to asynchronously send data on the datagram socket.
-   * The function call always returns immediately.
-   *
-   * @param buffers One or more data buffers to be sent on the socket. Although
-   * the buffers object may be copied as necessary, ownership of the underlying
-   * memory blocks is retained by the caller, which must guarantee that they
-   * remain valid until the handler is called.
-   *
-   * @param flags Flags specifying how the send call is to be made.
-   *
-   * @param handler The handler to be called when the send operation completes.
-   * Copies will be made of the handler as required. The function signature of
-   * the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes sent.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   *
-   * @note The async_send operation can only be used with a connected socket.
-   * Use the async_send_to function to send data on an unconnected datagram
-   * socket.
-   */
-  template <typename ConstBufferSequence, typename WriteHandler>
-  ASIO_INITFN_RESULT_TYPE(WriteHandler,
-      void (asio::error_code, std::size_t))
-  async_send(const ConstBufferSequence& buffers,
-      socket_base::message_flags flags,
-      ASIO_MOVE_ARG(WriteHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a WriteHandler.
-    ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
-    return this->get_service().async_send(this->get_implementation(),
-        buffers, flags, ASIO_MOVE_CAST(WriteHandler)(handler));
-  }
-
-  /// Send a datagram to the specified endpoint.
-  /**
-   * This function is used to send a datagram to the specified remote endpoint.
-   * The function call will block until the data has been sent successfully or
-   * an error occurs.
-   *
-   * @param buffers One or more data buffers to be sent to the remote endpoint.
-   *
-   * @param destination The remote endpoint to which the data will be sent.
-   *
-   * @returns The number of bytes sent.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @par Example
-   * To send a single data buffer use the @ref buffer function as follows:
-   * @code
-   * asio::ip::udp::endpoint destination(
-   *     asio::ip::address::from_string("1.2.3.4"), 12345);
-   * socket.send_to(asio::buffer(data, size), destination);
-   * @endcode
-   * See the @ref buffer documentation for information on sending multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t send_to(const ConstBufferSequence& buffers,
-      const endpoint_type& destination)
-  {
-    asio::error_code ec;
-    std::size_t s = this->get_service().send_to(
-        this->get_implementation(), buffers, destination, 0, ec);
-    asio::detail::throw_error(ec, "send_to");
-    return s;
-  }
-
-  /// Send a datagram to the specified endpoint.
-  /**
-   * This function is used to send a datagram to the specified remote endpoint.
-   * The function call will block until the data has been sent successfully or
-   * an error occurs.
-   *
-   * @param buffers One or more data buffers to be sent to the remote endpoint.
-   *
-   * @param destination The remote endpoint to which the data will be sent.
-   *
-   * @param flags Flags specifying how the send call is to be made.
-   *
-   * @returns The number of bytes sent.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t send_to(const ConstBufferSequence& buffers,
-      const endpoint_type& destination, socket_base::message_flags flags)
-  {
-    asio::error_code ec;
-    std::size_t s = this->get_service().send_to(
-        this->get_implementation(), buffers, destination, flags, ec);
-    asio::detail::throw_error(ec, "send_to");
-    return s;
-  }
-
-  /// Send a datagram to the specified endpoint.
-  /**
-   * This function is used to send a datagram to the specified remote endpoint.
-   * The function call will block until the data has been sent successfully or
-   * an error occurs.
-   *
-   * @param buffers One or more data buffers to be sent to the remote endpoint.
-   *
-   * @param destination The remote endpoint to which the data will be sent.
-   *
-   * @param flags Flags specifying how the send call is to be made.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes sent.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t send_to(const ConstBufferSequence& buffers,
-      const endpoint_type& destination, socket_base::message_flags flags,
-      asio::error_code& ec)
-  {
-    return this->get_service().send_to(this->get_implementation(),
-        buffers, destination, flags, ec);
-  }
-
-  /// Start an asynchronous send.
-  /**
-   * This function is used to asynchronously send a datagram to the specified
-   * remote endpoint. The function call always returns immediately.
-   *
-   * @param buffers One or more data buffers to be sent to the remote endpoint.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param destination The remote endpoint to which the data will be sent.
-   * Copies will be made of the endpoint as required.
-   *
-   * @param handler The handler to be called when the send operation completes.
-   * Copies will be made of the handler as required. The function signature of
-   * the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes sent.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   *
-   * @par Example
-   * To send a single data buffer use the @ref buffer function as follows:
-   * @code
-   * asio::ip::udp::endpoint destination(
-   *     asio::ip::address::from_string("1.2.3.4"), 12345);
-   * socket.async_send_to(
-   *     asio::buffer(data, size), destination, handler);
-   * @endcode
-   * See the @ref buffer documentation for information on sending multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename ConstBufferSequence, typename WriteHandler>
-  ASIO_INITFN_RESULT_TYPE(WriteHandler,
-      void (asio::error_code, std::size_t))
-  async_send_to(const ConstBufferSequence& buffers,
-      const endpoint_type& destination,
-      ASIO_MOVE_ARG(WriteHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a WriteHandler.
-    ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
-    return this->get_service().async_send_to(
-        this->get_implementation(), buffers, destination, 0,
-        ASIO_MOVE_CAST(WriteHandler)(handler));
-  }
-
-  /// Start an asynchronous send.
-  /**
-   * This function is used to asynchronously send a datagram to the specified
-   * remote endpoint. The function call always returns immediately.
-   *
-   * @param buffers One or more data buffers to be sent to the remote endpoint.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param flags Flags specifying how the send call is to be made.
-   *
-   * @param destination The remote endpoint to which the data will be sent.
-   * Copies will be made of the endpoint as required.
-   *
-   * @param handler The handler to be called when the send operation completes.
-   * Copies will be made of the handler as required. The function signature of
-   * the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes sent.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   */
-  template <typename ConstBufferSequence, typename WriteHandler>
-  ASIO_INITFN_RESULT_TYPE(WriteHandler,
-      void (asio::error_code, std::size_t))
-  async_send_to(const ConstBufferSequence& buffers,
-      const endpoint_type& destination, socket_base::message_flags flags,
-      ASIO_MOVE_ARG(WriteHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a WriteHandler.
-    ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
-    return this->get_service().async_send_to(
-        this->get_implementation(), buffers, destination, flags,
-        ASIO_MOVE_CAST(WriteHandler)(handler));
-  }
-
-  /// Receive some data on a connected socket.
-  /**
-   * This function is used to receive data on the datagram socket. The function
-   * call will block until data has been received successfully or an error
-   * occurs.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   *
-   * @returns The number of bytes received.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note The receive operation can only be used with a connected socket. Use
-   * the receive_from function to receive data on an unconnected datagram
-   * socket.
-   *
-   * @par Example
-   * To receive into a single data buffer use the @ref buffer function as
-   * follows:
-   * @code socket.receive(asio::buffer(data, size)); @endcode
-   * See the @ref buffer documentation for information on receiving into
-   * multiple buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t receive(const MutableBufferSequence& buffers)
-  {
-    asio::error_code ec;
-    std::size_t s = this->get_service().receive(
-        this->get_implementation(), buffers, 0, ec);
-    asio::detail::throw_error(ec, "receive");
-    return s;
-  }
-
-  /// Receive some data on a connected socket.
-  /**
-   * This function is used to receive data on the datagram socket. The function
-   * call will block until data has been received successfully or an error
-   * occurs.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   *
-   * @param flags Flags specifying how the receive call is to be made.
-   *
-   * @returns The number of bytes received.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note The receive operation can only be used with a connected socket. Use
-   * the receive_from function to receive data on an unconnected datagram
-   * socket.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t receive(const MutableBufferSequence& buffers,
-      socket_base::message_flags flags)
-  {
-    asio::error_code ec;
-    std::size_t s = this->get_service().receive(
-        this->get_implementation(), buffers, flags, ec);
-    asio::detail::throw_error(ec, "receive");
-    return s;
-  }
-
-  /// Receive some data on a connected socket.
-  /**
-   * This function is used to receive data on the datagram socket. The function
-   * call will block until data has been received successfully or an error
-   * occurs.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   *
-   * @param flags Flags specifying how the receive call is to be made.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes received.
-   *
-   * @note The receive operation can only be used with a connected socket. Use
-   * the receive_from function to receive data on an unconnected datagram
-   * socket.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t receive(const MutableBufferSequence& buffers,
-      socket_base::message_flags flags, asio::error_code& ec)
-  {
-    return this->get_service().receive(
-        this->get_implementation(), buffers, flags, ec);
-  }
-
-  /// Start an asynchronous receive on a connected socket.
-  /**
-   * This function is used to asynchronously receive data from the datagram
-   * socket. The function call always returns immediately.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param handler The handler to be called when the receive operation
-   * completes. Copies will be made of the handler as required. The function
-   * signature of the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes received.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   *
-   * @note The async_receive operation can only be used with a connected socket.
-   * Use the async_receive_from function to receive data on an unconnected
-   * datagram socket.
-   *
-   * @par Example
-   * To receive into a single data buffer use the @ref buffer function as
-   * follows:
-   * @code
-   * socket.async_receive(asio::buffer(data, size), handler);
-   * @endcode
-   * See the @ref buffer documentation for information on receiving into
-   * multiple buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence, typename ReadHandler>
-  ASIO_INITFN_RESULT_TYPE(ReadHandler,
-      void (asio::error_code, std::size_t))
-  async_receive(const MutableBufferSequence& buffers,
-      ASIO_MOVE_ARG(ReadHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a ReadHandler.
-    ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
-    return this->get_service().async_receive(this->get_implementation(),
-        buffers, 0, ASIO_MOVE_CAST(ReadHandler)(handler));
-  }
-
-  /// Start an asynchronous receive on a connected socket.
-  /**
-   * This function is used to asynchronously receive data from the datagram
-   * socket. The function call always returns immediately.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param flags Flags specifying how the receive call is to be made.
-   *
-   * @param handler The handler to be called when the receive operation
-   * completes. Copies will be made of the handler as required. The function
-   * signature of the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes received.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   *
-   * @note The async_receive operation can only be used with a connected socket.
-   * Use the async_receive_from function to receive data on an unconnected
-   * datagram socket.
-   */
-  template <typename MutableBufferSequence, typename ReadHandler>
-  ASIO_INITFN_RESULT_TYPE(ReadHandler,
-      void (asio::error_code, std::size_t))
-  async_receive(const MutableBufferSequence& buffers,
-      socket_base::message_flags flags,
-      ASIO_MOVE_ARG(ReadHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a ReadHandler.
-    ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
-    return this->get_service().async_receive(this->get_implementation(),
-        buffers, flags, ASIO_MOVE_CAST(ReadHandler)(handler));
-  }
-
-  /// Receive a datagram with the endpoint of the sender.
-  /**
-   * This function is used to receive a datagram. The function call will block
-   * until data has been received successfully or an error occurs.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   *
-   * @param sender_endpoint An endpoint object that receives the endpoint of
-   * the remote sender of the datagram.
-   *
-   * @returns The number of bytes received.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @par Example
-   * To receive into a single data buffer use the @ref buffer function as
-   * follows:
-   * @code
-   * asio::ip::udp::endpoint sender_endpoint;
-   * socket.receive_from(
-   *     asio::buffer(data, size), sender_endpoint);
-   * @endcode
-   * See the @ref buffer documentation for information on receiving into
-   * multiple buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t receive_from(const MutableBufferSequence& buffers,
-      endpoint_type& sender_endpoint)
-  {
-    asio::error_code ec;
-    std::size_t s = this->get_service().receive_from(
-        this->get_implementation(), buffers, sender_endpoint, 0, ec);
-    asio::detail::throw_error(ec, "receive_from");
-    return s;
-  }
-  
-  /// Receive a datagram with the endpoint of the sender.
-  /**
-   * This function is used to receive a datagram. The function call will block
-   * until data has been received successfully or an error occurs.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   *
-   * @param sender_endpoint An endpoint object that receives the endpoint of
-   * the remote sender of the datagram.
-   *
-   * @param flags Flags specifying how the receive call is to be made.
-   *
-   * @returns The number of bytes received.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t receive_from(const MutableBufferSequence& buffers,
-      endpoint_type& sender_endpoint, socket_base::message_flags flags)
-  {
-    asio::error_code ec;
-    std::size_t s = this->get_service().receive_from(
-        this->get_implementation(), buffers, sender_endpoint, flags, ec);
-    asio::detail::throw_error(ec, "receive_from");
-    return s;
-  }
-  
-  /// Receive a datagram with the endpoint of the sender.
-  /**
-   * This function is used to receive a datagram. The function call will block
-   * until data has been received successfully or an error occurs.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   *
-   * @param sender_endpoint An endpoint object that receives the endpoint of
-   * the remote sender of the datagram.
-   *
-   * @param flags Flags specifying how the receive call is to be made.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes received.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t receive_from(const MutableBufferSequence& buffers,
-      endpoint_type& sender_endpoint, socket_base::message_flags flags,
-      asio::error_code& ec)
-  {
-    return this->get_service().receive_from(this->get_implementation(),
-        buffers, sender_endpoint, flags, ec);
-  }
-
-  /// Start an asynchronous receive.
-  /**
-   * This function is used to asynchronously receive a datagram. The function
-   * call always returns immediately.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param sender_endpoint An endpoint object that receives the endpoint of
-   * the remote sender of the datagram. Ownership of the sender_endpoint object
-   * is retained by the caller, which must guarantee that it is valid until the
-   * handler is called.
-   *
-   * @param handler The handler to be called when the receive operation
-   * completes. Copies will be made of the handler as required. The function
-   * signature of the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes received.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   *
-   * @par Example
-   * To receive into a single data buffer use the @ref buffer function as
-   * follows:
-   * @code socket.async_receive_from(
-   *     asio::buffer(data, size), sender_endpoint, handler); @endcode
-   * See the @ref buffer documentation for information on receiving into
-   * multiple buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence, typename ReadHandler>
-  ASIO_INITFN_RESULT_TYPE(ReadHandler,
-      void (asio::error_code, std::size_t))
-  async_receive_from(const MutableBufferSequence& buffers,
-      endpoint_type& sender_endpoint,
-      ASIO_MOVE_ARG(ReadHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a ReadHandler.
-    ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
-    return this->get_service().async_receive_from(
-        this->get_implementation(), buffers, sender_endpoint, 0,
-        ASIO_MOVE_CAST(ReadHandler)(handler));
-  }
-
-  /// Start an asynchronous receive.
-  /**
-   * This function is used to asynchronously receive a datagram. The function
-   * call always returns immediately.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param sender_endpoint An endpoint object that receives the endpoint of
-   * the remote sender of the datagram. Ownership of the sender_endpoint object
-   * is retained by the caller, which must guarantee that it is valid until the
-   * handler is called.
-   *
-   * @param flags Flags specifying how the receive call is to be made.
-   *
-   * @param handler The handler to be called when the receive operation
-   * completes. Copies will be made of the handler as required. The function
-   * signature of the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes received.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   */
-  template <typename MutableBufferSequence, typename ReadHandler>
-  ASIO_INITFN_RESULT_TYPE(ReadHandler,
-      void (asio::error_code, std::size_t))
-  async_receive_from(const MutableBufferSequence& buffers,
-      endpoint_type& sender_endpoint, socket_base::message_flags flags,
-      ASIO_MOVE_ARG(ReadHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a ReadHandler.
-    ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
-    return this->get_service().async_receive_from(
-        this->get_implementation(), buffers, sender_endpoint, flags,
-        ASIO_MOVE_CAST(ReadHandler)(handler));
-  }
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_BASIC_DATAGRAM_SOCKET_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_deadline_timer.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_deadline_timer.hpp
deleted file mode 100644
index f75b9bd..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_deadline_timer.hpp
+++ /dev/null
@@ -1,518 +0,0 @@
-//
-// basic_deadline_timer.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_BASIC_DEADLINE_TIMER_HPP
-#define ASIO_BASIC_DEADLINE_TIMER_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_BOOST_DATE_TIME) \
-  || defined(GENERATING_DOCUMENTATION)
-
-#include <cstddef>
-#include "asio/basic_io_object.hpp"
-#include "asio/deadline_timer_service.hpp"
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Provides waitable timer functionality.
-/**
- * The basic_deadline_timer class template provides the ability to perform a
- * blocking or asynchronous wait for a timer to expire.
- *
- * A deadline timer is always in one of two states: "expired" or "not expired".
- * If the wait() or async_wait() function is called on an expired timer, the
- * wait operation will complete immediately.
- *
- * Most applications will use the asio::deadline_timer typedef.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- *
- * @par Examples
- * Performing a blocking wait:
- * @code
- * // Construct a timer without setting an expiry time.
- * asio::deadline_timer timer(io_service);
- *
- * // Set an expiry time relative to now.
- * timer.expires_from_now(boost::posix_time::seconds(5));
- *
- * // Wait for the timer to expire.
- * timer.wait();
- * @endcode
- *
- * @par 
- * Performing an asynchronous wait:
- * @code
- * void handler(const asio::error_code& error)
- * {
- *   if (!error)
- *   {
- *     // Timer expired.
- *   }
- * }
- *
- * ...
- *
- * // Construct a timer with an absolute expiry time.
- * asio::deadline_timer timer(io_service,
- *     boost::posix_time::time_from_string("2005-12-07 23:59:59.000"));
- *
- * // Start an asynchronous wait.
- * timer.async_wait(handler);
- * @endcode
- *
- * @par Changing an active deadline_timer's expiry time
- *
- * Changing the expiry time of a timer while there are pending asynchronous
- * waits causes those wait operations to be cancelled. To ensure that the action
- * associated with the timer is performed only once, use something like this:
- * used:
- *
- * @code
- * void on_some_event()
- * {
- *   if (my_timer.expires_from_now(seconds(5)) > 0)
- *   {
- *     // We managed to cancel the timer. Start new asynchronous wait.
- *     my_timer.async_wait(on_timeout);
- *   }
- *   else
- *   {
- *     // Too late, timer has already expired!
- *   }
- * }
- *
- * void on_timeout(const asio::error_code& e)
- * {
- *   if (e != asio::error::operation_aborted)
- *   {
- *     // Timer was not cancelled, take necessary action.
- *   }
- * }
- * @endcode
- *
- * @li The asio::basic_deadline_timer::expires_from_now() function
- * cancels any pending asynchronous waits, and returns the number of
- * asynchronous waits that were cancelled. If it returns 0 then you were too
- * late and the wait handler has already been executed, or will soon be
- * executed. If it returns 1 then the wait handler was successfully cancelled.
- *
- * @li If a wait handler is cancelled, the asio::error_code passed to
- * it contains the value asio::error::operation_aborted.
- */
-template <typename Time,
-    typename TimeTraits = asio::time_traits<Time>,
-    typename TimerService = deadline_timer_service<Time, TimeTraits> >
-class basic_deadline_timer
-  : public basic_io_object<TimerService>
-{
-public:
-  /// The time traits type.
-  typedef TimeTraits traits_type;
-
-  /// The time type.
-  typedef typename traits_type::time_type time_type;
-
-  /// The duration type.
-  typedef typename traits_type::duration_type duration_type;
-
-  /// Constructor.
-  /**
-   * This constructor creates a timer without setting an expiry time. The
-   * expires_at() or expires_from_now() functions must be called to set an
-   * expiry time before the timer can be waited on.
-   *
-   * @param io_service The io_service object that the timer will use to dispatch
-   * handlers for any asynchronous operations performed on the timer.
-   */
-  explicit basic_deadline_timer(asio::io_service& io_service)
-    : basic_io_object<TimerService>(io_service)
-  {
-  }
-
-  /// Constructor to set a particular expiry time as an absolute time.
-  /**
-   * This constructor creates a timer and sets the expiry time.
-   *
-   * @param io_service The io_service object that the timer will use to dispatch
-   * handlers for any asynchronous operations performed on the timer.
-   *
-   * @param expiry_time The expiry time to be used for the timer, expressed
-   * as an absolute time.
-   */
-  basic_deadline_timer(asio::io_service& io_service,
-      const time_type& expiry_time)
-    : basic_io_object<TimerService>(io_service)
-  {
-    asio::error_code ec;
-    this->service.expires_at(this->implementation, expiry_time, ec);
-    asio::detail::throw_error(ec, "expires_at");
-  }
-
-  /// Constructor to set a particular expiry time relative to now.
-  /**
-   * This constructor creates a timer and sets the expiry time.
-   *
-   * @param io_service The io_service object that the timer will use to dispatch
-   * handlers for any asynchronous operations performed on the timer.
-   *
-   * @param expiry_time The expiry time to be used for the timer, relative to
-   * now.
-   */
-  basic_deadline_timer(asio::io_service& io_service,
-      const duration_type& expiry_time)
-    : basic_io_object<TimerService>(io_service)
-  {
-    asio::error_code ec;
-    this->service.expires_from_now(this->implementation, expiry_time, ec);
-    asio::detail::throw_error(ec, "expires_from_now");
-  }
-
-  /// Cancel any asynchronous operations that are waiting on the timer.
-  /**
-   * This function forces the completion of any pending asynchronous wait
-   * operations against the timer. The handler for each cancelled operation will
-   * be invoked with the asio::error::operation_aborted error code.
-   *
-   * Cancelling the timer does not change the expiry time.
-   *
-   * @return The number of asynchronous operations that were cancelled.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note If the timer has already expired when cancel() is called, then the
-   * handlers for asynchronous wait operations will:
-   *
-   * @li have already been invoked; or
-   *
-   * @li have been queued for invocation in the near future.
-   *
-   * These handlers can no longer be cancelled, and therefore are passed an
-   * error code that indicates the successful completion of the wait operation.
-   */
-  std::size_t cancel()
-  {
-    asio::error_code ec;
-    std::size_t s = this->service.cancel(this->implementation, ec);
-    asio::detail::throw_error(ec, "cancel");
-    return s;
-  }
-
-  /// Cancel any asynchronous operations that are waiting on the timer.
-  /**
-   * This function forces the completion of any pending asynchronous wait
-   * operations against the timer. The handler for each cancelled operation will
-   * be invoked with the asio::error::operation_aborted error code.
-   *
-   * Cancelling the timer does not change the expiry time.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @return The number of asynchronous operations that were cancelled.
-   *
-   * @note If the timer has already expired when cancel() is called, then the
-   * handlers for asynchronous wait operations will:
-   *
-   * @li have already been invoked; or
-   *
-   * @li have been queued for invocation in the near future.
-   *
-   * These handlers can no longer be cancelled, and therefore are passed an
-   * error code that indicates the successful completion of the wait operation.
-   */
-  std::size_t cancel(asio::error_code& ec)
-  {
-    return this->service.cancel(this->implementation, ec);
-  }
-
-  /// Cancels one asynchronous operation that is waiting on the timer.
-  /**
-   * This function forces the completion of one pending asynchronous wait
-   * operation against the timer. Handlers are cancelled in FIFO order. The
-   * handler for the cancelled operation will be invoked with the
-   * asio::error::operation_aborted error code.
-   *
-   * Cancelling the timer does not change the expiry time.
-   *
-   * @return The number of asynchronous operations that were cancelled. That is,
-   * either 0 or 1.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note If the timer has already expired when cancel_one() is called, then
-   * the handlers for asynchronous wait operations will:
-   *
-   * @li have already been invoked; or
-   *
-   * @li have been queued for invocation in the near future.
-   *
-   * These handlers can no longer be cancelled, and therefore are passed an
-   * error code that indicates the successful completion of the wait operation.
-   */
-  std::size_t cancel_one()
-  {
-    asio::error_code ec;
-    std::size_t s = this->service.cancel_one(this->implementation, ec);
-    asio::detail::throw_error(ec, "cancel_one");
-    return s;
-  }
-
-  /// Cancels one asynchronous operation that is waiting on the timer.
-  /**
-   * This function forces the completion of one pending asynchronous wait
-   * operation against the timer. Handlers are cancelled in FIFO order. The
-   * handler for the cancelled operation will be invoked with the
-   * asio::error::operation_aborted error code.
-   *
-   * Cancelling the timer does not change the expiry time.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @return The number of asynchronous operations that were cancelled. That is,
-   * either 0 or 1.
-   *
-   * @note If the timer has already expired when cancel_one() is called, then
-   * the handlers for asynchronous wait operations will:
-   *
-   * @li have already been invoked; or
-   *
-   * @li have been queued for invocation in the near future.
-   *
-   * These handlers can no longer be cancelled, and therefore are passed an
-   * error code that indicates the successful completion of the wait operation.
-   */
-  std::size_t cancel_one(asio::error_code& ec)
-  {
-    return this->service.cancel_one(this->implementation, ec);
-  }
-
-  /// Get the timer's expiry time as an absolute time.
-  /**
-   * This function may be used to obtain the timer's current expiry time.
-   * Whether the timer has expired or not does not affect this value.
-   */
-  time_type expires_at() const
-  {
-    return this->service.expires_at(this->implementation);
-  }
-
-  /// Set the timer's expiry time as an absolute time.
-  /**
-   * This function sets the expiry time. Any pending asynchronous wait
-   * operations will be cancelled. The handler for each cancelled operation will
-   * be invoked with the asio::error::operation_aborted error code.
-   *
-   * @param expiry_time The expiry time to be used for the timer.
-   *
-   * @return The number of asynchronous operations that were cancelled.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note If the timer has already expired when expires_at() is called, then
-   * the handlers for asynchronous wait operations will:
-   *
-   * @li have already been invoked; or
-   *
-   * @li have been queued for invocation in the near future.
-   *
-   * These handlers can no longer be cancelled, and therefore are passed an
-   * error code that indicates the successful completion of the wait operation.
-   */
-  std::size_t expires_at(const time_type& expiry_time)
-  {
-    asio::error_code ec;
-    std::size_t s = this->service.expires_at(
-        this->implementation, expiry_time, ec);
-    asio::detail::throw_error(ec, "expires_at");
-    return s;
-  }
-
-  /// Set the timer's expiry time as an absolute time.
-  /**
-   * This function sets the expiry time. Any pending asynchronous wait
-   * operations will be cancelled. The handler for each cancelled operation will
-   * be invoked with the asio::error::operation_aborted error code.
-   *
-   * @param expiry_time The expiry time to be used for the timer.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @return The number of asynchronous operations that were cancelled.
-   *
-   * @note If the timer has already expired when expires_at() is called, then
-   * the handlers for asynchronous wait operations will:
-   *
-   * @li have already been invoked; or
-   *
-   * @li have been queued for invocation in the near future.
-   *
-   * These handlers can no longer be cancelled, and therefore are passed an
-   * error code that indicates the successful completion of the wait operation.
-   */
-  std::size_t expires_at(const time_type& expiry_time,
-      asio::error_code& ec)
-  {
-    return this->service.expires_at(this->implementation, expiry_time, ec);
-  }
-
-  /// Get the timer's expiry time relative to now.
-  /**
-   * This function may be used to obtain the timer's current expiry time.
-   * Whether the timer has expired or not does not affect this value.
-   */
-  duration_type expires_from_now() const
-  {
-    return this->service.expires_from_now(this->implementation);
-  }
-
-  /// Set the timer's expiry time relative to now.
-  /**
-   * This function sets the expiry time. Any pending asynchronous wait
-   * operations will be cancelled. The handler for each cancelled operation will
-   * be invoked with the asio::error::operation_aborted error code.
-   *
-   * @param expiry_time The expiry time to be used for the timer.
-   *
-   * @return The number of asynchronous operations that were cancelled.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note If the timer has already expired when expires_from_now() is called,
-   * then the handlers for asynchronous wait operations will:
-   *
-   * @li have already been invoked; or
-   *
-   * @li have been queued for invocation in the near future.
-   *
-   * These handlers can no longer be cancelled, and therefore are passed an
-   * error code that indicates the successful completion of the wait operation.
-   */
-  std::size_t expires_from_now(const duration_type& expiry_time)
-  {
-    asio::error_code ec;
-    std::size_t s = this->service.expires_from_now(
-        this->implementation, expiry_time, ec);
-    asio::detail::throw_error(ec, "expires_from_now");
-    return s;
-  }
-
-  /// Set the timer's expiry time relative to now.
-  /**
-   * This function sets the expiry time. Any pending asynchronous wait
-   * operations will be cancelled. The handler for each cancelled operation will
-   * be invoked with the asio::error::operation_aborted error code.
-   *
-   * @param expiry_time The expiry time to be used for the timer.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @return The number of asynchronous operations that were cancelled.
-   *
-   * @note If the timer has already expired when expires_from_now() is called,
-   * then the handlers for asynchronous wait operations will:
-   *
-   * @li have already been invoked; or
-   *
-   * @li have been queued for invocation in the near future.
-   *
-   * These handlers can no longer be cancelled, and therefore are passed an
-   * error code that indicates the successful completion of the wait operation.
-   */
-  std::size_t expires_from_now(const duration_type& expiry_time,
-      asio::error_code& ec)
-  {
-    return this->service.expires_from_now(
-        this->implementation, expiry_time, ec);
-  }
-
-  /// Perform a blocking wait on the timer.
-  /**
-   * This function is used to wait for the timer to expire. This function
-   * blocks and does not return until the timer has expired.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  void wait()
-  {
-    asio::error_code ec;
-    this->service.wait(this->implementation, ec);
-    asio::detail::throw_error(ec, "wait");
-  }
-
-  /// Perform a blocking wait on the timer.
-  /**
-   * This function is used to wait for the timer to expire. This function
-   * blocks and does not return until the timer has expired.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   */
-  void wait(asio::error_code& ec)
-  {
-    this->service.wait(this->implementation, ec);
-  }
-
-  /// Start an asynchronous wait on the timer.
-  /**
-   * This function may be used to initiate an asynchronous wait against the
-   * timer. It always returns immediately.
-   *
-   * For each call to async_wait(), the supplied handler will be called exactly
-   * once. The handler will be called when:
-   *
-   * @li The timer has expired.
-   *
-   * @li The timer was cancelled, in which case the handler is passed the error
-   * code asio::error::operation_aborted.
-   *
-   * @param handler The handler to be called when the timer expires. Copies
-   * will be made of the handler as required. The function signature of the
-   * handler must be:
-   * @code void handler(
-   *   const asio::error_code& error // Result of operation.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   */
-  template <typename WaitHandler>
-  ASIO_INITFN_RESULT_TYPE(WaitHandler,
-      void (asio::error_code))
-  async_wait(ASIO_MOVE_ARG(WaitHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a WaitHandler.
-    ASIO_WAIT_HANDLER_CHECK(WaitHandler, handler) type_check;
-
-    return this->service.async_wait(this->implementation,
-        ASIO_MOVE_CAST(WaitHandler)(handler));
-  }
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_BOOST_DATE_TIME)
-       // || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_BASIC_DEADLINE_TIMER_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_io_object.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_io_object.hpp
deleted file mode 100644
index d513cc2..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_io_object.hpp
+++ /dev/null
@@ -1,240 +0,0 @@
-//
-// basic_io_object.hpp
-// ~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_BASIC_IO_OBJECT_HPP
-#define ASIO_BASIC_IO_OBJECT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/io_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-#if defined(ASIO_HAS_MOVE)
-namespace detail
-{
-  // Type trait used to determine whether a service supports move.
-  template <typename IoObjectService>
-  class service_has_move
-  {
-  private:
-    typedef IoObjectService service_type;
-    typedef typename service_type::implementation_type implementation_type;
-
-    template <typename T, typename U>
-    static auto eval(T* t, U* u) -> decltype(t->move_construct(*u, *u), char());
-    static char (&eval(...))[2];
-
-  public:
-    static const bool value =
-      sizeof(service_has_move::eval(
-        static_cast<service_type*>(0),
-        static_cast<implementation_type*>(0))) == 1;
-  };
-}
-#endif // defined(ASIO_HAS_MOVE)
-
-/// Base class for all I/O objects.
-/**
- * @note All I/O objects are non-copyable. However, when using C++0x, certain
- * I/O objects do support move construction and move assignment.
- */
-#if !defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-template <typename IoObjectService>
-#else
-template <typename IoObjectService,
-    bool Movable = detail::service_has_move<IoObjectService>::value>
-#endif
-class basic_io_object
-{
-public:
-  /// The type of the service that will be used to provide I/O operations.
-  typedef IoObjectService service_type;
-
-  /// The underlying implementation type of I/O object.
-  typedef typename service_type::implementation_type implementation_type;
-
-  /// Get the io_service associated with the object.
-  /**
-   * This function may be used to obtain the io_service object that the I/O
-   * object uses to dispatch handlers for asynchronous operations.
-   *
-   * @return A reference to the io_service object that the I/O object will use
-   * to dispatch handlers. Ownership is not transferred to the caller.
-   */
-  asio::io_service& get_io_service()
-  {
-    return service.get_io_service();
-  }
-
-protected:
-  /// Construct a basic_io_object.
-  /**
-   * Performs:
-   * @code get_service().construct(get_implementation()); @endcode
-   */
-  explicit basic_io_object(asio::io_service& io_service)
-    : service(asio::use_service<IoObjectService>(io_service))
-  {
-    service.construct(implementation);
-  }
-
-#if defined(GENERATING_DOCUMENTATION)
-  /// Move-construct a basic_io_object.
-  /**
-   * Performs:
-   * @code get_service().move_construct(
-   *     get_implementation(), other.get_implementation()); @endcode
-   *
-   * @note Available only for services that support movability,
-   */
-  basic_io_object(basic_io_object&& other);
-
-  /// Move-assign a basic_io_object.
-  /**
-   * Performs:
-   * @code get_service().move_assign(get_implementation(),
-   *     other.get_service(), other.get_implementation()); @endcode
-   *
-   * @note Available only for services that support movability,
-   */
-  basic_io_object& operator=(basic_io_object&& other);
-#endif // defined(GENERATING_DOCUMENTATION)
-
-  /// Protected destructor to prevent deletion through this type.
-  /**
-   * Performs:
-   * @code get_service().destroy(get_implementation()); @endcode
-   */
-  ~basic_io_object()
-  {
-    service.destroy(implementation);
-  }
-
-  /// Get the service associated with the I/O object.
-  service_type& get_service()
-  {
-    return service;
-  }
-
-  /// Get the service associated with the I/O object.
-  const service_type& get_service() const
-  {
-    return service;
-  }
-
-  /// (Deprecated: Use get_service().) The service associated with the I/O
-  /// object.
-  /**
-   * @note Available only for services that do not support movability.
-   */
-  service_type& service;
-
-  /// Get the underlying implementation of the I/O object.
-  implementation_type& get_implementation()
-  {
-    return implementation;
-  }
-
-  /// Get the underlying implementation of the I/O object.
-  const implementation_type& get_implementation() const
-  {
-    return implementation;
-  }
-
-  /// (Deprecated: Use get_implementation().) The underlying implementation of
-  /// the I/O object.
-  implementation_type implementation;
-
-private:
-  basic_io_object(const basic_io_object&);
-  basic_io_object& operator=(const basic_io_object&);
-};
-
-#if defined(ASIO_HAS_MOVE)
-// Specialisation for movable objects.
-template <typename IoObjectService>
-class basic_io_object<IoObjectService, true>
-{
-public:
-  typedef IoObjectService service_type;
-  typedef typename service_type::implementation_type implementation_type;
-
-  asio::io_service& get_io_service()
-  {
-    return service_->get_io_service();
-  }
-
-protected:
-  explicit basic_io_object(asio::io_service& io_service)
-    : service_(&asio::use_service<IoObjectService>(io_service))
-  {
-    service_->construct(implementation);
-  }
-
-  basic_io_object(basic_io_object&& other)
-    : service_(&other.get_service())
-  {
-    service_->move_construct(implementation, other.implementation);
-  }
-
-  ~basic_io_object()
-  {
-    service_->destroy(implementation);
-  }
-
-  basic_io_object& operator=(basic_io_object&& other)
-  {
-    service_->move_assign(implementation,
-        *other.service_, other.implementation);
-    service_ = other.service_;
-    return *this;
-  }
-
-  service_type& get_service()
-  {
-    return *service_;
-  }
-
-  const service_type& get_service() const
-  {
-    return *service_;
-  }
-
-  implementation_type& get_implementation()
-  {
-    return implementation;
-  }
-
-  const implementation_type& get_implementation() const
-  {
-    return implementation;
-  }
-
-  implementation_type implementation;
-
-private:
-  basic_io_object(const basic_io_object&);
-  void operator=(const basic_io_object&);
-
-  IoObjectService* service_;
-};
-#endif // defined(ASIO_HAS_MOVE)
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_BASIC_IO_OBJECT_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_raw_socket.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_raw_socket.hpp
deleted file mode 100644
index ff19b5a..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_raw_socket.hpp
+++ /dev/null
@@ -1,940 +0,0 @@
-//
-// basic_raw_socket.hpp
-// ~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_BASIC_RAW_SOCKET_HPP
-#define ASIO_BASIC_RAW_SOCKET_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cstddef>
-#include "asio/basic_socket.hpp"
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/detail/type_traits.hpp"
-#include "asio/error.hpp"
-#include "asio/raw_socket_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Provides raw-oriented socket functionality.
-/**
- * The basic_raw_socket class template provides asynchronous and blocking
- * raw-oriented socket functionality.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- */
-template <typename Protocol,
-    typename RawSocketService = raw_socket_service<Protocol> >
-class basic_raw_socket
-  : public basic_socket<Protocol, RawSocketService>
-{
-public:
-  /// (Deprecated: Use native_handle_type.) The native representation of a
-  /// socket.
-  typedef typename RawSocketService::native_handle_type native_type;
-
-  /// The native representation of a socket.
-  typedef typename RawSocketService::native_handle_type native_handle_type;
-
-  /// The protocol type.
-  typedef Protocol protocol_type;
-
-  /// The endpoint type.
-  typedef typename Protocol::endpoint endpoint_type;
-
-  /// Construct a basic_raw_socket without opening it.
-  /**
-   * This constructor creates a raw socket without opening it. The open()
-   * function must be called before data can be sent or received on the socket.
-   *
-   * @param io_service The io_service object that the raw socket will use
-   * to dispatch handlers for any asynchronous operations performed on the
-   * socket.
-   */
-  explicit basic_raw_socket(asio::io_service& io_service)
-    : basic_socket<Protocol, RawSocketService>(io_service)
-  {
-  }
-
-  /// Construct and open a basic_raw_socket.
-  /**
-   * This constructor creates and opens a raw socket.
-   *
-   * @param io_service The io_service object that the raw socket will use
-   * to dispatch handlers for any asynchronous operations performed on the
-   * socket.
-   *
-   * @param protocol An object specifying protocol parameters to be used.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  basic_raw_socket(asio::io_service& io_service,
-      const protocol_type& protocol)
-    : basic_socket<Protocol, RawSocketService>(io_service, protocol)
-  {
-  }
-
-  /// Construct a basic_raw_socket, opening it and binding it to the given
-  /// local endpoint.
-  /**
-   * This constructor creates a raw socket and automatically opens it bound
-   * to the specified endpoint on the local machine. The protocol used is the
-   * protocol associated with the given endpoint.
-   *
-   * @param io_service The io_service object that the raw socket will use
-   * to dispatch handlers for any asynchronous operations performed on the
-   * socket.
-   *
-   * @param endpoint An endpoint on the local machine to which the raw
-   * socket will be bound.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  basic_raw_socket(asio::io_service& io_service,
-      const endpoint_type& endpoint)
-    : basic_socket<Protocol, RawSocketService>(io_service, endpoint)
-  {
-  }
-
-  /// Construct a basic_raw_socket on an existing native socket.
-  /**
-   * This constructor creates a raw socket object to hold an existing
-   * native socket.
-   *
-   * @param io_service The io_service object that the raw socket will use
-   * to dispatch handlers for any asynchronous operations performed on the
-   * socket.
-   *
-   * @param protocol An object specifying protocol parameters to be used.
-   *
-   * @param native_socket The new underlying socket implementation.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  basic_raw_socket(asio::io_service& io_service,
-      const protocol_type& protocol, const native_handle_type& native_socket)
-    : basic_socket<Protocol, RawSocketService>(
-        io_service, protocol, native_socket)
-  {
-  }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-  /// Move-construct a basic_raw_socket from another.
-  /**
-   * This constructor moves a raw socket from one object to another.
-   *
-   * @param other The other basic_raw_socket object from which the move
-   * will occur.
-   *
-   * @note Following the move, the moved-from object is in the same state as if
-   * constructed using the @c basic_raw_socket(io_service&) constructor.
-   */
-  basic_raw_socket(basic_raw_socket&& other)
-    : basic_socket<Protocol, RawSocketService>(
-        ASIO_MOVE_CAST(basic_raw_socket)(other))
-  {
-  }
-
-  /// Move-assign a basic_raw_socket from another.
-  /**
-   * This assignment operator moves a raw socket from one object to another.
-   *
-   * @param other The other basic_raw_socket object from which the move
-   * will occur.
-   *
-   * @note Following the move, the moved-from object is in the same state as if
-   * constructed using the @c basic_raw_socket(io_service&) constructor.
-   */
-  basic_raw_socket& operator=(basic_raw_socket&& other)
-  {
-    basic_socket<Protocol, RawSocketService>::operator=(
-        ASIO_MOVE_CAST(basic_raw_socket)(other));
-    return *this;
-  }
-
-  /// Move-construct a basic_raw_socket from a socket of another protocol type.
-  /**
-   * This constructor moves a raw socket from one object to another.
-   *
-   * @param other The other basic_raw_socket object from which the move will
-   * occur.
-   *
-   * @note Following the move, the moved-from object is in the same state as if
-   * constructed using the @c basic_raw_socket(io_service&) constructor.
-   */
-  template <typename Protocol1, typename RawSocketService1>
-  basic_raw_socket(basic_raw_socket<Protocol1, RawSocketService1>&& other,
-      typename enable_if<is_convertible<Protocol1, Protocol>::value>::type* = 0)
-    : basic_socket<Protocol, RawSocketService>(
-        ASIO_MOVE_CAST2(basic_raw_socket<
-          Protocol1, RawSocketService1>)(other))
-  {
-  }
-
-  /// Move-assign a basic_raw_socket from a socket of another protocol type.
-  /**
-   * This assignment operator moves a raw socket from one object to another.
-   *
-   * @param other The other basic_raw_socket object from which the move
-   * will occur.
-   *
-   * @note Following the move, the moved-from object is in the same state as if
-   * constructed using the @c basic_raw_socket(io_service&) constructor.
-   */
-  template <typename Protocol1, typename RawSocketService1>
-  typename enable_if<is_convertible<Protocol1, Protocol>::value,
-      basic_raw_socket>::type& operator=(
-        basic_raw_socket<Protocol1, RawSocketService1>&& other)
-  {
-    basic_socket<Protocol, RawSocketService>::operator=(
-        ASIO_MOVE_CAST2(basic_raw_socket<
-          Protocol1, RawSocketService1>)(other));
-    return *this;
-  }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
-  /// Send some data on a connected socket.
-  /**
-   * This function is used to send data on the raw socket. The function call
-   * will block until the data has been sent successfully or an error occurs.
-   *
-   * @param buffers One ore more data buffers to be sent on the socket.
-   *
-   * @returns The number of bytes sent.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note The send operation can only be used with a connected socket. Use
-   * the send_to function to send data on an unconnected raw socket.
-   *
-   * @par Example
-   * To send a single data buffer use the @ref buffer function as follows:
-   * @code socket.send(asio::buffer(data, size)); @endcode
-   * See the @ref buffer documentation for information on sending multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t send(const ConstBufferSequence& buffers)
-  {
-    asio::error_code ec;
-    std::size_t s = this->get_service().send(
-        this->get_implementation(), buffers, 0, ec);
-    asio::detail::throw_error(ec, "send");
-    return s;
-  }
-
-  /// Send some data on a connected socket.
-  /**
-   * This function is used to send data on the raw socket. The function call
-   * will block until the data has been sent successfully or an error occurs.
-   *
-   * @param buffers One ore more data buffers to be sent on the socket.
-   *
-   * @param flags Flags specifying how the send call is to be made.
-   *
-   * @returns The number of bytes sent.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note The send operation can only be used with a connected socket. Use
-   * the send_to function to send data on an unconnected raw socket.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t send(const ConstBufferSequence& buffers,
-      socket_base::message_flags flags)
-  {
-    asio::error_code ec;
-    std::size_t s = this->get_service().send(
-        this->get_implementation(), buffers, flags, ec);
-    asio::detail::throw_error(ec, "send");
-    return s;
-  }
-
-  /// Send some data on a connected socket.
-  /**
-   * This function is used to send data on the raw socket. The function call
-   * will block until the data has been sent successfully or an error occurs.
-   *
-   * @param buffers One or more data buffers to be sent on the socket.
-   *
-   * @param flags Flags specifying how the send call is to be made.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes sent.
-   *
-   * @note The send operation can only be used with a connected socket. Use
-   * the send_to function to send data on an unconnected raw socket.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t send(const ConstBufferSequence& buffers,
-      socket_base::message_flags flags, asio::error_code& ec)
-  {
-    return this->get_service().send(
-        this->get_implementation(), buffers, flags, ec);
-  }
-
-  /// Start an asynchronous send on a connected socket.
-  /**
-   * This function is used to send data on the raw socket. The function call
-   * will block until the data has been sent successfully or an error occurs.
-   *
-   * @param buffers One or more data buffers to be sent on the socket. Although
-   * the buffers object may be copied as necessary, ownership of the underlying
-   * memory blocks is retained by the caller, which must guarantee that they
-   * remain valid until the handler is called.
-   *
-   * @param handler The handler to be called when the send operation completes.
-   * Copies will be made of the handler as required. The function signature of
-   * the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes sent.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   *
-   * @note The async_send operation can only be used with a connected socket.
-   * Use the async_send_to function to send data on an unconnected raw
-   * socket.
-   *
-   * @par Example
-   * To send a single data buffer use the @ref buffer function as follows:
-   * @code
-   * socket.async_send(asio::buffer(data, size), handler);
-   * @endcode
-   * See the @ref buffer documentation for information on sending multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename ConstBufferSequence, typename WriteHandler>
-  ASIO_INITFN_RESULT_TYPE(WriteHandler,
-      void (asio::error_code, std::size_t))
-  async_send(const ConstBufferSequence& buffers,
-      ASIO_MOVE_ARG(WriteHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a WriteHandler.
-    ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
-    return this->get_service().async_send(this->get_implementation(),
-        buffers, 0, ASIO_MOVE_CAST(WriteHandler)(handler));
-  }
-
-  /// Start an asynchronous send on a connected socket.
-  /**
-   * This function is used to send data on the raw socket. The function call
-   * will block until the data has been sent successfully or an error occurs.
-   *
-   * @param buffers One or more data buffers to be sent on the socket. Although
-   * the buffers object may be copied as necessary, ownership of the underlying
-   * memory blocks is retained by the caller, which must guarantee that they
-   * remain valid until the handler is called.
-   *
-   * @param flags Flags specifying how the send call is to be made.
-   *
-   * @param handler The handler to be called when the send operation completes.
-   * Copies will be made of the handler as required. The function signature of
-   * the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes sent.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   *
-   * @note The async_send operation can only be used with a connected socket.
-   * Use the async_send_to function to send data on an unconnected raw
-   * socket.
-   */
-  template <typename ConstBufferSequence, typename WriteHandler>
-  ASIO_INITFN_RESULT_TYPE(WriteHandler,
-      void (asio::error_code, std::size_t))
-  async_send(const ConstBufferSequence& buffers,
-      socket_base::message_flags flags,
-      ASIO_MOVE_ARG(WriteHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a WriteHandler.
-    ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
-    return this->get_service().async_send(this->get_implementation(),
-        buffers, flags, ASIO_MOVE_CAST(WriteHandler)(handler));
-  }
-
-  /// Send raw data to the specified endpoint.
-  /**
-   * This function is used to send raw data to the specified remote endpoint.
-   * The function call will block until the data has been sent successfully or
-   * an error occurs.
-   *
-   * @param buffers One or more data buffers to be sent to the remote endpoint.
-   *
-   * @param destination The remote endpoint to which the data will be sent.
-   *
-   * @returns The number of bytes sent.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @par Example
-   * To send a single data buffer use the @ref buffer function as follows:
-   * @code
-   * asio::ip::udp::endpoint destination(
-   *     asio::ip::address::from_string("1.2.3.4"), 12345);
-   * socket.send_to(asio::buffer(data, size), destination);
-   * @endcode
-   * See the @ref buffer documentation for information on sending multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t send_to(const ConstBufferSequence& buffers,
-      const endpoint_type& destination)
-  {
-    asio::error_code ec;
-    std::size_t s = this->get_service().send_to(
-        this->get_implementation(), buffers, destination, 0, ec);
-    asio::detail::throw_error(ec, "send_to");
-    return s;
-  }
-
-  /// Send raw data to the specified endpoint.
-  /**
-   * This function is used to send raw data to the specified remote endpoint.
-   * The function call will block until the data has been sent successfully or
-   * an error occurs.
-   *
-   * @param buffers One or more data buffers to be sent to the remote endpoint.
-   *
-   * @param destination The remote endpoint to which the data will be sent.
-   *
-   * @param flags Flags specifying how the send call is to be made.
-   *
-   * @returns The number of bytes sent.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t send_to(const ConstBufferSequence& buffers,
-      const endpoint_type& destination, socket_base::message_flags flags)
-  {
-    asio::error_code ec;
-    std::size_t s = this->get_service().send_to(
-        this->get_implementation(), buffers, destination, flags, ec);
-    asio::detail::throw_error(ec, "send_to");
-    return s;
-  }
-
-  /// Send raw data to the specified endpoint.
-  /**
-   * This function is used to send raw data to the specified remote endpoint.
-   * The function call will block until the data has been sent successfully or
-   * an error occurs.
-   *
-   * @param buffers One or more data buffers to be sent to the remote endpoint.
-   *
-   * @param destination The remote endpoint to which the data will be sent.
-   *
-   * @param flags Flags specifying how the send call is to be made.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes sent.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t send_to(const ConstBufferSequence& buffers,
-      const endpoint_type& destination, socket_base::message_flags flags,
-      asio::error_code& ec)
-  {
-    return this->get_service().send_to(this->get_implementation(),
-        buffers, destination, flags, ec);
-  }
-
-  /// Start an asynchronous send.
-  /**
-   * This function is used to asynchronously send raw data to the specified
-   * remote endpoint. The function call always returns immediately.
-   *
-   * @param buffers One or more data buffers to be sent to the remote endpoint.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param destination The remote endpoint to which the data will be sent.
-   * Copies will be made of the endpoint as required.
-   *
-   * @param handler The handler to be called when the send operation completes.
-   * Copies will be made of the handler as required. The function signature of
-   * the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes sent.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   *
-   * @par Example
-   * To send a single data buffer use the @ref buffer function as follows:
-   * @code
-   * asio::ip::udp::endpoint destination(
-   *     asio::ip::address::from_string("1.2.3.4"), 12345);
-   * socket.async_send_to(
-   *     asio::buffer(data, size), destination, handler);
-   * @endcode
-   * See the @ref buffer documentation for information on sending multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename ConstBufferSequence, typename WriteHandler>
-  ASIO_INITFN_RESULT_TYPE(WriteHandler,
-      void (asio::error_code, std::size_t))
-  async_send_to(const ConstBufferSequence& buffers,
-      const endpoint_type& destination,
-      ASIO_MOVE_ARG(WriteHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a WriteHandler.
-    ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
-    return this->get_service().async_send_to(this->get_implementation(),
-        buffers, destination, 0, ASIO_MOVE_CAST(WriteHandler)(handler));
-  }
-
-  /// Start an asynchronous send.
-  /**
-   * This function is used to asynchronously send raw data to the specified
-   * remote endpoint. The function call always returns immediately.
-   *
-   * @param buffers One or more data buffers to be sent to the remote endpoint.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param flags Flags specifying how the send call is to be made.
-   *
-   * @param destination The remote endpoint to which the data will be sent.
-   * Copies will be made of the endpoint as required.
-   *
-   * @param handler The handler to be called when the send operation completes.
-   * Copies will be made of the handler as required. The function signature of
-   * the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes sent.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   */
-  template <typename ConstBufferSequence, typename WriteHandler>
-  ASIO_INITFN_RESULT_TYPE(WriteHandler,
-      void (asio::error_code, std::size_t))
-  async_send_to(const ConstBufferSequence& buffers,
-      const endpoint_type& destination, socket_base::message_flags flags,
-      ASIO_MOVE_ARG(WriteHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a WriteHandler.
-    ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
-    return this->get_service().async_send_to(
-        this->get_implementation(), buffers, destination, flags,
-        ASIO_MOVE_CAST(WriteHandler)(handler));
-  }
-
-  /// Receive some data on a connected socket.
-  /**
-   * This function is used to receive data on the raw socket. The function
-   * call will block until data has been received successfully or an error
-   * occurs.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   *
-   * @returns The number of bytes received.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note The receive operation can only be used with a connected socket. Use
-   * the receive_from function to receive data on an unconnected raw
-   * socket.
-   *
-   * @par Example
-   * To receive into a single data buffer use the @ref buffer function as
-   * follows:
-   * @code socket.receive(asio::buffer(data, size)); @endcode
-   * See the @ref buffer documentation for information on receiving into
-   * multiple buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t receive(const MutableBufferSequence& buffers)
-  {
-    asio::error_code ec;
-    std::size_t s = this->get_service().receive(
-        this->get_implementation(), buffers, 0, ec);
-    asio::detail::throw_error(ec, "receive");
-    return s;
-  }
-
-  /// Receive some data on a connected socket.
-  /**
-   * This function is used to receive data on the raw socket. The function
-   * call will block until data has been received successfully or an error
-   * occurs.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   *
-   * @param flags Flags specifying how the receive call is to be made.
-   *
-   * @returns The number of bytes received.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note The receive operation can only be used with a connected socket. Use
-   * the receive_from function to receive data on an unconnected raw
-   * socket.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t receive(const MutableBufferSequence& buffers,
-      socket_base::message_flags flags)
-  {
-    asio::error_code ec;
-    std::size_t s = this->get_service().receive(
-        this->get_implementation(), buffers, flags, ec);
-    asio::detail::throw_error(ec, "receive");
-    return s;
-  }
-
-  /// Receive some data on a connected socket.
-  /**
-   * This function is used to receive data on the raw socket. The function
-   * call will block until data has been received successfully or an error
-   * occurs.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   *
-   * @param flags Flags specifying how the receive call is to be made.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes received.
-   *
-   * @note The receive operation can only be used with a connected socket. Use
-   * the receive_from function to receive data on an unconnected raw
-   * socket.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t receive(const MutableBufferSequence& buffers,
-      socket_base::message_flags flags, asio::error_code& ec)
-  {
-    return this->get_service().receive(
-        this->get_implementation(), buffers, flags, ec);
-  }
-
-  /// Start an asynchronous receive on a connected socket.
-  /**
-   * This function is used to asynchronously receive data from the raw
-   * socket. The function call always returns immediately.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param handler The handler to be called when the receive operation
-   * completes. Copies will be made of the handler as required. The function
-   * signature of the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes received.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   *
-   * @note The async_receive operation can only be used with a connected socket.
-   * Use the async_receive_from function to receive data on an unconnected
-   * raw socket.
-   *
-   * @par Example
-   * To receive into a single data buffer use the @ref buffer function as
-   * follows:
-   * @code
-   * socket.async_receive(asio::buffer(data, size), handler);
-   * @endcode
-   * See the @ref buffer documentation for information on receiving into
-   * multiple buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence, typename ReadHandler>
-  ASIO_INITFN_RESULT_TYPE(ReadHandler,
-      void (asio::error_code, std::size_t))
-  async_receive(const MutableBufferSequence& buffers,
-      ASIO_MOVE_ARG(ReadHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a ReadHandler.
-    ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
-    return this->get_service().async_receive(this->get_implementation(),
-        buffers, 0, ASIO_MOVE_CAST(ReadHandler)(handler));
-  }
-
-  /// Start an asynchronous receive on a connected socket.
-  /**
-   * This function is used to asynchronously receive data from the raw
-   * socket. The function call always returns immediately.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param flags Flags specifying how the receive call is to be made.
-   *
-   * @param handler The handler to be called when the receive operation
-   * completes. Copies will be made of the handler as required. The function
-   * signature of the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes received.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   *
-   * @note The async_receive operation can only be used with a connected socket.
-   * Use the async_receive_from function to receive data on an unconnected
-   * raw socket.
-   */
-  template <typename MutableBufferSequence, typename ReadHandler>
-  ASIO_INITFN_RESULT_TYPE(ReadHandler,
-      void (asio::error_code, std::size_t))
-  async_receive(const MutableBufferSequence& buffers,
-      socket_base::message_flags flags,
-      ASIO_MOVE_ARG(ReadHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a ReadHandler.
-    ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
-    return this->get_service().async_receive(this->get_implementation(),
-        buffers, flags, ASIO_MOVE_CAST(ReadHandler)(handler));
-  }
-
-  /// Receive raw data with the endpoint of the sender.
-  /**
-   * This function is used to receive raw data. The function call will block
-   * until data has been received successfully or an error occurs.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   *
-   * @param sender_endpoint An endpoint object that receives the endpoint of
-   * the remote sender of the data.
-   *
-   * @returns The number of bytes received.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @par Example
-   * To receive into a single data buffer use the @ref buffer function as
-   * follows:
-   * @code
-   * asio::ip::udp::endpoint sender_endpoint;
-   * socket.receive_from(
-   *     asio::buffer(data, size), sender_endpoint);
-   * @endcode
-   * See the @ref buffer documentation for information on receiving into
-   * multiple buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t receive_from(const MutableBufferSequence& buffers,
-      endpoint_type& sender_endpoint)
-  {
-    asio::error_code ec;
-    std::size_t s = this->get_service().receive_from(
-        this->get_implementation(), buffers, sender_endpoint, 0, ec);
-    asio::detail::throw_error(ec, "receive_from");
-    return s;
-  }
-  
-  /// Receive raw data with the endpoint of the sender.
-  /**
-   * This function is used to receive raw data. The function call will block
-   * until data has been received successfully or an error occurs.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   *
-   * @param sender_endpoint An endpoint object that receives the endpoint of
-   * the remote sender of the data.
-   *
-   * @param flags Flags specifying how the receive call is to be made.
-   *
-   * @returns The number of bytes received.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t receive_from(const MutableBufferSequence& buffers,
-      endpoint_type& sender_endpoint, socket_base::message_flags flags)
-  {
-    asio::error_code ec;
-    std::size_t s = this->get_service().receive_from(
-        this->get_implementation(), buffers, sender_endpoint, flags, ec);
-    asio::detail::throw_error(ec, "receive_from");
-    return s;
-  }
-  
-  /// Receive raw data with the endpoint of the sender.
-  /**
-   * This function is used to receive raw data. The function call will block
-   * until data has been received successfully or an error occurs.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   *
-   * @param sender_endpoint An endpoint object that receives the endpoint of
-   * the remote sender of the data.
-   *
-   * @param flags Flags specifying how the receive call is to be made.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes received.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t receive_from(const MutableBufferSequence& buffers,
-      endpoint_type& sender_endpoint, socket_base::message_flags flags,
-      asio::error_code& ec)
-  {
-    return this->get_service().receive_from(this->get_implementation(),
-        buffers, sender_endpoint, flags, ec);
-  }
-
-  /// Start an asynchronous receive.
-  /**
-   * This function is used to asynchronously receive raw data. The function
-   * call always returns immediately.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param sender_endpoint An endpoint object that receives the endpoint of
-   * the remote sender of the data. Ownership of the sender_endpoint object
-   * is retained by the caller, which must guarantee that it is valid until the
-   * handler is called.
-   *
-   * @param handler The handler to be called when the receive operation
-   * completes. Copies will be made of the handler as required. The function
-   * signature of the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes received.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   *
-   * @par Example
-   * To receive into a single data buffer use the @ref buffer function as
-   * follows:
-   * @code socket.async_receive_from(
-   *     asio::buffer(data, size), 0, sender_endpoint, handler); @endcode
-   * See the @ref buffer documentation for information on receiving into
-   * multiple buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence, typename ReadHandler>
-  ASIO_INITFN_RESULT_TYPE(ReadHandler,
-      void (asio::error_code, std::size_t))
-  async_receive_from(const MutableBufferSequence& buffers,
-      endpoint_type& sender_endpoint,
-      ASIO_MOVE_ARG(ReadHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a ReadHandler.
-    ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
-    return this->get_service().async_receive_from(
-        this->get_implementation(), buffers, sender_endpoint, 0,
-        ASIO_MOVE_CAST(ReadHandler)(handler));
-  }
-
-  /// Start an asynchronous receive.
-  /**
-   * This function is used to asynchronously receive raw data. The function
-   * call always returns immediately.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param sender_endpoint An endpoint object that receives the endpoint of
-   * the remote sender of the data. Ownership of the sender_endpoint object
-   * is retained by the caller, which must guarantee that it is valid until the
-   * handler is called.
-   *
-   * @param flags Flags specifying how the receive call is to be made.
-   *
-   * @param handler The handler to be called when the receive operation
-   * completes. Copies will be made of the handler as required. The function
-   * signature of the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes received.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   */
-  template <typename MutableBufferSequence, typename ReadHandler>
-  ASIO_INITFN_RESULT_TYPE(ReadHandler,
-      void (asio::error_code, std::size_t))
-  async_receive_from(const MutableBufferSequence& buffers,
-      endpoint_type& sender_endpoint, socket_base::message_flags flags,
-      ASIO_MOVE_ARG(ReadHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a ReadHandler.
-    ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
-    return this->get_service().async_receive_from(
-        this->get_implementation(), buffers, sender_endpoint, flags,
-        ASIO_MOVE_CAST(ReadHandler)(handler));
-  }
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_BASIC_RAW_SOCKET_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_seq_packet_socket.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_seq_packet_socket.hpp
deleted file mode 100644
index a217bbf..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_seq_packet_socket.hpp
+++ /dev/null
@@ -1,565 +0,0 @@
-//
-// basic_seq_packet_socket.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_BASIC_SEQ_PACKET_SOCKET_HPP
-#define ASIO_BASIC_SEQ_PACKET_SOCKET_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cstddef>
-#include "asio/basic_socket.hpp"
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-#include "asio/seq_packet_socket_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Provides sequenced packet socket functionality.
-/**
- * The basic_seq_packet_socket class template provides asynchronous and blocking
- * sequenced packet socket functionality.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- */
-template <typename Protocol,
-    typename SeqPacketSocketService = seq_packet_socket_service<Protocol> >
-class basic_seq_packet_socket
-  : public basic_socket<Protocol, SeqPacketSocketService>
-{
-public:
-  /// (Deprecated: Use native_handle_type.) The native representation of a
-  /// socket.
-  typedef typename SeqPacketSocketService::native_handle_type native_type;
-
-  /// The native representation of a socket.
-  typedef typename SeqPacketSocketService::native_handle_type
-    native_handle_type;
-
-  /// The protocol type.
-  typedef Protocol protocol_type;
-
-  /// The endpoint type.
-  typedef typename Protocol::endpoint endpoint_type;
-
-  /// Construct a basic_seq_packet_socket without opening it.
-  /**
-   * This constructor creates a sequenced packet socket without opening it. The
-   * socket needs to be opened and then connected or accepted before data can
-   * be sent or received on it.
-   *
-   * @param io_service The io_service object that the sequenced packet socket
-   * will use to dispatch handlers for any asynchronous operations performed on
-   * the socket.
-   */
-  explicit basic_seq_packet_socket(asio::io_service& io_service)
-    : basic_socket<Protocol, SeqPacketSocketService>(io_service)
-  {
-  }
-
-  /// Construct and open a basic_seq_packet_socket.
-  /**
-   * This constructor creates and opens a sequenced_packet socket. The socket
-   * needs to be connected or accepted before data can be sent or received on
-   * it.
-   *
-   * @param io_service The io_service object that the sequenced packet socket
-   * will use to dispatch handlers for any asynchronous operations performed on
-   * the socket.
-   *
-   * @param protocol An object specifying protocol parameters to be used.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  basic_seq_packet_socket(asio::io_service& io_service,
-      const protocol_type& protocol)
-    : basic_socket<Protocol, SeqPacketSocketService>(io_service, protocol)
-  {
-  }
-
-  /// Construct a basic_seq_packet_socket, opening it and binding it to the
-  /// given local endpoint.
-  /**
-   * This constructor creates a sequenced packet socket and automatically opens
-   * it bound to the specified endpoint on the local machine. The protocol used
-   * is the protocol associated with the given endpoint.
-   *
-   * @param io_service The io_service object that the sequenced packet socket
-   * will use to dispatch handlers for any asynchronous operations performed on
-   * the socket.
-   *
-   * @param endpoint An endpoint on the local machine to which the sequenced
-   * packet socket will be bound.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  basic_seq_packet_socket(asio::io_service& io_service,
-      const endpoint_type& endpoint)
-    : basic_socket<Protocol, SeqPacketSocketService>(io_service, endpoint)
-  {
-  }
-
-  /// Construct a basic_seq_packet_socket on an existing native socket.
-  /**
-   * This constructor creates a sequenced packet socket object to hold an
-   * existing native socket.
-   *
-   * @param io_service The io_service object that the sequenced packet socket
-   * will use to dispatch handlers for any asynchronous operations performed on
-   * the socket.
-   *
-   * @param protocol An object specifying protocol parameters to be used.
-   *
-   * @param native_socket The new underlying socket implementation.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  basic_seq_packet_socket(asio::io_service& io_service,
-      const protocol_type& protocol, const native_handle_type& native_socket)
-    : basic_socket<Protocol, SeqPacketSocketService>(
-        io_service, protocol, native_socket)
-  {
-  }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-  /// Move-construct a basic_seq_packet_socket from another.
-  /**
-   * This constructor moves a sequenced packet socket from one object to
-   * another.
-   *
-   * @param other The other basic_seq_packet_socket object from which the move
-   * will occur.
-   *
-   * @note Following the move, the moved-from object is in the same state as if
-   * constructed using the @c basic_seq_packet_socket(io_service&) constructor.
-   */
-  basic_seq_packet_socket(basic_seq_packet_socket&& other)
-    : basic_socket<Protocol, SeqPacketSocketService>(
-        ASIO_MOVE_CAST(basic_seq_packet_socket)(other))
-  {
-  }
-
-  /// Move-assign a basic_seq_packet_socket from another.
-  /**
-   * This assignment operator moves a sequenced packet socket from one object to
-   * another.
-   *
-   * @param other The other basic_seq_packet_socket object from which the move
-   * will occur.
-   *
-   * @note Following the move, the moved-from object is in the same state as if
-   * constructed using the @c basic_seq_packet_socket(io_service&) constructor.
-   */
-  basic_seq_packet_socket& operator=(basic_seq_packet_socket&& other)
-  {
-    basic_socket<Protocol, SeqPacketSocketService>::operator=(
-        ASIO_MOVE_CAST(basic_seq_packet_socket)(other));
-    return *this;
-  }
-
-  /// Move-construct a basic_seq_packet_socket from a socket of another protocol
-  /// type.
-  /**
-   * This constructor moves a sequenced packet socket from one object to
-   * another.
-   *
-   * @param other The other basic_seq_packet_socket object from which the move
-   * will occur.
-   *
-   * @note Following the move, the moved-from object is in the same state as if
-   * constructed using the @c basic_seq_packet_socket(io_service&) constructor.
-   */
-  template <typename Protocol1, typename SeqPacketSocketService1>
-  basic_seq_packet_socket(
-      basic_seq_packet_socket<Protocol1, SeqPacketSocketService1>&& other,
-      typename enable_if<is_convertible<Protocol1, Protocol>::value>::type* = 0)
-    : basic_socket<Protocol, SeqPacketSocketService>(
-        ASIO_MOVE_CAST2(basic_seq_packet_socket<
-          Protocol1, SeqPacketSocketService1>)(other))
-  {
-  }
-
-  /// Move-assign a basic_seq_packet_socket from a socket of another protocol
-  /// type.
-  /**
-   * This assignment operator moves a sequenced packet socket from one object to
-   * another.
-   *
-   * @param other The other basic_seq_packet_socket object from which the move
-   * will occur.
-   *
-   * @note Following the move, the moved-from object is in the same state as if
-   * constructed using the @c basic_seq_packet_socket(io_service&) constructor.
-   */
-  template <typename Protocol1, typename SeqPacketSocketService1>
-  typename enable_if<is_convertible<Protocol1, Protocol>::value,
-      basic_seq_packet_socket>::type& operator=(
-        basic_seq_packet_socket<Protocol1, SeqPacketSocketService1>&& other)
-  {
-    basic_socket<Protocol, SeqPacketSocketService>::operator=(
-        ASIO_MOVE_CAST2(basic_seq_packet_socket<
-          Protocol1, SeqPacketSocketService1>)(other));
-    return *this;
-  }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
-  /// Send some data on the socket.
-  /**
-   * This function is used to send data on the sequenced packet socket. The
-   * function call will block until the data has been sent successfully, or an
-   * until error occurs.
-   *
-   * @param buffers One or more data buffers to be sent on the socket.
-   *
-   * @param flags Flags specifying how the send call is to be made.
-   *
-   * @returns The number of bytes sent.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @par Example
-   * To send a single data buffer use the @ref buffer function as follows:
-   * @code
-   * socket.send(asio::buffer(data, size), 0);
-   * @endcode
-   * See the @ref buffer documentation for information on sending multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t send(const ConstBufferSequence& buffers,
-      socket_base::message_flags flags)
-  {
-    asio::error_code ec;
-    std::size_t s = this->get_service().send(
-        this->get_implementation(), buffers, flags, ec);
-    asio::detail::throw_error(ec, "send");
-    return s;
-  }
-
-  /// Send some data on the socket.
-  /**
-   * This function is used to send data on the sequenced packet socket. The
-   * function call will block the data has been sent successfully, or an until
-   * error occurs.
-   *
-   * @param buffers One or more data buffers to be sent on the socket.
-   *
-   * @param flags Flags specifying how the send call is to be made.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes sent. Returns 0 if an error occurred.
-   *
-   * @note The send operation may not transmit all of the data to the peer.
-   * Consider using the @ref write function if you need to ensure that all data
-   * is written before the blocking operation completes.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t send(const ConstBufferSequence& buffers,
-      socket_base::message_flags flags, asio::error_code& ec)
-  {
-    return this->get_service().send(
-        this->get_implementation(), buffers, flags, ec);
-  }
-
-  /// Start an asynchronous send.
-  /**
-   * This function is used to asynchronously send data on the sequenced packet
-   * socket. The function call always returns immediately.
-   *
-   * @param buffers One or more data buffers to be sent on the socket. Although
-   * the buffers object may be copied as necessary, ownership of the underlying
-   * memory blocks is retained by the caller, which must guarantee that they
-   * remain valid until the handler is called.
-   *
-   * @param flags Flags specifying how the send call is to be made.
-   *
-   * @param handler The handler to be called when the send operation completes.
-   * Copies will be made of the handler as required. The function signature of
-   * the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes sent.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   *
-   * @par Example
-   * To send a single data buffer use the @ref buffer function as follows:
-   * @code
-   * socket.async_send(asio::buffer(data, size), 0, handler);
-   * @endcode
-   * See the @ref buffer documentation for information on sending multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename ConstBufferSequence, typename WriteHandler>
-  ASIO_INITFN_RESULT_TYPE(WriteHandler,
-      void (asio::error_code, std::size_t))
-  async_send(const ConstBufferSequence& buffers,
-      socket_base::message_flags flags,
-      ASIO_MOVE_ARG(WriteHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a WriteHandler.
-    ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
-    return this->get_service().async_send(this->get_implementation(),
-        buffers, flags, ASIO_MOVE_CAST(WriteHandler)(handler));
-  }
-
-  /// Receive some data on the socket.
-  /**
-   * This function is used to receive data on the sequenced packet socket. The
-   * function call will block until data has been received successfully, or
-   * until an error occurs.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   *
-   * @param out_flags After the receive call completes, contains flags
-   * associated with the received data. For example, if the
-   * socket_base::message_end_of_record bit is set then the received data marks
-   * the end of a record.
-   *
-   * @returns The number of bytes received.
-   *
-   * @throws asio::system_error Thrown on failure. An error code of
-   * asio::error::eof indicates that the connection was closed by the
-   * peer.
-   *
-   * @par Example
-   * To receive into a single data buffer use the @ref buffer function as
-   * follows:
-   * @code
-   * socket.receive(asio::buffer(data, size), out_flags);
-   * @endcode
-   * See the @ref buffer documentation for information on receiving into
-   * multiple buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t receive(const MutableBufferSequence& buffers,
-      socket_base::message_flags& out_flags)
-  {
-    asio::error_code ec;
-    std::size_t s = this->get_service().receive(
-        this->get_implementation(), buffers, 0, out_flags, ec);
-    asio::detail::throw_error(ec, "receive");
-    return s;
-  }
-
-  /// Receive some data on the socket.
-  /**
-   * This function is used to receive data on the sequenced packet socket. The
-   * function call will block until data has been received successfully, or
-   * until an error occurs.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   *
-   * @param in_flags Flags specifying how the receive call is to be made.
-   *
-   * @param out_flags After the receive call completes, contains flags
-   * associated with the received data. For example, if the
-   * socket_base::message_end_of_record bit is set then the received data marks
-   * the end of a record.
-   *
-   * @returns The number of bytes received.
-   *
-   * @throws asio::system_error Thrown on failure. An error code of
-   * asio::error::eof indicates that the connection was closed by the
-   * peer.
-   *
-   * @note The receive operation may not receive all of the requested number of
-   * bytes. Consider using the @ref read function if you need to ensure that the
-   * requested amount of data is read before the blocking operation completes.
-   *
-   * @par Example
-   * To receive into a single data buffer use the @ref buffer function as
-   * follows:
-   * @code
-   * socket.receive(asio::buffer(data, size), 0, out_flags);
-   * @endcode
-   * See the @ref buffer documentation for information on receiving into
-   * multiple buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t receive(const MutableBufferSequence& buffers,
-      socket_base::message_flags in_flags,
-      socket_base::message_flags& out_flags)
-  {
-    asio::error_code ec;
-    std::size_t s = this->get_service().receive(
-        this->get_implementation(), buffers, in_flags, out_flags, ec);
-    asio::detail::throw_error(ec, "receive");
-    return s;
-  }
-
-  /// Receive some data on a connected socket.
-  /**
-   * This function is used to receive data on the sequenced packet socket. The
-   * function call will block until data has been received successfully, or
-   * until an error occurs.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   *
-   * @param in_flags Flags specifying how the receive call is to be made.
-   *
-   * @param out_flags After the receive call completes, contains flags
-   * associated with the received data. For example, if the
-   * socket_base::message_end_of_record bit is set then the received data marks
-   * the end of a record.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes received. Returns 0 if an error occurred.
-   *
-   * @note The receive operation may not receive all of the requested number of
-   * bytes. Consider using the @ref read function if you need to ensure that the
-   * requested amount of data is read before the blocking operation completes.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t receive(const MutableBufferSequence& buffers,
-      socket_base::message_flags in_flags,
-      socket_base::message_flags& out_flags, asio::error_code& ec)
-  {
-    return this->get_service().receive(this->get_implementation(),
-        buffers, in_flags, out_flags, ec);
-  }
-
-  /// Start an asynchronous receive.
-  /**
-   * This function is used to asynchronously receive data from the sequenced
-   * packet socket. The function call always returns immediately.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param out_flags Once the asynchronous operation completes, contains flags
-   * associated with the received data. For example, if the
-   * socket_base::message_end_of_record bit is set then the received data marks
-   * the end of a record. The caller must guarantee that the referenced
-   * variable remains valid until the handler is called.
-   *
-   * @param handler The handler to be called when the receive operation
-   * completes. Copies will be made of the handler as required. The function
-   * signature of the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes received.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   *
-   * @par Example
-   * To receive into a single data buffer use the @ref buffer function as
-   * follows:
-   * @code
-   * socket.async_receive(asio::buffer(data, size), out_flags, handler);
-   * @endcode
-   * See the @ref buffer documentation for information on receiving into
-   * multiple buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence, typename ReadHandler>
-  ASIO_INITFN_RESULT_TYPE(ReadHandler,
-      void (asio::error_code, std::size_t))
-  async_receive(const MutableBufferSequence& buffers,
-      socket_base::message_flags& out_flags,
-      ASIO_MOVE_ARG(ReadHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a ReadHandler.
-    ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
-    return this->get_service().async_receive(
-        this->get_implementation(), buffers, 0, out_flags,
-        ASIO_MOVE_CAST(ReadHandler)(handler));
-  }
-
-  /// Start an asynchronous receive.
-  /**
-   * This function is used to asynchronously receive data from the sequenced
-   * data socket. The function call always returns immediately.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param in_flags Flags specifying how the receive call is to be made.
-   *
-   * @param out_flags Once the asynchronous operation completes, contains flags
-   * associated with the received data. For example, if the
-   * socket_base::message_end_of_record bit is set then the received data marks
-   * the end of a record. The caller must guarantee that the referenced
-   * variable remains valid until the handler is called.
-   *
-   * @param handler The handler to be called when the receive operation
-   * completes. Copies will be made of the handler as required. The function
-   * signature of the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes received.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   *
-   * @par Example
-   * To receive into a single data buffer use the @ref buffer function as
-   * follows:
-   * @code
-   * socket.async_receive(
-   *     asio::buffer(data, size),
-   *     0, out_flags, handler);
-   * @endcode
-   * See the @ref buffer documentation for information on receiving into
-   * multiple buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence, typename ReadHandler>
-  ASIO_INITFN_RESULT_TYPE(ReadHandler,
-      void (asio::error_code, std::size_t))
-  async_receive(const MutableBufferSequence& buffers,
-      socket_base::message_flags in_flags,
-      socket_base::message_flags& out_flags,
-      ASIO_MOVE_ARG(ReadHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a ReadHandler.
-    ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
-    return this->get_service().async_receive(
-        this->get_implementation(), buffers, in_flags, out_flags,
-        ASIO_MOVE_CAST(ReadHandler)(handler));
-  }
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_BASIC_SEQ_PACKET_SOCKET_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_serial_port.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_serial_port.hpp
deleted file mode 100644
index ab170e5..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_serial_port.hpp
+++ /dev/null
@@ -1,695 +0,0 @@
-//
-// basic_serial_port.hpp
-// ~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_BASIC_SERIAL_PORT_HPP
-#define ASIO_BASIC_SERIAL_PORT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_SERIAL_PORT) \
-  || defined(GENERATING_DOCUMENTATION)
-
-#include <string>
-#include "asio/basic_io_object.hpp"
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-#include "asio/serial_port_base.hpp"
-#include "asio/serial_port_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Provides serial port functionality.
-/**
- * The basic_serial_port class template provides functionality that is common
- * to all serial ports.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- */
-template <typename SerialPortService = serial_port_service>
-class basic_serial_port
-  : public basic_io_object<SerialPortService>,
-    public serial_port_base
-{
-public:
-  /// (Deprecated: Use native_handle_type.) The native representation of a
-  /// serial port.
-  typedef typename SerialPortService::native_handle_type native_type;
-
-  /// The native representation of a serial port.
-  typedef typename SerialPortService::native_handle_type native_handle_type;
-
-  /// A basic_serial_port is always the lowest layer.
-  typedef basic_serial_port<SerialPortService> lowest_layer_type;
-
-  /// Construct a basic_serial_port without opening it.
-  /**
-   * This constructor creates a serial port without opening it.
-   *
-   * @param io_service The io_service object that the serial port will use to
-   * dispatch handlers for any asynchronous operations performed on the port.
-   */
-  explicit basic_serial_port(asio::io_service& io_service)
-    : basic_io_object<SerialPortService>(io_service)
-  {
-  }
-
-  /// Construct and open a basic_serial_port.
-  /**
-   * This constructor creates and opens a serial port for the specified device
-   * name.
-   *
-   * @param io_service The io_service object that the serial port will use to
-   * dispatch handlers for any asynchronous operations performed on the port.
-   *
-   * @param device The platform-specific device name for this serial
-   * port.
-   */
-  explicit basic_serial_port(asio::io_service& io_service,
-      const char* device)
-    : basic_io_object<SerialPortService>(io_service)
-  {
-    asio::error_code ec;
-    this->get_service().open(this->get_implementation(), device, ec);
-    asio::detail::throw_error(ec, "open");
-  }
-
-  /// Construct and open a basic_serial_port.
-  /**
-   * This constructor creates and opens a serial port for the specified device
-   * name.
-   *
-   * @param io_service The io_service object that the serial port will use to
-   * dispatch handlers for any asynchronous operations performed on the port.
-   *
-   * @param device The platform-specific device name for this serial
-   * port.
-   */
-  explicit basic_serial_port(asio::io_service& io_service,
-      const std::string& device)
-    : basic_io_object<SerialPortService>(io_service)
-  {
-    asio::error_code ec;
-    this->get_service().open(this->get_implementation(), device, ec);
-    asio::detail::throw_error(ec, "open");
-  }
-
-  /// Construct a basic_serial_port on an existing native serial port.
-  /**
-   * This constructor creates a serial port object to hold an existing native
-   * serial port.
-   *
-   * @param io_service The io_service object that the serial port will use to
-   * dispatch handlers for any asynchronous operations performed on the port.
-   *
-   * @param native_serial_port A native serial port.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  basic_serial_port(asio::io_service& io_service,
-      const native_handle_type& native_serial_port)
-    : basic_io_object<SerialPortService>(io_service)
-  {
-    asio::error_code ec;
-    this->get_service().assign(this->get_implementation(),
-        native_serial_port, ec);
-    asio::detail::throw_error(ec, "assign");
-  }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-  /// Move-construct a basic_serial_port from another.
-  /**
-   * This constructor moves a serial port from one object to another.
-   *
-   * @param other The other basic_serial_port object from which the move will
-   * occur.
-   *
-   * @note Following the move, the moved-from object is in the same state as if
-   * constructed using the @c basic_serial_port(io_service&) constructor.
-   */
-  basic_serial_port(basic_serial_port&& other)
-    : basic_io_object<SerialPortService>(
-        ASIO_MOVE_CAST(basic_serial_port)(other))
-  {
-  }
-
-  /// Move-assign a basic_serial_port from another.
-  /**
-   * This assignment operator moves a serial port from one object to another.
-   *
-   * @param other The other basic_serial_port object from which the move will
-   * occur.
-   *
-   * @note Following the move, the moved-from object is in the same state as if
-   * constructed using the @c basic_serial_port(io_service&) constructor.
-   */
-  basic_serial_port& operator=(basic_serial_port&& other)
-  {
-    basic_io_object<SerialPortService>::operator=(
-        ASIO_MOVE_CAST(basic_serial_port)(other));
-    return *this;
-  }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
-  /// Get a reference to the lowest layer.
-  /**
-   * This function returns a reference to the lowest layer in a stack of
-   * layers. Since a basic_serial_port cannot contain any further layers, it
-   * simply returns a reference to itself.
-   *
-   * @return A reference to the lowest layer in the stack of layers. Ownership
-   * is not transferred to the caller.
-   */
-  lowest_layer_type& lowest_layer()
-  {
-    return *this;
-  }
-
-  /// Get a const reference to the lowest layer.
-  /**
-   * This function returns a const reference to the lowest layer in a stack of
-   * layers. Since a basic_serial_port cannot contain any further layers, it
-   * simply returns a reference to itself.
-   *
-   * @return A const reference to the lowest layer in the stack of layers.
-   * Ownership is not transferred to the caller.
-   */
-  const lowest_layer_type& lowest_layer() const
-  {
-    return *this;
-  }
-
-  /// Open the serial port using the specified device name.
-  /**
-   * This function opens the serial port for the specified device name.
-   *
-   * @param device The platform-specific device name.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  void open(const std::string& device)
-  {
-    asio::error_code ec;
-    this->get_service().open(this->get_implementation(), device, ec);
-    asio::detail::throw_error(ec, "open");
-  }
-
-  /// Open the serial port using the specified device name.
-  /**
-   * This function opens the serial port using the given platform-specific
-   * device name.
-   *
-   * @param device The platform-specific device name.
-   *
-   * @param ec Set the indicate what error occurred, if any.
-   */
-  asio::error_code open(const std::string& device,
-      asio::error_code& ec)
-  {
-    return this->get_service().open(this->get_implementation(), device, ec);
-  }
-
-  /// Assign an existing native serial port to the serial port.
-  /*
-   * This function opens the serial port to hold an existing native serial port.
-   *
-   * @param native_serial_port A native serial port.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  void assign(const native_handle_type& native_serial_port)
-  {
-    asio::error_code ec;
-    this->get_service().assign(this->get_implementation(),
-        native_serial_port, ec);
-    asio::detail::throw_error(ec, "assign");
-  }
-
-  /// Assign an existing native serial port to the serial port.
-  /*
-   * This function opens the serial port to hold an existing native serial port.
-   *
-   * @param native_serial_port A native serial port.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   */
-  asio::error_code assign(const native_handle_type& native_serial_port,
-      asio::error_code& ec)
-  {
-    return this->get_service().assign(this->get_implementation(),
-        native_serial_port, ec);
-  }
-
-  /// Determine whether the serial port is open.
-  bool is_open() const
-  {
-    return this->get_service().is_open(this->get_implementation());
-  }
-
-  /// Close the serial port.
-  /**
-   * This function is used to close the serial port. Any asynchronous read or
-   * write operations will be cancelled immediately, and will complete with the
-   * asio::error::operation_aborted error.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  void close()
-  {
-    asio::error_code ec;
-    this->get_service().close(this->get_implementation(), ec);
-    asio::detail::throw_error(ec, "close");
-  }
-
-  /// Close the serial port.
-  /**
-   * This function is used to close the serial port. Any asynchronous read or
-   * write operations will be cancelled immediately, and will complete with the
-   * asio::error::operation_aborted error.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   */
-  asio::error_code close(asio::error_code& ec)
-  {
-    return this->get_service().close(this->get_implementation(), ec);
-  }
-
-  /// (Deprecated: Use native_handle().) Get the native serial port
-  /// representation.
-  /**
-   * This function may be used to obtain the underlying representation of the
-   * serial port. This is intended to allow access to native serial port
-   * functionality that is not otherwise provided.
-   */
-  native_type native()
-  {
-    return this->get_service().native_handle(this->get_implementation());
-  }
-
-  /// Get the native serial port representation.
-  /**
-   * This function may be used to obtain the underlying representation of the
-   * serial port. This is intended to allow access to native serial port
-   * functionality that is not otherwise provided.
-   */
-  native_handle_type native_handle()
-  {
-    return this->get_service().native_handle(this->get_implementation());
-  }
-
-  /// Cancel all asynchronous operations associated with the serial port.
-  /**
-   * This function causes all outstanding asynchronous read or write operations
-   * to finish immediately, and the handlers for cancelled operations will be
-   * passed the asio::error::operation_aborted error.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  void cancel()
-  {
-    asio::error_code ec;
-    this->get_service().cancel(this->get_implementation(), ec);
-    asio::detail::throw_error(ec, "cancel");
-  }
-
-  /// Cancel all asynchronous operations associated with the serial port.
-  /**
-   * This function causes all outstanding asynchronous read or write operations
-   * to finish immediately, and the handlers for cancelled operations will be
-   * passed the asio::error::operation_aborted error.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   */
-  asio::error_code cancel(asio::error_code& ec)
-  {
-    return this->get_service().cancel(this->get_implementation(), ec);
-  }
-
-  /// Send a break sequence to the serial port.
-  /**
-   * This function causes a break sequence of platform-specific duration to be
-   * sent out the serial port.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  void send_break()
-  {
-    asio::error_code ec;
-    this->get_service().send_break(this->get_implementation(), ec);
-    asio::detail::throw_error(ec, "send_break");
-  }
-
-  /// Send a break sequence to the serial port.
-  /**
-   * This function causes a break sequence of platform-specific duration to be
-   * sent out the serial port.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   */
-  asio::error_code send_break(asio::error_code& ec)
-  {
-    return this->get_service().send_break(this->get_implementation(), ec);
-  }
-
-  /// Set an option on the serial port.
-  /**
-   * This function is used to set an option on the serial port.
-   *
-   * @param option The option value to be set on the serial port.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @sa SettableSerialPortOption @n
-   * asio::serial_port_base::baud_rate @n
-   * asio::serial_port_base::flow_control @n
-   * asio::serial_port_base::parity @n
-   * asio::serial_port_base::stop_bits @n
-   * asio::serial_port_base::character_size
-   */
-  template <typename SettableSerialPortOption>
-  void set_option(const SettableSerialPortOption& option)
-  {
-    asio::error_code ec;
-    this->get_service().set_option(this->get_implementation(), option, ec);
-    asio::detail::throw_error(ec, "set_option");
-  }
-
-  /// Set an option on the serial port.
-  /**
-   * This function is used to set an option on the serial port.
-   *
-   * @param option The option value to be set on the serial port.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @sa SettableSerialPortOption @n
-   * asio::serial_port_base::baud_rate @n
-   * asio::serial_port_base::flow_control @n
-   * asio::serial_port_base::parity @n
-   * asio::serial_port_base::stop_bits @n
-   * asio::serial_port_base::character_size
-   */
-  template <typename SettableSerialPortOption>
-  asio::error_code set_option(const SettableSerialPortOption& option,
-      asio::error_code& ec)
-  {
-    return this->get_service().set_option(
-        this->get_implementation(), option, ec);
-  }
-
-  /// Get an option from the serial port.
-  /**
-   * This function is used to get the current value of an option on the serial
-   * port.
-   *
-   * @param option The option value to be obtained from the serial port.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @sa GettableSerialPortOption @n
-   * asio::serial_port_base::baud_rate @n
-   * asio::serial_port_base::flow_control @n
-   * asio::serial_port_base::parity @n
-   * asio::serial_port_base::stop_bits @n
-   * asio::serial_port_base::character_size
-   */
-  template <typename GettableSerialPortOption>
-  void get_option(GettableSerialPortOption& option)
-  {
-    asio::error_code ec;
-    this->get_service().get_option(this->get_implementation(), option, ec);
-    asio::detail::throw_error(ec, "get_option");
-  }
-
-  /// Get an option from the serial port.
-  /**
-   * This function is used to get the current value of an option on the serial
-   * port.
-   *
-   * @param option The option value to be obtained from the serial port.
-   *
-   * @param ec Set to indicate what error occured, if any.
-   *
-   * @sa GettableSerialPortOption @n
-   * asio::serial_port_base::baud_rate @n
-   * asio::serial_port_base::flow_control @n
-   * asio::serial_port_base::parity @n
-   * asio::serial_port_base::stop_bits @n
-   * asio::serial_port_base::character_size
-   */
-  template <typename GettableSerialPortOption>
-  asio::error_code get_option(GettableSerialPortOption& option,
-      asio::error_code& ec)
-  {
-    return this->get_service().get_option(
-        this->get_implementation(), option, ec);
-  }
-
-  /// Write some data to the serial port.
-  /**
-   * This function is used to write data to the serial port. The function call
-   * will block until one or more bytes of the data has been written
-   * successfully, or until an error occurs.
-   *
-   * @param buffers One or more data buffers to be written to the serial port.
-   *
-   * @returns The number of bytes written.
-   *
-   * @throws asio::system_error Thrown on failure. An error code of
-   * asio::error::eof indicates that the connection was closed by the
-   * peer.
-   *
-   * @note The write_some operation may not transmit all of the data to the
-   * peer. Consider using the @ref write function if you need to ensure that
-   * all data is written before the blocking operation completes.
-   *
-   * @par Example
-   * To write a single data buffer use the @ref buffer function as follows:
-   * @code
-   * serial_port.write_some(asio::buffer(data, size));
-   * @endcode
-   * See the @ref buffer documentation for information on writing multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t write_some(const ConstBufferSequence& buffers)
-  {
-    asio::error_code ec;
-    std::size_t s = this->get_service().write_some(
-        this->get_implementation(), buffers, ec);
-    asio::detail::throw_error(ec, "write_some");
-    return s;
-  }
-
-  /// Write some data to the serial port.
-  /**
-   * This function is used to write data to the serial port. The function call
-   * will block until one or more bytes of the data has been written
-   * successfully, or until an error occurs.
-   *
-   * @param buffers One or more data buffers to be written to the serial port.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes written. Returns 0 if an error occurred.
-   *
-   * @note The write_some operation may not transmit all of the data to the
-   * peer. Consider using the @ref write function if you need to ensure that
-   * all data is written before the blocking operation completes.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t write_some(const ConstBufferSequence& buffers,
-      asio::error_code& ec)
-  {
-    return this->get_service().write_some(
-        this->get_implementation(), buffers, ec);
-  }
-
-  /// Start an asynchronous write.
-  /**
-   * This function is used to asynchronously write data to the serial port.
-   * The function call always returns immediately.
-   *
-   * @param buffers One or more data buffers to be written to the serial port.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param handler The handler to be called when the write operation completes.
-   * Copies will be made of the handler as required. The function signature of
-   * the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes written.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   *
-   * @note The write operation may not transmit all of the data to the peer.
-   * Consider using the @ref async_write function if you need to ensure that all
-   * data is written before the asynchronous operation completes.
-   *
-   * @par Example
-   * To write a single data buffer use the @ref buffer function as follows:
-   * @code
-   * serial_port.async_write_some(asio::buffer(data, size), handler);
-   * @endcode
-   * See the @ref buffer documentation for information on writing multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename ConstBufferSequence, typename WriteHandler>
-  ASIO_INITFN_RESULT_TYPE(WriteHandler,
-      void (asio::error_code, std::size_t))
-  async_write_some(const ConstBufferSequence& buffers,
-      ASIO_MOVE_ARG(WriteHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a WriteHandler.
-    ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
-    return this->get_service().async_write_some(this->get_implementation(),
-        buffers, ASIO_MOVE_CAST(WriteHandler)(handler));
-  }
-
-  /// Read some data from the serial port.
-  /**
-   * This function is used to read data from the serial port. The function
-   * call will block until one or more bytes of data has been read successfully,
-   * or until an error occurs.
-   *
-   * @param buffers One or more buffers into which the data will be read.
-   *
-   * @returns The number of bytes read.
-   *
-   * @throws asio::system_error Thrown on failure. An error code of
-   * asio::error::eof indicates that the connection was closed by the
-   * peer.
-   *
-   * @note The read_some operation may not read all of the requested number of
-   * bytes. Consider using the @ref read function if you need to ensure that
-   * the requested amount of data is read before the blocking operation
-   * completes.
-   *
-   * @par Example
-   * To read into a single data buffer use the @ref buffer function as follows:
-   * @code
-   * serial_port.read_some(asio::buffer(data, size));
-   * @endcode
-   * See the @ref buffer documentation for information on reading into multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t read_some(const MutableBufferSequence& buffers)
-  {
-    asio::error_code ec;
-    std::size_t s = this->get_service().read_some(
-        this->get_implementation(), buffers, ec);
-    asio::detail::throw_error(ec, "read_some");
-    return s;
-  }
-
-  /// Read some data from the serial port.
-  /**
-   * This function is used to read data from the serial port. The function
-   * call will block until one or more bytes of data has been read successfully,
-   * or until an error occurs.
-   *
-   * @param buffers One or more buffers into which the data will be read.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes read. Returns 0 if an error occurred.
-   *
-   * @note The read_some operation may not read all of the requested number of
-   * bytes. Consider using the @ref read function if you need to ensure that
-   * the requested amount of data is read before the blocking operation
-   * completes.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t read_some(const MutableBufferSequence& buffers,
-      asio::error_code& ec)
-  {
-    return this->get_service().read_some(
-        this->get_implementation(), buffers, ec);
-  }
-
-  /// Start an asynchronous read.
-  /**
-   * This function is used to asynchronously read data from the serial port.
-   * The function call always returns immediately.
-   *
-   * @param buffers One or more buffers into which the data will be read.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param handler The handler to be called when the read operation completes.
-   * Copies will be made of the handler as required. The function signature of
-   * the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes read.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   *
-   * @note The read operation may not read all of the requested number of bytes.
-   * Consider using the @ref async_read function if you need to ensure that the
-   * requested amount of data is read before the asynchronous operation
-   * completes.
-   *
-   * @par Example
-   * To read into a single data buffer use the @ref buffer function as follows:
-   * @code
-   * serial_port.async_read_some(asio::buffer(data, size), handler);
-   * @endcode
-   * See the @ref buffer documentation for information on reading into multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence, typename ReadHandler>
-  ASIO_INITFN_RESULT_TYPE(ReadHandler,
-      void (asio::error_code, std::size_t))
-  async_read_some(const MutableBufferSequence& buffers,
-      ASIO_MOVE_ARG(ReadHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a ReadHandler.
-    ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
-    return this->get_service().async_read_some(this->get_implementation(),
-        buffers, ASIO_MOVE_CAST(ReadHandler)(handler));
-  }
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_SERIAL_PORT)
-       //   || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_BASIC_SERIAL_PORT_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_signal_set.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_signal_set.hpp
deleted file mode 100644
index bc54980..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_signal_set.hpp
+++ /dev/null
@@ -1,384 +0,0 @@
-//
-// basic_signal_set.hpp
-// ~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_BASIC_SIGNAL_SET_HPP
-#define ASIO_BASIC_SIGNAL_SET_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#include "asio/basic_io_object.hpp"
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-#include "asio/signal_set_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Provides signal functionality.
-/**
- * The basic_signal_set class template provides the ability to perform an
- * asynchronous wait for one or more signals to occur.
- *
- * Most applications will use the asio::signal_set typedef.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- *
- * @par Example
- * Performing an asynchronous wait:
- * @code
- * void handler(
- *     const asio::error_code& error,
- *     int signal_number)
- * {
- *   if (!error)
- *   {
- *     // A signal occurred.
- *   }
- * }
- *
- * ...
- *
- * // Construct a signal set registered for process termination.
- * asio::signal_set signals(io_service, SIGINT, SIGTERM);
- *
- * // Start an asynchronous wait for one of the signals to occur.
- * signals.async_wait(handler);
- * @endcode
- *
- * @par Queueing of signal notifications
- *
- * If a signal is registered with a signal_set, and the signal occurs when
- * there are no waiting handlers, then the signal notification is queued. The
- * next async_wait operation on that signal_set will dequeue the notification.
- * If multiple notifications are queued, subsequent async_wait operations
- * dequeue them one at a time. Signal notifications are dequeued in order of
- * ascending signal number.
- *
- * If a signal number is removed from a signal_set (using the @c remove or @c
- * erase member functions) then any queued notifications for that signal are
- * discarded.
- *
- * @par Multiple registration of signals
- *
- * The same signal number may be registered with different signal_set objects.
- * When the signal occurs, one handler is called for each signal_set object.
- *
- * Note that multiple registration only works for signals that are registered
- * using Asio. The application must not also register a signal handler using
- * functions such as @c signal() or @c sigaction().
- *
- * @par Signal masking on POSIX platforms
- *
- * POSIX allows signals to be blocked using functions such as @c sigprocmask()
- * and @c pthread_sigmask(). For signals to be delivered, programs must ensure
- * that any signals registered using signal_set objects are unblocked in at
- * least one thread.
- */
-template <typename SignalSetService = signal_set_service>
-class basic_signal_set
-  : public basic_io_object<SignalSetService>
-{
-public:
-  /// Construct a signal set without adding any signals.
-  /**
-   * This constructor creates a signal set without registering for any signals.
-   *
-   * @param io_service The io_service object that the signal set will use to
-   * dispatch handlers for any asynchronous operations performed on the set.
-   */
-  explicit basic_signal_set(asio::io_service& io_service)
-    : basic_io_object<SignalSetService>(io_service)
-  {
-  }
-
-  /// Construct a signal set and add one signal.
-  /**
-   * This constructor creates a signal set and registers for one signal.
-   *
-   * @param io_service The io_service object that the signal set will use to
-   * dispatch handlers for any asynchronous operations performed on the set.
-   *
-   * @param signal_number_1 The signal number to be added.
-   *
-   * @note This constructor is equivalent to performing:
-   * @code asio::signal_set signals(io_service);
-   * signals.add(signal_number_1); @endcode
-   */
-  basic_signal_set(asio::io_service& io_service, int signal_number_1)
-    : basic_io_object<SignalSetService>(io_service)
-  {
-    asio::error_code ec;
-    this->service.add(this->implementation, signal_number_1, ec);
-    asio::detail::throw_error(ec, "add");
-  }
-
-  /// Construct a signal set and add two signals.
-  /**
-   * This constructor creates a signal set and registers for two signals.
-   *
-   * @param io_service The io_service object that the signal set will use to
-   * dispatch handlers for any asynchronous operations performed on the set.
-   *
-   * @param signal_number_1 The first signal number to be added.
-   *
-   * @param signal_number_2 The second signal number to be added.
-   *
-   * @note This constructor is equivalent to performing:
-   * @code asio::signal_set signals(io_service);
-   * signals.add(signal_number_1);
-   * signals.add(signal_number_2); @endcode
-   */
-  basic_signal_set(asio::io_service& io_service, int signal_number_1,
-      int signal_number_2)
-    : basic_io_object<SignalSetService>(io_service)
-  {
-    asio::error_code ec;
-    this->service.add(this->implementation, signal_number_1, ec);
-    asio::detail::throw_error(ec, "add");
-    this->service.add(this->implementation, signal_number_2, ec);
-    asio::detail::throw_error(ec, "add");
-  }
-
-  /// Construct a signal set and add three signals.
-  /**
-   * This constructor creates a signal set and registers for three signals.
-   *
-   * @param io_service The io_service object that the signal set will use to
-   * dispatch handlers for any asynchronous operations performed on the set.
-   *
-   * @param signal_number_1 The first signal number to be added.
-   *
-   * @param signal_number_2 The second signal number to be added.
-   *
-   * @param signal_number_3 The third signal number to be added.
-   *
-   * @note This constructor is equivalent to performing:
-   * @code asio::signal_set signals(io_service);
-   * signals.add(signal_number_1);
-   * signals.add(signal_number_2);
-   * signals.add(signal_number_3); @endcode
-   */
-  basic_signal_set(asio::io_service& io_service, int signal_number_1,
-      int signal_number_2, int signal_number_3)
-    : basic_io_object<SignalSetService>(io_service)
-  {
-    asio::error_code ec;
-    this->service.add(this->implementation, signal_number_1, ec);
-    asio::detail::throw_error(ec, "add");
-    this->service.add(this->implementation, signal_number_2, ec);
-    asio::detail::throw_error(ec, "add");
-    this->service.add(this->implementation, signal_number_3, ec);
-    asio::detail::throw_error(ec, "add");
-  }
-
-  /// Add a signal to a signal_set.
-  /**
-   * This function adds the specified signal to the set. It has no effect if the
-   * signal is already in the set.
-   *
-   * @param signal_number The signal to be added to the set.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  void add(int signal_number)
-  {
-    asio::error_code ec;
-    this->service.add(this->implementation, signal_number, ec);
-    asio::detail::throw_error(ec, "add");
-  }
-
-  /// Add a signal to a signal_set.
-  /**
-   * This function adds the specified signal to the set. It has no effect if the
-   * signal is already in the set.
-   *
-   * @param signal_number The signal to be added to the set.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   */
-  asio::error_code add(int signal_number,
-      asio::error_code& ec)
-  {
-    return this->service.add(this->implementation, signal_number, ec);
-  }
-
-  /// Remove a signal from a signal_set.
-  /**
-   * This function removes the specified signal from the set. It has no effect
-   * if the signal is not in the set.
-   *
-   * @param signal_number The signal to be removed from the set.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note Removes any notifications that have been queued for the specified
-   * signal number.
-   */
-  void remove(int signal_number)
-  {
-    asio::error_code ec;
-    this->service.remove(this->implementation, signal_number, ec);
-    asio::detail::throw_error(ec, "remove");
-  }
-
-  /// Remove a signal from a signal_set.
-  /**
-   * This function removes the specified signal from the set. It has no effect
-   * if the signal is not in the set.
-   *
-   * @param signal_number The signal to be removed from the set.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @note Removes any notifications that have been queued for the specified
-   * signal number.
-   */
-  asio::error_code remove(int signal_number,
-      asio::error_code& ec)
-  {
-    return this->service.remove(this->implementation, signal_number, ec);
-  }
-
-  /// Remove all signals from a signal_set.
-  /**
-   * This function removes all signals from the set. It has no effect if the set
-   * is already empty.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note Removes all queued notifications.
-   */
-  void clear()
-  {
-    asio::error_code ec;
-    this->service.clear(this->implementation, ec);
-    asio::detail::throw_error(ec, "clear");
-  }
-
-  /// Remove all signals from a signal_set.
-  /**
-   * This function removes all signals from the set. It has no effect if the set
-   * is already empty.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @note Removes all queued notifications.
-   */
-  asio::error_code clear(asio::error_code& ec)
-  {
-    return this->service.clear(this->implementation, ec);
-  }
-
-  /// Cancel all operations associated with the signal set.
-  /**
-   * This function forces the completion of any pending asynchronous wait
-   * operations against the signal set. The handler for each cancelled
-   * operation will be invoked with the asio::error::operation_aborted
-   * error code.
-   *
-   * Cancellation does not alter the set of registered signals.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note If a registered signal occurred before cancel() is called, then the
-   * handlers for asynchronous wait operations will:
-   *
-   * @li have already been invoked; or
-   *
-   * @li have been queued for invocation in the near future.
-   *
-   * These handlers can no longer be cancelled, and therefore are passed an
-   * error code that indicates the successful completion of the wait operation.
-   */
-  void cancel()
-  {
-    asio::error_code ec;
-    this->service.cancel(this->implementation, ec);
-    asio::detail::throw_error(ec, "cancel");
-  }
-
-  /// Cancel all operations associated with the signal set.
-  /**
-   * This function forces the completion of any pending asynchronous wait
-   * operations against the signal set. The handler for each cancelled
-   * operation will be invoked with the asio::error::operation_aborted
-   * error code.
-   *
-   * Cancellation does not alter the set of registered signals.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @note If a registered signal occurred before cancel() is called, then the
-   * handlers for asynchronous wait operations will:
-   *
-   * @li have already been invoked; or
-   *
-   * @li have been queued for invocation in the near future.
-   *
-   * These handlers can no longer be cancelled, and therefore are passed an
-   * error code that indicates the successful completion of the wait operation.
-   */
-  asio::error_code cancel(asio::error_code& ec)
-  {
-    return this->service.cancel(this->implementation, ec);
-  }
-
-  /// Start an asynchronous operation to wait for a signal to be delivered.
-  /**
-   * This function may be used to initiate an asynchronous wait against the
-   * signal set. It always returns immediately.
-   *
-   * For each call to async_wait(), the supplied handler will be called exactly
-   * once. The handler will be called when:
-   *
-   * @li One of the registered signals in the signal set occurs; or
-   *
-   * @li The signal set was cancelled, in which case the handler is passed the
-   * error code asio::error::operation_aborted.
-   *
-   * @param handler The handler to be called when the signal occurs. Copies
-   * will be made of the handler as required. The function signature of the
-   * handler must be:
-   * @code void handler(
-   *   const asio::error_code& error, // Result of operation.
-   *   int signal_number // Indicates which signal occurred.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   */
-  template <typename SignalHandler>
-  ASIO_INITFN_RESULT_TYPE(SignalHandler,
-      void (asio::error_code, int))
-  async_wait(ASIO_MOVE_ARG(SignalHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a SignalHandler.
-    ASIO_SIGNAL_HANDLER_CHECK(SignalHandler, handler) type_check;
-
-    return this->service.async_wait(this->implementation,
-        ASIO_MOVE_CAST(SignalHandler)(handler));
-  }
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_BASIC_SIGNAL_SET_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_socket.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_socket.hpp
deleted file mode 100644
index d080bdb..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_socket.hpp
+++ /dev/null
@@ -1,1518 +0,0 @@
-//
-// basic_socket.hpp
-// ~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_BASIC_SOCKET_HPP
-#define ASIO_BASIC_SOCKET_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/async_result.hpp"
-#include "asio/basic_io_object.hpp"
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/detail/type_traits.hpp"
-#include "asio/error.hpp"
-#include "asio/socket_base.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Provides socket functionality.
-/**
- * The basic_socket class template provides functionality that is common to both
- * stream-oriented and datagram-oriented sockets.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- */
-template <typename Protocol, typename SocketService>
-class basic_socket
-  : public basic_io_object<SocketService>,
-    public socket_base
-{
-public:
-  /// (Deprecated: Use native_handle_type.) The native representation of a
-  /// socket.
-  typedef typename SocketService::native_handle_type native_type;
-
-  /// The native representation of a socket.
-  typedef typename SocketService::native_handle_type native_handle_type;
-
-  /// The protocol type.
-  typedef Protocol protocol_type;
-
-  /// The endpoint type.
-  typedef typename Protocol::endpoint endpoint_type;
-
-  /// A basic_socket is always the lowest layer.
-  typedef basic_socket<Protocol, SocketService> lowest_layer_type;
-
-  /// Construct a basic_socket without opening it.
-  /**
-   * This constructor creates a socket without opening it.
-   *
-   * @param io_service The io_service object that the socket will use to
-   * dispatch handlers for any asynchronous operations performed on the socket.
-   */
-  explicit basic_socket(asio::io_service& io_service)
-    : basic_io_object<SocketService>(io_service)
-  {
-  }
-
-  /// Construct and open a basic_socket.
-  /**
-   * This constructor creates and opens a socket.
-   *
-   * @param io_service The io_service object that the socket will use to
-   * dispatch handlers for any asynchronous operations performed on the socket.
-   *
-   * @param protocol An object specifying protocol parameters to be used.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  basic_socket(asio::io_service& io_service,
-      const protocol_type& protocol)
-    : basic_io_object<SocketService>(io_service)
-  {
-    asio::error_code ec;
-    this->get_service().open(this->get_implementation(), protocol, ec);
-    asio::detail::throw_error(ec, "open");
-  }
-
-  /// Construct a basic_socket, opening it and binding it to the given local
-  /// endpoint.
-  /**
-   * This constructor creates a socket and automatically opens it bound to the
-   * specified endpoint on the local machine. The protocol used is the protocol
-   * associated with the given endpoint.
-   *
-   * @param io_service The io_service object that the socket will use to
-   * dispatch handlers for any asynchronous operations performed on the socket.
-   *
-   * @param endpoint An endpoint on the local machine to which the socket will
-   * be bound.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  basic_socket(asio::io_service& io_service,
-      const endpoint_type& endpoint)
-    : basic_io_object<SocketService>(io_service)
-  {
-    asio::error_code ec;
-    const protocol_type protocol = endpoint.protocol();
-    this->get_service().open(this->get_implementation(), protocol, ec);
-    asio::detail::throw_error(ec, "open");
-    this->get_service().bind(this->get_implementation(), endpoint, ec);
-    asio::detail::throw_error(ec, "bind");
-  }
-
-  /// Construct a basic_socket on an existing native socket.
-  /**
-   * This constructor creates a socket object to hold an existing native socket.
-   *
-   * @param io_service The io_service object that the socket will use to
-   * dispatch handlers for any asynchronous operations performed on the socket.
-   *
-   * @param protocol An object specifying protocol parameters to be used.
-   *
-   * @param native_socket A native socket.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  basic_socket(asio::io_service& io_service,
-      const protocol_type& protocol, const native_handle_type& native_socket)
-    : basic_io_object<SocketService>(io_service)
-  {
-    asio::error_code ec;
-    this->get_service().assign(this->get_implementation(),
-        protocol, native_socket, ec);
-    asio::detail::throw_error(ec, "assign");
-  }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-  /// Move-construct a basic_socket from another.
-  /**
-   * This constructor moves a socket from one object to another.
-   *
-   * @param other The other basic_socket object from which the move will
-   * occur.
-   *
-   * @note Following the move, the moved-from object is in the same state as if
-   * constructed using the @c basic_socket(io_service&) constructor.
-   */
-  basic_socket(basic_socket&& other)
-    : basic_io_object<SocketService>(
-        ASIO_MOVE_CAST(basic_socket)(other))
-  {
-  }
-
-  /// Move-assign a basic_socket from another.
-  /**
-   * This assignment operator moves a socket from one object to another.
-   *
-   * @param other The other basic_socket object from which the move will
-   * occur.
-   *
-   * @note Following the move, the moved-from object is in the same state as if
-   * constructed using the @c basic_socket(io_service&) constructor.
-   */
-  basic_socket& operator=(basic_socket&& other)
-  {
-    basic_io_object<SocketService>::operator=(
-        ASIO_MOVE_CAST(basic_socket)(other));
-    return *this;
-  }
-
-  // All sockets have access to each other's implementations.
-  template <typename Protocol1, typename SocketService1>
-  friend class basic_socket;
-
-  /// Move-construct a basic_socket from a socket of another protocol type.
-  /**
-   * This constructor moves a socket from one object to another.
-   *
-   * @param other The other basic_socket object from which the move will
-   * occur.
-   *
-   * @note Following the move, the moved-from object is in the same state as if
-   * constructed using the @c basic_socket(io_service&) constructor.
-   */
-  template <typename Protocol1, typename SocketService1>
-  basic_socket(basic_socket<Protocol1, SocketService1>&& other,
-      typename enable_if<is_convertible<Protocol1, Protocol>::value>::type* = 0)
-    : basic_io_object<SocketService>(other.get_io_service())
-  {
-    this->get_service().template converting_move_construct<Protocol1>(
-        this->get_implementation(), other.get_implementation());
-  }
-
-  /// Move-assign a basic_socket from a socket of another protocol type.
-  /**
-   * This assignment operator moves a socket from one object to another.
-   *
-   * @param other The other basic_socket object from which the move will
-   * occur.
-   *
-   * @note Following the move, the moved-from object is in the same state as if
-   * constructed using the @c basic_socket(io_service&) constructor.
-   */
-  template <typename Protocol1, typename SocketService1>
-  typename enable_if<is_convertible<Protocol1, Protocol>::value,
-      basic_socket>::type& operator=(
-        basic_socket<Protocol1, SocketService1>&& other)
-  {
-    basic_socket tmp(ASIO_MOVE_CAST2(basic_socket<
-            Protocol1, SocketService1>)(other));
-    basic_io_object<SocketService>::operator=(
-        ASIO_MOVE_CAST(basic_socket)(tmp));
-    return *this;
-  }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
-  /// Get a reference to the lowest layer.
-  /**
-   * This function returns a reference to the lowest layer in a stack of
-   * layers. Since a basic_socket cannot contain any further layers, it simply
-   * returns a reference to itself.
-   *
-   * @return A reference to the lowest layer in the stack of layers. Ownership
-   * is not transferred to the caller.
-   */
-  lowest_layer_type& lowest_layer()
-  {
-    return *this;
-  }
-
-  /// Get a const reference to the lowest layer.
-  /**
-   * This function returns a const reference to the lowest layer in a stack of
-   * layers. Since a basic_socket cannot contain any further layers, it simply
-   * returns a reference to itself.
-   *
-   * @return A const reference to the lowest layer in the stack of layers.
-   * Ownership is not transferred to the caller.
-   */
-  const lowest_layer_type& lowest_layer() const
-  {
-    return *this;
-  }
-
-  /// Open the socket using the specified protocol.
-  /**
-   * This function opens the socket so that it will use the specified protocol.
-   *
-   * @param protocol An object specifying protocol parameters to be used.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @par Example
-   * @code
-   * asio::ip::tcp::socket socket(io_service);
-   * socket.open(asio::ip::tcp::v4());
-   * @endcode
-   */
-  void open(const protocol_type& protocol = protocol_type())
-  {
-    asio::error_code ec;
-    this->get_service().open(this->get_implementation(), protocol, ec);
-    asio::detail::throw_error(ec, "open");
-  }
-
-  /// Open the socket using the specified protocol.
-  /**
-   * This function opens the socket so that it will use the specified protocol.
-   *
-   * @param protocol An object specifying which protocol is to be used.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @par Example
-   * @code
-   * asio::ip::tcp::socket socket(io_service);
-   * asio::error_code ec;
-   * socket.open(asio::ip::tcp::v4(), ec);
-   * if (ec)
-   * {
-   *   // An error occurred.
-   * }
-   * @endcode
-   */
-  asio::error_code open(const protocol_type& protocol,
-      asio::error_code& ec)
-  {
-    return this->get_service().open(this->get_implementation(), protocol, ec);
-  }
-
-  /// Assign an existing native socket to the socket.
-  /*
-   * This function opens the socket to hold an existing native socket.
-   *
-   * @param protocol An object specifying which protocol is to be used.
-   *
-   * @param native_socket A native socket.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  void assign(const protocol_type& protocol,
-      const native_handle_type& native_socket)
-  {
-    asio::error_code ec;
-    this->get_service().assign(this->get_implementation(),
-        protocol, native_socket, ec);
-    asio::detail::throw_error(ec, "assign");
-  }
-
-  /// Assign an existing native socket to the socket.
-  /*
-   * This function opens the socket to hold an existing native socket.
-   *
-   * @param protocol An object specifying which protocol is to be used.
-   *
-   * @param native_socket A native socket.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   */
-  asio::error_code assign(const protocol_type& protocol,
-      const native_handle_type& native_socket, asio::error_code& ec)
-  {
-    return this->get_service().assign(this->get_implementation(),
-        protocol, native_socket, ec);
-  }
-
-  /// Determine whether the socket is open.
-  bool is_open() const
-  {
-    return this->get_service().is_open(this->get_implementation());
-  }
-
-  /// Close the socket.
-  /**
-   * This function is used to close the socket. Any asynchronous send, receive
-   * or connect operations will be cancelled immediately, and will complete
-   * with the asio::error::operation_aborted error.
-   *
-   * @throws asio::system_error Thrown on failure. Note that, even if
-   * the function indicates an error, the underlying descriptor is closed.
-   *
-   * @note For portable behaviour with respect to graceful closure of a
-   * connected socket, call shutdown() before closing the socket.
-   */
-  void close()
-  {
-    asio::error_code ec;
-    this->get_service().close(this->get_implementation(), ec);
-    asio::detail::throw_error(ec, "close");
-  }
-
-  /// Close the socket.
-  /**
-   * This function is used to close the socket. Any asynchronous send, receive
-   * or connect operations will be cancelled immediately, and will complete
-   * with the asio::error::operation_aborted error.
-   *
-   * @param ec Set to indicate what error occurred, if any. Note that, even if
-   * the function indicates an error, the underlying descriptor is closed.
-   *
-   * @par Example
-   * @code
-   * asio::ip::tcp::socket socket(io_service);
-   * ...
-   * asio::error_code ec;
-   * socket.close(ec);
-   * if (ec)
-   * {
-   *   // An error occurred.
-   * }
-   * @endcode
-   *
-   * @note For portable behaviour with respect to graceful closure of a
-   * connected socket, call shutdown() before closing the socket.
-   */
-  asio::error_code close(asio::error_code& ec)
-  {
-    return this->get_service().close(this->get_implementation(), ec);
-  }
-
-  /// (Deprecated: Use native_handle().) Get the native socket representation.
-  /**
-   * This function may be used to obtain the underlying representation of the
-   * socket. This is intended to allow access to native socket functionality
-   * that is not otherwise provided.
-   */
-  native_type native()
-  {
-    return this->get_service().native_handle(this->get_implementation());
-  }
-
-  /// Get the native socket representation.
-  /**
-   * This function may be used to obtain the underlying representation of the
-   * socket. This is intended to allow access to native socket functionality
-   * that is not otherwise provided.
-   */
-  native_handle_type native_handle()
-  {
-    return this->get_service().native_handle(this->get_implementation());
-  }
-
-  /// Cancel all asynchronous operations associated with the socket.
-  /**
-   * This function causes all outstanding asynchronous connect, send and receive
-   * operations to finish immediately, and the handlers for cancelled operations
-   * will be passed the asio::error::operation_aborted error.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note Calls to cancel() will always fail with
-   * asio::error::operation_not_supported when run on Windows XP, Windows
-   * Server 2003, and earlier versions of Windows, unless
-   * ASIO_ENABLE_CANCELIO is defined. However, the CancelIo function has
-   * two issues that should be considered before enabling its use:
-   *
-   * @li It will only cancel asynchronous operations that were initiated in the
-   * current thread.
-   *
-   * @li It can appear to complete without error, but the request to cancel the
-   * unfinished operations may be silently ignored by the operating system.
-   * Whether it works or not seems to depend on the drivers that are installed.
-   *
-   * For portable cancellation, consider using one of the following
-   * alternatives:
-   *
-   * @li Disable asio's I/O completion port backend by defining
-   * ASIO_DISABLE_IOCP.
-   *
-   * @li Use the close() function to simultaneously cancel the outstanding
-   * operations and close the socket.
-   *
-   * When running on Windows Vista, Windows Server 2008, and later, the
-   * CancelIoEx function is always used. This function does not have the
-   * problems described above.
-   */
-#if defined(ASIO_MSVC) && (ASIO_MSVC >= 1400) \
-  && (!defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0600) \
-  && !defined(ASIO_ENABLE_CANCELIO)
-  __declspec(deprecated("By default, this function always fails with "
-        "operation_not_supported when used on Windows XP, Windows Server 2003, "
-        "or earlier. Consult documentation for details."))
-#endif
-  void cancel()
-  {
-    asio::error_code ec;
-    this->get_service().cancel(this->get_implementation(), ec);
-    asio::detail::throw_error(ec, "cancel");
-  }
-
-  /// Cancel all asynchronous operations associated with the socket.
-  /**
-   * This function causes all outstanding asynchronous connect, send and receive
-   * operations to finish immediately, and the handlers for cancelled operations
-   * will be passed the asio::error::operation_aborted error.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @note Calls to cancel() will always fail with
-   * asio::error::operation_not_supported when run on Windows XP, Windows
-   * Server 2003, and earlier versions of Windows, unless
-   * ASIO_ENABLE_CANCELIO is defined. However, the CancelIo function has
-   * two issues that should be considered before enabling its use:
-   *
-   * @li It will only cancel asynchronous operations that were initiated in the
-   * current thread.
-   *
-   * @li It can appear to complete without error, but the request to cancel the
-   * unfinished operations may be silently ignored by the operating system.
-   * Whether it works or not seems to depend on the drivers that are installed.
-   *
-   * For portable cancellation, consider using one of the following
-   * alternatives:
-   *
-   * @li Disable asio's I/O completion port backend by defining
-   * ASIO_DISABLE_IOCP.
-   *
-   * @li Use the close() function to simultaneously cancel the outstanding
-   * operations and close the socket.
-   *
-   * When running on Windows Vista, Windows Server 2008, and later, the
-   * CancelIoEx function is always used. This function does not have the
-   * problems described above.
-   */
-#if defined(ASIO_MSVC) && (ASIO_MSVC >= 1400) \
-  && (!defined(_WIN32_WINNT) || _WIN32_WINNT < 0x0600) \
-  && !defined(ASIO_ENABLE_CANCELIO)
-  __declspec(deprecated("By default, this function always fails with "
-        "operation_not_supported when used on Windows XP, Windows Server 2003, "
-        "or earlier. Consult documentation for details."))
-#endif
-  asio::error_code cancel(asio::error_code& ec)
-  {
-    return this->get_service().cancel(this->get_implementation(), ec);
-  }
-
-  /// Determine whether the socket is at the out-of-band data mark.
-  /**
-   * This function is used to check whether the socket input is currently
-   * positioned at the out-of-band data mark.
-   *
-   * @return A bool indicating whether the socket is at the out-of-band data
-   * mark.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  bool at_mark() const
-  {
-    asio::error_code ec;
-    bool b = this->get_service().at_mark(this->get_implementation(), ec);
-    asio::detail::throw_error(ec, "at_mark");
-    return b;
-  }
-
-  /// Determine whether the socket is at the out-of-band data mark.
-  /**
-   * This function is used to check whether the socket input is currently
-   * positioned at the out-of-band data mark.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @return A bool indicating whether the socket is at the out-of-band data
-   * mark.
-   */
-  bool at_mark(asio::error_code& ec) const
-  {
-    return this->get_service().at_mark(this->get_implementation(), ec);
-  }
-
-  /// Determine the number of bytes available for reading.
-  /**
-   * This function is used to determine the number of bytes that may be read
-   * without blocking.
-   *
-   * @return The number of bytes that may be read without blocking, or 0 if an
-   * error occurs.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  std::size_t available() const
-  {
-    asio::error_code ec;
-    std::size_t s = this->get_service().available(
-        this->get_implementation(), ec);
-    asio::detail::throw_error(ec, "available");
-    return s;
-  }
-
-  /// Determine the number of bytes available for reading.
-  /**
-   * This function is used to determine the number of bytes that may be read
-   * without blocking.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @return The number of bytes that may be read without blocking, or 0 if an
-   * error occurs.
-   */
-  std::size_t available(asio::error_code& ec) const
-  {
-    return this->get_service().available(this->get_implementation(), ec);
-  }
-
-  /// Bind the socket to the given local endpoint.
-  /**
-   * This function binds the socket to the specified endpoint on the local
-   * machine.
-   *
-   * @param endpoint An endpoint on the local machine to which the socket will
-   * be bound.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @par Example
-   * @code
-   * asio::ip::tcp::socket socket(io_service);
-   * socket.open(asio::ip::tcp::v4());
-   * socket.bind(asio::ip::tcp::endpoint(
-   *       asio::ip::tcp::v4(), 12345));
-   * @endcode
-   */
-  void bind(const endpoint_type& endpoint)
-  {
-    asio::error_code ec;
-    this->get_service().bind(this->get_implementation(), endpoint, ec);
-    asio::detail::throw_error(ec, "bind");
-  }
-
-  /// Bind the socket to the given local endpoint.
-  /**
-   * This function binds the socket to the specified endpoint on the local
-   * machine.
-   *
-   * @param endpoint An endpoint on the local machine to which the socket will
-   * be bound.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @par Example
-   * @code
-   * asio::ip::tcp::socket socket(io_service);
-   * socket.open(asio::ip::tcp::v4());
-   * asio::error_code ec;
-   * socket.bind(asio::ip::tcp::endpoint(
-   *       asio::ip::tcp::v4(), 12345), ec);
-   * if (ec)
-   * {
-   *   // An error occurred.
-   * }
-   * @endcode
-   */
-  asio::error_code bind(const endpoint_type& endpoint,
-      asio::error_code& ec)
-  {
-    return this->get_service().bind(this->get_implementation(), endpoint, ec);
-  }
-
-  /// Connect the socket to the specified endpoint.
-  /**
-   * This function is used to connect a socket to the specified remote endpoint.
-   * The function call will block until the connection is successfully made or
-   * an error occurs.
-   *
-   * The socket is automatically opened if it is not already open. If the
-   * connect fails, and the socket was automatically opened, the socket is
-   * not returned to the closed state.
-   *
-   * @param peer_endpoint The remote endpoint to which the socket will be
-   * connected.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @par Example
-   * @code
-   * asio::ip::tcp::socket socket(io_service);
-   * asio::ip::tcp::endpoint endpoint(
-   *     asio::ip::address::from_string("1.2.3.4"), 12345);
-   * socket.connect(endpoint);
-   * @endcode
-   */
-  void connect(const endpoint_type& peer_endpoint)
-  {
-    asio::error_code ec;
-    if (!is_open())
-    {
-      this->get_service().open(this->get_implementation(),
-          peer_endpoint.protocol(), ec);
-      asio::detail::throw_error(ec, "connect");
-    }
-    this->get_service().connect(this->get_implementation(), peer_endpoint, ec);
-    asio::detail::throw_error(ec, "connect");
-  }
-
-  /// Connect the socket to the specified endpoint.
-  /**
-   * This function is used to connect a socket to the specified remote endpoint.
-   * The function call will block until the connection is successfully made or
-   * an error occurs.
-   *
-   * The socket is automatically opened if it is not already open. If the
-   * connect fails, and the socket was automatically opened, the socket is
-   * not returned to the closed state.
-   *
-   * @param peer_endpoint The remote endpoint to which the socket will be
-   * connected.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @par Example
-   * @code
-   * asio::ip::tcp::socket socket(io_service);
-   * asio::ip::tcp::endpoint endpoint(
-   *     asio::ip::address::from_string("1.2.3.4"), 12345);
-   * asio::error_code ec;
-   * socket.connect(endpoint, ec);
-   * if (ec)
-   * {
-   *   // An error occurred.
-   * }
-   * @endcode
-   */
-  asio::error_code connect(const endpoint_type& peer_endpoint,
-      asio::error_code& ec)
-  {
-    if (!is_open())
-    {
-      if (this->get_service().open(this->get_implementation(),
-            peer_endpoint.protocol(), ec))
-      {
-        return ec;
-      }
-    }
-
-    return this->get_service().connect(
-        this->get_implementation(), peer_endpoint, ec);
-  }
-
-  /// Start an asynchronous connect.
-  /**
-   * This function is used to asynchronously connect a socket to the specified
-   * remote endpoint. The function call always returns immediately.
-   *
-   * The socket is automatically opened if it is not already open. If the
-   * connect fails, and the socket was automatically opened, the socket is
-   * not returned to the closed state.
-   *
-   * @param peer_endpoint The remote endpoint to which the socket will be
-   * connected. Copies will be made of the endpoint object as required.
-   *
-   * @param handler The handler to be called when the connection operation
-   * completes. Copies will be made of the handler as required. The function
-   * signature of the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error // Result of operation
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   *
-   * @par Example
-   * @code
-   * void connect_handler(const asio::error_code& error)
-   * {
-   *   if (!error)
-   *   {
-   *     // Connect succeeded.
-   *   }
-   * }
-   *
-   * ...
-   *
-   * asio::ip::tcp::socket socket(io_service);
-   * asio::ip::tcp::endpoint endpoint(
-   *     asio::ip::address::from_string("1.2.3.4"), 12345);
-   * socket.async_connect(endpoint, connect_handler);
-   * @endcode
-   */
-  template <typename ConnectHandler>
-  ASIO_INITFN_RESULT_TYPE(ConnectHandler,
-      void (asio::error_code))
-  async_connect(const endpoint_type& peer_endpoint,
-      ASIO_MOVE_ARG(ConnectHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a ConnectHandler.
-    ASIO_CONNECT_HANDLER_CHECK(ConnectHandler, handler) type_check;
-
-    if (!is_open())
-    {
-      asio::error_code ec;
-      const protocol_type protocol = peer_endpoint.protocol();
-      if (this->get_service().open(this->get_implementation(), protocol, ec))
-      {
-        detail::async_result_init<
-          ConnectHandler, void (asio::error_code)> init(
-            ASIO_MOVE_CAST(ConnectHandler)(handler));
-
-        this->get_io_service().post(
-            asio::detail::bind_handler(
-              ASIO_MOVE_CAST(ASIO_HANDLER_TYPE(
-                ConnectHandler, void (asio::error_code)))(
-                  init.handler), ec));
-
-        return init.result.get();
-      }
-    }
-
-    return this->get_service().async_connect(this->get_implementation(),
-        peer_endpoint, ASIO_MOVE_CAST(ConnectHandler)(handler));
-  }
-
-  /// Set an option on the socket.
-  /**
-   * This function is used to set an option on the socket.
-   *
-   * @param option The new option value to be set on the socket.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @sa SettableSocketOption @n
-   * asio::socket_base::broadcast @n
-   * asio::socket_base::do_not_route @n
-   * asio::socket_base::keep_alive @n
-   * asio::socket_base::linger @n
-   * asio::socket_base::receive_buffer_size @n
-   * asio::socket_base::receive_low_watermark @n
-   * asio::socket_base::reuse_address @n
-   * asio::socket_base::send_buffer_size @n
-   * asio::socket_base::send_low_watermark @n
-   * asio::ip::multicast::join_group @n
-   * asio::ip::multicast::leave_group @n
-   * asio::ip::multicast::enable_loopback @n
-   * asio::ip::multicast::outbound_interface @n
-   * asio::ip::multicast::hops @n
-   * asio::ip::tcp::no_delay
-   *
-   * @par Example
-   * Setting the IPPROTO_TCP/TCP_NODELAY option:
-   * @code
-   * asio::ip::tcp::socket socket(io_service);
-   * ...
-   * asio::ip::tcp::no_delay option(true);
-   * socket.set_option(option);
-   * @endcode
-   */
-  template <typename SettableSocketOption>
-  void set_option(const SettableSocketOption& option)
-  {
-    asio::error_code ec;
-    this->get_service().set_option(this->get_implementation(), option, ec);
-    asio::detail::throw_error(ec, "set_option");
-  }
-
-  /// Set an option on the socket.
-  /**
-   * This function is used to set an option on the socket.
-   *
-   * @param option The new option value to be set on the socket.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @sa SettableSocketOption @n
-   * asio::socket_base::broadcast @n
-   * asio::socket_base::do_not_route @n
-   * asio::socket_base::keep_alive @n
-   * asio::socket_base::linger @n
-   * asio::socket_base::receive_buffer_size @n
-   * asio::socket_base::receive_low_watermark @n
-   * asio::socket_base::reuse_address @n
-   * asio::socket_base::send_buffer_size @n
-   * asio::socket_base::send_low_watermark @n
-   * asio::ip::multicast::join_group @n
-   * asio::ip::multicast::leave_group @n
-   * asio::ip::multicast::enable_loopback @n
-   * asio::ip::multicast::outbound_interface @n
-   * asio::ip::multicast::hops @n
-   * asio::ip::tcp::no_delay
-   *
-   * @par Example
-   * Setting the IPPROTO_TCP/TCP_NODELAY option:
-   * @code
-   * asio::ip::tcp::socket socket(io_service);
-   * ...
-   * asio::ip::tcp::no_delay option(true);
-   * asio::error_code ec;
-   * socket.set_option(option, ec);
-   * if (ec)
-   * {
-   *   // An error occurred.
-   * }
-   * @endcode
-   */
-  template <typename SettableSocketOption>
-  asio::error_code set_option(const SettableSocketOption& option,
-      asio::error_code& ec)
-  {
-    return this->get_service().set_option(
-        this->get_implementation(), option, ec);
-  }
-
-  /// Get an option from the socket.
-  /**
-   * This function is used to get the current value of an option on the socket.
-   *
-   * @param option The option value to be obtained from the socket.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @sa GettableSocketOption @n
-   * asio::socket_base::broadcast @n
-   * asio::socket_base::do_not_route @n
-   * asio::socket_base::keep_alive @n
-   * asio::socket_base::linger @n
-   * asio::socket_base::receive_buffer_size @n
-   * asio::socket_base::receive_low_watermark @n
-   * asio::socket_base::reuse_address @n
-   * asio::socket_base::send_buffer_size @n
-   * asio::socket_base::send_low_watermark @n
-   * asio::ip::multicast::join_group @n
-   * asio::ip::multicast::leave_group @n
-   * asio::ip::multicast::enable_loopback @n
-   * asio::ip::multicast::outbound_interface @n
-   * asio::ip::multicast::hops @n
-   * asio::ip::tcp::no_delay
-   *
-   * @par Example
-   * Getting the value of the SOL_SOCKET/SO_KEEPALIVE option:
-   * @code
-   * asio::ip::tcp::socket socket(io_service);
-   * ...
-   * asio::ip::tcp::socket::keep_alive option;
-   * socket.get_option(option);
-   * bool is_set = option.value();
-   * @endcode
-   */
-  template <typename GettableSocketOption>
-  void get_option(GettableSocketOption& option) const
-  {
-    asio::error_code ec;
-    this->get_service().get_option(this->get_implementation(), option, ec);
-    asio::detail::throw_error(ec, "get_option");
-  }
-
-  /// Get an option from the socket.
-  /**
-   * This function is used to get the current value of an option on the socket.
-   *
-   * @param option The option value to be obtained from the socket.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @sa GettableSocketOption @n
-   * asio::socket_base::broadcast @n
-   * asio::socket_base::do_not_route @n
-   * asio::socket_base::keep_alive @n
-   * asio::socket_base::linger @n
-   * asio::socket_base::receive_buffer_size @n
-   * asio::socket_base::receive_low_watermark @n
-   * asio::socket_base::reuse_address @n
-   * asio::socket_base::send_buffer_size @n
-   * asio::socket_base::send_low_watermark @n
-   * asio::ip::multicast::join_group @n
-   * asio::ip::multicast::leave_group @n
-   * asio::ip::multicast::enable_loopback @n
-   * asio::ip::multicast::outbound_interface @n
-   * asio::ip::multicast::hops @n
-   * asio::ip::tcp::no_delay
-   *
-   * @par Example
-   * Getting the value of the SOL_SOCKET/SO_KEEPALIVE option:
-   * @code
-   * asio::ip::tcp::socket socket(io_service);
-   * ...
-   * asio::ip::tcp::socket::keep_alive option;
-   * asio::error_code ec;
-   * socket.get_option(option, ec);
-   * if (ec)
-   * {
-   *   // An error occurred.
-   * }
-   * bool is_set = option.value();
-   * @endcode
-   */
-  template <typename GettableSocketOption>
-  asio::error_code get_option(GettableSocketOption& option,
-      asio::error_code& ec) const
-  {
-    return this->get_service().get_option(
-        this->get_implementation(), option, ec);
-  }
-
-  /// Perform an IO control command on the socket.
-  /**
-   * This function is used to execute an IO control command on the socket.
-   *
-   * @param command The IO control command to be performed on the socket.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @sa IoControlCommand @n
-   * asio::socket_base::bytes_readable @n
-   * asio::socket_base::non_blocking_io
-   *
-   * @par Example
-   * Getting the number of bytes ready to read:
-   * @code
-   * asio::ip::tcp::socket socket(io_service);
-   * ...
-   * asio::ip::tcp::socket::bytes_readable command;
-   * socket.io_control(command);
-   * std::size_t bytes_readable = command.get();
-   * @endcode
-   */
-  template <typename IoControlCommand>
-  void io_control(IoControlCommand& command)
-  {
-    asio::error_code ec;
-    this->get_service().io_control(this->get_implementation(), command, ec);
-    asio::detail::throw_error(ec, "io_control");
-  }
-
-  /// Perform an IO control command on the socket.
-  /**
-   * This function is used to execute an IO control command on the socket.
-   *
-   * @param command The IO control command to be performed on the socket.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @sa IoControlCommand @n
-   * asio::socket_base::bytes_readable @n
-   * asio::socket_base::non_blocking_io
-   *
-   * @par Example
-   * Getting the number of bytes ready to read:
-   * @code
-   * asio::ip::tcp::socket socket(io_service);
-   * ...
-   * asio::ip::tcp::socket::bytes_readable command;
-   * asio::error_code ec;
-   * socket.io_control(command, ec);
-   * if (ec)
-   * {
-   *   // An error occurred.
-   * }
-   * std::size_t bytes_readable = command.get();
-   * @endcode
-   */
-  template <typename IoControlCommand>
-  asio::error_code io_control(IoControlCommand& command,
-      asio::error_code& ec)
-  {
-    return this->get_service().io_control(
-        this->get_implementation(), command, ec);
-  }
-
-  /// Gets the non-blocking mode of the socket.
-  /**
-   * @returns @c true if the socket's synchronous operations will fail with
-   * asio::error::would_block if they are unable to perform the requested
-   * operation immediately. If @c false, synchronous operations will block
-   * until complete.
-   *
-   * @note The non-blocking mode has no effect on the behaviour of asynchronous
-   * operations. Asynchronous operations will never fail with the error
-   * asio::error::would_block.
-   */
-  bool non_blocking() const
-  {
-    return this->get_service().non_blocking(this->get_implementation());
-  }
-
-  /// Sets the non-blocking mode of the socket.
-  /**
-   * @param mode If @c true, the socket's synchronous operations will fail with
-   * asio::error::would_block if they are unable to perform the requested
-   * operation immediately. If @c false, synchronous operations will block
-   * until complete.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note The non-blocking mode has no effect on the behaviour of asynchronous
-   * operations. Asynchronous operations will never fail with the error
-   * asio::error::would_block.
-   */
-  void non_blocking(bool mode)
-  {
-    asio::error_code ec;
-    this->get_service().non_blocking(this->get_implementation(), mode, ec);
-    asio::detail::throw_error(ec, "non_blocking");
-  }
-
-  /// Sets the non-blocking mode of the socket.
-  /**
-   * @param mode If @c true, the socket's synchronous operations will fail with
-   * asio::error::would_block if they are unable to perform the requested
-   * operation immediately. If @c false, synchronous operations will block
-   * until complete.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @note The non-blocking mode has no effect on the behaviour of asynchronous
-   * operations. Asynchronous operations will never fail with the error
-   * asio::error::would_block.
-   */
-  asio::error_code non_blocking(
-      bool mode, asio::error_code& ec)
-  {
-    return this->get_service().non_blocking(
-        this->get_implementation(), mode, ec);
-  }
-
-  /// Gets the non-blocking mode of the native socket implementation.
-  /**
-   * This function is used to retrieve the non-blocking mode of the underlying
-   * native socket. This mode has no effect on the behaviour of the socket
-   * object's synchronous operations.
-   *
-   * @returns @c true if the underlying socket is in non-blocking mode and
-   * direct system calls may fail with asio::error::would_block (or the
-   * equivalent system error).
-   *
-   * @note The current non-blocking mode is cached by the socket object.
-   * Consequently, the return value may be incorrect if the non-blocking mode
-   * was set directly on the native socket.
-   *
-   * @par Example
-   * This function is intended to allow the encapsulation of arbitrary
-   * non-blocking system calls as asynchronous operations, in a way that is
-   * transparent to the user of the socket object. The following example
-   * illustrates how Linux's @c sendfile system call might be encapsulated:
-   * @code template <typename Handler>
-   * struct sendfile_op
-   * {
-   *   tcp::socket& sock_;
-   *   int fd_;
-   *   Handler handler_;
-   *   off_t offset_;
-   *   std::size_t total_bytes_transferred_;
-   *
-   *   // Function call operator meeting WriteHandler requirements.
-   *   // Used as the handler for the async_write_some operation.
-   *   void operator()(asio::error_code ec, std::size_t)
-   *   {
-   *     // Put the underlying socket into non-blocking mode.
-   *     if (!ec)
-   *       if (!sock_.native_non_blocking())
-   *         sock_.native_non_blocking(true, ec);
-   *
-   *     if (!ec)
-   *     {
-   *       for (;;)
-   *       {
-   *         // Try the system call.
-   *         errno = 0;
-   *         int n = ::sendfile(sock_.native_handle(), fd_, &offset_, 65536);
-   *         ec = asio::error_code(n < 0 ? errno : 0,
-   *             asio::error::get_system_category());
-   *         total_bytes_transferred_ += ec ? 0 : n;
-   *
-   *         // Retry operation immediately if interrupted by signal.
-   *         if (ec == asio::error::interrupted)
-   *           continue;
-   *
-   *         // Check if we need to run the operation again.
-   *         if (ec == asio::error::would_block
-   *             || ec == asio::error::try_again)
-   *         {
-   *           // We have to wait for the socket to become ready again.
-   *           sock_.async_write_some(asio::null_buffers(), *this);
-   *           return;
-   *         }
-   *
-   *         if (ec || n == 0)
-   *         {
-   *           // An error occurred, or we have reached the end of the file.
-   *           // Either way we must exit the loop so we can call the handler.
-   *           break;
-   *         }
-   *
-   *         // Loop around to try calling sendfile again.
-   *       }
-   *     }
-   *
-   *     // Pass result back to user's handler.
-   *     handler_(ec, total_bytes_transferred_);
-   *   }
-   * };
-   *
-   * template <typename Handler>
-   * void async_sendfile(tcp::socket& sock, int fd, Handler h)
-   * {
-   *   sendfile_op<Handler> op = { sock, fd, h, 0, 0 };
-   *   sock.async_write_some(asio::null_buffers(), op);
-   * } @endcode
-   */
-  bool native_non_blocking() const
-  {
-    return this->get_service().native_non_blocking(this->get_implementation());
-  }
-
-  /// Sets the non-blocking mode of the native socket implementation.
-  /**
-   * This function is used to modify the non-blocking mode of the underlying
-   * native socket. It has no effect on the behaviour of the socket object's
-   * synchronous operations.
-   *
-   * @param mode If @c true, the underlying socket is put into non-blocking
-   * mode and direct system calls may fail with asio::error::would_block
-   * (or the equivalent system error).
-   *
-   * @throws asio::system_error Thrown on failure. If the @c mode is
-   * @c false, but the current value of @c non_blocking() is @c true, this
-   * function fails with asio::error::invalid_argument, as the
-   * combination does not make sense.
-   *
-   * @par Example
-   * This function is intended to allow the encapsulation of arbitrary
-   * non-blocking system calls as asynchronous operations, in a way that is
-   * transparent to the user of the socket object. The following example
-   * illustrates how Linux's @c sendfile system call might be encapsulated:
-   * @code template <typename Handler>
-   * struct sendfile_op
-   * {
-   *   tcp::socket& sock_;
-   *   int fd_;
-   *   Handler handler_;
-   *   off_t offset_;
-   *   std::size_t total_bytes_transferred_;
-   *
-   *   // Function call operator meeting WriteHandler requirements.
-   *   // Used as the handler for the async_write_some operation.
-   *   void operator()(asio::error_code ec, std::size_t)
-   *   {
-   *     // Put the underlying socket into non-blocking mode.
-   *     if (!ec)
-   *       if (!sock_.native_non_blocking())
-   *         sock_.native_non_blocking(true, ec);
-   *
-   *     if (!ec)
-   *     {
-   *       for (;;)
-   *       {
-   *         // Try the system call.
-   *         errno = 0;
-   *         int n = ::sendfile(sock_.native_handle(), fd_, &offset_, 65536);
-   *         ec = asio::error_code(n < 0 ? errno : 0,
-   *             asio::error::get_system_category());
-   *         total_bytes_transferred_ += ec ? 0 : n;
-   *
-   *         // Retry operation immediately if interrupted by signal.
-   *         if (ec == asio::error::interrupted)
-   *           continue;
-   *
-   *         // Check if we need to run the operation again.
-   *         if (ec == asio::error::would_block
-   *             || ec == asio::error::try_again)
-   *         {
-   *           // We have to wait for the socket to become ready again.
-   *           sock_.async_write_some(asio::null_buffers(), *this);
-   *           return;
-   *         }
-   *
-   *         if (ec || n == 0)
-   *         {
-   *           // An error occurred, or we have reached the end of the file.
-   *           // Either way we must exit the loop so we can call the handler.
-   *           break;
-   *         }
-   *
-   *         // Loop around to try calling sendfile again.
-   *       }
-   *     }
-   *
-   *     // Pass result back to user's handler.
-   *     handler_(ec, total_bytes_transferred_);
-   *   }
-   * };
-   *
-   * template <typename Handler>
-   * void async_sendfile(tcp::socket& sock, int fd, Handler h)
-   * {
-   *   sendfile_op<Handler> op = { sock, fd, h, 0, 0 };
-   *   sock.async_write_some(asio::null_buffers(), op);
-   * } @endcode
-   */
-  void native_non_blocking(bool mode)
-  {
-    asio::error_code ec;
-    this->get_service().native_non_blocking(
-        this->get_implementation(), mode, ec);
-    asio::detail::throw_error(ec, "native_non_blocking");
-  }
-
-  /// Sets the non-blocking mode of the native socket implementation.
-  /**
-   * This function is used to modify the non-blocking mode of the underlying
-   * native socket. It has no effect on the behaviour of the socket object's
-   * synchronous operations.
-   *
-   * @param mode If @c true, the underlying socket is put into non-blocking
-   * mode and direct system calls may fail with asio::error::would_block
-   * (or the equivalent system error).
-   *
-   * @param ec Set to indicate what error occurred, if any. If the @c mode is
-   * @c false, but the current value of @c non_blocking() is @c true, this
-   * function fails with asio::error::invalid_argument, as the
-   * combination does not make sense.
-   *
-   * @par Example
-   * This function is intended to allow the encapsulation of arbitrary
-   * non-blocking system calls as asynchronous operations, in a way that is
-   * transparent to the user of the socket object. The following example
-   * illustrates how Linux's @c sendfile system call might be encapsulated:
-   * @code template <typename Handler>
-   * struct sendfile_op
-   * {
-   *   tcp::socket& sock_;
-   *   int fd_;
-   *   Handler handler_;
-   *   off_t offset_;
-   *   std::size_t total_bytes_transferred_;
-   *
-   *   // Function call operator meeting WriteHandler requirements.
-   *   // Used as the handler for the async_write_some operation.
-   *   void operator()(asio::error_code ec, std::size_t)
-   *   {
-   *     // Put the underlying socket into non-blocking mode.
-   *     if (!ec)
-   *       if (!sock_.native_non_blocking())
-   *         sock_.native_non_blocking(true, ec);
-   *
-   *     if (!ec)
-   *     {
-   *       for (;;)
-   *       {
-   *         // Try the system call.
-   *         errno = 0;
-   *         int n = ::sendfile(sock_.native_handle(), fd_, &offset_, 65536);
-   *         ec = asio::error_code(n < 0 ? errno : 0,
-   *             asio::error::get_system_category());
-   *         total_bytes_transferred_ += ec ? 0 : n;
-   *
-   *         // Retry operation immediately if interrupted by signal.
-   *         if (ec == asio::error::interrupted)
-   *           continue;
-   *
-   *         // Check if we need to run the operation again.
-   *         if (ec == asio::error::would_block
-   *             || ec == asio::error::try_again)
-   *         {
-   *           // We have to wait for the socket to become ready again.
-   *           sock_.async_write_some(asio::null_buffers(), *this);
-   *           return;
-   *         }
-   *
-   *         if (ec || n == 0)
-   *         {
-   *           // An error occurred, or we have reached the end of the file.
-   *           // Either way we must exit the loop so we can call the handler.
-   *           break;
-   *         }
-   *
-   *         // Loop around to try calling sendfile again.
-   *       }
-   *     }
-   *
-   *     // Pass result back to user's handler.
-   *     handler_(ec, total_bytes_transferred_);
-   *   }
-   * };
-   *
-   * template <typename Handler>
-   * void async_sendfile(tcp::socket& sock, int fd, Handler h)
-   * {
-   *   sendfile_op<Handler> op = { sock, fd, h, 0, 0 };
-   *   sock.async_write_some(asio::null_buffers(), op);
-   * } @endcode
-   */
-  asio::error_code native_non_blocking(
-      bool mode, asio::error_code& ec)
-  {
-    return this->get_service().native_non_blocking(
-        this->get_implementation(), mode, ec);
-  }
-
-  /// Get the local endpoint of the socket.
-  /**
-   * This function is used to obtain the locally bound endpoint of the socket.
-   *
-   * @returns An object that represents the local endpoint of the socket.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @par Example
-   * @code
-   * asio::ip::tcp::socket socket(io_service);
-   * ...
-   * asio::ip::tcp::endpoint endpoint = socket.local_endpoint();
-   * @endcode
-   */
-  endpoint_type local_endpoint() const
-  {
-    asio::error_code ec;
-    endpoint_type ep = this->get_service().local_endpoint(
-        this->get_implementation(), ec);
-    asio::detail::throw_error(ec, "local_endpoint");
-    return ep;
-  }
-
-  /// Get the local endpoint of the socket.
-  /**
-   * This function is used to obtain the locally bound endpoint of the socket.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns An object that represents the local endpoint of the socket.
-   * Returns a default-constructed endpoint object if an error occurred.
-   *
-   * @par Example
-   * @code
-   * asio::ip::tcp::socket socket(io_service);
-   * ...
-   * asio::error_code ec;
-   * asio::ip::tcp::endpoint endpoint = socket.local_endpoint(ec);
-   * if (ec)
-   * {
-   *   // An error occurred.
-   * }
-   * @endcode
-   */
-  endpoint_type local_endpoint(asio::error_code& ec) const
-  {
-    return this->get_service().local_endpoint(this->get_implementation(), ec);
-  }
-
-  /// Get the remote endpoint of the socket.
-  /**
-   * This function is used to obtain the remote endpoint of the socket.
-   *
-   * @returns An object that represents the remote endpoint of the socket.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @par Example
-   * @code
-   * asio::ip::tcp::socket socket(io_service);
-   * ...
-   * asio::ip::tcp::endpoint endpoint = socket.remote_endpoint();
-   * @endcode
-   */
-  endpoint_type remote_endpoint() const
-  {
-    asio::error_code ec;
-    endpoint_type ep = this->get_service().remote_endpoint(
-        this->get_implementation(), ec);
-    asio::detail::throw_error(ec, "remote_endpoint");
-    return ep;
-  }
-
-  /// Get the remote endpoint of the socket.
-  /**
-   * This function is used to obtain the remote endpoint of the socket.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns An object that represents the remote endpoint of the socket.
-   * Returns a default-constructed endpoint object if an error occurred.
-   *
-   * @par Example
-   * @code
-   * asio::ip::tcp::socket socket(io_service);
-   * ...
-   * asio::error_code ec;
-   * asio::ip::tcp::endpoint endpoint = socket.remote_endpoint(ec);
-   * if (ec)
-   * {
-   *   // An error occurred.
-   * }
-   * @endcode
-   */
-  endpoint_type remote_endpoint(asio::error_code& ec) const
-  {
-    return this->get_service().remote_endpoint(this->get_implementation(), ec);
-  }
-
-  /// Disable sends or receives on the socket.
-  /**
-   * This function is used to disable send operations, receive operations, or
-   * both.
-   *
-   * @param what Determines what types of operation will no longer be allowed.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @par Example
-   * Shutting down the send side of the socket:
-   * @code
-   * asio::ip::tcp::socket socket(io_service);
-   * ...
-   * socket.shutdown(asio::ip::tcp::socket::shutdown_send);
-   * @endcode
-   */
-  void shutdown(shutdown_type what)
-  {
-    asio::error_code ec;
-    this->get_service().shutdown(this->get_implementation(), what, ec);
-    asio::detail::throw_error(ec, "shutdown");
-  }
-
-  /// Disable sends or receives on the socket.
-  /**
-   * This function is used to disable send operations, receive operations, or
-   * both.
-   *
-   * @param what Determines what types of operation will no longer be allowed.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @par Example
-   * Shutting down the send side of the socket:
-   * @code
-   * asio::ip::tcp::socket socket(io_service);
-   * ...
-   * asio::error_code ec;
-   * socket.shutdown(asio::ip::tcp::socket::shutdown_send, ec);
-   * if (ec)
-   * {
-   *   // An error occurred.
-   * }
-   * @endcode
-   */
-  asio::error_code shutdown(shutdown_type what,
-      asio::error_code& ec)
-  {
-    return this->get_service().shutdown(this->get_implementation(), what, ec);
-  }
-
-protected:
-  /// Protected destructor to prevent deletion through this type.
-  ~basic_socket()
-  {
-  }
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_BASIC_SOCKET_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_socket_acceptor.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_socket_acceptor.hpp
deleted file mode 100644
index aa55f41..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_socket_acceptor.hpp
+++ /dev/null
@@ -1,1136 +0,0 @@
-//
-// basic_socket_acceptor.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_BASIC_SOCKET_ACCEPTOR_HPP
-#define ASIO_BASIC_SOCKET_ACCEPTOR_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/basic_io_object.hpp"
-#include "asio/basic_socket.hpp"
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/detail/type_traits.hpp"
-#include "asio/error.hpp"
-#include "asio/socket_acceptor_service.hpp"
-#include "asio/socket_base.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Provides the ability to accept new connections.
-/**
- * The basic_socket_acceptor class template is used for accepting new socket
- * connections.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- *
- * @par Example
- * Opening a socket acceptor with the SO_REUSEADDR option enabled:
- * @code
- * asio::ip::tcp::acceptor acceptor(io_service);
- * asio::ip::tcp::endpoint endpoint(asio::ip::tcp::v4(), port);
- * acceptor.open(endpoint.protocol());
- * acceptor.set_option(asio::ip::tcp::acceptor::reuse_address(true));
- * acceptor.bind(endpoint);
- * acceptor.listen();
- * @endcode
- */
-template <typename Protocol,
-    typename SocketAcceptorService = socket_acceptor_service<Protocol> >
-class basic_socket_acceptor
-  : public basic_io_object<SocketAcceptorService>,
-    public socket_base
-{
-public:
-  /// (Deprecated: Use native_handle_type.) The native representation of an
-  /// acceptor.
-  typedef typename SocketAcceptorService::native_handle_type native_type;
-
-  /// The native representation of an acceptor.
-  typedef typename SocketAcceptorService::native_handle_type native_handle_type;
-
-  /// The protocol type.
-  typedef Protocol protocol_type;
-
-  /// The endpoint type.
-  typedef typename Protocol::endpoint endpoint_type;
-
-  /// Construct an acceptor without opening it.
-  /**
-   * This constructor creates an acceptor without opening it to listen for new
-   * connections. The open() function must be called before the acceptor can
-   * accept new socket connections.
-   *
-   * @param io_service The io_service object that the acceptor will use to
-   * dispatch handlers for any asynchronous operations performed on the
-   * acceptor.
-   */
-  explicit basic_socket_acceptor(asio::io_service& io_service)
-    : basic_io_object<SocketAcceptorService>(io_service)
-  {
-  }
-
-  /// Construct an open acceptor.
-  /**
-   * This constructor creates an acceptor and automatically opens it.
-   *
-   * @param io_service The io_service object that the acceptor will use to
-   * dispatch handlers for any asynchronous operations performed on the
-   * acceptor.
-   *
-   * @param protocol An object specifying protocol parameters to be used.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  basic_socket_acceptor(asio::io_service& io_service,
-      const protocol_type& protocol)
-    : basic_io_object<SocketAcceptorService>(io_service)
-  {
-    asio::error_code ec;
-    this->get_service().open(this->get_implementation(), protocol, ec);
-    asio::detail::throw_error(ec, "open");
-  }
-
-  /// Construct an acceptor opened on the given endpoint.
-  /**
-   * This constructor creates an acceptor and automatically opens it to listen
-   * for new connections on the specified endpoint.
-   *
-   * @param io_service The io_service object that the acceptor will use to
-   * dispatch handlers for any asynchronous operations performed on the
-   * acceptor.
-   *
-   * @param endpoint An endpoint on the local machine on which the acceptor
-   * will listen for new connections.
-   *
-   * @param reuse_addr Whether the constructor should set the socket option
-   * socket_base::reuse_address.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note This constructor is equivalent to the following code:
-   * @code
-   * basic_socket_acceptor<Protocol> acceptor(io_service);
-   * acceptor.open(endpoint.protocol());
-   * if (reuse_addr)
-   *   acceptor.set_option(socket_base::reuse_address(true));
-   * acceptor.bind(endpoint);
-   * acceptor.listen(listen_backlog);
-   * @endcode
-   */
-  basic_socket_acceptor(asio::io_service& io_service,
-      const endpoint_type& endpoint, bool reuse_addr = true)
-    : basic_io_object<SocketAcceptorService>(io_service)
-  {
-    asio::error_code ec;
-    const protocol_type protocol = endpoint.protocol();
-    this->get_service().open(this->get_implementation(), protocol, ec);
-    asio::detail::throw_error(ec, "open");
-    if (reuse_addr)
-    {
-      this->get_service().set_option(this->get_implementation(),
-          socket_base::reuse_address(true), ec);
-      asio::detail::throw_error(ec, "set_option");
-    }
-    this->get_service().bind(this->get_implementation(), endpoint, ec);
-    asio::detail::throw_error(ec, "bind");
-    this->get_service().listen(this->get_implementation(),
-        socket_base::max_connections, ec);
-    asio::detail::throw_error(ec, "listen");
-  }
-
-  /// Construct a basic_socket_acceptor on an existing native acceptor.
-  /**
-   * This constructor creates an acceptor object to hold an existing native
-   * acceptor.
-   *
-   * @param io_service The io_service object that the acceptor will use to
-   * dispatch handlers for any asynchronous operations performed on the
-   * acceptor.
-   *
-   * @param protocol An object specifying protocol parameters to be used.
-   *
-   * @param native_acceptor A native acceptor.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  basic_socket_acceptor(asio::io_service& io_service,
-      const protocol_type& protocol, const native_handle_type& native_acceptor)
-    : basic_io_object<SocketAcceptorService>(io_service)
-  {
-    asio::error_code ec;
-    this->get_service().assign(this->get_implementation(),
-        protocol, native_acceptor, ec);
-    asio::detail::throw_error(ec, "assign");
-  }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-  /// Move-construct a basic_socket_acceptor from another.
-  /**
-   * This constructor moves an acceptor from one object to another.
-   *
-   * @param other The other basic_socket_acceptor object from which the move
-   * will occur.
-   *
-   * @note Following the move, the moved-from object is in the same state as if
-   * constructed using the @c basic_socket_acceptor(io_service&) constructor.
-   */
-  basic_socket_acceptor(basic_socket_acceptor&& other)
-    : basic_io_object<SocketAcceptorService>(
-        ASIO_MOVE_CAST(basic_socket_acceptor)(other))
-  {
-  }
-
-  /// Move-assign a basic_socket_acceptor from another.
-  /**
-   * This assignment operator moves an acceptor from one object to another.
-   *
-   * @param other The other basic_socket_acceptor object from which the move
-   * will occur.
-   *
-   * @note Following the move, the moved-from object is in the same state as if
-   * constructed using the @c basic_socket_acceptor(io_service&) constructor.
-   */
-  basic_socket_acceptor& operator=(basic_socket_acceptor&& other)
-  {
-    basic_io_object<SocketAcceptorService>::operator=(
-        ASIO_MOVE_CAST(basic_socket_acceptor)(other));
-    return *this;
-  }
-
-  // All socket acceptors have access to each other's implementations.
-  template <typename Protocol1, typename SocketAcceptorService1>
-  friend class basic_socket_acceptor;
-
-  /// Move-construct a basic_socket_acceptor from an acceptor of another
-  /// protocol type.
-  /**
-   * This constructor moves an acceptor from one object to another.
-   *
-   * @param other The other basic_socket_acceptor object from which the move
-   * will occur.
-   *
-   * @note Following the move, the moved-from object is in the same state as if
-   * constructed using the @c basic_socket(io_service&) constructor.
-   */
-  template <typename Protocol1, typename SocketAcceptorService1>
-  basic_socket_acceptor(
-      basic_socket_acceptor<Protocol1, SocketAcceptorService1>&& other,
-      typename enable_if<is_convertible<Protocol1, Protocol>::value>::type* = 0)
-    : basic_io_object<SocketAcceptorService>(other.get_io_service())
-  {
-    this->get_service().template converting_move_construct<Protocol1>(
-        this->get_implementation(), other.get_implementation());
-  }
-
-  /// Move-assign a basic_socket_acceptor from an acceptor of another protocol
-  /// type.
-  /**
-   * This assignment operator moves an acceptor from one object to another.
-   *
-   * @param other The other basic_socket_acceptor object from which the move
-   * will occur.
-   *
-   * @note Following the move, the moved-from object is in the same state as if
-   * constructed using the @c basic_socket(io_service&) constructor.
-   */
-  template <typename Protocol1, typename SocketAcceptorService1>
-  typename enable_if<is_convertible<Protocol1, Protocol>::value,
-      basic_socket_acceptor>::type& operator=(
-        basic_socket_acceptor<Protocol1, SocketAcceptorService1>&& other)
-  {
-    basic_socket_acceptor tmp(ASIO_MOVE_CAST2(basic_socket_acceptor<
-            Protocol1, SocketAcceptorService1>)(other));
-    basic_io_object<SocketAcceptorService>::operator=(
-        ASIO_MOVE_CAST(basic_socket_acceptor)(tmp));
-    return *this;
-  }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
-  /// Open the acceptor using the specified protocol.
-  /**
-   * This function opens the socket acceptor so that it will use the specified
-   * protocol.
-   *
-   * @param protocol An object specifying which protocol is to be used.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @par Example
-   * @code
-   * asio::ip::tcp::acceptor acceptor(io_service);
-   * acceptor.open(asio::ip::tcp::v4());
-   * @endcode
-   */
-  void open(const protocol_type& protocol = protocol_type())
-  {
-    asio::error_code ec;
-    this->get_service().open(this->get_implementation(), protocol, ec);
-    asio::detail::throw_error(ec, "open");
-  }
-
-  /// Open the acceptor using the specified protocol.
-  /**
-   * This function opens the socket acceptor so that it will use the specified
-   * protocol.
-   *
-   * @param protocol An object specifying which protocol is to be used.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @par Example
-   * @code
-   * asio::ip::tcp::acceptor acceptor(io_service);
-   * asio::error_code ec;
-   * acceptor.open(asio::ip::tcp::v4(), ec);
-   * if (ec)
-   * {
-   *   // An error occurred.
-   * }
-   * @endcode
-   */
-  asio::error_code open(const protocol_type& protocol,
-      asio::error_code& ec)
-  {
-    return this->get_service().open(this->get_implementation(), protocol, ec);
-  }
-
-  /// Assigns an existing native acceptor to the acceptor.
-  /*
-   * This function opens the acceptor to hold an existing native acceptor.
-   *
-   * @param protocol An object specifying which protocol is to be used.
-   *
-   * @param native_acceptor A native acceptor.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  void assign(const protocol_type& protocol,
-      const native_handle_type& native_acceptor)
-  {
-    asio::error_code ec;
-    this->get_service().assign(this->get_implementation(),
-        protocol, native_acceptor, ec);
-    asio::detail::throw_error(ec, "assign");
-  }
-
-  /// Assigns an existing native acceptor to the acceptor.
-  /*
-   * This function opens the acceptor to hold an existing native acceptor.
-   *
-   * @param protocol An object specifying which protocol is to be used.
-   *
-   * @param native_acceptor A native acceptor.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   */
-  asio::error_code assign(const protocol_type& protocol,
-      const native_handle_type& native_acceptor, asio::error_code& ec)
-  {
-    return this->get_service().assign(this->get_implementation(),
-        protocol, native_acceptor, ec);
-  }
-
-  /// Determine whether the acceptor is open.
-  bool is_open() const
-  {
-    return this->get_service().is_open(this->get_implementation());
-  }
-
-  /// Bind the acceptor to the given local endpoint.
-  /**
-   * This function binds the socket acceptor to the specified endpoint on the
-   * local machine.
-   *
-   * @param endpoint An endpoint on the local machine to which the socket
-   * acceptor will be bound.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @par Example
-   * @code
-   * asio::ip::tcp::acceptor acceptor(io_service);
-   * asio::ip::tcp::endpoint endpoint(asio::ip::tcp::v4(), 12345);
-   * acceptor.open(endpoint.protocol());
-   * acceptor.bind(endpoint);
-   * @endcode
-   */
-  void bind(const endpoint_type& endpoint)
-  {
-    asio::error_code ec;
-    this->get_service().bind(this->get_implementation(), endpoint, ec);
-    asio::detail::throw_error(ec, "bind");
-  }
-
-  /// Bind the acceptor to the given local endpoint.
-  /**
-   * This function binds the socket acceptor to the specified endpoint on the
-   * local machine.
-   *
-   * @param endpoint An endpoint on the local machine to which the socket
-   * acceptor will be bound.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @par Example
-   * @code
-   * asio::ip::tcp::acceptor acceptor(io_service);
-   * asio::ip::tcp::endpoint endpoint(asio::ip::tcp::v4(), 12345);
-   * acceptor.open(endpoint.protocol());
-   * asio::error_code ec;
-   * acceptor.bind(endpoint, ec);
-   * if (ec)
-   * {
-   *   // An error occurred.
-   * }
-   * @endcode
-   */
-  asio::error_code bind(const endpoint_type& endpoint,
-      asio::error_code& ec)
-  {
-    return this->get_service().bind(this->get_implementation(), endpoint, ec);
-  }
-
-  /// Place the acceptor into the state where it will listen for new
-  /// connections.
-  /**
-   * This function puts the socket acceptor into the state where it may accept
-   * new connections.
-   *
-   * @param backlog The maximum length of the queue of pending connections.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  void listen(int backlog = socket_base::max_connections)
-  {
-    asio::error_code ec;
-    this->get_service().listen(this->get_implementation(), backlog, ec);
-    asio::detail::throw_error(ec, "listen");
-  }
-
-  /// Place the acceptor into the state where it will listen for new
-  /// connections.
-  /**
-   * This function puts the socket acceptor into the state where it may accept
-   * new connections.
-   *
-   * @param backlog The maximum length of the queue of pending connections.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @par Example
-   * @code
-   * asio::ip::tcp::acceptor acceptor(io_service);
-   * ...
-   * asio::error_code ec;
-   * acceptor.listen(asio::socket_base::max_connections, ec);
-   * if (ec)
-   * {
-   *   // An error occurred.
-   * }
-   * @endcode
-   */
-  asio::error_code listen(int backlog, asio::error_code& ec)
-  {
-    return this->get_service().listen(this->get_implementation(), backlog, ec);
-  }
-
-  /// Close the acceptor.
-  /**
-   * This function is used to close the acceptor. Any asynchronous accept
-   * operations will be cancelled immediately.
-   *
-   * A subsequent call to open() is required before the acceptor can again be
-   * used to again perform socket accept operations.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  void close()
-  {
-    asio::error_code ec;
-    this->get_service().close(this->get_implementation(), ec);
-    asio::detail::throw_error(ec, "close");
-  }
-
-  /// Close the acceptor.
-  /**
-   * This function is used to close the acceptor. Any asynchronous accept
-   * operations will be cancelled immediately.
-   *
-   * A subsequent call to open() is required before the acceptor can again be
-   * used to again perform socket accept operations.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @par Example
-   * @code
-   * asio::ip::tcp::acceptor acceptor(io_service);
-   * ...
-   * asio::error_code ec;
-   * acceptor.close(ec);
-   * if (ec)
-   * {
-   *   // An error occurred.
-   * }
-   * @endcode
-   */
-  asio::error_code close(asio::error_code& ec)
-  {
-    return this->get_service().close(this->get_implementation(), ec);
-  }
-
-  /// (Deprecated: Use native_handle().) Get the native acceptor representation.
-  /**
-   * This function may be used to obtain the underlying representation of the
-   * acceptor. This is intended to allow access to native acceptor functionality
-   * that is not otherwise provided.
-   */
-  native_type native()
-  {
-    return this->get_service().native_handle(this->get_implementation());
-  }
-
-  /// Get the native acceptor representation.
-  /**
-   * This function may be used to obtain the underlying representation of the
-   * acceptor. This is intended to allow access to native acceptor functionality
-   * that is not otherwise provided.
-   */
-  native_handle_type native_handle()
-  {
-    return this->get_service().native_handle(this->get_implementation());
-  }
-
-  /// Cancel all asynchronous operations associated with the acceptor.
-  /**
-   * This function causes all outstanding asynchronous connect, send and receive
-   * operations to finish immediately, and the handlers for cancelled operations
-   * will be passed the asio::error::operation_aborted error.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  void cancel()
-  {
-    asio::error_code ec;
-    this->get_service().cancel(this->get_implementation(), ec);
-    asio::detail::throw_error(ec, "cancel");
-  }
-
-  /// Cancel all asynchronous operations associated with the acceptor.
-  /**
-   * This function causes all outstanding asynchronous connect, send and receive
-   * operations to finish immediately, and the handlers for cancelled operations
-   * will be passed the asio::error::operation_aborted error.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   */
-  asio::error_code cancel(asio::error_code& ec)
-  {
-    return this->get_service().cancel(this->get_implementation(), ec);
-  }
-
-  /// Set an option on the acceptor.
-  /**
-   * This function is used to set an option on the acceptor.
-   *
-   * @param option The new option value to be set on the acceptor.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @sa SettableSocketOption @n
-   * asio::socket_base::reuse_address
-   * asio::socket_base::enable_connection_aborted
-   *
-   * @par Example
-   * Setting the SOL_SOCKET/SO_REUSEADDR option:
-   * @code
-   * asio::ip::tcp::acceptor acceptor(io_service);
-   * ...
-   * asio::ip::tcp::acceptor::reuse_address option(true);
-   * acceptor.set_option(option);
-   * @endcode
-   */
-  template <typename SettableSocketOption>
-  void set_option(const SettableSocketOption& option)
-  {
-    asio::error_code ec;
-    this->get_service().set_option(this->get_implementation(), option, ec);
-    asio::detail::throw_error(ec, "set_option");
-  }
-
-  /// Set an option on the acceptor.
-  /**
-   * This function is used to set an option on the acceptor.
-   *
-   * @param option The new option value to be set on the acceptor.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @sa SettableSocketOption @n
-   * asio::socket_base::reuse_address
-   * asio::socket_base::enable_connection_aborted
-   *
-   * @par Example
-   * Setting the SOL_SOCKET/SO_REUSEADDR option:
-   * @code
-   * asio::ip::tcp::acceptor acceptor(io_service);
-   * ...
-   * asio::ip::tcp::acceptor::reuse_address option(true);
-   * asio::error_code ec;
-   * acceptor.set_option(option, ec);
-   * if (ec)
-   * {
-   *   // An error occurred.
-   * }
-   * @endcode
-   */
-  template <typename SettableSocketOption>
-  asio::error_code set_option(const SettableSocketOption& option,
-      asio::error_code& ec)
-  {
-    return this->get_service().set_option(
-        this->get_implementation(), option, ec);
-  }
-
-  /// Get an option from the acceptor.
-  /**
-   * This function is used to get the current value of an option on the
-   * acceptor.
-   *
-   * @param option The option value to be obtained from the acceptor.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @sa GettableSocketOption @n
-   * asio::socket_base::reuse_address
-   *
-   * @par Example
-   * Getting the value of the SOL_SOCKET/SO_REUSEADDR option:
-   * @code
-   * asio::ip::tcp::acceptor acceptor(io_service);
-   * ...
-   * asio::ip::tcp::acceptor::reuse_address option;
-   * acceptor.get_option(option);
-   * bool is_set = option.get();
-   * @endcode
-   */
-  template <typename GettableSocketOption>
-  void get_option(GettableSocketOption& option)
-  {
-    asio::error_code ec;
-    this->get_service().get_option(this->get_implementation(), option, ec);
-    asio::detail::throw_error(ec, "get_option");
-  }
-
-  /// Get an option from the acceptor.
-  /**
-   * This function is used to get the current value of an option on the
-   * acceptor.
-   *
-   * @param option The option value to be obtained from the acceptor.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @sa GettableSocketOption @n
-   * asio::socket_base::reuse_address
-   *
-   * @par Example
-   * Getting the value of the SOL_SOCKET/SO_REUSEADDR option:
-   * @code
-   * asio::ip::tcp::acceptor acceptor(io_service);
-   * ...
-   * asio::ip::tcp::acceptor::reuse_address option;
-   * asio::error_code ec;
-   * acceptor.get_option(option, ec);
-   * if (ec)
-   * {
-   *   // An error occurred.
-   * }
-   * bool is_set = option.get();
-   * @endcode
-   */
-  template <typename GettableSocketOption>
-  asio::error_code get_option(GettableSocketOption& option,
-      asio::error_code& ec)
-  {
-    return this->get_service().get_option(
-        this->get_implementation(), option, ec);
-  }
-
-  /// Perform an IO control command on the acceptor.
-  /**
-   * This function is used to execute an IO control command on the acceptor.
-   *
-   * @param command The IO control command to be performed on the acceptor.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @sa IoControlCommand @n
-   * asio::socket_base::non_blocking_io
-   *
-   * @par Example
-   * Getting the number of bytes ready to read:
-   * @code
-   * asio::ip::tcp::acceptor acceptor(io_service);
-   * ...
-   * asio::ip::tcp::acceptor::non_blocking_io command(true);
-   * socket.io_control(command);
-   * @endcode
-   */
-  template <typename IoControlCommand>
-  void io_control(IoControlCommand& command)
-  {
-    asio::error_code ec;
-    this->get_service().io_control(this->get_implementation(), command, ec);
-    asio::detail::throw_error(ec, "io_control");
-  }
-
-  /// Perform an IO control command on the acceptor.
-  /**
-   * This function is used to execute an IO control command on the acceptor.
-   *
-   * @param command The IO control command to be performed on the acceptor.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @sa IoControlCommand @n
-   * asio::socket_base::non_blocking_io
-   *
-   * @par Example
-   * Getting the number of bytes ready to read:
-   * @code
-   * asio::ip::tcp::acceptor acceptor(io_service);
-   * ...
-   * asio::ip::tcp::acceptor::non_blocking_io command(true);
-   * asio::error_code ec;
-   * socket.io_control(command, ec);
-   * if (ec)
-   * {
-   *   // An error occurred.
-   * }
-   * @endcode
-   */
-  template <typename IoControlCommand>
-  asio::error_code io_control(IoControlCommand& command,
-      asio::error_code& ec)
-  {
-    return this->get_service().io_control(
-        this->get_implementation(), command, ec);
-  }
-
-  /// Gets the non-blocking mode of the acceptor.
-  /**
-   * @returns @c true if the acceptor's synchronous operations will fail with
-   * asio::error::would_block if they are unable to perform the requested
-   * operation immediately. If @c false, synchronous operations will block
-   * until complete.
-   *
-   * @note The non-blocking mode has no effect on the behaviour of asynchronous
-   * operations. Asynchronous operations will never fail with the error
-   * asio::error::would_block.
-   */
-  bool non_blocking() const
-  {
-    return this->get_service().non_blocking(this->get_implementation());
-  }
-
-  /// Sets the non-blocking mode of the acceptor.
-  /**
-   * @param mode If @c true, the acceptor's synchronous operations will fail
-   * with asio::error::would_block if they are unable to perform the
-   * requested operation immediately. If @c false, synchronous operations will
-   * block until complete.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note The non-blocking mode has no effect on the behaviour of asynchronous
-   * operations. Asynchronous operations will never fail with the error
-   * asio::error::would_block.
-   */
-  void non_blocking(bool mode)
-  {
-    asio::error_code ec;
-    this->get_service().non_blocking(this->get_implementation(), mode, ec);
-    asio::detail::throw_error(ec, "non_blocking");
-  }
-
-  /// Sets the non-blocking mode of the acceptor.
-  /**
-   * @param mode If @c true, the acceptor's synchronous operations will fail
-   * with asio::error::would_block if they are unable to perform the
-   * requested operation immediately. If @c false, synchronous operations will
-   * block until complete.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @note The non-blocking mode has no effect on the behaviour of asynchronous
-   * operations. Asynchronous operations will never fail with the error
-   * asio::error::would_block.
-   */
-  asio::error_code non_blocking(
-      bool mode, asio::error_code& ec)
-  {
-    return this->get_service().non_blocking(
-        this->get_implementation(), mode, ec);
-  }
-
-  /// Gets the non-blocking mode of the native acceptor implementation.
-  /**
-   * This function is used to retrieve the non-blocking mode of the underlying
-   * native acceptor. This mode has no effect on the behaviour of the acceptor
-   * object's synchronous operations.
-   *
-   * @returns @c true if the underlying acceptor is in non-blocking mode and
-   * direct system calls may fail with asio::error::would_block (or the
-   * equivalent system error).
-   *
-   * @note The current non-blocking mode is cached by the acceptor object.
-   * Consequently, the return value may be incorrect if the non-blocking mode
-   * was set directly on the native acceptor.
-   */
-  bool native_non_blocking() const
-  {
-    return this->get_service().native_non_blocking(this->get_implementation());
-  }
-
-  /// Sets the non-blocking mode of the native acceptor implementation.
-  /**
-   * This function is used to modify the non-blocking mode of the underlying
-   * native acceptor. It has no effect on the behaviour of the acceptor object's
-   * synchronous operations.
-   *
-   * @param mode If @c true, the underlying acceptor is put into non-blocking
-   * mode and direct system calls may fail with asio::error::would_block
-   * (or the equivalent system error).
-   *
-   * @throws asio::system_error Thrown on failure. If the @c mode is
-   * @c false, but the current value of @c non_blocking() is @c true, this
-   * function fails with asio::error::invalid_argument, as the
-   * combination does not make sense.
-   */
-  void native_non_blocking(bool mode)
-  {
-    asio::error_code ec;
-    this->get_service().native_non_blocking(
-        this->get_implementation(), mode, ec);
-    asio::detail::throw_error(ec, "native_non_blocking");
-  }
-
-  /// Sets the non-blocking mode of the native acceptor implementation.
-  /**
-   * This function is used to modify the non-blocking mode of the underlying
-   * native acceptor. It has no effect on the behaviour of the acceptor object's
-   * synchronous operations.
-   *
-   * @param mode If @c true, the underlying acceptor is put into non-blocking
-   * mode and direct system calls may fail with asio::error::would_block
-   * (or the equivalent system error).
-   *
-   * @param ec Set to indicate what error occurred, if any. If the @c mode is
-   * @c false, but the current value of @c non_blocking() is @c true, this
-   * function fails with asio::error::invalid_argument, as the
-   * combination does not make sense.
-   */
-  asio::error_code native_non_blocking(
-      bool mode, asio::error_code& ec)
-  {
-    return this->get_service().native_non_blocking(
-        this->get_implementation(), mode, ec);
-  }
-
-  /// Get the local endpoint of the acceptor.
-  /**
-   * This function is used to obtain the locally bound endpoint of the acceptor.
-   *
-   * @returns An object that represents the local endpoint of the acceptor.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @par Example
-   * @code
-   * asio::ip::tcp::acceptor acceptor(io_service);
-   * ...
-   * asio::ip::tcp::endpoint endpoint = acceptor.local_endpoint();
-   * @endcode
-   */
-  endpoint_type local_endpoint() const
-  {
-    asio::error_code ec;
-    endpoint_type ep = this->get_service().local_endpoint(
-        this->get_implementation(), ec);
-    asio::detail::throw_error(ec, "local_endpoint");
-    return ep;
-  }
-
-  /// Get the local endpoint of the acceptor.
-  /**
-   * This function is used to obtain the locally bound endpoint of the acceptor.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns An object that represents the local endpoint of the acceptor.
-   * Returns a default-constructed endpoint object if an error occurred and the
-   * error handler did not throw an exception.
-   *
-   * @par Example
-   * @code
-   * asio::ip::tcp::acceptor acceptor(io_service);
-   * ...
-   * asio::error_code ec;
-   * asio::ip::tcp::endpoint endpoint = acceptor.local_endpoint(ec);
-   * if (ec)
-   * {
-   *   // An error occurred.
-   * }
-   * @endcode
-   */
-  endpoint_type local_endpoint(asio::error_code& ec) const
-  {
-    return this->get_service().local_endpoint(this->get_implementation(), ec);
-  }
-
-  /// Accept a new connection.
-  /**
-   * This function is used to accept a new connection from a peer into the
-   * given socket. The function call will block until a new connection has been
-   * accepted successfully or an error occurs.
-   *
-   * @param peer The socket into which the new connection will be accepted.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @par Example
-   * @code
-   * asio::ip::tcp::acceptor acceptor(io_service);
-   * ...
-   * asio::ip::tcp::socket socket(io_service);
-   * acceptor.accept(socket);
-   * @endcode
-   */
-  template <typename Protocol1, typename SocketService>
-  void accept(basic_socket<Protocol1, SocketService>& peer,
-      typename enable_if<is_convertible<Protocol, Protocol1>::value>::type* = 0)
-  {
-    asio::error_code ec;
-    this->get_service().accept(this->get_implementation(),
-        peer, static_cast<endpoint_type*>(0), ec);
-    asio::detail::throw_error(ec, "accept");
-  }
-
-  /// Accept a new connection.
-  /**
-   * This function is used to accept a new connection from a peer into the
-   * given socket. The function call will block until a new connection has been
-   * accepted successfully or an error occurs.
-   *
-   * @param peer The socket into which the new connection will be accepted.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @par Example
-   * @code
-   * asio::ip::tcp::acceptor acceptor(io_service);
-   * ...
-   * asio::ip::tcp::soocket socket(io_service);
-   * asio::error_code ec;
-   * acceptor.accept(socket, ec);
-   * if (ec)
-   * {
-   *   // An error occurred.
-   * }
-   * @endcode
-   */
-  template <typename Protocol1, typename SocketService>
-  asio::error_code accept(
-      basic_socket<Protocol1, SocketService>& peer,
-      asio::error_code& ec,
-      typename enable_if<is_convertible<Protocol, Protocol1>::value>::type* = 0)
-  {
-    return this->get_service().accept(this->get_implementation(),
-        peer, static_cast<endpoint_type*>(0), ec);
-  }
-
-  /// Start an asynchronous accept.
-  /**
-   * This function is used to asynchronously accept a new connection into a
-   * socket. The function call always returns immediately.
-   *
-   * @param peer The socket into which the new connection will be accepted.
-   * Ownership of the peer object is retained by the caller, which must
-   * guarantee that it is valid until the handler is called.
-   *
-   * @param handler The handler to be called when the accept operation
-   * completes. Copies will be made of the handler as required. The function
-   * signature of the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error // Result of operation.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   *
-   * @par Example
-   * @code
-   * void accept_handler(const asio::error_code& error)
-   * {
-   *   if (!error)
-   *   {
-   *     // Accept succeeded.
-   *   }
-   * }
-   *
-   * ...
-   *
-   * asio::ip::tcp::acceptor acceptor(io_service);
-   * ...
-   * asio::ip::tcp::socket socket(io_service);
-   * acceptor.async_accept(socket, accept_handler);
-   * @endcode
-   */
-  template <typename Protocol1, typename SocketService, typename AcceptHandler>
-  ASIO_INITFN_RESULT_TYPE(AcceptHandler,
-      void (asio::error_code))
-  async_accept(basic_socket<Protocol1, SocketService>& peer,
-      ASIO_MOVE_ARG(AcceptHandler) handler,
-      typename enable_if<is_convertible<Protocol, Protocol1>::value>::type* = 0)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a AcceptHandler.
-    ASIO_ACCEPT_HANDLER_CHECK(AcceptHandler, handler) type_check;
-
-    return this->get_service().async_accept(this->get_implementation(),
-        peer, static_cast<endpoint_type*>(0),
-        ASIO_MOVE_CAST(AcceptHandler)(handler));
-  }
-
-  /// Accept a new connection and obtain the endpoint of the peer
-  /**
-   * This function is used to accept a new connection from a peer into the
-   * given socket, and additionally provide the endpoint of the remote peer.
-   * The function call will block until a new connection has been accepted
-   * successfully or an error occurs.
-   *
-   * @param peer The socket into which the new connection will be accepted.
-   *
-   * @param peer_endpoint An endpoint object which will receive the endpoint of
-   * the remote peer.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @par Example
-   * @code
-   * asio::ip::tcp::acceptor acceptor(io_service);
-   * ...
-   * asio::ip::tcp::socket socket(io_service);
-   * asio::ip::tcp::endpoint endpoint;
-   * acceptor.accept(socket, endpoint);
-   * @endcode
-   */
-  template <typename SocketService>
-  void accept(basic_socket<protocol_type, SocketService>& peer,
-      endpoint_type& peer_endpoint)
-  {
-    asio::error_code ec;
-    this->get_service().accept(this->get_implementation(),
-        peer, &peer_endpoint, ec);
-    asio::detail::throw_error(ec, "accept");
-  }
-
-  /// Accept a new connection and obtain the endpoint of the peer
-  /**
-   * This function is used to accept a new connection from a peer into the
-   * given socket, and additionally provide the endpoint of the remote peer.
-   * The function call will block until a new connection has been accepted
-   * successfully or an error occurs.
-   *
-   * @param peer The socket into which the new connection will be accepted.
-   *
-   * @param peer_endpoint An endpoint object which will receive the endpoint of
-   * the remote peer.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @par Example
-   * @code
-   * asio::ip::tcp::acceptor acceptor(io_service);
-   * ...
-   * asio::ip::tcp::socket socket(io_service);
-   * asio::ip::tcp::endpoint endpoint;
-   * asio::error_code ec;
-   * acceptor.accept(socket, endpoint, ec);
-   * if (ec)
-   * {
-   *   // An error occurred.
-   * }
-   * @endcode
-   */
-  template <typename SocketService>
-  asio::error_code accept(
-      basic_socket<protocol_type, SocketService>& peer,
-      endpoint_type& peer_endpoint, asio::error_code& ec)
-  {
-    return this->get_service().accept(
-        this->get_implementation(), peer, &peer_endpoint, ec);
-  }
-
-  /// Start an asynchronous accept.
-  /**
-   * This function is used to asynchronously accept a new connection into a
-   * socket, and additionally obtain the endpoint of the remote peer. The
-   * function call always returns immediately.
-   *
-   * @param peer The socket into which the new connection will be accepted.
-   * Ownership of the peer object is retained by the caller, which must
-   * guarantee that it is valid until the handler is called.
-   *
-   * @param peer_endpoint An endpoint object into which the endpoint of the
-   * remote peer will be written. Ownership of the peer_endpoint object is
-   * retained by the caller, which must guarantee that it is valid until the
-   * handler is called.
-   *
-   * @param handler The handler to be called when the accept operation
-   * completes. Copies will be made of the handler as required. The function
-   * signature of the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error // Result of operation.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   */
-  template <typename SocketService, typename AcceptHandler>
-  ASIO_INITFN_RESULT_TYPE(AcceptHandler,
-      void (asio::error_code))
-  async_accept(basic_socket<protocol_type, SocketService>& peer,
-      endpoint_type& peer_endpoint, ASIO_MOVE_ARG(AcceptHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a AcceptHandler.
-    ASIO_ACCEPT_HANDLER_CHECK(AcceptHandler, handler) type_check;
-
-    return this->get_service().async_accept(this->get_implementation(), peer,
-        &peer_endpoint, ASIO_MOVE_CAST(AcceptHandler)(handler));
-  }
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_BASIC_SOCKET_ACCEPTOR_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_socket_iostream.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_socket_iostream.hpp
deleted file mode 100644
index c25d4c5..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_socket_iostream.hpp
+++ /dev/null
@@ -1,286 +0,0 @@
-//
-// basic_socket_iostream.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_BASIC_SOCKET_IOSTREAM_HPP
-#define ASIO_BASIC_SOCKET_IOSTREAM_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-#include <istream>
-#include <ostream>
-#include "asio/basic_socket_streambuf.hpp"
-#include "asio/stream_socket_service.hpp"
-
-#if !defined(ASIO_HAS_VARIADIC_TEMPLATES)
-
-# include "asio/detail/variadic_templates.hpp"
-
-// A macro that should expand to:
-//   template <typename T1, ..., typename Tn>
-//   explicit basic_socket_iostream(T1 x1, ..., Tn xn)
-//     : std::basic_iostream<char>(
-//         &this->detail::socket_iostream_base<
-//           Protocol, StreamSocketService, Time,
-//           TimeTraits, TimerService>::streambuf_)
-//   {
-//     if (rdbuf()->connect(x1, ..., xn) == 0)
-//       this->setstate(std::ios_base::failbit);
-//   }
-// This macro should only persist within this file.
-
-# define ASIO_PRIVATE_CTR_DEF(n) \
-  template <ASIO_VARIADIC_TPARAMS(n)> \
-  explicit basic_socket_iostream(ASIO_VARIADIC_PARAMS(n)) \
-    : std::basic_iostream<char>( \
-        &this->detail::socket_iostream_base< \
-          Protocol, StreamSocketService, Time, \
-          TimeTraits, TimerService>::streambuf_) \
-  { \
-    this->setf(std::ios_base::unitbuf); \
-    if (rdbuf()->connect(ASIO_VARIADIC_ARGS(n)) == 0) \
-      this->setstate(std::ios_base::failbit); \
-  } \
-  /**/
-
-// A macro that should expand to:
-//   template <typename T1, ..., typename Tn>
-//   void connect(T1 x1, ..., Tn xn)
-//   {
-//     if (rdbuf()->connect(x1, ..., xn) == 0)
-//       this->setstate(std::ios_base::failbit);
-//   }
-// This macro should only persist within this file.
-
-# define ASIO_PRIVATE_CONNECT_DEF(n) \
-  template <ASIO_VARIADIC_TPARAMS(n)> \
-  void connect(ASIO_VARIADIC_PARAMS(n)) \
-  { \
-    if (rdbuf()->connect(ASIO_VARIADIC_ARGS(n)) == 0) \
-      this->setstate(std::ios_base::failbit); \
-  } \
-  /**/
-
-#endif // !defined(ASIO_HAS_VARIADIC_TEMPLATES)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-// A separate base class is used to ensure that the streambuf is initialised
-// prior to the basic_socket_iostream's basic_iostream base class.
-template <typename Protocol, typename StreamSocketService,
-    typename Time, typename TimeTraits, typename TimerService>
-class socket_iostream_base
-{
-protected:
-  basic_socket_streambuf<Protocol, StreamSocketService,
-    Time, TimeTraits, TimerService> streambuf_;
-};
-
-}
-
-/// Iostream interface for a socket.
-template <typename Protocol,
-    typename StreamSocketService = stream_socket_service<Protocol>,
-#if defined(ASIO_HAS_BOOST_DATE_TIME) \
-  || defined(GENERATING_DOCUMENTATION)
-    typename Time = boost::posix_time::ptime,
-    typename TimeTraits = asio::time_traits<Time>,
-    typename TimerService = deadline_timer_service<Time, TimeTraits> >
-#else
-    typename Time = steady_timer::clock_type,
-    typename TimeTraits = steady_timer::traits_type,
-    typename TimerService = steady_timer::service_type>
-#endif
-class basic_socket_iostream
-  : private detail::socket_iostream_base<Protocol,
-        StreamSocketService, Time, TimeTraits, TimerService>,
-    public std::basic_iostream<char>
-{
-private:
-  // These typedefs are intended keep this class's implementation independent
-  // of whether it's using Boost.DateTime, Boost.Chrono or std::chrono.
-#if defined(ASIO_HAS_BOOST_DATE_TIME)
-  typedef TimeTraits traits_helper;
-#else
-  typedef detail::chrono_time_traits<Time, TimeTraits> traits_helper;
-#endif
-
-public:
-  /// The endpoint type.
-  typedef typename Protocol::endpoint endpoint_type;
-
-#if defined(GENERATING_DOCUMENTATION)
-  /// The time type.
-  typedef typename TimeTraits::time_type time_type;
-
-  /// The duration type.
-  typedef typename TimeTraits::duration_type duration_type;
-#else
-  typedef typename traits_helper::time_type time_type;
-  typedef typename traits_helper::duration_type duration_type;
-#endif
-
-  /// Construct a basic_socket_iostream without establishing a connection.
-  basic_socket_iostream()
-    : std::basic_iostream<char>(
-        &this->detail::socket_iostream_base<
-          Protocol, StreamSocketService, Time,
-          TimeTraits, TimerService>::streambuf_)
-  {
-    this->setf(std::ios_base::unitbuf);
-  }
-
-#if defined(GENERATING_DOCUMENTATION)
-  /// Establish a connection to an endpoint corresponding to a resolver query.
-  /**
-   * This constructor automatically establishes a connection based on the
-   * supplied resolver query parameters. The arguments are used to construct
-   * a resolver query object.
-   */
-  template <typename T1, ..., typename TN>
-  explicit basic_socket_iostream(T1 t1, ..., TN tn);
-#elif defined(ASIO_HAS_VARIADIC_TEMPLATES)
-  template <typename... T>
-  explicit basic_socket_iostream(T... x)
-    : std::basic_iostream<char>(
-        &this->detail::socket_iostream_base<
-          Protocol, StreamSocketService, Time,
-          TimeTraits, TimerService>::streambuf_)
-  {
-    this->setf(std::ios_base::unitbuf);
-    if (rdbuf()->connect(x...) == 0)
-      this->setstate(std::ios_base::failbit);
-  }
-#else
-  ASIO_VARIADIC_GENERATE(ASIO_PRIVATE_CTR_DEF)
-#endif
-
-#if defined(GENERATING_DOCUMENTATION)
-  /// Establish a connection to an endpoint corresponding to a resolver query.
-  /**
-   * This function automatically establishes a connection based on the supplied
-   * resolver query parameters. The arguments are used to construct a resolver
-   * query object.
-   */
-  template <typename T1, ..., typename TN>
-  void connect(T1 t1, ..., TN tn);
-#elif defined(ASIO_HAS_VARIADIC_TEMPLATES)
-  template <typename... T>
-  void connect(T... x)
-  {
-    if (rdbuf()->connect(x...) == 0)
-      this->setstate(std::ios_base::failbit);
-  }
-#else
-  ASIO_VARIADIC_GENERATE(ASIO_PRIVATE_CONNECT_DEF)
-#endif
-
-  /// Close the connection.
-  void close()
-  {
-    if (rdbuf()->close() == 0)
-      this->setstate(std::ios_base::failbit);
-  }
-
-  /// Return a pointer to the underlying streambuf.
-  basic_socket_streambuf<Protocol, StreamSocketService,
-    Time, TimeTraits, TimerService>* rdbuf() const
-  {
-    return const_cast<basic_socket_streambuf<Protocol, StreamSocketService,
-      Time, TimeTraits, TimerService>*>(
-        &this->detail::socket_iostream_base<
-          Protocol, StreamSocketService, Time,
-          TimeTraits, TimerService>::streambuf_);
-  }
-
-  /// Get the last error associated with the stream.
-  /**
-   * @return An \c error_code corresponding to the last error from the stream.
-   *
-   * @par Example
-   * To print the error associated with a failure to establish a connection:
-   * @code tcp::iostream s("www.boost.org", "http");
-   * if (!s)
-   * {
-   *   std::cout << "Error: " << s.error().message() << std::endl;
-   * } @endcode
-   */
-  const asio::error_code& error() const
-  {
-    return rdbuf()->puberror();
-  }
-
-  /// Get the stream's expiry time as an absolute time.
-  /**
-   * @return An absolute time value representing the stream's expiry time.
-   */
-  time_type expires_at() const
-  {
-    return rdbuf()->expires_at();
-  }
-
-  /// Set the stream's expiry time as an absolute time.
-  /**
-   * This function sets the expiry time associated with the stream. Stream
-   * operations performed after this time (where the operations cannot be
-   * completed using the internal buffers) will fail with the error
-   * asio::error::operation_aborted.
-   *
-   * @param expiry_time The expiry time to be used for the stream.
-   */
-  void expires_at(const time_type& expiry_time)
-  {
-    rdbuf()->expires_at(expiry_time);
-  }
-
-  /// Get the timer's expiry time relative to now.
-  /**
-   * @return A relative time value representing the stream's expiry time.
-   */
-  duration_type expires_from_now() const
-  {
-    return rdbuf()->expires_from_now();
-  }
-
-  /// Set the stream's expiry time relative to now.
-  /**
-   * This function sets the expiry time associated with the stream. Stream
-   * operations performed after this time (where the operations cannot be
-   * completed using the internal buffers) will fail with the error
-   * asio::error::operation_aborted.
-   *
-   * @param expiry_time The expiry time to be used for the timer.
-   */
-  void expires_from_now(const duration_type& expiry_time)
-  {
-    rdbuf()->expires_from_now(expiry_time);
-  }
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if !defined(ASIO_HAS_VARIADIC_TEMPLATES)
-# undef ASIO_PRIVATE_CTR_DEF
-# undef ASIO_PRIVATE_CONNECT_DEF
-#endif // !defined(ASIO_HAS_VARIADIC_TEMPLATES)
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-#endif // ASIO_BASIC_SOCKET_IOSTREAM_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_socket_streambuf.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_socket_streambuf.hpp
deleted file mode 100644
index ed39b1f..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_socket_streambuf.hpp
+++ /dev/null
@@ -1,567 +0,0 @@
-//
-// basic_socket_streambuf.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_BASIC_SOCKET_STREAMBUF_HPP
-#define ASIO_BASIC_SOCKET_STREAMBUF_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-#include <streambuf>
-#include "asio/basic_socket.hpp"
-#include "asio/deadline_timer_service.hpp"
-#include "asio/detail/array.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/stream_socket_service.hpp"
-
-#if defined(ASIO_HAS_BOOST_DATE_TIME)
-# include "asio/deadline_timer.hpp"
-#else
-# include "asio/steady_timer.hpp"
-#endif
-
-#if !defined(ASIO_HAS_VARIADIC_TEMPLATES)
-
-# include "asio/detail/variadic_templates.hpp"
-
-// A macro that should expand to:
-//   template <typename T1, ..., typename Tn>
-//   basic_socket_streambuf<Protocol, StreamSocketService,
-//     Time, TimeTraits, TimerService>* connect(
-//       T1 x1, ..., Tn xn)
-//   {
-//     init_buffers();
-//     this->basic_socket<Protocol, StreamSocketService>::close(ec_);
-//     typedef typename Protocol::resolver resolver_type;
-//     typedef typename resolver_type::query resolver_query;
-//     resolver_query query(x1, ..., xn);
-//     resolve_and_connect(query);
-//     return !ec_ ? this : 0;
-//   }
-// This macro should only persist within this file.
-
-# define ASIO_PRIVATE_CONNECT_DEF(n) \
-  template <ASIO_VARIADIC_TPARAMS(n)> \
-  basic_socket_streambuf<Protocol, StreamSocketService, \
-    Time, TimeTraits, TimerService>* connect(ASIO_VARIADIC_PARAMS(n)) \
-  { \
-    init_buffers(); \
-    this->basic_socket<Protocol, StreamSocketService>::close(ec_); \
-    typedef typename Protocol::resolver resolver_type; \
-    typedef typename resolver_type::query resolver_query; \
-    resolver_query query(ASIO_VARIADIC_ARGS(n)); \
-    resolve_and_connect(query); \
-    return !ec_ ? this : 0; \
-  } \
-  /**/
-
-#endif // !defined(ASIO_HAS_VARIADIC_TEMPLATES)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-// A separate base class is used to ensure that the io_service is initialised
-// prior to the basic_socket_streambuf's basic_socket base class.
-class socket_streambuf_base
-{
-protected:
-  io_service io_service_;
-};
-
-} // namespace detail
-
-/// Iostream streambuf for a socket.
-template <typename Protocol,
-    typename StreamSocketService = stream_socket_service<Protocol>,
-#if defined(ASIO_HAS_BOOST_DATE_TIME) \
-  || defined(GENERATING_DOCUMENTATION)
-    typename Time = boost::posix_time::ptime,
-    typename TimeTraits = asio::time_traits<Time>,
-    typename TimerService = deadline_timer_service<Time, TimeTraits> >
-#else
-    typename Time = steady_timer::clock_type,
-    typename TimeTraits = steady_timer::traits_type,
-    typename TimerService = steady_timer::service_type>
-#endif
-class basic_socket_streambuf
-  : public std::streambuf,
-    private detail::socket_streambuf_base,
-    public basic_socket<Protocol, StreamSocketService>
-{
-private:
-  // These typedefs are intended keep this class's implementation independent
-  // of whether it's using Boost.DateTime, Boost.Chrono or std::chrono.
-#if defined(ASIO_HAS_BOOST_DATE_TIME)
-  typedef TimeTraits traits_helper;
-#else
-  typedef detail::chrono_time_traits<Time, TimeTraits> traits_helper;
-#endif
-
-public:
-  /// The endpoint type.
-  typedef typename Protocol::endpoint endpoint_type;
-
-#if defined(GENERATING_DOCUMENTATION)
-  /// The time type.
-  typedef typename TimeTraits::time_type time_type;
-
-  /// The duration type.
-  typedef typename TimeTraits::duration_type duration_type;
-#else
-  typedef typename traits_helper::time_type time_type;
-  typedef typename traits_helper::duration_type duration_type;
-#endif
-
-  /// Construct a basic_socket_streambuf without establishing a connection.
-  basic_socket_streambuf()
-    : basic_socket<Protocol, StreamSocketService>(
-        this->detail::socket_streambuf_base::io_service_),
-      unbuffered_(false),
-      timer_service_(0),
-      timer_state_(no_timer)
-  {
-    init_buffers();
-  }
-
-  /// Destructor flushes buffered data.
-  virtual ~basic_socket_streambuf()
-  {
-    if (pptr() != pbase())
-      overflow(traits_type::eof());
-
-    destroy_timer();
-  }
-
-  /// Establish a connection.
-  /**
-   * This function establishes a connection to the specified endpoint.
-   *
-   * @return \c this if a connection was successfully established, a null
-   * pointer otherwise.
-   */
-  basic_socket_streambuf<Protocol, StreamSocketService,
-    Time, TimeTraits, TimerService>* connect(
-      const endpoint_type& endpoint)
-  {
-    init_buffers();
-
-    this->basic_socket<Protocol, StreamSocketService>::close(ec_);
-
-    if (timer_state_ == timer_has_expired)
-    {
-      ec_ = asio::error::operation_aborted;
-      return 0;
-    }
-
-    io_handler handler = { this };
-    this->basic_socket<Protocol, StreamSocketService>::async_connect(
-        endpoint, handler);
-
-    ec_ = asio::error::would_block;
-    this->get_service().get_io_service().reset();
-    do this->get_service().get_io_service().run_one();
-    while (ec_ == asio::error::would_block);
-
-    return !ec_ ? this : 0;
-  }
-
-#if defined(GENERATING_DOCUMENTATION)
-  /// Establish a connection.
-  /**
-   * This function automatically establishes a connection based on the supplied
-   * resolver query parameters. The arguments are used to construct a resolver
-   * query object.
-   *
-   * @return \c this if a connection was successfully established, a null
-   * pointer otherwise.
-   */
-  template <typename T1, ..., typename TN>
-  basic_socket_streambuf<Protocol, StreamSocketService>* connect(
-      T1 t1, ..., TN tn);
-#elif defined(ASIO_HAS_VARIADIC_TEMPLATES)
-  template <typename... T>
-  basic_socket_streambuf<Protocol, StreamSocketService,
-    Time, TimeTraits, TimerService>* connect(T... x)
-  {
-    init_buffers();
-    this->basic_socket<Protocol, StreamSocketService>::close(ec_);
-    typedef typename Protocol::resolver resolver_type;
-    typedef typename resolver_type::query resolver_query;
-    resolver_query query(x...);
-    resolve_and_connect(query);
-    return !ec_ ? this : 0;
-  }
-#else
-  ASIO_VARIADIC_GENERATE(ASIO_PRIVATE_CONNECT_DEF)
-#endif
-
-  /// Close the connection.
-  /**
-   * @return \c this if a connection was successfully established, a null
-   * pointer otherwise.
-   */
-  basic_socket_streambuf<Protocol, StreamSocketService,
-    Time, TimeTraits, TimerService>* close()
-  {
-    sync();
-    this->basic_socket<Protocol, StreamSocketService>::close(ec_);
-    if (!ec_)
-      init_buffers();
-    return !ec_ ? this : 0;
-  }
-
-  /// Get the last error associated with the stream buffer.
-  /**
-   * @return An \c error_code corresponding to the last error from the stream
-   * buffer.
-   */
-  const asio::error_code& puberror() const
-  {
-    return error();
-  }
-
-  /// Get the stream buffer's expiry time as an absolute time.
-  /**
-   * @return An absolute time value representing the stream buffer's expiry
-   * time.
-   */
-  time_type expires_at() const
-  {
-    return timer_service_
-      ? timer_service_->expires_at(timer_implementation_)
-      : time_type();
-  }
-
-  /// Set the stream buffer's expiry time as an absolute time.
-  /**
-   * This function sets the expiry time associated with the stream. Stream
-   * operations performed after this time (where the operations cannot be
-   * completed using the internal buffers) will fail with the error
-   * asio::error::operation_aborted.
-   *
-   * @param expiry_time The expiry time to be used for the stream.
-   */
-  void expires_at(const time_type& expiry_time)
-  {
-    construct_timer();
-
-    asio::error_code ec;
-    timer_service_->expires_at(timer_implementation_, expiry_time, ec);
-    asio::detail::throw_error(ec, "expires_at");
-
-    start_timer();
-  }
-
-  /// Get the stream buffer's expiry time relative to now.
-  /**
-   * @return A relative time value representing the stream buffer's expiry time.
-   */
-  duration_type expires_from_now() const
-  {
-    return traits_helper::subtract(expires_at(), traits_helper::now());
-  }
-
-  /// Set the stream buffer's expiry time relative to now.
-  /**
-   * This function sets the expiry time associated with the stream. Stream
-   * operations performed after this time (where the operations cannot be
-   * completed using the internal buffers) will fail with the error
-   * asio::error::operation_aborted.
-   *
-   * @param expiry_time The expiry time to be used for the timer.
-   */
-  void expires_from_now(const duration_type& expiry_time)
-  {
-    construct_timer();
-
-    asio::error_code ec;
-    timer_service_->expires_from_now(timer_implementation_, expiry_time, ec);
-    asio::detail::throw_error(ec, "expires_from_now");
-
-    start_timer();
-  }
-
-protected:
-  int_type underflow()
-  {
-    if (gptr() == egptr())
-    {
-      if (timer_state_ == timer_has_expired)
-      {
-        ec_ = asio::error::operation_aborted;
-        return traits_type::eof();
-      }
-
-      io_handler handler = { this };
-      this->get_service().async_receive(this->get_implementation(),
-          asio::buffer(asio::buffer(get_buffer_) + putback_max),
-          0, handler);
-
-      ec_ = asio::error::would_block;
-      this->get_service().get_io_service().reset();
-      do this->get_service().get_io_service().run_one();
-      while (ec_ == asio::error::would_block);
-      if (ec_)
-        return traits_type::eof();
-
-      setg(&get_buffer_[0], &get_buffer_[0] + putback_max,
-          &get_buffer_[0] + putback_max + bytes_transferred_);
-      return traits_type::to_int_type(*gptr());
-    }
-    else
-    {
-      return traits_type::eof();
-    }
-  }
-
-  int_type overflow(int_type c)
-  {
-    if (unbuffered_)
-    {
-      if (traits_type::eq_int_type(c, traits_type::eof()))
-      {
-        // Nothing to do.
-        return traits_type::not_eof(c);
-      }
-      else
-      {
-        if (timer_state_ == timer_has_expired)
-        {
-          ec_ = asio::error::operation_aborted;
-          return traits_type::eof();
-        }
-
-        // Send the single character immediately.
-        char_type ch = traits_type::to_char_type(c);
-        io_handler handler = { this };
-        this->get_service().async_send(this->get_implementation(),
-            asio::buffer(&ch, sizeof(char_type)), 0, handler);
-
-        ec_ = asio::error::would_block;
-        this->get_service().get_io_service().reset();
-        do this->get_service().get_io_service().run_one();
-        while (ec_ == asio::error::would_block);
-        if (ec_)
-          return traits_type::eof();
-
-        return c;
-      }
-    }
-    else
-    {
-      // Send all data in the output buffer.
-      asio::const_buffer buffer =
-        asio::buffer(pbase(), pptr() - pbase());
-      while (asio::buffer_size(buffer) > 0)
-      {
-        if (timer_state_ == timer_has_expired)
-        {
-          ec_ = asio::error::operation_aborted;
-          return traits_type::eof();
-        }
-
-        io_handler handler = { this };
-        this->get_service().async_send(this->get_implementation(),
-            asio::buffer(buffer), 0, handler);
-
-        ec_ = asio::error::would_block;
-        this->get_service().get_io_service().reset();
-        do this->get_service().get_io_service().run_one();
-        while (ec_ == asio::error::would_block);
-        if (ec_)
-          return traits_type::eof();
-
-        buffer = buffer + bytes_transferred_;
-      }
-      setp(&put_buffer_[0], &put_buffer_[0] + put_buffer_.size());
-
-      // If the new character is eof then our work here is done.
-      if (traits_type::eq_int_type(c, traits_type::eof()))
-        return traits_type::not_eof(c);
-
-      // Add the new character to the output buffer.
-      *pptr() = traits_type::to_char_type(c);
-      pbump(1);
-      return c;
-    }
-  }
-
-  int sync()
-  {
-    return overflow(traits_type::eof());
-  }
-
-  std::streambuf* setbuf(char_type* s, std::streamsize n)
-  {
-    if (pptr() == pbase() && s == 0 && n == 0)
-    {
-      unbuffered_ = true;
-      setp(0, 0);
-      return this;
-    }
-
-    return 0;
-  }
-
-  /// Get the last error associated with the stream buffer.
-  /**
-   * @return An \c error_code corresponding to the last error from the stream
-   * buffer.
-   */
-  virtual const asio::error_code& error() const
-  {
-    return ec_;
-  }
-
-private:
-  void init_buffers()
-  {
-    setg(&get_buffer_[0],
-        &get_buffer_[0] + putback_max,
-        &get_buffer_[0] + putback_max);
-    if (unbuffered_)
-      setp(0, 0);
-    else
-      setp(&put_buffer_[0], &put_buffer_[0] + put_buffer_.size());
-  }
-
-  template <typename ResolverQuery>
-  void resolve_and_connect(const ResolverQuery& query)
-  {
-    typedef typename Protocol::resolver resolver_type;
-    typedef typename resolver_type::iterator iterator_type;
-    resolver_type resolver(detail::socket_streambuf_base::io_service_);
-    iterator_type i = resolver.resolve(query, ec_);
-    if (!ec_)
-    {
-      iterator_type end;
-      ec_ = asio::error::host_not_found;
-      while (ec_ && i != end)
-      {
-        this->basic_socket<Protocol, StreamSocketService>::close(ec_);
-
-        if (timer_state_ == timer_has_expired)
-        {
-          ec_ = asio::error::operation_aborted;
-          return;
-        }
-
-        io_handler handler = { this };
-        this->basic_socket<Protocol, StreamSocketService>::async_connect(
-            *i, handler);
-
-        ec_ = asio::error::would_block;
-        this->get_service().get_io_service().reset();
-        do this->get_service().get_io_service().run_one();
-        while (ec_ == asio::error::would_block);
-
-        ++i;
-      }
-    }
-  }
-
-  struct io_handler;
-  friend struct io_handler;
-  struct io_handler
-  {
-    basic_socket_streambuf* this_;
-
-    void operator()(const asio::error_code& ec,
-        std::size_t bytes_transferred = 0)
-    {
-      this_->ec_ = ec;
-      this_->bytes_transferred_ = bytes_transferred;
-    }
-  };
-
-  struct timer_handler;
-  friend struct timer_handler;
-  struct timer_handler
-  {
-    basic_socket_streambuf* this_;
-
-    void operator()(const asio::error_code&)
-    {
-      time_type now = traits_helper::now();
-
-      time_type expiry_time = this_->timer_service_->expires_at(
-            this_->timer_implementation_);
-
-      if (traits_helper::less_than(now, expiry_time))
-      {
-        this_->timer_state_ = timer_is_pending;
-        this_->timer_service_->async_wait(this_->timer_implementation_, *this);
-      }
-      else
-      {
-        this_->timer_state_ = timer_has_expired;
-        asio::error_code ec;
-        this_->basic_socket<Protocol, StreamSocketService>::close(ec);
-      }
-    }
-  };
-
-  void construct_timer()
-  {
-    if (timer_service_ == 0)
-    {
-      TimerService& timer_service = use_service<TimerService>(
-          detail::socket_streambuf_base::io_service_);
-      timer_service.construct(timer_implementation_);
-      timer_service_ = &timer_service;
-    }
-  }
-
-  void destroy_timer()
-  {
-    if (timer_service_)
-      timer_service_->destroy(timer_implementation_);
-  }
-
-  void start_timer()
-  {
-    if (timer_state_ != timer_is_pending)
-    {
-      timer_handler handler = { this };
-      handler(asio::error_code());
-    }
-  }
-
-  enum { putback_max = 8 };
-  enum { buffer_size = 512 };
-  asio::detail::array<char, buffer_size> get_buffer_;
-  asio::detail::array<char, buffer_size> put_buffer_;
-  bool unbuffered_;
-  asio::error_code ec_;
-  std::size_t bytes_transferred_;
-  TimerService* timer_service_;
-  typename TimerService::implementation_type timer_implementation_;
-  enum state { no_timer, timer_is_pending, timer_has_expired } timer_state_;
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if !defined(ASIO_HAS_VARIADIC_TEMPLATES)
-# undef ASIO_PRIVATE_CONNECT_DEF
-#endif // !defined(ASIO_HAS_VARIADIC_TEMPLATES)
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-#endif // ASIO_BASIC_SOCKET_STREAMBUF_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_stream_socket.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_stream_socket.hpp
deleted file mode 100644
index 16962ae..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_stream_socket.hpp
+++ /dev/null
@@ -1,852 +0,0 @@
-//
-// basic_stream_socket.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_BASIC_STREAM_SOCKET_HPP
-#define ASIO_BASIC_STREAM_SOCKET_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cstddef>
-#include "asio/async_result.hpp"
-#include "asio/basic_socket.hpp"
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-#include "asio/stream_socket_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Provides stream-oriented socket functionality.
-/**
- * The basic_stream_socket class template provides asynchronous and blocking
- * stream-oriented socket functionality.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- *
- * @par Concepts:
- * AsyncReadStream, AsyncWriteStream, Stream, SyncReadStream, SyncWriteStream.
- */
-template <typename Protocol,
-    typename StreamSocketService = stream_socket_service<Protocol> >
-class basic_stream_socket
-  : public basic_socket<Protocol, StreamSocketService>
-{
-public:
-  /// (Deprecated: Use native_handle_type.) The native representation of a
-  /// socket.
-  typedef typename StreamSocketService::native_handle_type native_type;
-
-  /// The native representation of a socket.
-  typedef typename StreamSocketService::native_handle_type native_handle_type;
-
-  /// The protocol type.
-  typedef Protocol protocol_type;
-
-  /// The endpoint type.
-  typedef typename Protocol::endpoint endpoint_type;
-
-  /// Construct a basic_stream_socket without opening it.
-  /**
-   * This constructor creates a stream socket without opening it. The socket
-   * needs to be opened and then connected or accepted before data can be sent
-   * or received on it.
-   *
-   * @param io_service The io_service object that the stream socket will use to
-   * dispatch handlers for any asynchronous operations performed on the socket.
-   */
-  explicit basic_stream_socket(asio::io_service& io_service)
-    : basic_socket<Protocol, StreamSocketService>(io_service)
-  {
-  }
-
-  /// Construct and open a basic_stream_socket.
-  /**
-   * This constructor creates and opens a stream socket. The socket needs to be
-   * connected or accepted before data can be sent or received on it.
-   *
-   * @param io_service The io_service object that the stream socket will use to
-   * dispatch handlers for any asynchronous operations performed on the socket.
-   *
-   * @param protocol An object specifying protocol parameters to be used.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  basic_stream_socket(asio::io_service& io_service,
-      const protocol_type& protocol)
-    : basic_socket<Protocol, StreamSocketService>(io_service, protocol)
-  {
-  }
-
-  /// Construct a basic_stream_socket, opening it and binding it to the given
-  /// local endpoint.
-  /**
-   * This constructor creates a stream socket and automatically opens it bound
-   * to the specified endpoint on the local machine. The protocol used is the
-   * protocol associated with the given endpoint.
-   *
-   * @param io_service The io_service object that the stream socket will use to
-   * dispatch handlers for any asynchronous operations performed on the socket.
-   *
-   * @param endpoint An endpoint on the local machine to which the stream
-   * socket will be bound.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  basic_stream_socket(asio::io_service& io_service,
-      const endpoint_type& endpoint)
-    : basic_socket<Protocol, StreamSocketService>(io_service, endpoint)
-  {
-  }
-
-  /// Construct a basic_stream_socket on an existing native socket.
-  /**
-   * This constructor creates a stream socket object to hold an existing native
-   * socket.
-   *
-   * @param io_service The io_service object that the stream socket will use to
-   * dispatch handlers for any asynchronous operations performed on the socket.
-   *
-   * @param protocol An object specifying protocol parameters to be used.
-   *
-   * @param native_socket The new underlying socket implementation.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  basic_stream_socket(asio::io_service& io_service,
-      const protocol_type& protocol, const native_handle_type& native_socket)
-    : basic_socket<Protocol, StreamSocketService>(
-        io_service, protocol, native_socket)
-  {
-  }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-  /// Move-construct a basic_stream_socket from another.
-  /**
-   * This constructor moves a stream socket from one object to another.
-   *
-   * @param other The other basic_stream_socket object from which the move
-   * will occur.
-   *
-   * @note Following the move, the moved-from object is in the same state as if
-   * constructed using the @c basic_stream_socket(io_service&) constructor.
-   */
-  basic_stream_socket(basic_stream_socket&& other)
-    : basic_socket<Protocol, StreamSocketService>(
-        ASIO_MOVE_CAST(basic_stream_socket)(other))
-  {
-  }
-
-  /// Move-assign a basic_stream_socket from another.
-  /**
-   * This assignment operator moves a stream socket from one object to another.
-   *
-   * @param other The other basic_stream_socket object from which the move
-   * will occur.
-   *
-   * @note Following the move, the moved-from object is in the same state as if
-   * constructed using the @c basic_stream_socket(io_service&) constructor.
-   */
-  basic_stream_socket& operator=(basic_stream_socket&& other)
-  {
-    basic_socket<Protocol, StreamSocketService>::operator=(
-        ASIO_MOVE_CAST(basic_stream_socket)(other));
-    return *this;
-  }
-
-  /// Move-construct a basic_stream_socket from a socket of another protocol
-  /// type.
-  /**
-   * This constructor moves a stream socket from one object to another.
-   *
-   * @param other The other basic_stream_socket object from which the move
-   * will occur.
-   *
-   * @note Following the move, the moved-from object is in the same state as if
-   * constructed using the @c basic_stream_socket(io_service&) constructor.
-   */
-  template <typename Protocol1, typename StreamSocketService1>
-  basic_stream_socket(
-      basic_stream_socket<Protocol1, StreamSocketService1>&& other,
-      typename enable_if<is_convertible<Protocol1, Protocol>::value>::type* = 0)
-    : basic_socket<Protocol, StreamSocketService>(
-        ASIO_MOVE_CAST2(basic_stream_socket<
-          Protocol1, StreamSocketService1>)(other))
-  {
-  }
-
-  /// Move-assign a basic_stream_socket from a socket of another protocol type.
-  /**
-   * This assignment operator moves a stream socket from one object to another.
-   *
-   * @param other The other basic_stream_socket object from which the move
-   * will occur.
-   *
-   * @note Following the move, the moved-from object is in the same state as if
-   * constructed using the @c basic_stream_socket(io_service&) constructor.
-   */
-  template <typename Protocol1, typename StreamSocketService1>
-  typename enable_if<is_convertible<Protocol1, Protocol>::value,
-      basic_stream_socket>::type& operator=(
-        basic_stream_socket<Protocol1, StreamSocketService1>&& other)
-  {
-    basic_socket<Protocol, StreamSocketService>::operator=(
-        ASIO_MOVE_CAST2(basic_stream_socket<
-          Protocol1, StreamSocketService1>)(other));
-    return *this;
-  }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
-  /// Send some data on the socket.
-  /**
-   * This function is used to send data on the stream socket. The function
-   * call will block until one or more bytes of the data has been sent
-   * successfully, or an until error occurs.
-   *
-   * @param buffers One or more data buffers to be sent on the socket.
-   *
-   * @returns The number of bytes sent.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note The send operation may not transmit all of the data to the peer.
-   * Consider using the @ref write function if you need to ensure that all data
-   * is written before the blocking operation completes.
-   *
-   * @par Example
-   * To send a single data buffer use the @ref buffer function as follows:
-   * @code
-   * socket.send(asio::buffer(data, size));
-   * @endcode
-   * See the @ref buffer documentation for information on sending multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t send(const ConstBufferSequence& buffers)
-  {
-    asio::error_code ec;
-    std::size_t s = this->get_service().send(
-        this->get_implementation(), buffers, 0, ec);
-    asio::detail::throw_error(ec, "send");
-    return s;
-  }
-
-  /// Send some data on the socket.
-  /**
-   * This function is used to send data on the stream socket. The function
-   * call will block until one or more bytes of the data has been sent
-   * successfully, or an until error occurs.
-   *
-   * @param buffers One or more data buffers to be sent on the socket.
-   *
-   * @param flags Flags specifying how the send call is to be made.
-   *
-   * @returns The number of bytes sent.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note The send operation may not transmit all of the data to the peer.
-   * Consider using the @ref write function if you need to ensure that all data
-   * is written before the blocking operation completes.
-   *
-   * @par Example
-   * To send a single data buffer use the @ref buffer function as follows:
-   * @code
-   * socket.send(asio::buffer(data, size), 0);
-   * @endcode
-   * See the @ref buffer documentation for information on sending multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t send(const ConstBufferSequence& buffers,
-      socket_base::message_flags flags)
-  {
-    asio::error_code ec;
-    std::size_t s = this->get_service().send(
-        this->get_implementation(), buffers, flags, ec);
-    asio::detail::throw_error(ec, "send");
-    return s;
-  }
-
-  /// Send some data on the socket.
-  /**
-   * This function is used to send data on the stream socket. The function
-   * call will block until one or more bytes of the data has been sent
-   * successfully, or an until error occurs.
-   *
-   * @param buffers One or more data buffers to be sent on the socket.
-   *
-   * @param flags Flags specifying how the send call is to be made.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes sent. Returns 0 if an error occurred.
-   *
-   * @note The send operation may not transmit all of the data to the peer.
-   * Consider using the @ref write function if you need to ensure that all data
-   * is written before the blocking operation completes.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t send(const ConstBufferSequence& buffers,
-      socket_base::message_flags flags, asio::error_code& ec)
-  {
-    return this->get_service().send(
-        this->get_implementation(), buffers, flags, ec);
-  }
-
-  /// Start an asynchronous send.
-  /**
-   * This function is used to asynchronously send data on the stream socket.
-   * The function call always returns immediately.
-   *
-   * @param buffers One or more data buffers to be sent on the socket. Although
-   * the buffers object may be copied as necessary, ownership of the underlying
-   * memory blocks is retained by the caller, which must guarantee that they
-   * remain valid until the handler is called.
-   *
-   * @param handler The handler to be called when the send operation completes.
-   * Copies will be made of the handler as required. The function signature of
-   * the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes sent.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   *
-   * @note The send operation may not transmit all of the data to the peer.
-   * Consider using the @ref async_write function if you need to ensure that all
-   * data is written before the asynchronous operation completes.
-   *
-   * @par Example
-   * To send a single data buffer use the @ref buffer function as follows:
-   * @code
-   * socket.async_send(asio::buffer(data, size), handler);
-   * @endcode
-   * See the @ref buffer documentation for information on sending multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename ConstBufferSequence, typename WriteHandler>
-  ASIO_INITFN_RESULT_TYPE(WriteHandler,
-      void (asio::error_code, std::size_t))
-  async_send(const ConstBufferSequence& buffers,
-      ASIO_MOVE_ARG(WriteHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a WriteHandler.
-    ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
-    return this->get_service().async_send(
-        this->get_implementation(), buffers, 0,
-        ASIO_MOVE_CAST(WriteHandler)(handler));
-  }
-
-  /// Start an asynchronous send.
-  /**
-   * This function is used to asynchronously send data on the stream socket.
-   * The function call always returns immediately.
-   *
-   * @param buffers One or more data buffers to be sent on the socket. Although
-   * the buffers object may be copied as necessary, ownership of the underlying
-   * memory blocks is retained by the caller, which must guarantee that they
-   * remain valid until the handler is called.
-   *
-   * @param flags Flags specifying how the send call is to be made.
-   *
-   * @param handler The handler to be called when the send operation completes.
-   * Copies will be made of the handler as required. The function signature of
-   * the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes sent.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   *
-   * @note The send operation may not transmit all of the data to the peer.
-   * Consider using the @ref async_write function if you need to ensure that all
-   * data is written before the asynchronous operation completes.
-   *
-   * @par Example
-   * To send a single data buffer use the @ref buffer function as follows:
-   * @code
-   * socket.async_send(asio::buffer(data, size), 0, handler);
-   * @endcode
-   * See the @ref buffer documentation for information on sending multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename ConstBufferSequence, typename WriteHandler>
-  ASIO_INITFN_RESULT_TYPE(WriteHandler,
-      void (asio::error_code, std::size_t))
-  async_send(const ConstBufferSequence& buffers,
-      socket_base::message_flags flags,
-      ASIO_MOVE_ARG(WriteHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a WriteHandler.
-    ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
-    return this->get_service().async_send(
-        this->get_implementation(), buffers, flags,
-        ASIO_MOVE_CAST(WriteHandler)(handler));
-  }
-
-  /// Receive some data on the socket.
-  /**
-   * This function is used to receive data on the stream socket. The function
-   * call will block until one or more bytes of data has been received
-   * successfully, or until an error occurs.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   *
-   * @returns The number of bytes received.
-   *
-   * @throws asio::system_error Thrown on failure. An error code of
-   * asio::error::eof indicates that the connection was closed by the
-   * peer.
-   *
-   * @note The receive operation may not receive all of the requested number of
-   * bytes. Consider using the @ref read function if you need to ensure that the
-   * requested amount of data is read before the blocking operation completes.
-   *
-   * @par Example
-   * To receive into a single data buffer use the @ref buffer function as
-   * follows:
-   * @code
-   * socket.receive(asio::buffer(data, size));
-   * @endcode
-   * See the @ref buffer documentation for information on receiving into
-   * multiple buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t receive(const MutableBufferSequence& buffers)
-  {
-    asio::error_code ec;
-    std::size_t s = this->get_service().receive(
-        this->get_implementation(), buffers, 0, ec);
-    asio::detail::throw_error(ec, "receive");
-    return s;
-  }
-
-  /// Receive some data on the socket.
-  /**
-   * This function is used to receive data on the stream socket. The function
-   * call will block until one or more bytes of data has been received
-   * successfully, or until an error occurs.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   *
-   * @param flags Flags specifying how the receive call is to be made.
-   *
-   * @returns The number of bytes received.
-   *
-   * @throws asio::system_error Thrown on failure. An error code of
-   * asio::error::eof indicates that the connection was closed by the
-   * peer.
-   *
-   * @note The receive operation may not receive all of the requested number of
-   * bytes. Consider using the @ref read function if you need to ensure that the
-   * requested amount of data is read before the blocking operation completes.
-   *
-   * @par Example
-   * To receive into a single data buffer use the @ref buffer function as
-   * follows:
-   * @code
-   * socket.receive(asio::buffer(data, size), 0);
-   * @endcode
-   * See the @ref buffer documentation for information on receiving into
-   * multiple buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t receive(const MutableBufferSequence& buffers,
-      socket_base::message_flags flags)
-  {
-    asio::error_code ec;
-    std::size_t s = this->get_service().receive(
-        this->get_implementation(), buffers, flags, ec);
-    asio::detail::throw_error(ec, "receive");
-    return s;
-  }
-
-  /// Receive some data on a connected socket.
-  /**
-   * This function is used to receive data on the stream socket. The function
-   * call will block until one or more bytes of data has been received
-   * successfully, or until an error occurs.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   *
-   * @param flags Flags specifying how the receive call is to be made.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes received. Returns 0 if an error occurred.
-   *
-   * @note The receive operation may not receive all of the requested number of
-   * bytes. Consider using the @ref read function if you need to ensure that the
-   * requested amount of data is read before the blocking operation completes.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t receive(const MutableBufferSequence& buffers,
-      socket_base::message_flags flags, asio::error_code& ec)
-  {
-    return this->get_service().receive(
-        this->get_implementation(), buffers, flags, ec);
-  }
-
-  /// Start an asynchronous receive.
-  /**
-   * This function is used to asynchronously receive data from the stream
-   * socket. The function call always returns immediately.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param handler The handler to be called when the receive operation
-   * completes. Copies will be made of the handler as required. The function
-   * signature of the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes received.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   *
-   * @note The receive operation may not receive all of the requested number of
-   * bytes. Consider using the @ref async_read function if you need to ensure
-   * that the requested amount of data is received before the asynchronous
-   * operation completes.
-   *
-   * @par Example
-   * To receive into a single data buffer use the @ref buffer function as
-   * follows:
-   * @code
-   * socket.async_receive(asio::buffer(data, size), handler);
-   * @endcode
-   * See the @ref buffer documentation for information on receiving into
-   * multiple buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence, typename ReadHandler>
-  ASIO_INITFN_RESULT_TYPE(ReadHandler,
-      void (asio::error_code, std::size_t))
-  async_receive(const MutableBufferSequence& buffers,
-      ASIO_MOVE_ARG(ReadHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a ReadHandler.
-    ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
-    return this->get_service().async_receive(this->get_implementation(),
-        buffers, 0, ASIO_MOVE_CAST(ReadHandler)(handler));
-  }
-
-  /// Start an asynchronous receive.
-  /**
-   * This function is used to asynchronously receive data from the stream
-   * socket. The function call always returns immediately.
-   *
-   * @param buffers One or more buffers into which the data will be received.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param flags Flags specifying how the receive call is to be made.
-   *
-   * @param handler The handler to be called when the receive operation
-   * completes. Copies will be made of the handler as required. The function
-   * signature of the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes received.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   *
-   * @note The receive operation may not receive all of the requested number of
-   * bytes. Consider using the @ref async_read function if you need to ensure
-   * that the requested amount of data is received before the asynchronous
-   * operation completes.
-   *
-   * @par Example
-   * To receive into a single data buffer use the @ref buffer function as
-   * follows:
-   * @code
-   * socket.async_receive(asio::buffer(data, size), 0, handler);
-   * @endcode
-   * See the @ref buffer documentation for information on receiving into
-   * multiple buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence, typename ReadHandler>
-  ASIO_INITFN_RESULT_TYPE(ReadHandler,
-      void (asio::error_code, std::size_t))
-  async_receive(const MutableBufferSequence& buffers,
-      socket_base::message_flags flags,
-      ASIO_MOVE_ARG(ReadHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a ReadHandler.
-    ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
-    return this->get_service().async_receive(this->get_implementation(),
-        buffers, flags, ASIO_MOVE_CAST(ReadHandler)(handler));
-  }
-
-  /// Write some data to the socket.
-  /**
-   * This function is used to write data to the stream socket. The function call
-   * will block until one or more bytes of the data has been written
-   * successfully, or until an error occurs.
-   *
-   * @param buffers One or more data buffers to be written to the socket.
-   *
-   * @returns The number of bytes written.
-   *
-   * @throws asio::system_error Thrown on failure. An error code of
-   * asio::error::eof indicates that the connection was closed by the
-   * peer.
-   *
-   * @note The write_some operation may not transmit all of the data to the
-   * peer. Consider using the @ref write function if you need to ensure that
-   * all data is written before the blocking operation completes.
-   *
-   * @par Example
-   * To write a single data buffer use the @ref buffer function as follows:
-   * @code
-   * socket.write_some(asio::buffer(data, size));
-   * @endcode
-   * See the @ref buffer documentation for information on writing multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t write_some(const ConstBufferSequence& buffers)
-  {
-    asio::error_code ec;
-    std::size_t s = this->get_service().send(
-        this->get_implementation(), buffers, 0, ec);
-    asio::detail::throw_error(ec, "write_some");
-    return s;
-  }
-
-  /// Write some data to the socket.
-  /**
-   * This function is used to write data to the stream socket. The function call
-   * will block until one or more bytes of the data has been written
-   * successfully, or until an error occurs.
-   *
-   * @param buffers One or more data buffers to be written to the socket.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes written. Returns 0 if an error occurred.
-   *
-   * @note The write_some operation may not transmit all of the data to the
-   * peer. Consider using the @ref write function if you need to ensure that
-   * all data is written before the blocking operation completes.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t write_some(const ConstBufferSequence& buffers,
-      asio::error_code& ec)
-  {
-    return this->get_service().send(this->get_implementation(), buffers, 0, ec);
-  }
-
-  /// Start an asynchronous write.
-  /**
-   * This function is used to asynchronously write data to the stream socket.
-   * The function call always returns immediately.
-   *
-   * @param buffers One or more data buffers to be written to the socket.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param handler The handler to be called when the write operation completes.
-   * Copies will be made of the handler as required. The function signature of
-   * the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes written.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   *
-   * @note The write operation may not transmit all of the data to the peer.
-   * Consider using the @ref async_write function if you need to ensure that all
-   * data is written before the asynchronous operation completes.
-   *
-   * @par Example
-   * To write a single data buffer use the @ref buffer function as follows:
-   * @code
-   * socket.async_write_some(asio::buffer(data, size), handler);
-   * @endcode
-   * See the @ref buffer documentation for information on writing multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename ConstBufferSequence, typename WriteHandler>
-  ASIO_INITFN_RESULT_TYPE(WriteHandler,
-      void (asio::error_code, std::size_t))
-  async_write_some(const ConstBufferSequence& buffers,
-      ASIO_MOVE_ARG(WriteHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a WriteHandler.
-    ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
-    return this->get_service().async_send(this->get_implementation(),
-        buffers, 0, ASIO_MOVE_CAST(WriteHandler)(handler));
-  }
-
-  /// Read some data from the socket.
-  /**
-   * This function is used to read data from the stream socket. The function
-   * call will block until one or more bytes of data has been read successfully,
-   * or until an error occurs.
-   *
-   * @param buffers One or more buffers into which the data will be read.
-   *
-   * @returns The number of bytes read.
-   *
-   * @throws asio::system_error Thrown on failure. An error code of
-   * asio::error::eof indicates that the connection was closed by the
-   * peer.
-   *
-   * @note The read_some operation may not read all of the requested number of
-   * bytes. Consider using the @ref read function if you need to ensure that
-   * the requested amount of data is read before the blocking operation
-   * completes.
-   *
-   * @par Example
-   * To read into a single data buffer use the @ref buffer function as follows:
-   * @code
-   * socket.read_some(asio::buffer(data, size));
-   * @endcode
-   * See the @ref buffer documentation for information on reading into multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t read_some(const MutableBufferSequence& buffers)
-  {
-    asio::error_code ec;
-    std::size_t s = this->get_service().receive(
-        this->get_implementation(), buffers, 0, ec);
-    asio::detail::throw_error(ec, "read_some");
-    return s;
-  }
-
-  /// Read some data from the socket.
-  /**
-   * This function is used to read data from the stream socket. The function
-   * call will block until one or more bytes of data has been read successfully,
-   * or until an error occurs.
-   *
-   * @param buffers One or more buffers into which the data will be read.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes read. Returns 0 if an error occurred.
-   *
-   * @note The read_some operation may not read all of the requested number of
-   * bytes. Consider using the @ref read function if you need to ensure that
-   * the requested amount of data is read before the blocking operation
-   * completes.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t read_some(const MutableBufferSequence& buffers,
-      asio::error_code& ec)
-  {
-    return this->get_service().receive(
-        this->get_implementation(), buffers, 0, ec);
-  }
-
-  /// Start an asynchronous read.
-  /**
-   * This function is used to asynchronously read data from the stream socket.
-   * The function call always returns immediately.
-   *
-   * @param buffers One or more buffers into which the data will be read.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param handler The handler to be called when the read operation completes.
-   * Copies will be made of the handler as required. The function signature of
-   * the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes read.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   *
-   * @note The read operation may not read all of the requested number of bytes.
-   * Consider using the @ref async_read function if you need to ensure that the
-   * requested amount of data is read before the asynchronous operation
-   * completes.
-   *
-   * @par Example
-   * To read into a single data buffer use the @ref buffer function as follows:
-   * @code
-   * socket.async_read_some(asio::buffer(data, size), handler);
-   * @endcode
-   * See the @ref buffer documentation for information on reading into multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence, typename ReadHandler>
-  ASIO_INITFN_RESULT_TYPE(ReadHandler,
-      void (asio::error_code, std::size_t))
-  async_read_some(const MutableBufferSequence& buffers,
-      ASIO_MOVE_ARG(ReadHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a ReadHandler.
-    ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
-    return this->get_service().async_receive(this->get_implementation(),
-        buffers, 0, ASIO_MOVE_CAST(ReadHandler)(handler));
-  }
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_BASIC_STREAM_SOCKET_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_streambuf.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_streambuf.hpp
deleted file mode 100644
index 34aa8e4..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_streambuf.hpp
+++ /dev/null
@@ -1,369 +0,0 @@
-//
-// basic_streambuf.hpp
-// ~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_BASIC_STREAMBUF_HPP
-#define ASIO_BASIC_STREAMBUF_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-#include <algorithm>
-#include <cstring>
-#include <stdexcept>
-#include <streambuf>
-#include <vector>
-#include "asio/basic_streambuf_fwd.hpp"
-#include "asio/buffer.hpp"
-#include "asio/detail/limits.hpp"
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/throw_exception.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Automatically resizable buffer class based on std::streambuf.
-/**
- * The @c basic_streambuf class is derived from @c std::streambuf to associate
- * the streambuf's input and output sequences with one or more character
- * arrays. These character arrays are internal to the @c basic_streambuf
- * object, but direct access to the array elements is provided to permit them
- * to be used efficiently with I/O operations. Characters written to the output
- * sequence of a @c basic_streambuf object are appended to the input sequence
- * of the same object.
- *
- * The @c basic_streambuf class's public interface is intended to permit the
- * following implementation strategies:
- *
- * @li A single contiguous character array, which is reallocated as necessary
- * to accommodate changes in the size of the character sequence. This is the
- * implementation approach currently used in Asio.
- *
- * @li A sequence of one or more character arrays, where each array is of the
- * same size. Additional character array objects are appended to the sequence
- * to accommodate changes in the size of the character sequence.
- *
- * @li A sequence of one or more character arrays of varying sizes. Additional
- * character array objects are appended to the sequence to accommodate changes
- * in the size of the character sequence.
- *
- * The constructor for basic_streambuf accepts a @c size_t argument specifying
- * the maximum of the sum of the sizes of the input sequence and output
- * sequence. During the lifetime of the @c basic_streambuf object, the following
- * invariant holds:
- * @code size() <= max_size()@endcode
- * Any member function that would, if successful, cause the invariant to be
- * violated shall throw an exception of class @c std::length_error.
- *
- * The constructor for @c basic_streambuf takes an Allocator argument. A copy
- * of this argument is used for any memory allocation performed, by the
- * constructor and by all member functions, during the lifetime of each @c
- * basic_streambuf object.
- *
- * @par Examples
- * Writing directly from an streambuf to a socket:
- * @code
- * asio::streambuf b;
- * std::ostream os(&b);
- * os << "Hello, World!\n";
- *
- * // try sending some data in input sequence
- * size_t n = sock.send(b.data());
- *
- * b.consume(n); // sent data is removed from input sequence
- * @endcode
- *
- * Reading from a socket directly into a streambuf:
- * @code
- * asio::streambuf b;
- *
- * // reserve 512 bytes in output sequence
- * asio::streambuf::mutable_buffers_type bufs = b.prepare(512);
- *
- * size_t n = sock.receive(bufs);
- *
- * // received data is "committed" from output sequence to input sequence
- * b.commit(n);
- *
- * std::istream is(&b);
- * std::string s;
- * is >> s;
- * @endcode
- */
-#if defined(GENERATING_DOCUMENTATION)
-template <typename Allocator = std::allocator<char> >
-#else
-template <typename Allocator>
-#endif
-class basic_streambuf
-  : public std::streambuf,
-    private noncopyable
-{
-public:
-#if defined(GENERATING_DOCUMENTATION)
-  /// The type used to represent the input sequence as a list of buffers.
-  typedef implementation_defined const_buffers_type;
-
-  /// The type used to represent the output sequence as a list of buffers.
-  typedef implementation_defined mutable_buffers_type;
-#else
-  typedef asio::const_buffers_1 const_buffers_type;
-  typedef asio::mutable_buffers_1 mutable_buffers_type;
-#endif
-
-  /// Construct a basic_streambuf object.
-  /**
-   * Constructs a streambuf with the specified maximum size. The initial size
-   * of the streambuf's input sequence is 0.
-   */
-  explicit basic_streambuf(
-      std::size_t maximum_size = (std::numeric_limits<std::size_t>::max)(),
-      const Allocator& allocator = Allocator())
-    : max_size_(maximum_size),
-      buffer_(allocator)
-  {
-    std::size_t pend = (std::min<std::size_t>)(max_size_, buffer_delta);
-    buffer_.resize((std::max<std::size_t>)(pend, 1));
-    setg(&buffer_[0], &buffer_[0], &buffer_[0]);
-    setp(&buffer_[0], &buffer_[0] + pend);
-  }
-
-  /// Get the size of the input sequence.
-  /**
-   * @returns The size of the input sequence. The value is equal to that
-   * calculated for @c s in the following code:
-   * @code
-   * size_t s = 0;
-   * const_buffers_type bufs = data();
-   * const_buffers_type::const_iterator i = bufs.begin();
-   * while (i != bufs.end())
-   * {
-   *   const_buffer buf(*i++);
-   *   s += buffer_size(buf);
-   * }
-   * @endcode
-   */
-  std::size_t size() const
-  {
-    return pptr() - gptr();
-  }
-
-  /// Get the maximum size of the basic_streambuf.
-  /**
-   * @returns The allowed maximum of the sum of the sizes of the input sequence
-   * and output sequence.
-   */
-  std::size_t max_size() const
-  {
-    return max_size_;
-  }
-
-  /// Get a list of buffers that represents the input sequence.
-  /**
-   * @returns An object of type @c const_buffers_type that satisfies
-   * ConstBufferSequence requirements, representing all character arrays in the
-   * input sequence.
-   *
-   * @note The returned object is invalidated by any @c basic_streambuf member
-   * function that modifies the input sequence or output sequence.
-   */
-  const_buffers_type data() const
-  {
-    return asio::buffer(asio::const_buffer(gptr(),
-          (pptr() - gptr()) * sizeof(char_type)));
-  }
-
-  /// Get a list of buffers that represents the output sequence, with the given
-  /// size.
-  /**
-   * Ensures that the output sequence can accommodate @c n characters,
-   * reallocating character array objects as necessary.
-   *
-   * @returns An object of type @c mutable_buffers_type that satisfies
-   * MutableBufferSequence requirements, representing character array objects
-   * at the start of the output sequence such that the sum of the buffer sizes
-   * is @c n.
-   *
-   * @throws std::length_error If <tt>size() + n > max_size()</tt>.
-   *
-   * @note The returned object is invalidated by any @c basic_streambuf member
-   * function that modifies the input sequence or output sequence.
-   */
-  mutable_buffers_type prepare(std::size_t n)
-  {
-    reserve(n);
-    return asio::buffer(asio::mutable_buffer(
-          pptr(), n * sizeof(char_type)));
-  }
-
-  /// Move characters from the output sequence to the input sequence.
-  /**
-   * Appends @c n characters from the start of the output sequence to the input
-   * sequence. The beginning of the output sequence is advanced by @c n
-   * characters.
-   *
-   * Requires a preceding call <tt>prepare(x)</tt> where <tt>x >= n</tt>, and
-   * no intervening operations that modify the input or output sequence.
-   *
-   * @note If @c n is greater than the size of the output sequence, the entire
-   * output sequence is moved to the input sequence and no error is issued.
-   */
-  void commit(std::size_t n)
-  {
-    if (pptr() + n > epptr())
-      n = epptr() - pptr();
-    pbump(static_cast<int>(n));
-    setg(eback(), gptr(), pptr());
-  }
-
-  /// Remove characters from the input sequence.
-  /**
-   * Removes @c n characters from the beginning of the input sequence.
-   *
-   * @note If @c n is greater than the size of the input sequence, the entire
-   * input sequence is consumed and no error is issued.
-   */
-  void consume(std::size_t n)
-  {
-    if (egptr() < pptr())
-      setg(&buffer_[0], gptr(), pptr());
-    if (gptr() + n > pptr())
-      n = pptr() - gptr();
-    gbump(static_cast<int>(n));
-  }
-
-protected:
-  enum { buffer_delta = 128 };
-
-  /// Override std::streambuf behaviour.
-  /**
-   * Behaves according to the specification of @c std::streambuf::underflow().
-   */
-  int_type underflow()
-  {
-    if (gptr() < pptr())
-    {
-      setg(&buffer_[0], gptr(), pptr());
-      return traits_type::to_int_type(*gptr());
-    }
-    else
-    {
-      return traits_type::eof();
-    }
-  }
-
-  /// Override std::streambuf behaviour.
-  /**
-   * Behaves according to the specification of @c std::streambuf::overflow(),
-   * with the specialisation that @c std::length_error is thrown if appending
-   * the character to the input sequence would require the condition
-   * <tt>size() > max_size()</tt> to be true.
-   */
-  int_type overflow(int_type c)
-  {
-    if (!traits_type::eq_int_type(c, traits_type::eof()))
-    {
-      if (pptr() == epptr())
-      {
-        std::size_t buffer_size = pptr() - gptr();
-        if (buffer_size < max_size_ && max_size_ - buffer_size < buffer_delta)
-        {
-          reserve(max_size_ - buffer_size);
-        }
-        else
-        {
-          reserve(buffer_delta);
-        }
-      }
-
-      *pptr() = traits_type::to_char_type(c);
-      pbump(1);
-      return c;
-    }
-
-    return traits_type::not_eof(c);
-  }
-
-  void reserve(std::size_t n)
-  {
-    // Get current stream positions as offsets.
-    std::size_t gnext = gptr() - &buffer_[0];
-    std::size_t pnext = pptr() - &buffer_[0];
-    std::size_t pend = epptr() - &buffer_[0];
-
-    // Check if there is already enough space in the put area.
-    if (n <= pend - pnext)
-    {
-      return;
-    }
-
-    // Shift existing contents of get area to start of buffer.
-    if (gnext > 0)
-    {
-      pnext -= gnext;
-      std::memmove(&buffer_[0], &buffer_[0] + gnext, pnext);
-    }
-
-    // Ensure buffer is large enough to hold at least the specified size.
-    if (n > pend - pnext)
-    {
-      if (n <= max_size_ && pnext <= max_size_ - n)
-      {
-        pend = pnext + n;
-        buffer_.resize((std::max<std::size_t>)(pend, 1));
-      }
-      else
-      {
-        std::length_error ex("asio::streambuf too long");
-        asio::detail::throw_exception(ex);
-      }
-    }
-
-    // Update stream positions.
-    setg(&buffer_[0], &buffer_[0], &buffer_[0] + pnext);
-    setp(&buffer_[0] + pnext, &buffer_[0] + pend);
-  }
-
-private:
-  std::size_t max_size_;
-  std::vector<char_type, Allocator> buffer_;
-
-  // Helper function to get the preferred size for reading data.
-  friend std::size_t read_size_helper(
-      basic_streambuf& sb, std::size_t max_size)
-  {
-    return std::min<std::size_t>(
-        std::max<std::size_t>(512, sb.buffer_.capacity() - sb.size()),
-        std::min<std::size_t>(max_size, sb.max_size() - sb.size()));
-  }
-};
-
-// Helper function to get the preferred size for reading data. Used for any
-// user-provided specialisations of basic_streambuf.
-template <typename Allocator>
-inline std::size_t read_size_helper(
-    basic_streambuf<Allocator>& sb, std::size_t max_size)
-{
-  return std::min<std::size_t>(512,
-      std::min<std::size_t>(max_size, sb.max_size() - sb.size()));
-}
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-#endif // ASIO_BASIC_STREAMBUF_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_streambuf_fwd.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_streambuf_fwd.hpp
deleted file mode 100644
index c53576b..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_streambuf_fwd.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-//
-// basic_streambuf_fwd.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_BASIC_STREAMBUF_FWD_HPP
-#define ASIO_BASIC_STREAMBUF_FWD_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-#include <memory>
-
-namespace asio {
-
-template <typename Allocator = std::allocator<char> >
-class basic_streambuf;
-
-} // namespace asio
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-#endif // ASIO_BASIC_STREAMBUF_FWD_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_waitable_timer.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_waitable_timer.hpp
deleted file mode 100644
index 02c2e9a..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/basic_waitable_timer.hpp
+++ /dev/null
@@ -1,519 +0,0 @@
-//
-// basic_waitable_timer.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_BASIC_WAITABLE_TIMER_HPP
-#define ASIO_BASIC_WAITABLE_TIMER_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cstddef>
-#include "asio/basic_io_object.hpp"
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-#include "asio/wait_traits.hpp"
-#include "asio/waitable_timer_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Provides waitable timer functionality.
-/**
- * The basic_waitable_timer class template provides the ability to perform a
- * blocking or asynchronous wait for a timer to expire.
- *
- * A waitable timer is always in one of two states: "expired" or "not expired".
- * If the wait() or async_wait() function is called on an expired timer, the
- * wait operation will complete immediately.
- *
- * Most applications will use one of the asio::steady_timer,
- * asio::system_timer or asio::high_resolution_timer typedefs.
- *
- * @note This waitable timer functionality is for use with the C++11 standard
- * library's @c &lt;chrono&gt; facility, or with the Boost.Chrono library.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- *
- * @par Examples
- * Performing a blocking wait (C++11):
- * @code
- * // Construct a timer without setting an expiry time.
- * asio::steady_timer timer(io_service);
- *
- * // Set an expiry time relative to now.
- * timer.expires_from_now(std::chrono::seconds(5));
- *
- * // Wait for the timer to expire.
- * timer.wait();
- * @endcode
- *
- * @par 
- * Performing an asynchronous wait (C++11):
- * @code
- * void handler(const asio::error_code& error)
- * {
- *   if (!error)
- *   {
- *     // Timer expired.
- *   }
- * }
- *
- * ...
- *
- * // Construct a timer with an absolute expiry time.
- * asio::steady_timer timer(io_service,
- *     std::chrono::steady_clock::now() + std::chrono::seconds(60));
- *
- * // Start an asynchronous wait.
- * timer.async_wait(handler);
- * @endcode
- *
- * @par Changing an active waitable timer's expiry time
- *
- * Changing the expiry time of a timer while there are pending asynchronous
- * waits causes those wait operations to be cancelled. To ensure that the action
- * associated with the timer is performed only once, use something like this:
- * used:
- *
- * @code
- * void on_some_event()
- * {
- *   if (my_timer.expires_from_now(seconds(5)) > 0)
- *   {
- *     // We managed to cancel the timer. Start new asynchronous wait.
- *     my_timer.async_wait(on_timeout);
- *   }
- *   else
- *   {
- *     // Too late, timer has already expired!
- *   }
- * }
- *
- * void on_timeout(const asio::error_code& e)
- * {
- *   if (e != asio::error::operation_aborted)
- *   {
- *     // Timer was not cancelled, take necessary action.
- *   }
- * }
- * @endcode
- *
- * @li The asio::basic_waitable_timer::expires_from_now() function
- * cancels any pending asynchronous waits, and returns the number of
- * asynchronous waits that were cancelled. If it returns 0 then you were too
- * late and the wait handler has already been executed, or will soon be
- * executed. If it returns 1 then the wait handler was successfully cancelled.
- *
- * @li If a wait handler is cancelled, the asio::error_code passed to
- * it contains the value asio::error::operation_aborted.
- */
-template <typename Clock,
-    typename WaitTraits = asio::wait_traits<Clock>,
-    typename WaitableTimerService = waitable_timer_service<Clock, WaitTraits> >
-class basic_waitable_timer
-  : public basic_io_object<WaitableTimerService>
-{
-public:
-  /// The clock type.
-  typedef Clock clock_type;
-
-  /// The duration type of the clock.
-  typedef typename clock_type::duration duration;
-
-  /// The time point type of the clock.
-  typedef typename clock_type::time_point time_point;
-
-  /// The wait traits type.
-  typedef WaitTraits traits_type;
-
-  /// Constructor.
-  /**
-   * This constructor creates a timer without setting an expiry time. The
-   * expires_at() or expires_from_now() functions must be called to set an
-   * expiry time before the timer can be waited on.
-   *
-   * @param io_service The io_service object that the timer will use to dispatch
-   * handlers for any asynchronous operations performed on the timer.
-   */
-  explicit basic_waitable_timer(asio::io_service& io_service)
-    : basic_io_object<WaitableTimerService>(io_service)
-  {
-  }
-
-  /// Constructor to set a particular expiry time as an absolute time.
-  /**
-   * This constructor creates a timer and sets the expiry time.
-   *
-   * @param io_service The io_service object that the timer will use to dispatch
-   * handlers for any asynchronous operations performed on the timer.
-   *
-   * @param expiry_time The expiry time to be used for the timer, expressed
-   * as an absolute time.
-   */
-  basic_waitable_timer(asio::io_service& io_service,
-      const time_point& expiry_time)
-    : basic_io_object<WaitableTimerService>(io_service)
-  {
-    asio::error_code ec;
-    this->service.expires_at(this->implementation, expiry_time, ec);
-    asio::detail::throw_error(ec, "expires_at");
-  }
-
-  /// Constructor to set a particular expiry time relative to now.
-  /**
-   * This constructor creates a timer and sets the expiry time.
-   *
-   * @param io_service The io_service object that the timer will use to dispatch
-   * handlers for any asynchronous operations performed on the timer.
-   *
-   * @param expiry_time The expiry time to be used for the timer, relative to
-   * now.
-   */
-  basic_waitable_timer(asio::io_service& io_service,
-      const duration& expiry_time)
-    : basic_io_object<WaitableTimerService>(io_service)
-  {
-    asio::error_code ec;
-    this->service.expires_from_now(this->implementation, expiry_time, ec);
-    asio::detail::throw_error(ec, "expires_from_now");
-  }
-
-  /// Cancel any asynchronous operations that are waiting on the timer.
-  /**
-   * This function forces the completion of any pending asynchronous wait
-   * operations against the timer. The handler for each cancelled operation will
-   * be invoked with the asio::error::operation_aborted error code.
-   *
-   * Cancelling the timer does not change the expiry time.
-   *
-   * @return The number of asynchronous operations that were cancelled.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note If the timer has already expired when cancel() is called, then the
-   * handlers for asynchronous wait operations will:
-   *
-   * @li have already been invoked; or
-   *
-   * @li have been queued for invocation in the near future.
-   *
-   * These handlers can no longer be cancelled, and therefore are passed an
-   * error code that indicates the successful completion of the wait operation.
-   */
-  std::size_t cancel()
-  {
-    asio::error_code ec;
-    std::size_t s = this->service.cancel(this->implementation, ec);
-    asio::detail::throw_error(ec, "cancel");
-    return s;
-  }
-
-  /// Cancel any asynchronous operations that are waiting on the timer.
-  /**
-   * This function forces the completion of any pending asynchronous wait
-   * operations against the timer. The handler for each cancelled operation will
-   * be invoked with the asio::error::operation_aborted error code.
-   *
-   * Cancelling the timer does not change the expiry time.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @return The number of asynchronous operations that were cancelled.
-   *
-   * @note If the timer has already expired when cancel() is called, then the
-   * handlers for asynchronous wait operations will:
-   *
-   * @li have already been invoked; or
-   *
-   * @li have been queued for invocation in the near future.
-   *
-   * These handlers can no longer be cancelled, and therefore are passed an
-   * error code that indicates the successful completion of the wait operation.
-   */
-  std::size_t cancel(asio::error_code& ec)
-  {
-    return this->service.cancel(this->implementation, ec);
-  }
-
-  /// Cancels one asynchronous operation that is waiting on the timer.
-  /**
-   * This function forces the completion of one pending asynchronous wait
-   * operation against the timer. Handlers are cancelled in FIFO order. The
-   * handler for the cancelled operation will be invoked with the
-   * asio::error::operation_aborted error code.
-   *
-   * Cancelling the timer does not change the expiry time.
-   *
-   * @return The number of asynchronous operations that were cancelled. That is,
-   * either 0 or 1.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note If the timer has already expired when cancel_one() is called, then
-   * the handlers for asynchronous wait operations will:
-   *
-   * @li have already been invoked; or
-   *
-   * @li have been queued for invocation in the near future.
-   *
-   * These handlers can no longer be cancelled, and therefore are passed an
-   * error code that indicates the successful completion of the wait operation.
-   */
-  std::size_t cancel_one()
-  {
-    asio::error_code ec;
-    std::size_t s = this->service.cancel_one(this->implementation, ec);
-    asio::detail::throw_error(ec, "cancel_one");
-    return s;
-  }
-
-  /// Cancels one asynchronous operation that is waiting on the timer.
-  /**
-   * This function forces the completion of one pending asynchronous wait
-   * operation against the timer. Handlers are cancelled in FIFO order. The
-   * handler for the cancelled operation will be invoked with the
-   * asio::error::operation_aborted error code.
-   *
-   * Cancelling the timer does not change the expiry time.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @return The number of asynchronous operations that were cancelled. That is,
-   * either 0 or 1.
-   *
-   * @note If the timer has already expired when cancel_one() is called, then
-   * the handlers for asynchronous wait operations will:
-   *
-   * @li have already been invoked; or
-   *
-   * @li have been queued for invocation in the near future.
-   *
-   * These handlers can no longer be cancelled, and therefore are passed an
-   * error code that indicates the successful completion of the wait operation.
-   */
-  std::size_t cancel_one(asio::error_code& ec)
-  {
-    return this->service.cancel_one(this->implementation, ec);
-  }
-
-  /// Get the timer's expiry time as an absolute time.
-  /**
-   * This function may be used to obtain the timer's current expiry time.
-   * Whether the timer has expired or not does not affect this value.
-   */
-  time_point expires_at() const
-  {
-    return this->service.expires_at(this->implementation);
-  }
-
-  /// Set the timer's expiry time as an absolute time.
-  /**
-   * This function sets the expiry time. Any pending asynchronous wait
-   * operations will be cancelled. The handler for each cancelled operation will
-   * be invoked with the asio::error::operation_aborted error code.
-   *
-   * @param expiry_time The expiry time to be used for the timer.
-   *
-   * @return The number of asynchronous operations that were cancelled.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note If the timer has already expired when expires_at() is called, then
-   * the handlers for asynchronous wait operations will:
-   *
-   * @li have already been invoked; or
-   *
-   * @li have been queued for invocation in the near future.
-   *
-   * These handlers can no longer be cancelled, and therefore are passed an
-   * error code that indicates the successful completion of the wait operation.
-   */
-  std::size_t expires_at(const time_point& expiry_time)
-  {
-    asio::error_code ec;
-    std::size_t s = this->service.expires_at(
-        this->implementation, expiry_time, ec);
-    asio::detail::throw_error(ec, "expires_at");
-    return s;
-  }
-
-  /// Set the timer's expiry time as an absolute time.
-  /**
-   * This function sets the expiry time. Any pending asynchronous wait
-   * operations will be cancelled. The handler for each cancelled operation will
-   * be invoked with the asio::error::operation_aborted error code.
-   *
-   * @param expiry_time The expiry time to be used for the timer.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @return The number of asynchronous operations that were cancelled.
-   *
-   * @note If the timer has already expired when expires_at() is called, then
-   * the handlers for asynchronous wait operations will:
-   *
-   * @li have already been invoked; or
-   *
-   * @li have been queued for invocation in the near future.
-   *
-   * These handlers can no longer be cancelled, and therefore are passed an
-   * error code that indicates the successful completion of the wait operation.
-   */
-  std::size_t expires_at(const time_point& expiry_time,
-      asio::error_code& ec)
-  {
-    return this->service.expires_at(this->implementation, expiry_time, ec);
-  }
-
-  /// Get the timer's expiry time relative to now.
-  /**
-   * This function may be used to obtain the timer's current expiry time.
-   * Whether the timer has expired or not does not affect this value.
-   */
-  duration expires_from_now() const
-  {
-    return this->service.expires_from_now(this->implementation);
-  }
-
-  /// Set the timer's expiry time relative to now.
-  /**
-   * This function sets the expiry time. Any pending asynchronous wait
-   * operations will be cancelled. The handler for each cancelled operation will
-   * be invoked with the asio::error::operation_aborted error code.
-   *
-   * @param expiry_time The expiry time to be used for the timer.
-   *
-   * @return The number of asynchronous operations that were cancelled.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note If the timer has already expired when expires_from_now() is called,
-   * then the handlers for asynchronous wait operations will:
-   *
-   * @li have already been invoked; or
-   *
-   * @li have been queued for invocation in the near future.
-   *
-   * These handlers can no longer be cancelled, and therefore are passed an
-   * error code that indicates the successful completion of the wait operation.
-   */
-  std::size_t expires_from_now(const duration& expiry_time)
-  {
-    asio::error_code ec;
-    std::size_t s = this->service.expires_from_now(
-        this->implementation, expiry_time, ec);
-    asio::detail::throw_error(ec, "expires_from_now");
-    return s;
-  }
-
-  /// Set the timer's expiry time relative to now.
-  /**
-   * This function sets the expiry time. Any pending asynchronous wait
-   * operations will be cancelled. The handler for each cancelled operation will
-   * be invoked with the asio::error::operation_aborted error code.
-   *
-   * @param expiry_time The expiry time to be used for the timer.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @return The number of asynchronous operations that were cancelled.
-   *
-   * @note If the timer has already expired when expires_from_now() is called,
-   * then the handlers for asynchronous wait operations will:
-   *
-   * @li have already been invoked; or
-   *
-   * @li have been queued for invocation in the near future.
-   *
-   * These handlers can no longer be cancelled, and therefore are passed an
-   * error code that indicates the successful completion of the wait operation.
-   */
-  std::size_t expires_from_now(const duration& expiry_time,
-      asio::error_code& ec)
-  {
-    return this->service.expires_from_now(
-        this->implementation, expiry_time, ec);
-  }
-
-  /// Perform a blocking wait on the timer.
-  /**
-   * This function is used to wait for the timer to expire. This function
-   * blocks and does not return until the timer has expired.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  void wait()
-  {
-    asio::error_code ec;
-    this->service.wait(this->implementation, ec);
-    asio::detail::throw_error(ec, "wait");
-  }
-
-  /// Perform a blocking wait on the timer.
-  /**
-   * This function is used to wait for the timer to expire. This function
-   * blocks and does not return until the timer has expired.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   */
-  void wait(asio::error_code& ec)
-  {
-    this->service.wait(this->implementation, ec);
-  }
-
-  /// Start an asynchronous wait on the timer.
-  /**
-   * This function may be used to initiate an asynchronous wait against the
-   * timer. It always returns immediately.
-   *
-   * For each call to async_wait(), the supplied handler will be called exactly
-   * once. The handler will be called when:
-   *
-   * @li The timer has expired.
-   *
-   * @li The timer was cancelled, in which case the handler is passed the error
-   * code asio::error::operation_aborted.
-   *
-   * @param handler The handler to be called when the timer expires. Copies
-   * will be made of the handler as required. The function signature of the
-   * handler must be:
-   * @code void handler(
-   *   const asio::error_code& error // Result of operation.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   */
-  template <typename WaitHandler>
-  ASIO_INITFN_RESULT_TYPE(WaitHandler,
-      void (asio::error_code))
-  async_wait(ASIO_MOVE_ARG(WaitHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a WaitHandler.
-    ASIO_WAIT_HANDLER_CHECK(WaitHandler, handler) type_check;
-
-    return this->service.async_wait(this->implementation,
-        ASIO_MOVE_CAST(WaitHandler)(handler));
-  }
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_BASIC_WAITABLE_TIMER_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/buffer.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/buffer.hpp
deleted file mode 100644
index 238722f..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/buffer.hpp
+++ /dev/null
@@ -1,2239 +0,0 @@
-//
-// buffer.hpp
-// ~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_BUFFER_HPP
-#define ASIO_BUFFER_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cstddef>
-#include <cstring>
-#include <string>
-#include <vector>
-#include "asio/detail/array_fwd.hpp"
-
-#if defined(ASIO_MSVC)
-# if defined(_HAS_ITERATOR_DEBUGGING) && (_HAS_ITERATOR_DEBUGGING != 0)
-#  if !defined(ASIO_DISABLE_BUFFER_DEBUGGING)
-#   define ASIO_ENABLE_BUFFER_DEBUGGING
-#  endif // !defined(ASIO_DISABLE_BUFFER_DEBUGGING)
-# endif // defined(_HAS_ITERATOR_DEBUGGING)
-#endif // defined(ASIO_MSVC)
-
-#if defined(__GNUC__)
-# if defined(_GLIBCXX_DEBUG)
-#  if !defined(ASIO_DISABLE_BUFFER_DEBUGGING)
-#   define ASIO_ENABLE_BUFFER_DEBUGGING
-#  endif // !defined(ASIO_DISABLE_BUFFER_DEBUGGING)
-# endif // defined(_GLIBCXX_DEBUG)
-#endif // defined(__GNUC__)
-
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-# include "asio/detail/function.hpp"
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
-
-#if defined(ASIO_HAS_BOOST_WORKAROUND)
-# include <boost/detail/workaround.hpp>
-# if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582)) \
-    || BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x590))
-#  define ASIO_ENABLE_ARRAY_BUFFER_WORKAROUND
-# endif // BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582))
-        // || BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x590))
-#endif // defined(ASIO_HAS_BOOST_WORKAROUND)
-
-#if defined(ASIO_ENABLE_ARRAY_BUFFER_WORKAROUND)
-# include "asio/detail/type_traits.hpp"
-#endif // defined(ASIO_ENABLE_ARRAY_BUFFER_WORKAROUND)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-class mutable_buffer;
-class const_buffer;
-
-namespace detail {
-void* buffer_cast_helper(const mutable_buffer&);
-const void* buffer_cast_helper(const const_buffer&);
-std::size_t buffer_size_helper(const mutable_buffer&);
-std::size_t buffer_size_helper(const const_buffer&);
-} // namespace detail
-
-/// Holds a buffer that can be modified.
-/**
- * The mutable_buffer class provides a safe representation of a buffer that can
- * be modified. It does not own the underlying data, and so is cheap to copy or
- * assign.
- *
- * @par Accessing Buffer Contents
- *
- * The contents of a buffer may be accessed using the @ref buffer_size
- * and @ref buffer_cast functions:
- *
- * @code asio::mutable_buffer b1 = ...;
- * std::size_t s1 = asio::buffer_size(b1);
- * unsigned char* p1 = asio::buffer_cast<unsigned char*>(b1);
- * @endcode
- *
- * The asio::buffer_cast function permits violations of type safety, so
- * uses of it in application code should be carefully considered.
- */
-class mutable_buffer
-{
-public:
-  /// Construct an empty buffer.
-  mutable_buffer()
-    : data_(0),
-      size_(0)
-  {
-  }
-
-  /// Construct a buffer to represent a given memory range.
-  mutable_buffer(void* data, std::size_t size)
-    : data_(data),
-      size_(size)
-  {
-  }
-
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-  mutable_buffer(void* data, std::size_t size,
-      asio::detail::function<void()> debug_check)
-    : data_(data),
-      size_(size),
-      debug_check_(debug_check)
-  {
-  }
-
-  const asio::detail::function<void()>& get_debug_check() const
-  {
-    return debug_check_;
-  }
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
-
-private:
-  friend void* asio::detail::buffer_cast_helper(
-      const mutable_buffer& b);
-  friend std::size_t asio::detail::buffer_size_helper(
-      const mutable_buffer& b);
-
-  void* data_;
-  std::size_t size_;
-
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-  asio::detail::function<void()> debug_check_;
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
-};
-
-namespace detail {
-
-inline void* buffer_cast_helper(const mutable_buffer& b)
-{
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-  if (b.size_ && b.debug_check_)
-    b.debug_check_();
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
-  return b.data_;
-}
-
-inline std::size_t buffer_size_helper(const mutable_buffer& b)
-{
-  return b.size_;
-}
-
-} // namespace detail
-
-/// Adapts a single modifiable buffer so that it meets the requirements of the
-/// MutableBufferSequence concept.
-class mutable_buffers_1
-  : public mutable_buffer
-{
-public:
-  /// The type for each element in the list of buffers.
-  typedef mutable_buffer value_type;
-
-  /// A random-access iterator type that may be used to read elements.
-  typedef const mutable_buffer* const_iterator;
-
-  /// Construct to represent a given memory range.
-  mutable_buffers_1(void* data, std::size_t size)
-    : mutable_buffer(data, size)
-  {
-  }
-
-  /// Construct to represent a single modifiable buffer.
-  explicit mutable_buffers_1(const mutable_buffer& b)
-    : mutable_buffer(b)
-  {
-  }
-
-  /// Get a random-access iterator to the first element.
-  const_iterator begin() const
-  {
-    return this;
-  }
-
-  /// Get a random-access iterator for one past the last element.
-  const_iterator end() const
-  {
-    return begin() + 1;
-  }
-};
-
-/// Holds a buffer that cannot be modified.
-/**
- * The const_buffer class provides a safe representation of a buffer that cannot
- * be modified. It does not own the underlying data, and so is cheap to copy or
- * assign.
- *
- * @par Accessing Buffer Contents
- *
- * The contents of a buffer may be accessed using the @ref buffer_size
- * and @ref buffer_cast functions:
- *
- * @code asio::const_buffer b1 = ...;
- * std::size_t s1 = asio::buffer_size(b1);
- * const unsigned char* p1 = asio::buffer_cast<const unsigned char*>(b1);
- * @endcode
- *
- * The asio::buffer_cast function permits violations of type safety, so
- * uses of it in application code should be carefully considered.
- */
-class const_buffer
-{
-public:
-  /// Construct an empty buffer.
-  const_buffer()
-    : data_(0),
-      size_(0)
-  {
-  }
-
-  /// Construct a buffer to represent a given memory range.
-  const_buffer(const void* data, std::size_t size)
-    : data_(data),
-      size_(size)
-  {
-  }
-
-  /// Construct a non-modifiable buffer from a modifiable one.
-  const_buffer(const mutable_buffer& b)
-    : data_(asio::detail::buffer_cast_helper(b)),
-      size_(asio::detail::buffer_size_helper(b))
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-      , debug_check_(b.get_debug_check())
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
-  {
-  }
-
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-  const_buffer(const void* data, std::size_t size,
-      asio::detail::function<void()> debug_check)
-    : data_(data),
-      size_(size),
-      debug_check_(debug_check)
-  {
-  }
-
-  const asio::detail::function<void()>& get_debug_check() const
-  {
-    return debug_check_;
-  }
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
-
-private:
-  friend const void* asio::detail::buffer_cast_helper(
-      const const_buffer& b);
-  friend std::size_t asio::detail::buffer_size_helper(
-      const const_buffer& b);
-
-  const void* data_;
-  std::size_t size_;
-
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-  asio::detail::function<void()> debug_check_;
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
-};
-
-namespace detail {
-
-inline const void* buffer_cast_helper(const const_buffer& b)
-{
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-  if (b.size_ && b.debug_check_)
-    b.debug_check_();
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
-  return b.data_;
-}
-
-inline std::size_t buffer_size_helper(const const_buffer& b)
-{
-  return b.size_;
-}
-
-} // namespace detail
-
-/// Adapts a single non-modifiable buffer so that it meets the requirements of
-/// the ConstBufferSequence concept.
-class const_buffers_1
-  : public const_buffer
-{
-public:
-  /// The type for each element in the list of buffers.
-  typedef const_buffer value_type;
-
-  /// A random-access iterator type that may be used to read elements.
-  typedef const const_buffer* const_iterator;
-
-  /// Construct to represent a given memory range.
-  const_buffers_1(const void* data, std::size_t size)
-    : const_buffer(data, size)
-  {
-  }
-
-  /// Construct to represent a single non-modifiable buffer.
-  explicit const_buffers_1(const const_buffer& b)
-    : const_buffer(b)
-  {
-  }
-
-  /// Get a random-access iterator to the first element.
-  const_iterator begin() const
-  {
-    return this;
-  }
-
-  /// Get a random-access iterator for one past the last element.
-  const_iterator end() const
-  {
-    return begin() + 1;
-  }
-};
-
-/// An implementation of both the ConstBufferSequence and MutableBufferSequence
-/// concepts to represent a null buffer sequence.
-class null_buffers
-{
-public:
-  /// The type for each element in the list of buffers.
-  typedef mutable_buffer value_type;
-
-  /// A random-access iterator type that may be used to read elements.
-  typedef const mutable_buffer* const_iterator;
-
-  /// Get a random-access iterator to the first element.
-  const_iterator begin() const
-  {
-    return &buf_;
-  }
-
-  /// Get a random-access iterator for one past the last element.
-  const_iterator end() const
-  {
-    return &buf_;
-  }
-
-private:
-  mutable_buffer buf_;
-};
-
-/** @defgroup buffer_size asio::buffer_size
- *
- * @brief The asio::buffer_size function determines the total number of
- * bytes in a buffer or buffer sequence.
- */
-/*@{*/
-
-/// Get the number of bytes in a modifiable buffer.
-inline std::size_t buffer_size(const mutable_buffer& b)
-{
-  return detail::buffer_size_helper(b);
-}
-
-/// Get the number of bytes in a modifiable buffer.
-inline std::size_t buffer_size(const mutable_buffers_1& b)
-{
-  return detail::buffer_size_helper(b);
-}
-
-/// Get the number of bytes in a non-modifiable buffer.
-inline std::size_t buffer_size(const const_buffer& b)
-{
-  return detail::buffer_size_helper(b);
-}
-
-/// Get the number of bytes in a non-modifiable buffer.
-inline std::size_t buffer_size(const const_buffers_1& b)
-{
-  return detail::buffer_size_helper(b);
-}
-
-/// Get the total number of bytes in a buffer sequence.
-/** 
- * The @c BufferSequence template parameter may meet either of the @c
- * ConstBufferSequence or @c MutableBufferSequence type requirements.
- */
-template <typename BufferSequence>
-inline std::size_t buffer_size(const BufferSequence& b)
-{
-  std::size_t total_buffer_size = 0;
-
-  typename BufferSequence::const_iterator iter = b.begin();
-  typename BufferSequence::const_iterator end = b.end();
-  for (; iter != end; ++iter)
-    total_buffer_size += detail::buffer_size_helper(*iter);
-
-  return total_buffer_size;
-}
-
-/*@}*/
-
-/** @defgroup buffer_cast asio::buffer_cast
- *
- * @brief The asio::buffer_cast function is used to obtain a pointer to
- * the underlying memory region associated with a buffer.
- *
- * @par Examples:
- *
- * To access the memory of a non-modifiable buffer, use:
- * @code asio::const_buffer b1 = ...;
- * const unsigned char* p1 = asio::buffer_cast<const unsigned char*>(b1);
- * @endcode
- *
- * To access the memory of a modifiable buffer, use:
- * @code asio::mutable_buffer b2 = ...;
- * unsigned char* p2 = asio::buffer_cast<unsigned char*>(b2);
- * @endcode
- *
- * The asio::buffer_cast function permits violations of type safety, so
- * uses of it in application code should be carefully considered.
- */
-/*@{*/
-
-/// Cast a non-modifiable buffer to a specified pointer to POD type.
-template <typename PointerToPodType>
-inline PointerToPodType buffer_cast(const mutable_buffer& b)
-{
-  return static_cast<PointerToPodType>(detail::buffer_cast_helper(b));
-}
-
-/// Cast a non-modifiable buffer to a specified pointer to POD type.
-template <typename PointerToPodType>
-inline PointerToPodType buffer_cast(const const_buffer& b)
-{
-  return static_cast<PointerToPodType>(detail::buffer_cast_helper(b));
-}
-
-/*@}*/
-
-/// Create a new modifiable buffer that is offset from the start of another.
-/**
- * @relates mutable_buffer
- */
-inline mutable_buffer operator+(const mutable_buffer& b, std::size_t start)
-{
-  if (start > buffer_size(b))
-    return mutable_buffer();
-  char* new_data = buffer_cast<char*>(b) + start;
-  std::size_t new_size = buffer_size(b) - start;
-  return mutable_buffer(new_data, new_size
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-      , b.get_debug_check()
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
-      );
-}
-
-/// Create a new modifiable buffer that is offset from the start of another.
-/**
- * @relates mutable_buffer
- */
-inline mutable_buffer operator+(std::size_t start, const mutable_buffer& b)
-{
-  if (start > buffer_size(b))
-    return mutable_buffer();
-  char* new_data = buffer_cast<char*>(b) + start;
-  std::size_t new_size = buffer_size(b) - start;
-  return mutable_buffer(new_data, new_size
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-      , b.get_debug_check()
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
-      );
-}
-
-/// Create a new non-modifiable buffer that is offset from the start of another.
-/**
- * @relates const_buffer
- */
-inline const_buffer operator+(const const_buffer& b, std::size_t start)
-{
-  if (start > buffer_size(b))
-    return const_buffer();
-  const char* new_data = buffer_cast<const char*>(b) + start;
-  std::size_t new_size = buffer_size(b) - start;
-  return const_buffer(new_data, new_size
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-      , b.get_debug_check()
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
-      );
-}
-
-/// Create a new non-modifiable buffer that is offset from the start of another.
-/**
- * @relates const_buffer
- */
-inline const_buffer operator+(std::size_t start, const const_buffer& b)
-{
-  if (start > buffer_size(b))
-    return const_buffer();
-  const char* new_data = buffer_cast<const char*>(b) + start;
-  std::size_t new_size = buffer_size(b) - start;
-  return const_buffer(new_data, new_size
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-      , b.get_debug_check()
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
-      );
-}
-
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-namespace detail {
-
-template <typename Iterator>
-class buffer_debug_check
-{
-public:
-  buffer_debug_check(Iterator iter)
-    : iter_(iter)
-  {
-  }
-
-  ~buffer_debug_check()
-  {
-#if defined(ASIO_MSVC) && (ASIO_MSVC == 1400)
-    // MSVC 8's string iterator checking may crash in a std::string::iterator
-    // object's destructor when the iterator points to an already-destroyed
-    // std::string object, unless the iterator is cleared first.
-    iter_ = Iterator();
-#endif // defined(ASIO_MSVC) && (ASIO_MSVC == 1400)
-  }
-
-  void operator()()
-  {
-    *iter_;
-  }
-
-private:
-  Iterator iter_;
-};
-
-} // namespace detail
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
-
-/** @defgroup buffer asio::buffer
- *
- * @brief The asio::buffer function is used to create a buffer object to
- * represent raw memory, an array of POD elements, a vector of POD elements,
- * or a std::string.
- *
- * A buffer object represents a contiguous region of memory as a 2-tuple
- * consisting of a pointer and size in bytes. A tuple of the form <tt>{void*,
- * size_t}</tt> specifies a mutable (modifiable) region of memory. Similarly, a
- * tuple of the form <tt>{const void*, size_t}</tt> specifies a const
- * (non-modifiable) region of memory. These two forms correspond to the classes
- * mutable_buffer and const_buffer, respectively. To mirror C++'s conversion
- * rules, a mutable_buffer is implicitly convertible to a const_buffer, and the
- * opposite conversion is not permitted.
- *
- * The simplest use case involves reading or writing a single buffer of a
- * specified size:
- *
- * @code sock.send(asio::buffer(data, size)); @endcode
- *
- * In the above example, the return value of asio::buffer meets the
- * requirements of the ConstBufferSequence concept so that it may be directly
- * passed to the socket's write function. A buffer created for modifiable
- * memory also meets the requirements of the MutableBufferSequence concept.
- *
- * An individual buffer may be created from a builtin array, std::vector,
- * std::array or boost::array of POD elements. This helps prevent buffer
- * overruns by automatically determining the size of the buffer:
- *
- * @code char d1[128];
- * size_t bytes_transferred = sock.receive(asio::buffer(d1));
- *
- * std::vector<char> d2(128);
- * bytes_transferred = sock.receive(asio::buffer(d2));
- *
- * std::array<char, 128> d3;
- * bytes_transferred = sock.receive(asio::buffer(d3));
- *
- * boost::array<char, 128> d4;
- * bytes_transferred = sock.receive(asio::buffer(d4)); @endcode
- *
- * In all three cases above, the buffers created are exactly 128 bytes long.
- * Note that a vector is @e never automatically resized when creating or using
- * a buffer. The buffer size is determined using the vector's <tt>size()</tt>
- * member function, and not its capacity.
- *
- * @par Accessing Buffer Contents
- *
- * The contents of a buffer may be accessed using the @ref buffer_size and
- * @ref buffer_cast functions:
- *
- * @code asio::mutable_buffer b1 = ...;
- * std::size_t s1 = asio::buffer_size(b1);
- * unsigned char* p1 = asio::buffer_cast<unsigned char*>(b1);
- *
- * asio::const_buffer b2 = ...;
- * std::size_t s2 = asio::buffer_size(b2);
- * const void* p2 = asio::buffer_cast<const void*>(b2); @endcode
- *
- * The asio::buffer_cast function permits violations of type safety, so
- * uses of it in application code should be carefully considered.
- *
- * For convenience, the @ref buffer_size function also works on buffer
- * sequences (that is, types meeting the ConstBufferSequence or
- * MutableBufferSequence type requirements). In this case, the function returns
- * the total size of all buffers in the sequence.
- *
- * @par Buffer Copying
- *
- * The @ref buffer_copy function may be used to copy raw bytes between
- * individual buffers and buffer sequences.
- *
- * In particular, when used with the @ref buffer_size, the @ref buffer_copy
- * function can be used to linearise a sequence of buffers. For example:
- *
- * @code vector<const_buffer> buffers = ...;
- *
- * vector<unsigned char> data(asio::buffer_size(buffers));
- * asio::buffer_copy(asio::buffer(data), buffers); @endcode
- *
- * Note that @ref buffer_copy is implemented in terms of @c memcpy, and
- * consequently it cannot be used to copy between overlapping memory regions.
- *
- * @par Buffer Invalidation
- *
- * A buffer object does not have any ownership of the memory it refers to. It
- * is the responsibility of the application to ensure the memory region remains
- * valid until it is no longer required for an I/O operation. When the memory
- * is no longer available, the buffer is said to have been invalidated.
- *
- * For the asio::buffer overloads that accept an argument of type
- * std::vector, the buffer objects returned are invalidated by any vector
- * operation that also invalidates all references, pointers and iterators
- * referring to the elements in the sequence (C++ Std, 23.2.4)
- *
- * For the asio::buffer overloads that accept an argument of type
- * std::basic_string, the buffer objects returned are invalidated according to
- * the rules defined for invalidation of references, pointers and iterators
- * referring to elements of the sequence (C++ Std, 21.3).
- *
- * @par Buffer Arithmetic
- *
- * Buffer objects may be manipulated using simple arithmetic in a safe way
- * which helps prevent buffer overruns. Consider an array initialised as
- * follows:
- *
- * @code boost::array<char, 6> a = { 'a', 'b', 'c', 'd', 'e' }; @endcode
- *
- * A buffer object @c b1 created using:
- *
- * @code b1 = asio::buffer(a); @endcode
- *
- * represents the entire array, <tt>{ 'a', 'b', 'c', 'd', 'e' }</tt>. An
- * optional second argument to the asio::buffer function may be used to
- * limit the size, in bytes, of the buffer:
- *
- * @code b2 = asio::buffer(a, 3); @endcode
- *
- * such that @c b2 represents the data <tt>{ 'a', 'b', 'c' }</tt>. Even if the
- * size argument exceeds the actual size of the array, the size of the buffer
- * object created will be limited to the array size.
- *
- * An offset may be applied to an existing buffer to create a new one:
- *
- * @code b3 = b1 + 2; @endcode
- *
- * where @c b3 will set to represent <tt>{ 'c', 'd', 'e' }</tt>. If the offset
- * exceeds the size of the existing buffer, the newly created buffer will be
- * empty.
- *
- * Both an offset and size may be specified to create a buffer that corresponds
- * to a specific range of bytes within an existing buffer:
- *
- * @code b4 = asio::buffer(b1 + 1, 3); @endcode
- *
- * so that @c b4 will refer to the bytes <tt>{ 'b', 'c', 'd' }</tt>.
- *
- * @par Buffers and Scatter-Gather I/O
- *
- * To read or write using multiple buffers (i.e. scatter-gather I/O), multiple
- * buffer objects may be assigned into a container that supports the
- * MutableBufferSequence (for read) or ConstBufferSequence (for write) concepts:
- *
- * @code
- * char d1[128];
- * std::vector<char> d2(128);
- * boost::array<char, 128> d3;
- *
- * boost::array<mutable_buffer, 3> bufs1 = {
- *   asio::buffer(d1),
- *   asio::buffer(d2),
- *   asio::buffer(d3) };
- * bytes_transferred = sock.receive(bufs1);
- *
- * std::vector<const_buffer> bufs2;
- * bufs2.push_back(asio::buffer(d1));
- * bufs2.push_back(asio::buffer(d2));
- * bufs2.push_back(asio::buffer(d3));
- * bytes_transferred = sock.send(bufs2); @endcode
- */
-/*@{*/
-
-/// Create a new modifiable buffer from an existing buffer.
-/**
- * @returns <tt>mutable_buffers_1(b)</tt>.
- */
-inline mutable_buffers_1 buffer(const mutable_buffer& b)
-{
-  return mutable_buffers_1(b);
-}
-
-/// Create a new modifiable buffer from an existing buffer.
-/**
- * @returns A mutable_buffers_1 value equivalent to:
- * @code mutable_buffers_1(
- *     buffer_cast<void*>(b),
- *     min(buffer_size(b), max_size_in_bytes)); @endcode
- */
-inline mutable_buffers_1 buffer(const mutable_buffer& b,
-    std::size_t max_size_in_bytes)
-{
-  return mutable_buffers_1(
-      mutable_buffer(buffer_cast<void*>(b),
-        buffer_size(b) < max_size_in_bytes
-        ? buffer_size(b) : max_size_in_bytes
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-        , b.get_debug_check()
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
-        ));
-}
-
-/// Create a new non-modifiable buffer from an existing buffer.
-/**
- * @returns <tt>const_buffers_1(b)</tt>.
- */
-inline const_buffers_1 buffer(const const_buffer& b)
-{
-  return const_buffers_1(b);
-}
-
-/// Create a new non-modifiable buffer from an existing buffer.
-/**
- * @returns A const_buffers_1 value equivalent to:
- * @code const_buffers_1(
- *     buffer_cast<const void*>(b),
- *     min(buffer_size(b), max_size_in_bytes)); @endcode
- */
-inline const_buffers_1 buffer(const const_buffer& b,
-    std::size_t max_size_in_bytes)
-{
-  return const_buffers_1(
-      const_buffer(buffer_cast<const void*>(b),
-        buffer_size(b) < max_size_in_bytes
-        ? buffer_size(b) : max_size_in_bytes
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-        , b.get_debug_check()
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
-        ));
-}
-
-/// Create a new modifiable buffer that represents the given memory range.
-/**
- * @returns <tt>mutable_buffers_1(data, size_in_bytes)</tt>.
- */
-inline mutable_buffers_1 buffer(void* data, std::size_t size_in_bytes)
-{
-  return mutable_buffers_1(mutable_buffer(data, size_in_bytes));
-}
-
-/// Create a new non-modifiable buffer that represents the given memory range.
-/**
- * @returns <tt>const_buffers_1(data, size_in_bytes)</tt>.
- */
-inline const_buffers_1 buffer(const void* data,
-    std::size_t size_in_bytes)
-{
-  return const_buffers_1(const_buffer(data, size_in_bytes));
-}
-
-/// Create a new modifiable buffer that represents the given POD array.
-/**
- * @returns A mutable_buffers_1 value equivalent to:
- * @code mutable_buffers_1(
- *     static_cast<void*>(data),
- *     N * sizeof(PodType)); @endcode
- */
-template <typename PodType, std::size_t N>
-inline mutable_buffers_1 buffer(PodType (&data)[N])
-{
-  return mutable_buffers_1(mutable_buffer(data, N * sizeof(PodType)));
-}
- 
-/// Create a new modifiable buffer that represents the given POD array.
-/**
- * @returns A mutable_buffers_1 value equivalent to:
- * @code mutable_buffers_1(
- *     static_cast<void*>(data),
- *     min(N * sizeof(PodType), max_size_in_bytes)); @endcode
- */
-template <typename PodType, std::size_t N>
-inline mutable_buffers_1 buffer(PodType (&data)[N],
-    std::size_t max_size_in_bytes)
-{
-  return mutable_buffers_1(
-      mutable_buffer(data,
-        N * sizeof(PodType) < max_size_in_bytes
-        ? N * sizeof(PodType) : max_size_in_bytes));
-}
- 
-/// Create a new non-modifiable buffer that represents the given POD array.
-/**
- * @returns A const_buffers_1 value equivalent to:
- * @code const_buffers_1(
- *     static_cast<const void*>(data),
- *     N * sizeof(PodType)); @endcode
- */
-template <typename PodType, std::size_t N>
-inline const_buffers_1 buffer(const PodType (&data)[N])
-{
-  return const_buffers_1(const_buffer(data, N * sizeof(PodType)));
-}
-
-/// Create a new non-modifiable buffer that represents the given POD array.
-/**
- * @returns A const_buffers_1 value equivalent to:
- * @code const_buffers_1(
- *     static_cast<const void*>(data),
- *     min(N * sizeof(PodType), max_size_in_bytes)); @endcode
- */
-template <typename PodType, std::size_t N>
-inline const_buffers_1 buffer(const PodType (&data)[N],
-    std::size_t max_size_in_bytes)
-{
-  return const_buffers_1(
-      const_buffer(data,
-        N * sizeof(PodType) < max_size_in_bytes
-        ? N * sizeof(PodType) : max_size_in_bytes));
-}
-
-#if defined(ASIO_ENABLE_ARRAY_BUFFER_WORKAROUND)
-
-// Borland C++ and Sun Studio think the overloads:
-//
-//   unspecified buffer(boost::array<PodType, N>& array ...);
-//
-// and
-//
-//   unspecified buffer(boost::array<const PodType, N>& array ...);
-//
-// are ambiguous. This will be worked around by using a buffer_types traits
-// class that contains typedefs for the appropriate buffer and container
-// classes, based on whether PodType is const or non-const.
-
-namespace detail {
-
-template <bool IsConst>
-struct buffer_types_base;
-
-template <>
-struct buffer_types_base<false>
-{
-  typedef mutable_buffer buffer_type;
-  typedef mutable_buffers_1 container_type;
-};
-
-template <>
-struct buffer_types_base<true>
-{
-  typedef const_buffer buffer_type;
-  typedef const_buffers_1 container_type;
-};
-
-template <typename PodType>
-struct buffer_types
-  : public buffer_types_base<is_const<PodType>::value>
-{
-};
-
-} // namespace detail
-
-template <typename PodType, std::size_t N>
-inline typename detail::buffer_types<PodType>::container_type
-buffer(boost::array<PodType, N>& data)
-{
-  typedef typename asio::detail::buffer_types<PodType>::buffer_type
-    buffer_type;
-  typedef typename asio::detail::buffer_types<PodType>::container_type
-    container_type;
-  return container_type(
-      buffer_type(data.c_array(), data.size() * sizeof(PodType)));
-}
-
-template <typename PodType, std::size_t N>
-inline typename detail::buffer_types<PodType>::container_type
-buffer(boost::array<PodType, N>& data, std::size_t max_size_in_bytes)
-{
-  typedef typename asio::detail::buffer_types<PodType>::buffer_type
-    buffer_type;
-  typedef typename asio::detail::buffer_types<PodType>::container_type
-    container_type;
-  return container_type(
-      buffer_type(data.c_array(),
-        data.size() * sizeof(PodType) < max_size_in_bytes
-        ? data.size() * sizeof(PodType) : max_size_in_bytes));
-}
-
-#else // defined(ASIO_ENABLE_ARRAY_BUFFER_WORKAROUND)
-
-/// Create a new modifiable buffer that represents the given POD array.
-/**
- * @returns A mutable_buffers_1 value equivalent to:
- * @code mutable_buffers_1(
- *     data.data(),
- *     data.size() * sizeof(PodType)); @endcode
- */
-template <typename PodType, std::size_t N>
-inline mutable_buffers_1 buffer(boost::array<PodType, N>& data)
-{
-  return mutable_buffers_1(
-      mutable_buffer(data.c_array(), data.size() * sizeof(PodType)));
-}
-
-/// Create a new modifiable buffer that represents the given POD array.
-/**
- * @returns A mutable_buffers_1 value equivalent to:
- * @code mutable_buffers_1(
- *     data.data(),
- *     min(data.size() * sizeof(PodType), max_size_in_bytes)); @endcode
- */
-template <typename PodType, std::size_t N>
-inline mutable_buffers_1 buffer(boost::array<PodType, N>& data,
-    std::size_t max_size_in_bytes)
-{
-  return mutable_buffers_1(
-      mutable_buffer(data.c_array(),
-        data.size() * sizeof(PodType) < max_size_in_bytes
-        ? data.size() * sizeof(PodType) : max_size_in_bytes));
-}
-
-/// Create a new non-modifiable buffer that represents the given POD array.
-/**
- * @returns A const_buffers_1 value equivalent to:
- * @code const_buffers_1(
- *     data.data(),
- *     data.size() * sizeof(PodType)); @endcode
- */
-template <typename PodType, std::size_t N>
-inline const_buffers_1 buffer(boost::array<const PodType, N>& data)
-{
-  return const_buffers_1(
-      const_buffer(data.data(), data.size() * sizeof(PodType)));
-}
-
-/// Create a new non-modifiable buffer that represents the given POD array.
-/**
- * @returns A const_buffers_1 value equivalent to:
- * @code const_buffers_1(
- *     data.data(),
- *     min(data.size() * sizeof(PodType), max_size_in_bytes)); @endcode
- */
-template <typename PodType, std::size_t N>
-inline const_buffers_1 buffer(boost::array<const PodType, N>& data,
-    std::size_t max_size_in_bytes)
-{
-  return const_buffers_1(
-      const_buffer(data.data(),
-        data.size() * sizeof(PodType) < max_size_in_bytes
-        ? data.size() * sizeof(PodType) : max_size_in_bytes));
-}
-
-#endif // defined(ASIO_ENABLE_ARRAY_BUFFER_WORKAROUND)
-
-/// Create a new non-modifiable buffer that represents the given POD array.
-/**
- * @returns A const_buffers_1 value equivalent to:
- * @code const_buffers_1(
- *     data.data(),
- *     data.size() * sizeof(PodType)); @endcode
- */
-template <typename PodType, std::size_t N>
-inline const_buffers_1 buffer(const boost::array<PodType, N>& data)
-{
-  return const_buffers_1(
-      const_buffer(data.data(), data.size() * sizeof(PodType)));
-}
-
-/// Create a new non-modifiable buffer that represents the given POD array.
-/**
- * @returns A const_buffers_1 value equivalent to:
- * @code const_buffers_1(
- *     data.data(),
- *     min(data.size() * sizeof(PodType), max_size_in_bytes)); @endcode
- */
-template <typename PodType, std::size_t N>
-inline const_buffers_1 buffer(const boost::array<PodType, N>& data,
-    std::size_t max_size_in_bytes)
-{
-  return const_buffers_1(
-      const_buffer(data.data(),
-        data.size() * sizeof(PodType) < max_size_in_bytes
-        ? data.size() * sizeof(PodType) : max_size_in_bytes));
-}
-
-#if defined(ASIO_HAS_STD_ARRAY) || defined(GENERATING_DOCUMENTATION)
-
-/// Create a new modifiable buffer that represents the given POD array.
-/**
- * @returns A mutable_buffers_1 value equivalent to:
- * @code mutable_buffers_1(
- *     data.data(),
- *     data.size() * sizeof(PodType)); @endcode
- */
-template <typename PodType, std::size_t N>
-inline mutable_buffers_1 buffer(std::array<PodType, N>& data)
-{
-  return mutable_buffers_1(
-      mutable_buffer(data.data(), data.size() * sizeof(PodType)));
-}
-
-/// Create a new modifiable buffer that represents the given POD array.
-/**
- * @returns A mutable_buffers_1 value equivalent to:
- * @code mutable_buffers_1(
- *     data.data(),
- *     min(data.size() * sizeof(PodType), max_size_in_bytes)); @endcode
- */
-template <typename PodType, std::size_t N>
-inline mutable_buffers_1 buffer(std::array<PodType, N>& data,
-    std::size_t max_size_in_bytes)
-{
-  return mutable_buffers_1(
-      mutable_buffer(data.data(),
-        data.size() * sizeof(PodType) < max_size_in_bytes
-        ? data.size() * sizeof(PodType) : max_size_in_bytes));
-}
-
-/// Create a new non-modifiable buffer that represents the given POD array.
-/**
- * @returns A const_buffers_1 value equivalent to:
- * @code const_buffers_1(
- *     data.data(),
- *     data.size() * sizeof(PodType)); @endcode
- */
-template <typename PodType, std::size_t N>
-inline const_buffers_1 buffer(std::array<const PodType, N>& data)
-{
-  return const_buffers_1(
-      const_buffer(data.data(), data.size() * sizeof(PodType)));
-}
-
-/// Create a new non-modifiable buffer that represents the given POD array.
-/**
- * @returns A const_buffers_1 value equivalent to:
- * @code const_buffers_1(
- *     data.data(),
- *     min(data.size() * sizeof(PodType), max_size_in_bytes)); @endcode
- */
-template <typename PodType, std::size_t N>
-inline const_buffers_1 buffer(std::array<const PodType, N>& data,
-    std::size_t max_size_in_bytes)
-{
-  return const_buffers_1(
-      const_buffer(data.data(),
-        data.size() * sizeof(PodType) < max_size_in_bytes
-        ? data.size() * sizeof(PodType) : max_size_in_bytes));
-}
-
-/// Create a new non-modifiable buffer that represents the given POD array.
-/**
- * @returns A const_buffers_1 value equivalent to:
- * @code const_buffers_1(
- *     data.data(),
- *     data.size() * sizeof(PodType)); @endcode
- */
-template <typename PodType, std::size_t N>
-inline const_buffers_1 buffer(const std::array<PodType, N>& data)
-{
-  return const_buffers_1(
-      const_buffer(data.data(), data.size() * sizeof(PodType)));
-}
-
-/// Create a new non-modifiable buffer that represents the given POD array.
-/**
- * @returns A const_buffers_1 value equivalent to:
- * @code const_buffers_1(
- *     data.data(),
- *     min(data.size() * sizeof(PodType), max_size_in_bytes)); @endcode
- */
-template <typename PodType, std::size_t N>
-inline const_buffers_1 buffer(const std::array<PodType, N>& data,
-    std::size_t max_size_in_bytes)
-{
-  return const_buffers_1(
-      const_buffer(data.data(),
-        data.size() * sizeof(PodType) < max_size_in_bytes
-        ? data.size() * sizeof(PodType) : max_size_in_bytes));
-}
-
-#endif // defined(ASIO_HAS_STD_ARRAY) || defined(GENERATING_DOCUMENTATION)
-
-/// Create a new modifiable buffer that represents the given POD vector.
-/**
- * @returns A mutable_buffers_1 value equivalent to:
- * @code mutable_buffers_1(
- *     data.size() ? &data[0] : 0,
- *     data.size() * sizeof(PodType)); @endcode
- *
- * @note The buffer is invalidated by any vector operation that would also
- * invalidate iterators.
- */
-template <typename PodType, typename Allocator>
-inline mutable_buffers_1 buffer(std::vector<PodType, Allocator>& data)
-{
-  return mutable_buffers_1(
-      mutable_buffer(data.size() ? &data[0] : 0, data.size() * sizeof(PodType)
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-        , detail::buffer_debug_check<
-            typename std::vector<PodType, Allocator>::iterator
-          >(data.begin())
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
-        ));
-}
-
-/// Create a new modifiable buffer that represents the given POD vector.
-/**
- * @returns A mutable_buffers_1 value equivalent to:
- * @code mutable_buffers_1(
- *     data.size() ? &data[0] : 0,
- *     min(data.size() * sizeof(PodType), max_size_in_bytes)); @endcode
- *
- * @note The buffer is invalidated by any vector operation that would also
- * invalidate iterators.
- */
-template <typename PodType, typename Allocator>
-inline mutable_buffers_1 buffer(std::vector<PodType, Allocator>& data,
-    std::size_t max_size_in_bytes)
-{
-  return mutable_buffers_1(
-      mutable_buffer(data.size() ? &data[0] : 0,
-        data.size() * sizeof(PodType) < max_size_in_bytes
-        ? data.size() * sizeof(PodType) : max_size_in_bytes
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-        , detail::buffer_debug_check<
-            typename std::vector<PodType, Allocator>::iterator
-          >(data.begin())
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
-        ));
-}
-
-/// Create a new non-modifiable buffer that represents the given POD vector.
-/**
- * @returns A const_buffers_1 value equivalent to:
- * @code const_buffers_1(
- *     data.size() ? &data[0] : 0,
- *     data.size() * sizeof(PodType)); @endcode
- *
- * @note The buffer is invalidated by any vector operation that would also
- * invalidate iterators.
- */
-template <typename PodType, typename Allocator>
-inline const_buffers_1 buffer(
-    const std::vector<PodType, Allocator>& data)
-{
-  return const_buffers_1(
-      const_buffer(data.size() ? &data[0] : 0, data.size() * sizeof(PodType)
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-        , detail::buffer_debug_check<
-            typename std::vector<PodType, Allocator>::const_iterator
-          >(data.begin())
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
-        ));
-}
-
-/// Create a new non-modifiable buffer that represents the given POD vector.
-/**
- * @returns A const_buffers_1 value equivalent to:
- * @code const_buffers_1(
- *     data.size() ? &data[0] : 0,
- *     min(data.size() * sizeof(PodType), max_size_in_bytes)); @endcode
- *
- * @note The buffer is invalidated by any vector operation that would also
- * invalidate iterators.
- */
-template <typename PodType, typename Allocator>
-inline const_buffers_1 buffer(
-    const std::vector<PodType, Allocator>& data, std::size_t max_size_in_bytes)
-{
-  return const_buffers_1(
-      const_buffer(data.size() ? &data[0] : 0,
-        data.size() * sizeof(PodType) < max_size_in_bytes
-        ? data.size() * sizeof(PodType) : max_size_in_bytes
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-        , detail::buffer_debug_check<
-            typename std::vector<PodType, Allocator>::const_iterator
-          >(data.begin())
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
-        ));
-}
-
-/// Create a new non-modifiable buffer that represents the given string.
-/**
- * @returns <tt>const_buffers_1(data.data(), data.size() * sizeof(Elem))</tt>.
- *
- * @note The buffer is invalidated by any non-const operation called on the
- * given string object.
- */
-template <typename Elem, typename Traits, typename Allocator>
-inline const_buffers_1 buffer(
-    const std::basic_string<Elem, Traits, Allocator>& data)
-{
-  return const_buffers_1(const_buffer(data.data(), data.size() * sizeof(Elem)
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-        , detail::buffer_debug_check<
-            typename std::basic_string<Elem, Traits, Allocator>::const_iterator
-          >(data.begin())
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
-        ));
-}
-
-/// Create a new non-modifiable buffer that represents the given string.
-/**
- * @returns A const_buffers_1 value equivalent to:
- * @code const_buffers_1(
- *     data.data(),
- *     min(data.size() * sizeof(Elem), max_size_in_bytes)); @endcode
- *
- * @note The buffer is invalidated by any non-const operation called on the
- * given string object.
- */
-template <typename Elem, typename Traits, typename Allocator>
-inline const_buffers_1 buffer(
-    const std::basic_string<Elem, Traits, Allocator>& data,
-    std::size_t max_size_in_bytes)
-{
-  return const_buffers_1(
-      const_buffer(data.data(),
-        data.size() * sizeof(Elem) < max_size_in_bytes
-        ? data.size() * sizeof(Elem) : max_size_in_bytes
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-        , detail::buffer_debug_check<
-            typename std::basic_string<Elem, Traits, Allocator>::const_iterator
-          >(data.begin())
-#endif // ASIO_ENABLE_BUFFER_DEBUGGING
-        ));
-}
-
-/*@}*/
-
-/** @defgroup buffer_copy asio::buffer_copy
- *
- * @brief The asio::buffer_copy function is used to copy bytes from a
- * source buffer (or buffer sequence) to a target buffer (or buffer sequence).
- *
- * The @c buffer_copy function is available in two forms:
- *
- * @li A 2-argument form: @c buffer_copy(target, source)
- *
- * @li A 3-argument form: @c buffer_copy(target, source, max_bytes_to_copy)
-
- * Both forms return the number of bytes actually copied. The number of bytes
- * copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * @li @c If specified, @c max_bytes_to_copy.
- *
- * This prevents buffer overflow, regardless of the buffer sizes used in the
- * copy operation.
- *
- * Note that @ref buffer_copy is implemented in terms of @c memcpy, and
- * consequently it cannot be used to copy between overlapping memory regions.
- */
-/*@{*/
-
-/// Copies bytes from a source buffer to a target buffer.
-/**
- * @param target A modifiable buffer representing the memory region to which
- * the bytes will be copied.
- *
- * @param source A non-modifiable buffer representing the memory region from
- * which the bytes will be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-inline std::size_t buffer_copy(const mutable_buffer& target,
-    const const_buffer& source)
-{
-  using namespace std; // For memcpy.
-  std::size_t target_size = buffer_size(target);
-  std::size_t source_size = buffer_size(source);
-  std::size_t n = target_size < source_size ? target_size : source_size;
-  memcpy(buffer_cast<void*>(target), buffer_cast<const void*>(source), n);
-  return n;
-}
-
-/// Copies bytes from a source buffer to a target buffer.
-/**
- * @param target A modifiable buffer representing the memory region to which
- * the bytes will be copied.
- *
- * @param source A non-modifiable buffer representing the memory region from
- * which the bytes will be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-inline std::size_t buffer_copy(const mutable_buffer& target,
-    const const_buffers_1& source)
-{
-  return buffer_copy(target, static_cast<const const_buffer&>(source));
-}
-
-/// Copies bytes from a source buffer to a target buffer.
-/**
- * @param target A modifiable buffer representing the memory region to which
- * the bytes will be copied.
- *
- * @param source A modifiable buffer representing the memory region from which
- * the bytes will be copied. The contents of the source buffer will not be
- * modified.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-inline std::size_t buffer_copy(const mutable_buffer& target,
-    const mutable_buffer& source)
-{
-  return buffer_copy(target, const_buffer(source));
-}
-
-/// Copies bytes from a source buffer to a target buffer.
-/**
- * @param target A modifiable buffer representing the memory region to which
- * the bytes will be copied.
- *
- * @param source A modifiable buffer representing the memory region from which
- * the bytes will be copied. The contents of the source buffer will not be
- * modified.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-inline std::size_t buffer_copy(const mutable_buffer& target,
-    const mutable_buffers_1& source)
-{
-  return buffer_copy(target, const_buffer(source));
-}
-
-/// Copies bytes from a source buffer sequence to a target buffer.
-/**
- * @param target A modifiable buffer representing the memory region to which
- * the bytes will be copied.
- *
- * @param source A non-modifiable buffer sequence representing the memory
- * regions from which the bytes will be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-template <typename ConstBufferSequence>
-std::size_t buffer_copy(const mutable_buffer& target,
-    const ConstBufferSequence& source)
-{
-  std::size_t total_bytes_copied = 0;
-
-  typename ConstBufferSequence::const_iterator source_iter = source.begin();
-  typename ConstBufferSequence::const_iterator source_end = source.end();
-
-  for (mutable_buffer target_buffer(target);
-      buffer_size(target_buffer) && source_iter != source_end; ++source_iter)
-  {
-    const_buffer source_buffer(*source_iter);
-    std::size_t bytes_copied = buffer_copy(target_buffer, source_buffer);
-    total_bytes_copied += bytes_copied;
-    target_buffer = target_buffer + bytes_copied;
-  }
-
-  return total_bytes_copied;
-}
-
-/// Copies bytes from a source buffer to a target buffer.
-/**
- * @param target A modifiable buffer representing the memory region to which
- * the bytes will be copied.
- *
- * @param source A non-modifiable buffer representing the memory region from
- * which the bytes will be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-inline std::size_t buffer_copy(const mutable_buffers_1& target,
-    const const_buffer& source)
-{
-  return buffer_copy(static_cast<const mutable_buffer&>(target), source);
-}
-
-/// Copies bytes from a source buffer to a target buffer.
-/**
- * @param target A modifiable buffer representing the memory region to which
- * the bytes will be copied.
- *
- * @param source A non-modifiable buffer representing the memory region from
- * which the bytes will be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-inline std::size_t buffer_copy(const mutable_buffers_1& target,
-    const const_buffers_1& source)
-{
-  return buffer_copy(static_cast<const mutable_buffer&>(target),
-      static_cast<const const_buffer&>(source));
-}
-
-/// Copies bytes from a source buffer to a target buffer.
-/**
- * @param target A modifiable buffer representing the memory region to which
- * the bytes will be copied.
- *
- * @param source A modifiable buffer representing the memory region from which
- * the bytes will be copied. The contents of the source buffer will not be
- * modified.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-inline std::size_t buffer_copy(const mutable_buffers_1& target,
-    const mutable_buffer& source)
-{
-  return buffer_copy(static_cast<const mutable_buffer&>(target),
-      const_buffer(source));
-}
-
-/// Copies bytes from a source buffer to a target buffer.
-/**
- * @param target A modifiable buffer representing the memory region to which
- * the bytes will be copied.
- *
- * @param source A modifiable buffer representing the memory region from which
- * the bytes will be copied. The contents of the source buffer will not be
- * modified.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-inline std::size_t buffer_copy(const mutable_buffers_1& target,
-    const mutable_buffers_1& source)
-{
-  return buffer_copy(static_cast<const mutable_buffer&>(target),
-      const_buffer(source));
-}
-
-/// Copies bytes from a source buffer sequence to a target buffer.
-/**
- * @param target A modifiable buffer representing the memory region to which
- * the bytes will be copied.
- *
- * @param source A non-modifiable buffer sequence representing the memory
- * regions from which the bytes will be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-template <typename ConstBufferSequence>
-inline std::size_t buffer_copy(const mutable_buffers_1& target,
-    const ConstBufferSequence& source)
-{
-  return buffer_copy(static_cast<const mutable_buffer&>(target), source);
-}
-
-/// Copies bytes from a source buffer to a target buffer sequence.
-/**
- * @param target A modifiable buffer sequence representing the memory regions to
- * which the bytes will be copied.
- *
- * @param source A non-modifiable buffer representing the memory region from
- * which the bytes will be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-template <typename MutableBufferSequence>
-std::size_t buffer_copy(const MutableBufferSequence& target,
-    const const_buffer& source)
-{
-  std::size_t total_bytes_copied = 0;
-
-  typename MutableBufferSequence::const_iterator target_iter = target.begin();
-  typename MutableBufferSequence::const_iterator target_end = target.end();
-
-  for (const_buffer source_buffer(source);
-      buffer_size(source_buffer) && target_iter != target_end; ++target_iter)
-  {
-    mutable_buffer target_buffer(*target_iter);
-    std::size_t bytes_copied = buffer_copy(target_buffer, source_buffer);
-    total_bytes_copied += bytes_copied;
-    source_buffer = source_buffer + bytes_copied;
-  }
-
-  return total_bytes_copied;
-}
-
-/// Copies bytes from a source buffer to a target buffer sequence.
-/**
- * @param target A modifiable buffer sequence representing the memory regions to
- * which the bytes will be copied.
- *
- * @param source A non-modifiable buffer representing the memory region from
- * which the bytes will be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-template <typename MutableBufferSequence>
-inline std::size_t buffer_copy(const MutableBufferSequence& target,
-    const const_buffers_1& source)
-{
-  return buffer_copy(target, static_cast<const const_buffer&>(source));
-}
-
-/// Copies bytes from a source buffer to a target buffer sequence.
-/**
- * @param target A modifiable buffer sequence representing the memory regions to
- * which the bytes will be copied.
- *
- * @param source A modifiable buffer representing the memory region from which
- * the bytes will be copied. The contents of the source buffer will not be
- * modified.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-template <typename MutableBufferSequence>
-inline std::size_t buffer_copy(const MutableBufferSequence& target,
-    const mutable_buffer& source)
-{
-  return buffer_copy(target, const_buffer(source));
-}
-
-/// Copies bytes from a source buffer to a target buffer sequence.
-/**
- * @param target A modifiable buffer sequence representing the memory regions to
- * which the bytes will be copied.
- *
- * @param source A modifiable buffer representing the memory region from which
- * the bytes will be copied. The contents of the source buffer will not be
- * modified.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-template <typename MutableBufferSequence>
-inline std::size_t buffer_copy(const MutableBufferSequence& target,
-    const mutable_buffers_1& source)
-{
-  return buffer_copy(target, const_buffer(source));
-}
-
-/// Copies bytes from a source buffer sequence to a target buffer sequence.
-/**
- * @param target A modifiable buffer sequence representing the memory regions to
- * which the bytes will be copied.
- *
- * @param source A non-modifiable buffer sequence representing the memory
- * regions from which the bytes will be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-template <typename MutableBufferSequence, typename ConstBufferSequence>
-std::size_t buffer_copy(const MutableBufferSequence& target,
-    const ConstBufferSequence& source)
-{
-  std::size_t total_bytes_copied = 0;
-
-  typename MutableBufferSequence::const_iterator target_iter = target.begin();
-  typename MutableBufferSequence::const_iterator target_end = target.end();
-  std::size_t target_buffer_offset = 0;
-
-  typename ConstBufferSequence::const_iterator source_iter = source.begin();
-  typename ConstBufferSequence::const_iterator source_end = source.end();
-  std::size_t source_buffer_offset = 0;
-
-  while (target_iter != target_end && source_iter != source_end)
-  {
-    mutable_buffer target_buffer =
-      mutable_buffer(*target_iter) + target_buffer_offset;
-
-    const_buffer source_buffer =
-      const_buffer(*source_iter) + source_buffer_offset;
-
-    std::size_t bytes_copied = buffer_copy(target_buffer, source_buffer);
-    total_bytes_copied += bytes_copied;
-
-    if (bytes_copied == buffer_size(target_buffer))
-    {
-      ++target_iter;
-      target_buffer_offset = 0;
-    }
-    else
-      target_buffer_offset += bytes_copied;
-
-    if (bytes_copied == buffer_size(source_buffer))
-    {
-      ++source_iter;
-      source_buffer_offset = 0;
-    }
-    else
-      source_buffer_offset += bytes_copied;
-  }
-
-  return total_bytes_copied;
-}
-
-/// Copies a limited number of bytes from a source buffer to a target buffer.
-/**
- * @param target A modifiable buffer representing the memory region to which
- * the bytes will be copied.
- *
- * @param source A non-modifiable buffer representing the memory region from
- * which the bytes will be copied.
- *
- * @param max_bytes_to_copy The maximum number of bytes to be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * @li @c max_bytes_to_copy
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-inline std::size_t buffer_copy(const mutable_buffer& target,
-    const const_buffer& source, std::size_t max_bytes_to_copy)
-{
-  return buffer_copy(buffer(target, max_bytes_to_copy), source);
-}
-
-/// Copies a limited number of bytes from a source buffer to a target buffer.
-/**
- * @param target A modifiable buffer representing the memory region to which
- * the bytes will be copied.
- *
- * @param source A non-modifiable buffer representing the memory region from
- * which the bytes will be copied.
- *
- * @param max_bytes_to_copy The maximum number of bytes to be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * @li @c max_bytes_to_copy
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-inline std::size_t buffer_copy(const mutable_buffer& target,
-    const const_buffers_1& source, std::size_t max_bytes_to_copy)
-{
-  return buffer_copy(buffer(target, max_bytes_to_copy), source);
-}
-
-/// Copies a limited number of bytes from a source buffer to a target buffer.
-/**
- * @param target A modifiable buffer representing the memory region to which
- * the bytes will be copied.
- *
- * @param source A modifiable buffer representing the memory region from which
- * the bytes will be copied. The contents of the source buffer will not be
- * modified.
- *
- * @param max_bytes_to_copy The maximum number of bytes to be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * @li @c max_bytes_to_copy
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-inline std::size_t buffer_copy(const mutable_buffer& target,
-    const mutable_buffer& source, std::size_t max_bytes_to_copy)
-{
-  return buffer_copy(buffer(target, max_bytes_to_copy), source);
-}
-
-/// Copies a limited number of bytes from a source buffer to a target buffer.
-/**
- * @param target A modifiable buffer representing the memory region to which
- * the bytes will be copied.
- *
- * @param source A modifiable buffer representing the memory region from which
- * the bytes will be copied. The contents of the source buffer will not be
- * modified.
- *
- * @param max_bytes_to_copy The maximum number of bytes to be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * @li @c max_bytes_to_copy
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-inline std::size_t buffer_copy(const mutable_buffer& target,
-    const mutable_buffers_1& source, std::size_t max_bytes_to_copy)
-{
-  return buffer_copy(buffer(target, max_bytes_to_copy), source);
-}
-
-/// Copies a limited number of bytes from a source buffer sequence to a target
-/// buffer.
-/**
- * @param target A modifiable buffer representing the memory region to which
- * the bytes will be copied.
- *
- * @param source A non-modifiable buffer sequence representing the memory
- * regions from which the bytes will be copied.
- *
- * @param max_bytes_to_copy The maximum number of bytes to be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * @li @c max_bytes_to_copy
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-template <typename ConstBufferSequence>
-inline std::size_t buffer_copy(const mutable_buffer& target,
-    const ConstBufferSequence& source, std::size_t max_bytes_to_copy)
-{
-  return buffer_copy(buffer(target, max_bytes_to_copy), source);
-}
-
-/// Copies a limited number of bytes from a source buffer to a target buffer.
-/**
- * @param target A modifiable buffer representing the memory region to which
- * the bytes will be copied.
- *
- * @param source A non-modifiable buffer representing the memory region from
- * which the bytes will be copied.
- *
- * @param max_bytes_to_copy The maximum number of bytes to be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * @li @c max_bytes_to_copy
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-inline std::size_t buffer_copy(const mutable_buffers_1& target,
-    const const_buffer& source, std::size_t max_bytes_to_copy)
-{
-  return buffer_copy(buffer(target, max_bytes_to_copy), source);
-}
-
-/// Copies a limited number of bytes from a source buffer to a target buffer.
-/**
- * @param target A modifiable buffer representing the memory region to which
- * the bytes will be copied.
- *
- * @param source A non-modifiable buffer representing the memory region from
- * which the bytes will be copied.
- *
- * @param max_bytes_to_copy The maximum number of bytes to be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * @li @c max_bytes_to_copy
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-inline std::size_t buffer_copy(const mutable_buffers_1& target,
-    const const_buffers_1& source, std::size_t max_bytes_to_copy)
-{
-  return buffer_copy(buffer(target, max_bytes_to_copy), source);
-}
-
-/// Copies a limited number of bytes from a source buffer to a target buffer.
-/**
- * @param target A modifiable buffer representing the memory region to which
- * the bytes will be copied.
- *
- * @param source A modifiable buffer representing the memory region from which
- * the bytes will be copied. The contents of the source buffer will not be
- * modified.
- *
- * @param max_bytes_to_copy The maximum number of bytes to be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * @li @c max_bytes_to_copy
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-inline std::size_t buffer_copy(const mutable_buffers_1& target,
-    const mutable_buffer& source, std::size_t max_bytes_to_copy)
-{
-  return buffer_copy(buffer(target, max_bytes_to_copy), source);
-}
-
-/// Copies a limited number of bytes from a source buffer to a target buffer.
-/**
- * @param target A modifiable buffer representing the memory region to which
- * the bytes will be copied.
- *
- * @param source A modifiable buffer representing the memory region from which
- * the bytes will be copied. The contents of the source buffer will not be
- * modified.
- *
- * @param max_bytes_to_copy The maximum number of bytes to be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * @li @c max_bytes_to_copy
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-inline std::size_t buffer_copy(const mutable_buffers_1& target,
-    const mutable_buffers_1& source, std::size_t max_bytes_to_copy)
-{
-  return buffer_copy(buffer(target, max_bytes_to_copy), source);
-}
-
-/// Copies a limited number of bytes from a source buffer sequence to a target
-/// buffer.
-/**
- * @param target A modifiable buffer representing the memory region to which
- * the bytes will be copied.
- *
- * @param source A non-modifiable buffer sequence representing the memory
- * regions from which the bytes will be copied.
- *
- * @param max_bytes_to_copy The maximum number of bytes to be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * @li @c max_bytes_to_copy
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-template <typename ConstBufferSequence>
-inline std::size_t buffer_copy(const mutable_buffers_1& target,
-    const ConstBufferSequence& source, std::size_t max_bytes_to_copy)
-{
-  return buffer_copy(buffer(target, max_bytes_to_copy), source);
-}
-
-/// Copies a limited number of bytes from a source buffer to a target buffer
-/// sequence.
-/**
- * @param target A modifiable buffer sequence representing the memory regions to
- * which the bytes will be copied.
- *
- * @param source A non-modifiable buffer representing the memory region from
- * which the bytes will be copied.
- *
- * @param max_bytes_to_copy The maximum number of bytes to be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * @li @c max_bytes_to_copy
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-template <typename MutableBufferSequence>
-inline std::size_t buffer_copy(const MutableBufferSequence& target,
-    const const_buffer& source, std::size_t max_bytes_to_copy)
-{
-  return buffer_copy(target, buffer(source, max_bytes_to_copy));
-}
-
-/// Copies a limited number of bytes from a source buffer to a target buffer
-/// sequence.
-/**
- * @param target A modifiable buffer sequence representing the memory regions to
- * which the bytes will be copied.
- *
- * @param source A non-modifiable buffer representing the memory region from
- * which the bytes will be copied.
- *
- * @param max_bytes_to_copy The maximum number of bytes to be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * @li @c max_bytes_to_copy
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-template <typename MutableBufferSequence>
-inline std::size_t buffer_copy(const MutableBufferSequence& target,
-    const const_buffers_1& source, std::size_t max_bytes_to_copy)
-{
-  return buffer_copy(target, buffer(source, max_bytes_to_copy));
-}
-
-/// Copies a limited number of bytes from a source buffer to a target buffer
-/// sequence.
-/**
- * @param target A modifiable buffer sequence representing the memory regions to
- * which the bytes will be copied.
- *
- * @param source A modifiable buffer representing the memory region from which
- * the bytes will be copied. The contents of the source buffer will not be
- * modified.
- *
- * @param max_bytes_to_copy The maximum number of bytes to be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * @li @c max_bytes_to_copy
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-template <typename MutableBufferSequence>
-inline std::size_t buffer_copy(const MutableBufferSequence& target,
-    const mutable_buffer& source, std::size_t max_bytes_to_copy)
-{
-  return buffer_copy(target, buffer(source, max_bytes_to_copy));
-}
-
-/// Copies a limited number of bytes from a source buffer to a target buffer
-/// sequence.
-/**
- * @param target A modifiable buffer sequence representing the memory regions to
- * which the bytes will be copied.
- *
- * @param source A modifiable buffer representing the memory region from which
- * the bytes will be copied. The contents of the source buffer will not be
- * modified.
- *
- * @param max_bytes_to_copy The maximum number of bytes to be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * @li @c max_bytes_to_copy
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-template <typename MutableBufferSequence>
-inline std::size_t buffer_copy(const MutableBufferSequence& target,
-    const mutable_buffers_1& source, std::size_t max_bytes_to_copy)
-{
-  return buffer_copy(target, buffer(source, max_bytes_to_copy));
-}
-
-/// Copies a limited number of bytes from a source buffer sequence to a target
-/// buffer sequence.
-/**
- * @param target A modifiable buffer sequence representing the memory regions to
- * which the bytes will be copied.
- *
- * @param source A non-modifiable buffer sequence representing the memory
- * regions from which the bytes will be copied.
- *
- * @param max_bytes_to_copy The maximum number of bytes to be copied.
- *
- * @returns The number of bytes copied.
- *
- * @note The number of bytes copied is the lesser of:
- *
- * @li @c buffer_size(target)
- *
- * @li @c buffer_size(source)
- *
- * @li @c max_bytes_to_copy
- *
- * This function is implemented in terms of @c memcpy, and consequently it
- * cannot be used to copy between overlapping memory regions.
- */
-template <typename MutableBufferSequence, typename ConstBufferSequence>
-std::size_t buffer_copy(const MutableBufferSequence& target,
-    const ConstBufferSequence& source, std::size_t max_bytes_to_copy)
-{
-  std::size_t total_bytes_copied = 0;
-
-  typename MutableBufferSequence::const_iterator target_iter = target.begin();
-  typename MutableBufferSequence::const_iterator target_end = target.end();
-  std::size_t target_buffer_offset = 0;
-
-  typename ConstBufferSequence::const_iterator source_iter = source.begin();
-  typename ConstBufferSequence::const_iterator source_end = source.end();
-  std::size_t source_buffer_offset = 0;
-
-  while (total_bytes_copied != max_bytes_to_copy
-      && target_iter != target_end && source_iter != source_end)
-  {
-    mutable_buffer target_buffer =
-      mutable_buffer(*target_iter) + target_buffer_offset;
-
-    const_buffer source_buffer =
-      const_buffer(*source_iter) + source_buffer_offset;
-
-    std::size_t bytes_copied = buffer_copy(target_buffer,
-        source_buffer, max_bytes_to_copy - total_bytes_copied);
-    total_bytes_copied += bytes_copied;
-
-    if (bytes_copied == buffer_size(target_buffer))
-    {
-      ++target_iter;
-      target_buffer_offset = 0;
-    }
-    else
-      target_buffer_offset += bytes_copied;
-
-    if (bytes_copied == buffer_size(source_buffer))
-    {
-      ++source_iter;
-      source_buffer_offset = 0;
-    }
-    else
-      source_buffer_offset += bytes_copied;
-  }
-
-  return total_bytes_copied;
-}
-
-/*@}*/
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_BUFFER_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/buffered_read_stream.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/buffered_read_stream.hpp
deleted file mode 100644
index 1c64fb0..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/buffered_read_stream.hpp
+++ /dev/null
@@ -1,244 +0,0 @@
-//
-// buffered_read_stream.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_BUFFERED_READ_STREAM_HPP
-#define ASIO_BUFFERED_READ_STREAM_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cstddef>
-#include "asio/async_result.hpp"
-#include "asio/buffered_read_stream_fwd.hpp"
-#include "asio/buffer.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_resize_guard.hpp"
-#include "asio/detail/buffered_stream_storage.hpp"
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/type_traits.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Adds buffering to the read-related operations of a stream.
-/**
- * The buffered_read_stream class template can be used to add buffering to the
- * synchronous and asynchronous read operations of a stream.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- *
- * @par Concepts:
- * AsyncReadStream, AsyncWriteStream, Stream, SyncReadStream, SyncWriteStream.
- */
-template <typename Stream>
-class buffered_read_stream
-  : private noncopyable
-{
-public:
-  /// The type of the next layer.
-  typedef typename remove_reference<Stream>::type next_layer_type;
-
-  /// The type of the lowest layer.
-  typedef typename next_layer_type::lowest_layer_type lowest_layer_type;
-
-#if defined(GENERATING_DOCUMENTATION)
-  /// The default buffer size.
-  static const std::size_t default_buffer_size = implementation_defined;
-#else
-  ASIO_STATIC_CONSTANT(std::size_t, default_buffer_size = 1024);
-#endif
-
-  /// Construct, passing the specified argument to initialise the next layer.
-  template <typename Arg>
-  explicit buffered_read_stream(Arg& a)
-    : next_layer_(a),
-      storage_(default_buffer_size)
-  {
-  }
-
-  /// Construct, passing the specified argument to initialise the next layer.
-  template <typename Arg>
-  buffered_read_stream(Arg& a, std::size_t buffer_size)
-    : next_layer_(a),
-      storage_(buffer_size)
-  {
-  }
-
-  /// Get a reference to the next layer.
-  next_layer_type& next_layer()
-  {
-    return next_layer_;
-  }
-
-  /// Get a reference to the lowest layer.
-  lowest_layer_type& lowest_layer()
-  {
-    return next_layer_.lowest_layer();
-  }
-
-  /// Get a const reference to the lowest layer.
-  const lowest_layer_type& lowest_layer() const
-  {
-    return next_layer_.lowest_layer();
-  }
-
-  /// Get the io_service associated with the object.
-  asio::io_service& get_io_service()
-  {
-    return next_layer_.get_io_service();
-  }
-
-  /// Close the stream.
-  void close()
-  {
-    next_layer_.close();
-  }
-
-  /// Close the stream.
-  asio::error_code close(asio::error_code& ec)
-  {
-    return next_layer_.close(ec);
-  }
-
-  /// Write the given data to the stream. Returns the number of bytes written.
-  /// Throws an exception on failure.
-  template <typename ConstBufferSequence>
-  std::size_t write_some(const ConstBufferSequence& buffers)
-  {
-    return next_layer_.write_some(buffers);
-  }
-
-  /// Write the given data to the stream. Returns the number of bytes written,
-  /// or 0 if an error occurred.
-  template <typename ConstBufferSequence>
-  std::size_t write_some(const ConstBufferSequence& buffers,
-      asio::error_code& ec)
-  {
-    return next_layer_.write_some(buffers, ec);
-  }
-
-  /// Start an asynchronous write. The data being written must be valid for the
-  /// lifetime of the asynchronous operation.
-  template <typename ConstBufferSequence, typename WriteHandler>
-  ASIO_INITFN_RESULT_TYPE(WriteHandler,
-      void (asio::error_code, std::size_t))
-  async_write_some(const ConstBufferSequence& buffers,
-      ASIO_MOVE_ARG(WriteHandler) handler)
-  {
-    detail::async_result_init<
-      WriteHandler, void (asio::error_code, std::size_t)> init(
-        ASIO_MOVE_CAST(WriteHandler)(handler));
-
-    next_layer_.async_write_some(buffers,
-        ASIO_MOVE_CAST(ASIO_HANDLER_TYPE(WriteHandler,
-            void (asio::error_code, std::size_t)))(init.handler));
-
-    return init.result.get();
-  }
-
-  /// Fill the buffer with some data. Returns the number of bytes placed in the
-  /// buffer as a result of the operation. Throws an exception on failure.
-  std::size_t fill();
-
-  /// Fill the buffer with some data. Returns the number of bytes placed in the
-  /// buffer as a result of the operation, or 0 if an error occurred.
-  std::size_t fill(asio::error_code& ec);
-
-  /// Start an asynchronous fill.
-  template <typename ReadHandler>
-  ASIO_INITFN_RESULT_TYPE(ReadHandler,
-      void (asio::error_code, std::size_t))
-  async_fill(ASIO_MOVE_ARG(ReadHandler) handler);
-
-  /// Read some data from the stream. Returns the number of bytes read. Throws
-  /// an exception on failure.
-  template <typename MutableBufferSequence>
-  std::size_t read_some(const MutableBufferSequence& buffers);
-
-  /// Read some data from the stream. Returns the number of bytes read or 0 if
-  /// an error occurred.
-  template <typename MutableBufferSequence>
-  std::size_t read_some(const MutableBufferSequence& buffers,
-      asio::error_code& ec);
-
-  /// Start an asynchronous read. The buffer into which the data will be read
-  /// must be valid for the lifetime of the asynchronous operation.
-  template <typename MutableBufferSequence, typename ReadHandler>
-  ASIO_INITFN_RESULT_TYPE(ReadHandler,
-      void (asio::error_code, std::size_t))
-  async_read_some(const MutableBufferSequence& buffers,
-      ASIO_MOVE_ARG(ReadHandler) handler);
-
-  /// Peek at the incoming data on the stream. Returns the number of bytes read.
-  /// Throws an exception on failure.
-  template <typename MutableBufferSequence>
-  std::size_t peek(const MutableBufferSequence& buffers);
-
-  /// Peek at the incoming data on the stream. Returns the number of bytes read,
-  /// or 0 if an error occurred.
-  template <typename MutableBufferSequence>
-  std::size_t peek(const MutableBufferSequence& buffers,
-      asio::error_code& ec);
-
-  /// Determine the amount of data that may be read without blocking.
-  std::size_t in_avail()
-  {
-    return storage_.size();
-  }
-
-  /// Determine the amount of data that may be read without blocking.
-  std::size_t in_avail(asio::error_code& ec)
-  {
-    ec = asio::error_code();
-    return storage_.size();
-  }
-
-private:
-  /// Copy data out of the internal buffer to the specified target buffer.
-  /// Returns the number of bytes copied.
-  template <typename MutableBufferSequence>
-  std::size_t copy(const MutableBufferSequence& buffers)
-  {
-    std::size_t bytes_copied = asio::buffer_copy(
-        buffers, storage_.data(), storage_.size());
-    storage_.consume(bytes_copied);
-    return bytes_copied;
-  }
-
-  /// Copy data from the internal buffer to the specified target buffer, without
-  /// removing the data from the internal buffer. Returns the number of bytes
-  /// copied.
-  template <typename MutableBufferSequence>
-  std::size_t peek_copy(const MutableBufferSequence& buffers)
-  {
-    return asio::buffer_copy(buffers, storage_.data(), storage_.size());
-  }
-
-  /// The next layer.
-  Stream next_layer_;
-
-  // The data in the buffer.
-  detail::buffered_stream_storage storage_;
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/impl/buffered_read_stream.hpp"
-
-#endif // ASIO_BUFFERED_READ_STREAM_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/buffered_read_stream_fwd.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/buffered_read_stream_fwd.hpp
deleted file mode 100644
index 58664c9..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/buffered_read_stream_fwd.hpp
+++ /dev/null
@@ -1,25 +0,0 @@
-//
-// buffered_read_stream_fwd.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_BUFFERED_READ_STREAM_FWD_HPP
-#define ASIO_BUFFERED_READ_STREAM_FWD_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-namespace asio {
-
-template <typename Stream>
-class buffered_read_stream;
-
-} // namespace asio
-
-#endif // ASIO_BUFFERED_READ_STREAM_FWD_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/buffered_stream.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/buffered_stream.hpp
deleted file mode 100644
index 6a35da9..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/buffered_stream.hpp
+++ /dev/null
@@ -1,258 +0,0 @@
-//
-// buffered_stream.hpp
-// ~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_BUFFERED_STREAM_HPP
-#define ASIO_BUFFERED_STREAM_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cstddef>
-#include "asio/async_result.hpp"
-#include "asio/buffered_read_stream.hpp"
-#include "asio/buffered_write_stream.hpp"
-#include "asio/buffered_stream_fwd.hpp"
-#include "asio/detail/noncopyable.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Adds buffering to the read- and write-related operations of a stream.
-/**
- * The buffered_stream class template can be used to add buffering to the
- * synchronous and asynchronous read and write operations of a stream.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- *
- * @par Concepts:
- * AsyncReadStream, AsyncWriteStream, Stream, SyncReadStream, SyncWriteStream.
- */
-template <typename Stream>
-class buffered_stream
-  : private noncopyable
-{
-public:
-  /// The type of the next layer.
-  typedef typename remove_reference<Stream>::type next_layer_type;
-
-  /// The type of the lowest layer.
-  typedef typename next_layer_type::lowest_layer_type lowest_layer_type;
-
-  /// Construct, passing the specified argument to initialise the next layer.
-  template <typename Arg>
-  explicit buffered_stream(Arg& a)
-    : inner_stream_impl_(a),
-      stream_impl_(inner_stream_impl_)
-  {
-  }
-
-  /// Construct, passing the specified argument to initialise the next layer.
-  template <typename Arg>
-  explicit buffered_stream(Arg& a, std::size_t read_buffer_size,
-      std::size_t write_buffer_size)
-    : inner_stream_impl_(a, write_buffer_size),
-      stream_impl_(inner_stream_impl_, read_buffer_size)
-  {
-  }
-
-  /// Get a reference to the next layer.
-  next_layer_type& next_layer()
-  {
-    return stream_impl_.next_layer().next_layer();
-  }
-
-  /// Get a reference to the lowest layer.
-  lowest_layer_type& lowest_layer()
-  {
-    return stream_impl_.lowest_layer();
-  }
-
-  /// Get a const reference to the lowest layer.
-  const lowest_layer_type& lowest_layer() const
-  {
-    return stream_impl_.lowest_layer();
-  }
-
-  /// Get the io_service associated with the object.
-  asio::io_service& get_io_service()
-  {
-    return stream_impl_.get_io_service();
-  }
-
-  /// Close the stream.
-  void close()
-  {
-    stream_impl_.close();
-  }
-
-  /// Close the stream.
-  asio::error_code close(asio::error_code& ec)
-  {
-    return stream_impl_.close(ec);
-  }
-
-  /// Flush all data from the buffer to the next layer. Returns the number of
-  /// bytes written to the next layer on the last write operation. Throws an
-  /// exception on failure.
-  std::size_t flush()
-  {
-    return stream_impl_.next_layer().flush();
-  }
-
-  /// Flush all data from the buffer to the next layer. Returns the number of
-  /// bytes written to the next layer on the last write operation, or 0 if an
-  /// error occurred.
-  std::size_t flush(asio::error_code& ec)
-  {
-    return stream_impl_.next_layer().flush(ec);
-  }
-
-  /// Start an asynchronous flush.
-  template <typename WriteHandler>
-  ASIO_INITFN_RESULT_TYPE(WriteHandler,
-      void (asio::error_code, std::size_t))
-  async_flush(ASIO_MOVE_ARG(WriteHandler) handler)
-  {
-    return stream_impl_.next_layer().async_flush(
-        ASIO_MOVE_CAST(WriteHandler)(handler));
-  }
-
-  /// Write the given data to the stream. Returns the number of bytes written.
-  /// Throws an exception on failure.
-  template <typename ConstBufferSequence>
-  std::size_t write_some(const ConstBufferSequence& buffers)
-  {
-    return stream_impl_.write_some(buffers);
-  }
-
-  /// Write the given data to the stream. Returns the number of bytes written,
-  /// or 0 if an error occurred.
-  template <typename ConstBufferSequence>
-  std::size_t write_some(const ConstBufferSequence& buffers,
-      asio::error_code& ec)
-  {
-    return stream_impl_.write_some(buffers, ec);
-  }
-
-  /// Start an asynchronous write. The data being written must be valid for the
-  /// lifetime of the asynchronous operation.
-  template <typename ConstBufferSequence, typename WriteHandler>
-  ASIO_INITFN_RESULT_TYPE(WriteHandler,
-      void (asio::error_code, std::size_t))
-  async_write_some(const ConstBufferSequence& buffers,
-      ASIO_MOVE_ARG(WriteHandler) handler)
-  {
-    return stream_impl_.async_write_some(buffers,
-        ASIO_MOVE_CAST(WriteHandler)(handler));
-  }
-
-  /// Fill the buffer with some data. Returns the number of bytes placed in the
-  /// buffer as a result of the operation. Throws an exception on failure.
-  std::size_t fill()
-  {
-    return stream_impl_.fill();
-  }
-
-  /// Fill the buffer with some data. Returns the number of bytes placed in the
-  /// buffer as a result of the operation, or 0 if an error occurred.
-  std::size_t fill(asio::error_code& ec)
-  {
-    return stream_impl_.fill(ec);
-  }
-
-  /// Start an asynchronous fill.
-  template <typename ReadHandler>
-  ASIO_INITFN_RESULT_TYPE(ReadHandler,
-      void (asio::error_code, std::size_t))
-  async_fill(ASIO_MOVE_ARG(ReadHandler) handler)
-  {
-    return stream_impl_.async_fill(ASIO_MOVE_CAST(ReadHandler)(handler));
-  }
-
-  /// Read some data from the stream. Returns the number of bytes read. Throws
-  /// an exception on failure.
-  template <typename MutableBufferSequence>
-  std::size_t read_some(const MutableBufferSequence& buffers)
-  {
-    return stream_impl_.read_some(buffers);
-  }
-
-  /// Read some data from the stream. Returns the number of bytes read or 0 if
-  /// an error occurred.
-  template <typename MutableBufferSequence>
-  std::size_t read_some(const MutableBufferSequence& buffers,
-      asio::error_code& ec)
-  {
-    return stream_impl_.read_some(buffers, ec);
-  }
-
-  /// Start an asynchronous read. The buffer into which the data will be read
-  /// must be valid for the lifetime of the asynchronous operation.
-  template <typename MutableBufferSequence, typename ReadHandler>
-  ASIO_INITFN_RESULT_TYPE(ReadHandler,
-      void (asio::error_code, std::size_t))
-  async_read_some(const MutableBufferSequence& buffers,
-      ASIO_MOVE_ARG(ReadHandler) handler)
-  {
-    return stream_impl_.async_read_some(buffers,
-        ASIO_MOVE_CAST(ReadHandler)(handler));
-  }
-
-  /// Peek at the incoming data on the stream. Returns the number of bytes read.
-  /// Throws an exception on failure.
-  template <typename MutableBufferSequence>
-  std::size_t peek(const MutableBufferSequence& buffers)
-  {
-    return stream_impl_.peek(buffers);
-  }
-
-  /// Peek at the incoming data on the stream. Returns the number of bytes read,
-  /// or 0 if an error occurred.
-  template <typename MutableBufferSequence>
-  std::size_t peek(const MutableBufferSequence& buffers,
-      asio::error_code& ec)
-  {
-    return stream_impl_.peek(buffers, ec);
-  }
-
-  /// Determine the amount of data that may be read without blocking.
-  std::size_t in_avail()
-  {
-    return stream_impl_.in_avail();
-  }
-
-  /// Determine the amount of data that may be read without blocking.
-  std::size_t in_avail(asio::error_code& ec)
-  {
-    return stream_impl_.in_avail(ec);
-  }
-
-private:
-  // The buffered write stream.
-  typedef buffered_write_stream<Stream> write_stream_type;
-  write_stream_type inner_stream_impl_;
-
-  // The buffered read stream.
-  typedef buffered_read_stream<write_stream_type&> read_stream_type;
-  read_stream_type stream_impl_;
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_BUFFERED_STREAM_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/buffered_stream_fwd.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/buffered_stream_fwd.hpp
deleted file mode 100644
index 1bad0a8..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/buffered_stream_fwd.hpp
+++ /dev/null
@@ -1,25 +0,0 @@
-//
-// buffered_stream_fwd.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_BUFFERED_STREAM_FWD_HPP
-#define ASIO_BUFFERED_STREAM_FWD_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-namespace asio {
-
-template <typename Stream>
-class buffered_stream;
-
-} // namespace asio
-
-#endif // ASIO_BUFFERED_STREAM_FWD_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/buffered_write_stream.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/buffered_write_stream.hpp
deleted file mode 100644
index efc9d93..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/buffered_write_stream.hpp
+++ /dev/null
@@ -1,236 +0,0 @@
-//
-// buffered_write_stream.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_BUFFERED_WRITE_STREAM_HPP
-#define ASIO_BUFFERED_WRITE_STREAM_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cstddef>
-#include "asio/buffered_write_stream_fwd.hpp"
-#include "asio/buffer.hpp"
-#include "asio/completion_condition.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffered_stream_storage.hpp"
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/type_traits.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/write.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Adds buffering to the write-related operations of a stream.
-/**
- * The buffered_write_stream class template can be used to add buffering to the
- * synchronous and asynchronous write operations of a stream.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- *
- * @par Concepts:
- * AsyncReadStream, AsyncWriteStream, Stream, SyncReadStream, SyncWriteStream.
- */
-template <typename Stream>
-class buffered_write_stream
-  : private noncopyable
-{
-public:
-  /// The type of the next layer.
-  typedef typename remove_reference<Stream>::type next_layer_type;
-
-  /// The type of the lowest layer.
-  typedef typename next_layer_type::lowest_layer_type lowest_layer_type;
-
-#if defined(GENERATING_DOCUMENTATION)
-  /// The default buffer size.
-  static const std::size_t default_buffer_size = implementation_defined;
-#else
-  ASIO_STATIC_CONSTANT(std::size_t, default_buffer_size = 1024);
-#endif
-
-  /// Construct, passing the specified argument to initialise the next layer.
-  template <typename Arg>
-  explicit buffered_write_stream(Arg& a)
-    : next_layer_(a),
-      storage_(default_buffer_size)
-  {
-  }
-
-  /// Construct, passing the specified argument to initialise the next layer.
-  template <typename Arg>
-  buffered_write_stream(Arg& a, std::size_t buffer_size)
-    : next_layer_(a),
-      storage_(buffer_size)
-  {
-  }
-
-  /// Get a reference to the next layer.
-  next_layer_type& next_layer()
-  {
-    return next_layer_;
-  }
-
-  /// Get a reference to the lowest layer.
-  lowest_layer_type& lowest_layer()
-  {
-    return next_layer_.lowest_layer();
-  }
-
-  /// Get a const reference to the lowest layer.
-  const lowest_layer_type& lowest_layer() const
-  {
-    return next_layer_.lowest_layer();
-  }
-
-  /// Get the io_service associated with the object.
-  asio::io_service& get_io_service()
-  {
-    return next_layer_.get_io_service();
-  }
-
-  /// Close the stream.
-  void close()
-  {
-    next_layer_.close();
-  }
-
-  /// Close the stream.
-  asio::error_code close(asio::error_code& ec)
-  {
-    return next_layer_.close(ec);
-  }
-
-  /// Flush all data from the buffer to the next layer. Returns the number of
-  /// bytes written to the next layer on the last write operation. Throws an
-  /// exception on failure.
-  std::size_t flush();
-
-  /// Flush all data from the buffer to the next layer. Returns the number of
-  /// bytes written to the next layer on the last write operation, or 0 if an
-  /// error occurred.
-  std::size_t flush(asio::error_code& ec);
-
-  /// Start an asynchronous flush.
-  template <typename WriteHandler>
-  ASIO_INITFN_RESULT_TYPE(WriteHandler,
-      void (asio::error_code, std::size_t))
-  async_flush(ASIO_MOVE_ARG(WriteHandler) handler);
-
-  /// Write the given data to the stream. Returns the number of bytes written.
-  /// Throws an exception on failure.
-  template <typename ConstBufferSequence>
-  std::size_t write_some(const ConstBufferSequence& buffers);
-
-  /// Write the given data to the stream. Returns the number of bytes written,
-  /// or 0 if an error occurred and the error handler did not throw.
-  template <typename ConstBufferSequence>
-  std::size_t write_some(const ConstBufferSequence& buffers,
-      asio::error_code& ec);
-
-  /// Start an asynchronous write. The data being written must be valid for the
-  /// lifetime of the asynchronous operation.
-  template <typename ConstBufferSequence, typename WriteHandler>
-  ASIO_INITFN_RESULT_TYPE(WriteHandler,
-      void (asio::error_code, std::size_t))
-  async_write_some(const ConstBufferSequence& buffers,
-      ASIO_MOVE_ARG(WriteHandler) handler);
-
-  /// Read some data from the stream. Returns the number of bytes read. Throws
-  /// an exception on failure.
-  template <typename MutableBufferSequence>
-  std::size_t read_some(const MutableBufferSequence& buffers)
-  {
-    return next_layer_.read_some(buffers);
-  }
-
-  /// Read some data from the stream. Returns the number of bytes read or 0 if
-  /// an error occurred.
-  template <typename MutableBufferSequence>
-  std::size_t read_some(const MutableBufferSequence& buffers,
-      asio::error_code& ec)
-  {
-    return next_layer_.read_some(buffers, ec);
-  }
-
-  /// Start an asynchronous read. The buffer into which the data will be read
-  /// must be valid for the lifetime of the asynchronous operation.
-  template <typename MutableBufferSequence, typename ReadHandler>
-  ASIO_INITFN_RESULT_TYPE(ReadHandler,
-      void (asio::error_code, std::size_t))
-  async_read_some(const MutableBufferSequence& buffers,
-      ASIO_MOVE_ARG(ReadHandler) handler)
-  {
-    detail::async_result_init<
-      ReadHandler, void (asio::error_code, std::size_t)> init(
-        ASIO_MOVE_CAST(ReadHandler)(handler));
-
-    next_layer_.async_read_some(buffers,
-        ASIO_MOVE_CAST(ASIO_HANDLER_TYPE(ReadHandler,
-            void (asio::error_code, std::size_t)))(init.handler));
-
-    return init.result.get();
-  }
-
-  /// Peek at the incoming data on the stream. Returns the number of bytes read.
-  /// Throws an exception on failure.
-  template <typename MutableBufferSequence>
-  std::size_t peek(const MutableBufferSequence& buffers)
-  {
-    return next_layer_.peek(buffers);
-  }
-
-  /// Peek at the incoming data on the stream. Returns the number of bytes read,
-  /// or 0 if an error occurred.
-  template <typename MutableBufferSequence>
-  std::size_t peek(const MutableBufferSequence& buffers,
-      asio::error_code& ec)
-  {
-    return next_layer_.peek(buffers, ec);
-  }
-
-  /// Determine the amount of data that may be read without blocking.
-  std::size_t in_avail()
-  {
-    return next_layer_.in_avail();
-  }
-
-  /// Determine the amount of data that may be read without blocking.
-  std::size_t in_avail(asio::error_code& ec)
-  {
-    return next_layer_.in_avail(ec);
-  }
-
-private:
-  /// Copy data into the internal buffer from the specified source buffer.
-  /// Returns the number of bytes copied.
-  template <typename ConstBufferSequence>
-  std::size_t copy(const ConstBufferSequence& buffers);
-
-  /// The next layer.
-  Stream next_layer_;
-
-  // The data in the buffer.
-  detail::buffered_stream_storage storage_;
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/impl/buffered_write_stream.hpp"
-
-#endif // ASIO_BUFFERED_WRITE_STREAM_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/buffered_write_stream_fwd.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/buffered_write_stream_fwd.hpp
deleted file mode 100644
index 027382d..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/buffered_write_stream_fwd.hpp
+++ /dev/null
@@ -1,25 +0,0 @@
-//
-// buffered_write_stream_fwd.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_BUFFERED_WRITE_STREAM_FWD_HPP
-#define ASIO_BUFFERED_WRITE_STREAM_FWD_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-namespace asio {
-
-template <typename Stream>
-class buffered_write_stream;
-
-} // namespace asio
-
-#endif // ASIO_BUFFERED_WRITE_STREAM_FWD_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/buffers_iterator.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/buffers_iterator.hpp
deleted file mode 100644
index 0404b12..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/buffers_iterator.hpp
+++ /dev/null
@@ -1,481 +0,0 @@
-//
-// buffers_iterator.hpp
-// ~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_BUFFERS_ITERATOR_HPP
-#define ASIO_BUFFERS_ITERATOR_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cstddef>
-#include <iterator>
-#include "asio/buffer.hpp"
-#include "asio/detail/assert.hpp"
-#include "asio/detail/type_traits.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-namespace detail
-{
-  template <bool IsMutable>
-  struct buffers_iterator_types_helper;
-
-  template <>
-  struct buffers_iterator_types_helper<false>
-  {
-    typedef const_buffer buffer_type;
-    template <typename ByteType>
-    struct byte_type
-    {
-      typedef typename add_const<ByteType>::type type;
-    };
-  };
-
-  template <>
-  struct buffers_iterator_types_helper<true>
-  {
-    typedef mutable_buffer buffer_type;
-    template <typename ByteType>
-    struct byte_type
-    {
-      typedef ByteType type;
-    };
-  };
-
-  template <typename BufferSequence, typename ByteType>
-  struct buffers_iterator_types
-  {
-    enum
-    {
-      is_mutable = is_convertible<
-          typename BufferSequence::value_type,
-          mutable_buffer>::value
-    };
-    typedef buffers_iterator_types_helper<is_mutable> helper;
-    typedef typename helper::buffer_type buffer_type;
-    typedef typename helper::template byte_type<ByteType>::type byte_type;
-  };
-}
-
-/// A random access iterator over the bytes in a buffer sequence.
-template <typename BufferSequence, typename ByteType = char>
-class buffers_iterator
-{
-private:
-  typedef typename detail::buffers_iterator_types<
-      BufferSequence, ByteType>::buffer_type buffer_type;
-
-public:
-  /// The type used for the distance between two iterators.
-  typedef std::ptrdiff_t difference_type;
-
-  /// The type of the value pointed to by the iterator.
-  typedef ByteType value_type;
-
-#if defined(GENERATING_DOCUMENTATION)
-  /// The type of the result of applying operator->() to the iterator.
-  /**
-   * If the buffer sequence stores buffer objects that are convertible to
-   * mutable_buffer, this is a pointer to a non-const ByteType. Otherwise, a
-   * pointer to a const ByteType.
-   */
-  typedef const_or_non_const_ByteType* pointer;
-#else // defined(GENERATING_DOCUMENTATION)
-  typedef typename detail::buffers_iterator_types<
-      BufferSequence, ByteType>::byte_type* pointer;
-#endif // defined(GENERATING_DOCUMENTATION)
-
-#if defined(GENERATING_DOCUMENTATION)
-  /// The type of the result of applying operator*() to the iterator.
-  /**
-   * If the buffer sequence stores buffer objects that are convertible to
-   * mutable_buffer, this is a reference to a non-const ByteType. Otherwise, a
-   * reference to a const ByteType.
-   */
-  typedef const_or_non_const_ByteType& reference;
-#else // defined(GENERATING_DOCUMENTATION)
-  typedef typename detail::buffers_iterator_types<
-      BufferSequence, ByteType>::byte_type& reference;
-#endif // defined(GENERATING_DOCUMENTATION)
-
-  /// The iterator category.
-  typedef std::random_access_iterator_tag iterator_category;
-
-  /// Default constructor. Creates an iterator in an undefined state.
-  buffers_iterator()
-    : current_buffer_(),
-      current_buffer_position_(0),
-      begin_(),
-      current_(),
-      end_(),
-      position_(0)
-  {
-  }
-
-  /// Construct an iterator representing the beginning of the buffers' data.
-  static buffers_iterator begin(const BufferSequence& buffers)
-#if defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 3)
-    __attribute__ ((__noinline__))
-#endif // defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 3)
-  {
-    buffers_iterator new_iter;
-    new_iter.begin_ = buffers.begin();
-    new_iter.current_ = buffers.begin();
-    new_iter.end_ = buffers.end();
-    while (new_iter.current_ != new_iter.end_)
-    {
-      new_iter.current_buffer_ = *new_iter.current_;
-      if (asio::buffer_size(new_iter.current_buffer_) > 0)
-        break;
-      ++new_iter.current_;
-    }
-    return new_iter;
-  }
-
-  /// Construct an iterator representing the end of the buffers' data.
-  static buffers_iterator end(const BufferSequence& buffers)
-#if defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 3)
-    __attribute__ ((__noinline__))
-#endif // defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ == 3)
-  {
-    buffers_iterator new_iter;
-    new_iter.begin_ = buffers.begin();
-    new_iter.current_ = buffers.begin();
-    new_iter.end_ = buffers.end();
-    while (new_iter.current_ != new_iter.end_)
-    {
-      buffer_type buffer = *new_iter.current_;
-      new_iter.position_ += asio::buffer_size(buffer);
-      ++new_iter.current_;
-    }
-    return new_iter;
-  }
-
-  /// Dereference an iterator.
-  reference operator*() const
-  {
-    return dereference();
-  }
-
-  /// Dereference an iterator.
-  pointer operator->() const
-  {
-    return &dereference();
-  }
-
-  /// Access an individual element.
-  reference operator[](std::ptrdiff_t difference) const
-  {
-    buffers_iterator tmp(*this);
-    tmp.advance(difference);
-    return *tmp;
-  }
-
-  /// Increment operator (prefix).
-  buffers_iterator& operator++()
-  {
-    increment();
-    return *this;
-  }
-
-  /// Increment operator (postfix).
-  buffers_iterator operator++(int)
-  {
-    buffers_iterator tmp(*this);
-    ++*this;
-    return tmp;
-  }
-
-  /// Decrement operator (prefix).
-  buffers_iterator& operator--()
-  {
-    decrement();
-    return *this;
-  }
-
-  /// Decrement operator (postfix).
-  buffers_iterator operator--(int)
-  {
-    buffers_iterator tmp(*this);
-    --*this;
-    return tmp;
-  }
-
-  /// Addition operator.
-  buffers_iterator& operator+=(std::ptrdiff_t difference)
-  {
-    advance(difference);
-    return *this;
-  }
-
-  /// Subtraction operator.
-  buffers_iterator& operator-=(std::ptrdiff_t difference)
-  {
-    advance(-difference);
-    return *this;
-  }
-
-  /// Addition operator.
-  friend buffers_iterator operator+(const buffers_iterator& iter,
-      std::ptrdiff_t difference)
-  {
-    buffers_iterator tmp(iter);
-    tmp.advance(difference);
-    return tmp;
-  }
-
-  /// Addition operator.
-  friend buffers_iterator operator+(std::ptrdiff_t difference,
-      const buffers_iterator& iter)
-  {
-    buffers_iterator tmp(iter);
-    tmp.advance(difference);
-    return tmp;
-  }
-
-  /// Subtraction operator.
-  friend buffers_iterator operator-(const buffers_iterator& iter,
-      std::ptrdiff_t difference)
-  {
-    buffers_iterator tmp(iter);
-    tmp.advance(-difference);
-    return tmp;
-  }
-
-  /// Subtraction operator.
-  friend std::ptrdiff_t operator-(const buffers_iterator& a,
-      const buffers_iterator& b)
-  {
-    return b.distance_to(a);
-  }
-
-  /// Test two iterators for equality.
-  friend bool operator==(const buffers_iterator& a, const buffers_iterator& b)
-  {
-    return a.equal(b);
-  }
-
-  /// Test two iterators for inequality.
-  friend bool operator!=(const buffers_iterator& a, const buffers_iterator& b)
-  {
-    return !a.equal(b);
-  }
-
-  /// Compare two iterators.
-  friend bool operator<(const buffers_iterator& a, const buffers_iterator& b)
-  {
-    return a.distance_to(b) > 0;
-  }
-
-  /// Compare two iterators.
-  friend bool operator<=(const buffers_iterator& a, const buffers_iterator& b)
-  {
-    return !(b < a);
-  }
-
-  /// Compare two iterators.
-  friend bool operator>(const buffers_iterator& a, const buffers_iterator& b)
-  {
-    return b < a;
-  }
-
-  /// Compare two iterators.
-  friend bool operator>=(const buffers_iterator& a, const buffers_iterator& b)
-  {
-    return !(a < b);
-  }
-
-private:
-  // Dereference the iterator.
-  reference dereference() const
-  {
-    return buffer_cast<pointer>(current_buffer_)[current_buffer_position_];
-  }
-
-  // Compare two iterators for equality.
-  bool equal(const buffers_iterator& other) const
-  {
-    return position_ == other.position_;
-  }
-
-  // Increment the iterator.
-  void increment()
-  {
-    ASIO_ASSERT(current_ != end_ && "iterator out of bounds");
-    ++position_;
-
-    // Check if the increment can be satisfied by the current buffer.
-    ++current_buffer_position_;
-    if (current_buffer_position_ != asio::buffer_size(current_buffer_))
-      return;
-
-    // Find the next non-empty buffer.
-    ++current_;
-    current_buffer_position_ = 0;
-    while (current_ != end_)
-    {
-      current_buffer_ = *current_;
-      if (asio::buffer_size(current_buffer_) > 0)
-        return;
-      ++current_;
-    }
-  }
-
-  // Decrement the iterator.
-  void decrement()
-  {
-    ASIO_ASSERT(position_ > 0 && "iterator out of bounds");
-    --position_;
-
-    // Check if the decrement can be satisfied by the current buffer.
-    if (current_buffer_position_ != 0)
-    {
-      --current_buffer_position_;
-      return;
-    }
-
-    // Find the previous non-empty buffer.
-    typename BufferSequence::const_iterator iter = current_;
-    while (iter != begin_)
-    {
-      --iter;
-      buffer_type buffer = *iter;
-      std::size_t buffer_size = asio::buffer_size(buffer);
-      if (buffer_size > 0)
-      {
-        current_ = iter;
-        current_buffer_ = buffer;
-        current_buffer_position_ = buffer_size - 1;
-        return;
-      }
-    }
-  }
-
-  // Advance the iterator by the specified distance.
-  void advance(std::ptrdiff_t n)
-  {
-    if (n > 0)
-    {
-      ASIO_ASSERT(current_ != end_ && "iterator out of bounds");
-      for (;;)
-      {
-        std::ptrdiff_t current_buffer_balance
-          = asio::buffer_size(current_buffer_)
-          - current_buffer_position_;
-
-        // Check if the advance can be satisfied by the current buffer.
-        if (current_buffer_balance > n)
-        {
-          position_ += n;
-          current_buffer_position_ += n;
-          return;
-        }
-
-        // Update position.
-        n -= current_buffer_balance;
-        position_ += current_buffer_balance;
-
-        // Move to next buffer. If it is empty then it will be skipped on the
-        // next iteration of this loop.
-        if (++current_ == end_)
-        {
-          ASIO_ASSERT(n == 0 && "iterator out of bounds");
-          current_buffer_ = buffer_type();
-          current_buffer_position_ = 0;
-          return;
-        }
-        current_buffer_ = *current_;
-        current_buffer_position_ = 0;
-      }
-    }
-    else if (n < 0)
-    {
-      std::size_t abs_n = -n;
-      ASIO_ASSERT(position_ >= abs_n && "iterator out of bounds");
-      for (;;)
-      {
-        // Check if the advance can be satisfied by the current buffer.
-        if (current_buffer_position_ >= abs_n)
-        {
-          position_ -= abs_n;
-          current_buffer_position_ -= abs_n;
-          return;
-        }
-
-        // Update position.
-        abs_n -= current_buffer_position_;
-        position_ -= current_buffer_position_;
-
-        // Check if we've reached the beginning of the buffers.
-        if (current_ == begin_)
-        {
-          ASIO_ASSERT(abs_n == 0 && "iterator out of bounds");
-          current_buffer_position_ = 0;
-          return;
-        }
-
-        // Find the previous non-empty buffer.
-        typename BufferSequence::const_iterator iter = current_;
-        while (iter != begin_)
-        {
-          --iter;
-          buffer_type buffer = *iter;
-          std::size_t buffer_size = asio::buffer_size(buffer);
-          if (buffer_size > 0)
-          {
-            current_ = iter;
-            current_buffer_ = buffer;
-            current_buffer_position_ = buffer_size;
-            break;
-          }
-        }
-      }
-    }
-  }
-
-  // Determine the distance between two iterators.
-  std::ptrdiff_t distance_to(const buffers_iterator& other) const
-  {
-    return other.position_ - position_;
-  }
-
-  buffer_type current_buffer_;
-  std::size_t current_buffer_position_;
-  typename BufferSequence::const_iterator begin_;
-  typename BufferSequence::const_iterator current_;
-  typename BufferSequence::const_iterator end_;
-  std::size_t position_;
-};
-
-/// Construct an iterator representing the beginning of the buffers' data.
-template <typename BufferSequence>
-inline buffers_iterator<BufferSequence> buffers_begin(
-    const BufferSequence& buffers)
-{
-  return buffers_iterator<BufferSequence>::begin(buffers);
-}
-
-/// Construct an iterator representing the end of the buffers' data.
-template <typename BufferSequence>
-inline buffers_iterator<BufferSequence> buffers_end(
-    const BufferSequence& buffers)
-{
-  return buffers_iterator<BufferSequence>::end(buffers);
-}
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_BUFFERS_ITERATOR_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/completion_condition.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/completion_condition.hpp
deleted file mode 100644
index b17b44a..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/completion_condition.hpp
+++ /dev/null
@@ -1,218 +0,0 @@
-//
-// completion_condition.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_COMPLETION_CONDITION_HPP
-#define ASIO_COMPLETION_CONDITION_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cstddef>
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-namespace detail {
-
-// The default maximum number of bytes to transfer in a single operation.
-enum default_max_transfer_size_t { default_max_transfer_size = 65536 };
-
-// Adapt result of old-style completion conditions (which had a bool result
-// where true indicated that the operation was complete).
-inline std::size_t adapt_completion_condition_result(bool result)
-{
-  return result ? 0 : default_max_transfer_size;
-}
-
-// Adapt result of current completion conditions (which have a size_t result
-// where 0 means the operation is complete, and otherwise the result is the
-// maximum number of bytes to transfer on the next underlying operation).
-inline std::size_t adapt_completion_condition_result(std::size_t result)
-{
-  return result;
-}
-
-class transfer_all_t
-{
-public:
-  typedef std::size_t result_type;
-
-  template <typename Error>
-  std::size_t operator()(const Error& err, std::size_t)
-  {
-    return !!err ? 0 : default_max_transfer_size;
-  }
-};
-
-class transfer_at_least_t
-{
-public:
-  typedef std::size_t result_type;
-
-  explicit transfer_at_least_t(std::size_t minimum)
-    : minimum_(minimum)
-  {
-  }
-
-  template <typename Error>
-  std::size_t operator()(const Error& err, std::size_t bytes_transferred)
-  {
-    return (!!err || bytes_transferred >= minimum_)
-      ? 0 : default_max_transfer_size;
-  }
-
-private:
-  std::size_t minimum_;
-};
-
-class transfer_exactly_t
-{
-public:
-  typedef std::size_t result_type;
-
-  explicit transfer_exactly_t(std::size_t size)
-    : size_(size)
-  {
-  }
-
-  template <typename Error>
-  std::size_t operator()(const Error& err, std::size_t bytes_transferred)
-  {
-    return (!!err || bytes_transferred >= size_) ? 0 :
-      (size_ - bytes_transferred < default_max_transfer_size
-        ? size_ - bytes_transferred : std::size_t(default_max_transfer_size));
-  }
-
-private:
-  std::size_t size_;
-};
-
-} // namespace detail
-
-/**
- * @defgroup completion_condition Completion Condition Function Objects
- *
- * Function objects used for determining when a read or write operation should
- * complete.
- */
-/*@{*/
-
-/// Return a completion condition function object that indicates that a read or
-/// write operation should continue until all of the data has been transferred,
-/// or until an error occurs.
-/**
- * This function is used to create an object, of unspecified type, that meets
- * CompletionCondition requirements.
- *
- * @par Example
- * Reading until a buffer is full:
- * @code
- * boost::array<char, 128> buf;
- * asio::error_code ec;
- * std::size_t n = asio::read(
- *     sock, asio::buffer(buf),
- *     asio::transfer_all(), ec);
- * if (ec)
- * {
- *   // An error occurred.
- * }
- * else
- * {
- *   // n == 128
- * }
- * @endcode
- */
-#if defined(GENERATING_DOCUMENTATION)
-unspecified transfer_all();
-#else
-inline detail::transfer_all_t transfer_all()
-{
-  return detail::transfer_all_t();
-}
-#endif
-
-/// Return a completion condition function object that indicates that a read or
-/// write operation should continue until a minimum number of bytes has been
-/// transferred, or until an error occurs.
-/**
- * This function is used to create an object, of unspecified type, that meets
- * CompletionCondition requirements.
- *
- * @par Example
- * Reading until a buffer is full or contains at least 64 bytes:
- * @code
- * boost::array<char, 128> buf;
- * asio::error_code ec;
- * std::size_t n = asio::read(
- *     sock, asio::buffer(buf),
- *     asio::transfer_at_least(64), ec);
- * if (ec)
- * {
- *   // An error occurred.
- * }
- * else
- * {
- *   // n >= 64 && n <= 128
- * }
- * @endcode
- */
-#if defined(GENERATING_DOCUMENTATION)
-unspecified transfer_at_least(std::size_t minimum);
-#else
-inline detail::transfer_at_least_t transfer_at_least(std::size_t minimum)
-{
-  return detail::transfer_at_least_t(minimum);
-}
-#endif
-
-/// Return a completion condition function object that indicates that a read or
-/// write operation should continue until an exact number of bytes has been
-/// transferred, or until an error occurs.
-/**
- * This function is used to create an object, of unspecified type, that meets
- * CompletionCondition requirements.
- *
- * @par Example
- * Reading until a buffer is full or contains exactly 64 bytes:
- * @code
- * boost::array<char, 128> buf;
- * asio::error_code ec;
- * std::size_t n = asio::read(
- *     sock, asio::buffer(buf),
- *     asio::transfer_exactly(64), ec);
- * if (ec)
- * {
- *   // An error occurred.
- * }
- * else
- * {
- *   // n == 64
- * }
- * @endcode
- */
-#if defined(GENERATING_DOCUMENTATION)
-unspecified transfer_exactly(std::size_t size);
-#else
-inline detail::transfer_exactly_t transfer_exactly(std::size_t size)
-{
-  return detail::transfer_exactly_t(size);
-}
-#endif
-
-/*@}*/
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_COMPLETION_CONDITION_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/connect.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/connect.hpp
deleted file mode 100644
index 14f29b1..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/connect.hpp
+++ /dev/null
@@ -1,823 +0,0 @@
-//
-// connect.hpp
-// ~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_CONNECT_HPP
-#define ASIO_CONNECT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/async_result.hpp"
-#include "asio/basic_socket.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/**
- * @defgroup connect asio::connect
- *
- * @brief Establishes a socket connection by trying each endpoint in a sequence.
- */
-/*@{*/
-
-/// Establishes a socket connection by trying each endpoint in a sequence.
-/**
- * This function attempts to connect a socket to one of a sequence of
- * endpoints. It does this by repeated calls to the socket's @c connect member
- * function, once for each endpoint in the sequence, until a connection is
- * successfully established.
- *
- * @param s The socket to be connected. If the socket is already open, it will
- * be closed.
- *
- * @param begin An iterator pointing to the start of a sequence of endpoints.
- *
- * @returns On success, an iterator denoting the successfully connected
- * endpoint. Otherwise, the end iterator.
- *
- * @throws asio::system_error Thrown on failure. If the sequence is
- * empty, the associated @c error_code is asio::error::not_found.
- * Otherwise, contains the error from the last connection attempt.
- *
- * @note This overload assumes that a default constructed object of type @c
- * Iterator represents the end of the sequence. This is a valid assumption for
- * iterator types such as @c asio::ip::tcp::resolver::iterator.
- *
- * @par Example
- * @code tcp::resolver r(io_service);
- * tcp::resolver::query q("host", "service");
- * tcp::socket s(io_service);
- * asio::connect(s, r.resolve(q)); @endcode
- */
-template <typename Protocol, typename SocketService, typename Iterator>
-Iterator connect(basic_socket<Protocol, SocketService>& s, Iterator begin);
-
-/// Establishes a socket connection by trying each endpoint in a sequence.
-/**
- * This function attempts to connect a socket to one of a sequence of
- * endpoints. It does this by repeated calls to the socket's @c connect member
- * function, once for each endpoint in the sequence, until a connection is
- * successfully established.
- *
- * @param s The socket to be connected. If the socket is already open, it will
- * be closed.
- *
- * @param begin An iterator pointing to the start of a sequence of endpoints.
- *
- * @param ec Set to indicate what error occurred, if any. If the sequence is
- * empty, set to asio::error::not_found. Otherwise, contains the error
- * from the last connection attempt.
- *
- * @returns On success, an iterator denoting the successfully connected
- * endpoint. Otherwise, the end iterator.
- *
- * @note This overload assumes that a default constructed object of type @c
- * Iterator represents the end of the sequence. This is a valid assumption for
- * iterator types such as @c asio::ip::tcp::resolver::iterator.
- *
- * @par Example
- * @code tcp::resolver r(io_service);
- * tcp::resolver::query q("host", "service");
- * tcp::socket s(io_service);
- * asio::error_code ec;
- * asio::connect(s, r.resolve(q), ec);
- * if (ec)
- * {
- *   // An error occurred.
- * } @endcode
- */
-template <typename Protocol, typename SocketService, typename Iterator>
-Iterator connect(basic_socket<Protocol, SocketService>& s,
-    Iterator begin, asio::error_code& ec);
-
-/// Establishes a socket connection by trying each endpoint in a sequence.
-/**
- * This function attempts to connect a socket to one of a sequence of
- * endpoints. It does this by repeated calls to the socket's @c connect member
- * function, once for each endpoint in the sequence, until a connection is
- * successfully established.
- *
- * @param s The socket to be connected. If the socket is already open, it will
- * be closed.
- *
- * @param begin An iterator pointing to the start of a sequence of endpoints.
- *
- * @param end An iterator pointing to the end of a sequence of endpoints.
- *
- * @returns On success, an iterator denoting the successfully connected
- * endpoint. Otherwise, the end iterator.
- *
- * @throws asio::system_error Thrown on failure. If the sequence is
- * empty, the associated @c error_code is asio::error::not_found.
- * Otherwise, contains the error from the last connection attempt.
- *
- * @par Example
- * @code tcp::resolver r(io_service);
- * tcp::resolver::query q("host", "service");
- * tcp::resolver::iterator i = r.resolve(q), end;
- * tcp::socket s(io_service);
- * asio::connect(s, i, end); @endcode
- */
-template <typename Protocol, typename SocketService, typename Iterator>
-Iterator connect(basic_socket<Protocol, SocketService>& s,
-    Iterator begin, Iterator end);
-
-/// Establishes a socket connection by trying each endpoint in a sequence.
-/**
- * This function attempts to connect a socket to one of a sequence of
- * endpoints. It does this by repeated calls to the socket's @c connect member
- * function, once for each endpoint in the sequence, until a connection is
- * successfully established.
- *
- * @param s The socket to be connected. If the socket is already open, it will
- * be closed.
- *
- * @param begin An iterator pointing to the start of a sequence of endpoints.
- *
- * @param end An iterator pointing to the end of a sequence of endpoints.
- *
- * @param ec Set to indicate what error occurred, if any. If the sequence is
- * empty, set to asio::error::not_found. Otherwise, contains the error
- * from the last connection attempt.
- *
- * @returns On success, an iterator denoting the successfully connected
- * endpoint. Otherwise, the end iterator.
- *
- * @par Example
- * @code tcp::resolver r(io_service);
- * tcp::resolver::query q("host", "service");
- * tcp::resolver::iterator i = r.resolve(q), end;
- * tcp::socket s(io_service);
- * asio::error_code ec;
- * asio::connect(s, i, end, ec);
- * if (ec)
- * {
- *   // An error occurred.
- * } @endcode
- */
-template <typename Protocol, typename SocketService, typename Iterator>
-Iterator connect(basic_socket<Protocol, SocketService>& s,
-    Iterator begin, Iterator end, asio::error_code& ec);
-
-/// Establishes a socket connection by trying each endpoint in a sequence.
-/**
- * This function attempts to connect a socket to one of a sequence of
- * endpoints. It does this by repeated calls to the socket's @c connect member
- * function, once for each endpoint in the sequence, until a connection is
- * successfully established.
- *
- * @param s The socket to be connected. If the socket is already open, it will
- * be closed.
- *
- * @param begin An iterator pointing to the start of a sequence of endpoints.
- *
- * @param connect_condition A function object that is called prior to each
- * connection attempt. The signature of the function object must be:
- * @code Iterator connect_condition(
- *     const asio::error_code& ec,
- *     Iterator next); @endcode
- * The @c ec parameter contains the result from the most recent connect
- * operation. Before the first connection attempt, @c ec is always set to
- * indicate success. The @c next parameter is an iterator pointing to the next
- * endpoint to be tried. The function object should return the next iterator,
- * but is permitted to return a different iterator so that endpoints may be
- * skipped. The implementation guarantees that the function object will never
- * be called with the end iterator.
- *
- * @returns On success, an iterator denoting the successfully connected
- * endpoint. Otherwise, the end iterator.
- *
- * @throws asio::system_error Thrown on failure. If the sequence is
- * empty, the associated @c error_code is asio::error::not_found.
- * Otherwise, contains the error from the last connection attempt.
- *
- * @note This overload assumes that a default constructed object of type @c
- * Iterator represents the end of the sequence. This is a valid assumption for
- * iterator types such as @c asio::ip::tcp::resolver::iterator.
- *
- * @par Example
- * The following connect condition function object can be used to output
- * information about the individual connection attempts:
- * @code struct my_connect_condition
- * {
- *   template <typename Iterator>
- *   Iterator operator()(
- *       const asio::error_code& ec,
- *       Iterator next)
- *   {
- *     if (ec) std::cout << "Error: " << ec.message() << std::endl;
- *     std::cout << "Trying: " << next->endpoint() << std::endl;
- *     return next;
- *   }
- * }; @endcode
- * It would be used with the asio::connect function as follows:
- * @code tcp::resolver r(io_service);
- * tcp::resolver::query q("host", "service");
- * tcp::socket s(io_service);
- * tcp::resolver::iterator i = asio::connect(
- *     s, r.resolve(q), my_connect_condition());
- * std::cout << "Connected to: " << i->endpoint() << std::endl; @endcode
- */
-template <typename Protocol, typename SocketService,
-    typename Iterator, typename ConnectCondition>
-Iterator connect(basic_socket<Protocol, SocketService>& s,
-    Iterator begin, ConnectCondition connect_condition);
-
-/// Establishes a socket connection by trying each endpoint in a sequence.
-/**
- * This function attempts to connect a socket to one of a sequence of
- * endpoints. It does this by repeated calls to the socket's @c connect member
- * function, once for each endpoint in the sequence, until a connection is
- * successfully established.
- *
- * @param s The socket to be connected. If the socket is already open, it will
- * be closed.
- *
- * @param begin An iterator pointing to the start of a sequence of endpoints.
- *
- * @param connect_condition A function object that is called prior to each
- * connection attempt. The signature of the function object must be:
- * @code Iterator connect_condition(
- *     const asio::error_code& ec,
- *     Iterator next); @endcode
- * The @c ec parameter contains the result from the most recent connect
- * operation. Before the first connection attempt, @c ec is always set to
- * indicate success. The @c next parameter is an iterator pointing to the next
- * endpoint to be tried. The function object should return the next iterator,
- * but is permitted to return a different iterator so that endpoints may be
- * skipped. The implementation guarantees that the function object will never
- * be called with the end iterator.
- *
- * @param ec Set to indicate what error occurred, if any. If the sequence is
- * empty, set to asio::error::not_found. Otherwise, contains the error
- * from the last connection attempt.
- *
- * @returns On success, an iterator denoting the successfully connected
- * endpoint. Otherwise, the end iterator.
- *
- * @note This overload assumes that a default constructed object of type @c
- * Iterator represents the end of the sequence. This is a valid assumption for
- * iterator types such as @c asio::ip::tcp::resolver::iterator.
- *
- * @par Example
- * The following connect condition function object can be used to output
- * information about the individual connection attempts:
- * @code struct my_connect_condition
- * {
- *   template <typename Iterator>
- *   Iterator operator()(
- *       const asio::error_code& ec,
- *       Iterator next)
- *   {
- *     if (ec) std::cout << "Error: " << ec.message() << std::endl;
- *     std::cout << "Trying: " << next->endpoint() << std::endl;
- *     return next;
- *   }
- * }; @endcode
- * It would be used with the asio::connect function as follows:
- * @code tcp::resolver r(io_service);
- * tcp::resolver::query q("host", "service");
- * tcp::socket s(io_service);
- * asio::error_code ec;
- * tcp::resolver::iterator i = asio::connect(
- *     s, r.resolve(q), my_connect_condition(), ec);
- * if (ec)
- * {
- *   // An error occurred.
- * }
- * else
- * {
- *   std::cout << "Connected to: " << i->endpoint() << std::endl;
- * } @endcode
- */
-template <typename Protocol, typename SocketService,
-    typename Iterator, typename ConnectCondition>
-Iterator connect(basic_socket<Protocol, SocketService>& s, Iterator begin,
-    ConnectCondition connect_condition, asio::error_code& ec);
-
-/// Establishes a socket connection by trying each endpoint in a sequence.
-/**
- * This function attempts to connect a socket to one of a sequence of
- * endpoints. It does this by repeated calls to the socket's @c connect member
- * function, once for each endpoint in the sequence, until a connection is
- * successfully established.
- *
- * @param s The socket to be connected. If the socket is already open, it will
- * be closed.
- *
- * @param begin An iterator pointing to the start of a sequence of endpoints.
- *
- * @param end An iterator pointing to the end of a sequence of endpoints.
- *
- * @param connect_condition A function object that is called prior to each
- * connection attempt. The signature of the function object must be:
- * @code Iterator connect_condition(
- *     const asio::error_code& ec,
- *     Iterator next); @endcode
- * The @c ec parameter contains the result from the most recent connect
- * operation. Before the first connection attempt, @c ec is always set to
- * indicate success. The @c next parameter is an iterator pointing to the next
- * endpoint to be tried. The function object should return the next iterator,
- * but is permitted to return a different iterator so that endpoints may be
- * skipped. The implementation guarantees that the function object will never
- * be called with the end iterator.
- *
- * @returns On success, an iterator denoting the successfully connected
- * endpoint. Otherwise, the end iterator.
- *
- * @throws asio::system_error Thrown on failure. If the sequence is
- * empty, the associated @c error_code is asio::error::not_found.
- * Otherwise, contains the error from the last connection attempt.
- *
- * @par Example
- * The following connect condition function object can be used to output
- * information about the individual connection attempts:
- * @code struct my_connect_condition
- * {
- *   template <typename Iterator>
- *   Iterator operator()(
- *       const asio::error_code& ec,
- *       Iterator next)
- *   {
- *     if (ec) std::cout << "Error: " << ec.message() << std::endl;
- *     std::cout << "Trying: " << next->endpoint() << std::endl;
- *     return next;
- *   }
- * }; @endcode
- * It would be used with the asio::connect function as follows:
- * @code tcp::resolver r(io_service);
- * tcp::resolver::query q("host", "service");
- * tcp::resolver::iterator i = r.resolve(q), end;
- * tcp::socket s(io_service);
- * i = asio::connect(s, i, end, my_connect_condition());
- * std::cout << "Connected to: " << i->endpoint() << std::endl; @endcode
- */
-template <typename Protocol, typename SocketService,
-    typename Iterator, typename ConnectCondition>
-Iterator connect(basic_socket<Protocol, SocketService>& s, Iterator begin,
-    Iterator end, ConnectCondition connect_condition);
-
-/// Establishes a socket connection by trying each endpoint in a sequence.
-/**
- * This function attempts to connect a socket to one of a sequence of
- * endpoints. It does this by repeated calls to the socket's @c connect member
- * function, once for each endpoint in the sequence, until a connection is
- * successfully established.
- *
- * @param s The socket to be connected. If the socket is already open, it will
- * be closed.
- *
- * @param begin An iterator pointing to the start of a sequence of endpoints.
- *
- * @param end An iterator pointing to the end of a sequence of endpoints.
- *
- * @param connect_condition A function object that is called prior to each
- * connection attempt. The signature of the function object must be:
- * @code Iterator connect_condition(
- *     const asio::error_code& ec,
- *     Iterator next); @endcode
- * The @c ec parameter contains the result from the most recent connect
- * operation. Before the first connection attempt, @c ec is always set to
- * indicate success. The @c next parameter is an iterator pointing to the next
- * endpoint to be tried. The function object should return the next iterator,
- * but is permitted to return a different iterator so that endpoints may be
- * skipped. The implementation guarantees that the function object will never
- * be called with the end iterator.
- *
- * @param ec Set to indicate what error occurred, if any. If the sequence is
- * empty, set to asio::error::not_found. Otherwise, contains the error
- * from the last connection attempt.
- *
- * @returns On success, an iterator denoting the successfully connected
- * endpoint. Otherwise, the end iterator.
- *
- * @par Example
- * The following connect condition function object can be used to output
- * information about the individual connection attempts:
- * @code struct my_connect_condition
- * {
- *   template <typename Iterator>
- *   Iterator operator()(
- *       const asio::error_code& ec,
- *       Iterator next)
- *   {
- *     if (ec) std::cout << "Error: " << ec.message() << std::endl;
- *     std::cout << "Trying: " << next->endpoint() << std::endl;
- *     return next;
- *   }
- * }; @endcode
- * It would be used with the asio::connect function as follows:
- * @code tcp::resolver r(io_service);
- * tcp::resolver::query q("host", "service");
- * tcp::resolver::iterator i = r.resolve(q), end;
- * tcp::socket s(io_service);
- * asio::error_code ec;
- * i = asio::connect(s, i, end, my_connect_condition(), ec);
- * if (ec)
- * {
- *   // An error occurred.
- * }
- * else
- * {
- *   std::cout << "Connected to: " << i->endpoint() << std::endl;
- * } @endcode
- */
-template <typename Protocol, typename SocketService,
-    typename Iterator, typename ConnectCondition>
-Iterator connect(basic_socket<Protocol, SocketService>& s,
-    Iterator begin, Iterator end, ConnectCondition connect_condition,
-    asio::error_code& ec);
-
-/*@}*/
-
-/**
- * @defgroup async_connect asio::async_connect
- *
- * @brief Asynchronously establishes a socket connection by trying each
- * endpoint in a sequence.
- */
-/*@{*/
-
-/// Asynchronously establishes a socket connection by trying each endpoint in a
-/// sequence.
-/**
- * This function attempts to connect a socket to one of a sequence of
- * endpoints. It does this by repeated calls to the socket's @c async_connect
- * member function, once for each endpoint in the sequence, until a connection
- * is successfully established.
- *
- * @param s The socket to be connected. If the socket is already open, it will
- * be closed.
- *
- * @param begin An iterator pointing to the start of a sequence of endpoints.
- *
- * @param handler The handler to be called when the connect operation
- * completes. Copies will be made of the handler as required. The function
- * signature of the handler must be:
- * @code void handler(
- *   // Result of operation. if the sequence is empty, set to
- *   // asio::error::not_found. Otherwise, contains the
- *   // error from the last connection attempt.
- *   const asio::error_code& error,
- *
- *   // On success, an iterator denoting the successfully
- *   // connected endpoint. Otherwise, the end iterator.
- *   Iterator iterator
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @note This overload assumes that a default constructed object of type @c
- * Iterator represents the end of the sequence. This is a valid assumption for
- * iterator types such as @c asio::ip::tcp::resolver::iterator.
- *
- * @par Example
- * @code tcp::resolver r(io_service);
- * tcp::resolver::query q("host", "service");
- * tcp::socket s(io_service);
- *
- * // ...
- *
- * r.async_resolve(q, resolve_handler);
- *
- * // ...
- *
- * void resolve_handler(
- *     const asio::error_code& ec,
- *     tcp::resolver::iterator i)
- * {
- *   if (!ec)
- *   {
- *     asio::async_connect(s, i, connect_handler);
- *   }
- * }
- *
- * // ...
- *
- * void connect_handler(
- *     const asio::error_code& ec,
- *     tcp::resolver::iterator i)
- * {
- *   // ...
- * } @endcode
- */
-template <typename Protocol, typename SocketService,
-    typename Iterator, typename ComposedConnectHandler>
-ASIO_INITFN_RESULT_TYPE(ComposedConnectHandler,
-    void (asio::error_code, Iterator))
-async_connect(basic_socket<Protocol, SocketService>& s,
-    Iterator begin, ASIO_MOVE_ARG(ComposedConnectHandler) handler);
-
-/// Asynchronously establishes a socket connection by trying each endpoint in a
-/// sequence.
-/**
- * This function attempts to connect a socket to one of a sequence of
- * endpoints. It does this by repeated calls to the socket's @c async_connect
- * member function, once for each endpoint in the sequence, until a connection
- * is successfully established.
- *
- * @param s The socket to be connected. If the socket is already open, it will
- * be closed.
- *
- * @param begin An iterator pointing to the start of a sequence of endpoints.
- *
- * @param end An iterator pointing to the end of a sequence of endpoints.
- *
- * @param handler The handler to be called when the connect operation
- * completes. Copies will be made of the handler as required. The function
- * signature of the handler must be:
- * @code void handler(
- *   // Result of operation. if the sequence is empty, set to
- *   // asio::error::not_found. Otherwise, contains the
- *   // error from the last connection attempt.
- *   const asio::error_code& error,
- *
- *   // On success, an iterator denoting the successfully
- *   // connected endpoint. Otherwise, the end iterator.
- *   Iterator iterator
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @par Example
- * @code tcp::resolver r(io_service);
- * tcp::resolver::query q("host", "service");
- * tcp::socket s(io_service);
- *
- * // ...
- *
- * r.async_resolve(q, resolve_handler);
- *
- * // ...
- *
- * void resolve_handler(
- *     const asio::error_code& ec,
- *     tcp::resolver::iterator i)
- * {
- *   if (!ec)
- *   {
- *     tcp::resolver::iterator end;
- *     asio::async_connect(s, i, end, connect_handler);
- *   }
- * }
- *
- * // ...
- *
- * void connect_handler(
- *     const asio::error_code& ec,
- *     tcp::resolver::iterator i)
- * {
- *   // ...
- * } @endcode
- */
-template <typename Protocol, typename SocketService,
-    typename Iterator, typename ComposedConnectHandler>
-ASIO_INITFN_RESULT_TYPE(ComposedConnectHandler,
-    void (asio::error_code, Iterator))
-async_connect(basic_socket<Protocol, SocketService>& s,
-    Iterator begin, Iterator end,
-    ASIO_MOVE_ARG(ComposedConnectHandler) handler);
-
-/// Asynchronously establishes a socket connection by trying each endpoint in a
-/// sequence.
-/**
- * This function attempts to connect a socket to one of a sequence of
- * endpoints. It does this by repeated calls to the socket's @c async_connect
- * member function, once for each endpoint in the sequence, until a connection
- * is successfully established.
- *
- * @param s The socket to be connected. If the socket is already open, it will
- * be closed.
- *
- * @param begin An iterator pointing to the start of a sequence of endpoints.
- *
- * @param connect_condition A function object that is called prior to each
- * connection attempt. The signature of the function object must be:
- * @code Iterator connect_condition(
- *     const asio::error_code& ec,
- *     Iterator next); @endcode
- * The @c ec parameter contains the result from the most recent connect
- * operation. Before the first connection attempt, @c ec is always set to
- * indicate success. The @c next parameter is an iterator pointing to the next
- * endpoint to be tried. The function object should return the next iterator,
- * but is permitted to return a different iterator so that endpoints may be
- * skipped. The implementation guarantees that the function object will never
- * be called with the end iterator.
- *
- * @param handler The handler to be called when the connect operation
- * completes. Copies will be made of the handler as required. The function
- * signature of the handler must be:
- * @code void handler(
- *   // Result of operation. if the sequence is empty, set to
- *   // asio::error::not_found. Otherwise, contains the
- *   // error from the last connection attempt.
- *   const asio::error_code& error,
- *
- *   // On success, an iterator denoting the successfully
- *   // connected endpoint. Otherwise, the end iterator.
- *   Iterator iterator
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @note This overload assumes that a default constructed object of type @c
- * Iterator represents the end of the sequence. This is a valid assumption for
- * iterator types such as @c asio::ip::tcp::resolver::iterator.
- *
- * @par Example
- * The following connect condition function object can be used to output
- * information about the individual connection attempts:
- * @code struct my_connect_condition
- * {
- *   template <typename Iterator>
- *   Iterator operator()(
- *       const asio::error_code& ec,
- *       Iterator next)
- *   {
- *     if (ec) std::cout << "Error: " << ec.message() << std::endl;
- *     std::cout << "Trying: " << next->endpoint() << std::endl;
- *     return next;
- *   }
- * }; @endcode
- * It would be used with the asio::connect function as follows:
- * @code tcp::resolver r(io_service);
- * tcp::resolver::query q("host", "service");
- * tcp::socket s(io_service);
- *
- * // ...
- *
- * r.async_resolve(q, resolve_handler);
- *
- * // ...
- *
- * void resolve_handler(
- *     const asio::error_code& ec,
- *     tcp::resolver::iterator i)
- * {
- *   if (!ec)
- *   {
- *     asio::async_connect(s, i,
- *         my_connect_condition(),
- *         connect_handler);
- *   }
- * }
- *
- * // ...
- *
- * void connect_handler(
- *     const asio::error_code& ec,
- *     tcp::resolver::iterator i)
- * {
- *   if (ec)
- *   {
- *     // An error occurred.
- *   }
- *   else
- *   {
- *     std::cout << "Connected to: " << i->endpoint() << std::endl;
- *   }
- * } @endcode
- */
-template <typename Protocol, typename SocketService, typename Iterator,
-    typename ConnectCondition, typename ComposedConnectHandler>
-ASIO_INITFN_RESULT_TYPE(ComposedConnectHandler,
-    void (asio::error_code, Iterator))
-async_connect(basic_socket<Protocol, SocketService>& s, Iterator begin,
-    ConnectCondition connect_condition,
-    ASIO_MOVE_ARG(ComposedConnectHandler) handler);
-
-/// Asynchronously establishes a socket connection by trying each endpoint in a
-/// sequence.
-/**
- * This function attempts to connect a socket to one of a sequence of
- * endpoints. It does this by repeated calls to the socket's @c async_connect
- * member function, once for each endpoint in the sequence, until a connection
- * is successfully established.
- *
- * @param s The socket to be connected. If the socket is already open, it will
- * be closed.
- *
- * @param begin An iterator pointing to the start of a sequence of endpoints.
- *
- * @param end An iterator pointing to the end of a sequence of endpoints.
- *
- * @param connect_condition A function object that is called prior to each
- * connection attempt. The signature of the function object must be:
- * @code Iterator connect_condition(
- *     const asio::error_code& ec,
- *     Iterator next); @endcode
- * The @c ec parameter contains the result from the most recent connect
- * operation. Before the first connection attempt, @c ec is always set to
- * indicate success. The @c next parameter is an iterator pointing to the next
- * endpoint to be tried. The function object should return the next iterator,
- * but is permitted to return a different iterator so that endpoints may be
- * skipped. The implementation guarantees that the function object will never
- * be called with the end iterator.
- *
- * @param handler The handler to be called when the connect operation
- * completes. Copies will be made of the handler as required. The function
- * signature of the handler must be:
- * @code void handler(
- *   // Result of operation. if the sequence is empty, set to
- *   // asio::error::not_found. Otherwise, contains the
- *   // error from the last connection attempt.
- *   const asio::error_code& error,
- *
- *   // On success, an iterator denoting the successfully
- *   // connected endpoint. Otherwise, the end iterator.
- *   Iterator iterator
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation
- * of the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @par Example
- * The following connect condition function object can be used to output
- * information about the individual connection attempts:
- * @code struct my_connect_condition
- * {
- *   template <typename Iterator>
- *   Iterator operator()(
- *       const asio::error_code& ec,
- *       Iterator next)
- *   {
- *     if (ec) std::cout << "Error: " << ec.message() << std::endl;
- *     std::cout << "Trying: " << next->endpoint() << std::endl;
- *     return next;
- *   }
- * }; @endcode
- * It would be used with the asio::connect function as follows:
- * @code tcp::resolver r(io_service);
- * tcp::resolver::query q("host", "service");
- * tcp::socket s(io_service);
- *
- * // ...
- *
- * r.async_resolve(q, resolve_handler);
- *
- * // ...
- *
- * void resolve_handler(
- *     const asio::error_code& ec,
- *     tcp::resolver::iterator i)
- * {
- *   if (!ec)
- *   {
- *     tcp::resolver::iterator end;
- *     asio::async_connect(s, i, end,
- *         my_connect_condition(),
- *         connect_handler);
- *   }
- * }
- *
- * // ...
- *
- * void connect_handler(
- *     const asio::error_code& ec,
- *     tcp::resolver::iterator i)
- * {
- *   if (ec)
- *   {
- *     // An error occurred.
- *   }
- *   else
- *   {
- *     std::cout << "Connected to: " << i->endpoint() << std::endl;
- *   }
- * } @endcode
- */
-template <typename Protocol, typename SocketService, typename Iterator,
-    typename ConnectCondition, typename ComposedConnectHandler>
-ASIO_INITFN_RESULT_TYPE(ComposedConnectHandler,
-    void (asio::error_code, Iterator))
-async_connect(basic_socket<Protocol, SocketService>& s,
-    Iterator begin, Iterator end, ConnectCondition connect_condition,
-    ASIO_MOVE_ARG(ComposedConnectHandler) handler);
-
-/*@}*/
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/impl/connect.hpp"
-
-#endif
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/coroutine.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/coroutine.hpp
deleted file mode 100644
index d9dfaaa..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/coroutine.hpp
+++ /dev/null
@@ -1,328 +0,0 @@
-//
-// coroutine.hpp
-// ~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_COROUTINE_HPP
-#define ASIO_COROUTINE_HPP
-
-namespace asio {
-namespace detail {
-
-class coroutine_ref;
-
-} // namespace detail
-
-/// Provides support for implementing stackless coroutines.
-/**
- * The @c coroutine class may be used to implement stackless coroutines. The
- * class itself is used to store the current state of the coroutine.
- *
- * Coroutines are copy-constructible and assignable, and the space overhead is
- * a single int. They can be used as a base class:
- *
- * @code class session : coroutine
- * {
- *   ...
- * }; @endcode
- *
- * or as a data member:
- *
- * @code class session
- * {
- *   ...
- *   coroutine coro_;
- * }; @endcode
- *
- * or even bound in as a function argument using lambdas or @c bind(). The
- * important thing is that as the application maintains a copy of the object
- * for as long as the coroutine must be kept alive.
- *
- * @par Pseudo-keywords
- *
- * A coroutine is used in conjunction with certain "pseudo-keywords", which
- * are implemented as macros. These macros are defined by a header file:
- *
- * @code #include <asio/yield.hpp>@endcode
- *
- * and may conversely be undefined as follows:
- *
- * @code #include <asio/unyield.hpp>@endcode
- *
- * <b>reenter</b>
- *
- * The @c reenter macro is used to define the body of a coroutine. It takes a
- * single argument: a pointer or reference to a coroutine object. For example,
- * if the base class is a coroutine object you may write:
- *
- * @code reenter (this)
- * {
- *   ... coroutine body ...
- * } @endcode
- *
- * and if a data member or other variable you can write:
- *
- * @code reenter (coro_)
- * {
- *   ... coroutine body ...
- * } @endcode
- *
- * When @c reenter is executed at runtime, control jumps to the location of the
- * last @c yield or @c fork.
- *
- * The coroutine body may also be a single statement, such as:
- *
- * @code reenter (this) for (;;)
- * {
- *   ...
- * } @endcode
- *
- * @b Limitation: The @c reenter macro is implemented using a switch. This
- * means that you must take care when using local variables within the
- * coroutine body. The local variable is not allowed in a position where
- * reentering the coroutine could bypass the variable definition.
- *
- * <b>yield <em>statement</em></b>
- *
- * This form of the @c yield keyword is often used with asynchronous operations:
- *
- * @code yield socket_->async_read_some(buffer(*buffer_), *this); @endcode
- *
- * This divides into four logical steps:
- *
- * @li @c yield saves the current state of the coroutine.
- * @li The statement initiates the asynchronous operation.
- * @li The resume point is defined immediately following the statement.
- * @li Control is transferred to the end of the coroutine body.
- *
- * When the asynchronous operation completes, the function object is invoked
- * and @c reenter causes control to transfer to the resume point. It is
- * important to remember to carry the coroutine state forward with the
- * asynchronous operation. In the above snippet, the current class is a
- * function object object with a coroutine object as base class or data member.
- *
- * The statement may also be a compound statement, and this permits us to
- * define local variables with limited scope:
- *
- * @code yield
- * {
- *   mutable_buffers_1 b = buffer(*buffer_);
- *   socket_->async_read_some(b, *this);
- * } @endcode
- *
- * <b>yield return <em>expression</em> ;</b>
- *
- * This form of @c yield is often used in generators or coroutine-based parsers.
- * For example, the function object:
- *
- * @code struct interleave : coroutine
- * {
- *   istream& is1;
- *   istream& is2;
- *   char operator()(char c)
- *   {
- *     reenter (this) for (;;)
- *     {
- *       yield return is1.get();
- *       yield return is2.get();
- *     }
- *   }
- * }; @endcode
- *
- * defines a trivial coroutine that interleaves the characters from two input
- * streams.
- *
- * This type of @c yield divides into three logical steps:
- *
- * @li @c yield saves the current state of the coroutine.
- * @li The resume point is defined immediately following the semicolon.
- * @li The value of the expression is returned from the function.
- *
- * <b>yield ;</b>
- *
- * This form of @c yield is equivalent to the following steps:
- *
- * @li @c yield saves the current state of the coroutine.
- * @li The resume point is defined immediately following the semicolon.
- * @li Control is transferred to the end of the coroutine body.
- *
- * This form might be applied when coroutines are used for cooperative
- * threading and scheduling is explicitly managed. For example:
- *
- * @code struct task : coroutine
- * {
- *   ...
- *   void operator()()
- *   {
- *     reenter (this)
- *     {
- *       while (... not finished ...)
- *       {
- *         ... do something ...
- *         yield;
- *         ... do some more ...
- *         yield;
- *       }
- *     }
- *   }
- *   ...
- * };
- * ...
- * task t1, t2;
- * for (;;)
- * {
- *   t1();
- *   t2();
- * } @endcode
- *
- * <b>yield break ;</b>
- *
- * The final form of @c yield is used to explicitly terminate the coroutine.
- * This form is comprised of two steps:
- *
- * @li @c yield sets the coroutine state to indicate termination.
- * @li Control is transferred to the end of the coroutine body.
- *
- * Once terminated, calls to is_complete() return true and the coroutine cannot
- * be reentered.
- *
- * Note that a coroutine may also be implicitly terminated if the coroutine
- * body is exited without a yield, e.g. by return, throw or by running to the
- * end of the body.
- *
- * <b>fork <em>statement</em></b>
- *
- * The @c fork pseudo-keyword is used when "forking" a coroutine, i.e. splitting
- * it into two (or more) copies. One use of @c fork is in a server, where a new
- * coroutine is created to handle each client connection:
- * 
- * @code reenter (this)
- * {
- *   do
- *   {
- *     socket_.reset(new tcp::socket(io_service_));
- *     yield acceptor->async_accept(*socket_, *this);
- *     fork server(*this)();
- *   } while (is_parent());
- *   ... client-specific handling follows ...
- * } @endcode
- * 
- * The logical steps involved in a @c fork are:
- * 
- * @li @c fork saves the current state of the coroutine.
- * @li The statement creates a copy of the coroutine and either executes it
- *     immediately or schedules it for later execution.
- * @li The resume point is defined immediately following the semicolon.
- * @li For the "parent", control immediately continues from the next line.
- *
- * The functions is_parent() and is_child() can be used to differentiate
- * between parent and child. You would use these functions to alter subsequent
- * control flow.
- *
- * Note that @c fork doesn't do the actual forking by itself. It is the
- * application's responsibility to create a clone of the coroutine and call it.
- * The clone can be called immediately, as above, or scheduled for delayed
- * execution using something like io_service::post().
- *
- * @par Alternate macro names
- *
- * If preferred, an application can use macro names that follow a more typical
- * naming convention, rather than the pseudo-keywords. These are:
- *
- * @li @c ASIO_CORO_REENTER instead of @c reenter
- * @li @c ASIO_CORO_YIELD instead of @c yield
- * @li @c ASIO_CORO_FORK instead of @c fork
- */
-class coroutine
-{
-public:
-  /// Constructs a coroutine in its initial state.
-  coroutine() : value_(0) {}
-
-  /// Returns true if the coroutine is the child of a fork.
-  bool is_child() const { return value_ < 0; }
-
-  /// Returns true if the coroutine is the parent of a fork.
-  bool is_parent() const { return !is_child(); }
-
-  /// Returns true if the coroutine has reached its terminal state.
-  bool is_complete() const { return value_ == -1; }
-
-private:
-  friend class detail::coroutine_ref;
-  int value_;
-};
-
-
-namespace detail {
-
-class coroutine_ref
-{
-public:
-  coroutine_ref(coroutine& c) : value_(c.value_), modified_(false) {}
-  coroutine_ref(coroutine* c) : value_(c->value_), modified_(false) {}
-  ~coroutine_ref() { if (!modified_) value_ = -1; }
-  operator int() const { return value_; }
-  int& operator=(int v) { modified_ = true; return value_ = v; }
-private:
-  void operator=(const coroutine_ref&);
-  int& value_;
-  bool modified_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#define ASIO_CORO_REENTER(c) \
-  switch (::asio::detail::coroutine_ref _coro_value = c) \
-    case -1: if (_coro_value) \
-    { \
-      goto terminate_coroutine; \
-      terminate_coroutine: \
-      _coro_value = -1; \
-      goto bail_out_of_coroutine; \
-      bail_out_of_coroutine: \
-      break; \
-    } \
-    else case 0:
-
-#define ASIO_CORO_YIELD_IMPL(n) \
-  for (_coro_value = (n);;) \
-    if (_coro_value == 0) \
-    { \
-      case (n): ; \
-      break; \
-    } \
-    else \
-      switch (_coro_value ? 0 : 1) \
-        for (;;) \
-          case -1: if (_coro_value) \
-            goto terminate_coroutine; \
-          else for (;;) \
-            case 1: if (_coro_value) \
-              goto bail_out_of_coroutine; \
-            else case 0:
-
-#define ASIO_CORO_FORK_IMPL(n) \
-  for (_coro_value = -(n);; _coro_value = (n)) \
-    if (_coro_value == (n)) \
-    { \
-      case -(n): ; \
-      break; \
-    } \
-    else
-
-#if defined(_MSC_VER)
-# define ASIO_CORO_YIELD ASIO_CORO_YIELD_IMPL(__COUNTER__ + 1)
-# define ASIO_CORO_FORK ASIO_CORO_FORK_IMPL(__COUNTER__ + 1)
-#else // defined(_MSC_VER)
-# define ASIO_CORO_YIELD ASIO_CORO_YIELD_IMPL(__LINE__)
-# define ASIO_CORO_FORK ASIO_CORO_FORK_IMPL(__LINE__)
-#endif // defined(_MSC_VER)
-
-#endif // ASIO_COROUTINE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/datagram_socket_service.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/datagram_socket_service.hpp
deleted file mode 100644
index a3cc56a..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/datagram_socket_service.hpp
+++ /dev/null
@@ -1,432 +0,0 @@
-//
-// datagram_socket_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DATAGRAM_SOCKET_SERVICE_HPP
-#define ASIO_DATAGRAM_SOCKET_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cstddef>
-#include "asio/async_result.hpp"
-#include "asio/detail/type_traits.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-# include "asio/detail/null_socket_service.hpp"
-#elif defined(ASIO_HAS_IOCP)
-# include "asio/detail/win_iocp_socket_service.hpp"
-#else
-# include "asio/detail/reactive_socket_service.hpp"
-#endif
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Default service implementation for a datagram socket.
-template <typename Protocol>
-class datagram_socket_service
-#if defined(GENERATING_DOCUMENTATION)
-  : public asio::io_service::service
-#else
-  : public asio::detail::service_base<datagram_socket_service<Protocol> >
-#endif
-{
-public:
-#if defined(GENERATING_DOCUMENTATION)
-  /// The unique service identifier.
-  static asio::io_service::id id;
-#endif
-
-  /// The protocol type.
-  typedef Protocol protocol_type;
-
-  /// The endpoint type.
-  typedef typename Protocol::endpoint endpoint_type;
-
-private:
-  // The type of the platform-specific implementation.
-#if defined(ASIO_WINDOWS_RUNTIME)
-  typedef detail::null_socket_service<Protocol> service_impl_type;
-#elif defined(ASIO_HAS_IOCP)
-  typedef detail::win_iocp_socket_service<Protocol> service_impl_type;
-#else
-  typedef detail::reactive_socket_service<Protocol> service_impl_type;
-#endif
-
-public:
-  /// The type of a datagram socket.
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined implementation_type;
-#else
-  typedef typename service_impl_type::implementation_type implementation_type;
-#endif
-
-  /// (Deprecated: Use native_handle_type.) The native socket type.
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined native_type;
-#else
-  typedef typename service_impl_type::native_handle_type native_type;
-#endif
-
-  /// The native socket type.
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined native_handle_type;
-#else
-  typedef typename service_impl_type::native_handle_type native_handle_type;
-#endif
-
-  /// Construct a new datagram socket service for the specified io_service.
-  explicit datagram_socket_service(asio::io_service& io_service)
-    : asio::detail::service_base<
-        datagram_socket_service<Protocol> >(io_service),
-      service_impl_(io_service)
-  {
-  }
-
-  /// Construct a new datagram socket implementation.
-  void construct(implementation_type& impl)
-  {
-    service_impl_.construct(impl);
-  }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-  /// Move-construct a new datagram socket implementation.
-  void move_construct(implementation_type& impl,
-      implementation_type& other_impl)
-  {
-    service_impl_.move_construct(impl, other_impl);
-  }
-
-  /// Move-assign from another datagram socket implementation.
-  void move_assign(implementation_type& impl,
-      datagram_socket_service& other_service,
-      implementation_type& other_impl)
-  {
-    service_impl_.move_assign(impl, other_service.service_impl_, other_impl);
-  }
-
-  /// Move-construct a new datagram socket implementation from another protocol
-  /// type.
-  template <typename Protocol1>
-  void converting_move_construct(implementation_type& impl,
-      typename datagram_socket_service<
-        Protocol1>::implementation_type& other_impl,
-      typename enable_if<is_convertible<
-        Protocol1, Protocol>::value>::type* = 0)
-  {
-    service_impl_.template converting_move_construct<Protocol1>(
-        impl, other_impl);
-  }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
-  /// Destroy a datagram socket implementation.
-  void destroy(implementation_type& impl)
-  {
-    service_impl_.destroy(impl);
-  }
-
-  // Open a new datagram socket implementation.
-  asio::error_code open(implementation_type& impl,
-      const protocol_type& protocol, asio::error_code& ec)
-  {
-    if (protocol.type() == ASIO_OS_DEF(SOCK_DGRAM))
-      service_impl_.open(impl, protocol, ec);
-    else
-      ec = asio::error::invalid_argument;
-    return ec;
-  }
-
-  /// Assign an existing native socket to a datagram socket.
-  asio::error_code assign(implementation_type& impl,
-      const protocol_type& protocol, const native_handle_type& native_socket,
-      asio::error_code& ec)
-  {
-    return service_impl_.assign(impl, protocol, native_socket, ec);
-  }
-
-  /// Determine whether the socket is open.
-  bool is_open(const implementation_type& impl) const
-  {
-    return service_impl_.is_open(impl);
-  }
-
-  /// Close a datagram socket implementation.
-  asio::error_code close(implementation_type& impl,
-      asio::error_code& ec)
-  {
-    return service_impl_.close(impl, ec);
-  }
-
-  /// (Deprecated: Use native_handle().) Get the native socket implementation.
-  native_type native(implementation_type& impl)
-  {
-    return service_impl_.native_handle(impl);
-  }
-
-  /// Get the native socket implementation.
-  native_handle_type native_handle(implementation_type& impl)
-  {
-    return service_impl_.native_handle(impl);
-  }
-
-  /// Cancel all asynchronous operations associated with the socket.
-  asio::error_code cancel(implementation_type& impl,
-      asio::error_code& ec)
-  {
-    return service_impl_.cancel(impl, ec);
-  }
-
-  /// Determine whether the socket is at the out-of-band data mark.
-  bool at_mark(const implementation_type& impl,
-      asio::error_code& ec) const
-  {
-    return service_impl_.at_mark(impl, ec);
-  }
-
-  /// Determine the number of bytes available for reading.
-  std::size_t available(const implementation_type& impl,
-      asio::error_code& ec) const
-  {
-    return service_impl_.available(impl, ec);
-  }
-
-  // Bind the datagram socket to the specified local endpoint.
-  asio::error_code bind(implementation_type& impl,
-      const endpoint_type& endpoint, asio::error_code& ec)
-  {
-    return service_impl_.bind(impl, endpoint, ec);
-  }
-
-  /// Connect the datagram socket to the specified endpoint.
-  asio::error_code connect(implementation_type& impl,
-      const endpoint_type& peer_endpoint, asio::error_code& ec)
-  {
-    return service_impl_.connect(impl, peer_endpoint, ec);
-  }
-
-  /// Start an asynchronous connect.
-  template <typename ConnectHandler>
-  ASIO_INITFN_RESULT_TYPE(ConnectHandler,
-      void (asio::error_code))
-  async_connect(implementation_type& impl,
-      const endpoint_type& peer_endpoint,
-      ASIO_MOVE_ARG(ConnectHandler) handler)
-  {
-    detail::async_result_init<
-      ConnectHandler, void (asio::error_code)> init(
-        ASIO_MOVE_CAST(ConnectHandler)(handler));
-
-    service_impl_.async_connect(impl, peer_endpoint, init.handler);
-
-    return init.result.get();
-  }
-
-  /// Set a socket option.
-  template <typename SettableSocketOption>
-  asio::error_code set_option(implementation_type& impl,
-      const SettableSocketOption& option, asio::error_code& ec)
-  {
-    return service_impl_.set_option(impl, option, ec);
-  }
-
-  /// Get a socket option.
-  template <typename GettableSocketOption>
-  asio::error_code get_option(const implementation_type& impl,
-      GettableSocketOption& option, asio::error_code& ec) const
-  {
-    return service_impl_.get_option(impl, option, ec);
-  }
-
-  /// Perform an IO control command on the socket.
-  template <typename IoControlCommand>
-  asio::error_code io_control(implementation_type& impl,
-      IoControlCommand& command, asio::error_code& ec)
-  {
-    return service_impl_.io_control(impl, command, ec);
-  }
-
-  /// Gets the non-blocking mode of the socket.
-  bool non_blocking(const implementation_type& impl) const
-  {
-    return service_impl_.non_blocking(impl);
-  }
-
-  /// Sets the non-blocking mode of the socket.
-  asio::error_code non_blocking(implementation_type& impl,
-      bool mode, asio::error_code& ec)
-  {
-    return service_impl_.non_blocking(impl, mode, ec);
-  }
-
-  /// Gets the non-blocking mode of the native socket implementation.
-  bool native_non_blocking(const implementation_type& impl) const
-  {
-    return service_impl_.native_non_blocking(impl);
-  }
-
-  /// Sets the non-blocking mode of the native socket implementation.
-  asio::error_code native_non_blocking(implementation_type& impl,
-      bool mode, asio::error_code& ec)
-  {
-    return service_impl_.native_non_blocking(impl, mode, ec);
-  }
-
-  /// Get the local endpoint.
-  endpoint_type local_endpoint(const implementation_type& impl,
-      asio::error_code& ec) const
-  {
-    return service_impl_.local_endpoint(impl, ec);
-  }
-
-  /// Get the remote endpoint.
-  endpoint_type remote_endpoint(const implementation_type& impl,
-      asio::error_code& ec) const
-  {
-    return service_impl_.remote_endpoint(impl, ec);
-  }
-
-  /// Disable sends or receives on the socket.
-  asio::error_code shutdown(implementation_type& impl,
-      socket_base::shutdown_type what, asio::error_code& ec)
-  {
-    return service_impl_.shutdown(impl, what, ec);
-  }
-
-  /// Send the given data to the peer.
-  template <typename ConstBufferSequence>
-  std::size_t send(implementation_type& impl,
-      const ConstBufferSequence& buffers,
-      socket_base::message_flags flags, asio::error_code& ec)
-  {
-    return service_impl_.send(impl, buffers, flags, ec);
-  }
-
-  /// Start an asynchronous send.
-  template <typename ConstBufferSequence, typename WriteHandler>
-  ASIO_INITFN_RESULT_TYPE(WriteHandler,
-      void (asio::error_code, std::size_t))
-  async_send(implementation_type& impl, const ConstBufferSequence& buffers,
-      socket_base::message_flags flags,
-      ASIO_MOVE_ARG(WriteHandler) handler)
-  {
-    detail::async_result_init<
-      WriteHandler, void (asio::error_code, std::size_t)> init(
-        ASIO_MOVE_CAST(WriteHandler)(handler));
-
-    service_impl_.async_send(impl, buffers, flags, init.handler);
-
-    return init.result.get();
-  }
-
-  /// Send a datagram to the specified endpoint.
-  template <typename ConstBufferSequence>
-  std::size_t send_to(implementation_type& impl,
-      const ConstBufferSequence& buffers, const endpoint_type& destination,
-      socket_base::message_flags flags, asio::error_code& ec)
-  {
-    return service_impl_.send_to(impl, buffers, destination, flags, ec);
-  }
-
-  /// Start an asynchronous send.
-  template <typename ConstBufferSequence, typename WriteHandler>
-  ASIO_INITFN_RESULT_TYPE(WriteHandler,
-      void (asio::error_code, std::size_t))
-  async_send_to(implementation_type& impl,
-      const ConstBufferSequence& buffers, const endpoint_type& destination,
-      socket_base::message_flags flags,
-      ASIO_MOVE_ARG(WriteHandler) handler)
-  {
-    detail::async_result_init<
-      WriteHandler, void (asio::error_code, std::size_t)> init(
-        ASIO_MOVE_CAST(WriteHandler)(handler));
-
-    service_impl_.async_send_to(impl, buffers,
-        destination, flags, init.handler);
-
-    return init.result.get();
-  }
-
-  /// Receive some data from the peer.
-  template <typename MutableBufferSequence>
-  std::size_t receive(implementation_type& impl,
-      const MutableBufferSequence& buffers,
-      socket_base::message_flags flags, asio::error_code& ec)
-  {
-    return service_impl_.receive(impl, buffers, flags, ec);
-  }
-
-  /// Start an asynchronous receive.
-  template <typename MutableBufferSequence, typename ReadHandler>
-  ASIO_INITFN_RESULT_TYPE(ReadHandler,
-      void (asio::error_code, std::size_t))
-  async_receive(implementation_type& impl,
-      const MutableBufferSequence& buffers,
-      socket_base::message_flags flags,
-      ASIO_MOVE_ARG(ReadHandler) handler)
-  {
-    detail::async_result_init<
-      ReadHandler, void (asio::error_code, std::size_t)> init(
-        ASIO_MOVE_CAST(ReadHandler)(handler));
-
-    service_impl_.async_receive(impl, buffers, flags, init.handler);
-
-    return init.result.get();
-  }
-
-  /// Receive a datagram with the endpoint of the sender.
-  template <typename MutableBufferSequence>
-  std::size_t receive_from(implementation_type& impl,
-      const MutableBufferSequence& buffers, endpoint_type& sender_endpoint,
-      socket_base::message_flags flags, asio::error_code& ec)
-  {
-    return service_impl_.receive_from(impl, buffers, sender_endpoint, flags,
-        ec);
-  }
-
-  /// Start an asynchronous receive that will get the endpoint of the sender.
-  template <typename MutableBufferSequence, typename ReadHandler>
-  ASIO_INITFN_RESULT_TYPE(ReadHandler,
-      void (asio::error_code, std::size_t))
-  async_receive_from(implementation_type& impl,
-      const MutableBufferSequence& buffers, endpoint_type& sender_endpoint,
-      socket_base::message_flags flags,
-      ASIO_MOVE_ARG(ReadHandler) handler)
-  {
-    detail::async_result_init<
-      ReadHandler, void (asio::error_code, std::size_t)> init(
-        ASIO_MOVE_CAST(ReadHandler)(handler));
-
-    service_impl_.async_receive_from(impl, buffers,
-        sender_endpoint, flags, init.handler);
-
-    return init.result.get();
-  }
-
-private:
-  // Destroy all user-defined handler objects owned by the service.
-  void shutdown_service()
-  {
-    service_impl_.shutdown_service();
-  }
-
-  // The platform-specific implementation.
-  service_impl_type service_impl_;
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DATAGRAM_SOCKET_SERVICE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/deadline_timer.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/deadline_timer.hpp
deleted file mode 100644
index 8bf22ce..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/deadline_timer.hpp
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// deadline_timer.hpp
-// ~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DEADLINE_TIMER_HPP
-#define ASIO_DEADLINE_TIMER_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_BOOST_DATE_TIME) \
-  || defined(GENERATING_DOCUMENTATION)
-
-#include "asio/detail/socket_types.hpp" // Must come before posix_time.
-#include "asio/basic_deadline_timer.hpp"
-
-#include <boost/date_time/posix_time/posix_time_types.hpp>
-
-namespace asio {
-
-/// Typedef for the typical usage of timer. Uses a UTC clock.
-typedef basic_deadline_timer<boost::posix_time::ptime> deadline_timer;
-
-} // namespace asio
-
-#endif // defined(ASIO_HAS_BOOST_DATE_TIME)
-       // || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_DEADLINE_TIMER_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/deadline_timer_service.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/deadline_timer_service.hpp
deleted file mode 100644
index 96ead3b..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/deadline_timer_service.hpp
+++ /dev/null
@@ -1,171 +0,0 @@
-//
-// deadline_timer_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DEADLINE_TIMER_SERVICE_HPP
-#define ASIO_DEADLINE_TIMER_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_BOOST_DATE_TIME) \
-  || defined(GENERATING_DOCUMENTATION)
-
-#include <cstddef>
-#include "asio/async_result.hpp"
-#include "asio/detail/deadline_timer_service.hpp"
-#include "asio/io_service.hpp"
-#include "asio/time_traits.hpp"
-#include "asio/detail/timer_queue_ptime.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Default service implementation for a timer.
-template <typename TimeType,
-    typename TimeTraits = asio::time_traits<TimeType> >
-class deadline_timer_service
-#if defined(GENERATING_DOCUMENTATION)
-  : public asio::io_service::service
-#else
-  : public asio::detail::service_base<
-      deadline_timer_service<TimeType, TimeTraits> >
-#endif
-{
-public:
-#if defined(GENERATING_DOCUMENTATION)
-  /// The unique service identifier.
-  static asio::io_service::id id;
-#endif
-
-  /// The time traits type.
-  typedef TimeTraits traits_type;
-
-  /// The time type.
-  typedef typename traits_type::time_type time_type;
-
-  /// The duration type.
-  typedef typename traits_type::duration_type duration_type;
-
-private:
-  // The type of the platform-specific implementation.
-  typedef detail::deadline_timer_service<traits_type> service_impl_type;
-
-public:
-  /// The implementation type of the deadline timer.
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined implementation_type;
-#else
-  typedef typename service_impl_type::implementation_type implementation_type;
-#endif
-
-  /// Construct a new timer service for the specified io_service.
-  explicit deadline_timer_service(asio::io_service& io_service)
-    : asio::detail::service_base<
-        deadline_timer_service<TimeType, TimeTraits> >(io_service),
-      service_impl_(io_service)
-  {
-  }
-
-  /// Construct a new timer implementation.
-  void construct(implementation_type& impl)
-  {
-    service_impl_.construct(impl);
-  }
-
-  /// Destroy a timer implementation.
-  void destroy(implementation_type& impl)
-  {
-    service_impl_.destroy(impl);
-  }
-
-  /// Cancel any asynchronous wait operations associated with the timer.
-  std::size_t cancel(implementation_type& impl, asio::error_code& ec)
-  {
-    return service_impl_.cancel(impl, ec);
-  }
-
-  /// Cancels one asynchronous wait operation associated with the timer.
-  std::size_t cancel_one(implementation_type& impl,
-      asio::error_code& ec)
-  {
-    return service_impl_.cancel_one(impl, ec);
-  }
-
-  /// Get the expiry time for the timer as an absolute time.
-  time_type expires_at(const implementation_type& impl) const
-  {
-    return service_impl_.expires_at(impl);
-  }
-
-  /// Set the expiry time for the timer as an absolute time.
-  std::size_t expires_at(implementation_type& impl,
-      const time_type& expiry_time, asio::error_code& ec)
-  {
-    return service_impl_.expires_at(impl, expiry_time, ec);
-  }
-
-  /// Get the expiry time for the timer relative to now.
-  duration_type expires_from_now(const implementation_type& impl) const
-  {
-    return service_impl_.expires_from_now(impl);
-  }
-
-  /// Set the expiry time for the timer relative to now.
-  std::size_t expires_from_now(implementation_type& impl,
-      const duration_type& expiry_time, asio::error_code& ec)
-  {
-    return service_impl_.expires_from_now(impl, expiry_time, ec);
-  }
-
-  // Perform a blocking wait on the timer.
-  void wait(implementation_type& impl, asio::error_code& ec)
-  {
-    service_impl_.wait(impl, ec);
-  }
-
-  // Start an asynchronous wait on the timer.
-  template <typename WaitHandler>
-  ASIO_INITFN_RESULT_TYPE(WaitHandler,
-      void (asio::error_code))
-  async_wait(implementation_type& impl,
-      ASIO_MOVE_ARG(WaitHandler) handler)
-  {
-    detail::async_result_init<
-      WaitHandler, void (asio::error_code)> init(
-        ASIO_MOVE_CAST(WaitHandler)(handler));
-
-    service_impl_.async_wait(impl, init.handler);
-
-    return init.result.get();
-  }
-
-private:
-  // Destroy all user-defined handler objects owned by the service.
-  void shutdown_service()
-  {
-    service_impl_.shutdown_service();
-  }
-
-  // The platform-specific implementation.
-  service_impl_type service_impl_;
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_BOOST_DATE_TIME)
-       // || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_DEADLINE_TIMER_SERVICE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/addressof.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/addressof.hpp
deleted file mode 100644
index 82bea54..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/addressof.hpp
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// detail/addressof.hpp
-// ~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_ADDRESSOF_HPP
-#define ASIO_DETAIL_ADDRESSOF_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_STD_ADDRESSOF)
-# include <memory>
-#else // defined(ASIO_HAS_STD_ADDRESSOF)
-# include <boost/utility/addressof.hpp>
-#endif // defined(ASIO_HAS_STD_ADDRESSOF)
-
-namespace asio {
-namespace detail {
-
-#if defined(ASIO_HAS_STD_ADDRESSOF)
-using std::addressof;
-#else // defined(ASIO_HAS_STD_ADDRESSOF)
-using boost::addressof;
-#endif // defined(ASIO_HAS_STD_ADDRESSOF)
-
-} // namespace detail
-} // namespace asio
-
-#endif // ASIO_DETAIL_ADDRESSOF_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/array.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/array.hpp
deleted file mode 100644
index 125f84d..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/array.hpp
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// detail/array.hpp
-// ~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_ARRAY_HPP
-#define ASIO_DETAIL_ARRAY_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_STD_ARRAY)
-# include <array>
-#else // defined(ASIO_HAS_STD_ARRAY)
-# include <boost/array.hpp>
-#endif // defined(ASIO_HAS_STD_ARRAY)
-
-namespace asio {
-namespace detail {
-
-#if defined(ASIO_HAS_STD_ARRAY)
-using std::array;
-#else // defined(ASIO_HAS_STD_ARRAY)
-using boost::array;
-#endif // defined(ASIO_HAS_STD_ARRAY)
-
-} // namespace detail
-} // namespace asio
-
-#endif // ASIO_DETAIL_ARRAY_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/array_fwd.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/array_fwd.hpp
deleted file mode 100644
index b53eca3..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/array_fwd.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-//
-// detail/array_fwd.hpp
-// ~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_ARRAY_FWD_HPP
-#define ASIO_DETAIL_ARRAY_FWD_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-namespace boost {
-
-template<class T, std::size_t N>
-class array;
-
-} // namespace boost
-
-// Standard library components can't be forward declared, so we'll have to
-// include the array header. Fortunately, it's fairly lightweight and doesn't
-// add significantly to the compile time.
-#if defined(ASIO_HAS_STD_ARRAY)
-# include <array>
-#endif // defined(ASIO_HAS_STD_ARRAY)
-
-#endif // ASIO_DETAIL_ARRAY_FWD_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/assert.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/assert.hpp
deleted file mode 100644
index 104c0d1..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/assert.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-//
-// detail/assert.hpp
-// ~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_ASSERT_HPP
-#define ASIO_DETAIL_ASSERT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_BOOST_ASSERT)
-# include <boost/assert.hpp>
-#else // defined(ASIO_HAS_BOOST_ASSERT)
-# include <cassert>
-#endif // defined(ASIO_HAS_BOOST_ASSERT)
-
-#if defined(ASIO_HAS_BOOST_ASSERT)
-# define ASIO_ASSERT(expr) BOOST_ASSERT(expr)
-#else // defined(ASIO_HAS_BOOST_ASSERT)
-# define ASIO_ASSERT(expr) assert(expr)
-#endif // defined(ASIO_HAS_BOOST_ASSERT)
-
-#endif // ASIO_DETAIL_ASSERT_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/atomic_count.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/atomic_count.hpp
deleted file mode 100644
index 5956da0..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/atomic_count.hpp
+++ /dev/null
@@ -1,45 +0,0 @@
-//
-// detail/atomic_count.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_ATOMIC_COUNT_HPP
-#define ASIO_DETAIL_ATOMIC_COUNT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_HAS_THREADS)
-// Nothing to include.
-#elif defined(ASIO_HAS_STD_ATOMIC)
-# include <atomic>
-#else // defined(ASIO_HAS_STD_ATOMIC)
-# include <boost/detail/atomic_count.hpp>
-#endif // defined(ASIO_HAS_STD_ATOMIC)
-
-namespace asio {
-namespace detail {
-
-#if !defined(ASIO_HAS_THREADS)
-typedef long atomic_count;
-inline void increment(atomic_count& a, long b) { a += b; }
-#elif defined(ASIO_HAS_STD_ATOMIC)
-typedef std::atomic<long> atomic_count;
-inline void increment(atomic_count& a, long b) { a += b; }
-#else // defined(ASIO_HAS_STD_ATOMIC)
-typedef boost::detail::atomic_count atomic_count;
-inline void increment(atomic_count& a, long b) { while (b > 0) ++a, --b; }
-#endif // defined(ASIO_HAS_STD_ATOMIC)
-
-} // namespace detail
-} // namespace asio
-
-#endif // ASIO_DETAIL_ATOMIC_COUNT_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/base_from_completion_cond.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/base_from_completion_cond.hpp
deleted file mode 100644
index a1aa61e..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/base_from_completion_cond.hpp
+++ /dev/null
@@ -1,68 +0,0 @@
-//
-// detail/base_from_completion_cond.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_BASE_FROM_COMPLETION_COND_HPP
-#define ASIO_DETAIL_BASE_FROM_COMPLETION_COND_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/completion_condition.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename CompletionCondition>
-class base_from_completion_cond
-{
-protected:
-  explicit base_from_completion_cond(CompletionCondition completion_condition)
-    : completion_condition_(completion_condition)
-  {
-  }
-
-  std::size_t check_for_completion(
-      const asio::error_code& ec,
-      std::size_t total_transferred)
-  {
-    return detail::adapt_completion_condition_result(
-        completion_condition_(ec, total_transferred));
-  }
-
-private:
-  CompletionCondition completion_condition_;
-};
-
-template <>
-class base_from_completion_cond<transfer_all_t>
-{
-protected:
-  explicit base_from_completion_cond(transfer_all_t)
-  {
-  }
-
-  static std::size_t check_for_completion(
-      const asio::error_code& ec,
-      std::size_t total_transferred)
-  {
-    return transfer_all_t()(ec, total_transferred);
-  }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_BASE_FROM_COMPLETION_COND_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/bind_handler.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/bind_handler.hpp
deleted file mode 100644
index 1cce775..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/bind_handler.hpp
+++ /dev/null
@@ -1,489 +0,0 @@
-//
-// detail/bind_handler.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_BIND_HANDLER_HPP
-#define ASIO_DETAIL_BIND_HANDLER_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_cont_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Handler, typename Arg1>
-class binder1
-{
-public:
-  binder1(const Handler& handler, const Arg1& arg1)
-    : handler_(handler),
-      arg1_(arg1)
-  {
-  }
-
-  binder1(Handler& handler, const Arg1& arg1)
-    : handler_(ASIO_MOVE_CAST(Handler)(handler)),
-      arg1_(arg1)
-  {
-  }
-
-  void operator()()
-  {
-    handler_(static_cast<const Arg1&>(arg1_));
-  }
-
-  void operator()() const
-  {
-    handler_(arg1_);
-  }
-
-//private:
-  Handler handler_;
-  Arg1 arg1_;
-};
-
-template <typename Handler, typename Arg1>
-inline void* asio_handler_allocate(std::size_t size,
-    binder1<Handler, Arg1>* this_handler)
-{
-  return asio_handler_alloc_helpers::allocate(
-      size, this_handler->handler_);
-}
-
-template <typename Handler, typename Arg1>
-inline void asio_handler_deallocate(void* pointer, std::size_t size,
-    binder1<Handler, Arg1>* this_handler)
-{
-  asio_handler_alloc_helpers::deallocate(
-      pointer, size, this_handler->handler_);
-}
-
-template <typename Handler, typename Arg1>
-inline bool asio_handler_is_continuation(
-    binder1<Handler, Arg1>* this_handler)
-{
-  return asio_handler_cont_helpers::is_continuation(
-      this_handler->handler_);
-}
-
-template <typename Function, typename Handler, typename Arg1>
-inline void asio_handler_invoke(Function& function,
-    binder1<Handler, Arg1>* this_handler)
-{
-  asio_handler_invoke_helpers::invoke(
-      function, this_handler->handler_);
-}
-
-template <typename Function, typename Handler, typename Arg1>
-inline void asio_handler_invoke(const Function& function,
-    binder1<Handler, Arg1>* this_handler)
-{
-  asio_handler_invoke_helpers::invoke(
-      function, this_handler->handler_);
-}
-
-template <typename Handler, typename Arg1>
-inline binder1<Handler, Arg1> bind_handler(Handler handler,
-    const Arg1& arg1)
-{
-  return binder1<Handler, Arg1>(handler, arg1);
-}
-
-template <typename Handler, typename Arg1, typename Arg2>
-class binder2
-{
-public:
-  binder2(const Handler& handler, const Arg1& arg1, const Arg2& arg2)
-    : handler_(handler),
-      arg1_(arg1),
-      arg2_(arg2)
-  {
-  }
-
-  binder2(Handler& handler, const Arg1& arg1, const Arg2& arg2)
-    : handler_(ASIO_MOVE_CAST(Handler)(handler)),
-      arg1_(arg1),
-      arg2_(arg2)
-  {
-  }
-
-  void operator()()
-  {
-    handler_(static_cast<const Arg1&>(arg1_),
-        static_cast<const Arg2&>(arg2_));
-  }
-
-  void operator()() const
-  {
-    handler_(arg1_, arg2_);
-  }
-
-//private:
-  Handler handler_;
-  Arg1 arg1_;
-  Arg2 arg2_;
-};
-
-template <typename Handler, typename Arg1, typename Arg2>
-inline void* asio_handler_allocate(std::size_t size,
-    binder2<Handler, Arg1, Arg2>* this_handler)
-{
-  return asio_handler_alloc_helpers::allocate(
-      size, this_handler->handler_);
-}
-
-template <typename Handler, typename Arg1, typename Arg2>
-inline void asio_handler_deallocate(void* pointer, std::size_t size,
-    binder2<Handler, Arg1, Arg2>* this_handler)
-{
-  asio_handler_alloc_helpers::deallocate(
-      pointer, size, this_handler->handler_);
-}
-
-template <typename Handler, typename Arg1, typename Arg2>
-inline bool asio_handler_is_continuation(
-    binder2<Handler, Arg1, Arg2>* this_handler)
-{
-  return asio_handler_cont_helpers::is_continuation(
-      this_handler->handler_);
-}
-
-template <typename Function, typename Handler, typename Arg1, typename Arg2>
-inline void asio_handler_invoke(Function& function,
-    binder2<Handler, Arg1, Arg2>* this_handler)
-{
-  asio_handler_invoke_helpers::invoke(
-      function, this_handler->handler_);
-}
-
-template <typename Function, typename Handler, typename Arg1, typename Arg2>
-inline void asio_handler_invoke(const Function& function,
-    binder2<Handler, Arg1, Arg2>* this_handler)
-{
-  asio_handler_invoke_helpers::invoke(
-      function, this_handler->handler_);
-}
-
-template <typename Handler, typename Arg1, typename Arg2>
-inline binder2<Handler, Arg1, Arg2> bind_handler(Handler handler,
-    const Arg1& arg1, const Arg2& arg2)
-{
-  return binder2<Handler, Arg1, Arg2>(handler, arg1, arg2);
-}
-
-template <typename Handler, typename Arg1, typename Arg2, typename Arg3>
-class binder3
-{
-public:
-  binder3(const Handler& handler, const Arg1& arg1, const Arg2& arg2,
-      const Arg3& arg3)
-    : handler_(handler),
-      arg1_(arg1),
-      arg2_(arg2),
-      arg3_(arg3)
-  {
-  }
-
-  binder3(Handler& handler, const Arg1& arg1, const Arg2& arg2,
-      const Arg3& arg3)
-    : handler_(ASIO_MOVE_CAST(Handler)(handler)),
-      arg1_(arg1),
-      arg2_(arg2),
-      arg3_(arg3)
-  {
-  }
-
-  void operator()()
-  {
-    handler_(static_cast<const Arg1&>(arg1_),
-        static_cast<const Arg2&>(arg2_),
-        static_cast<const Arg3&>(arg3_));
-  }
-
-  void operator()() const
-  {
-    handler_(arg1_, arg2_, arg3_);
-  }
-
-//private:
-  Handler handler_;
-  Arg1 arg1_;
-  Arg2 arg2_;
-  Arg3 arg3_;
-};
-
-template <typename Handler, typename Arg1, typename Arg2, typename Arg3>
-inline void* asio_handler_allocate(std::size_t size,
-    binder3<Handler, Arg1, Arg2, Arg3>* this_handler)
-{
-  return asio_handler_alloc_helpers::allocate(
-      size, this_handler->handler_);
-}
-
-template <typename Handler, typename Arg1, typename Arg2, typename Arg3>
-inline void asio_handler_deallocate(void* pointer, std::size_t size,
-    binder3<Handler, Arg1, Arg2, Arg3>* this_handler)
-{
-  asio_handler_alloc_helpers::deallocate(
-      pointer, size, this_handler->handler_);
-}
-
-template <typename Handler, typename Arg1, typename Arg2, typename Arg3>
-inline bool asio_handler_is_continuation(
-    binder3<Handler, Arg1, Arg2, Arg3>* this_handler)
-{
-  return asio_handler_cont_helpers::is_continuation(
-      this_handler->handler_);
-}
-
-template <typename Function, typename Handler, typename Arg1, typename Arg2,
-    typename Arg3>
-inline void asio_handler_invoke(Function& function,
-    binder3<Handler, Arg1, Arg2, Arg3>* this_handler)
-{
-  asio_handler_invoke_helpers::invoke(
-      function, this_handler->handler_);
-}
-
-template <typename Function, typename Handler, typename Arg1, typename Arg2,
-    typename Arg3>
-inline void asio_handler_invoke(const Function& function,
-    binder3<Handler, Arg1, Arg2, Arg3>* this_handler)
-{
-  asio_handler_invoke_helpers::invoke(
-      function, this_handler->handler_);
-}
-
-template <typename Handler, typename Arg1, typename Arg2, typename Arg3>
-inline binder3<Handler, Arg1, Arg2, Arg3> bind_handler(Handler handler,
-    const Arg1& arg1, const Arg2& arg2, const Arg3& arg3)
-{
-  return binder3<Handler, Arg1, Arg2, Arg3>(handler, arg1, arg2, arg3);
-}
-
-template <typename Handler, typename Arg1, typename Arg2, typename Arg3,
-    typename Arg4>
-class binder4
-{
-public:
-  binder4(const Handler& handler, const Arg1& arg1, const Arg2& arg2,
-      const Arg3& arg3, const Arg4& arg4)
-    : handler_(handler),
-      arg1_(arg1),
-      arg2_(arg2),
-      arg3_(arg3),
-      arg4_(arg4)
-  {
-  }
-
-  binder4(Handler& handler, const Arg1& arg1, const Arg2& arg2,
-      const Arg3& arg3, const Arg4& arg4)
-    : handler_(ASIO_MOVE_CAST(Handler)(handler)),
-      arg1_(arg1),
-      arg2_(arg2),
-      arg3_(arg3),
-      arg4_(arg4)
-  {
-  }
-
-  void operator()()
-  {
-    handler_(static_cast<const Arg1&>(arg1_),
-        static_cast<const Arg2&>(arg2_),
-        static_cast<const Arg3&>(arg3_),
-        static_cast<const Arg4&>(arg4_));
-  }
-
-  void operator()() const
-  {
-    handler_(arg1_, arg2_, arg3_, arg4_);
-  }
-
-//private:
-  Handler handler_;
-  Arg1 arg1_;
-  Arg2 arg2_;
-  Arg3 arg3_;
-  Arg4 arg4_;
-};
-
-template <typename Handler, typename Arg1, typename Arg2, typename Arg3,
-    typename Arg4>
-inline void* asio_handler_allocate(std::size_t size,
-    binder4<Handler, Arg1, Arg2, Arg3, Arg4>* this_handler)
-{
-  return asio_handler_alloc_helpers::allocate(
-      size, this_handler->handler_);
-}
-
-template <typename Handler, typename Arg1, typename Arg2, typename Arg3,
-    typename Arg4>
-inline void asio_handler_deallocate(void* pointer, std::size_t size,
-    binder4<Handler, Arg1, Arg2, Arg3, Arg4>* this_handler)
-{
-  asio_handler_alloc_helpers::deallocate(
-      pointer, size, this_handler->handler_);
-}
-
-template <typename Handler, typename Arg1, typename Arg2, typename Arg3,
-    typename Arg4>
-inline bool asio_handler_is_continuation(
-    binder4<Handler, Arg1, Arg2, Arg3, Arg4>* this_handler)
-{
-  return asio_handler_cont_helpers::is_continuation(
-      this_handler->handler_);
-}
-
-template <typename Function, typename Handler, typename Arg1, typename Arg2,
-    typename Arg3, typename Arg4>
-inline void asio_handler_invoke(Function& function,
-    binder4<Handler, Arg1, Arg2, Arg3, Arg4>* this_handler)
-{
-  asio_handler_invoke_helpers::invoke(
-      function, this_handler->handler_);
-}
-
-template <typename Function, typename Handler, typename Arg1, typename Arg2,
-    typename Arg3, typename Arg4>
-inline void asio_handler_invoke(const Function& function,
-    binder4<Handler, Arg1, Arg2, Arg3, Arg4>* this_handler)
-{
-  asio_handler_invoke_helpers::invoke(
-      function, this_handler->handler_);
-}
-
-template <typename Handler, typename Arg1, typename Arg2, typename Arg3,
-    typename Arg4>
-inline binder4<Handler, Arg1, Arg2, Arg3, Arg4> bind_handler(
-    Handler handler, const Arg1& arg1, const Arg2& arg2,
-    const Arg3& arg3, const Arg4& arg4)
-{
-  return binder4<Handler, Arg1, Arg2, Arg3, Arg4>(handler, arg1, arg2, arg3,
-      arg4);
-}
-
-template <typename Handler, typename Arg1, typename Arg2, typename Arg3,
-    typename Arg4, typename Arg5>
-class binder5
-{
-public:
-  binder5(const Handler& handler, const Arg1& arg1, const Arg2& arg2,
-      const Arg3& arg3, const Arg4& arg4, const Arg5& arg5)
-    : handler_(handler),
-      arg1_(arg1),
-      arg2_(arg2),
-      arg3_(arg3),
-      arg4_(arg4),
-      arg5_(arg5)
-  {
-  }
-
-  binder5(Handler& handler, const Arg1& arg1, const Arg2& arg2,
-      const Arg3& arg3, const Arg4& arg4, const Arg5& arg5)
-    : handler_(ASIO_MOVE_CAST(Handler)(handler)),
-      arg1_(arg1),
-      arg2_(arg2),
-      arg3_(arg3),
-      arg4_(arg4),
-      arg5_(arg5)
-  {
-  }
-
-  void operator()()
-  {
-    handler_(static_cast<const Arg1&>(arg1_),
-        static_cast<const Arg2&>(arg2_),
-        static_cast<const Arg3&>(arg3_),
-        static_cast<const Arg4&>(arg4_),
-        static_cast<const Arg5&>(arg5_));
-  }
-
-  void operator()() const
-  {
-    handler_(arg1_, arg2_, arg3_, arg4_, arg5_);
-  }
-
-//private:
-  Handler handler_;
-  Arg1 arg1_;
-  Arg2 arg2_;
-  Arg3 arg3_;
-  Arg4 arg4_;
-  Arg5 arg5_;
-};
-
-template <typename Handler, typename Arg1, typename Arg2, typename Arg3,
-    typename Arg4, typename Arg5>
-inline void* asio_handler_allocate(std::size_t size,
-    binder5<Handler, Arg1, Arg2, Arg3, Arg4, Arg5>* this_handler)
-{
-  return asio_handler_alloc_helpers::allocate(
-      size, this_handler->handler_);
-}
-
-template <typename Handler, typename Arg1, typename Arg2, typename Arg3,
-    typename Arg4, typename Arg5>
-inline void asio_handler_deallocate(void* pointer, std::size_t size,
-    binder5<Handler, Arg1, Arg2, Arg3, Arg4, Arg5>* this_handler)
-{
-  asio_handler_alloc_helpers::deallocate(
-      pointer, size, this_handler->handler_);
-}
-
-template <typename Handler, typename Arg1, typename Arg2, typename Arg3,
-    typename Arg4, typename Arg5>
-inline bool asio_handler_is_continuation(
-    binder5<Handler, Arg1, Arg2, Arg3, Arg4, Arg5>* this_handler)
-{
-  return asio_handler_cont_helpers::is_continuation(
-      this_handler->handler_);
-}
-
-template <typename Function, typename Handler, typename Arg1, typename Arg2,
-    typename Arg3, typename Arg4, typename Arg5>
-inline void asio_handler_invoke(Function& function,
-    binder5<Handler, Arg1, Arg2, Arg3, Arg4, Arg5>* this_handler)
-{
-  asio_handler_invoke_helpers::invoke(
-      function, this_handler->handler_);
-}
-
-template <typename Function, typename Handler, typename Arg1, typename Arg2,
-    typename Arg3, typename Arg4, typename Arg5>
-inline void asio_handler_invoke(const Function& function,
-    binder5<Handler, Arg1, Arg2, Arg3, Arg4, Arg5>* this_handler)
-{
-  asio_handler_invoke_helpers::invoke(
-      function, this_handler->handler_);
-}
-
-template <typename Handler, typename Arg1, typename Arg2, typename Arg3,
-    typename Arg4, typename Arg5>
-inline binder5<Handler, Arg1, Arg2, Arg3, Arg4, Arg5> bind_handler(
-    Handler handler, const Arg1& arg1, const Arg2& arg2,
-    const Arg3& arg3, const Arg4& arg4, const Arg5& arg5)
-{
-  return binder5<Handler, Arg1, Arg2, Arg3, Arg4, Arg5>(handler, arg1, arg2,
-      arg3, arg4, arg5);
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_BIND_HANDLER_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/buffer_resize_guard.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/buffer_resize_guard.hpp
deleted file mode 100644
index 5a33c3f..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/buffer_resize_guard.hpp
+++ /dev/null
@@ -1,66 +0,0 @@
-//
-// detail/buffer_resize_guard.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_BUFFER_RESIZE_GUARD_HPP
-#define ASIO_DETAIL_BUFFER_RESIZE_GUARD_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/limits.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-// Helper class to manage buffer resizing in an exception safe way.
-template <typename Buffer>
-class buffer_resize_guard
-{
-public:
-  // Constructor.
-  buffer_resize_guard(Buffer& buffer)
-    : buffer_(buffer),
-      old_size_(buffer.size())
-  {
-  }
-
-  // Destructor rolls back the buffer resize unless commit was called.
-  ~buffer_resize_guard()
-  {
-    if (old_size_ != (std::numeric_limits<size_t>::max)())
-    {
-      buffer_.resize(old_size_);
-    }
-  }
-
-  // Commit the resize transaction.
-  void commit()
-  {
-    old_size_ = (std::numeric_limits<size_t>::max)();
-  }
-
-private:
-  // The buffer being managed.
-  Buffer& buffer_;
-
-  // The size of the buffer at the time the guard was constructed.
-  size_t old_size_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_BUFFER_RESIZE_GUARD_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/buffer_sequence_adapter.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/buffer_sequence_adapter.hpp
deleted file mode 100644
index 2f388c6..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/buffer_sequence_adapter.hpp
+++ /dev/null
@@ -1,383 +0,0 @@
-//
-// detail/buffer_sequence_adapter.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_BUFFER_SEQUENCE_ADAPTER_HPP
-#define ASIO_DETAIL_BUFFER_SEQUENCE_ADAPTER_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/buffer.hpp"
-#include "asio/detail/array_fwd.hpp"
-#include "asio/detail/socket_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class buffer_sequence_adapter_base
-{
-protected:
-#if defined(ASIO_WINDOWS_RUNTIME)
-  // The maximum number of buffers to support in a single operation.
-  enum { max_buffers = 1 };
-
-  typedef Windows::Storage::Streams::IBuffer^ native_buffer_type;
-
-  ASIO_DECL static void init_native_buffer(
-      native_buffer_type& buf,
-      const asio::mutable_buffer& buffer);
-
-  ASIO_DECL static void init_native_buffer(
-      native_buffer_type& buf,
-      const asio::const_buffer& buffer);
-#elif defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  // The maximum number of buffers to support in a single operation.
-  enum { max_buffers = 64 < max_iov_len ? 64 : max_iov_len };
-
-  typedef WSABUF native_buffer_type;
-
-  static void init_native_buffer(WSABUF& buf,
-      const asio::mutable_buffer& buffer)
-  {
-    buf.buf = asio::buffer_cast<char*>(buffer);
-    buf.len = static_cast<ULONG>(asio::buffer_size(buffer));
-  }
-
-  static void init_native_buffer(WSABUF& buf,
-      const asio::const_buffer& buffer)
-  {
-    buf.buf = const_cast<char*>(asio::buffer_cast<const char*>(buffer));
-    buf.len = static_cast<ULONG>(asio::buffer_size(buffer));
-  }
-#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  // The maximum number of buffers to support in a single operation.
-  enum { max_buffers = 64 < max_iov_len ? 64 : max_iov_len };
-
-  typedef iovec native_buffer_type;
-
-  static void init_iov_base(void*& base, void* addr)
-  {
-    base = addr;
-  }
-
-  template <typename T>
-  static void init_iov_base(T& base, void* addr)
-  {
-    base = static_cast<T>(addr);
-  }
-
-  static void init_native_buffer(iovec& iov,
-      const asio::mutable_buffer& buffer)
-  {
-    init_iov_base(iov.iov_base, asio::buffer_cast<void*>(buffer));
-    iov.iov_len = asio::buffer_size(buffer);
-  }
-
-  static void init_native_buffer(iovec& iov,
-      const asio::const_buffer& buffer)
-  {
-    init_iov_base(iov.iov_base, const_cast<void*>(
-          asio::buffer_cast<const void*>(buffer)));
-    iov.iov_len = asio::buffer_size(buffer);
-  }
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-};
-
-// Helper class to translate buffers into the native buffer representation.
-template <typename Buffer, typename Buffers>
-class buffer_sequence_adapter
-  : buffer_sequence_adapter_base
-{
-public:
-  explicit buffer_sequence_adapter(const Buffers& buffer_sequence)
-    : count_(0), total_buffer_size_(0)
-  {
-    typename Buffers::const_iterator iter = buffer_sequence.begin();
-    typename Buffers::const_iterator end = buffer_sequence.end();
-    for (; iter != end && count_ < max_buffers; ++iter, ++count_)
-    {
-      Buffer buffer(*iter);
-      init_native_buffer(buffers_[count_], buffer);
-      total_buffer_size_ += asio::buffer_size(buffer);
-    }
-  }
-
-  native_buffer_type* buffers()
-  {
-    return buffers_;
-  }
-
-  std::size_t count() const
-  {
-    return count_;
-  }
-
-  bool all_empty() const
-  {
-    return total_buffer_size_ == 0;
-  }
-
-  static bool all_empty(const Buffers& buffer_sequence)
-  {
-    typename Buffers::const_iterator iter = buffer_sequence.begin();
-    typename Buffers::const_iterator end = buffer_sequence.end();
-    std::size_t i = 0;
-    for (; iter != end && i < max_buffers; ++iter, ++i)
-      if (asio::buffer_size(Buffer(*iter)) > 0)
-        return false;
-    return true;
-  }
-
-  static void validate(const Buffers& buffer_sequence)
-  {
-    typename Buffers::const_iterator iter = buffer_sequence.begin();
-    typename Buffers::const_iterator end = buffer_sequence.end();
-    for (; iter != end; ++iter)
-    {
-      Buffer buffer(*iter);
-      asio::buffer_cast<const void*>(buffer);
-    }
-  }
-
-  static Buffer first(const Buffers& buffer_sequence)
-  {
-    typename Buffers::const_iterator iter = buffer_sequence.begin();
-    typename Buffers::const_iterator end = buffer_sequence.end();
-    for (; iter != end; ++iter)
-    {
-      Buffer buffer(*iter);
-      if (asio::buffer_size(buffer) != 0)
-        return buffer;
-    }
-    return Buffer();
-  }
-
-private:
-  native_buffer_type buffers_[max_buffers];
-  std::size_t count_;
-  std::size_t total_buffer_size_;
-};
-
-template <typename Buffer>
-class buffer_sequence_adapter<Buffer, asio::mutable_buffers_1>
-  : buffer_sequence_adapter_base
-{
-public:
-  explicit buffer_sequence_adapter(
-      const asio::mutable_buffers_1& buffer_sequence)
-  {
-    init_native_buffer(buffer_, Buffer(buffer_sequence));
-    total_buffer_size_ = asio::buffer_size(buffer_sequence);
-  }
-
-  native_buffer_type* buffers()
-  {
-    return &buffer_;
-  }
-
-  std::size_t count() const
-  {
-    return 1;
-  }
-
-  bool all_empty() const
-  {
-    return total_buffer_size_ == 0;
-  }
-
-  static bool all_empty(const asio::mutable_buffers_1& buffer_sequence)
-  {
-    return asio::buffer_size(buffer_sequence) == 0;
-  }
-
-  static void validate(const asio::mutable_buffers_1& buffer_sequence)
-  {
-    asio::buffer_cast<const void*>(buffer_sequence);
-  }
-
-  static Buffer first(const asio::mutable_buffers_1& buffer_sequence)
-  {
-    return Buffer(buffer_sequence);
-  }
-
-private:
-  native_buffer_type buffer_;
-  std::size_t total_buffer_size_;
-};
-
-template <typename Buffer>
-class buffer_sequence_adapter<Buffer, asio::const_buffers_1>
-  : buffer_sequence_adapter_base
-{
-public:
-  explicit buffer_sequence_adapter(
-      const asio::const_buffers_1& buffer_sequence)
-  {
-    init_native_buffer(buffer_, Buffer(buffer_sequence));
-    total_buffer_size_ = asio::buffer_size(buffer_sequence);
-  }
-
-  native_buffer_type* buffers()
-  {
-    return &buffer_;
-  }
-
-  std::size_t count() const
-  {
-    return 1;
-  }
-
-  bool all_empty() const
-  {
-    return total_buffer_size_ == 0;
-  }
-
-  static bool all_empty(const asio::const_buffers_1& buffer_sequence)
-  {
-    return asio::buffer_size(buffer_sequence) == 0;
-  }
-
-  static void validate(const asio::const_buffers_1& buffer_sequence)
-  {
-    asio::buffer_cast<const void*>(buffer_sequence);
-  }
-
-  static Buffer first(const asio::const_buffers_1& buffer_sequence)
-  {
-    return Buffer(buffer_sequence);
-  }
-
-private:
-  native_buffer_type buffer_;
-  std::size_t total_buffer_size_;
-};
-
-template <typename Buffer, typename Elem>
-class buffer_sequence_adapter<Buffer, boost::array<Elem, 2> >
-  : buffer_sequence_adapter_base
-{
-public:
-  explicit buffer_sequence_adapter(
-      const boost::array<Elem, 2>& buffer_sequence)
-  {
-    init_native_buffer(buffers_[0], Buffer(buffer_sequence[0]));
-    init_native_buffer(buffers_[1], Buffer(buffer_sequence[1]));
-    total_buffer_size_ = asio::buffer_size(buffer_sequence[0])
-      + asio::buffer_size(buffer_sequence[1]);
-  }
-
-  native_buffer_type* buffers()
-  {
-    return buffers_;
-  }
-
-  std::size_t count() const
-  {
-    return 2;
-  }
-
-  bool all_empty() const
-  {
-    return total_buffer_size_ == 0;
-  }
-
-  static bool all_empty(const boost::array<Elem, 2>& buffer_sequence)
-  {
-    return asio::buffer_size(buffer_sequence[0]) == 0
-      && asio::buffer_size(buffer_sequence[1]) == 0;
-  }
-
-  static void validate(const boost::array<Elem, 2>& buffer_sequence)
-  {
-    asio::buffer_cast<const void*>(buffer_sequence[0]);
-    asio::buffer_cast<const void*>(buffer_sequence[1]);
-  }
-
-  static Buffer first(const boost::array<Elem, 2>& buffer_sequence)
-  {
-    return Buffer(asio::buffer_size(buffer_sequence[0]) != 0
-        ? buffer_sequence[0] : buffer_sequence[1]);
-  }
-
-private:
-  native_buffer_type buffers_[2];
-  std::size_t total_buffer_size_;
-};
-
-#if defined(ASIO_HAS_STD_ARRAY)
-
-template <typename Buffer, typename Elem>
-class buffer_sequence_adapter<Buffer, std::array<Elem, 2> >
-  : buffer_sequence_adapter_base
-{
-public:
-  explicit buffer_sequence_adapter(
-      const std::array<Elem, 2>& buffer_sequence)
-  {
-    init_native_buffer(buffers_[0], Buffer(buffer_sequence[0]));
-    init_native_buffer(buffers_[1], Buffer(buffer_sequence[1]));
-    total_buffer_size_ = asio::buffer_size(buffer_sequence[0])
-      + asio::buffer_size(buffer_sequence[1]);
-  }
-
-  native_buffer_type* buffers()
-  {
-    return buffers_;
-  }
-
-  std::size_t count() const
-  {
-    return 2;
-  }
-
-  bool all_empty() const
-  {
-    return total_buffer_size_ == 0;
-  }
-
-  static bool all_empty(const std::array<Elem, 2>& buffer_sequence)
-  {
-    return asio::buffer_size(buffer_sequence[0]) == 0
-      && asio::buffer_size(buffer_sequence[1]) == 0;
-  }
-
-  static void validate(const std::array<Elem, 2>& buffer_sequence)
-  {
-    asio::buffer_cast<const void*>(buffer_sequence[0]);
-    asio::buffer_cast<const void*>(buffer_sequence[1]);
-  }
-
-  static Buffer first(const std::array<Elem, 2>& buffer_sequence)
-  {
-    return Buffer(asio::buffer_size(buffer_sequence[0]) != 0
-        ? buffer_sequence[0] : buffer_sequence[1]);
-  }
-
-private:
-  native_buffer_type buffers_[2];
-  std::size_t total_buffer_size_;
-};
-
-#endif // defined(ASIO_HAS_STD_ARRAY)
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/buffer_sequence_adapter.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_DETAIL_BUFFER_SEQUENCE_ADAPTER_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/buffered_stream_storage.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/buffered_stream_storage.hpp
deleted file mode 100644
index 4e6bcd3..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/buffered_stream_storage.hpp
+++ /dev/null
@@ -1,126 +0,0 @@
-//
-// detail/buffered_stream_storage.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_BUFFERED_STREAM_STORAGE_HPP
-#define ASIO_DETAIL_BUFFERED_STREAM_STORAGE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/buffer.hpp"
-#include "asio/detail/assert.hpp"
-#include <cstddef>
-#include <cstring>
-#include <vector>
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class buffered_stream_storage
-{
-public:
-  // The type of the bytes stored in the buffer.
-  typedef unsigned char byte_type;
-
-  // The type used for offsets into the buffer.
-  typedef std::size_t size_type;
-
-  // Constructor.
-  explicit buffered_stream_storage(std::size_t buffer_capacity)
-    : begin_offset_(0),
-      end_offset_(0),
-      buffer_(buffer_capacity)
-  {
-  }
-
-  /// Clear the buffer.
-  void clear()
-  {
-    begin_offset_ = 0;
-    end_offset_ = 0;
-  }
-
-  // Return a pointer to the beginning of the unread data.
-  mutable_buffer data()
-  {
-    return asio::buffer(buffer_) + begin_offset_;
-  }
-
-  // Return a pointer to the beginning of the unread data.
-  const_buffer data() const
-  {
-    return asio::buffer(buffer_) + begin_offset_;
-  }
-
-  // Is there no unread data in the buffer.
-  bool empty() const
-  {
-    return begin_offset_ == end_offset_;
-  }
-
-  // Return the amount of unread data the is in the buffer.
-  size_type size() const
-  {
-    return end_offset_ - begin_offset_;
-  }
-
-  // Resize the buffer to the specified length.
-  void resize(size_type length)
-  {
-    ASIO_ASSERT(length <= capacity());
-    if (begin_offset_ + length <= capacity())
-    {
-      end_offset_ = begin_offset_ + length;
-    }
-    else
-    {
-      using namespace std; // For memmove.
-      memmove(&buffer_[0], &buffer_[0] + begin_offset_, size());
-      end_offset_ = length;
-      begin_offset_ = 0;
-    }
-  }
-
-  // Return the maximum size for data in the buffer.
-  size_type capacity() const
-  {
-    return buffer_.size();
-  }
-
-  // Consume multiple bytes from the beginning of the buffer.
-  void consume(size_type count)
-  {
-    ASIO_ASSERT(begin_offset_ + count <= end_offset_);
-    begin_offset_ += count;
-    if (empty())
-      clear();
-  }
-
-private:
-  // The offset to the beginning of the unread data.
-  size_type begin_offset_;
-
-  // The offset to the end of the unread data.
-  size_type end_offset_;
-  
-  // The data in the buffer.
-  std::vector<byte_type> buffer_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_BUFFERED_STREAM_STORAGE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/call_stack.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/call_stack.hpp
deleted file mode 100644
index fa763e6..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/call_stack.hpp
+++ /dev/null
@@ -1,125 +0,0 @@
-//
-// detail/call_stack.hpp
-// ~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_CALL_STACK_HPP
-#define ASIO_DETAIL_CALL_STACK_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/tss_ptr.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-// Helper class to determine whether or not the current thread is inside an
-// invocation of io_service::run() for a specified io_service object.
-template <typename Key, typename Value = unsigned char>
-class call_stack
-{
-public:
-  // Context class automatically pushes the key/value pair on to the stack.
-  class context
-    : private noncopyable
-  {
-  public:
-    // Push the key on to the stack.
-    explicit context(Key* k)
-      : key_(k),
-        next_(call_stack<Key, Value>::top_)
-    {
-      value_ = reinterpret_cast<unsigned char*>(this);
-      call_stack<Key, Value>::top_ = this;
-    }
-
-    // Push the key/value pair on to the stack.
-    context(Key* k, Value& v)
-      : key_(k),
-        value_(&v),
-        next_(call_stack<Key, Value>::top_)
-    {
-      call_stack<Key, Value>::top_ = this;
-    }
-
-    // Pop the key/value pair from the stack.
-    ~context()
-    {
-      call_stack<Key, Value>::top_ = next_;
-    }
-
-    // Find the next context with the same key.
-    Value* next_by_key() const
-    {
-      context* elem = next_;
-      while (elem)
-      {
-        if (elem->key_ == key_)
-          return elem->value_;
-        elem = elem->next_;
-      }
-      return 0;
-    }
-
-  private:
-    friend class call_stack<Key, Value>;
-
-    // The key associated with the context.
-    Key* key_;
-
-    // The value associated with the context.
-    Value* value_;
-
-    // The next element in the stack.
-    context* next_;
-  };
-
-  friend class context;
-
-  // Determine whether the specified owner is on the stack. Returns address of
-  // key if present, 0 otherwise.
-  static Value* contains(Key* k)
-  {
-    context* elem = top_;
-    while (elem)
-    {
-      if (elem->key_ == k)
-        return elem->value_;
-      elem = elem->next_;
-    }
-    return 0;
-  }
-
-  // Obtain the value at the top of the stack.
-  static Value* top()
-  {
-    context* elem = top_;
-    return elem ? elem->value_ : 0;
-  }
-
-private:
-  // The top of the stack of calls for the current thread.
-  static tss_ptr<context> top_;
-};
-
-template <typename Key, typename Value>
-tss_ptr<typename call_stack<Key, Value>::context>
-call_stack<Key, Value>::top_;
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_CALL_STACK_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/chrono_time_traits.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/chrono_time_traits.hpp
deleted file mode 100644
index 525d551..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/chrono_time_traits.hpp
+++ /dev/null
@@ -1,190 +0,0 @@
-//
-// detail/chrono_time_traits.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_CHRONO_TIME_TRAITS_HPP
-#define ASIO_DETAIL_CHRONO_TIME_TRAITS_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/cstdint.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-// Helper template to compute the greatest common divisor.
-template <int64_t v1, int64_t v2>
-struct gcd { enum { value = gcd<v2, v1 % v2>::value }; };
-
-template <int64_t v1>
-struct gcd<v1, 0> { enum { value = v1 }; };
-
-// Adapts std::chrono clocks for use with a deadline timer.
-template <typename Clock, typename WaitTraits>
-struct chrono_time_traits
-{
-  // The clock type.
-  typedef Clock clock_type;
-
-  // The duration type of the clock.
-  typedef typename clock_type::duration duration_type;
-
-  // The time point type of the clock.
-  typedef typename clock_type::time_point time_type;
-
-  // The period of the clock.
-  typedef typename duration_type::period period_type;
-
-  // Get the current time.
-  static time_type now()
-  {
-    return clock_type::now();
-  }
-
-  // Add a duration to a time.
-  static time_type add(const time_type& t, const duration_type& d)
-  {
-    const time_type epoch;
-    if (t >= epoch)
-    {
-      if ((time_type::max)() - t < d)
-        return (time_type::max)();
-    }
-    else // t < epoch
-    {
-      if (-(t - (time_type::min)()) > d)
-        return (time_type::min)();
-    }
-
-    return t + d;
-  }
-
-  // Subtract one time from another.
-  static duration_type subtract(const time_type& t1, const time_type& t2)
-  {
-    const time_type epoch;
-    if (t1 >= epoch)
-    {
-      if (t2 >= epoch)
-      {
-        return t1 - t2;
-      }
-      else if (t2 == (time_type::min)())
-      {
-        return (duration_type::max)();
-      }
-      else if ((time_type::max)() - t1 < epoch - t2)
-      {
-        return (duration_type::max)();
-      }
-      else
-      {
-        return t1 - t2;
-      }
-    }
-    else // t1 < epoch
-    {
-      if (t2 < epoch)
-      {
-        return t1 - t2;
-      }
-      else if (t1 == (time_type::min)())
-      {
-        return (duration_type::min)();
-      }
-      else if ((time_type::max)() - t2 < epoch - t1)
-      {
-        return (duration_type::min)();
-      }
-      else
-      {
-        return -(t2 - t1);
-      }
-    }
-  }
-
-  // Test whether one time is less than another.
-  static bool less_than(const time_type& t1, const time_type& t2)
-  {
-    return t1 < t2;
-  }
-
-  // Implement just enough of the posix_time::time_duration interface to supply
-  // what the timer_queue requires.
-  class posix_time_duration
-  {
-  public:
-    explicit posix_time_duration(const duration_type& d)
-      : d_(d)
-    {
-    }
-
-    int64_t ticks() const
-    {
-      return d_.count();
-    }
-
-    int64_t total_seconds() const
-    {
-      return duration_cast<1, 1>();
-    }
-
-    int64_t total_milliseconds() const
-    {
-      return duration_cast<1, 1000>();
-    }
-
-    int64_t total_microseconds() const
-    {
-      return duration_cast<1, 1000000>();
-    }
-
-  private:
-    template <int64_t Num, int64_t Den>
-    int64_t duration_cast() const
-    {
-      const int64_t num1 = period_type::num / gcd<period_type::num, Num>::value;
-      const int64_t num2 = Num / gcd<period_type::num, Num>::value;
-
-      const int64_t den1 = period_type::den / gcd<period_type::den, Den>::value;
-      const int64_t den2 = Den / gcd<period_type::den, Den>::value;
-
-      const int64_t num = num1 * den2;
-      const int64_t den = num2 * den1;
-
-      if (num == 1 && den == 1)
-        return ticks();
-      else if (num != 1 && den == 1)
-        return ticks() * num;
-      else if (num == 1 && period_type::den != 1)
-        return ticks() / den;
-      else
-        return ticks() * num / den;
-    }
-
-    duration_type d_;
-  };
-
-  // Convert to POSIX duration type.
-  static posix_time_duration to_posix_duration(const duration_type& d)
-  {
-    return posix_time_duration(WaitTraits::to_wait_duration(d));
-  }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_CHRONO_TIME_TRAITS_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/completion_handler.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/completion_handler.hpp
deleted file mode 100644
index 35ded0f..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/completion_handler.hpp
+++ /dev/null
@@ -1,81 +0,0 @@
-//
-// detail/completion_handler.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_COMPLETION_HANDLER_HPP
-#define ASIO_DETAIL_COMPLETION_HANDLER_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/config.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/operation.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Handler>
-class completion_handler : public operation
-{
-public:
-  ASIO_DEFINE_HANDLER_PTR(completion_handler);
-
-  completion_handler(Handler& h)
-    : operation(&completion_handler::do_complete),
-      handler_(ASIO_MOVE_CAST(Handler)(h))
-  {
-  }
-
-  static void do_complete(io_service_impl* owner, operation* base,
-      const asio::error_code& /*ec*/,
-      std::size_t /*bytes_transferred*/)
-  {
-    // Take ownership of the handler object.
-    completion_handler* h(static_cast<completion_handler*>(base));
-    ptr p = { asio::detail::addressof(h->handler_), h, h };
-
-    ASIO_HANDLER_COMPLETION((h));
-
-    // Make a copy of the handler so that the memory can be deallocated before
-    // the upcall is made. Even if we're not about to make an upcall, a
-    // sub-object of the handler may be the true owner of the memory associated
-    // with the handler. Consequently, a local copy of the handler is required
-    // to ensure that any owning sub-object remains valid until after we have
-    // deallocated the memory here.
-    Handler handler(ASIO_MOVE_CAST(Handler)(h->handler_));
-    p.h = asio::detail::addressof(handler);
-    p.reset();
-
-    // Make the upcall if required.
-    if (owner)
-    {
-      fenced_block b(fenced_block::half);
-      ASIO_HANDLER_INVOCATION_BEGIN(());
-      asio_handler_invoke_helpers::invoke(handler, handler);
-      ASIO_HANDLER_INVOCATION_END;
-    }
-  }
-
-private:
-  Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_COMPLETION_HANDLER_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/config.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/config.hpp
deleted file mode 100644
index 9d7bd52..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/config.hpp
+++ /dev/null
@@ -1,973 +0,0 @@
-//
-// detail/config.hpp
-// ~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_CONFIG_HPP
-#define ASIO_DETAIL_CONFIG_HPP
-
-#if defined(ASIO_STANDALONE)
-# define ASIO_DISABLE_BOOST_ARRAY 1
-# define ASIO_DISABLE_BOOST_ASSERT 1
-# define ASIO_DISABLE_BOOST_BIND 1
-# define ASIO_DISABLE_BOOST_CHRONO 1
-# define ASIO_DISABLE_BOOST_DATE_TIME 1
-# define ASIO_DISABLE_BOOST_LIMITS 1
-# define ASIO_DISABLE_BOOST_REGEX 1
-# define ASIO_DISABLE_BOOST_STATIC_CONSTANT 1
-# define ASIO_DISABLE_BOOST_THROW_EXCEPTION 1
-# define ASIO_DISABLE_BOOST_WORKAROUND 1
-#else // defined(ASIO_STANDALONE)
-# include <boost/config.hpp>
-# include <boost/version.hpp>
-# define ASIO_HAS_BOOST_CONFIG 1
-#endif // defined(ASIO_STANDALONE)
-
-// Default to a header-only implementation. The user must specifically request
-// separate compilation by defining either ASIO_SEPARATE_COMPILATION or
-// ASIO_DYN_LINK (as a DLL/shared library implies separate compilation).
-#if !defined(ASIO_HEADER_ONLY)
-# if !defined(ASIO_SEPARATE_COMPILATION)
-#  if !defined(ASIO_DYN_LINK)
-#   define ASIO_HEADER_ONLY 1
-#  endif // !defined(ASIO_DYN_LINK)
-# endif // !defined(ASIO_SEPARATE_COMPILATION)
-#endif // !defined(ASIO_HEADER_ONLY)
-
-#if defined(ASIO_HEADER_ONLY)
-# define ASIO_DECL inline
-#else // defined(ASIO_HEADER_ONLY)
-# if defined(_MSC_VER) || defined(__BORLANDC__) || defined(__CODEGEARC__)
-// We need to import/export our code only if the user has specifically asked
-// for it by defining ASIO_DYN_LINK.
-#  if defined(ASIO_DYN_LINK)
-// Export if this is our own source, otherwise import.
-#   if defined(ASIO_SOURCE)
-#    define ASIO_DECL __declspec(dllexport)
-#   else // defined(ASIO_SOURCE)
-#    define ASIO_DECL __declspec(dllimport)
-#   endif // defined(ASIO_SOURCE)
-#  endif // defined(ASIO_DYN_LINK)
-# endif // defined(_MSC_VER) || defined(__BORLANDC__) || defined(__CODEGEARC__)
-#endif // defined(ASIO_HEADER_ONLY)
-
-// If ASIO_DECL isn't defined yet define it now.
-#if !defined(ASIO_DECL)
-# define ASIO_DECL
-#endif // !defined(ASIO_DECL)
-
-// Microsoft Visual C++ detection.
-#if !defined(ASIO_MSVC)
-# if defined(ASIO_HAS_BOOST_CONFIG) && defined(BOOST_MSVC)
-#  define ASIO_MSVC BOOST_MSVC
-# elif defined(_MSC_VER) && !defined(__MWERKS__) && !defined(__EDG_VERSION__)
-#  define ASIO_MSVC _MSC_VER
-# endif // defined(ASIO_HAS_BOOST_CONFIG) && defined(BOOST_MSVC)
-#endif // defined(ASIO_MSVC)
-
-// Clang / libc++ detection.
-#if defined(__clang__)
-# if (__cplusplus >= 201103)
-#  if __has_include(<__config>)
-#   include <__config>
-#   if defined(_LIBCPP_VERSION)
-#    define ASIO_HAS_CLANG_LIBCXX 1
-#   endif // defined(_LIBCPP_VERSION)
-#  endif // __has_include(<__config>)
-# endif // (__cplusplus >= 201103)
-#endif // defined(__clang__)
-
-// Support move construction and assignment on compilers known to allow it.
-#if !defined(ASIO_HAS_MOVE)
-# if !defined(ASIO_DISABLE_MOVE)
-#  if defined(__clang__)
-#   if __has_feature(__cxx_rvalue_references__)
-#    define ASIO_HAS_MOVE 1
-#   endif // __has_feature(__cxx_rvalue_references__)
-#  endif // defined(__clang__)
-#  if defined(__GNUC__)
-#   if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
-#    if defined(__GXX_EXPERIMENTAL_CXX0X__)
-#     define ASIO_HAS_MOVE 1
-#    endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
-#   endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
-#  endif // defined(__GNUC__)
-#  if defined(ASIO_MSVC)
-#   if (_MSC_VER >= 1700)
-#    define ASIO_HAS_MOVE 1
-#   endif // (_MSC_VER >= 1700)
-#  endif // defined(ASIO_MSVC)
-# endif // !defined(ASIO_DISABLE_MOVE)
-#endif // !defined(ASIO_HAS_MOVE)
-
-// If ASIO_MOVE_CAST isn't defined, and move support is available, define
-// ASIO_MOVE_ARG and ASIO_MOVE_CAST to take advantage of rvalue
-// references and perfect forwarding.
-#if defined(ASIO_HAS_MOVE) && !defined(ASIO_MOVE_CAST)
-# define ASIO_MOVE_ARG(type) type&&
-# define ASIO_MOVE_CAST(type) static_cast<type&&>
-# define ASIO_MOVE_CAST2(type1, type2) static_cast<type1, type2&&>
-#endif // defined(ASIO_HAS_MOVE) && !defined(ASIO_MOVE_CAST)
-
-// If ASIO_MOVE_CAST still isn't defined, default to a C++03-compatible
-// implementation. Note that older g++ and MSVC versions don't like it when you
-// pass a non-member function through a const reference, so for most compilers
-// we'll play it safe and stick with the old approach of passing the handler by
-// value.
-#if !defined(ASIO_MOVE_CAST)
-# if defined(__GNUC__)
-#  if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 1)) || (__GNUC__ > 4)
-#   define ASIO_MOVE_ARG(type) const type&
-#  else // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 1)) || (__GNUC__ > 4)
-#   define ASIO_MOVE_ARG(type) type
-#  endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 1)) || (__GNUC__ > 4)
-# elif defined(ASIO_MSVC)
-#  if (_MSC_VER >= 1400)
-#   define ASIO_MOVE_ARG(type) const type&
-#  else // (_MSC_VER >= 1400)
-#   define ASIO_MOVE_ARG(type) type
-#  endif // (_MSC_VER >= 1400)
-# else
-#  define ASIO_MOVE_ARG(type) type
-# endif
-# define ASIO_MOVE_CAST(type) static_cast<const type&>
-# define ASIO_MOVE_CAST2(type1, type2) static_cast<const type1, type2&>
-#endif // !defined(ASIO_MOVE_CAST)
-
-// Support variadic templates on compilers known to allow it.
-#if !defined(ASIO_HAS_VARIADIC_TEMPLATES)
-# if !defined(ASIO_DISABLE_VARIADIC_TEMPLATES)
-#  if defined(__clang__)
-#   if __has_feature(__cxx_variadic_templates__)
-#    define ASIO_HAS_VARIADIC_TEMPLATES 1
-#   endif // __has_feature(__cxx_variadic_templates__)
-#  endif // defined(__clang__)
-#  if defined(__GNUC__)
-#   if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 4)
-#    if defined(__GXX_EXPERIMENTAL_CXX0X__)
-#     define ASIO_HAS_VARIADIC_TEMPLATES 1
-#    endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
-#   endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 4)
-#  endif // defined(__GNUC__)
-# endif // !defined(ASIO_DISABLE_VARIADIC_TEMPLATES)
-#endif // !defined(ASIO_HAS_VARIADIC_TEMPLATES)
-
-// Support constexpr on compilers known to allow it.
-#if !defined(ASIO_HAS_CONSTEXPR)
-# if !defined(ASIO_DISABLE_CONSTEXPR)
-#  if defined(__clang__)
-#   if __has_feature(__cxx_constexpr__)
-#    define ASIO_HAS_CONSTEXPR 1
-#   endif // __has_feature(__cxx_constexr__)
-#  endif // defined(__clang__)
-#  if defined(__GNUC__)
-#   if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4)
-#    if defined(__GXX_EXPERIMENTAL_CXX0X__)
-#     define ASIO_HAS_CONSTEXPR 1
-#    endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
-#   endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4)
-#  endif // defined(__GNUC__)
-# endif // !defined(ASIO_DISABLE_CONSTEXPR)
-#endif // !defined(ASIO_HAS_CONSTEXPR)
-#if !defined(ASIO_CONSTEXPR)
-# if defined(ASIO_HAS_CONSTEXPR)
-#  define ASIO_CONSTEXPR constexpr
-# else // defined(ASIO_HAS_CONSTEXPR)
-#  define ASIO_CONSTEXPR
-# endif // defined(ASIO_HAS_CONSTEXPR)
-#endif // !defined(ASIO_CONSTEXPR)
-
-// Standard library support for system errors.
-#if !defined(ASIO_HAS_STD_SYSTEM_ERROR)
-# if !defined(ASIO_DISABLE_STD_SYSTEM_ERROR)
-#  if defined(__clang__)
-#   if defined(ASIO_HAS_CLANG_LIBCXX)
-#    define ASIO_HAS_STD_SYSTEM_ERROR 1
-#   elif (__cplusplus >= 201103)
-#    if __has_include(<system_error>)
-#     define ASIO_HAS_STD_SYSTEM_ERROR 1
-#    endif // __has_include(<system_error>)
-#   endif // (__cplusplus >= 201103)
-#  endif // defined(__clang__)
-#  if defined(__GNUC__)
-#   if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4)
-#    if defined(__GXX_EXPERIMENTAL_CXX0X__)
-#     define ASIO_HAS_STD_SYSTEM_ERROR 1
-#    endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
-#   endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4)
-#  endif // defined(__GNUC__)
-#  if defined(ASIO_MSVC)
-#   if (_MSC_VER >= 1700)
-#    define ASIO_HAS_STD_SYSTEM_ERROR 1
-#   endif // (_MSC_VER >= 1700)
-#  endif // defined(ASIO_MSVC)
-# endif // !defined(ASIO_DISABLE_STD_SYSTEM_ERROR)
-#endif // !defined(ASIO_HAS_STD_SYSTEM_ERROR)
-
-// Compliant C++11 compilers put noexcept specifiers on error_category members.
-#if !defined(ASIO_ERROR_CATEGORY_NOEXCEPT)
-# if (BOOST_VERSION >= 105300)
-#  define ASIO_ERROR_CATEGORY_NOEXCEPT BOOST_NOEXCEPT
-# elif defined(__clang__)
-#  if __has_feature(__cxx_noexcept__)
-#   define ASIO_ERROR_CATEGORY_NOEXCEPT noexcept(true)
-#  endif // __has_feature(__cxx_noexcept__)
-# elif defined(__GNUC__)
-#  if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4)
-#   if defined(__GXX_EXPERIMENTAL_CXX0X__)
-#     define ASIO_ERROR_CATEGORY_NOEXCEPT noexcept(true)
-#   endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
-#  endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4)
-# endif // defined(__GNUC__)
-# if defined(ASIO_MSVC)
-#  if (_MSC_VER >= 1900)
-#   define ASIO_ERROR_CATEGORY_NOEXCEPT noexcept(true)
-#  endif // (_MSC_VER >= 1900)
-# endif // defined(ASIO_MSVC)
-# if !defined(ASIO_ERROR_CATEGORY_NOEXCEPT)
-#  define ASIO_ERROR_CATEGORY_NOEXCEPT
-# endif // !defined(ASIO_ERROR_CATEGORY_NOEXCEPT)
-#endif // !defined(ASIO_ERROR_CATEGORY_NOEXCEPT)
-
-// Standard library support for arrays.
-#if !defined(ASIO_HAS_STD_ARRAY)
-# if !defined(ASIO_DISABLE_STD_ARRAY)
-#  if defined(__clang__)
-#   if defined(ASIO_HAS_CLANG_LIBCXX)
-#    define ASIO_HAS_STD_ARRAY 1
-#   elif (__cplusplus >= 201103)
-#    if __has_include(<array>)
-#     define ASIO_HAS_STD_ARRAY 1
-#    endif // __has_include(<array>)
-#   endif // (__cplusplus >= 201103)
-#  endif // defined(__clang__)
-#  if defined(__GNUC__)
-#   if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 4)
-#    if defined(__GXX_EXPERIMENTAL_CXX0X__)
-#     define ASIO_HAS_STD_ARRAY 1
-#    endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
-#   endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 4)
-#  endif // defined(__GNUC__)
-#  if defined(ASIO_MSVC)
-#   if (_MSC_VER >= 1600)
-#    define ASIO_HAS_STD_ARRAY 1
-#   endif // (_MSC_VER >= 1600)
-#  endif // defined(ASIO_MSVC)
-# endif // !defined(ASIO_DISABLE_STD_ARRAY)
-#endif // !defined(ASIO_HAS_STD_ARRAY)
-
-// Standard library support for shared_ptr and weak_ptr.
-#if !defined(ASIO_HAS_STD_SHARED_PTR)
-# if !defined(ASIO_DISABLE_STD_SHARED_PTR)
-#  if defined(__clang__)
-#   if defined(ASIO_HAS_CLANG_LIBCXX)
-#    define ASIO_HAS_STD_SHARED_PTR 1
-#   elif (__cplusplus >= 201103)
-#    define ASIO_HAS_STD_SHARED_PTR 1
-#   endif // (__cplusplus >= 201103)
-#  endif // defined(__clang__)
-#  if defined(__GNUC__)
-#   if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 4)
-#    if defined(__GXX_EXPERIMENTAL_CXX0X__)
-#     define ASIO_HAS_STD_SHARED_PTR 1
-#    endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
-#   endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 4)
-#  endif // defined(__GNUC__)
-#  if defined(ASIO_MSVC)
-#   if (_MSC_VER >= 1600)
-#    define ASIO_HAS_STD_SHARED_PTR 1
-#   endif // (_MSC_VER >= 1600)
-#  endif // defined(ASIO_MSVC)
-# endif // !defined(ASIO_DISABLE_STD_SHARED_PTR)
-#endif // !defined(ASIO_HAS_STD_SHARED_PTR)
-
-// Standard library support for atomic operations.
-#if !defined(ASIO_HAS_STD_ATOMIC)
-# if !defined(ASIO_DISABLE_STD_ATOMIC)
-#  if defined(__clang__)
-#   if defined(ASIO_HAS_CLANG_LIBCXX)
-#    define ASIO_HAS_STD_ATOMIC 1
-#   elif (__cplusplus >= 201103)
-#    if __has_include(<atomic>)
-#     define ASIO_HAS_STD_ATOMIC 1
-#    endif // __has_include(<atomic>)
-#   endif // (__cplusplus >= 201103)
-#  endif // defined(__clang__)
-#  if defined(__GNUC__)
-#   if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
-#    if defined(__GXX_EXPERIMENTAL_CXX0X__)
-#     define ASIO_HAS_STD_ATOMIC 1
-#    endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
-#   endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
-#  endif // defined(__GNUC__)
-#  if defined(ASIO_MSVC)
-#   if (_MSC_VER >= 1700)
-#    define ASIO_HAS_STD_ATOMIC 1
-#   endif // (_MSC_VER >= 1700)
-#  endif // defined(ASIO_MSVC)
-# endif // !defined(ASIO_DISABLE_STD_ATOMIC)
-#endif // !defined(ASIO_HAS_STD_ATOMIC)
-
-// Standard library support for chrono. Some standard libraries (such as the
-// libstdc++ shipped with gcc 4.6) provide monotonic_clock as per early C++0x
-// drafts, rather than the eventually standardised name of steady_clock.
-#if !defined(ASIO_HAS_STD_CHRONO)
-# if !defined(ASIO_DISABLE_STD_CHRONO)
-#  if defined(__clang__)
-#   if defined(ASIO_HAS_CLANG_LIBCXX)
-#    define ASIO_HAS_STD_CHRONO 1
-#   elif (__cplusplus >= 201103)
-#    if __has_include(<chrono>)
-#     define ASIO_HAS_STD_CHRONO 1
-#    endif // __has_include(<chrono>)
-#   endif // (__cplusplus >= 201103)
-#  endif // defined(__clang__)
-#  if defined(__GNUC__)
-#   if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4)
-#    if defined(__GXX_EXPERIMENTAL_CXX0X__)
-#     define ASIO_HAS_STD_CHRONO 1
-#     if ((__GNUC__ == 4) && (__GNUC_MINOR__ == 6))
-#      define ASIO_HAS_STD_CHRONO_MONOTONIC_CLOCK 1
-#     endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ == 6))
-#    endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
-#   endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4)
-#  endif // defined(__GNUC__)
-#  if defined(ASIO_MSVC)
-#   if (_MSC_VER >= 1700)
-#    define ASIO_HAS_STD_CHRONO 1
-#   endif // (_MSC_VER >= 1700)
-#  endif // defined(ASIO_MSVC)
-# endif // !defined(ASIO_DISABLE_STD_CHRONO)
-#endif // !defined(ASIO_HAS_STD_CHRONO)
-
-// Boost support for chrono.
-#if !defined(ASIO_HAS_BOOST_CHRONO)
-# if !defined(ASIO_DISABLE_BOOST_CHRONO)
-#  if (BOOST_VERSION >= 104700)
-#   define ASIO_HAS_BOOST_CHRONO 1
-#  endif // (BOOST_VERSION >= 104700)
-# endif // !defined(ASIO_DISABLE_BOOST_CHRONO)
-#endif // !defined(ASIO_HAS_BOOST_CHRONO)
-
-// Boost support for the DateTime library.
-#if !defined(ASIO_HAS_BOOST_DATE_TIME)
-# if !defined(ASIO_DISABLE_BOOST_DATE_TIME)
-#  define ASIO_HAS_BOOST_DATE_TIME 1
-# endif // !defined(ASIO_DISABLE_BOOST_DATE_TIME)
-#endif // !defined(ASIO_HAS_BOOST_DATE_TIME)
-
-// Standard library support for addressof.
-#if !defined(ASIO_HAS_STD_ADDRESSOF)
-# if !defined(ASIO_DISABLE_STD_ADDRESSOF)
-#  if defined(__clang__)
-#   if defined(ASIO_HAS_CLANG_LIBCXX)
-#    define ASIO_HAS_STD_ADDRESSOF 1
-#   elif (__cplusplus >= 201103)
-#    define ASIO_HAS_STD_ADDRESSOF 1
-#   endif // (__cplusplus >= 201103)
-#  endif // defined(__clang__)
-#  if defined(__GNUC__)
-#   if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4)
-#    if defined(__GXX_EXPERIMENTAL_CXX0X__)
-#     define ASIO_HAS_STD_ADDRESSOF 1
-#    endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
-#   endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 6)) || (__GNUC__ > 4)
-#  endif // defined(__GNUC__)
-#  if defined(ASIO_MSVC)
-#   if (_MSC_VER >= 1700)
-#    define ASIO_HAS_STD_ADDRESSOF 1
-#   endif // (_MSC_VER >= 1700)
-#  endif // defined(ASIO_MSVC)
-# endif // !defined(ASIO_DISABLE_STD_ADDRESSOF)
-#endif // !defined(ASIO_HAS_STD_ADDRESSOF)
-
-// Standard library support for the function class.
-#if !defined(ASIO_HAS_STD_FUNCTION)
-# if !defined(ASIO_DISABLE_STD_FUNCTION)
-#  if defined(__clang__)
-#   if defined(ASIO_HAS_CLANG_LIBCXX)
-#    define ASIO_HAS_STD_FUNCTION 1
-#   elif (__cplusplus >= 201103)
-#    define ASIO_HAS_STD_FUNCTION 1
-#   endif // (__cplusplus >= 201103)
-#  endif // defined(__clang__)
-#  if defined(__GNUC__)
-#   if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
-#    if defined(__GXX_EXPERIMENTAL_CXX0X__)
-#     define ASIO_HAS_STD_FUNCTION 1
-#    endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
-#   endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
-#  endif // defined(__GNUC__)
-#  if defined(ASIO_MSVC)
-#   if (_MSC_VER >= 1700)
-#    define ASIO_HAS_STD_FUNCTION 1
-#   endif // (_MSC_VER >= 1700)
-#  endif // defined(ASIO_MSVC)
-# endif // !defined(ASIO_DISABLE_STD_FUNCTION)
-#endif // !defined(ASIO_HAS_STD_FUNCTION)
-
-// Standard library support for type traits.
-#if !defined(ASIO_HAS_STD_TYPE_TRAITS)
-# if !defined(ASIO_DISABLE_STD_TYPE_TRAITS)
-#  if defined(__clang__)
-#   if defined(ASIO_HAS_CLANG_LIBCXX)
-#    define ASIO_HAS_STD_TYPE_TRAITS 1
-#   elif (__cplusplus >= 201103)
-#    if __has_include(<type_traits>)
-#     define ASIO_HAS_STD_TYPE_TRAITS 1
-#    endif // __has_include(<type_traits>)
-#   endif // (__cplusplus >= 201103)
-#  endif // defined(__clang__)
-#  if defined(__GNUC__)
-#   if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
-#    if defined(__GXX_EXPERIMENTAL_CXX0X__)
-#     define ASIO_HAS_STD_TYPE_TRAITS 1
-#    endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
-#   endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
-#  endif // defined(__GNUC__)
-#  if defined(ASIO_MSVC)
-#   if (_MSC_VER >= 1700)
-#    define ASIO_HAS_STD_TYPE_TRAITS 1
-#   endif // (_MSC_VER >= 1700)
-#  endif // defined(ASIO_MSVC)
-# endif // !defined(ASIO_DISABLE_STD_TYPE_TRAITS)
-#endif // !defined(ASIO_HAS_STD_TYPE_TRAITS)
-
-// Standard library support for the cstdint header.
-#if !defined(ASIO_HAS_CSTDINT)
-# if !defined(ASIO_DISABLE_CSTDINT)
-#  if defined(__clang__)
-#   if defined(ASIO_HAS_CLANG_LIBCXX)
-#    define ASIO_HAS_CSTDINT 1
-#   elif (__cplusplus >= 201103)
-#    define ASIO_HAS_CSTDINT 1
-#   endif // (__cplusplus >= 201103)
-#  endif // defined(__clang__)
-#  if defined(__GNUC__)
-#   if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
-#    if defined(__GXX_EXPERIMENTAL_CXX0X__)
-#     define ASIO_HAS_CSTDINT 1
-#    endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
-#   endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
-#  endif // defined(__GNUC__)
-#  if defined(ASIO_MSVC)
-#   if (_MSC_VER >= 1700)
-#    define ASIO_HAS_CSTDINT 1
-#   endif // (_MSC_VER >= 1700)
-#  endif // defined(ASIO_MSVC)
-# endif // !defined(ASIO_DISABLE_CSTDINT)
-#endif // !defined(ASIO_HAS_CSTDINT)
-
-// Standard library support for the thread class.
-#if !defined(ASIO_HAS_STD_THREAD)
-# if !defined(ASIO_DISABLE_STD_THREAD)
-#  if defined(__clang__)
-#   if defined(ASIO_HAS_CLANG_LIBCXX)
-#    define ASIO_HAS_STD_THREAD 1
-#   elif (__cplusplus >= 201103)
-#    if __has_include(<thread>)
-#     define ASIO_HAS_STD_THREAD 1
-#    endif // __has_include(<thread>)
-#   endif // (__cplusplus >= 201103)
-#  endif // defined(__clang__)
-#  if defined(__GNUC__)
-#   if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4)
-#    if defined(__GXX_EXPERIMENTAL_CXX0X__)
-#     define ASIO_HAS_STD_THREAD 1
-#    endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
-#   endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4)
-#  endif // defined(__GNUC__)
-#  if defined(ASIO_MSVC)
-#   if (_MSC_VER >= 1700)
-#    define ASIO_HAS_STD_THREAD 1
-#   endif // (_MSC_VER >= 1700)
-#  endif // defined(ASIO_MSVC)
-# endif // !defined(ASIO_DISABLE_STD_THREAD)
-#endif // !defined(ASIO_HAS_STD_THREAD)
-
-// Standard library support for the mutex and condition variable classes.
-#if !defined(ASIO_HAS_STD_MUTEX_AND_CONDVAR)
-# if !defined(ASIO_DISABLE_STD_MUTEX_AND_CONDVAR)
-#  if defined(__clang__)
-#   if defined(ASIO_HAS_CLANG_LIBCXX)
-#    define ASIO_HAS_STD_MUTEX_AND_CONDVAR 1
-#   elif (__cplusplus >= 201103)
-#    if __has_include(<mutex>)
-#     define ASIO_HAS_STD_MUTEX_AND_CONDVAR 1
-#    endif // __has_include(<mutex>)
-#   endif // (__cplusplus >= 201103)
-#  endif // defined(__clang__)
-#  if defined(__GNUC__)
-#   if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4)
-#    if defined(__GXX_EXPERIMENTAL_CXX0X__)
-#     define ASIO_HAS_STD_MUTEX_AND_CONDVAR 1
-#    endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
-#   endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)) || (__GNUC__ > 4)
-#  endif // defined(__GNUC__)
-#  if defined(ASIO_MSVC)
-#   if (_MSC_VER >= 1700)
-#    define ASIO_HAS_STD_MUTEX_AND_CONDVAR 1
-#   endif // (_MSC_VER >= 1700)
-#  endif // defined(ASIO_MSVC)
-# endif // !defined(ASIO_DISABLE_STD_MUTEX_AND_CONDVAR)
-#endif // !defined(ASIO_HAS_STD_MUTEX_AND_CONDVAR)
-
-// WinRT target.
-#if !defined(ASIO_WINDOWS_RUNTIME)
-# if defined(__cplusplus_winrt)
-#  include <winapifamily.h>
-#  if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) \
-   && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
-#   define ASIO_WINDOWS_RUNTIME 1
-#  endif // WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
-         // && !WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
-# endif // defined(__cplusplus_winrt)
-#endif // !defined(ASIO_WINDOWS_RUNTIME)
-
-// Windows target. Excludes WinRT.
-#if !defined(ASIO_WINDOWS)
-# if !defined(ASIO_WINDOWS_RUNTIME)
-#  if defined(ASIO_HAS_BOOST_CONFIG) && defined(BOOST_WINDOWS)
-#   define ASIO_WINDOWS 1
-#  elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__)
-#   define ASIO_WINDOWS 1
-#  endif // defined(ASIO_HAS_BOOST_CONFIG) && defined(BOOST_WINDOWS)
-# endif // !defined(ASIO_WINDOWS_RUNTIME)
-#endif // !defined(ASIO_WINDOWS)
-
-// Windows: target OS version.
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-# if !defined(_WIN32_WINNT) && !defined(_WIN32_WINDOWS)
-#  if defined(_MSC_VER) || defined(__BORLANDC__)
-#   pragma message( \
-  "Please define _WIN32_WINNT or _WIN32_WINDOWS appropriately. For example:\n"\
-  "- add -D_WIN32_WINNT=0x0501 to the compiler command line; or\n"\
-  "- add _WIN32_WINNT=0x0501 to your project's Preprocessor Definitions.\n"\
-  "Assuming _WIN32_WINNT=0x0501 (i.e. Windows XP target).")
-#  else // defined(_MSC_VER) || defined(__BORLANDC__)
-#   warning Please define _WIN32_WINNT or _WIN32_WINDOWS appropriately.
-#   warning For example, add -D_WIN32_WINNT=0x0501 to the compiler command line.
-#   warning Assuming _WIN32_WINNT=0x0501 (i.e. Windows XP target).
-#  endif // defined(_MSC_VER) || defined(__BORLANDC__)
-#  define _WIN32_WINNT 0x0501
-# endif // !defined(_WIN32_WINNT) && !defined(_WIN32_WINDOWS)
-# if defined(_MSC_VER)
-#  if defined(_WIN32) && !defined(WIN32)
-#   if !defined(_WINSOCK2API_)
-#    define WIN32 // Needed for correct types in winsock2.h
-#   else // !defined(_WINSOCK2API_)
-#    error Please define the macro WIN32 in your compiler options
-#   endif // !defined(_WINSOCK2API_)
-#  endif // defined(_WIN32) && !defined(WIN32)
-# endif // defined(_MSC_VER)
-# if defined(__BORLANDC__)
-#  if defined(__WIN32__) && !defined(WIN32)
-#   if !defined(_WINSOCK2API_)
-#    define WIN32 // Needed for correct types in winsock2.h
-#   else // !defined(_WINSOCK2API_)
-#    error Please define the macro WIN32 in your compiler options
-#   endif // !defined(_WINSOCK2API_)
-#  endif // defined(__WIN32__) && !defined(WIN32)
-# endif // defined(__BORLANDC__)
-# if defined(__CYGWIN__)
-#  if !defined(__USE_W32_SOCKETS)
-#   error You must add -D__USE_W32_SOCKETS to your compiler options.
-#  endif // !defined(__USE_W32_SOCKETS)
-# endif // defined(__CYGWIN__)
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
-// Windows: minimise header inclusion.
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-# if !defined(ASIO_NO_WIN32_LEAN_AND_MEAN)
-#  if !defined(WIN32_LEAN_AND_MEAN)
-#   define WIN32_LEAN_AND_MEAN
-#  endif // !defined(WIN32_LEAN_AND_MEAN)
-# endif // !defined(ASIO_NO_WIN32_LEAN_AND_MEAN)
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
-// Windows: suppress definition of "min" and "max" macros.
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-# if !defined(ASIO_NO_NOMINMAX)
-#  if !defined(NOMINMAX)
-#   define NOMINMAX 1
-#  endif // !defined(NOMINMAX)
-# endif // !defined(ASIO_NO_NOMINMAX)
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
-// Windows: IO Completion Ports.
-#if !defined(ASIO_HAS_IOCP)
-# if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-#  if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0400)
-#   if !defined(UNDER_CE)
-#    if !defined(ASIO_DISABLE_IOCP)
-#     define ASIO_HAS_IOCP 1
-#    endif // !defined(ASIO_DISABLE_IOCP)
-#   endif // !defined(UNDER_CE)
-#  endif // defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0400)
-# endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-#endif // !defined(ASIO_HAS_IOCP)
-
-// On POSIX (and POSIX-like) platforms we need to include unistd.h in order to
-// get access to the various platform feature macros, e.g. to be able to test
-// for threads support.
-#if !defined(ASIO_HAS_UNISTD_H)
-# if !defined(ASIO_HAS_BOOST_CONFIG)
-#  if defined(unix) \
-   || defined(__unix) \
-   || defined(_XOPEN_SOURCE) \
-   || defined(_POSIX_SOURCE) \
-   || (defined(__MACH__) && defined(__APPLE__)) \
-   || defined(__FreeBSD__) \
-   || defined(__NetBSD__) \
-   || defined(__OpenBSD__) \
-   || defined(__linux__)
-#   define ASIO_HAS_UNISTD_H 1
-#  endif
-# endif // !defined(ASIO_HAS_BOOST_CONFIG)
-#endif // !defined(ASIO_HAS_UNISTD_H)
-#if defined(ASIO_HAS_UNISTD_H)
-# include <unistd.h>
-#endif // defined(ASIO_HAS_UNISTD_H)
-
-// Linux: epoll, eventfd and timerfd.
-#if defined(__linux__)
-# include <linux/version.h>
-# if !defined(ASIO_HAS_EPOLL)
-#  if !defined(ASIO_DISABLE_EPOLL)
-#   if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,45)
-#    define ASIO_HAS_EPOLL 1
-#   endif // LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,45)
-#  endif // !defined(ASIO_DISABLE_EPOLL)
-# endif // !defined(ASIO_HAS_EPOLL)
-# if !defined(ASIO_HAS_EVENTFD)
-#  if !defined(ASIO_DISABLE_EVENTFD)
-#   if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
-#    define ASIO_HAS_EVENTFD 1
-#   endif // LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,22)
-#  endif // !defined(ASIO_DISABLE_EVENTFD)
-# endif // !defined(ASIO_HAS_EVENTFD)
-# if !defined(ASIO_HAS_TIMERFD)
-#  if defined(ASIO_HAS_EPOLL)
-#   if (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 8)
-#    define ASIO_HAS_TIMERFD 1
-#   endif // (__GLIBC__ > 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 8)
-#  endif // defined(ASIO_HAS_EPOLL)
-# endif // !defined(ASIO_HAS_TIMERFD)
-#endif // defined(__linux__)
-
-// Mac OS X, FreeBSD, NetBSD, OpenBSD: kqueue.
-#if (defined(__MACH__) && defined(__APPLE__)) \
-  || defined(__FreeBSD__) \
-  || defined(__NetBSD__) \
-  || defined(__OpenBSD__)
-# if !defined(ASIO_HAS_KQUEUE)
-#  if !defined(ASIO_DISABLE_KQUEUE)
-#   define ASIO_HAS_KQUEUE 1
-#  endif // !defined(ASIO_DISABLE_KQUEUE)
-# endif // !defined(ASIO_HAS_KQUEUE)
-#endif // (defined(__MACH__) && defined(__APPLE__))
-       //   || defined(__FreeBSD__)
-       //   || defined(__NetBSD__)
-       //   || defined(__OpenBSD__)
-
-// Solaris: /dev/poll.
-#if defined(__sun)
-# if !defined(ASIO_HAS_DEV_POLL)
-#  if !defined(ASIO_DISABLE_DEV_POLL)
-#   define ASIO_HAS_DEV_POLL 1
-#  endif // !defined(ASIO_DISABLE_DEV_POLL)
-# endif // !defined(ASIO_HAS_DEV_POLL)
-#endif // defined(__sun)
-
-// Serial ports.
-#if !defined(ASIO_HAS_SERIAL_PORT)
-# if defined(ASIO_HAS_IOCP) \
-  || !defined(ASIO_WINDOWS) \
-  && !defined(ASIO_WINDOWS_RUNTIME) \
-  && !defined(__CYGWIN__)
-#  if !defined(__SYMBIAN32__)
-#   if !defined(ASIO_DISABLE_SERIAL_PORT)
-#    define ASIO_HAS_SERIAL_PORT 1
-#   endif // !defined(ASIO_DISABLE_SERIAL_PORT)
-#  endif // !defined(__SYMBIAN32__)
-# endif // defined(ASIO_HAS_IOCP)
-        //   || !defined(ASIO_WINDOWS)
-        //   && !defined(ASIO_WINDOWS_RUNTIME)
-        //   && !defined(__CYGWIN__)
-#endif // !defined(ASIO_HAS_SERIAL_PORT)
-
-// Windows: stream handles.
-#if !defined(ASIO_HAS_WINDOWS_STREAM_HANDLE)
-# if !defined(ASIO_DISABLE_WINDOWS_STREAM_HANDLE)
-#  if defined(ASIO_HAS_IOCP)
-#   define ASIO_HAS_WINDOWS_STREAM_HANDLE 1
-#  endif // defined(ASIO_HAS_IOCP)
-# endif // !defined(ASIO_DISABLE_WINDOWS_STREAM_HANDLE)
-#endif // !defined(ASIO_HAS_WINDOWS_STREAM_HANDLE)
-
-// Windows: random access handles.
-#if !defined(ASIO_HAS_WINDOWS_RANDOM_ACCESS_HANDLE)
-# if !defined(ASIO_DISABLE_WINDOWS_RANDOM_ACCESS_HANDLE)
-#  if defined(ASIO_HAS_IOCP)
-#   define ASIO_HAS_WINDOWS_RANDOM_ACCESS_HANDLE 1
-#  endif // defined(ASIO_HAS_IOCP)
-# endif // !defined(ASIO_DISABLE_WINDOWS_RANDOM_ACCESS_HANDLE)
-#endif // !defined(ASIO_HAS_WINDOWS_RANDOM_ACCESS_HANDLE)
-
-// Windows: object handles.
-#if !defined(ASIO_HAS_WINDOWS_OBJECT_HANDLE)
-# if !defined(ASIO_DISABLE_WINDOWS_OBJECT_HANDLE)
-#  if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-#   if !defined(UNDER_CE)
-#    define ASIO_HAS_WINDOWS_OBJECT_HANDLE 1
-#   endif // !defined(UNDER_CE)
-#  endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-# endif // !defined(ASIO_DISABLE_WINDOWS_OBJECT_HANDLE)
-#endif // !defined(ASIO_HAS_WINDOWS_OBJECT_HANDLE)
-
-// Windows: OVERLAPPED wrapper.
-#if !defined(ASIO_HAS_WINDOWS_OVERLAPPED_PTR)
-# if !defined(ASIO_DISABLE_WINDOWS_OVERLAPPED_PTR)
-#  if defined(ASIO_HAS_IOCP)
-#   define ASIO_HAS_WINDOWS_OVERLAPPED_PTR 1
-#  endif // defined(ASIO_HAS_IOCP)
-# endif // !defined(ASIO_DISABLE_WINDOWS_OVERLAPPED_PTR)
-#endif // !defined(ASIO_HAS_WINDOWS_OVERLAPPED_PTR)
-
-// POSIX: stream-oriented file descriptors.
-#if !defined(ASIO_HAS_POSIX_STREAM_DESCRIPTOR)
-# if !defined(ASIO_DISABLE_POSIX_STREAM_DESCRIPTOR)
-#  if !defined(ASIO_WINDOWS) \
-  && !defined(ASIO_WINDOWS_RUNTIME) \
-  && !defined(__CYGWIN__)
-#   define ASIO_HAS_POSIX_STREAM_DESCRIPTOR 1
-#  endif // !defined(ASIO_WINDOWS)
-         //   && !defined(ASIO_WINDOWS_RUNTIME)
-         //   && !defined(__CYGWIN__)
-# endif // !defined(ASIO_DISABLE_POSIX_STREAM_DESCRIPTOR)
-#endif // !defined(ASIO_HAS_POSIX_STREAM_DESCRIPTOR)
-
-// UNIX domain sockets.
-#if !defined(ASIO_HAS_LOCAL_SOCKETS)
-# if !defined(ASIO_DISABLE_LOCAL_SOCKETS)
-#  if !defined(ASIO_WINDOWS) \
-  && !defined(ASIO_WINDOWS_RUNTIME) \
-  && !defined(__CYGWIN__)
-#   define ASIO_HAS_LOCAL_SOCKETS 1
-#  endif // !defined(ASIO_WINDOWS)
-         //   && !defined(ASIO_WINDOWS_RUNTIME)
-         //   && !defined(__CYGWIN__)
-# endif // !defined(ASIO_DISABLE_LOCAL_SOCKETS)
-#endif // !defined(ASIO_HAS_LOCAL_SOCKETS)
-
-// Can use sigaction() instead of signal().
-#if !defined(ASIO_HAS_SIGACTION)
-# if !defined(ASIO_DISABLE_SIGACTION)
-#  if !defined(ASIO_WINDOWS) \
-  && !defined(ASIO_WINDOWS_RUNTIME) \
-  && !defined(__CYGWIN__)
-#   define ASIO_HAS_SIGACTION 1
-#  endif // !defined(ASIO_WINDOWS)
-         //   && !defined(ASIO_WINDOWS_RUNTIME)
-         //   && !defined(__CYGWIN__)
-# endif // !defined(ASIO_DISABLE_SIGACTION)
-#endif // !defined(ASIO_HAS_SIGACTION)
-
-// Can use signal().
-#if !defined(ASIO_HAS_SIGNAL)
-# if !defined(ASIO_DISABLE_SIGNAL)
-#  if !defined(UNDER_CE)
-#   define ASIO_HAS_SIGNAL 1
-#  endif // !defined(UNDER_CE)
-# endif // !defined(ASIO_DISABLE_SIGNAL)
-#endif // !defined(ASIO_HAS_SIGNAL)
-
-// Can use getaddrinfo() and getnameinfo().
-#if !defined(ASIO_HAS_GETADDRINFO)
-# if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-#  if defined(_WIN32_WINNT) && (_WIN32_WINNT >= 0x0501)
-#   define ASIO_HAS_GETADDRINFO 1
-#  elif defined(UNDER_CE)
-#   define ASIO_HAS_GETADDRINFO 1
-#  endif // defined(UNDER_CE)
-# elif !(defined(__MACH__) && defined(__APPLE__))
-#  define ASIO_HAS_GETADDRINFO 1
-# endif // !(defined(__MACH__) && defined(__APPLE__))
-#endif // !defined(ASIO_HAS_GETADDRINFO)
-
-// Whether standard iostreams are disabled.
-#if !defined(ASIO_NO_IOSTREAM)
-# if defined(ASIO_HAS_BOOST_CONFIG) && defined(BOOST_NO_IOSTREAM)
-#  define ASIO_NO_IOSTREAM 1
-# endif // !defined(BOOST_NO_IOSTREAM)
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-// Whether exception handling is disabled.
-#if !defined(ASIO_NO_EXCEPTIONS)
-# if defined(ASIO_HAS_BOOST_CONFIG) && defined(BOOST_NO_EXCEPTIONS)
-#  define ASIO_NO_EXCEPTIONS 1
-# endif // !defined(BOOST_NO_EXCEPTIONS)
-#endif // !defined(ASIO_NO_EXCEPTIONS)
-
-// Whether the typeid operator is supported.
-#if !defined(ASIO_NO_TYPEID)
-# if defined(ASIO_HAS_BOOST_CONFIG) && defined(BOOST_NO_TYPEID)
-#  define ASIO_NO_TYPEID 1
-# endif // !defined(BOOST_NO_TYPEID)
-#endif // !defined(ASIO_NO_TYPEID)
-
-// Threads.
-#if !defined(ASIO_HAS_THREADS)
-# if !defined(ASIO_DISABLE_THREADS)
-#  if defined(ASIO_HAS_BOOST_CONFIG) && defined(BOOST_HAS_THREADS)
-#   define ASIO_HAS_THREADS 1
-#  elif defined(_MSC_VER) && defined(_MT)
-#   define ASIO_HAS_THREADS 1
-#  elif defined(__BORLANDC__) && defined(__MT__)
-#   define ASIO_HAS_THREADS 1
-#  elif defined(_POSIX_THREADS)
-#   define ASIO_HAS_THREADS 1
-#  endif // defined(ASIO_HAS_BOOST_CONFIG) && defined(BOOST_HAS_THREADS)
-# endif // !defined(ASIO_DISABLE_THREADS)
-#endif // !defined(ASIO_HAS_THREADS)
-
-// POSIX threads.
-#if !defined(ASIO_HAS_PTHREADS)
-# if defined(ASIO_HAS_THREADS)
-#  if defined(ASIO_HAS_BOOST_CONFIG) && defined(BOOST_HAS_PTHREADS)
-#   define ASIO_HAS_PTHREADS 1
-#  elif defined(_POSIX_THREADS)
-#   define ASIO_HAS_PTHREADS 1
-#  endif // defined(ASIO_HAS_BOOST_CONFIG) && defined(BOOST_HAS_PTHREADS)
-# endif // defined(ASIO_HAS_THREADS)
-#endif // !defined(ASIO_HAS_PTHREADS)
-
-// Helper to prevent macro expansion.
-#define ASIO_PREVENT_MACRO_SUBSTITUTION
-
-// Helper to define in-class constants.
-#if !defined(ASIO_STATIC_CONSTANT)
-# if !defined(ASIO_DISABLE_BOOST_STATIC_CONSTANT)
-#  define ASIO_STATIC_CONSTANT(type, assignment) \
-    BOOST_STATIC_CONSTANT(type, assignment)
-# else // !defined(ASIO_DISABLE_BOOST_STATIC_CONSTANT)
-#  define ASIO_STATIC_CONSTANT(type, assignment) \
-    static const type assignment
-# endif // !defined(ASIO_DISABLE_BOOST_STATIC_CONSTANT)
-#endif // !defined(ASIO_STATIC_CONSTANT)
-
-// Boost array library.
-#if !defined(ASIO_HAS_BOOST_ARRAY)
-# if !defined(ASIO_DISABLE_BOOST_ARRAY)
-#  define ASIO_HAS_BOOST_ARRAY 1
-# endif // !defined(ASIO_DISABLE_BOOST_ARRAY)
-#endif // !defined(ASIO_HAS_BOOST_ARRAY)
-
-// Boost assert macro.
-#if !defined(ASIO_HAS_BOOST_ASSERT)
-# if !defined(ASIO_DISABLE_BOOST_ASSERT)
-#  define ASIO_HAS_BOOST_ASSERT 1
-# endif // !defined(ASIO_DISABLE_BOOST_ASSERT)
-#endif // !defined(ASIO_HAS_BOOST_ASSERT)
-
-// Boost limits header.
-#if !defined(ASIO_HAS_BOOST_LIMITS)
-# if !defined(ASIO_DISABLE_BOOST_LIMITS)
-#  define ASIO_HAS_BOOST_LIMITS 1
-# endif // !defined(ASIO_DISABLE_BOOST_LIMITS)
-#endif // !defined(ASIO_HAS_BOOST_LIMITS)
-
-// Boost throw_exception function.
-#if !defined(ASIO_HAS_BOOST_THROW_EXCEPTION)
-# if !defined(ASIO_DISABLE_BOOST_THROW_EXCEPTION)
-#  define ASIO_HAS_BOOST_THROW_EXCEPTION 1
-# endif // !defined(ASIO_DISABLE_BOOST_THROW_EXCEPTION)
-#endif // !defined(ASIO_HAS_BOOST_THROW_EXCEPTION)
-
-// Boost regex library.
-#if !defined(ASIO_HAS_BOOST_REGEX)
-# if !defined(ASIO_DISABLE_BOOST_REGEX)
-#  define ASIO_HAS_BOOST_REGEX 1
-# endif // !defined(ASIO_DISABLE_BOOST_REGEX)
-#endif // !defined(ASIO_HAS_BOOST_REGEX)
-
-// Boost bind function.
-#if !defined(ASIO_HAS_BOOST_BIND)
-# if !defined(ASIO_DISABLE_BOOST_BIND)
-#  define ASIO_HAS_BOOST_BIND 1
-# endif // !defined(ASIO_DISABLE_BOOST_BIND)
-#endif // !defined(ASIO_HAS_BOOST_BIND)
-
-// Boost's BOOST_WORKAROUND macro.
-#if !defined(ASIO_HAS_BOOST_WORKAROUND)
-# if !defined(ASIO_DISABLE_BOOST_WORKAROUND)
-#  define ASIO_HAS_BOOST_WORKAROUND 1
-# endif // !defined(ASIO_DISABLE_BOOST_WORKAROUND)
-#endif // !defined(ASIO_HAS_BOOST_WORKAROUND)
-
-// Microsoft Visual C++'s secure C runtime library.
-#if !defined(ASIO_HAS_SECURE_RTL)
-# if !defined(ASIO_DISABLE_SECURE_RTL)
-#  if defined(ASIO_MSVC) \
-    && (ASIO_MSVC >= 1400) \
-    && !defined(UNDER_CE)
-#   define ASIO_HAS_SECURE_RTL 1
-#  endif // defined(ASIO_MSVC)
-         // && (ASIO_MSVC >= 1400)
-         // && !defined(UNDER_CE)
-# endif // !defined(ASIO_DISABLE_SECURE_RTL)
-#endif // !defined(ASIO_HAS_SECURE_RTL)
-
-// Handler hooking. Disabled for ancient Borland C++ and gcc compilers.
-#if !defined(ASIO_HAS_HANDLER_HOOKS)
-# if !defined(ASIO_DISABLE_HANDLER_HOOKS)
-#  if defined(__GNUC__)
-#   if (__GNUC__ >= 3)
-#    define ASIO_HAS_HANDLER_HOOKS 1
-#   endif // (__GNUC__ >= 3)
-#  elif !defined(__BORLANDC__)
-#   define ASIO_HAS_HANDLER_HOOKS 1
-#  endif // !defined(__BORLANDC__)
-# endif // !defined(ASIO_DISABLE_HANDLER_HOOKS)
-#endif // !defined(ASIO_HAS_HANDLER_HOOKS)
-
-// Support for the __thread keyword extension.
-#if !defined(ASIO_DISABLE_THREAD_KEYWORD_EXTENSION)
-# if defined(__linux__)
-#  if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
-#   if ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)
-#    if !defined(__INTEL_COMPILER) && !defined(__ICL)
-#     define ASIO_HAS_THREAD_KEYWORD_EXTENSION 1
-#     define ASIO_THREAD_KEYWORD __thread
-#    elif defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 1100)
-#     define ASIO_HAS_THREAD_KEYWORD_EXTENSION 1
-#    endif // defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 1100)
-#   endif // ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)
-#  endif // defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
-# endif // defined(__linux__)
-# if defined(ASIO_MSVC) && defined(ASIO_WINDOWS_RUNTIME)
-#  if (_MSC_VER >= 1700)
-#   define ASIO_HAS_THREAD_KEYWORD_EXTENSION 1
-#   define ASIO_THREAD_KEYWORD __declspec(thread)
-#  endif // (_MSC_VER >= 1700)
-# endif // defined(ASIO_MSVC) && defined(ASIO_WINDOWS_RUNTIME)
-#endif // !defined(ASIO_DISABLE_THREAD_KEYWORD_EXTENSION)
-#if !defined(ASIO_THREAD_KEYWORD)
-# define ASIO_THREAD_KEYWORD __thread
-#endif // !defined(ASIO_THREAD_KEYWORD)
-
-// Support for POSIX ssize_t typedef.
-#if !defined(ASIO_DISABLE_SSIZE_T)
-# if defined(__linux__) \
-   || (defined(__MACH__) && defined(__APPLE__))
-#  define ASIO_HAS_SSIZE_T 1
-# endif // defined(__linux__)
-        //   || (defined(__MACH__) && defined(__APPLE__))
-#endif // !defined(ASIO_DISABLE_SSIZE_T)
-
-#endif // ASIO_DETAIL_CONFIG_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/consuming_buffers.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/consuming_buffers.hpp
deleted file mode 100644
index 37c9ffa..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/consuming_buffers.hpp
+++ /dev/null
@@ -1,292 +0,0 @@
-//
-// detail/consuming_buffers.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_CONSUMING_BUFFERS_HPP
-#define ASIO_DETAIL_CONSUMING_BUFFERS_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cstddef>
-#include <iterator>
-#include "asio/buffer.hpp"
-#include "asio/detail/limits.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-// A proxy iterator for a sub-range in a list of buffers.
-template <typename Buffer, typename Buffer_Iterator>
-class consuming_buffers_iterator
-{
-public:
-  /// The type used for the distance between two iterators.
-  typedef std::ptrdiff_t difference_type;
-
-  /// The type of the value pointed to by the iterator.
-  typedef Buffer value_type;
-
-  /// The type of the result of applying operator->() to the iterator.
-  typedef const Buffer* pointer;
-
-  /// The type of the result of applying operator*() to the iterator.
-  typedef const Buffer& reference;
-
-  /// The iterator category.
-  typedef std::forward_iterator_tag iterator_category;
-
-  // Default constructor creates an end iterator.
-  consuming_buffers_iterator()
-    : at_end_(true)
-  {
-  }
-
-  // Construct with a buffer for the first entry and an iterator
-  // range for the remaining entries.
-  consuming_buffers_iterator(bool at_end, const Buffer& first,
-      Buffer_Iterator begin_remainder, Buffer_Iterator end_remainder,
-      std::size_t max_size)
-    : at_end_(max_size > 0 ? at_end : true),
-      first_(buffer(first, max_size)),
-      begin_remainder_(begin_remainder),
-      end_remainder_(end_remainder),
-      offset_(0),
-      max_size_(max_size)
-  {
-  }
-
-  // Dereference an iterator.
-  const Buffer& operator*() const
-  {
-    return dereference();
-  }
-
-  // Dereference an iterator.
-  const Buffer* operator->() const
-  {
-    return &dereference();
-  }
-
-  // Increment operator (prefix).
-  consuming_buffers_iterator& operator++()
-  {
-    increment();
-    return *this;
-  }
-
-  // Increment operator (postfix).
-  consuming_buffers_iterator operator++(int)
-  {
-    consuming_buffers_iterator tmp(*this);
-    ++*this;
-    return tmp;
-  }
-
-  // Test two iterators for equality.
-  friend bool operator==(const consuming_buffers_iterator& a,
-      const consuming_buffers_iterator& b)
-  {
-    return a.equal(b);
-  }
-
-  // Test two iterators for inequality.
-  friend bool operator!=(const consuming_buffers_iterator& a,
-      const consuming_buffers_iterator& b)
-  {
-    return !a.equal(b);
-  }
-
-private:
-  void increment()
-  {
-    if (!at_end_)
-    {
-      if (begin_remainder_ == end_remainder_
-          || offset_ + buffer_size(first_) >= max_size_)
-      {
-        at_end_ = true;
-      }
-      else
-      {
-        offset_ += buffer_size(first_);
-        first_ = buffer(*begin_remainder_++, max_size_ - offset_);
-      }
-    }
-  }
-
-  bool equal(const consuming_buffers_iterator& other) const
-  {
-    if (at_end_ && other.at_end_)
-      return true;
-    return !at_end_ && !other.at_end_
-      && buffer_cast<const void*>(first_)
-        == buffer_cast<const void*>(other.first_)
-      && buffer_size(first_) == buffer_size(other.first_)
-      && begin_remainder_ == other.begin_remainder_
-      && end_remainder_ == other.end_remainder_;
-  }
-
-  const Buffer& dereference() const
-  {
-    return first_;
-  }
-
-  bool at_end_;
-  Buffer first_;
-  Buffer_Iterator begin_remainder_;
-  Buffer_Iterator end_remainder_;
-  std::size_t offset_;
-  std::size_t max_size_;
-};
-
-// A proxy for a sub-range in a list of buffers.
-template <typename Buffer, typename Buffers>
-class consuming_buffers
-{
-public:
-  // The type for each element in the list of buffers.
-  typedef Buffer value_type;
-
-  // A forward-only iterator type that may be used to read elements.
-  typedef consuming_buffers_iterator<Buffer, typename Buffers::const_iterator>
-    const_iterator;
-
-  // Construct to represent the entire list of buffers.
-  consuming_buffers(const Buffers& buffers)
-    : buffers_(buffers),
-      at_end_(buffers_.begin() == buffers_.end()),
-      begin_remainder_(buffers_.begin()),
-      max_size_((std::numeric_limits<std::size_t>::max)())
-  {
-    if (!at_end_)
-    {
-      first_ = *buffers_.begin();
-      ++begin_remainder_;
-    }
-  }
-
-  // Copy constructor.
-  consuming_buffers(const consuming_buffers& other)
-    : buffers_(other.buffers_),
-      at_end_(other.at_end_),
-      first_(other.first_),
-      begin_remainder_(buffers_.begin()),
-      max_size_(other.max_size_)
-  {
-    typename Buffers::const_iterator first = other.buffers_.begin();
-    typename Buffers::const_iterator second = other.begin_remainder_;
-    std::advance(begin_remainder_, std::distance(first, second));
-  }
-
-  // Assignment operator.
-  consuming_buffers& operator=(const consuming_buffers& other)
-  {
-    buffers_ = other.buffers_;
-    at_end_ = other.at_end_;
-    first_ = other.first_;
-    begin_remainder_ = buffers_.begin();
-    typename Buffers::const_iterator first = other.buffers_.begin();
-    typename Buffers::const_iterator second = other.begin_remainder_;
-    std::advance(begin_remainder_, std::distance(first, second));
-    max_size_ = other.max_size_;
-    return *this;
-  }
-
-  // Get a forward-only iterator to the first element.
-  const_iterator begin() const
-  {
-    return const_iterator(at_end_, first_,
-        begin_remainder_, buffers_.end(), max_size_);
-  }
-
-  // Get a forward-only iterator for one past the last element.
-  const_iterator end() const
-  {
-    return const_iterator();
-  }
-
-  // Set the maximum size for a single transfer.
-  void prepare(std::size_t max_size)
-  {
-    max_size_ = max_size;
-  }
-
-  // Consume the specified number of bytes from the buffers.
-  void consume(std::size_t size)
-  {
-    // Remove buffers from the start until the specified size is reached.
-    while (size > 0 && !at_end_)
-    {
-      if (buffer_size(first_) <= size)
-      {
-        size -= buffer_size(first_);
-        if (begin_remainder_ == buffers_.end())
-          at_end_ = true;
-        else
-          first_ = *begin_remainder_++;
-      }
-      else
-      {
-        first_ = first_ + size;
-        size = 0;
-      }
-    }
-
-    // Remove any more empty buffers at the start.
-    while (!at_end_ && buffer_size(first_) == 0)
-    {
-      if (begin_remainder_ == buffers_.end())
-        at_end_ = true;
-      else
-        first_ = *begin_remainder_++;
-    }
-  }
-
-private:
-  Buffers buffers_;
-  bool at_end_;
-  Buffer first_;
-  typename Buffers::const_iterator begin_remainder_;
-  std::size_t max_size_;
-};
-
-// Specialisation for null_buffers to ensure that the null_buffers type is
-// always passed through to the underlying read or write operation.
-template <typename Buffer>
-class consuming_buffers<Buffer, asio::null_buffers>
-  : public asio::null_buffers
-{
-public:
-  consuming_buffers(const asio::null_buffers&)
-  {
-    // No-op.
-  }
-
-  void prepare(std::size_t)
-  {
-    // No-op.
-  }
-
-  void consume(std::size_t)
-  {
-    // No-op.
-  }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_CONSUMING_BUFFERS_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/cstdint.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/cstdint.hpp
deleted file mode 100644
index e3ee84c..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/cstdint.hpp
+++ /dev/null
@@ -1,46 +0,0 @@
-//
-// detail/cstdint.hpp
-// ~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_CSTDINT_HPP
-#define ASIO_DETAIL_CSTDINT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_CSTDINT)
-# include <cstdint>
-#else // defined(ASIO_HAS_CSTDINT)
-# include <boost/cstdint.hpp>
-#endif // defined(ASIO_HAS_CSTDINT)
-
-namespace asio {
-
-#if defined(ASIO_HAS_CSTDINT)
-using std::int16_t;
-using std::uint16_t;
-using std::int32_t;
-using std::uint32_t;
-using std::int64_t;
-using std::uint64_t;
-#else // defined(ASIO_HAS_CSTDINT)
-using boost::int16_t;
-using boost::uint16_t;
-using boost::int32_t;
-using boost::uint32_t;
-using boost::int64_t;
-using boost::uint64_t;
-#endif // defined(ASIO_HAS_CSTDINT)
-
-} // namespace asio
-
-#endif // ASIO_DETAIL_CSTDINT_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/date_time_fwd.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/date_time_fwd.hpp
deleted file mode 100644
index 74e33a9..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/date_time_fwd.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-//
-// detail/date_time_fwd.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_DATE_TIME_FWD_HPP
-#define ASIO_DETAIL_DATE_TIME_FWD_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-namespace boost {
-namespace date_time {
-
-template<class T, class TimeSystem>
-class base_time;
-
-} // namespace date_time
-namespace posix_time {
-
-class ptime;
-
-} // namespace posix_time
-} // namespace boost
-
-#endif // ASIO_DETAIL_DATE_TIME_FWD_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/deadline_timer_service.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/deadline_timer_service.hpp
deleted file mode 100644
index ef1c9a9..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/deadline_timer_service.hpp
+++ /dev/null
@@ -1,227 +0,0 @@
-//
-// detail/deadline_timer_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_DEADLINE_TIMER_SERVICE_HPP
-#define ASIO_DETAIL_DEADLINE_TIMER_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cstddef>
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/timer_queue.hpp"
-#include "asio/detail/timer_scheduler.hpp"
-#include "asio/detail/wait_handler.hpp"
-#include "asio/detail/wait_op.hpp"
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-# include <chrono>
-# include <thread>
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Time_Traits>
-class deadline_timer_service
-{
-public:
-  // The time type.
-  typedef typename Time_Traits::time_type time_type;
-
-  // The duration type.
-  typedef typename Time_Traits::duration_type duration_type;
-
-  // The implementation type of the timer. This type is dependent on the
-  // underlying implementation of the timer service.
-  struct implementation_type
-    : private asio::detail::noncopyable
-  {
-    time_type expiry;
-    bool might_have_pending_waits;
-    typename timer_queue<Time_Traits>::per_timer_data timer_data;
-  };
-
-  // Constructor.
-  deadline_timer_service(asio::io_service& io_service)
-    : scheduler_(asio::use_service<timer_scheduler>(io_service))
-  {
-    scheduler_.init_task();
-    scheduler_.add_timer_queue(timer_queue_);
-  }
-
-  // Destructor.
-  ~deadline_timer_service()
-  {
-    scheduler_.remove_timer_queue(timer_queue_);
-  }
-
-  // Destroy all user-defined handler objects owned by the service.
-  void shutdown_service()
-  {
-  }
-
-  // Construct a new timer implementation.
-  void construct(implementation_type& impl)
-  {
-    impl.expiry = time_type();
-    impl.might_have_pending_waits = false;
-  }
-
-  // Destroy a timer implementation.
-  void destroy(implementation_type& impl)
-  {
-    asio::error_code ec;
-    cancel(impl, ec);
-  }
-
-  // Cancel any asynchronous wait operations associated with the timer.
-  std::size_t cancel(implementation_type& impl, asio::error_code& ec)
-  {
-    if (!impl.might_have_pending_waits)
-    {
-      ec = asio::error_code();
-      return 0;
-    }
-
-    ASIO_HANDLER_OPERATION(("deadline_timer", &impl, "cancel"));
-
-    std::size_t count = scheduler_.cancel_timer(timer_queue_, impl.timer_data);
-    impl.might_have_pending_waits = false;
-    ec = asio::error_code();
-    return count;
-  }
-
-  // Cancels one asynchronous wait operation associated with the timer.
-  std::size_t cancel_one(implementation_type& impl,
-      asio::error_code& ec)
-  {
-    if (!impl.might_have_pending_waits)
-    {
-      ec = asio::error_code();
-      return 0;
-    }
-
-    ASIO_HANDLER_OPERATION(("deadline_timer", &impl, "cancel_one"));
-
-    std::size_t count = scheduler_.cancel_timer(
-        timer_queue_, impl.timer_data, 1);
-    if (count == 0)
-      impl.might_have_pending_waits = false;
-    ec = asio::error_code();
-    return count;
-  }
-
-  // Get the expiry time for the timer as an absolute time.
-  time_type expires_at(const implementation_type& impl) const
-  {
-    return impl.expiry;
-  }
-
-  // Set the expiry time for the timer as an absolute time.
-  std::size_t expires_at(implementation_type& impl,
-      const time_type& expiry_time, asio::error_code& ec)
-  {
-    std::size_t count = cancel(impl, ec);
-    impl.expiry = expiry_time;
-    ec = asio::error_code();
-    return count;
-  }
-
-  // Get the expiry time for the timer relative to now.
-  duration_type expires_from_now(const implementation_type& impl) const
-  {
-    return Time_Traits::subtract(expires_at(impl), Time_Traits::now());
-  }
-
-  // Set the expiry time for the timer relative to now.
-  std::size_t expires_from_now(implementation_type& impl,
-      const duration_type& expiry_time, asio::error_code& ec)
-  {
-    return expires_at(impl,
-        Time_Traits::add(Time_Traits::now(), expiry_time), ec);
-  }
-
-  // Perform a blocking wait on the timer.
-  void wait(implementation_type& impl, asio::error_code& ec)
-  {
-    time_type now = Time_Traits::now();
-    ec = asio::error_code();
-    while (Time_Traits::less_than(now, impl.expiry) && !ec)
-    {
-      this->do_wait(Time_Traits::to_posix_duration(
-            Time_Traits::subtract(impl.expiry, now)), ec);
-      now = Time_Traits::now();
-    }
-  }
-
-  // Start an asynchronous wait on the timer.
-  template <typename Handler>
-  void async_wait(implementation_type& impl, Handler& handler)
-  {
-    // Allocate and construct an operation to wrap the handler.
-    typedef wait_handler<Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(handler);
-
-    impl.might_have_pending_waits = true;
-
-    ASIO_HANDLER_CREATION((p.p, "deadline_timer", &impl, "async_wait"));
-
-    scheduler_.schedule_timer(timer_queue_, impl.expiry, impl.timer_data, p.p);
-    p.v = p.p = 0;
-  }
-
-private:
-  // Helper function to wait given a duration type. The duration type should
-  // either be of type boost::posix_time::time_duration, or implement the
-  // required subset of its interface.
-  template <typename Duration>
-  void do_wait(const Duration& timeout, asio::error_code& ec)
-  {
-#if defined(ASIO_WINDOWS_RUNTIME)
-    std::this_thread::sleep_for(
-        std::chrono::seconds(timeout.total_seconds())
-        + std::chrono::microseconds(timeout.total_microseconds()));
-    ec = asio::error_code();
-#else // defined(ASIO_WINDOWS_RUNTIME)
-    ::timeval tv;
-    tv.tv_sec = timeout.total_seconds();
-    tv.tv_usec = timeout.total_microseconds() % 1000000;
-    socket_ops::select(0, 0, 0, 0, &tv, ec);
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-  }
-
-  // The queue of timers.
-  timer_queue<Time_Traits> timer_queue_;
-
-  // The object that schedules and executes timers. Usually a reactor.
-  timer_scheduler& scheduler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_DEADLINE_TIMER_SERVICE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/dependent_type.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/dependent_type.hpp
deleted file mode 100644
index abb4817..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/dependent_type.hpp
+++ /dev/null
@@ -1,36 +0,0 @@
-//
-// detail/dependent_type.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_DEPENDENT_TYPE_HPP
-#define ASIO_DETAIL_DEPENDENT_TYPE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename DependsOn, typename T>
-struct dependent_type
-{
-  typedef T type;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_DEPENDENT_TYPE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/descriptor_ops.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/descriptor_ops.hpp
deleted file mode 100644
index 5d26125..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/descriptor_ops.hpp
+++ /dev/null
@@ -1,117 +0,0 @@
-//
-// detail/descriptor_ops.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_DESCRIPTOR_OPS_HPP
-#define ASIO_DETAIL_DESCRIPTOR_OPS_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_WINDOWS) \
-  && !defined(ASIO_WINDOWS_RUNTIME) \
-  && !defined(__CYGWIN__)
-
-#include <cstddef>
-#include "asio/error_code.hpp"
-#include "asio/detail/socket_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-namespace descriptor_ops {
-
-// Descriptor state bits.
-enum
-{
-  // The user wants a non-blocking descriptor.
-  user_set_non_blocking = 1,
-
-  // The descriptor has been set non-blocking.
-  internal_non_blocking = 2,
-
-  // Helper "state" used to determine whether the descriptor is non-blocking.
-  non_blocking = user_set_non_blocking | internal_non_blocking,
-
-  // The descriptor may have been dup()-ed.
-  possible_dup = 4
-};
-
-typedef unsigned char state_type;
-
-template <typename ReturnType>
-inline ReturnType error_wrapper(ReturnType return_value,
-    asio::error_code& ec)
-{
-  ec = asio::error_code(errno,
-      asio::error::get_system_category());
-  return return_value;
-}
-
-ASIO_DECL int open(const char* path, int flags,
-    asio::error_code& ec);
-
-ASIO_DECL int close(int d, state_type& state,
-    asio::error_code& ec);
-
-ASIO_DECL bool set_user_non_blocking(int d,
-    state_type& state, bool value, asio::error_code& ec);
-
-ASIO_DECL bool set_internal_non_blocking(int d,
-    state_type& state, bool value, asio::error_code& ec);
-
-typedef iovec buf;
-
-ASIO_DECL std::size_t sync_read(int d, state_type state, buf* bufs,
-    std::size_t count, bool all_empty, asio::error_code& ec);
-
-ASIO_DECL bool non_blocking_read(int d, buf* bufs, std::size_t count,
-    asio::error_code& ec, std::size_t& bytes_transferred);
-
-ASIO_DECL std::size_t sync_write(int d, state_type state,
-    const buf* bufs, std::size_t count, bool all_empty,
-    asio::error_code& ec);
-
-ASIO_DECL bool non_blocking_write(int d,
-    const buf* bufs, std::size_t count,
-    asio::error_code& ec, std::size_t& bytes_transferred);
-
-ASIO_DECL int ioctl(int d, state_type& state, long cmd,
-    ioctl_arg_type* arg, asio::error_code& ec);
-
-ASIO_DECL int fcntl(int d, int cmd, asio::error_code& ec);
-
-ASIO_DECL int fcntl(int d, int cmd,
-    long arg, asio::error_code& ec);
-
-ASIO_DECL int poll_read(int d,
-    state_type state, asio::error_code& ec);
-
-ASIO_DECL int poll_write(int d,
-    state_type state, asio::error_code& ec);
-
-} // namespace descriptor_ops
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/descriptor_ops.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // !defined(ASIO_WINDOWS)
-       //   && !defined(ASIO_WINDOWS_RUNTIME)
-       //   && !defined(__CYGWIN__)
-
-#endif // ASIO_DETAIL_DESCRIPTOR_OPS_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/descriptor_read_op.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/descriptor_read_op.hpp
deleted file mode 100644
index 2cfdf57..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/descriptor_read_op.hpp
+++ /dev/null
@@ -1,119 +0,0 @@
-//
-// detail/descriptor_read_op.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_DESCRIPTOR_READ_OP_HPP
-#define ASIO_DETAIL_DESCRIPTOR_READ_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/descriptor_ops.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/reactor_op.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename MutableBufferSequence>
-class descriptor_read_op_base : public reactor_op
-{
-public:
-  descriptor_read_op_base(int descriptor,
-      const MutableBufferSequence& buffers, func_type complete_func)
-    : reactor_op(&descriptor_read_op_base::do_perform, complete_func),
-      descriptor_(descriptor),
-      buffers_(buffers)
-  {
-  }
-
-  static bool do_perform(reactor_op* base)
-  {
-    descriptor_read_op_base* o(static_cast<descriptor_read_op_base*>(base));
-
-    buffer_sequence_adapter<asio::mutable_buffer,
-        MutableBufferSequence> bufs(o->buffers_);
-
-    return descriptor_ops::non_blocking_read(o->descriptor_,
-        bufs.buffers(), bufs.count(), o->ec_, o->bytes_transferred_);
-  }
-
-private:
-  int descriptor_;
-  MutableBufferSequence buffers_;
-};
-
-template <typename MutableBufferSequence, typename Handler>
-class descriptor_read_op
-  : public descriptor_read_op_base<MutableBufferSequence>
-{
-public:
-  ASIO_DEFINE_HANDLER_PTR(descriptor_read_op);
-
-  descriptor_read_op(int descriptor,
-      const MutableBufferSequence& buffers, Handler& handler)
-    : descriptor_read_op_base<MutableBufferSequence>(
-        descriptor, buffers, &descriptor_read_op::do_complete),
-      handler_(ASIO_MOVE_CAST(Handler)(handler))
-  {
-  }
-
-  static void do_complete(io_service_impl* owner, operation* base,
-      const asio::error_code& /*ec*/,
-      std::size_t /*bytes_transferred*/)
-  {
-    // Take ownership of the handler object.
-    descriptor_read_op* o(static_cast<descriptor_read_op*>(base));
-    ptr p = { asio::detail::addressof(o->handler_), o, o };
-
-    ASIO_HANDLER_COMPLETION((o));
-
-    // Make a copy of the handler so that the memory can be deallocated before
-    // the upcall is made. Even if we're not about to make an upcall, a
-    // sub-object of the handler may be the true owner of the memory associated
-    // with the handler. Consequently, a local copy of the handler is required
-    // to ensure that any owning sub-object remains valid until after we have
-    // deallocated the memory here.
-    detail::binder2<Handler, asio::error_code, std::size_t>
-      handler(o->handler_, o->ec_, o->bytes_transferred_);
-    p.h = asio::detail::addressof(handler.handler_);
-    p.reset();
-
-    // Make the upcall if required.
-    if (owner)
-    {
-      fenced_block b(fenced_block::half);
-      ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
-      asio_handler_invoke_helpers::invoke(handler, handler.handler_);
-      ASIO_HANDLER_INVOCATION_END;
-    }
-  }
-
-private:
-  Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-
-#endif // ASIO_DETAIL_DESCRIPTOR_READ_OP_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/descriptor_write_op.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/descriptor_write_op.hpp
deleted file mode 100644
index 9f53e58..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/descriptor_write_op.hpp
+++ /dev/null
@@ -1,119 +0,0 @@
-//
-// detail/descriptor_write_op.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_DESCRIPTOR_WRITE_OP_HPP
-#define ASIO_DETAIL_DESCRIPTOR_WRITE_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/descriptor_ops.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/reactor_op.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename ConstBufferSequence>
-class descriptor_write_op_base : public reactor_op
-{
-public:
-  descriptor_write_op_base(int descriptor,
-      const ConstBufferSequence& buffers, func_type complete_func)
-    : reactor_op(&descriptor_write_op_base::do_perform, complete_func),
-      descriptor_(descriptor),
-      buffers_(buffers)
-  {
-  }
-
-  static bool do_perform(reactor_op* base)
-  {
-    descriptor_write_op_base* o(static_cast<descriptor_write_op_base*>(base));
-
-    buffer_sequence_adapter<asio::const_buffer,
-        ConstBufferSequence> bufs(o->buffers_);
-
-    return descriptor_ops::non_blocking_write(o->descriptor_,
-        bufs.buffers(), bufs.count(), o->ec_, o->bytes_transferred_);
-  }
-
-private:
-  int descriptor_;
-  ConstBufferSequence buffers_;
-};
-
-template <typename ConstBufferSequence, typename Handler>
-class descriptor_write_op
-  : public descriptor_write_op_base<ConstBufferSequence>
-{
-public:
-  ASIO_DEFINE_HANDLER_PTR(descriptor_write_op);
-
-  descriptor_write_op(int descriptor,
-      const ConstBufferSequence& buffers, Handler& handler)
-    : descriptor_write_op_base<ConstBufferSequence>(
-        descriptor, buffers, &descriptor_write_op::do_complete),
-      handler_(ASIO_MOVE_CAST(Handler)(handler))
-  {
-  }
-
-  static void do_complete(io_service_impl* owner, operation* base,
-      const asio::error_code& /*ec*/,
-      std::size_t /*bytes_transferred*/)
-  {
-    // Take ownership of the handler object.
-    descriptor_write_op* o(static_cast<descriptor_write_op*>(base));
-    ptr p = { asio::detail::addressof(o->handler_), o, o };
-
-    ASIO_HANDLER_COMPLETION((o));
-
-    // Make a copy of the handler so that the memory can be deallocated before
-    // the upcall is made. Even if we're not about to make an upcall, a
-    // sub-object of the handler may be the true owner of the memory associated
-    // with the handler. Consequently, a local copy of the handler is required
-    // to ensure that any owning sub-object remains valid until after we have
-    // deallocated the memory here.
-    detail::binder2<Handler, asio::error_code, std::size_t>
-      handler(o->handler_, o->ec_, o->bytes_transferred_);
-    p.h = asio::detail::addressof(handler.handler_);
-    p.reset();
-
-    // Make the upcall if required.
-    if (owner)
-    {
-      fenced_block b(fenced_block::half);
-      ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
-      asio_handler_invoke_helpers::invoke(handler, handler.handler_);
-      ASIO_HANDLER_INVOCATION_END;
-    }
-  }
-
-private:
-  Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-
-#endif // ASIO_DETAIL_DESCRIPTOR_WRITE_OP_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/dev_poll_reactor.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/dev_poll_reactor.hpp
deleted file mode 100644
index a91a615..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/dev_poll_reactor.hpp
+++ /dev/null
@@ -1,206 +0,0 @@
-//
-// detail/dev_poll_reactor.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_DEV_POLL_REACTOR_HPP
-#define ASIO_DETAIL_DEV_POLL_REACTOR_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_DEV_POLL)
-
-#include <cstddef>
-#include <vector>
-#include <sys/devpoll.h>
-#include "asio/detail/hash_map.hpp"
-#include "asio/detail/limits.hpp"
-#include "asio/detail/mutex.hpp"
-#include "asio/detail/op_queue.hpp"
-#include "asio/detail/reactor_op.hpp"
-#include "asio/detail/reactor_op_queue.hpp"
-#include "asio/detail/select_interrupter.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/timer_queue_base.hpp"
-#include "asio/detail/timer_queue_set.hpp"
-#include "asio/detail/wait_op.hpp"
-#include "asio/io_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class dev_poll_reactor
-  : public asio::detail::service_base<dev_poll_reactor>
-{
-public:
-  enum op_types { read_op = 0, write_op = 1,
-    connect_op = 1, except_op = 2, max_ops = 3 };
-
-  // Per-descriptor data.
-  struct per_descriptor_data
-  {
-  };
-
-  // Constructor.
-  ASIO_DECL dev_poll_reactor(asio::io_service& io_service);
-
-  // Destructor.
-  ASIO_DECL ~dev_poll_reactor();
-
-  // Destroy all user-defined handler objects owned by the service.
-  ASIO_DECL void shutdown_service();
-
-  // Recreate internal descriptors following a fork.
-  ASIO_DECL void fork_service(
-      asio::io_service::fork_event fork_ev);
-
-  // Initialise the task.
-  ASIO_DECL void init_task();
-
-  // Register a socket with the reactor. Returns 0 on success, system error
-  // code on failure.
-  ASIO_DECL int register_descriptor(socket_type, per_descriptor_data&);
-
-  // Register a descriptor with an associated single operation. Returns 0 on
-  // success, system error code on failure.
-  ASIO_DECL int register_internal_descriptor(
-      int op_type, socket_type descriptor,
-      per_descriptor_data& descriptor_data, reactor_op* op);
-
-  // Move descriptor registration from one descriptor_data object to another.
-  ASIO_DECL void move_descriptor(socket_type descriptor,
-      per_descriptor_data& target_descriptor_data,
-      per_descriptor_data& source_descriptor_data);
-
-  // Post a reactor operation for immediate completion.
-  void post_immediate_completion(reactor_op* op, bool is_continuation)
-  {
-    io_service_.post_immediate_completion(op, is_continuation);
-  }
-
-  // Start a new operation. The reactor operation will be performed when the
-  // given descriptor is flagged as ready, or an error has occurred.
-  ASIO_DECL void start_op(int op_type, socket_type descriptor,
-      per_descriptor_data&, reactor_op* op,
-      bool is_continuation, bool allow_speculative);
-
-  // Cancel all operations associated with the given descriptor. The
-  // handlers associated with the descriptor will be invoked with the
-  // operation_aborted error.
-  ASIO_DECL void cancel_ops(socket_type descriptor, per_descriptor_data&);
-
-  // Cancel any operations that are running against the descriptor and remove
-  // its registration from the reactor.
-  ASIO_DECL void deregister_descriptor(socket_type descriptor,
-      per_descriptor_data&, bool closing);
-
-  // Cancel any operations that are running against the descriptor and remove
-  // its registration from the reactor.
-  ASIO_DECL void deregister_internal_descriptor(
-      socket_type descriptor, per_descriptor_data&);
-
-  // Add a new timer queue to the reactor.
-  template <typename Time_Traits>
-  void add_timer_queue(timer_queue<Time_Traits>& queue);
-
-  // Remove a timer queue from the reactor.
-  template <typename Time_Traits>
-  void remove_timer_queue(timer_queue<Time_Traits>& queue);
-
-  // Schedule a new operation in the given timer queue to expire at the
-  // specified absolute time.
-  template <typename Time_Traits>
-  void schedule_timer(timer_queue<Time_Traits>& queue,
-      const typename Time_Traits::time_type& time,
-      typename timer_queue<Time_Traits>::per_timer_data& timer, wait_op* op);
-
-  // Cancel the timer operations associated with the given token. Returns the
-  // number of operations that have been posted or dispatched.
-  template <typename Time_Traits>
-  std::size_t cancel_timer(timer_queue<Time_Traits>& queue,
-      typename timer_queue<Time_Traits>::per_timer_data& timer,
-      std::size_t max_cancelled = (std::numeric_limits<std::size_t>::max)());
-
-  // Run /dev/poll once until interrupted or events are ready to be dispatched.
-  ASIO_DECL void run(bool block, op_queue<operation>& ops);
-
-  // Interrupt the select loop.
-  ASIO_DECL void interrupt();
-
-private:
-  // Create the /dev/poll file descriptor. Throws an exception if the descriptor
-  // cannot be created.
-  ASIO_DECL static int do_dev_poll_create();
-
-  // Helper function to add a new timer queue.
-  ASIO_DECL void do_add_timer_queue(timer_queue_base& queue);
-
-  // Helper function to remove a timer queue.
-  ASIO_DECL void do_remove_timer_queue(timer_queue_base& queue);
-
-  // Get the timeout value for the /dev/poll DP_POLL operation. The timeout
-  // value is returned as a number of milliseconds. A return value of -1
-  // indicates that the poll should block indefinitely.
-  ASIO_DECL int get_timeout();
-
-  // Cancel all operations associated with the given descriptor. The do_cancel
-  // function of the handler objects will be invoked. This function does not
-  // acquire the dev_poll_reactor's mutex.
-  ASIO_DECL void cancel_ops_unlocked(socket_type descriptor,
-      const asio::error_code& ec);
-
-  // Add a pending event entry for the given descriptor.
-  ASIO_DECL ::pollfd& add_pending_event_change(int descriptor);
-
-  // The io_service implementation used to post completions.
-  io_service_impl& io_service_;
-
-  // Mutex to protect access to internal data.
-  asio::detail::mutex mutex_;
-
-  // The /dev/poll file descriptor.
-  int dev_poll_fd_;
-
-  // Vector of /dev/poll events waiting to be written to the descriptor.
-  std::vector< ::pollfd> pending_event_changes_;
-
-  // Hash map to associate a descriptor with a pending event change index.
-  hash_map<int, std::size_t> pending_event_change_index_;
-
-  // The interrupter is used to break a blocking DP_POLL operation.
-  select_interrupter interrupter_;
-
-  // The queues of read, write and except operations.
-  reactor_op_queue<socket_type> op_queue_[max_ops];
-
-  // The timer queues.
-  timer_queue_set timer_queues_;
-
-  // Whether the service has been shut down.
-  bool shutdown_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/detail/impl/dev_poll_reactor.hpp"
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/dev_poll_reactor.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_HAS_DEV_POLL)
-
-#endif // ASIO_DETAIL_DEV_POLL_REACTOR_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/epoll_reactor.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/epoll_reactor.hpp
deleted file mode 100644
index 4714661..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/epoll_reactor.hpp
+++ /dev/null
@@ -1,242 +0,0 @@
-//
-// detail/epoll_reactor.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_EPOLL_REACTOR_HPP
-#define ASIO_DETAIL_EPOLL_REACTOR_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_EPOLL)
-
-#include "asio/io_service.hpp"
-#include "asio/detail/atomic_count.hpp"
-#include "asio/detail/limits.hpp"
-#include "asio/detail/mutex.hpp"
-#include "asio/detail/object_pool.hpp"
-#include "asio/detail/op_queue.hpp"
-#include "asio/detail/reactor_op.hpp"
-#include "asio/detail/select_interrupter.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/timer_queue_base.hpp"
-#include "asio/detail/timer_queue_set.hpp"
-#include "asio/detail/wait_op.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class epoll_reactor
-  : public asio::detail::service_base<epoll_reactor>
-{
-public:
-  enum op_types { read_op = 0, write_op = 1,
-    connect_op = 1, except_op = 2, max_ops = 3 };
-
-  // Per-descriptor queues.
-  class descriptor_state : operation
-  {
-    friend class epoll_reactor;
-    friend class object_pool_access;
-
-    descriptor_state* next_;
-    descriptor_state* prev_;
-
-    mutex mutex_;
-    epoll_reactor* reactor_;
-    int descriptor_;
-    uint32_t registered_events_;
-    op_queue<reactor_op> op_queue_[max_ops];
-    bool shutdown_;
-
-    ASIO_DECL descriptor_state();
-    void set_ready_events(uint32_t events) { task_result_ = events; }
-    ASIO_DECL operation* perform_io(uint32_t events);
-    ASIO_DECL static void do_complete(
-        io_service_impl* owner, operation* base,
-        const asio::error_code& ec, std::size_t bytes_transferred);
-  };
-
-  // Per-descriptor data.
-  typedef descriptor_state* per_descriptor_data;
-
-  // Constructor.
-  ASIO_DECL epoll_reactor(asio::io_service& io_service);
-
-  // Destructor.
-  ASIO_DECL ~epoll_reactor();
-
-  // Destroy all user-defined handler objects owned by the service.
-  ASIO_DECL void shutdown_service();
-
-  // Recreate internal descriptors following a fork.
-  ASIO_DECL void fork_service(
-      asio::io_service::fork_event fork_ev);
-
-  // Initialise the task.
-  ASIO_DECL void init_task();
-
-  // Register a socket with the reactor. Returns 0 on success, system error
-  // code on failure.
-  ASIO_DECL int register_descriptor(socket_type descriptor,
-      per_descriptor_data& descriptor_data);
-
-  // Register a descriptor with an associated single operation. Returns 0 on
-  // success, system error code on failure.
-  ASIO_DECL int register_internal_descriptor(
-      int op_type, socket_type descriptor,
-      per_descriptor_data& descriptor_data, reactor_op* op);
-
-  // Move descriptor registration from one descriptor_data object to another.
-  ASIO_DECL void move_descriptor(socket_type descriptor,
-      per_descriptor_data& target_descriptor_data,
-      per_descriptor_data& source_descriptor_data);
-
-  // Post a reactor operation for immediate completion.
-  void post_immediate_completion(reactor_op* op, bool is_continuation)
-  {
-    io_service_.post_immediate_completion(op, is_continuation);
-  }
-
-  // Start a new operation. The reactor operation will be performed when the
-  // given descriptor is flagged as ready, or an error has occurred.
-  ASIO_DECL void start_op(int op_type, socket_type descriptor,
-      per_descriptor_data& descriptor_data, reactor_op* op,
-      bool is_continuation, bool allow_speculative);
-
-  // Cancel all operations associated with the given descriptor. The
-  // handlers associated with the descriptor will be invoked with the
-  // operation_aborted error.
-  ASIO_DECL void cancel_ops(socket_type descriptor,
-      per_descriptor_data& descriptor_data);
-
-  // Cancel any operations that are running against the descriptor and remove
-  // its registration from the reactor.
-  ASIO_DECL void deregister_descriptor(socket_type descriptor,
-      per_descriptor_data& descriptor_data, bool closing);
-
-  // Remote the descriptor's registration from the reactor.
-  ASIO_DECL void deregister_internal_descriptor(
-      socket_type descriptor, per_descriptor_data& descriptor_data);
-
-  // Add a new timer queue to the reactor.
-  template <typename Time_Traits>
-  void add_timer_queue(timer_queue<Time_Traits>& timer_queue);
-
-  // Remove a timer queue from the reactor.
-  template <typename Time_Traits>
-  void remove_timer_queue(timer_queue<Time_Traits>& timer_queue);
-
-  // Schedule a new operation in the given timer queue to expire at the
-  // specified absolute time.
-  template <typename Time_Traits>
-  void schedule_timer(timer_queue<Time_Traits>& queue,
-      const typename Time_Traits::time_type& time,
-      typename timer_queue<Time_Traits>::per_timer_data& timer, wait_op* op);
-
-  // Cancel the timer operations associated with the given token. Returns the
-  // number of operations that have been posted or dispatched.
-  template <typename Time_Traits>
-  std::size_t cancel_timer(timer_queue<Time_Traits>& queue,
-      typename timer_queue<Time_Traits>::per_timer_data& timer,
-      std::size_t max_cancelled = (std::numeric_limits<std::size_t>::max)());
-
-  // Run epoll once until interrupted or events are ready to be dispatched.
-  ASIO_DECL void run(bool block, op_queue<operation>& ops);
-
-  // Interrupt the select loop.
-  ASIO_DECL void interrupt();
-
-private:
-  // The hint to pass to epoll_create to size its data structures.
-  enum { epoll_size = 20000 };
-
-  // Create the epoll file descriptor. Throws an exception if the descriptor
-  // cannot be created.
-  ASIO_DECL static int do_epoll_create();
-
-  // Create the timerfd file descriptor. Does not throw.
-  ASIO_DECL static int do_timerfd_create();
-
-  // Allocate a new descriptor state object.
-  ASIO_DECL descriptor_state* allocate_descriptor_state();
-
-  // Free an existing descriptor state object.
-  ASIO_DECL void free_descriptor_state(descriptor_state* s);
-
-  // Helper function to add a new timer queue.
-  ASIO_DECL void do_add_timer_queue(timer_queue_base& queue);
-
-  // Helper function to remove a timer queue.
-  ASIO_DECL void do_remove_timer_queue(timer_queue_base& queue);
-
-  // Called to recalculate and update the timeout.
-  ASIO_DECL void update_timeout();
-
-  // Get the timeout value for the epoll_wait call. The timeout value is
-  // returned as a number of milliseconds. A return value of -1 indicates
-  // that epoll_wait should block indefinitely.
-  ASIO_DECL int get_timeout();
-
-#if defined(ASIO_HAS_TIMERFD)
-  // Get the timeout value for the timer descriptor. The return value is the
-  // flag argument to be used when calling timerfd_settime.
-  ASIO_DECL int get_timeout(itimerspec& ts);
-#endif // defined(ASIO_HAS_TIMERFD)
-
-  // The io_service implementation used to post completions.
-  io_service_impl& io_service_;
-
-  // Mutex to protect access to internal data.
-  mutex mutex_;
-
-  // The interrupter is used to break a blocking epoll_wait call.
-  select_interrupter interrupter_;
-
-  // The epoll file descriptor.
-  int epoll_fd_;
-
-  // The timer file descriptor.
-  int timer_fd_;
-
-  // The timer queues.
-  timer_queue_set timer_queues_;
-
-  // Whether the service has been shut down.
-  bool shutdown_;
-
-  // Mutex to protect access to the registered descriptors.
-  mutex registered_descriptors_mutex_;
-
-  // Keep track of all registered descriptors.
-  object_pool<descriptor_state> registered_descriptors_;
-
-  // Helper class to do post-perform_io cleanup.
-  struct perform_io_cleanup_on_block_exit;
-  friend struct perform_io_cleanup_on_block_exit;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/detail/impl/epoll_reactor.hpp"
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/epoll_reactor.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_HAS_EPOLL)
-
-#endif // ASIO_DETAIL_EPOLL_REACTOR_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/event.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/event.hpp
deleted file mode 100644
index 2f6934c..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/event.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-//
-// detail/event.hpp
-// ~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_EVENT_HPP
-#define ASIO_DETAIL_EVENT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_HAS_THREADS)
-# include "asio/detail/null_event.hpp"
-#elif defined(ASIO_WINDOWS)
-# include "asio/detail/win_event.hpp"
-#elif defined(ASIO_HAS_PTHREADS)
-# include "asio/detail/posix_event.hpp"
-#elif defined(ASIO_HAS_STD_MUTEX_AND_CONDVAR)
-# include "asio/detail/std_event.hpp"
-#else
-# error Only Windows, POSIX and std::condition_variable are supported!
-#endif
-
-namespace asio {
-namespace detail {
-
-#if !defined(ASIO_HAS_THREADS)
-typedef null_event event;
-#elif defined(ASIO_WINDOWS)
-typedef win_event event;
-#elif defined(ASIO_HAS_PTHREADS)
-typedef posix_event event;
-#elif defined(ASIO_HAS_STD_MUTEX_AND_CONDVAR)
-typedef std_event event;
-#endif
-
-} // namespace detail
-} // namespace asio
-
-#endif // ASIO_DETAIL_EVENT_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/eventfd_select_interrupter.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/eventfd_select_interrupter.hpp
deleted file mode 100644
index daa4389..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/eventfd_select_interrupter.hpp
+++ /dev/null
@@ -1,83 +0,0 @@
-//
-// detail/eventfd_select_interrupter.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2008 Roelof Naude (roelof.naude at gmail dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_EVENTFD_SELECT_INTERRUPTER_HPP
-#define ASIO_DETAIL_EVENTFD_SELECT_INTERRUPTER_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_EVENTFD)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class eventfd_select_interrupter
-{
-public:
-  // Constructor.
-  ASIO_DECL eventfd_select_interrupter();
-
-  // Destructor.
-  ASIO_DECL ~eventfd_select_interrupter();
-
-  // Recreate the interrupter's descriptors. Used after a fork.
-  ASIO_DECL void recreate();
-
-  // Interrupt the select call.
-  ASIO_DECL void interrupt();
-
-  // Reset the select interrupt. Returns true if the call was interrupted.
-  ASIO_DECL bool reset();
-
-  // Get the read descriptor to be passed to select.
-  int read_descriptor() const
-  {
-    return read_descriptor_;
-  }
-
-private:
-  // Open the descriptors. Throws on error.
-  ASIO_DECL void open_descriptors();
-
-  // Close the descriptors.
-  ASIO_DECL void close_descriptors();
-
-  // The read end of a connection used to interrupt the select call. This file
-  // descriptor is passed to select such that when it is time to stop, a single
-  // 64bit value will be written on the other end of the connection and this
-  // descriptor will become readable.
-  int read_descriptor_;
-
-  // The write end of a connection used to interrupt the select call. A single
-  // 64bit non-zero value may be written to this to wake up the select which is
-  // waiting for the other end to become readable. This descriptor will only
-  // differ from the read descriptor when a pipe is used.
-  int write_descriptor_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/eventfd_select_interrupter.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_HAS_EVENTFD)
-
-#endif // ASIO_DETAIL_EVENTFD_SELECT_INTERRUPTER_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/fd_set_adapter.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/fd_set_adapter.hpp
deleted file mode 100644
index 661f145..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/fd_set_adapter.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-//
-// detail/fd_set_adapter.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_FD_SET_ADAPTER_HPP
-#define ASIO_DETAIL_FD_SET_ADAPTER_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_WINDOWS_RUNTIME)
-
-#include "asio/detail/posix_fd_set_adapter.hpp"
-#include "asio/detail/win_fd_set_adapter.hpp"
-
-namespace asio {
-namespace detail {
-
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-typedef win_fd_set_adapter fd_set_adapter;
-#else
-typedef posix_fd_set_adapter fd_set_adapter;
-#endif
-
-} // namespace detail
-} // namespace asio
-
-#endif // !defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_FD_SET_ADAPTER_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/fenced_block.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/fenced_block.hpp
deleted file mode 100644
index 6b5a60e..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/fenced_block.hpp
+++ /dev/null
@@ -1,76 +0,0 @@
-//
-// detail/fenced_block.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_FENCED_BLOCK_HPP
-#define ASIO_DETAIL_FENCED_BLOCK_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_HAS_THREADS) \
-  || defined(ASIO_DISABLE_FENCED_BLOCK)
-# include "asio/detail/null_fenced_block.hpp"
-#elif defined(__MACH__) && defined(__APPLE__)
-# include "asio/detail/macos_fenced_block.hpp"
-#elif defined(__sun)
-# include "asio/detail/solaris_fenced_block.hpp"
-#elif defined(__GNUC__) && defined(__arm__) \
-  && !defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4)
-# include "asio/detail/gcc_arm_fenced_block.hpp"
-#elif defined(__GNUC__) && (defined(__hppa) || defined(__hppa__))
-# include "asio/detail/gcc_hppa_fenced_block.hpp"
-#elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
-# include "asio/detail/gcc_x86_fenced_block.hpp"
-#elif defined(__GNUC__) \
-  && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)) \
-  && !defined(__INTEL_COMPILER) && !defined(__ICL) \
-  && !defined(__ICC) && !defined(__ECC) && !defined(__PATHSCALE__)
-# include "asio/detail/gcc_sync_fenced_block.hpp"
-#elif defined(ASIO_WINDOWS) && !defined(UNDER_CE)
-# include "asio/detail/win_fenced_block.hpp"
-#else
-# include "asio/detail/null_fenced_block.hpp"
-#endif
-
-namespace asio {
-namespace detail {
-
-#if !defined(ASIO_HAS_THREADS) \
-  || defined(ASIO_DISABLE_FENCED_BLOCK)
-typedef null_fenced_block fenced_block;
-#elif defined(__MACH__) && defined(__APPLE__)
-typedef macos_fenced_block fenced_block;
-#elif defined(__sun)
-typedef solaris_fenced_block fenced_block;
-#elif defined(__GNUC__) && defined(__arm__) \
-  && !defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4)
-typedef gcc_arm_fenced_block fenced_block;
-#elif defined(__GNUC__) && (defined(__hppa) || defined(__hppa__))
-typedef gcc_hppa_fenced_block fenced_block;
-#elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
-typedef gcc_x86_fenced_block fenced_block;
-#elif defined(__GNUC__) \
-  && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)) \
-  && !defined(__INTEL_COMPILER) && !defined(__ICL) \
-  && !defined(__ICC) && !defined(__ECC) && !defined(__PATHSCALE__)
-typedef gcc_sync_fenced_block fenced_block;
-#elif defined(ASIO_WINDOWS) && !defined(UNDER_CE)
-typedef win_fenced_block fenced_block;
-#else
-typedef null_fenced_block fenced_block;
-#endif
-
-} // namespace detail
-} // namespace asio
-
-#endif // ASIO_DETAIL_FENCED_BLOCK_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/function.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/function.hpp
deleted file mode 100644
index 4b44bfb..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/function.hpp
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// detail/function.hpp
-// ~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_FUNCTION_HPP
-#define ASIO_DETAIL_FUNCTION_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_STD_FUNCTION)
-# include <functional>
-#else // defined(ASIO_HAS_STD_FUNCTION)
-# include <boost/function.hpp>
-#endif // defined(ASIO_HAS_STD_FUNCTION)
-
-namespace asio {
-namespace detail {
-
-#if defined(ASIO_HAS_STD_FUNCTION)
-using std::function;
-#else // defined(ASIO_HAS_STD_FUNCTION)
-using boost::function;
-#endif // defined(ASIO_HAS_STD_FUNCTION)
-
-} // namespace detail
-} // namespace asio
-
-#endif // ASIO_DETAIL_FUNCTION_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/gcc_arm_fenced_block.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/gcc_arm_fenced_block.hpp
deleted file mode 100644
index b7fecb4..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/gcc_arm_fenced_block.hpp
+++ /dev/null
@@ -1,89 +0,0 @@
-//
-// detail/gcc_arm_fenced_block.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_GCC_ARM_FENCED_BLOCK_HPP
-#define ASIO_DETAIL_GCC_ARM_FENCED_BLOCK_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(__GNUC__) && defined(__arm__)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class gcc_arm_fenced_block
-  : private noncopyable
-{
-public:
-  enum half_t { half };
-  enum full_t { full };
-
-  // Constructor for a half fenced block.
-  explicit gcc_arm_fenced_block(half_t)
-  {
-  }
-
-  // Constructor for a full fenced block.
-  explicit gcc_arm_fenced_block(full_t)
-  {
-    barrier();
-  }
-
-  // Destructor.
-  ~gcc_arm_fenced_block()
-  {
-    barrier();
-  }
-
-private:
-  static void barrier()
-  {
-#if defined(__ARM_ARCH_4__) \
-    || defined(__ARM_ARCH_4T__) \
-    || defined(__ARM_ARCH_5__) \
-    || defined(__ARM_ARCH_5E__) \
-    || defined(__ARM_ARCH_5T__) \
-    || defined(__ARM_ARCH_5TE__) \
-    || defined(__ARM_ARCH_5TEJ__) \
-    || defined(__ARM_ARCH_6__) \
-    || defined(__ARM_ARCH_6J__) \
-    || defined(__ARM_ARCH_6K__) \
-    || defined(__ARM_ARCH_6Z__) \
-    || defined(__ARM_ARCH_6ZK__) \
-    || defined(__ARM_ARCH_6T2__)
-# if defined(__thumb__)
-    // This is just a placeholder and almost certainly not sufficient.
-    __asm__ __volatile__ ("" : : : "memory");
-# else // defined(__thumb__)
-    int a = 0, b = 0;
-    __asm__ __volatile__ ("swp %0, %1, [%2]"
-        : "=&r"(a) : "r"(1), "r"(&b) : "memory", "cc");
-# endif // defined(__thumb__)
-#else
-    // ARMv7 and later.
-    __asm__ __volatile__ ("dmb" : : : "memory");
-#endif
-  }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(__GNUC__) && defined(__arm__)
-
-#endif // ASIO_DETAIL_GCC_ARM_FENCED_BLOCK_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/gcc_hppa_fenced_block.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/gcc_hppa_fenced_block.hpp
deleted file mode 100644
index 79527bc..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/gcc_hppa_fenced_block.hpp
+++ /dev/null
@@ -1,66 +0,0 @@
-//
-// detail/gcc_hppa_fenced_block.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_GCC_HPPA_FENCED_BLOCK_HPP
-#define ASIO_DETAIL_GCC_HPPA_FENCED_BLOCK_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(__GNUC__) && (defined(__hppa) || defined(__hppa__))
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class gcc_hppa_fenced_block
-  : private noncopyable
-{
-public:
-  enum half_t { half };
-  enum full_t { full };
-
-  // Constructor for a half fenced block.
-  explicit gcc_hppa_fenced_block(half_t)
-  {
-  }
-
-  // Constructor for a full fenced block.
-  explicit gcc_hppa_fenced_block(full_t)
-  {
-    barrier();
-  }
-
-  // Destructor.
-  ~gcc_hppa_fenced_block()
-  {
-    barrier();
-  }
-
-private:
-  static void barrier()
-  {
-    // This is just a placeholder and almost certainly not sufficient.
-    __asm__ __volatile__ ("" : : : "memory");
-  }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(__GNUC__) && (defined(__hppa) || defined(__hppa__))
-
-#endif // ASIO_DETAIL_GCC_HPPA_FENCED_BLOCK_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/gcc_sync_fenced_block.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/gcc_sync_fenced_block.hpp
deleted file mode 100644
index db4efcb..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/gcc_sync_fenced_block.hpp
+++ /dev/null
@@ -1,63 +0,0 @@
-//
-// detail/gcc_sync_fenced_block.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_GCC_SYNC_FENCED_BLOCK_HPP
-#define ASIO_DETAIL_GCC_SYNC_FENCED_BLOCK_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(__GNUC__) \
-  && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)) \
-  && !defined(__INTEL_COMPILER) && !defined(__ICL) \
-  && !defined(__ICC) && !defined(__ECC) && !defined(__PATHSCALE__)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class gcc_sync_fenced_block
-  : private noncopyable
-{
-public:
-  enum half_or_full_t { half, full };
-
-  // Constructor.
-  explicit gcc_sync_fenced_block(half_or_full_t)
-    : value_(0)
-  {
-    __sync_lock_test_and_set(&value_, 1);
-  }
-
-  // Destructor.
-  ~gcc_sync_fenced_block()
-  {
-    __sync_lock_release(&value_);
-  }
-
-private:
-  int value_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(__GNUC__)
-       // && ((__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4))
-       // && !defined(__INTEL_COMPILER) && !defined(__ICL)
-       // && !defined(__ICC) && !defined(__ECC) && !defined(__PATHSCALE__)
-
-#endif // ASIO_DETAIL_GCC_SYNC_FENCED_BLOCK_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/gcc_x86_fenced_block.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/gcc_x86_fenced_block.hpp
deleted file mode 100644
index 8f27883..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/gcc_x86_fenced_block.hpp
+++ /dev/null
@@ -1,97 +0,0 @@
-//
-// detail/gcc_x86_fenced_block.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_GCC_X86_FENCED_BLOCK_HPP
-#define ASIO_DETAIL_GCC_X86_FENCED_BLOCK_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class gcc_x86_fenced_block
-  : private noncopyable
-{
-public:
-  enum half_t { half };
-  enum full_t { full };
-
-  // Constructor for a half fenced block.
-  explicit gcc_x86_fenced_block(half_t)
-  {
-  }
-
-  // Constructor for a full fenced block.
-  explicit gcc_x86_fenced_block(full_t)
-  {
-    lbarrier();
-  }
-
-  // Destructor.
-  ~gcc_x86_fenced_block()
-  {
-    sbarrier();
-  }
-
-private:
-  static int barrier()
-  {
-    int r = 0, m = 1;
-    __asm__ __volatile__ (
-        "xchgl %0, %1" :
-        "=r"(r), "=m"(m) :
-        "0"(1), "m"(m) :
-        "memory", "cc");
-    return r;
-  }
-
-  static void lbarrier()
-  {
-#if defined(__SSE2__)
-# if (__GNUC__ >= 4) && !defined(__INTEL_COMPILER) && !defined(__ICL)
-    __builtin_ia32_lfence();
-# else // (__GNUC__ >= 4) && !defined(__INTEL_COMPILER) && !defined(__ICL)
-    __asm__ __volatile__ ("lfence" ::: "memory");
-# endif // (__GNUC__ >= 4) && !defined(__INTEL_COMPILER) && !defined(__ICL)
-#else // defined(__SSE2__)
-    barrier();
-#endif // defined(__SSE2__)
-  }
-
-  static void sbarrier()
-  {
-#if defined(__SSE2__)
-# if (__GNUC__ >= 4) && !defined(__INTEL_COMPILER) && !defined(__ICL)
-    __builtin_ia32_sfence();
-# else // (__GNUC__ >= 4) && !defined(__INTEL_COMPILER) && !defined(__ICL)
-    __asm__ __volatile__ ("sfence" ::: "memory");
-# endif // (__GNUC__ >= 4) && !defined(__INTEL_COMPILER) && !defined(__ICL)
-#else // defined(__SSE2__)
-    barrier();
-#endif // defined(__SSE2__)
-  }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
-
-#endif // ASIO_DETAIL_GCC_X86_FENCED_BLOCK_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/handler_alloc_helpers.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/handler_alloc_helpers.hpp
deleted file mode 100644
index 974158b..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/handler_alloc_helpers.hpp
+++ /dev/null
@@ -1,82 +0,0 @@
-//
-// detail/handler_alloc_helpers.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_HANDLER_ALLOC_HELPERS_HPP
-#define ASIO_DETAIL_HANDLER_ALLOC_HELPERS_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/noncopyable.hpp"
-#include "asio/handler_alloc_hook.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-// Calls to asio_handler_allocate and asio_handler_deallocate must be made from
-// a namespace that does not contain any overloads of these functions. The
-// asio_handler_alloc_helpers namespace is defined here for that purpose.
-namespace asio_handler_alloc_helpers {
-
-template <typename Handler>
-inline void* allocate(std::size_t s, Handler& h)
-{
-#if !defined(ASIO_HAS_HANDLER_HOOKS)
-  return ::operator new(s);
-#else
-  using asio::asio_handler_allocate;
-  return asio_handler_allocate(s, asio::detail::addressof(h));
-#endif
-}
-
-template <typename Handler>
-inline void deallocate(void* p, std::size_t s, Handler& h)
-{
-#if !defined(ASIO_HAS_HANDLER_HOOKS)
-  ::operator delete(p);
-#else
-  using asio::asio_handler_deallocate;
-  asio_handler_deallocate(p, s, asio::detail::addressof(h));
-#endif
-}
-
-} // namespace asio_handler_alloc_helpers
-
-#define ASIO_DEFINE_HANDLER_PTR(op) \
-  struct ptr \
-  { \
-    Handler* h; \
-    void* v; \
-    op* p; \
-    ~ptr() \
-    { \
-      reset(); \
-    } \
-    void reset() \
-    { \
-      if (p) \
-      { \
-        p->~op(); \
-        p = 0; \
-      } \
-      if (v) \
-      { \
-        asio_handler_alloc_helpers::deallocate(v, sizeof(op), *h); \
-        v = 0; \
-      } \
-    } \
-  } \
-  /**/
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_HANDLER_ALLOC_HELPERS_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/handler_cont_helpers.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/handler_cont_helpers.hpp
deleted file mode 100644
index 8b7c42e..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/handler_cont_helpers.hpp
+++ /dev/null
@@ -1,45 +0,0 @@
-//
-// detail/handler_cont_helpers.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_HANDLER_CONT_HELPERS_HPP
-#define ASIO_DETAIL_HANDLER_CONT_HELPERS_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/handler_continuation_hook.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-// Calls to asio_handler_is_continuation must be made from a namespace that
-// does not contain overloads of this function. This namespace is defined here
-// for that purpose.
-namespace asio_handler_cont_helpers {
-
-template <typename Context>
-inline bool is_continuation(Context& context)
-{
-#if !defined(ASIO_HAS_HANDLER_HOOKS)
-  return false;
-#else
-  using asio::asio_handler_is_continuation;
-  return asio_handler_is_continuation(
-      asio::detail::addressof(context));
-#endif
-}
-
-} // namespace asio_handler_cont_helpers
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_HANDLER_CONT_HELPERS_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/handler_invoke_helpers.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/handler_invoke_helpers.hpp
deleted file mode 100644
index 47ad684..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/handler_invoke_helpers.hpp
+++ /dev/null
@@ -1,57 +0,0 @@
-//
-// detail/handler_invoke_helpers.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_HANDLER_INVOKE_HELPERS_HPP
-#define ASIO_DETAIL_HANDLER_INVOKE_HELPERS_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/handler_invoke_hook.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-// Calls to asio_handler_invoke must be made from a namespace that does not
-// contain overloads of this function. The asio_handler_invoke_helpers
-// namespace is defined here for that purpose.
-namespace asio_handler_invoke_helpers {
-
-template <typename Function, typename Context>
-inline void invoke(Function& function, Context& context)
-{
-#if !defined(ASIO_HAS_HANDLER_HOOKS)
-  Function tmp(function);
-  tmp();
-#else
-  using asio::asio_handler_invoke;
-  asio_handler_invoke(function, asio::detail::addressof(context));
-#endif
-}
-
-template <typename Function, typename Context>
-inline void invoke(const Function& function, Context& context)
-{
-#if !defined(ASIO_HAS_HANDLER_HOOKS)
-  Function tmp(function);
-  tmp();
-#else
-  using asio::asio_handler_invoke;
-  asio_handler_invoke(function, asio::detail::addressof(context));
-#endif
-}
-
-} // namespace asio_handler_invoke_helpers
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_HANDLER_INVOKE_HELPERS_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/handler_tracking.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/handler_tracking.hpp
deleted file mode 100644
index 14e8177..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/handler_tracking.hpp
+++ /dev/null
@@ -1,159 +0,0 @@
-//
-// detail/handler_tracking.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_HANDLER_TRACKING_HPP
-#define ASIO_DETAIL_HANDLER_TRACKING_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_ENABLE_HANDLER_TRACKING)
-# include "asio/error_code.hpp"
-# include "asio/detail/cstdint.hpp"
-# include "asio/detail/static_mutex.hpp"
-# include "asio/detail/tss_ptr.hpp"
-#endif // defined(ASIO_ENABLE_HANDLER_TRACKING)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-#if defined(ASIO_ENABLE_HANDLER_TRACKING)
-
-class handler_tracking
-{
-public:
-  class completion;
-
-  // Base class for objects containing tracked handlers.
-  class tracked_handler
-  {
-  private:
-    // Only the handler_tracking class will have access to the id.
-    friend class handler_tracking;
-    friend class completion;
-    uint64_t id_;
-
-  protected:
-    // Constructor initialises with no id.
-    tracked_handler() : id_(0) {}
-
-    // Prevent deletion through this type.
-    ~tracked_handler() {}
-  };
-
-  // Initialise the tracking system.
-  ASIO_DECL static void init();
-
-  // Record the creation of a tracked handler.
-  ASIO_DECL static void creation(tracked_handler* h,
-      const char* object_type, void* object, const char* op_name);
-
-  class completion
-  {
-  public:
-    // Constructor records that handler is to be invoked with no arguments.
-    ASIO_DECL explicit completion(tracked_handler* h);
-
-    // Destructor records only when an exception is thrown from the handler, or
-    // if the memory is being freed without the handler having been invoked.
-    ASIO_DECL ~completion();
-
-    // Records that handler is to be invoked with no arguments.
-    ASIO_DECL void invocation_begin();
-
-    // Records that handler is to be invoked with one arguments.
-    ASIO_DECL void invocation_begin(const asio::error_code& ec);
-
-    // Constructor records that handler is to be invoked with two arguments.
-    ASIO_DECL void invocation_begin(
-        const asio::error_code& ec, std::size_t bytes_transferred);
-
-    // Constructor records that handler is to be invoked with two arguments.
-    ASIO_DECL void invocation_begin(
-        const asio::error_code& ec, int signal_number);
-
-    // Constructor records that handler is to be invoked with two arguments.
-    ASIO_DECL void invocation_begin(
-        const asio::error_code& ec, const char* arg);
-
-    // Record that handler invocation has ended.
-    ASIO_DECL void invocation_end();
-
-  private:
-    friend class handler_tracking;
-    uint64_t id_;
-    bool invoked_;
-    completion* next_;
-  };
-
-  // Record an operation that affects pending handlers.
-  ASIO_DECL static void operation(const char* object_type,
-      void* object, const char* op_name);
-
-  // Write a line of output.
-  ASIO_DECL static void write_line(const char* format, ...);
-
-private:
-  struct tracking_state;
-  ASIO_DECL static tracking_state* get_state();
-};
-
-# define ASIO_INHERIT_TRACKED_HANDLER \
-  : public asio::detail::handler_tracking::tracked_handler
-
-# define ASIO_ALSO_INHERIT_TRACKED_HANDLER \
-  , public asio::detail::handler_tracking::tracked_handler
-
-# define ASIO_HANDLER_TRACKING_INIT \
-  asio::detail::handler_tracking::init()
-
-# define ASIO_HANDLER_CREATION(args) \
-  asio::detail::handler_tracking::creation args
-
-# define ASIO_HANDLER_COMPLETION(args) \
-  asio::detail::handler_tracking::completion tracked_completion args
-
-# define ASIO_HANDLER_INVOCATION_BEGIN(args) \
-  tracked_completion.invocation_begin args
-
-# define ASIO_HANDLER_INVOCATION_END \
-  tracked_completion.invocation_end()
-
-# define ASIO_HANDLER_OPERATION(args) \
-  asio::detail::handler_tracking::operation args
-
-#else // defined(ASIO_ENABLE_HANDLER_TRACKING)
-
-# define ASIO_INHERIT_TRACKED_HANDLER
-# define ASIO_ALSO_INHERIT_TRACKED_HANDLER
-# define ASIO_HANDLER_TRACKING_INIT (void)0
-# define ASIO_HANDLER_CREATION(args) (void)0
-# define ASIO_HANDLER_COMPLETION(args) (void)0
-# define ASIO_HANDLER_INVOCATION_BEGIN(args) (void)0
-# define ASIO_HANDLER_INVOCATION_END (void)0
-# define ASIO_HANDLER_OPERATION(args) (void)0
-
-#endif // defined(ASIO_ENABLE_HANDLER_TRACKING)
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/handler_tracking.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_DETAIL_HANDLER_TRACKING_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/handler_type_requirements.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/handler_type_requirements.hpp
deleted file mode 100644
index 9eb2cea..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/handler_type_requirements.hpp
+++ /dev/null
@@ -1,488 +0,0 @@
-//
-// detail/handler_type_requirements.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_HANDLER_TYPE_REQUIREMENTS_HPP
-#define ASIO_DETAIL_HANDLER_TYPE_REQUIREMENTS_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-// Older versions of gcc have difficulty compiling the sizeof expressions where
-// we test the handler type requirements. We'll disable checking of handler type
-// requirements for those compilers, but otherwise enable it by default.
-#if !defined(ASIO_DISABLE_HANDLER_TYPE_REQUIREMENTS)
-# if !defined(__GNUC__) || (__GNUC__ >= 4)
-#  define ASIO_ENABLE_HANDLER_TYPE_REQUIREMENTS 1
-# endif // !defined(__GNUC__) || (__GNUC__ >= 4)
-#endif // !defined(ASIO_DISABLE_HANDLER_TYPE_REQUIREMENTS)
-
-// With C++0x we can use a combination of enhanced SFINAE and static_assert to
-// generate better template error messages. As this technique is not yet widely
-// portable, we'll only enable it for tested compilers.
-#if !defined(ASIO_DISABLE_HANDLER_TYPE_REQUIREMENTS_ASSERT)
-# if defined(__GNUC__)
-#  if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
-#   if defined(__GXX_EXPERIMENTAL_CXX0X__)
-#    define ASIO_ENABLE_HANDLER_TYPE_REQUIREMENTS_ASSERT 1
-#   endif // defined(__GXX_EXPERIMENTAL_CXX0X__)
-#  endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 5)) || (__GNUC__ > 4)
-# endif // defined(__GNUC__)
-# if defined(ASIO_MSVC)
-#  if (_MSC_VER >= 1600)
-#   define ASIO_ENABLE_HANDLER_TYPE_REQUIREMENTS_ASSERT 1
-#  endif // (_MSC_VER >= 1600)
-# endif // defined(ASIO_MSVC)
-# if defined(__clang__)
-#  if __has_feature(__cxx_static_assert__)
-#   define ASIO_ENABLE_HANDLER_TYPE_REQUIREMENTS_ASSERT 1
-#  endif // __has_feature(cxx_static_assert)
-# endif // defined(__clang__)
-#endif // !defined(ASIO_DISABLE_HANDLER_TYPE_REQUIREMENTS)
-
-#if defined(ASIO_ENABLE_HANDLER_TYPE_REQUIREMENTS)
-# include "asio/handler_type.hpp"
-#endif // defined(ASIO_ENABLE_HANDLER_TYPE_REQUIREMENTS)
-
-// Newer gcc needs special treatment to suppress unused typedef warnings.
-#if defined(__GNUC__)
-# if ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 8)) || (__GNUC__ > 4)
-#  define ASIO_UNUSED_TYPEDEF __attribute__((__unused__))
-# endif // ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 8)) || (__GNUC__ > 4)
-#endif // defined(__GNUC__)
-#if !defined(ASIO_UNUSED_TYPEDEF)
-# define ASIO_UNUSED_TYPEDEF
-#endif // !defined(ASIO_UNUSED_TYPEDEF)
-
-namespace asio {
-namespace detail {
-
-#if defined(ASIO_ENABLE_HANDLER_TYPE_REQUIREMENTS)
-
-# if defined(ASIO_ENABLE_HANDLER_TYPE_REQUIREMENTS_ASSERT)
-
-template <typename Handler>
-auto zero_arg_handler_test(Handler h, void*)
-  -> decltype(
-    sizeof(Handler(static_cast<const Handler&>(h))),
-    ((h)()),
-    char(0));
-
-template <typename Handler>
-char (&zero_arg_handler_test(Handler, ...))[2];
-
-template <typename Handler, typename Arg1>
-auto one_arg_handler_test(Handler h, Arg1* a1)
-  -> decltype(
-    sizeof(Handler(static_cast<const Handler&>(h))),
-    ((h)(*a1)),
-    char(0));
-
-template <typename Handler>
-char (&one_arg_handler_test(Handler h, ...))[2];
-
-template <typename Handler, typename Arg1, typename Arg2>
-auto two_arg_handler_test(Handler h, Arg1* a1, Arg2* a2)
-  -> decltype(
-    sizeof(Handler(static_cast<const Handler&>(h))),
-    ((h)(*a1, *a2)),
-    char(0));
-
-template <typename Handler>
-char (&two_arg_handler_test(Handler, ...))[2];
-
-#  define ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT(expr, msg) \
-     static_assert(expr, msg);
-
-# else // defined(ASIO_ENABLE_HANDLER_TYPE_REQUIREMENTS_ASSERT)
-
-#  define ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT(expr, msg)
-
-# endif // defined(ASIO_ENABLE_HANDLER_TYPE_REQUIREMENTS_ASSERT)
-
-template <typename T> T& lvref();
-template <typename T> T& lvref(T);
-template <typename T> const T& clvref();
-template <typename T> const T& clvref(T);
-template <typename T> char argbyv(T);
-
-template <int>
-struct handler_type_requirements
-{
-};
-
-#define ASIO_COMPLETION_HANDLER_CHECK( \
-    handler_type, handler) \
-  \
-  typedef ASIO_HANDLER_TYPE(handler_type, \
-      void()) asio_true_handler_type; \
-  \
-  ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT( \
-      sizeof(asio::detail::zero_arg_handler_test( \
-          asio::detail::clvref< \
-            asio_true_handler_type>(), 0)) == 1, \
-      "CompletionHandler type requirements not met") \
-  \
-  typedef asio::detail::handler_type_requirements< \
-      sizeof( \
-        asio::detail::argbyv( \
-          asio::detail::clvref< \
-            asio_true_handler_type>())) + \
-      sizeof( \
-        asio::detail::lvref< \
-          asio_true_handler_type>()(), \
-        char(0))> ASIO_UNUSED_TYPEDEF
-
-#define ASIO_READ_HANDLER_CHECK( \
-    handler_type, handler) \
-  \
-  typedef ASIO_HANDLER_TYPE(handler_type, \
-      void(asio::error_code, std::size_t)) \
-    asio_true_handler_type; \
-  \
-  ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT( \
-      sizeof(asio::detail::two_arg_handler_test( \
-          asio::detail::clvref< \
-            asio_true_handler_type>(), \
-          static_cast<const asio::error_code*>(0), \
-          static_cast<const std::size_t*>(0))) == 1, \
-      "ReadHandler type requirements not met") \
-  \
-  typedef asio::detail::handler_type_requirements< \
-      sizeof( \
-        asio::detail::argbyv( \
-          asio::detail::clvref< \
-            asio_true_handler_type>())) + \
-      sizeof( \
-        asio::detail::lvref< \
-          asio_true_handler_type>()( \
-            asio::detail::lvref<const asio::error_code>(), \
-            asio::detail::lvref<const std::size_t>()), \
-        char(0))> ASIO_UNUSED_TYPEDEF
-
-
-#define ASIO_WRITE_HANDLER_CHECK( \
-    handler_type, handler) \
-  \
-  typedef ASIO_HANDLER_TYPE(handler_type, \
-      void(asio::error_code, std::size_t)) \
-    asio_true_handler_type; \
-  \
-  ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT( \
-      sizeof(asio::detail::two_arg_handler_test( \
-          asio::detail::clvref< \
-            asio_true_handler_type>(), \
-          static_cast<const asio::error_code*>(0), \
-          static_cast<const std::size_t*>(0))) == 1, \
-      "WriteHandler type requirements not met") \
-  \
-  typedef asio::detail::handler_type_requirements< \
-      sizeof( \
-        asio::detail::argbyv( \
-          asio::detail::clvref< \
-            asio_true_handler_type>())) + \
-      sizeof( \
-        asio::detail::lvref< \
-          asio_true_handler_type>()( \
-            asio::detail::lvref<const asio::error_code>(), \
-            asio::detail::lvref<const std::size_t>()), \
-        char(0))> ASIO_UNUSED_TYPEDEF
-
-#define ASIO_ACCEPT_HANDLER_CHECK( \
-    handler_type, handler) \
-  \
-  typedef ASIO_HANDLER_TYPE(handler_type, \
-      void(asio::error_code)) \
-    asio_true_handler_type; \
-  \
-  ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT( \
-      sizeof(asio::detail::one_arg_handler_test( \
-          asio::detail::clvref< \
-            asio_true_handler_type>(), \
-          static_cast<const asio::error_code*>(0))) == 1, \
-      "AcceptHandler type requirements not met") \
-  \
-  typedef asio::detail::handler_type_requirements< \
-      sizeof( \
-        asio::detail::argbyv( \
-          asio::detail::clvref< \
-            asio_true_handler_type>())) + \
-      sizeof( \
-        asio::detail::lvref< \
-          asio_true_handler_type>()( \
-            asio::detail::lvref<const asio::error_code>()), \
-        char(0))> ASIO_UNUSED_TYPEDEF
-
-#define ASIO_CONNECT_HANDLER_CHECK( \
-    handler_type, handler) \
-  \
-  typedef ASIO_HANDLER_TYPE(handler_type, \
-      void(asio::error_code)) \
-    asio_true_handler_type; \
-  \
-  ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT( \
-      sizeof(asio::detail::one_arg_handler_test( \
-          asio::detail::clvref< \
-            asio_true_handler_type>(), \
-          static_cast<const asio::error_code*>(0))) == 1, \
-      "ConnectHandler type requirements not met") \
-  \
-  typedef asio::detail::handler_type_requirements< \
-      sizeof( \
-        asio::detail::argbyv( \
-          asio::detail::clvref< \
-            asio_true_handler_type>())) + \
-      sizeof( \
-        asio::detail::lvref< \
-          asio_true_handler_type>()( \
-            asio::detail::lvref<const asio::error_code>()), \
-        char(0))> ASIO_UNUSED_TYPEDEF
-
-#define ASIO_COMPOSED_CONNECT_HANDLER_CHECK( \
-    handler_type, handler, iter_type) \
-  \
-  typedef ASIO_HANDLER_TYPE(handler_type, \
-      void(asio::error_code, iter_type)) \
-    asio_true_handler_type; \
-  \
-  ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT( \
-      sizeof(asio::detail::two_arg_handler_test( \
-          asio::detail::clvref< \
-            asio_true_handler_type>(), \
-          static_cast<const asio::error_code*>(0), \
-          static_cast<const iter_type*>(0))) == 1, \
-      "ComposedConnectHandler type requirements not met") \
-  \
-  typedef asio::detail::handler_type_requirements< \
-      sizeof( \
-        asio::detail::argbyv( \
-          asio::detail::clvref< \
-            asio_true_handler_type>())) + \
-      sizeof( \
-        asio::detail::lvref< \
-          asio_true_handler_type>()( \
-            asio::detail::lvref<const asio::error_code>(), \
-            asio::detail::lvref<const iter_type>()), \
-        char(0))> ASIO_UNUSED_TYPEDEF
-
-#define ASIO_RESOLVE_HANDLER_CHECK( \
-    handler_type, handler, iter_type) \
-  \
-  typedef ASIO_HANDLER_TYPE(handler_type, \
-      void(asio::error_code, iter_type)) \
-    asio_true_handler_type; \
-  \
-  ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT( \
-      sizeof(asio::detail::two_arg_handler_test( \
-          asio::detail::clvref< \
-            asio_true_handler_type>(), \
-          static_cast<const asio::error_code*>(0), \
-          static_cast<const iter_type*>(0))) == 1, \
-      "ResolveHandler type requirements not met") \
-  \
-  typedef asio::detail::handler_type_requirements< \
-      sizeof( \
-        asio::detail::argbyv( \
-          asio::detail::clvref< \
-            asio_true_handler_type>())) + \
-      sizeof( \
-        asio::detail::lvref< \
-          asio_true_handler_type>()( \
-            asio::detail::lvref<const asio::error_code>(), \
-            asio::detail::lvref<const iter_type>()), \
-        char(0))> ASIO_UNUSED_TYPEDEF
-
-#define ASIO_WAIT_HANDLER_CHECK( \
-    handler_type, handler) \
-  \
-  typedef ASIO_HANDLER_TYPE(handler_type, \
-      void(asio::error_code)) \
-    asio_true_handler_type; \
-  \
-  ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT( \
-      sizeof(asio::detail::one_arg_handler_test( \
-          asio::detail::clvref< \
-            asio_true_handler_type>(), \
-          static_cast<const asio::error_code*>(0))) == 1, \
-      "WaitHandler type requirements not met") \
-  \
-  typedef asio::detail::handler_type_requirements< \
-      sizeof( \
-        asio::detail::argbyv( \
-          asio::detail::clvref< \
-            asio_true_handler_type>())) + \
-      sizeof( \
-        asio::detail::lvref< \
-          asio_true_handler_type>()( \
-            asio::detail::lvref<const asio::error_code>()), \
-        char(0))> ASIO_UNUSED_TYPEDEF
-
-#define ASIO_SIGNAL_HANDLER_CHECK( \
-    handler_type, handler) \
-  \
-  typedef ASIO_HANDLER_TYPE(handler_type, \
-      void(asio::error_code, int)) \
-    asio_true_handler_type; \
-  \
-  ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT( \
-      sizeof(asio::detail::two_arg_handler_test( \
-          asio::detail::clvref< \
-            asio_true_handler_type>(), \
-          static_cast<const asio::error_code*>(0), \
-          static_cast<const int*>(0))) == 1, \
-      "SignalHandler type requirements not met") \
-  \
-  typedef asio::detail::handler_type_requirements< \
-      sizeof( \
-        asio::detail::argbyv( \
-          asio::detail::clvref< \
-            asio_true_handler_type>())) + \
-      sizeof( \
-        asio::detail::lvref< \
-          asio_true_handler_type>()( \
-            asio::detail::lvref<const asio::error_code>(), \
-            asio::detail::lvref<const int>()), \
-        char(0))> ASIO_UNUSED_TYPEDEF
-
-#define ASIO_HANDSHAKE_HANDLER_CHECK( \
-    handler_type, handler) \
-  \
-  typedef ASIO_HANDLER_TYPE(handler_type, \
-      void(asio::error_code)) \
-    asio_true_handler_type; \
-  \
-  ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT( \
-      sizeof(asio::detail::one_arg_handler_test( \
-          asio::detail::clvref< \
-            asio_true_handler_type>(), \
-          static_cast<const asio::error_code*>(0))) == 1, \
-      "HandshakeHandler type requirements not met") \
-  \
-  typedef asio::detail::handler_type_requirements< \
-      sizeof( \
-        asio::detail::argbyv( \
-          asio::detail::clvref< \
-            asio_true_handler_type>())) + \
-      sizeof( \
-        asio::detail::lvref< \
-          asio_true_handler_type>()( \
-            asio::detail::lvref<const asio::error_code>()), \
-        char(0))> ASIO_UNUSED_TYPEDEF
-
-#define ASIO_BUFFERED_HANDSHAKE_HANDLER_CHECK( \
-    handler_type, handler) \
-  \
-  typedef ASIO_HANDLER_TYPE(handler_type, \
-      void(asio::error_code, std::size_t)) \
-    asio_true_handler_type; \
-  \
-  ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT( \
-      sizeof(asio::detail::two_arg_handler_test( \
-          asio::detail::clvref< \
-            asio_true_handler_type>(), \
-          static_cast<const asio::error_code*>(0), \
-          static_cast<const std::size_t*>(0))) == 1, \
-      "BufferedHandshakeHandler type requirements not met") \
-  \
-  typedef asio::detail::handler_type_requirements< \
-      sizeof( \
-        asio::detail::argbyv( \
-          asio::detail::clvref< \
-            asio_true_handler_type>())) + \
-      sizeof( \
-        asio::detail::lvref< \
-          asio_true_handler_type>()( \
-          asio::detail::lvref<const asio::error_code>(), \
-          asio::detail::lvref<const std::size_t>()), \
-        char(0))> ASIO_UNUSED_TYPEDEF
-
-#define ASIO_SHUTDOWN_HANDLER_CHECK( \
-    handler_type, handler) \
-  \
-  typedef ASIO_HANDLER_TYPE(handler_type, \
-      void(asio::error_code)) \
-    asio_true_handler_type; \
-  \
-  ASIO_HANDLER_TYPE_REQUIREMENTS_ASSERT( \
-      sizeof(asio::detail::one_arg_handler_test( \
-          asio::detail::clvref< \
-            asio_true_handler_type>(), \
-          static_cast<const asio::error_code*>(0))) == 1, \
-      "ShutdownHandler type requirements not met") \
-  \
-  typedef asio::detail::handler_type_requirements< \
-      sizeof( \
-        asio::detail::argbyv( \
-          asio::detail::clvref< \
-            asio_true_handler_type>())) + \
-      sizeof( \
-        asio::detail::lvref< \
-          asio_true_handler_type>()( \
-            asio::detail::lvref<const asio::error_code>()), \
-        char(0))> ASIO_UNUSED_TYPEDEF
-
-#else // !defined(ASIO_ENABLE_HANDLER_TYPE_REQUIREMENTS)
-
-#define ASIO_COMPLETION_HANDLER_CHECK( \
-    handler_type, handler) \
-  typedef int ASIO_UNUSED_TYPEDEF
-
-#define ASIO_READ_HANDLER_CHECK( \
-    handler_type, handler) \
-  typedef int ASIO_UNUSED_TYPEDEF
-
-#define ASIO_WRITE_HANDLER_CHECK( \
-    handler_type, handler) \
-  typedef int ASIO_UNUSED_TYPEDEF
-
-#define ASIO_ACCEPT_HANDLER_CHECK( \
-    handler_type, handler) \
-  typedef int ASIO_UNUSED_TYPEDEF
-
-#define ASIO_CONNECT_HANDLER_CHECK( \
-    handler_type, handler) \
-  typedef int ASIO_UNUSED_TYPEDEF
-
-#define ASIO_COMPOSED_CONNECT_HANDLER_CHECK( \
-    handler_type, handler, iter_type) \
-  typedef int ASIO_UNUSED_TYPEDEF
-
-#define ASIO_RESOLVE_HANDLER_CHECK( \
-    handler_type, handler, iter_type) \
-  typedef int ASIO_UNUSED_TYPEDEF
-
-#define ASIO_WAIT_HANDLER_CHECK( \
-    handler_type, handler) \
-  typedef int ASIO_UNUSED_TYPEDEF
-
-#define ASIO_SIGNAL_HANDLER_CHECK( \
-    handler_type, handler) \
-  typedef int ASIO_UNUSED_TYPEDEF
-
-#define ASIO_HANDSHAKE_HANDLER_CHECK( \
-    handler_type, handler) \
-  typedef int ASIO_UNUSED_TYPEDEF
-
-#define ASIO_BUFFERED_HANDSHAKE_HANDLER_CHECK( \
-    handler_type, handler) \
-  typedef int ASIO_UNUSED_TYPEDEF
-
-#define ASIO_SHUTDOWN_HANDLER_CHECK( \
-    handler_type, handler) \
-  typedef int ASIO_UNUSED_TYPEDEF
-
-#endif // !defined(ASIO_ENABLE_HANDLER_TYPE_REQUIREMENTS)
-
-} // namespace detail
-} // namespace asio
-
-#endif // ASIO_DETAIL_HANDLER_TYPE_REQUIREMENTS_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/hash_map.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/hash_map.hpp
deleted file mode 100644
index e11b542..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/hash_map.hpp
+++ /dev/null
@@ -1,331 +0,0 @@
-//
-// detail/hash_map.hpp
-// ~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_HASH_MAP_HPP
-#define ASIO_DETAIL_HASH_MAP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <list>
-#include <utility>
-#include "asio/detail/assert.hpp"
-#include "asio/detail/noncopyable.hpp"
-
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-# include "asio/detail/socket_types.hpp"
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-inline std::size_t calculate_hash_value(int i)
-{
-  return static_cast<std::size_t>(i);
-}
-
-inline std::size_t calculate_hash_value(void* p)
-{
-  return reinterpret_cast<std::size_t>(p)
-    + (reinterpret_cast<std::size_t>(p) >> 3);
-}
-
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-inline std::size_t calculate_hash_value(SOCKET s)
-{
-  return static_cast<std::size_t>(s);
-}
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
-// Note: assumes K and V are POD types.
-template <typename K, typename V>
-class hash_map
-  : private noncopyable
-{
-public:
-  // The type of a value in the map.
-  typedef std::pair<K, V> value_type;
-
-  // The type of a non-const iterator over the hash map.
-  typedef typename std::list<value_type>::iterator iterator;
-
-  // The type of a const iterator over the hash map.
-  typedef typename std::list<value_type>::const_iterator const_iterator;
-
-  // Constructor.
-  hash_map()
-    : size_(0),
-      buckets_(0),
-      num_buckets_(0)
-  {
-  }
-
-  // Destructor.
-  ~hash_map()
-  {
-    delete[] buckets_;
-  }
-
-  // Get an iterator for the beginning of the map.
-  iterator begin()
-  {
-    return values_.begin();
-  }
-
-  // Get an iterator for the beginning of the map.
-  const_iterator begin() const
-  {
-    return values_.begin();
-  }
-
-  // Get an iterator for the end of the map.
-  iterator end()
-  {
-    return values_.end();
-  }
-
-  // Get an iterator for the end of the map.
-  const_iterator end() const
-  {
-    return values_.end();
-  }
-
-  // Check whether the map is empty.
-  bool empty() const
-  {
-    return values_.empty();
-  }
-
-  // Find an entry in the map.
-  iterator find(const K& k)
-  {
-    if (num_buckets_)
-    {
-      size_t bucket = calculate_hash_value(k) % num_buckets_;
-      iterator it = buckets_[bucket].first;
-      if (it == values_.end())
-        return values_.end();
-      iterator end_it = buckets_[bucket].last;
-      ++end_it;
-      while (it != end_it)
-      {
-        if (it->first == k)
-          return it;
-        ++it;
-      }
-    }
-    return values_.end();
-  }
-
-  // Find an entry in the map.
-  const_iterator find(const K& k) const
-  {
-    if (num_buckets_)
-    {
-      size_t bucket = calculate_hash_value(k) % num_buckets_;
-      const_iterator it = buckets_[bucket].first;
-      if (it == values_.end())
-        return it;
-      const_iterator end_it = buckets_[bucket].last;
-      ++end_it;
-      while (it != end_it)
-      {
-        if (it->first == k)
-          return it;
-        ++it;
-      }
-    }
-    return values_.end();
-  }
-
-  // Insert a new entry into the map.
-  std::pair<iterator, bool> insert(const value_type& v)
-  {
-    if (size_ + 1 >= num_buckets_)
-      rehash(hash_size(size_ + 1));
-    size_t bucket = calculate_hash_value(v.first) % num_buckets_;
-    iterator it = buckets_[bucket].first;
-    if (it == values_.end())
-    {
-      buckets_[bucket].first = buckets_[bucket].last =
-        values_insert(values_.end(), v);
-      ++size_;
-      return std::pair<iterator, bool>(buckets_[bucket].last, true);
-    }
-    iterator end_it = buckets_[bucket].last;
-    ++end_it;
-    while (it != end_it)
-    {
-      if (it->first == v.first)
-        return std::pair<iterator, bool>(it, false);
-      ++it;
-    }
-    buckets_[bucket].last = values_insert(end_it, v);
-    ++size_;
-    return std::pair<iterator, bool>(buckets_[bucket].last, true);
-  }
-
-  // Erase an entry from the map.
-  void erase(iterator it)
-  {
-    ASIO_ASSERT(it != values_.end());
-    ASIO_ASSERT(num_buckets_ != 0);
-
-    size_t bucket = calculate_hash_value(it->first) % num_buckets_;
-    bool is_first = (it == buckets_[bucket].first);
-    bool is_last = (it == buckets_[bucket].last);
-    if (is_first && is_last)
-      buckets_[bucket].first = buckets_[bucket].last = values_.end();
-    else if (is_first)
-      ++buckets_[bucket].first;
-    else if (is_last)
-      --buckets_[bucket].last;
-
-    values_erase(it);
-    --size_;
-  }
-
-  // Erase a key from the map.
-  void erase(const K& k)
-  {
-    iterator it = find(k);
-    if (it != values_.end())
-      erase(it);
-  }
-
-  // Remove all entries from the map.
-  void clear()
-  {
-    // Clear the values.
-    values_.clear();
-    size_ = 0;
-
-    // Initialise all buckets to empty.
-    iterator end_it = values_.end();
-    for (size_t i = 0; i < num_buckets_; ++i)
-      buckets_[i].first = buckets_[i].last = end_it;
-  }
-
-private:
-  // Calculate the hash size for the specified number of elements.
-  static std::size_t hash_size(std::size_t num_elems)
-  {
-    static std::size_t sizes[] =
-    {
-#if defined(ASIO_HASH_MAP_BUCKETS)
-      ASIO_HASH_MAP_BUCKETS
-#else // ASIO_HASH_MAP_BUCKETS
-      3, 13, 23, 53, 97, 193, 389, 769, 1543, 3079, 6151, 12289, 24593,
-      49157, 98317, 196613, 393241, 786433, 1572869, 3145739, 6291469,
-      12582917, 25165843
-#endif // ASIO_HASH_MAP_BUCKETS
-    };
-    const std::size_t nth_size = sizeof(sizes) / sizeof(std::size_t) - 1;
-    for (std::size_t i = 0; i < nth_size; ++i)
-      if (num_elems < sizes[i])
-        return sizes[i];
-    return sizes[nth_size];
-  }
-
-  // Re-initialise the hash from the values already contained in the list.
-  void rehash(std::size_t num_buckets)
-  {
-    if (num_buckets == num_buckets_)
-      return;
-    num_buckets_ = num_buckets;
-    ASIO_ASSERT(num_buckets_ != 0);
-
-    iterator end_iter = values_.end();
-
-    // Update number of buckets and initialise all buckets to empty.
-    bucket_type* tmp = new bucket_type[num_buckets_];
-    delete[] buckets_;
-    buckets_ = tmp;
-    for (std::size_t i = 0; i < num_buckets_; ++i)
-      buckets_[i].first = buckets_[i].last = end_iter;
-
-    // Put all values back into the hash.
-    iterator iter = values_.begin();
-    while (iter != end_iter)
-    {
-      std::size_t bucket = calculate_hash_value(iter->first) % num_buckets_;
-      if (buckets_[bucket].last == end_iter)
-      {
-        buckets_[bucket].first = buckets_[bucket].last = iter++;
-      }
-      else if (++buckets_[bucket].last == iter)
-      {
-        ++iter;
-      }
-      else
-      {
-        values_.splice(buckets_[bucket].last, values_, iter++);
-        --buckets_[bucket].last;
-      }
-    }
-  }
-
-  // Insert an element into the values list by splicing from the spares list,
-  // if a spare is available, and otherwise by inserting a new element.
-  iterator values_insert(iterator it, const value_type& v)
-  {
-    if (spares_.empty())
-    {
-      return values_.insert(it, v);
-    }
-    else
-    {
-      spares_.front() = v;
-      values_.splice(it, spares_, spares_.begin());
-      return --it;
-    }
-  }
-
-  // Erase an element from the values list by splicing it to the spares list.
-  void values_erase(iterator it)
-  {
-    *it = value_type();
-    spares_.splice(spares_.begin(), values_, it);
-  }
-
-  // The number of elements in the hash.
-  std::size_t size_;
-
-  // The list of all values in the hash map.
-  std::list<value_type> values_;
-
-  // The list of spare nodes waiting to be recycled. Assumes that POD types only
-  // are stored in the hash map.
-  std::list<value_type> spares_;
-
-  // The type for a bucket in the hash table.
-  struct bucket_type
-  {
-    iterator first;
-    iterator last;
-  };
-
-  // The buckets in the hash.
-  bucket_type* buckets_;
-
-  // The number of buckets in the hash.
-  std::size_t num_buckets_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_HASH_MAP_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/buffer_sequence_adapter.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/buffer_sequence_adapter.ipp
deleted file mode 100644
index f32764f..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/buffer_sequence_adapter.ipp
+++ /dev/null
@@ -1,118 +0,0 @@
-//
-// detail/impl/buffer_sequence_adapter.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_BUFFER_SEQUENCE_ADAPTER_IPP
-#define ASIO_DETAIL_IMPL_BUFFER_SEQUENCE_ADAPTER_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-
-#include <robuffer.h>
-#include <windows.storage.streams.h>
-#include <wrl/implements.h>
-#include "asio/detail/buffer_sequence_adapter.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class winrt_buffer_impl :
-  public Microsoft::WRL::RuntimeClass<
-    Microsoft::WRL::RuntimeClassFlags<
-      Microsoft::WRL::RuntimeClassType::WinRtClassicComMix>,
-    ABI::Windows::Storage::Streams::IBuffer,
-    Windows::Storage::Streams::IBufferByteAccess>
-{
-public:
-  explicit winrt_buffer_impl(const asio::const_buffer& b)
-  {
-    bytes_ = const_cast<byte*>(asio::buffer_cast<const byte*>(b));
-    length_ = asio::buffer_size(b);
-    capacity_ = asio::buffer_size(b);
-  }
-
-  explicit winrt_buffer_impl(const asio::mutable_buffer& b)
-  {
-    bytes_ = const_cast<byte*>(asio::buffer_cast<const byte*>(b));
-    length_ = 0;
-    capacity_ = asio::buffer_size(b);
-  }
-
-  ~winrt_buffer_impl()
-  {
-  }
-
-  STDMETHODIMP Buffer(byte** value)
-  {
-    *value = bytes_;
-    return S_OK;
-  }
-
-  STDMETHODIMP get_Capacity(UINT32* value)
-  {
-    *value = capacity_;
-    return S_OK;
-  }
-
-  STDMETHODIMP get_Length(UINT32 *value)
-  {
-    *value = length_;
-    return S_OK;
-  }
-
-  STDMETHODIMP put_Length(UINT32 value)
-  {
-    if (value > capacity_)
-      return E_INVALIDARG;
-    length_ = value;
-    return S_OK;
-  }
-
-private:
-  byte* bytes_;
-  UINT32 length_;
-  UINT32 capacity_;
-};
-
-void buffer_sequence_adapter_base::init_native_buffer(
-    buffer_sequence_adapter_base::native_buffer_type& buf,
-    const asio::mutable_buffer& buffer)
-{
-  std::memset(&buf, 0, sizeof(native_buffer_type));
-  Microsoft::WRL::ComPtr<IInspectable> insp
-    = Microsoft::WRL::Make<winrt_buffer_impl>(buffer);
-  buf = reinterpret_cast<Windows::Storage::Streams::IBuffer^>(insp.Get());
-}
-
-void buffer_sequence_adapter_base::init_native_buffer(
-    buffer_sequence_adapter_base::native_buffer_type& buf,
-    const asio::const_buffer& buffer)
-{
-  std::memset(&buf, 0, sizeof(native_buffer_type));
-  Microsoft::WRL::ComPtr<IInspectable> insp
-    = Microsoft::WRL::Make<winrt_buffer_impl>(buffer);
-  Platform::Object^ buf_obj = reinterpret_cast<Platform::Object^>(insp.Get());
-  buf = reinterpret_cast<Windows::Storage::Streams::IBuffer^>(insp.Get());
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_IMPL_BUFFER_SEQUENCE_ADAPTER_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/descriptor_ops.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/descriptor_ops.ipp
deleted file mode 100644
index 805bf05..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/descriptor_ops.ipp
+++ /dev/null
@@ -1,451 +0,0 @@
-//
-// detail/impl/descriptor_ops.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_DESCRIPTOR_OPS_IPP
-#define ASIO_DETAIL_IMPL_DESCRIPTOR_OPS_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cerrno>
-#include "asio/detail/descriptor_ops.hpp"
-#include "asio/error.hpp"
-
-#if !defined(ASIO_WINDOWS) \
-  && !defined(ASIO_WINDOWS_RUNTIME) \
-  && !defined(__CYGWIN__)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-namespace descriptor_ops {
-
-int open(const char* path, int flags, asio::error_code& ec)
-{
-  errno = 0;
-  int result = error_wrapper(::open(path, flags), ec);
-  if (result >= 0)
-    ec = asio::error_code();
-  return result;
-}
-
-int close(int d, state_type& state, asio::error_code& ec)
-{
-  int result = 0;
-  if (d != -1)
-  {
-    errno = 0;
-    result = error_wrapper(::close(d), ec);
-
-    if (result != 0
-        && (ec == asio::error::would_block
-          || ec == asio::error::try_again))
-    {
-      // According to UNIX Network Programming Vol. 1, it is possible for
-      // close() to fail with EWOULDBLOCK under certain circumstances. What
-      // isn't clear is the state of the descriptor after this error. The one
-      // current OS where this behaviour is seen, Windows, says that the socket
-      // remains open. Therefore we'll put the descriptor back into blocking
-      // mode and have another attempt at closing it.
-#if defined(__SYMBIAN32__)
-      int flags = ::fcntl(d, F_GETFL, 0);
-      if (flags >= 0)
-        ::fcntl(d, F_SETFL, flags & ~O_NONBLOCK);
-#else // defined(__SYMBIAN32__)
-      ioctl_arg_type arg = 0;
-      ::ioctl(d, FIONBIO, &arg);
-#endif // defined(__SYMBIAN32__)
-      state &= ~non_blocking;
-
-      errno = 0;
-      result = error_wrapper(::close(d), ec);
-    }
-  }
-
-  if (result == 0)
-    ec = asio::error_code();
-  return result;
-}
-
-bool set_user_non_blocking(int d, state_type& state,
-    bool value, asio::error_code& ec)
-{
-  if (d == -1)
-  {
-    ec = asio::error::bad_descriptor;
-    return false;
-  }
-
-  errno = 0;
-#if defined(__SYMBIAN32__)
-  int result = error_wrapper(::fcntl(d, F_GETFL, 0), ec);
-  if (result >= 0)
-  {
-    errno = 0;
-    int flag = (value ? (result | O_NONBLOCK) : (result & ~O_NONBLOCK));
-    result = error_wrapper(::fcntl(d, F_SETFL, flag), ec);
-  }
-#else // defined(__SYMBIAN32__)
-  ioctl_arg_type arg = (value ? 1 : 0);
-  int result = error_wrapper(::ioctl(d, FIONBIO, &arg), ec);
-#endif // defined(__SYMBIAN32__)
-
-  if (result >= 0)
-  {
-    ec = asio::error_code();
-    if (value)
-      state |= user_set_non_blocking;
-    else
-    {
-      // Clearing the user-set non-blocking mode always overrides any
-      // internally-set non-blocking flag. Any subsequent asynchronous
-      // operations will need to re-enable non-blocking I/O.
-      state &= ~(user_set_non_blocking | internal_non_blocking);
-    }
-    return true;
-  }
-
-  return false;
-}
-
-bool set_internal_non_blocking(int d, state_type& state,
-    bool value, asio::error_code& ec)
-{
-  if (d == -1)
-  {
-    ec = asio::error::bad_descriptor;
-    return false;
-  }
-
-  if (!value && (state & user_set_non_blocking))
-  {
-    // It does not make sense to clear the internal non-blocking flag if the
-    // user still wants non-blocking behaviour. Return an error and let the
-    // caller figure out whether to update the user-set non-blocking flag.
-    ec = asio::error::invalid_argument;
-    return false;
-  }
-
-  errno = 0;
-#if defined(__SYMBIAN32__)
-  int result = error_wrapper(::fcntl(d, F_GETFL, 0), ec);
-  if (result >= 0)
-  {
-    errno = 0;
-    int flag = (value ? (result | O_NONBLOCK) : (result & ~O_NONBLOCK));
-    result = error_wrapper(::fcntl(d, F_SETFL, flag), ec);
-  }
-#else // defined(__SYMBIAN32__)
-  ioctl_arg_type arg = (value ? 1 : 0);
-  int result = error_wrapper(::ioctl(d, FIONBIO, &arg), ec);
-#endif // defined(__SYMBIAN32__)
-
-  if (result >= 0)
-  {
-    ec = asio::error_code();
-    if (value)
-      state |= internal_non_blocking;
-    else
-      state &= ~internal_non_blocking;
-    return true;
-  }
-
-  return false;
-}
-
-std::size_t sync_read(int d, state_type state, buf* bufs,
-    std::size_t count, bool all_empty, asio::error_code& ec)
-{
-  if (d == -1)
-  {
-    ec = asio::error::bad_descriptor;
-    return 0;
-  }
-
-  // A request to read 0 bytes on a stream is a no-op.
-  if (all_empty)
-  {
-    ec = asio::error_code();
-    return 0;
-  }
-
-  // Read some data.
-  for (;;)
-  {
-    // Try to complete the operation without blocking.
-    errno = 0;
-    signed_size_type bytes = error_wrapper(::readv(
-          d, bufs, static_cast<int>(count)), ec);
-
-    // Check if operation succeeded.
-    if (bytes > 0)
-      return bytes;
-
-    // Check for EOF.
-    if (bytes == 0)
-    {
-      ec = asio::error::eof;
-      return 0;
-    }
-
-    // Operation failed.
-    if ((state & user_set_non_blocking)
-        || (ec != asio::error::would_block
-          && ec != asio::error::try_again))
-      return 0;
-
-    // Wait for descriptor to become ready.
-    if (descriptor_ops::poll_read(d, 0, ec) < 0)
-      return 0;
-  }
-}
-
-bool non_blocking_read(int d, buf* bufs, std::size_t count,
-    asio::error_code& ec, std::size_t& bytes_transferred)
-{
-  for (;;)
-  {
-    // Read some data.
-    errno = 0;
-    signed_size_type bytes = error_wrapper(::readv(
-          d, bufs, static_cast<int>(count)), ec);
-
-    // Check for end of stream.
-    if (bytes == 0)
-    {
-      ec = asio::error::eof;
-      return true;
-    }
-
-    // Retry operation if interrupted by signal.
-    if (ec == asio::error::interrupted)
-      continue;
-
-    // Check if we need to run the operation again.
-    if (ec == asio::error::would_block
-        || ec == asio::error::try_again)
-      return false;
-
-    // Operation is complete.
-    if (bytes > 0)
-    {
-      ec = asio::error_code();
-      bytes_transferred = bytes;
-    }
-    else
-      bytes_transferred = 0;
-
-    return true;
-  }
-}
-
-std::size_t sync_write(int d, state_type state, const buf* bufs,
-    std::size_t count, bool all_empty, asio::error_code& ec)
-{
-  if (d == -1)
-  {
-    ec = asio::error::bad_descriptor;
-    return 0;
-  }
-
-  // A request to write 0 bytes on a stream is a no-op.
-  if (all_empty)
-  {
-    ec = asio::error_code();
-    return 0;
-  }
-
-  // Write some data.
-  for (;;)
-  {
-    // Try to complete the operation without blocking.
-    errno = 0;
-    signed_size_type bytes = error_wrapper(::writev(
-          d, bufs, static_cast<int>(count)), ec);
-
-    // Check if operation succeeded.
-    if (bytes > 0)
-      return bytes;
-
-    // Operation failed.
-    if ((state & user_set_non_blocking)
-        || (ec != asio::error::would_block
-          && ec != asio::error::try_again))
-      return 0;
-
-    // Wait for descriptor to become ready.
-    if (descriptor_ops::poll_write(d, 0, ec) < 0)
-      return 0;
-  }
-}
-
-bool non_blocking_write(int d, const buf* bufs, std::size_t count,
-    asio::error_code& ec, std::size_t& bytes_transferred)
-{
-  for (;;)
-  {
-    // Write some data.
-    errno = 0;
-    signed_size_type bytes = error_wrapper(::writev(
-          d, bufs, static_cast<int>(count)), ec);
-
-    // Retry operation if interrupted by signal.
-    if (ec == asio::error::interrupted)
-      continue;
-
-    // Check if we need to run the operation again.
-    if (ec == asio::error::would_block
-        || ec == asio::error::try_again)
-      return false;
-
-    // Operation is complete.
-    if (bytes >= 0)
-    {
-      ec = asio::error_code();
-      bytes_transferred = bytes;
-    }
-    else
-      bytes_transferred = 0;
-
-    return true;
-  }
-}
-
-int ioctl(int d, state_type& state, long cmd,
-    ioctl_arg_type* arg, asio::error_code& ec)
-{
-  if (d == -1)
-  {
-    ec = asio::error::bad_descriptor;
-    return -1;
-  }
-
-  errno = 0;
-  int result = error_wrapper(::ioctl(d, cmd, arg), ec);
-
-  if (result >= 0)
-  {
-    ec = asio::error_code();
-
-    // When updating the non-blocking mode we always perform the ioctl syscall,
-    // even if the flags would otherwise indicate that the descriptor is
-    // already in the correct state. This ensures that the underlying
-    // descriptor is put into the state that has been requested by the user. If
-    // the ioctl syscall was successful then we need to update the flags to
-    // match.
-    if (cmd == static_cast<long>(FIONBIO))
-    {
-      if (*arg)
-      {
-        state |= user_set_non_blocking;
-      }
-      else
-      {
-        // Clearing the non-blocking mode always overrides any internally-set
-        // non-blocking flag. Any subsequent asynchronous operations will need
-        // to re-enable non-blocking I/O.
-        state &= ~(user_set_non_blocking | internal_non_blocking);
-      }
-    }
-  }
-
-  return result;
-}
-
-int fcntl(int d, int cmd, asio::error_code& ec)
-{
-  if (d == -1)
-  {
-    ec = asio::error::bad_descriptor;
-    return -1;
-  }
-
-  errno = 0;
-  int result = error_wrapper(::fcntl(d, cmd), ec);
-  if (result != -1)
-    ec = asio::error_code();
-  return result;
-}
-
-int fcntl(int d, int cmd, long arg, asio::error_code& ec)
-{
-  if (d == -1)
-  {
-    ec = asio::error::bad_descriptor;
-    return -1;
-  }
-
-  errno = 0;
-  int result = error_wrapper(::fcntl(d, cmd, arg), ec);
-  if (result != -1)
-    ec = asio::error_code();
-  return result;
-}
-
-int poll_read(int d, state_type state, asio::error_code& ec)
-{
-  if (d == -1)
-  {
-    ec = asio::error::bad_descriptor;
-    return -1;
-  }
-
-  pollfd fds;
-  fds.fd = d;
-  fds.events = POLLIN;
-  fds.revents = 0;
-  int timeout = (state & user_set_non_blocking) ? 0 : -1;
-  errno = 0;
-  int result = error_wrapper(::poll(&fds, 1, timeout), ec);
-  if (result == 0)
-    ec = (state & user_set_non_blocking)
-      ? asio::error::would_block : asio::error_code();
-  else if (result > 0)
-    ec = asio::error_code();
-  return result;
-}
-
-int poll_write(int d, state_type state, asio::error_code& ec)
-{
-  if (d == -1)
-  {
-    ec = asio::error::bad_descriptor;
-    return -1;
-  }
-
-  pollfd fds;
-  fds.fd = d;
-  fds.events = POLLOUT;
-  fds.revents = 0;
-  int timeout = (state & user_set_non_blocking) ? 0 : -1;
-  errno = 0;
-  int result = error_wrapper(::poll(&fds, 1, timeout), ec);
-  if (result == 0)
-    ec = (state & user_set_non_blocking)
-      ? asio::error::would_block : asio::error_code();
-  else if (result > 0)
-    ec = asio::error_code();
-  return result;
-}
-
-} // namespace descriptor_ops
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_WINDOWS)
-       //   && !defined(ASIO_WINDOWS_RUNTIME)
-       //   && !defined(__CYGWIN__)
-
-#endif // ASIO_DETAIL_IMPL_DESCRIPTOR_OPS_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/dev_poll_reactor.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/dev_poll_reactor.hpp
deleted file mode 100644
index 7c26e4c..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/dev_poll_reactor.hpp
+++ /dev/null
@@ -1,78 +0,0 @@
-//
-// detail/impl/dev_poll_reactor.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_DEV_POLL_REACTOR_HPP
-#define ASIO_DETAIL_IMPL_DEV_POLL_REACTOR_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_DEV_POLL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Time_Traits>
-void dev_poll_reactor::add_timer_queue(timer_queue<Time_Traits>& queue)
-{
-  do_add_timer_queue(queue);
-}
-
-template <typename Time_Traits>
-void dev_poll_reactor::remove_timer_queue(timer_queue<Time_Traits>& queue)
-{
-  do_remove_timer_queue(queue);
-}
-
-template <typename Time_Traits>
-void dev_poll_reactor::schedule_timer(timer_queue<Time_Traits>& queue,
-    const typename Time_Traits::time_type& time,
-    typename timer_queue<Time_Traits>::per_timer_data& timer, wait_op* op)
-{
-  asio::detail::mutex::scoped_lock lock(mutex_);
-
-  if (shutdown_)
-  {
-    io_service_.post_immediate_completion(op, false);
-    return;
-  }
-
-  bool earliest = queue.enqueue_timer(time, timer, op);
-  io_service_.work_started();
-  if (earliest)
-    interrupter_.interrupt();
-}
-
-template <typename Time_Traits>
-std::size_t dev_poll_reactor::cancel_timer(timer_queue<Time_Traits>& queue,
-    typename timer_queue<Time_Traits>::per_timer_data& timer,
-    std::size_t max_cancelled)
-{
-  asio::detail::mutex::scoped_lock lock(mutex_);
-  op_queue<operation> ops;
-  std::size_t n = queue.cancel_timer(timer, ops, max_cancelled);
-  lock.unlock();
-  io_service_.post_deferred_completions(ops);
-  return n;
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_DEV_POLL)
-
-#endif // ASIO_DETAIL_IMPL_DEV_POLL_REACTOR_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/dev_poll_reactor.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/dev_poll_reactor.ipp
deleted file mode 100644
index 3439370..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/dev_poll_reactor.ipp
+++ /dev/null
@@ -1,430 +0,0 @@
-//
-// detail/impl/dev_poll_reactor.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_DEV_POLL_REACTOR_IPP
-#define ASIO_DETAIL_IMPL_DEV_POLL_REACTOR_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_DEV_POLL)
-
-#include "asio/detail/dev_poll_reactor.hpp"
-#include "asio/detail/assert.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-dev_poll_reactor::dev_poll_reactor(asio::io_service& io_service)
-  : asio::detail::service_base<dev_poll_reactor>(io_service),
-    io_service_(use_service<io_service_impl>(io_service)),
-    mutex_(),
-    dev_poll_fd_(do_dev_poll_create()),
-    interrupter_(),
-    shutdown_(false)
-{
-  // Add the interrupter's descriptor to /dev/poll.
-  ::pollfd ev = { 0, 0, 0 };
-  ev.fd = interrupter_.read_descriptor();
-  ev.events = POLLIN | POLLERR;
-  ev.revents = 0;
-  ::write(dev_poll_fd_, &ev, sizeof(ev));
-}
-
-dev_poll_reactor::~dev_poll_reactor()
-{
-  shutdown_service();
-  ::close(dev_poll_fd_);
-}
-
-void dev_poll_reactor::shutdown_service()
-{
-  asio::detail::mutex::scoped_lock lock(mutex_);
-  shutdown_ = true;
-  lock.unlock();
-
-  op_queue<operation> ops;
-
-  for (int i = 0; i < max_ops; ++i)
-    op_queue_[i].get_all_operations(ops);
-
-  timer_queues_.get_all_timers(ops);
-
-  io_service_.abandon_operations(ops);
-} 
-
-void dev_poll_reactor::fork_service(asio::io_service::fork_event fork_ev)
-{
-  if (fork_ev == asio::io_service::fork_child)
-  {
-    detail::mutex::scoped_lock lock(mutex_);
-
-    if (dev_poll_fd_ != -1)
-      ::close(dev_poll_fd_);
-    dev_poll_fd_ = -1;
-    dev_poll_fd_ = do_dev_poll_create();
-
-    interrupter_.recreate();
-
-    // Add the interrupter's descriptor to /dev/poll.
-    ::pollfd ev = { 0, 0, 0 };
-    ev.fd = interrupter_.read_descriptor();
-    ev.events = POLLIN | POLLERR;
-    ev.revents = 0;
-    ::write(dev_poll_fd_, &ev, sizeof(ev));
-
-    // Re-register all descriptors with /dev/poll. The changes will be written
-    // to the /dev/poll descriptor the next time the reactor is run.
-    for (int i = 0; i < max_ops; ++i)
-    {
-      reactor_op_queue<socket_type>::iterator iter = op_queue_[i].begin();
-      reactor_op_queue<socket_type>::iterator end = op_queue_[i].end();
-      for (; iter != end; ++iter)
-      {
-        ::pollfd& pending_ev = add_pending_event_change(iter->first);
-        pending_ev.events |= POLLERR | POLLHUP;
-        switch (i)
-        {
-        case read_op: pending_ev.events |= POLLIN; break;
-        case write_op: pending_ev.events |= POLLOUT; break;
-        case except_op: pending_ev.events |= POLLPRI; break;
-        default: break;
-        }
-      }
-    }
-    interrupter_.interrupt();
-  }
-}
-
-void dev_poll_reactor::init_task()
-{
-  io_service_.init_task();
-}
-
-int dev_poll_reactor::register_descriptor(socket_type, per_descriptor_data&)
-{
-  return 0;
-}
-
-int dev_poll_reactor::register_internal_descriptor(int op_type,
-    socket_type descriptor, per_descriptor_data&, reactor_op* op)
-{
-  asio::detail::mutex::scoped_lock lock(mutex_);
-
-  op_queue_[op_type].enqueue_operation(descriptor, op);
-  ::pollfd& ev = add_pending_event_change(descriptor);
-  ev.events = POLLERR | POLLHUP;
-  switch (op_type)
-  {
-  case read_op: ev.events |= POLLIN; break;
-  case write_op: ev.events |= POLLOUT; break;
-  case except_op: ev.events |= POLLPRI; break;
-  default: break;
-  }
-  interrupter_.interrupt();
-
-  return 0;
-}
-
-void dev_poll_reactor::move_descriptor(socket_type,
-    dev_poll_reactor::per_descriptor_data&,
-    dev_poll_reactor::per_descriptor_data&)
-{
-}
-
-void dev_poll_reactor::start_op(int op_type, socket_type descriptor,
-    dev_poll_reactor::per_descriptor_data&, reactor_op* op,
-    bool is_continuation, bool allow_speculative)
-{
-  asio::detail::mutex::scoped_lock lock(mutex_);
-
-  if (shutdown_)
-  {
-    post_immediate_completion(op, is_continuation);
-    return;
-  }
-
-  if (allow_speculative)
-  {
-    if (op_type != read_op || !op_queue_[except_op].has_operation(descriptor))
-    {
-      if (!op_queue_[op_type].has_operation(descriptor))
-      {
-        if (op->perform())
-        {
-          lock.unlock();
-          io_service_.post_immediate_completion(op, is_continuation);
-          return;
-        }
-      }
-    }
-  }
-
-  bool first = op_queue_[op_type].enqueue_operation(descriptor, op);
-  io_service_.work_started();
-  if (first)
-  {
-    ::pollfd& ev = add_pending_event_change(descriptor);
-    ev.events = POLLERR | POLLHUP;
-    if (op_type == read_op
-        || op_queue_[read_op].has_operation(descriptor))
-      ev.events |= POLLIN;
-    if (op_type == write_op
-        || op_queue_[write_op].has_operation(descriptor))
-      ev.events |= POLLOUT;
-    if (op_type == except_op
-        || op_queue_[except_op].has_operation(descriptor))
-      ev.events |= POLLPRI;
-    interrupter_.interrupt();
-  }
-}
-
-void dev_poll_reactor::cancel_ops(socket_type descriptor,
-    dev_poll_reactor::per_descriptor_data&)
-{
-  asio::detail::mutex::scoped_lock lock(mutex_);
-  cancel_ops_unlocked(descriptor, asio::error::operation_aborted);
-}
-
-void dev_poll_reactor::deregister_descriptor(socket_type descriptor,
-    dev_poll_reactor::per_descriptor_data&, bool)
-{
-  asio::detail::mutex::scoped_lock lock(mutex_);
-
-  // Remove the descriptor from /dev/poll.
-  ::pollfd& ev = add_pending_event_change(descriptor);
-  ev.events = POLLREMOVE;
-  interrupter_.interrupt();
-
-  // Cancel any outstanding operations associated with the descriptor.
-  cancel_ops_unlocked(descriptor, asio::error::operation_aborted);
-}
-
-void dev_poll_reactor::deregister_internal_descriptor(
-    socket_type descriptor, dev_poll_reactor::per_descriptor_data&)
-{
-  asio::detail::mutex::scoped_lock lock(mutex_);
-
-  // Remove the descriptor from /dev/poll. Since this function is only called
-  // during a fork, we can apply the change immediately.
-  ::pollfd ev = { 0, 0, 0 };
-  ev.fd = descriptor;
-  ev.events = POLLREMOVE;
-  ev.revents = 0;
-  ::write(dev_poll_fd_, &ev, sizeof(ev));
-
-  // Destroy all operations associated with the descriptor.
-  op_queue<operation> ops;
-  asio::error_code ec;
-  for (int i = 0; i < max_ops; ++i)
-    op_queue_[i].cancel_operations(descriptor, ops, ec);
-}
-
-void dev_poll_reactor::run(bool block, op_queue<operation>& ops)
-{
-  asio::detail::mutex::scoped_lock lock(mutex_);
-
-  // We can return immediately if there's no work to do and the reactor is
-  // not supposed to block.
-  if (!block && op_queue_[read_op].empty() && op_queue_[write_op].empty()
-      && op_queue_[except_op].empty() && timer_queues_.all_empty())
-    return;
-
-  // Write the pending event registration changes to the /dev/poll descriptor.
-  std::size_t events_size = sizeof(::pollfd) * pending_event_changes_.size();
-  if (events_size > 0)
-  {
-    errno = 0;
-    int result = ::write(dev_poll_fd_,
-        &pending_event_changes_[0], events_size);
-    if (result != static_cast<int>(events_size))
-    {
-      asio::error_code ec = asio::error_code(
-          errno, asio::error::get_system_category());
-      for (std::size_t i = 0; i < pending_event_changes_.size(); ++i)
-      {
-        int descriptor = pending_event_changes_[i].fd;
-        for (int j = 0; j < max_ops; ++j)
-          op_queue_[j].cancel_operations(descriptor, ops, ec);
-      }
-    }
-    pending_event_changes_.clear();
-    pending_event_change_index_.clear();
-  }
-
-  int timeout = block ? get_timeout() : 0;
-  lock.unlock();
-
-  // Block on the /dev/poll descriptor.
-  ::pollfd events[128] = { { 0, 0, 0 } };
-  ::dvpoll dp = { 0, 0, 0 };
-  dp.dp_fds = events;
-  dp.dp_nfds = 128;
-  dp.dp_timeout = timeout;
-  int num_events = ::ioctl(dev_poll_fd_, DP_POLL, &dp);
-
-  lock.lock();
-
-  // Dispatch the waiting events.
-  for (int i = 0; i < num_events; ++i)
-  {
-    int descriptor = events[i].fd;
-    if (descriptor == interrupter_.read_descriptor())
-    {
-      interrupter_.reset();
-    }
-    else
-    {
-      bool more_reads = false;
-      bool more_writes = false;
-      bool more_except = false;
-
-      // Exception operations must be processed first to ensure that any
-      // out-of-band data is read before normal data.
-      if (events[i].events & (POLLPRI | POLLERR | POLLHUP))
-        more_except =
-          op_queue_[except_op].perform_operations(descriptor, ops);
-      else
-        more_except = op_queue_[except_op].has_operation(descriptor);
-
-      if (events[i].events & (POLLIN | POLLERR | POLLHUP))
-        more_reads = op_queue_[read_op].perform_operations(descriptor, ops);
-      else
-        more_reads = op_queue_[read_op].has_operation(descriptor);
-
-      if (events[i].events & (POLLOUT | POLLERR | POLLHUP))
-        more_writes = op_queue_[write_op].perform_operations(descriptor, ops);
-      else
-        more_writes = op_queue_[write_op].has_operation(descriptor);
-
-      if ((events[i].events & (POLLERR | POLLHUP)) != 0
-            && !more_except && !more_reads && !more_writes)
-      {
-        // If we have an event and no operations associated with the
-        // descriptor then we need to delete the descriptor from /dev/poll.
-        // The poll operation can produce POLLHUP or POLLERR events when there
-        // is no operation pending, so if we do not remove the descriptor we
-        // can end up in a tight polling loop.
-        ::pollfd ev = { 0, 0, 0 };
-        ev.fd = descriptor;
-        ev.events = POLLREMOVE;
-        ev.revents = 0;
-        ::write(dev_poll_fd_, &ev, sizeof(ev));
-      }
-      else
-      {
-        ::pollfd ev = { 0, 0, 0 };
-        ev.fd = descriptor;
-        ev.events = POLLERR | POLLHUP;
-        if (more_reads)
-          ev.events |= POLLIN;
-        if (more_writes)
-          ev.events |= POLLOUT;
-        if (more_except)
-          ev.events |= POLLPRI;
-        ev.revents = 0;
-        int result = ::write(dev_poll_fd_, &ev, sizeof(ev));
-        if (result != sizeof(ev))
-        {
-          asio::error_code ec(errno,
-              asio::error::get_system_category());
-          for (int j = 0; j < max_ops; ++j)
-            op_queue_[j].cancel_operations(descriptor, ops, ec);
-        }
-      }
-    }
-  }
-  timer_queues_.get_ready_timers(ops);
-}
-
-void dev_poll_reactor::interrupt()
-{
-  interrupter_.interrupt();
-}
-
-int dev_poll_reactor::do_dev_poll_create()
-{
-  int fd = ::open("/dev/poll", O_RDWR);
-  if (fd == -1)
-  {
-    asio::error_code ec(errno,
-        asio::error::get_system_category());
-    asio::detail::throw_error(ec, "/dev/poll");
-  }
-  return fd;
-}
-
-void dev_poll_reactor::do_add_timer_queue(timer_queue_base& queue)
-{
-  mutex::scoped_lock lock(mutex_);
-  timer_queues_.insert(&queue);
-}
-
-void dev_poll_reactor::do_remove_timer_queue(timer_queue_base& queue)
-{
-  mutex::scoped_lock lock(mutex_);
-  timer_queues_.erase(&queue);
-}
-
-int dev_poll_reactor::get_timeout()
-{
-  // By default we will wait no longer than 5 minutes. This will ensure that
-  // any changes to the system clock are detected after no longer than this.
-  return timer_queues_.wait_duration_msec(5 * 60 * 1000);
-}
-
-void dev_poll_reactor::cancel_ops_unlocked(socket_type descriptor,
-    const asio::error_code& ec)
-{
-  bool need_interrupt = false;
-  op_queue<operation> ops;
-  for (int i = 0; i < max_ops; ++i)
-    need_interrupt = op_queue_[i].cancel_operations(
-        descriptor, ops, ec) || need_interrupt;
-  io_service_.post_deferred_completions(ops);
-  if (need_interrupt)
-    interrupter_.interrupt();
-}
-
-::pollfd& dev_poll_reactor::add_pending_event_change(int descriptor)
-{
-  hash_map<int, std::size_t>::iterator iter
-    = pending_event_change_index_.find(descriptor);
-  if (iter == pending_event_change_index_.end())
-  {
-    std::size_t index = pending_event_changes_.size();
-    pending_event_changes_.reserve(pending_event_changes_.size() + 1);
-    pending_event_change_index_.insert(std::make_pair(descriptor, index));
-    pending_event_changes_.push_back(::pollfd());
-    pending_event_changes_[index].fd = descriptor;
-    pending_event_changes_[index].revents = 0;
-    return pending_event_changes_[index];
-  }
-  else
-  {
-    return pending_event_changes_[iter->second];
-  }
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_DEV_POLL)
-
-#endif // ASIO_DETAIL_IMPL_DEV_POLL_REACTOR_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/epoll_reactor.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/epoll_reactor.hpp
deleted file mode 100644
index 8d276d1..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/epoll_reactor.hpp
+++ /dev/null
@@ -1,76 +0,0 @@
-//
-// detail/impl/epoll_reactor.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_EPOLL_REACTOR_HPP
-#define ASIO_DETAIL_IMPL_EPOLL_REACTOR_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#if defined(ASIO_HAS_EPOLL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Time_Traits>
-void epoll_reactor::add_timer_queue(timer_queue<Time_Traits>& queue)
-{
-  do_add_timer_queue(queue);
-}
-
-template <typename Time_Traits>
-void epoll_reactor::remove_timer_queue(timer_queue<Time_Traits>& queue)
-{
-  do_remove_timer_queue(queue);
-}
-
-template <typename Time_Traits>
-void epoll_reactor::schedule_timer(timer_queue<Time_Traits>& queue,
-    const typename Time_Traits::time_type& time,
-    typename timer_queue<Time_Traits>::per_timer_data& timer, wait_op* op)
-{
-  mutex::scoped_lock lock(mutex_);
-
-  if (shutdown_)
-  {
-    io_service_.post_immediate_completion(op, false);
-    return;
-  }
-
-  bool earliest = queue.enqueue_timer(time, timer, op);
-  io_service_.work_started();
-  if (earliest)
-    update_timeout();
-}
-
-template <typename Time_Traits>
-std::size_t epoll_reactor::cancel_timer(timer_queue<Time_Traits>& queue,
-    typename timer_queue<Time_Traits>::per_timer_data& timer,
-    std::size_t max_cancelled)
-{
-  mutex::scoped_lock lock(mutex_);
-  op_queue<operation> ops;
-  std::size_t n = queue.cancel_timer(timer, ops, max_cancelled);
-  lock.unlock();
-  io_service_.post_deferred_completions(ops);
-  return n;
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_EPOLL)
-
-#endif // ASIO_DETAIL_IMPL_EPOLL_REACTOR_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/epoll_reactor.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/epoll_reactor.ipp
deleted file mode 100644
index 8af8dfe..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/epoll_reactor.ipp
+++ /dev/null
@@ -1,662 +0,0 @@
-//
-// detail/impl/epoll_reactor.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_EPOLL_REACTOR_IPP
-#define ASIO_DETAIL_IMPL_EPOLL_REACTOR_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_EPOLL)
-
-#include <cstddef>
-#include <sys/epoll.h>
-#include "asio/detail/epoll_reactor.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-
-#if defined(ASIO_HAS_TIMERFD)
-# include <sys/timerfd.h>
-#endif // defined(ASIO_HAS_TIMERFD)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-epoll_reactor::epoll_reactor(asio::io_service& io_service)
-  : asio::detail::service_base<epoll_reactor>(io_service),
-    io_service_(use_service<io_service_impl>(io_service)),
-    mutex_(),
-    interrupter_(),
-    epoll_fd_(do_epoll_create()),
-    timer_fd_(do_timerfd_create()),
-    shutdown_(false)
-{
-  // Add the interrupter's descriptor to epoll.
-  epoll_event ev = { 0, { 0 } };
-  ev.events = EPOLLIN | EPOLLERR | EPOLLET;
-  ev.data.ptr = &interrupter_;
-  epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, interrupter_.read_descriptor(), &ev);
-  interrupter_.interrupt();
-
-  // Add the timer descriptor to epoll.
-  if (timer_fd_ != -1)
-  {
-    ev.events = EPOLLIN | EPOLLERR;
-    ev.data.ptr = &timer_fd_;
-    epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, timer_fd_, &ev);
-  }
-}
-
-epoll_reactor::~epoll_reactor()
-{
-  if (epoll_fd_ != -1)
-    close(epoll_fd_);
-  if (timer_fd_ != -1)
-    close(timer_fd_);
-}
-
-void epoll_reactor::shutdown_service()
-{
-  mutex::scoped_lock lock(mutex_);
-  shutdown_ = true;
-  lock.unlock();
-
-  op_queue<operation> ops;
-
-  while (descriptor_state* state = registered_descriptors_.first())
-  {
-    for (int i = 0; i < max_ops; ++i)
-      ops.push(state->op_queue_[i]);
-    state->shutdown_ = true;
-    registered_descriptors_.free(state);
-  }
-
-  timer_queues_.get_all_timers(ops);
-
-  io_service_.abandon_operations(ops);
-}
-
-void epoll_reactor::fork_service(asio::io_service::fork_event fork_ev)
-{
-  if (fork_ev == asio::io_service::fork_child)
-  {
-    if (epoll_fd_ != -1)
-      ::close(epoll_fd_);
-    epoll_fd_ = -1;
-    epoll_fd_ = do_epoll_create();
-
-    if (timer_fd_ != -1)
-      ::close(timer_fd_);
-    timer_fd_ = -1;
-    timer_fd_ = do_timerfd_create();
-
-    interrupter_.recreate();
-
-    // Add the interrupter's descriptor to epoll.
-    epoll_event ev = { 0, { 0 } };
-    ev.events = EPOLLIN | EPOLLERR | EPOLLET;
-    ev.data.ptr = &interrupter_;
-    epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, interrupter_.read_descriptor(), &ev);
-    interrupter_.interrupt();
-
-    // Add the timer descriptor to epoll.
-    if (timer_fd_ != -1)
-    {
-      ev.events = EPOLLIN | EPOLLERR;
-      ev.data.ptr = &timer_fd_;
-      epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, timer_fd_, &ev);
-    }
-
-    update_timeout();
-
-    // Re-register all descriptors with epoll.
-    mutex::scoped_lock descriptors_lock(registered_descriptors_mutex_);
-    for (descriptor_state* state = registered_descriptors_.first();
-        state != 0; state = state->next_)
-    {
-      ev.events = state->registered_events_;
-      ev.data.ptr = state;
-      int result = epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, state->descriptor_, &ev);
-      if (result != 0)
-      {
-        asio::error_code ec(errno,
-            asio::error::get_system_category());
-        asio::detail::throw_error(ec, "epoll re-registration");
-      }
-    }
-  }
-}
-
-void epoll_reactor::init_task()
-{
-  io_service_.init_task();
-}
-
-int epoll_reactor::register_descriptor(socket_type descriptor,
-    epoll_reactor::per_descriptor_data& descriptor_data)
-{
-  descriptor_data = allocate_descriptor_state();
-
-  {
-    mutex::scoped_lock descriptor_lock(descriptor_data->mutex_);
-
-    descriptor_data->reactor_ = this;
-    descriptor_data->descriptor_ = descriptor;
-    descriptor_data->shutdown_ = false;
-  }
-
-  epoll_event ev = { 0, { 0 } };
-  ev.events = EPOLLIN | EPOLLERR | EPOLLHUP | EPOLLPRI | EPOLLET;
-  descriptor_data->registered_events_ = ev.events;
-  ev.data.ptr = descriptor_data;
-  int result = epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, descriptor, &ev);
-  if (result != 0)
-    return errno;
-
-  return 0;
-}
-
-int epoll_reactor::register_internal_descriptor(
-    int op_type, socket_type descriptor,
-    epoll_reactor::per_descriptor_data& descriptor_data, reactor_op* op)
-{
-  descriptor_data = allocate_descriptor_state();
-
-  {
-    mutex::scoped_lock descriptor_lock(descriptor_data->mutex_);
-
-    descriptor_data->reactor_ = this;
-    descriptor_data->descriptor_ = descriptor;
-    descriptor_data->shutdown_ = false;
-    descriptor_data->op_queue_[op_type].push(op);
-  }
-
-  epoll_event ev = { 0, { 0 } };
-  ev.events = EPOLLIN | EPOLLERR | EPOLLHUP | EPOLLPRI | EPOLLET;
-  descriptor_data->registered_events_ = ev.events;
-  ev.data.ptr = descriptor_data;
-  int result = epoll_ctl(epoll_fd_, EPOLL_CTL_ADD, descriptor, &ev);
-  if (result != 0)
-    return errno;
-
-  return 0;
-}
-
-void epoll_reactor::move_descriptor(socket_type,
-    epoll_reactor::per_descriptor_data& target_descriptor_data,
-    epoll_reactor::per_descriptor_data& source_descriptor_data)
-{
-  target_descriptor_data = source_descriptor_data;
-  source_descriptor_data = 0;
-}
-
-void epoll_reactor::start_op(int op_type, socket_type descriptor,
-    epoll_reactor::per_descriptor_data& descriptor_data, reactor_op* op,
-    bool is_continuation, bool allow_speculative)
-{
-  if (!descriptor_data)
-  {
-    op->ec_ = asio::error::bad_descriptor;
-    post_immediate_completion(op, is_continuation);
-    return;
-  }
-
-  mutex::scoped_lock descriptor_lock(descriptor_data->mutex_);
-
-  if (descriptor_data->shutdown_)
-  {
-    post_immediate_completion(op, is_continuation);
-    return;
-  }
-
-  if (descriptor_data->op_queue_[op_type].empty())
-  {
-    if (allow_speculative
-        && (op_type != read_op
-          || descriptor_data->op_queue_[except_op].empty()))
-    {
-      if (op->perform())
-      {
-        descriptor_lock.unlock();
-        io_service_.post_immediate_completion(op, is_continuation);
-        return;
-      }
-
-      if (op_type == write_op)
-      {
-        if ((descriptor_data->registered_events_ & EPOLLOUT) == 0)
-        {
-          epoll_event ev = { 0, { 0 } };
-          ev.events = descriptor_data->registered_events_ | EPOLLOUT;
-          ev.data.ptr = descriptor_data;
-          if (epoll_ctl(epoll_fd_, EPOLL_CTL_MOD, descriptor, &ev) == 0)
-          {
-            descriptor_data->registered_events_ |= ev.events;
-          }
-          else
-          {
-            op->ec_ = asio::error_code(errno,
-                asio::error::get_system_category());
-            io_service_.post_immediate_completion(op, is_continuation);
-            return;
-          }
-        }
-      }
-    }
-    else
-    {
-      if (op_type == write_op)
-      {
-        descriptor_data->registered_events_ |= EPOLLOUT;
-      }
-
-      epoll_event ev = { 0, { 0 } };
-      ev.events = descriptor_data->registered_events_;
-      ev.data.ptr = descriptor_data;
-      epoll_ctl(epoll_fd_, EPOLL_CTL_MOD, descriptor, &ev);
-    }
-  }
-
-  descriptor_data->op_queue_[op_type].push(op);
-  io_service_.work_started();
-}
-
-void epoll_reactor::cancel_ops(socket_type,
-    epoll_reactor::per_descriptor_data& descriptor_data)
-{
-  if (!descriptor_data)
-    return;
-
-  mutex::scoped_lock descriptor_lock(descriptor_data->mutex_);
-
-  op_queue<operation> ops;
-  for (int i = 0; i < max_ops; ++i)
-  {
-    while (reactor_op* op = descriptor_data->op_queue_[i].front())
-    {
-      op->ec_ = asio::error::operation_aborted;
-      descriptor_data->op_queue_[i].pop();
-      ops.push(op);
-    }
-  }
-
-  descriptor_lock.unlock();
-
-  io_service_.post_deferred_completions(ops);
-}
-
-void epoll_reactor::deregister_descriptor(socket_type descriptor,
-    epoll_reactor::per_descriptor_data& descriptor_data, bool closing)
-{
-  if (!descriptor_data)
-    return;
-
-  mutex::scoped_lock descriptor_lock(descriptor_data->mutex_);
-
-  if (!descriptor_data->shutdown_)
-  {
-    if (closing)
-    {
-      // The descriptor will be automatically removed from the epoll set when
-      // it is closed.
-    }
-    else
-    {
-      epoll_event ev = { 0, { 0 } };
-      epoll_ctl(epoll_fd_, EPOLL_CTL_DEL, descriptor, &ev);
-    }
-
-    op_queue<operation> ops;
-    for (int i = 0; i < max_ops; ++i)
-    {
-      while (reactor_op* op = descriptor_data->op_queue_[i].front())
-      {
-        op->ec_ = asio::error::operation_aborted;
-        descriptor_data->op_queue_[i].pop();
-        ops.push(op);
-      }
-    }
-
-    descriptor_data->descriptor_ = -1;
-    descriptor_data->shutdown_ = true;
-
-    descriptor_lock.unlock();
-
-    free_descriptor_state(descriptor_data);
-    descriptor_data = 0;
-
-    io_service_.post_deferred_completions(ops);
-  }
-}
-
-void epoll_reactor::deregister_internal_descriptor(socket_type descriptor,
-    epoll_reactor::per_descriptor_data& descriptor_data)
-{
-  if (!descriptor_data)
-    return;
-
-  mutex::scoped_lock descriptor_lock(descriptor_data->mutex_);
-
-  if (!descriptor_data->shutdown_)
-  {
-    epoll_event ev = { 0, { 0 } };
-    epoll_ctl(epoll_fd_, EPOLL_CTL_DEL, descriptor, &ev);
-
-    op_queue<operation> ops;
-    for (int i = 0; i < max_ops; ++i)
-      ops.push(descriptor_data->op_queue_[i]);
-
-    descriptor_data->descriptor_ = -1;
-    descriptor_data->shutdown_ = true;
-
-    descriptor_lock.unlock();
-
-    free_descriptor_state(descriptor_data);
-    descriptor_data = 0;
-  }
-}
-
-void epoll_reactor::run(bool block, op_queue<operation>& ops)
-{
-  // This code relies on the fact that the task_io_service queues the reactor
-  // task behind all descriptor operations generated by this function. This
-  // means, that by the time we reach this point, any previously returned
-  // descriptor operations have already been dequeued. Therefore it is now safe
-  // for us to reuse and return them for the task_io_service to queue again.
-
-  // Calculate a timeout only if timerfd is not used.
-  int timeout;
-  if (timer_fd_ != -1)
-    timeout = block ? -1 : 0;
-  else
-  {
-    mutex::scoped_lock lock(mutex_);
-    timeout = block ? get_timeout() : 0;
-  }
-
-  // Block on the epoll descriptor.
-  epoll_event events[128];
-  int num_events = epoll_wait(epoll_fd_, events, 128, timeout);
-
-#if defined(ASIO_HAS_TIMERFD)
-  bool check_timers = (timer_fd_ == -1);
-#else // defined(ASIO_HAS_TIMERFD)
-  bool check_timers = true;
-#endif // defined(ASIO_HAS_TIMERFD)
-
-  // Dispatch the waiting events.
-  for (int i = 0; i < num_events; ++i)
-  {
-    void* ptr = events[i].data.ptr;
-    if (ptr == &interrupter_)
-    {
-      // No need to reset the interrupter since we're leaving the descriptor
-      // in a ready-to-read state and relying on edge-triggered notifications
-      // to make it so that we only get woken up when the descriptor's epoll
-      // registration is updated.
-
-#if defined(ASIO_HAS_TIMERFD)
-      if (timer_fd_ == -1)
-        check_timers = true;
-#else // defined(ASIO_HAS_TIMERFD)
-      check_timers = true;
-#endif // defined(ASIO_HAS_TIMERFD)
-    }
-#if defined(ASIO_HAS_TIMERFD)
-    else if (ptr == &timer_fd_)
-    {
-      check_timers = true;
-    }
-#endif // defined(ASIO_HAS_TIMERFD)
-    else
-    {
-      // The descriptor operation doesn't count as work in and of itself, so we
-      // don't call work_started() here. This still allows the io_service to
-      // stop if the only remaining operations are descriptor operations.
-      descriptor_state* descriptor_data = static_cast<descriptor_state*>(ptr);
-      descriptor_data->set_ready_events(events[i].events);
-      ops.push(descriptor_data);
-    }
-  }
-
-  if (check_timers)
-  {
-    mutex::scoped_lock common_lock(mutex_);
-    timer_queues_.get_ready_timers(ops);
-
-#if defined(ASIO_HAS_TIMERFD)
-    if (timer_fd_ != -1)
-    {
-      itimerspec new_timeout;
-      itimerspec old_timeout;
-      int flags = get_timeout(new_timeout);
-      timerfd_settime(timer_fd_, flags, &new_timeout, &old_timeout);
-    }
-#endif // defined(ASIO_HAS_TIMERFD)
-  }
-}
-
-void epoll_reactor::interrupt()
-{
-  epoll_event ev = { 0, { 0 } };
-  ev.events = EPOLLIN | EPOLLERR | EPOLLET;
-  ev.data.ptr = &interrupter_;
-  epoll_ctl(epoll_fd_, EPOLL_CTL_MOD, interrupter_.read_descriptor(), &ev);
-}
-
-int epoll_reactor::do_epoll_create()
-{
-#if defined(EPOLL_CLOEXEC)
-  int fd = epoll_create1(EPOLL_CLOEXEC);
-#else // defined(EPOLL_CLOEXEC)
-  int fd = -1;
-  errno = EINVAL;
-#endif // defined(EPOLL_CLOEXEC)
-
-  if (fd == -1 && (errno == EINVAL || errno == ENOSYS))
-  {
-    fd = epoll_create(epoll_size);
-    if (fd != -1)
-      ::fcntl(fd, F_SETFD, FD_CLOEXEC);
-  }
-
-  if (fd == -1)
-  {
-    asio::error_code ec(errno,
-        asio::error::get_system_category());
-    asio::detail::throw_error(ec, "epoll");
-  }
-
-  return fd;
-}
-
-int epoll_reactor::do_timerfd_create()
-{
-#if defined(ASIO_HAS_TIMERFD)
-# if defined(TFD_CLOEXEC)
-  int fd = timerfd_create(CLOCK_MONOTONIC, TFD_CLOEXEC);
-# else // defined(TFD_CLOEXEC)
-  int fd = -1;
-  errno = EINVAL;
-# endif // defined(TFD_CLOEXEC)
-
-  if (fd == -1 && errno == EINVAL)
-  {
-    fd = timerfd_create(CLOCK_MONOTONIC, 0);
-    if (fd != -1)
-      ::fcntl(fd, F_SETFD, FD_CLOEXEC);
-  }
-
-  return fd;
-#else // defined(ASIO_HAS_TIMERFD)
-  return -1;
-#endif // defined(ASIO_HAS_TIMERFD)
-}
-
-epoll_reactor::descriptor_state* epoll_reactor::allocate_descriptor_state()
-{
-  mutex::scoped_lock descriptors_lock(registered_descriptors_mutex_);
-  return registered_descriptors_.alloc();
-}
-
-void epoll_reactor::free_descriptor_state(epoll_reactor::descriptor_state* s)
-{
-  mutex::scoped_lock descriptors_lock(registered_descriptors_mutex_);
-  registered_descriptors_.free(s);
-}
-
-void epoll_reactor::do_add_timer_queue(timer_queue_base& queue)
-{
-  mutex::scoped_lock lock(mutex_);
-  timer_queues_.insert(&queue);
-}
-
-void epoll_reactor::do_remove_timer_queue(timer_queue_base& queue)
-{
-  mutex::scoped_lock lock(mutex_);
-  timer_queues_.erase(&queue);
-}
-
-void epoll_reactor::update_timeout()
-{
-#if defined(ASIO_HAS_TIMERFD)
-  if (timer_fd_ != -1)
-  {
-    itimerspec new_timeout;
-    itimerspec old_timeout;
-    int flags = get_timeout(new_timeout);
-    timerfd_settime(timer_fd_, flags, &new_timeout, &old_timeout);
-    return;
-  }
-#endif // defined(ASIO_HAS_TIMERFD)
-  interrupt();
-}
-
-int epoll_reactor::get_timeout()
-{
-  // By default we will wait no longer than 5 minutes. This will ensure that
-  // any changes to the system clock are detected after no longer than this.
-  return timer_queues_.wait_duration_msec(5 * 60 * 1000);
-}
-
-#if defined(ASIO_HAS_TIMERFD)
-int epoll_reactor::get_timeout(itimerspec& ts)
-{
-  ts.it_interval.tv_sec = 0;
-  ts.it_interval.tv_nsec = 0;
-
-  long usec = timer_queues_.wait_duration_usec(5 * 60 * 1000 * 1000);
-  ts.it_value.tv_sec = usec / 1000000;
-  ts.it_value.tv_nsec = usec ? (usec % 1000000) * 1000 : 1;
-
-  return usec ? 0 : TFD_TIMER_ABSTIME;
-}
-#endif // defined(ASIO_HAS_TIMERFD)
-
-struct epoll_reactor::perform_io_cleanup_on_block_exit
-{
-  explicit perform_io_cleanup_on_block_exit(epoll_reactor* r)
-    : reactor_(r), first_op_(0)
-  {
-  }
-
-  ~perform_io_cleanup_on_block_exit()
-  {
-    if (first_op_)
-    {
-      // Post the remaining completed operations for invocation.
-      if (!ops_.empty())
-        reactor_->io_service_.post_deferred_completions(ops_);
-
-      // A user-initiated operation has completed, but there's no need to
-      // explicitly call work_finished() here. Instead, we'll take advantage of
-      // the fact that the task_io_service will call work_finished() once we
-      // return.
-    }
-    else
-    {
-      // No user-initiated operations have completed, so we need to compensate
-      // for the work_finished() call that the task_io_service will make once
-      // this operation returns.
-      reactor_->io_service_.work_started();
-    }
-  }
-
-  epoll_reactor* reactor_;
-  op_queue<operation> ops_;
-  operation* first_op_;
-};
-
-epoll_reactor::descriptor_state::descriptor_state()
-  : operation(&epoll_reactor::descriptor_state::do_complete)
-{
-}
-
-operation* epoll_reactor::descriptor_state::perform_io(uint32_t events)
-{
-  mutex_.lock();
-  perform_io_cleanup_on_block_exit io_cleanup(reactor_);
-  mutex::scoped_lock descriptor_lock(mutex_, mutex::scoped_lock::adopt_lock);
-
-  // Exception operations must be processed first to ensure that any
-  // out-of-band data is read before normal data.
-  static const int flag[max_ops] = { EPOLLIN, EPOLLOUT, EPOLLPRI };
-  for (int j = max_ops - 1; j >= 0; --j)
-  {
-    if (events & (flag[j] | EPOLLERR | EPOLLHUP))
-    {
-      while (reactor_op* op = op_queue_[j].front())
-      {
-        if (op->perform())
-        {
-          op_queue_[j].pop();
-          io_cleanup.ops_.push(op);
-        }
-        else
-          break;
-      }
-    }
-  }
-
-  // The first operation will be returned for completion now. The others will
-  // be posted for later by the io_cleanup object's destructor.
-  io_cleanup.first_op_ = io_cleanup.ops_.front();
-  io_cleanup.ops_.pop();
-  return io_cleanup.first_op_;
-}
-
-void epoll_reactor::descriptor_state::do_complete(
-    io_service_impl* owner, operation* base,
-    const asio::error_code& ec, std::size_t bytes_transferred)
-{
-  if (owner)
-  {
-    descriptor_state* descriptor_data = static_cast<descriptor_state*>(base);
-    uint32_t events = static_cast<uint32_t>(bytes_transferred);
-    if (operation* op = descriptor_data->perform_io(events))
-    {
-      op->complete(*owner, ec, 0);
-    }
-  }
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_EPOLL)
-
-#endif // ASIO_DETAIL_IMPL_EPOLL_REACTOR_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/eventfd_select_interrupter.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/eventfd_select_interrupter.ipp
deleted file mode 100644
index 744ab0c..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/eventfd_select_interrupter.ipp
+++ /dev/null
@@ -1,165 +0,0 @@
-//
-// detail/impl/eventfd_select_interrupter.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2008 Roelof Naude (roelof.naude at gmail dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_EVENTFD_SELECT_INTERRUPTER_IPP
-#define ASIO_DETAIL_IMPL_EVENTFD_SELECT_INTERRUPTER_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_EVENTFD)
-
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <fcntl.h>
-#if __GLIBC__ == 2 && __GLIBC_MINOR__ < 8
-# include <asm/unistd.h>
-#else // __GLIBC__ == 2 && __GLIBC_MINOR__ < 8
-# include <sys/eventfd.h>
-#endif // __GLIBC__ == 2 && __GLIBC_MINOR__ < 8
-#include "asio/detail/cstdint.hpp"
-#include "asio/detail/eventfd_select_interrupter.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-eventfd_select_interrupter::eventfd_select_interrupter()
-{
-  open_descriptors();
-}
-
-void eventfd_select_interrupter::open_descriptors()
-{
-#if __GLIBC__ == 2 && __GLIBC_MINOR__ < 8
-  write_descriptor_ = read_descriptor_ = syscall(__NR_eventfd, 0);
-  if (read_descriptor_ != -1)
-  {
-    ::fcntl(read_descriptor_, F_SETFL, O_NONBLOCK);
-    ::fcntl(read_descriptor_, F_SETFD, FD_CLOEXEC);
-  }
-#else // __GLIBC__ == 2 && __GLIBC_MINOR__ < 8
-# if defined(EFD_CLOEXEC) && defined(EFD_NONBLOCK)
-  write_descriptor_ = read_descriptor_ =
-    ::eventfd(0, EFD_CLOEXEC | EFD_NONBLOCK);
-# else // defined(EFD_CLOEXEC) && defined(EFD_NONBLOCK)
-  errno = EINVAL;
-  write_descriptor_ = read_descriptor_ = -1;
-# endif // defined(EFD_CLOEXEC) && defined(EFD_NONBLOCK)
-  if (read_descriptor_ == -1 && errno == EINVAL)
-  {
-    write_descriptor_ = read_descriptor_ = ::eventfd(0, 0);
-    if (read_descriptor_ != -1)
-    {
-      ::fcntl(read_descriptor_, F_SETFL, O_NONBLOCK);
-      ::fcntl(read_descriptor_, F_SETFD, FD_CLOEXEC);
-    }
-  }
-#endif // __GLIBC__ == 2 && __GLIBC_MINOR__ < 8
-
-  if (read_descriptor_ == -1)
-  {
-    int pipe_fds[2];
-    if (pipe(pipe_fds) == 0)
-    {
-      read_descriptor_ = pipe_fds[0];
-      ::fcntl(read_descriptor_, F_SETFL, O_NONBLOCK);
-      ::fcntl(read_descriptor_, F_SETFD, FD_CLOEXEC);
-      write_descriptor_ = pipe_fds[1];
-      ::fcntl(write_descriptor_, F_SETFL, O_NONBLOCK);
-      ::fcntl(write_descriptor_, F_SETFD, FD_CLOEXEC);
-    }
-    else
-    {
-      asio::error_code ec(errno,
-          asio::error::get_system_category());
-      asio::detail::throw_error(ec, "eventfd_select_interrupter");
-    }
-  }
-}
-
-eventfd_select_interrupter::~eventfd_select_interrupter()
-{
-  close_descriptors();
-}
-
-void eventfd_select_interrupter::close_descriptors()
-{
-  if (write_descriptor_ != -1 && write_descriptor_ != read_descriptor_)
-    ::close(write_descriptor_);
-  if (read_descriptor_ != -1)
-    ::close(read_descriptor_);
-}
-
-void eventfd_select_interrupter::recreate()
-{
-  close_descriptors();
-
-  write_descriptor_ = -1;
-  read_descriptor_ = -1;
-
-  open_descriptors();
-}
-
-void eventfd_select_interrupter::interrupt()
-{
-  uint64_t counter(1UL);
-  int result = ::write(write_descriptor_, &counter, sizeof(uint64_t));
-  (void)result;
-}
-
-bool eventfd_select_interrupter::reset()
-{
-  if (write_descriptor_ == read_descriptor_)
-  {
-    for (;;)
-    {
-      // Only perform one read. The kernel maintains an atomic counter.
-      uint64_t counter(0);
-      errno = 0;
-      int bytes_read = ::read(read_descriptor_, &counter, sizeof(uint64_t));
-      if (bytes_read < 0 && errno == EINTR)
-        continue;
-      bool was_interrupted = (bytes_read > 0);
-      return was_interrupted;
-    }
-  }
-  else
-  {
-    for (;;)
-    {
-      // Clear all data from the pipe.
-      char data[1024];
-      int bytes_read = ::read(read_descriptor_, data, sizeof(data));
-      if (bytes_read < 0 && errno == EINTR)
-        continue;
-      bool was_interrupted = (bytes_read > 0);
-      while (bytes_read == sizeof(data))
-        bytes_read = ::read(read_descriptor_, data, sizeof(data));
-      return was_interrupted;
-    }
-  }
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_EVENTFD)
-
-#endif // ASIO_DETAIL_IMPL_EVENTFD_SELECT_INTERRUPTER_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/handler_tracking.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/handler_tracking.ipp
deleted file mode 100644
index 29fbe51..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/handler_tracking.ipp
+++ /dev/null
@@ -1,305 +0,0 @@
-//
-// detail/impl/handler_tracking.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_HANDLER_TRACKING_IPP
-#define ASIO_DETAIL_IMPL_HANDLER_TRACKING_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_ENABLE_HANDLER_TRACKING)
-
-#include <cstdarg>
-#include <cstdio>
-#include "asio/detail/handler_tracking.hpp"
-
-#if defined(ASIO_HAS_BOOST_DATE_TIME)
-# include "asio/time_traits.hpp"
-#else // defined(ASIO_HAS_BOOST_DATE_TIME)
-# if defined(ASIO_HAS_STD_CHRONO)
-#  include <chrono>
-# elif defined(ASIO_HAS_BOOST_CHRONO)
-#  include <boost/chrono/system_clocks.hpp>
-# endif
-# include "asio/detail/chrono_time_traits.hpp"
-# include "asio/wait_traits.hpp"
-#endif // defined(ASIO_HAS_BOOST_DATE_TIME)
-
-#if !defined(ASIO_WINDOWS)
-# include <unistd.h>
-#endif // !defined(ASIO_WINDOWS)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-struct handler_tracking_timestamp
-{
-  uint64_t seconds;
-  uint64_t microseconds;
-
-  handler_tracking_timestamp()
-  {
-#if defined(ASIO_HAS_BOOST_DATE_TIME)
-    boost::posix_time::ptime epoch(boost::gregorian::date(1970, 1, 1));
-    boost::posix_time::time_duration now =
-      boost::posix_time::microsec_clock::universal_time() - epoch;
-#elif defined(ASIO_HAS_STD_CHRONO)
-    typedef chrono_time_traits<std::chrono::system_clock,
-        asio::wait_traits<std::chrono::system_clock> > traits_helper;
-    traits_helper::posix_time_duration now(
-        std::chrono::system_clock::now().time_since_epoch());
-#elif defined(ASIO_HAS_BOOST_CHRONO)
-    typedef chrono_time_traits<boost::chrono::system_clock,
-        asio::wait_traits<boost::chrono::system_clock> > traits_helper;
-    traits_helper::posix_time_duration now(
-        boost::chrono::system_clock::now().time_since_epoch());
-#endif
-    seconds = static_cast<uint64_t>(now.total_seconds());
-    microseconds = static_cast<uint64_t>(now.total_microseconds() % 1000000);
-  }
-};
-
-struct handler_tracking::tracking_state
-{
-  static_mutex mutex_;
-  uint64_t next_id_;
-  tss_ptr<completion>* current_completion_;
-};
-
-handler_tracking::tracking_state* handler_tracking::get_state()
-{
-  static tracking_state state = { ASIO_STATIC_MUTEX_INIT, 1, 0 };
-  return &state;
-}
-
-void handler_tracking::init()
-{
-  static tracking_state* state = get_state();
-
-  state->mutex_.init();
-
-  static_mutex::scoped_lock lock(state->mutex_);
-  if (state->current_completion_ == 0)
-    state->current_completion_ = new tss_ptr<completion>;
-}
-
-void handler_tracking::creation(handler_tracking::tracked_handler* h,
-    const char* object_type, void* object, const char* op_name)
-{
-  static tracking_state* state = get_state();
-
-  static_mutex::scoped_lock lock(state->mutex_);
-  h->id_ = state->next_id_++;
-  lock.unlock();
-
-  handler_tracking_timestamp timestamp;
-
-  uint64_t current_id = 0;
-  if (completion* current_completion = *state->current_completion_)
-    current_id = current_completion->id_;
-
-  write_line(
-#if defined(ASIO_WINDOWS)
-      "@asio|%I64u.%06I64u|%I64u*%I64u|%.20s@%p.%.50s\n",
-#else // defined(ASIO_WINDOWS)
-      "@asio|%llu.%06llu|%llu*%llu|%.20s@%p.%.50s\n",
-#endif // defined(ASIO_WINDOWS)
-      timestamp.seconds, timestamp.microseconds,
-      current_id, h->id_, object_type, object, op_name);
-}
-
-handler_tracking::completion::completion(handler_tracking::tracked_handler* h)
-  : id_(h->id_),
-    invoked_(false),
-    next_(*get_state()->current_completion_)
-{
-  *get_state()->current_completion_ = this;
-}
-
-handler_tracking::completion::~completion()
-{
-  if (id_)
-  {
-    handler_tracking_timestamp timestamp;
-
-    write_line(
-#if defined(ASIO_WINDOWS)
-        "@asio|%I64u.%06I64u|%c%I64u|\n",
-#else // defined(ASIO_WINDOWS)
-        "@asio|%llu.%06llu|%c%llu|\n",
-#endif // defined(ASIO_WINDOWS)
-        timestamp.seconds, timestamp.microseconds,
-        invoked_ ? '!' : '~', id_);
-  }
-
-  *get_state()->current_completion_ = next_;
-}
-
-void handler_tracking::completion::invocation_begin()
-{
-  handler_tracking_timestamp timestamp;
-
-  write_line(
-#if defined(ASIO_WINDOWS)
-      "@asio|%I64u.%06I64u|>%I64u|\n",
-#else // defined(ASIO_WINDOWS)
-      "@asio|%llu.%06llu|>%llu|\n",
-#endif // defined(ASIO_WINDOWS)
-      timestamp.seconds, timestamp.microseconds, id_);
-
-  invoked_ = true;
-}
-
-void handler_tracking::completion::invocation_begin(
-    const asio::error_code& ec)
-{
-  handler_tracking_timestamp timestamp;
-
-  write_line(
-#if defined(ASIO_WINDOWS)
-      "@asio|%I64u.%06I64u|>%I64u|ec=%.20s:%d\n",
-#else // defined(ASIO_WINDOWS)
-      "@asio|%llu.%06llu|>%llu|ec=%.20s:%d\n",
-#endif // defined(ASIO_WINDOWS)
-      timestamp.seconds, timestamp.microseconds,
-      id_, ec.category().name(), ec.value());
-
-  invoked_ = true;
-}
-
-void handler_tracking::completion::invocation_begin(
-    const asio::error_code& ec, std::size_t bytes_transferred)
-{
-  handler_tracking_timestamp timestamp;
-
-  write_line(
-#if defined(ASIO_WINDOWS)
-      "@asio|%I64u.%06I64u|>%I64u|ec=%.20s:%d,bytes_transferred=%I64u\n",
-#else // defined(ASIO_WINDOWS)
-      "@asio|%llu.%06llu|>%llu|ec=%.20s:%d,bytes_transferred=%llu\n",
-#endif // defined(ASIO_WINDOWS)
-      timestamp.seconds, timestamp.microseconds,
-      id_, ec.category().name(), ec.value(),
-      static_cast<uint64_t>(bytes_transferred));
-
-  invoked_ = true;
-}
-
-void handler_tracking::completion::invocation_begin(
-    const asio::error_code& ec, int signal_number)
-{
-  handler_tracking_timestamp timestamp;
-
-  write_line(
-#if defined(ASIO_WINDOWS)
-      "@asio|%I64u.%06I64u|>%I64u|ec=%.20s:%d,signal_number=%d\n",
-#else // defined(ASIO_WINDOWS)
-      "@asio|%llu.%06llu|>%llu|ec=%.20s:%d,signal_number=%d\n",
-#endif // defined(ASIO_WINDOWS)
-      timestamp.seconds, timestamp.microseconds,
-      id_, ec.category().name(), ec.value(), signal_number);
-
-  invoked_ = true;
-}
-
-void handler_tracking::completion::invocation_begin(
-    const asio::error_code& ec, const char* arg)
-{
-  handler_tracking_timestamp timestamp;
-
-  write_line(
-#if defined(ASIO_WINDOWS)
-      "@asio|%I64u.%06I64u|>%I64u|ec=%.20s:%d,%.50s\n",
-#else // defined(ASIO_WINDOWS)
-      "@asio|%llu.%06llu|>%llu|ec=%.20s:%d,%.50s\n",
-#endif // defined(ASIO_WINDOWS)
-      timestamp.seconds, timestamp.microseconds,
-      id_, ec.category().name(), ec.value(), arg);
-
-  invoked_ = true;
-}
-
-void handler_tracking::completion::invocation_end()
-{
-  if (id_)
-  {
-    handler_tracking_timestamp timestamp;
-
-    write_line(
-#if defined(ASIO_WINDOWS)
-        "@asio|%I64u.%06I64u|<%I64u|\n",
-#else // defined(ASIO_WINDOWS)
-        "@asio|%llu.%06llu|<%llu|\n",
-#endif // defined(ASIO_WINDOWS)
-        timestamp.seconds, timestamp.microseconds, id_);
-
-    id_ = 0;
-  }
-}
-
-void handler_tracking::operation(const char* object_type,
-    void* object, const char* op_name)
-{
-  static tracking_state* state = get_state();
-
-  handler_tracking_timestamp timestamp;
-
-  unsigned long long current_id = 0;
-  if (completion* current_completion = *state->current_completion_)
-    current_id = current_completion->id_;
-
-  write_line(
-#if defined(ASIO_WINDOWS)
-      "@asio|%I64u.%06I64u|%I64u|%.20s@%p.%.50s\n",
-#else // defined(ASIO_WINDOWS)
-      "@asio|%llu.%06llu|%llu|%.20s@%p.%.50s\n",
-#endif // defined(ASIO_WINDOWS)
-      timestamp.seconds, timestamp.microseconds,
-      current_id, object_type, object, op_name);
-}
-
-void handler_tracking::write_line(const char* format, ...)
-{
-  using namespace std; // For sprintf (or equivalent).
-
-  va_list args;
-  va_start(args, format);
-
-  char line[256] = "";
-#if defined(ASIO_HAS_SECURE_RTL)
-  int length = vsprintf_s(line, sizeof(line), format, args);
-#else // defined(ASIO_HAS_SECURE_RTL)
-  int length = vsprintf(line, format, args);
-#endif // defined(ASIO_HAS_SECURE_RTL)
-
-  va_end(args);
-
-#if defined(ASIO_WINDOWS)
-  HANDLE stderr_handle = ::GetStdHandle(STD_ERROR_HANDLE);
-  DWORD bytes_written = 0;
-  ::WriteFile(stderr_handle, line, length, &bytes_written, 0);
-#else // defined(ASIO_WINDOWS)
-  ::write(STDERR_FILENO, line, length);
-#endif // defined(ASIO_WINDOWS)
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_ENABLE_HANDLER_TRACKING)
-
-#endif // ASIO_DETAIL_IMPL_HANDLER_TRACKING_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/kqueue_reactor.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/kqueue_reactor.hpp
deleted file mode 100644
index 42cff03..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/kqueue_reactor.hpp
+++ /dev/null
@@ -1,80 +0,0 @@
-//
-// detail/impl/kqueue_reactor.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2005 Stefan Arentz (stefan at soze dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_KQUEUE_REACTOR_HPP
-#define ASIO_DETAIL_IMPL_KQUEUE_REACTOR_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_KQUEUE)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Time_Traits>
-void kqueue_reactor::add_timer_queue(timer_queue<Time_Traits>& queue)
-{
-  do_add_timer_queue(queue);
-}
-
-// Remove a timer queue from the reactor.
-template <typename Time_Traits>
-void kqueue_reactor::remove_timer_queue(timer_queue<Time_Traits>& queue)
-{
-  do_remove_timer_queue(queue);
-}
-
-template <typename Time_Traits>
-void kqueue_reactor::schedule_timer(timer_queue<Time_Traits>& queue,
-    const typename Time_Traits::time_type& time,
-    typename timer_queue<Time_Traits>::per_timer_data& timer, wait_op* op)
-{
-  asio::detail::mutex::scoped_lock lock(mutex_);
-
-  if (shutdown_)
-  {
-    io_service_.post_immediate_completion(op, false);
-    return;
-  }
-
-  bool earliest = queue.enqueue_timer(time, timer, op);
-  io_service_.work_started();
-  if (earliest)
-    interrupt();
-}
-
-template <typename Time_Traits>
-std::size_t kqueue_reactor::cancel_timer(timer_queue<Time_Traits>& queue,
-    typename timer_queue<Time_Traits>::per_timer_data& timer,
-    std::size_t max_cancelled)
-{
-  asio::detail::mutex::scoped_lock lock(mutex_);
-  op_queue<operation> ops;
-  std::size_t n = queue.cancel_timer(timer, ops, max_cancelled);
-  lock.unlock();
-  io_service_.post_deferred_completions(ops);
-  return n;
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_KQUEUE)
-
-#endif // ASIO_DETAIL_IMPL_KQUEUE_REACTOR_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/kqueue_reactor.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/kqueue_reactor.ipp
deleted file mode 100644
index 264364f..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/kqueue_reactor.ipp
+++ /dev/null
@@ -1,496 +0,0 @@
-//
-// detail/impl/kqueue_reactor.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2005 Stefan Arentz (stefan at soze dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_KQUEUE_REACTOR_IPP
-#define ASIO_DETAIL_IMPL_KQUEUE_REACTOR_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_KQUEUE)
-
-#include "asio/detail/kqueue_reactor.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-#if defined(__NetBSD__)
-# define ASIO_KQUEUE_EV_SET(ev, ident, filt, flags, fflags, data, udata) \
-    EV_SET(ev, ident, filt, flags, fflags, data, \
-      reinterpret_cast<intptr_t>(static_cast<void*>(udata)))
-#else
-# define ASIO_KQUEUE_EV_SET(ev, ident, filt, flags, fflags, data, udata) \
-    EV_SET(ev, ident, filt, flags, fflags, data, udata)
-#endif
-
-namespace asio {
-namespace detail {
-
-kqueue_reactor::kqueue_reactor(asio::io_service& io_service)
-  : asio::detail::service_base<kqueue_reactor>(io_service),
-    io_service_(use_service<io_service_impl>(io_service)),
-    mutex_(),
-    kqueue_fd_(do_kqueue_create()),
-    interrupter_(),
-    shutdown_(false)
-{
-  struct kevent events[1];
-  ASIO_KQUEUE_EV_SET(&events[0], interrupter_.read_descriptor(),
-      EVFILT_READ, EV_ADD, 0, 0, &interrupter_);
-  if (::kevent(kqueue_fd_, events, 1, 0, 0, 0) == -1)
-  {
-    asio::error_code error(errno,
-        asio::error::get_system_category());
-    asio::detail::throw_error(error);
-  }
-}
-
-kqueue_reactor::~kqueue_reactor()
-{
-  close(kqueue_fd_);
-}
-
-void kqueue_reactor::shutdown_service()
-{
-  mutex::scoped_lock lock(mutex_);
-  shutdown_ = true;
-  lock.unlock();
-
-  op_queue<operation> ops;
-
-  while (descriptor_state* state = registered_descriptors_.first())
-  {
-    for (int i = 0; i < max_ops; ++i)
-      ops.push(state->op_queue_[i]);
-    state->shutdown_ = true;
-    registered_descriptors_.free(state);
-  }
-
-  timer_queues_.get_all_timers(ops);
-
-  io_service_.abandon_operations(ops);
-}
-
-void kqueue_reactor::fork_service(asio::io_service::fork_event fork_ev)
-{
-  if (fork_ev == asio::io_service::fork_child)
-  {
-    // The kqueue descriptor is automatically closed in the child.
-    kqueue_fd_ = -1;
-    kqueue_fd_ = do_kqueue_create();
-
-    interrupter_.recreate();
-
-    struct kevent events[2];
-    ASIO_KQUEUE_EV_SET(&events[0], interrupter_.read_descriptor(),
-        EVFILT_READ, EV_ADD, 0, 0, &interrupter_);
-    if (::kevent(kqueue_fd_, events, 1, 0, 0, 0) == -1)
-    {
-      asio::error_code ec(errno,
-          asio::error::get_system_category());
-      asio::detail::throw_error(ec, "kqueue interrupter registration");
-    }
-
-    // Re-register all descriptors with kqueue.
-    mutex::scoped_lock descriptors_lock(registered_descriptors_mutex_);
-    for (descriptor_state* state = registered_descriptors_.first();
-        state != 0; state = state->next_)
-    {
-      if (state->num_kevents_ > 0)
-      {
-        ASIO_KQUEUE_EV_SET(&events[0], state->descriptor_,
-            EVFILT_READ, EV_ADD | EV_CLEAR, 0, 0, state);
-        ASIO_KQUEUE_EV_SET(&events[1], state->descriptor_,
-            EVFILT_WRITE, EV_ADD | EV_CLEAR, 0, 0, state);
-        if (::kevent(kqueue_fd_, events, state->num_kevents_, 0, 0, 0) == -1)
-        {
-          asio::error_code ec(errno,
-              asio::error::get_system_category());
-          asio::detail::throw_error(ec, "kqueue re-registration");
-        }
-      }
-    }
-  }
-}
-
-void kqueue_reactor::init_task()
-{
-  io_service_.init_task();
-}
-
-int kqueue_reactor::register_descriptor(socket_type descriptor,
-    kqueue_reactor::per_descriptor_data& descriptor_data)
-{
-  descriptor_data = allocate_descriptor_state();
-
-  mutex::scoped_lock lock(descriptor_data->mutex_);
-
-  descriptor_data->descriptor_ = descriptor;
-  descriptor_data->num_kevents_ = 0;
-  descriptor_data->shutdown_ = false;
-
-  return 0;
-}
-
-int kqueue_reactor::register_internal_descriptor(
-    int op_type, socket_type descriptor,
-    kqueue_reactor::per_descriptor_data& descriptor_data, reactor_op* op)
-{
-  descriptor_data = allocate_descriptor_state();
-
-  mutex::scoped_lock lock(descriptor_data->mutex_);
-
-  descriptor_data->descriptor_ = descriptor;
-  descriptor_data->num_kevents_ = 1;
-  descriptor_data->shutdown_ = false;
-  descriptor_data->op_queue_[op_type].push(op);
-
-  struct kevent events[1];
-  ASIO_KQUEUE_EV_SET(&events[0], descriptor, EVFILT_READ,
-      EV_ADD | EV_CLEAR, 0, 0, descriptor_data);
-  if (::kevent(kqueue_fd_, events, 1, 0, 0, 0) == -1)
-    return errno;
-
-  return 0;
-}
-
-void kqueue_reactor::move_descriptor(socket_type,
-    kqueue_reactor::per_descriptor_data& target_descriptor_data,
-    kqueue_reactor::per_descriptor_data& source_descriptor_data)
-{
-  target_descriptor_data = source_descriptor_data;
-  source_descriptor_data = 0;
-}
-
-void kqueue_reactor::start_op(int op_type, socket_type descriptor,
-    kqueue_reactor::per_descriptor_data& descriptor_data, reactor_op* op,
-    bool is_continuation, bool allow_speculative)
-{
-  if (!descriptor_data)
-  {
-    op->ec_ = asio::error::bad_descriptor;
-    post_immediate_completion(op, is_continuation);
-    return;
-  }
-
-  mutex::scoped_lock descriptor_lock(descriptor_data->mutex_);
-
-  if (descriptor_data->shutdown_)
-  {
-    post_immediate_completion(op, is_continuation);
-    return;
-  }
-
-  if (descriptor_data->op_queue_[op_type].empty())
-  {
-    static const int num_kevents[max_ops] = { 1, 2, 1 };
-
-    if (allow_speculative
-        && (op_type != read_op
-          || descriptor_data->op_queue_[except_op].empty()))
-    {
-      if (op->perform())
-      {
-        descriptor_lock.unlock();
-        io_service_.post_immediate_completion(op, is_continuation);
-        return;
-      }
-
-      if (descriptor_data->num_kevents_ < num_kevents[op_type])
-      {
-        struct kevent events[2];
-        ASIO_KQUEUE_EV_SET(&events[0], descriptor, EVFILT_READ,
-            EV_ADD | EV_CLEAR, 0, 0, descriptor_data);
-        ASIO_KQUEUE_EV_SET(&events[1], descriptor, EVFILT_WRITE,
-            EV_ADD | EV_CLEAR, 0, 0, descriptor_data);
-        if (::kevent(kqueue_fd_, events, num_kevents[op_type], 0, 0, 0) != -1)
-        {
-          descriptor_data->num_kevents_ = num_kevents[op_type];
-        }
-        else
-        {
-          op->ec_ = asio::error_code(errno,
-              asio::error::get_system_category());
-          io_service_.post_immediate_completion(op, is_continuation);
-          return;
-        }
-      }
-    }
-    else
-    {
-      if (descriptor_data->num_kevents_ < num_kevents[op_type])
-        descriptor_data->num_kevents_ = num_kevents[op_type];
-
-      struct kevent events[2];
-      ASIO_KQUEUE_EV_SET(&events[0], descriptor, EVFILT_READ,
-          EV_ADD | EV_CLEAR, 0, 0, descriptor_data);
-      ASIO_KQUEUE_EV_SET(&events[1], descriptor, EVFILT_WRITE,
-          EV_ADD | EV_CLEAR, 0, 0, descriptor_data);
-      ::kevent(kqueue_fd_, events, descriptor_data->num_kevents_, 0, 0, 0);
-    }
-  }
-
-  descriptor_data->op_queue_[op_type].push(op);
-  io_service_.work_started();
-}
-
-void kqueue_reactor::cancel_ops(socket_type,
-    kqueue_reactor::per_descriptor_data& descriptor_data)
-{
-  if (!descriptor_data)
-    return;
-
-  mutex::scoped_lock descriptor_lock(descriptor_data->mutex_);
-
-  op_queue<operation> ops;
-  for (int i = 0; i < max_ops; ++i)
-  {
-    while (reactor_op* op = descriptor_data->op_queue_[i].front())
-    {
-      op->ec_ = asio::error::operation_aborted;
-      descriptor_data->op_queue_[i].pop();
-      ops.push(op);
-    }
-  }
-
-  descriptor_lock.unlock();
-
-  io_service_.post_deferred_completions(ops);
-}
-
-void kqueue_reactor::deregister_descriptor(socket_type descriptor,
-    kqueue_reactor::per_descriptor_data& descriptor_data, bool closing)
-{
-  if (!descriptor_data)
-    return;
-
-  mutex::scoped_lock descriptor_lock(descriptor_data->mutex_);
-
-  if (!descriptor_data->shutdown_)
-  {
-    if (closing)
-    {
-      // The descriptor will be automatically removed from the kqueue when it
-      // is closed.
-    }
-    else
-    {
-      struct kevent events[2];
-      ASIO_KQUEUE_EV_SET(&events[0], descriptor,
-          EVFILT_READ, EV_DELETE, 0, 0, 0);
-      ASIO_KQUEUE_EV_SET(&events[1], descriptor,
-          EVFILT_WRITE, EV_DELETE, 0, 0, 0);
-      ::kevent(kqueue_fd_, events, descriptor_data->num_kevents_, 0, 0, 0);
-    }
-
-    op_queue<operation> ops;
-    for (int i = 0; i < max_ops; ++i)
-    {
-      while (reactor_op* op = descriptor_data->op_queue_[i].front())
-      {
-        op->ec_ = asio::error::operation_aborted;
-        descriptor_data->op_queue_[i].pop();
-        ops.push(op);
-      }
-    }
-
-    descriptor_data->descriptor_ = -1;
-    descriptor_data->shutdown_ = true;
-
-    descriptor_lock.unlock();
-
-    free_descriptor_state(descriptor_data);
-    descriptor_data = 0;
-
-    io_service_.post_deferred_completions(ops);
-  }
-}
-
-void kqueue_reactor::deregister_internal_descriptor(socket_type descriptor,
-    kqueue_reactor::per_descriptor_data& descriptor_data)
-{
-  if (!descriptor_data)
-    return;
-
-  mutex::scoped_lock descriptor_lock(descriptor_data->mutex_);
-
-  if (!descriptor_data->shutdown_)
-  {
-    struct kevent events[2];
-    ASIO_KQUEUE_EV_SET(&events[0], descriptor,
-        EVFILT_READ, EV_DELETE, 0, 0, 0);
-    ASIO_KQUEUE_EV_SET(&events[1], descriptor,
-        EVFILT_WRITE, EV_DELETE, 0, 0, 0);
-    ::kevent(kqueue_fd_, events, descriptor_data->num_kevents_, 0, 0, 0);
-
-    op_queue<operation> ops;
-    for (int i = 0; i < max_ops; ++i)
-      ops.push(descriptor_data->op_queue_[i]);
-
-    descriptor_data->descriptor_ = -1;
-    descriptor_data->shutdown_ = true;
-
-    descriptor_lock.unlock();
-
-    free_descriptor_state(descriptor_data);
-    descriptor_data = 0;
-  }
-}
-
-void kqueue_reactor::run(bool block, op_queue<operation>& ops)
-{
-  mutex::scoped_lock lock(mutex_);
-
-  // Determine how long to block while waiting for events.
-  timespec timeout_buf = { 0, 0 };
-  timespec* timeout = block ? get_timeout(timeout_buf) : &timeout_buf;
-
-  lock.unlock();
-
-  // Block on the kqueue descriptor.
-  struct kevent events[128];
-  int num_events = kevent(kqueue_fd_, 0, 0, events, 128, timeout);
-
-  // Dispatch the waiting events.
-  for (int i = 0; i < num_events; ++i)
-  {
-    void* ptr = reinterpret_cast<void*>(events[i].udata);
-    if (ptr == &interrupter_)
-    {
-      interrupter_.reset();
-    }
-    else
-    {
-      descriptor_state* descriptor_data = static_cast<descriptor_state*>(ptr);
-      mutex::scoped_lock descriptor_lock(descriptor_data->mutex_);
-
-      if (events[i].filter == EVFILT_WRITE
-          && descriptor_data->num_kevents_ == 2
-          && descriptor_data->op_queue_[write_op].empty())
-      {
-        // Some descriptor types, like serial ports, don't seem to support
-        // EV_CLEAR with EVFILT_WRITE. Since we have no pending write
-        // operations we'll remove the EVFILT_WRITE registration here so that
-        // we don't end up in a tight spin.
-        struct kevent delete_events[1];
-        ASIO_KQUEUE_EV_SET(&delete_events[0],
-            descriptor_data->descriptor_, EVFILT_WRITE, EV_DELETE, 0, 0, 0);
-        ::kevent(kqueue_fd_, delete_events, 1, 0, 0, 0);
-        descriptor_data->num_kevents_ = 1;
-      }
-
-      // Exception operations must be processed first to ensure that any
-      // out-of-band data is read before normal data.
-#if defined(__NetBSD__)
-      static const unsigned int filter[max_ops] =
-#else
-      static const int filter[max_ops] =
-#endif
-        { EVFILT_READ, EVFILT_WRITE, EVFILT_READ };
-      for (int j = max_ops - 1; j >= 0; --j)
-      {
-        if (events[i].filter == filter[j])
-        {
-          if (j != except_op || events[i].flags & EV_OOBAND)
-          {
-            while (reactor_op* op = descriptor_data->op_queue_[j].front())
-            {
-              if (events[i].flags & EV_ERROR)
-              {
-                op->ec_ = asio::error_code(
-                    static_cast<int>(events[i].data),
-                    asio::error::get_system_category());
-                descriptor_data->op_queue_[j].pop();
-                ops.push(op);
-              }
-              if (op->perform())
-              {
-                descriptor_data->op_queue_[j].pop();
-                ops.push(op);
-              }
-              else
-                break;
-            }
-          }
-        }
-      }
-    }
-  }
-
-  lock.lock();
-  timer_queues_.get_ready_timers(ops);
-}
-
-void kqueue_reactor::interrupt()
-{
-  interrupter_.interrupt();
-}
-
-int kqueue_reactor::do_kqueue_create()
-{
-  int fd = ::kqueue();
-  if (fd == -1)
-  {
-    asio::error_code ec(errno,
-        asio::error::get_system_category());
-    asio::detail::throw_error(ec, "kqueue");
-  }
-  return fd;
-}
-
-kqueue_reactor::descriptor_state* kqueue_reactor::allocate_descriptor_state()
-{
-  mutex::scoped_lock descriptors_lock(registered_descriptors_mutex_);
-  return registered_descriptors_.alloc();
-}
-
-void kqueue_reactor::free_descriptor_state(kqueue_reactor::descriptor_state* s)
-{
-  mutex::scoped_lock descriptors_lock(registered_descriptors_mutex_);
-  registered_descriptors_.free(s);
-}
-
-void kqueue_reactor::do_add_timer_queue(timer_queue_base& queue)
-{
-  mutex::scoped_lock lock(mutex_);
-  timer_queues_.insert(&queue);
-}
-
-void kqueue_reactor::do_remove_timer_queue(timer_queue_base& queue)
-{
-  mutex::scoped_lock lock(mutex_);
-  timer_queues_.erase(&queue);
-}
-
-timespec* kqueue_reactor::get_timeout(timespec& ts)
-{
-  // By default we will wait no longer than 5 minutes. This will ensure that
-  // any changes to the system clock are detected after no longer than this.
-  long usec = timer_queues_.wait_duration_usec(5 * 60 * 1000 * 1000);
-  ts.tv_sec = usec / 1000000;
-  ts.tv_nsec = (usec % 1000000) * 1000;
-  return &ts;
-}
-
-} // namespace detail
-} // namespace asio
-
-#undef ASIO_KQUEUE_EV_SET
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_KQUEUE)
-
-#endif // ASIO_DETAIL_IMPL_KQUEUE_REACTOR_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/pipe_select_interrupter.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/pipe_select_interrupter.ipp
deleted file mode 100644
index d05f16f..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/pipe_select_interrupter.ipp
+++ /dev/null
@@ -1,124 +0,0 @@
-//
-// detail/impl/pipe_select_interrupter.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_PIPE_SELECT_INTERRUPTER_IPP
-#define ASIO_DETAIL_IMPL_PIPE_SELECT_INTERRUPTER_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_WINDOWS_RUNTIME)
-#if !defined(ASIO_WINDOWS)
-#if !defined(__CYGWIN__)
-#if !defined(__SYMBIAN32__)
-#if !defined(ASIO_HAS_EVENTFD)
-
-#include <fcntl.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <unistd.h>
-#include "asio/detail/pipe_select_interrupter.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-pipe_select_interrupter::pipe_select_interrupter()
-{
-  open_descriptors();
-}
-
-void pipe_select_interrupter::open_descriptors()
-{
-  int pipe_fds[2];
-  if (pipe(pipe_fds) == 0)
-  {
-    read_descriptor_ = pipe_fds[0];
-    ::fcntl(read_descriptor_, F_SETFL, O_NONBLOCK);
-    write_descriptor_ = pipe_fds[1];
-    ::fcntl(write_descriptor_, F_SETFL, O_NONBLOCK);
-
-#if defined(FD_CLOEXEC)
-    ::fcntl(read_descriptor_, F_SETFD, FD_CLOEXEC);
-    ::fcntl(write_descriptor_, F_SETFD, FD_CLOEXEC);
-#endif // defined(FD_CLOEXEC)
-  }
-  else
-  {
-    asio::error_code ec(errno,
-        asio::error::get_system_category());
-    asio::detail::throw_error(ec, "pipe_select_interrupter");
-  }
-}
-
-pipe_select_interrupter::~pipe_select_interrupter()
-{
-  close_descriptors();
-}
-
-void pipe_select_interrupter::close_descriptors()
-{
-  if (read_descriptor_ != -1)
-    ::close(read_descriptor_);
-  if (write_descriptor_ != -1)
-    ::close(write_descriptor_);
-}
-
-void pipe_select_interrupter::recreate()
-{
-  close_descriptors();
-
-  write_descriptor_ = -1;
-  read_descriptor_ = -1;
-
-  open_descriptors();
-}
-
-void pipe_select_interrupter::interrupt()
-{
-  char byte = 0;
-  signed_size_type result = ::write(write_descriptor_, &byte, 1);
-  (void)result;
-}
-
-bool pipe_select_interrupter::reset()
-{
-  for (;;)
-  {
-    char data[1024];
-    signed_size_type bytes_read = ::read(read_descriptor_, data, sizeof(data));
-    if (bytes_read < 0 && errno == EINTR)
-      continue;
-    bool was_interrupted = (bytes_read > 0);
-    while (bytes_read == sizeof(data))
-      bytes_read = ::read(read_descriptor_, data, sizeof(data));
-    return was_interrupted;
-  }
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_HAS_EVENTFD)
-#endif // !defined(__SYMBIAN32__)
-#endif // !defined(__CYGWIN__)
-#endif // !defined(ASIO_WINDOWS)
-#endif // !defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_IMPL_PIPE_SELECT_INTERRUPTER_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/posix_event.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/posix_event.ipp
deleted file mode 100644
index ec2c116..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/posix_event.ipp
+++ /dev/null
@@ -1,47 +0,0 @@
-//
-// detail/impl/posix_event.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_POSIX_EVENT_IPP
-#define ASIO_DETAIL_IMPL_POSIX_EVENT_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_PTHREADS)
-
-#include "asio/detail/posix_event.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-posix_event::posix_event()
-  : state_(0)
-{
-  int error = ::pthread_cond_init(&cond_, 0);
-  asio::error_code ec(error,
-      asio::error::get_system_category());
-  asio::detail::throw_error(ec, "event");
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_PTHREADS)
-
-#endif // ASIO_DETAIL_IMPL_POSIX_EVENT_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/posix_mutex.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/posix_mutex.ipp
deleted file mode 100644
index a768867..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/posix_mutex.ipp
+++ /dev/null
@@ -1,46 +0,0 @@
-//
-// detail/impl/posix_mutex.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_POSIX_MUTEX_IPP
-#define ASIO_DETAIL_IMPL_POSIX_MUTEX_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_PTHREADS)
-
-#include "asio/detail/posix_mutex.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-posix_mutex::posix_mutex()
-{
-  int error = ::pthread_mutex_init(&mutex_, 0);
-  asio::error_code ec(error,
-      asio::error::get_system_category());
-  asio::detail::throw_error(ec, "mutex");
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_PTHREADS)
-
-#endif // ASIO_DETAIL_IMPL_POSIX_MUTEX_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/posix_thread.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/posix_thread.ipp
deleted file mode 100644
index a6a9320..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/posix_thread.ipp
+++ /dev/null
@@ -1,74 +0,0 @@
-//
-// detail/impl/posix_thread.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_POSIX_THREAD_IPP
-#define ASIO_DETAIL_IMPL_POSIX_THREAD_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_PTHREADS)
-
-#include "asio/detail/posix_thread.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-posix_thread::~posix_thread()
-{
-  if (!joined_)
-    ::pthread_detach(thread_);
-}
-
-void posix_thread::join()
-{
-  if (!joined_)
-  {
-    ::pthread_join(thread_, 0);
-    joined_ = true;
-  }
-}
-
-void posix_thread::start_thread(func_base* arg)
-{
-  int error = ::pthread_create(&thread_, 0,
-        asio_detail_posix_thread_function, arg);
-  if (error != 0)
-  {
-    delete arg;
-    asio::error_code ec(error,
-        asio::error::get_system_category());
-    asio::detail::throw_error(ec, "thread");
-  }
-}
-
-void* asio_detail_posix_thread_function(void* arg)
-{
-  posix_thread::auto_func_base_ptr func = {
-      static_cast<posix_thread::func_base*>(arg) };
-  func.ptr->run();
-  return 0;
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_PTHREADS)
-
-#endif // ASIO_DETAIL_IMPL_POSIX_THREAD_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/posix_tss_ptr.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/posix_tss_ptr.ipp
deleted file mode 100644
index 8f39ab2..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/posix_tss_ptr.ipp
+++ /dev/null
@@ -1,46 +0,0 @@
-//
-// detail/impl/posix_tss_ptr.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_POSIX_TSS_PTR_IPP
-#define ASIO_DETAIL_IMPL_POSIX_TSS_PTR_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_PTHREADS)
-
-#include "asio/detail/posix_tss_ptr.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-void posix_tss_ptr_create(pthread_key_t& key)
-{
-  int error = ::pthread_key_create(&key, 0);
-  asio::error_code ec(error,
-      asio::error::get_system_category());
-  asio::detail::throw_error(ec, "tss");
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_PTHREADS)
-
-#endif // ASIO_DETAIL_IMPL_POSIX_TSS_PTR_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/reactive_descriptor_service.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/reactive_descriptor_service.ipp
deleted file mode 100644
index 21138b0..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/reactive_descriptor_service.ipp
+++ /dev/null
@@ -1,208 +0,0 @@
-//
-// detail/impl/reactive_descriptor_service.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_REACTIVE_DESCRIPTOR_SERVICE_IPP
-#define ASIO_DETAIL_IMPL_REACTIVE_DESCRIPTOR_SERVICE_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_WINDOWS) \
-  && !defined(ASIO_WINDOWS_RUNTIME) \
-  && !defined(__CYGWIN__)
-
-#include "asio/error.hpp"
-#include "asio/detail/reactive_descriptor_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-reactive_descriptor_service::reactive_descriptor_service(
-    asio::io_service& io_service)
-  : reactor_(asio::use_service<reactor>(io_service))
-{
-  reactor_.init_task();
-}
-
-void reactive_descriptor_service::shutdown_service()
-{
-}
-
-void reactive_descriptor_service::construct(
-    reactive_descriptor_service::implementation_type& impl)
-{
-  impl.descriptor_ = -1;
-  impl.state_ = 0;
-}
-
-void reactive_descriptor_service::move_construct(
-    reactive_descriptor_service::implementation_type& impl,
-    reactive_descriptor_service::implementation_type& other_impl)
-{
-  impl.descriptor_ = other_impl.descriptor_;
-  other_impl.descriptor_ = -1;
-
-  impl.state_ = other_impl.state_;
-  other_impl.state_ = 0;
-
-  reactor_.move_descriptor(impl.descriptor_,
-      impl.reactor_data_, other_impl.reactor_data_);
-}
-
-void reactive_descriptor_service::move_assign(
-    reactive_descriptor_service::implementation_type& impl,
-    reactive_descriptor_service& other_service,
-    reactive_descriptor_service::implementation_type& other_impl)
-{
-  destroy(impl);
-
-  impl.descriptor_ = other_impl.descriptor_;
-  other_impl.descriptor_ = -1;
-
-  impl.state_ = other_impl.state_;
-  other_impl.state_ = 0;
-
-  other_service.reactor_.move_descriptor(impl.descriptor_,
-      impl.reactor_data_, other_impl.reactor_data_);
-}
-
-void reactive_descriptor_service::destroy(
-    reactive_descriptor_service::implementation_type& impl)
-{
-  if (is_open(impl))
-  {
-    ASIO_HANDLER_OPERATION(("descriptor", &impl, "close"));
-
-    reactor_.deregister_descriptor(impl.descriptor_, impl.reactor_data_,
-        (impl.state_ & descriptor_ops::possible_dup) == 0);
-  }
-
-  asio::error_code ignored_ec;
-  descriptor_ops::close(impl.descriptor_, impl.state_, ignored_ec);
-}
-
-asio::error_code reactive_descriptor_service::assign(
-    reactive_descriptor_service::implementation_type& impl,
-    const native_handle_type& native_descriptor, asio::error_code& ec)
-{
-  if (is_open(impl))
-  {
-    ec = asio::error::already_open;
-    return ec;
-  }
-
-  if (int err = reactor_.register_descriptor(
-        native_descriptor, impl.reactor_data_))
-  {
-    ec = asio::error_code(err,
-        asio::error::get_system_category());
-    return ec;
-  }
-
-  impl.descriptor_ = native_descriptor;
-  impl.state_ = descriptor_ops::possible_dup;
-  ec = asio::error_code();
-  return ec;
-}
-
-asio::error_code reactive_descriptor_service::close(
-    reactive_descriptor_service::implementation_type& impl,
-    asio::error_code& ec)
-{
-  if (is_open(impl))
-  {
-    ASIO_HANDLER_OPERATION(("descriptor", &impl, "close"));
-
-    reactor_.deregister_descriptor(impl.descriptor_, impl.reactor_data_,
-        (impl.state_ & descriptor_ops::possible_dup) == 0);
-  }
-
-  descriptor_ops::close(impl.descriptor_, impl.state_, ec);
-
-  // The descriptor is closed by the OS even if close() returns an error.
-  //
-  // (Actually, POSIX says the state of the descriptor is unspecified. On
-  // Linux the descriptor is apparently closed anyway; e.g. see
-  //   http://lkml.org/lkml/2005/9/10/129
-  // We'll just have to assume that other OSes follow the same behaviour.)
-  construct(impl);
-
-  return ec;
-}
-
-reactive_descriptor_service::native_handle_type
-reactive_descriptor_service::release(
-    reactive_descriptor_service::implementation_type& impl)
-{
-  native_handle_type descriptor = impl.descriptor_;
-
-  if (is_open(impl))
-  {
-    ASIO_HANDLER_OPERATION(("descriptor", &impl, "release"));
-
-    reactor_.deregister_descriptor(impl.descriptor_, impl.reactor_data_, false);
-    construct(impl);
-  }
-
-  return descriptor;
-}
-
-asio::error_code reactive_descriptor_service::cancel(
-    reactive_descriptor_service::implementation_type& impl,
-    asio::error_code& ec)
-{
-  if (!is_open(impl))
-  {
-    ec = asio::error::bad_descriptor;
-    return ec;
-  }
-
-  ASIO_HANDLER_OPERATION(("descriptor", &impl, "cancel"));
-
-  reactor_.cancel_ops(impl.descriptor_, impl.reactor_data_);
-  ec = asio::error_code();
-  return ec;
-}
-
-void reactive_descriptor_service::start_op(
-    reactive_descriptor_service::implementation_type& impl,
-    int op_type, reactor_op* op, bool is_continuation,
-    bool is_non_blocking, bool noop)
-{
-  if (!noop)
-  {
-    if ((impl.state_ & descriptor_ops::non_blocking) ||
-        descriptor_ops::set_internal_non_blocking(
-          impl.descriptor_, impl.state_, true, op->ec_))
-    {
-      reactor_.start_op(op_type, impl.descriptor_,
-          impl.reactor_data_, op, is_continuation, is_non_blocking);
-      return;
-    }
-  }
-
-  reactor_.post_immediate_completion(op, is_continuation);
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_WINDOWS)
-       //   && !defined(ASIO_WINDOWS_RUNTIME)
-       //   && !defined(__CYGWIN__)
-
-#endif // ASIO_DETAIL_IMPL_REACTIVE_DESCRIPTOR_SERVICE_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/reactive_serial_port_service.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/reactive_serial_port_service.ipp
deleted file mode 100644
index b3ce7b9..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/reactive_serial_port_service.ipp
+++ /dev/null
@@ -1,151 +0,0 @@
-//
-// detail/impl/reactive_serial_port_service.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_REACTIVE_SERIAL_PORT_SERVICE_IPP
-#define ASIO_DETAIL_IMPL_REACTIVE_SERIAL_PORT_SERVICE_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_SERIAL_PORT)
-#if !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-
-#include <cstring>
-#include "asio/detail/reactive_serial_port_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-reactive_serial_port_service::reactive_serial_port_service(
-    asio::io_service& io_service)
-  : descriptor_service_(io_service)
-{
-}
-
-void reactive_serial_port_service::shutdown_service()
-{
-  descriptor_service_.shutdown_service();
-}
-
-asio::error_code reactive_serial_port_service::open(
-    reactive_serial_port_service::implementation_type& impl,
-    const std::string& device, asio::error_code& ec)
-{
-  if (is_open(impl))
-  {
-    ec = asio::error::already_open;
-    return ec;
-  }
-
-  descriptor_ops::state_type state = 0;
-  int fd = descriptor_ops::open(device.c_str(),
-      O_RDWR | O_NONBLOCK | O_NOCTTY, ec);
-  if (fd < 0)
-    return ec;
-
-  int s = descriptor_ops::fcntl(fd, F_GETFL, ec);
-  if (s >= 0)
-    s = descriptor_ops::fcntl(fd, F_SETFL, s | O_NONBLOCK, ec);
-  if (s < 0)
-  {
-    asio::error_code ignored_ec;
-    descriptor_ops::close(fd, state, ignored_ec);
-    return ec;
-  }
-
-  // Set up default serial port options.
-  termios ios;
-  errno = 0;
-  s = descriptor_ops::error_wrapper(::tcgetattr(fd, &ios), ec);
-  if (s >= 0)
-  {
-#if defined(_BSD_SOURCE)
-    ::cfmakeraw(&ios);
-#else
-    ios.c_iflag &= ~(IGNBRK | BRKINT | PARMRK
-        | ISTRIP | INLCR | IGNCR | ICRNL | IXON);
-    ios.c_oflag &= ~OPOST;
-    ios.c_lflag &= ~(ECHO | ECHONL | ICANON | ISIG | IEXTEN);
-    ios.c_cflag &= ~(CSIZE | PARENB);
-    ios.c_cflag |= CS8;
-#endif
-    ios.c_iflag |= IGNPAR;
-    ios.c_cflag |= CREAD | CLOCAL;
-    errno = 0;
-    s = descriptor_ops::error_wrapper(::tcsetattr(fd, TCSANOW, &ios), ec);
-  }
-  if (s < 0)
-  {
-    asio::error_code ignored_ec;
-    descriptor_ops::close(fd, state, ignored_ec);
-    return ec;
-  }
-
-  // We're done. Take ownership of the serial port descriptor.
-  if (descriptor_service_.assign(impl, fd, ec))
-  {
-    asio::error_code ignored_ec;
-    descriptor_ops::close(fd, state, ignored_ec);
-  }
-
-  return ec;
-}
-
-asio::error_code reactive_serial_port_service::do_set_option(
-    reactive_serial_port_service::implementation_type& impl,
-    reactive_serial_port_service::store_function_type store,
-    const void* option, asio::error_code& ec)
-{
-  termios ios;
-  errno = 0;
-  descriptor_ops::error_wrapper(::tcgetattr(
-        descriptor_service_.native_handle(impl), &ios), ec);
-  if (ec)
-    return ec;
-
-  if (store(option, ios, ec))
-    return ec;
-
-  errno = 0;
-  descriptor_ops::error_wrapper(::tcsetattr(
-        descriptor_service_.native_handle(impl), TCSANOW, &ios), ec);
-  return ec;
-}
-
-asio::error_code reactive_serial_port_service::do_get_option(
-    const reactive_serial_port_service::implementation_type& impl,
-    reactive_serial_port_service::load_function_type load,
-    void* option, asio::error_code& ec) const
-{
-  termios ios;
-  errno = 0;
-  descriptor_ops::error_wrapper(::tcgetattr(
-        descriptor_service_.native_handle(impl), &ios), ec);
-  if (ec)
-    return ec;
-
-  return load(option, ios, ec);
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-#endif // defined(ASIO_HAS_SERIAL_PORT)
-
-#endif // ASIO_DETAIL_IMPL_REACTIVE_SERIAL_PORT_SERVICE_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/reactive_socket_service_base.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/reactive_socket_service_base.ipp
deleted file mode 100644
index f6cf62a..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/reactive_socket_service_base.ipp
+++ /dev/null
@@ -1,267 +0,0 @@
-//
-// detail/reactive_socket_service_base.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_REACTIVE_SOCKET_SERVICE_BASE_IPP
-#define ASIO_DETAIL_IMPL_REACTIVE_SOCKET_SERVICE_BASE_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_HAS_IOCP) \
-  && !defined(ASIO_WINDOWS_RUNTIME)
-
-#include "asio/detail/reactive_socket_service_base.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-reactive_socket_service_base::reactive_socket_service_base(
-    asio::io_service& io_service)
-  : reactor_(use_service<reactor>(io_service))
-{
-  reactor_.init_task();
-}
-
-void reactive_socket_service_base::shutdown_service()
-{
-}
-
-void reactive_socket_service_base::construct(
-    reactive_socket_service_base::base_implementation_type& impl)
-{
-  impl.socket_ = invalid_socket;
-  impl.state_ = 0;
-}
-
-void reactive_socket_service_base::base_move_construct(
-    reactive_socket_service_base::base_implementation_type& impl,
-    reactive_socket_service_base::base_implementation_type& other_impl)
-{
-  impl.socket_ = other_impl.socket_;
-  other_impl.socket_ = invalid_socket;
-
-  impl.state_ = other_impl.state_;
-  other_impl.state_ = 0;
-
-  reactor_.move_descriptor(impl.socket_,
-      impl.reactor_data_, other_impl.reactor_data_);
-}
-
-void reactive_socket_service_base::base_move_assign(
-    reactive_socket_service_base::base_implementation_type& impl,
-    reactive_socket_service_base& other_service,
-    reactive_socket_service_base::base_implementation_type& other_impl)
-{
-  destroy(impl);
-
-  impl.socket_ = other_impl.socket_;
-  other_impl.socket_ = invalid_socket;
-
-  impl.state_ = other_impl.state_;
-  other_impl.state_ = 0;
-
-  other_service.reactor_.move_descriptor(impl.socket_,
-      impl.reactor_data_, other_impl.reactor_data_);
-}
-
-void reactive_socket_service_base::destroy(
-    reactive_socket_service_base::base_implementation_type& impl)
-{
-  if (impl.socket_ != invalid_socket)
-  {
-    ASIO_HANDLER_OPERATION(("socket", &impl, "close"));
-
-    reactor_.deregister_descriptor(impl.socket_, impl.reactor_data_,
-        (impl.state_ & socket_ops::possible_dup) == 0);
-
-    asio::error_code ignored_ec;
-    socket_ops::close(impl.socket_, impl.state_, true, ignored_ec);
-  }
-}
-
-asio::error_code reactive_socket_service_base::close(
-    reactive_socket_service_base::base_implementation_type& impl,
-    asio::error_code& ec)
-{
-  if (is_open(impl))
-  {
-    ASIO_HANDLER_OPERATION(("socket", &impl, "close"));
-
-    reactor_.deregister_descriptor(impl.socket_, impl.reactor_data_,
-        (impl.state_ & socket_ops::possible_dup) == 0);
-  }
-
-  socket_ops::close(impl.socket_, impl.state_, false, ec);
-
-  // The descriptor is closed by the OS even if close() returns an error.
-  //
-  // (Actually, POSIX says the state of the descriptor is unspecified. On
-  // Linux the descriptor is apparently closed anyway; e.g. see
-  //   http://lkml.org/lkml/2005/9/10/129
-  // We'll just have to assume that other OSes follow the same behaviour. The
-  // known exception is when Windows's closesocket() function fails with
-  // WSAEWOULDBLOCK, but this case is handled inside socket_ops::close().
-  construct(impl);
-
-  return ec;
-}
-
-asio::error_code reactive_socket_service_base::cancel(
-    reactive_socket_service_base::base_implementation_type& impl,
-    asio::error_code& ec)
-{
-  if (!is_open(impl))
-  {
-    ec = asio::error::bad_descriptor;
-    return ec;
-  }
-
-  ASIO_HANDLER_OPERATION(("socket", &impl, "cancel"));
-
-  reactor_.cancel_ops(impl.socket_, impl.reactor_data_);
-  ec = asio::error_code();
-  return ec;
-}
-
-asio::error_code reactive_socket_service_base::do_open(
-    reactive_socket_service_base::base_implementation_type& impl,
-    int af, int type, int protocol, asio::error_code& ec)
-{
-  if (is_open(impl))
-  {
-    ec = asio::error::already_open;
-    return ec;
-  }
-
-  socket_holder sock(socket_ops::socket(af, type, protocol, ec));
-  if (sock.get() == invalid_socket)
-    return ec;
-
-  if (int err = reactor_.register_descriptor(sock.get(), impl.reactor_data_))
-  {
-    ec = asio::error_code(err,
-        asio::error::get_system_category());
-    return ec;
-  }
-
-  impl.socket_ = sock.release();
-  switch (type)
-  {
-  case SOCK_STREAM: impl.state_ = socket_ops::stream_oriented; break;
-  case SOCK_DGRAM: impl.state_ = socket_ops::datagram_oriented; break;
-  default: impl.state_ = 0; break;
-  }
-  ec = asio::error_code();
-  return ec;
-}
-
-asio::error_code reactive_socket_service_base::do_assign(
-    reactive_socket_service_base::base_implementation_type& impl, int type,
-    const reactive_socket_service_base::native_handle_type& native_socket,
-    asio::error_code& ec)
-{
-  if (is_open(impl))
-  {
-    ec = asio::error::already_open;
-    return ec;
-  }
-
-  if (int err = reactor_.register_descriptor(
-        native_socket, impl.reactor_data_))
-  {
-    ec = asio::error_code(err,
-        asio::error::get_system_category());
-    return ec;
-  }
-
-  impl.socket_ = native_socket;
-  switch (type)
-  {
-  case SOCK_STREAM: impl.state_ = socket_ops::stream_oriented; break;
-  case SOCK_DGRAM: impl.state_ = socket_ops::datagram_oriented; break;
-  default: impl.state_ = 0; break;
-  }
-  impl.state_ |= socket_ops::possible_dup;
-  ec = asio::error_code();
-  return ec;
-}
-
-void reactive_socket_service_base::start_op(
-    reactive_socket_service_base::base_implementation_type& impl,
-    int op_type, reactor_op* op, bool is_continuation,
-    bool is_non_blocking, bool noop)
-{
-  if (!noop)
-  {
-    if ((impl.state_ & socket_ops::non_blocking)
-        || socket_ops::set_internal_non_blocking(
-          impl.socket_, impl.state_, true, op->ec_))
-    {
-      reactor_.start_op(op_type, impl.socket_,
-          impl.reactor_data_, op, is_continuation, is_non_blocking);
-      return;
-    }
-  }
-
-  reactor_.post_immediate_completion(op, is_continuation);
-}
-
-void reactive_socket_service_base::start_accept_op(
-    reactive_socket_service_base::base_implementation_type& impl,
-    reactor_op* op, bool is_continuation, bool peer_is_open)
-{
-  if (!peer_is_open)
-    start_op(impl, reactor::read_op, op, true, is_continuation, false);
-  else
-  {
-    op->ec_ = asio::error::already_open;
-    reactor_.post_immediate_completion(op, is_continuation);
-  }
-}
-
-void reactive_socket_service_base::start_connect_op(
-    reactive_socket_service_base::base_implementation_type& impl,
-    reactor_op* op, bool is_continuation,
-    const socket_addr_type* addr, size_t addrlen)
-{
-  if ((impl.state_ & socket_ops::non_blocking)
-      || socket_ops::set_internal_non_blocking(
-        impl.socket_, impl.state_, true, op->ec_))
-  {
-    if (socket_ops::connect(impl.socket_, addr, addrlen, op->ec_) != 0)
-    {
-      if (op->ec_ == asio::error::in_progress
-          || op->ec_ == asio::error::would_block)
-      {
-        op->ec_ = asio::error_code();
-        reactor_.start_op(reactor::connect_op, impl.socket_,
-            impl.reactor_data_, op, is_continuation, false);
-        return;
-      }
-    }
-  }
-
-  reactor_.post_immediate_completion(op, is_continuation);
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_HAS_IOCP)
-       //   && !defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_IMPL_REACTIVE_SOCKET_SERVICE_BASE_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/resolver_service_base.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/resolver_service_base.ipp
deleted file mode 100644
index 2b1c13e..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/resolver_service_base.ipp
+++ /dev/null
@@ -1,130 +0,0 @@
-//
-// detail/impl/resolver_service_base.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_RESOLVER_SERVICE_BASE_IPP
-#define ASIO_DETAIL_IMPL_RESOLVER_SERVICE_BASE_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/resolver_service_base.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class resolver_service_base::work_io_service_runner
-{
-public:
-  work_io_service_runner(asio::io_service& io_service)
-    : io_service_(io_service) {}
-  void operator()() { io_service_.run(); }
-private:
-  asio::io_service& io_service_;
-};
-
-resolver_service_base::resolver_service_base(
-    asio::io_service& io_service)
-  : io_service_impl_(asio::use_service<io_service_impl>(io_service)),
-    work_io_service_(new asio::io_service),
-    work_io_service_impl_(asio::use_service<
-        io_service_impl>(*work_io_service_)),
-    work_(new asio::io_service::work(*work_io_service_)),
-    work_thread_(0)
-{
-}
-
-resolver_service_base::~resolver_service_base()
-{
-  shutdown_service();
-}
-
-void resolver_service_base::shutdown_service()
-{
-  work_.reset();
-  if (work_io_service_.get())
-  {
-    work_io_service_->stop();
-    if (work_thread_.get())
-    {
-      work_thread_->join();
-      work_thread_.reset();
-    }
-    work_io_service_.reset();
-  }
-}
-
-void resolver_service_base::fork_service(
-    asio::io_service::fork_event fork_ev)
-{
-  if (work_thread_.get())
-  {
-    if (fork_ev == asio::io_service::fork_prepare)
-    {
-      work_io_service_->stop();
-      work_thread_->join();
-    }
-    else
-    {
-      work_io_service_->reset();
-      work_thread_.reset(new asio::detail::thread(
-            work_io_service_runner(*work_io_service_)));
-    }
-  }
-}
-
-void resolver_service_base::construct(
-    resolver_service_base::implementation_type& impl)
-{
-  impl.reset(static_cast<void*>(0), socket_ops::noop_deleter());
-}
-
-void resolver_service_base::destroy(
-    resolver_service_base::implementation_type& impl)
-{
-  ASIO_HANDLER_OPERATION(("resolver", &impl, "cancel"));
-
-  impl.reset();
-}
-
-void resolver_service_base::cancel(
-    resolver_service_base::implementation_type& impl)
-{
-  ASIO_HANDLER_OPERATION(("resolver", &impl, "cancel"));
-
-  impl.reset(static_cast<void*>(0), socket_ops::noop_deleter());
-}
-
-void resolver_service_base::start_resolve_op(operation* op)
-{
-  start_work_thread();
-  io_service_impl_.work_started();
-  work_io_service_impl_.post_immediate_completion(op, false);
-}
-
-void resolver_service_base::start_work_thread()
-{
-  asio::detail::mutex::scoped_lock lock(mutex_);
-  if (!work_thread_.get())
-  {
-    work_thread_.reset(new asio::detail::thread(
-          work_io_service_runner(*work_io_service_)));
-  }
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_IMPL_RESOLVER_SERVICE_BASE_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/select_reactor.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/select_reactor.hpp
deleted file mode 100644
index c67292a..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/select_reactor.hpp
+++ /dev/null
@@ -1,87 +0,0 @@
-//
-// detail/impl/select_reactor.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_SELECT_REACTOR_HPP
-#define ASIO_DETAIL_IMPL_SELECT_REACTOR_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_IOCP) \
-  || (!defined(ASIO_HAS_DEV_POLL) \
-      && !defined(ASIO_HAS_EPOLL) \
-      && !defined(ASIO_HAS_KQUEUE) \
-      && !defined(ASIO_WINDOWS_RUNTIME))
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Time_Traits>
-void select_reactor::add_timer_queue(timer_queue<Time_Traits>& queue)
-{
-  do_add_timer_queue(queue);
-}
-
-// Remove a timer queue from the reactor.
-template <typename Time_Traits>
-void select_reactor::remove_timer_queue(timer_queue<Time_Traits>& queue)
-{
-  do_remove_timer_queue(queue);
-}
-
-template <typename Time_Traits>
-void select_reactor::schedule_timer(timer_queue<Time_Traits>& queue,
-    const typename Time_Traits::time_type& time,
-    typename timer_queue<Time_Traits>::per_timer_data& timer, wait_op* op)
-{
-  asio::detail::mutex::scoped_lock lock(mutex_);
-
-  if (shutdown_)
-  {
-    io_service_.post_immediate_completion(op, false);
-    return;
-  }
-
-  bool earliest = queue.enqueue_timer(time, timer, op);
-  io_service_.work_started();
-  if (earliest)
-    interrupter_.interrupt();
-}
-
-template <typename Time_Traits>
-std::size_t select_reactor::cancel_timer(timer_queue<Time_Traits>& queue,
-    typename timer_queue<Time_Traits>::per_timer_data& timer,
-    std::size_t max_cancelled)
-{
-  asio::detail::mutex::scoped_lock lock(mutex_);
-  op_queue<operation> ops;
-  std::size_t n = queue.cancel_timer(timer, ops, max_cancelled);
-  lock.unlock();
-  io_service_.post_deferred_completions(ops);
-  return n;
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_IOCP)
-       //   || (!defined(ASIO_HAS_DEV_POLL)
-       //       && !defined(ASIO_HAS_EPOLL)
-       //       && !defined(ASIO_HAS_KQUEUE)
-       //       && !defined(ASIO_WINDOWS_RUNTIME))
-
-#endif // ASIO_DETAIL_IMPL_SELECT_REACTOR_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/select_reactor.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/select_reactor.ipp
deleted file mode 100644
index 2bd50dd..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/select_reactor.ipp
+++ /dev/null
@@ -1,313 +0,0 @@
-//
-// detail/impl/select_reactor.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_SELECT_REACTOR_IPP
-#define ASIO_DETAIL_IMPL_SELECT_REACTOR_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_IOCP) \
-  || (!defined(ASIO_HAS_DEV_POLL) \
-      && !defined(ASIO_HAS_EPOLL) \
-      && !defined(ASIO_HAS_KQUEUE) \
-      && !defined(ASIO_WINDOWS_RUNTIME))
-
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/fd_set_adapter.hpp"
-#include "asio/detail/select_reactor.hpp"
-#include "asio/detail/signal_blocker.hpp"
-#include "asio/detail/socket_ops.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-select_reactor::select_reactor(asio::io_service& io_service)
-  : asio::detail::service_base<select_reactor>(io_service),
-    io_service_(use_service<io_service_impl>(io_service)),
-    mutex_(),
-    interrupter_(),
-#if defined(ASIO_HAS_IOCP)
-    stop_thread_(false),
-    thread_(0),
-#endif // defined(ASIO_HAS_IOCP)
-    shutdown_(false)
-{
-#if defined(ASIO_HAS_IOCP)
-  asio::detail::signal_blocker sb;
-  thread_ = new asio::detail::thread(
-      bind_handler(&select_reactor::call_run_thread, this));
-#endif // defined(ASIO_HAS_IOCP)
-}
-
-select_reactor::~select_reactor()
-{
-  shutdown_service();
-}
-
-void select_reactor::shutdown_service()
-{
-  asio::detail::mutex::scoped_lock lock(mutex_);
-  shutdown_ = true;
-#if defined(ASIO_HAS_IOCP)
-  stop_thread_ = true;
-#endif // defined(ASIO_HAS_IOCP)
-  lock.unlock();
-
-#if defined(ASIO_HAS_IOCP)
-  if (thread_)
-  {
-    interrupter_.interrupt();
-    thread_->join();
-    delete thread_;
-    thread_ = 0;
-  }
-#endif // defined(ASIO_HAS_IOCP)
-
-  op_queue<operation> ops;
-
-  for (int i = 0; i < max_ops; ++i)
-    op_queue_[i].get_all_operations(ops);
-
-  timer_queues_.get_all_timers(ops);
-
-  io_service_.abandon_operations(ops);
-}
-
-void select_reactor::fork_service(asio::io_service::fork_event fork_ev)
-{
-  if (fork_ev == asio::io_service::fork_child)
-    interrupter_.recreate();
-}
-
-void select_reactor::init_task()
-{
-  io_service_.init_task();
-}
-
-int select_reactor::register_descriptor(socket_type,
-    select_reactor::per_descriptor_data&)
-{
-  return 0;
-}
-
-int select_reactor::register_internal_descriptor(
-    int op_type, socket_type descriptor,
-    select_reactor::per_descriptor_data&, reactor_op* op)
-{
-  asio::detail::mutex::scoped_lock lock(mutex_);
-
-  op_queue_[op_type].enqueue_operation(descriptor, op);
-  interrupter_.interrupt();
-
-  return 0;
-}
-
-void select_reactor::move_descriptor(socket_type,
-    select_reactor::per_descriptor_data&,
-    select_reactor::per_descriptor_data&)
-{
-}
-
-void select_reactor::start_op(int op_type, socket_type descriptor,
-    select_reactor::per_descriptor_data&, reactor_op* op,
-    bool is_continuation, bool)
-{
-  asio::detail::mutex::scoped_lock lock(mutex_);
-
-  if (shutdown_)
-  {
-    post_immediate_completion(op, is_continuation);
-    return;
-  }
-
-  bool first = op_queue_[op_type].enqueue_operation(descriptor, op);
-  io_service_.work_started();
-  if (first)
-    interrupter_.interrupt();
-}
-
-void select_reactor::cancel_ops(socket_type descriptor,
-    select_reactor::per_descriptor_data&)
-{
-  asio::detail::mutex::scoped_lock lock(mutex_);
-  cancel_ops_unlocked(descriptor, asio::error::operation_aborted);
-}
-
-void select_reactor::deregister_descriptor(socket_type descriptor,
-    select_reactor::per_descriptor_data&, bool)
-{
-  asio::detail::mutex::scoped_lock lock(mutex_);
-  cancel_ops_unlocked(descriptor, asio::error::operation_aborted);
-}
-
-void select_reactor::deregister_internal_descriptor(
-    socket_type descriptor, select_reactor::per_descriptor_data&)
-{
-  asio::detail::mutex::scoped_lock lock(mutex_);
-  op_queue<operation> ops;
-  for (int i = 0; i < max_ops; ++i)
-    op_queue_[i].cancel_operations(descriptor, ops);
-}
-
-void select_reactor::run(bool block, op_queue<operation>& ops)
-{
-  asio::detail::mutex::scoped_lock lock(mutex_);
-
-#if defined(ASIO_HAS_IOCP)
-  // Check if the thread is supposed to stop.
-  if (stop_thread_)
-    return;
-#endif // defined(ASIO_HAS_IOCP)
-
-  // Set up the descriptor sets.
-  for (int i = 0; i < max_select_ops; ++i)
-    fd_sets_[i].reset();
-  fd_sets_[read_op].set(interrupter_.read_descriptor());
-  socket_type max_fd = 0;
-  bool have_work_to_do = !timer_queues_.all_empty();
-  for (int i = 0; i < max_select_ops; ++i)
-  {
-    have_work_to_do = have_work_to_do || !op_queue_[i].empty();
-    fd_sets_[i].set(op_queue_[i], ops);
-    if (fd_sets_[i].max_descriptor() > max_fd)
-      max_fd = fd_sets_[i].max_descriptor();
-  }
-
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  // Connection operations on Windows use both except and write fd_sets.
-  have_work_to_do = have_work_to_do || !op_queue_[connect_op].empty();
-  fd_sets_[write_op].set(op_queue_[connect_op], ops);
-  if (fd_sets_[write_op].max_descriptor() > max_fd)
-    max_fd = fd_sets_[write_op].max_descriptor();
-  fd_sets_[except_op].set(op_queue_[connect_op], ops);
-  if (fd_sets_[except_op].max_descriptor() > max_fd)
-    max_fd = fd_sets_[except_op].max_descriptor();
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
-  // We can return immediately if there's no work to do and the reactor is
-  // not supposed to block.
-  if (!block && !have_work_to_do)
-    return;
-
-  // Determine how long to block while waiting for events.
-  timeval tv_buf = { 0, 0 };
-  timeval* tv = block ? get_timeout(tv_buf) : &tv_buf;
-
-  lock.unlock();
-
-  // Block on the select call until descriptors become ready.
-  asio::error_code ec;
-  int retval = socket_ops::select(static_cast<int>(max_fd + 1),
-      fd_sets_[read_op], fd_sets_[write_op], fd_sets_[except_op], tv, ec);
-
-  // Reset the interrupter.
-  if (retval > 0 && fd_sets_[read_op].is_set(interrupter_.read_descriptor()))
-  {
-    interrupter_.reset();
-    --retval;
-  }
-
-  lock.lock();
-
-  // Dispatch all ready operations.
-  if (retval > 0)
-  {
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-    // Connection operations on Windows use both except and write fd_sets.
-    fd_sets_[except_op].perform(op_queue_[connect_op], ops);
-    fd_sets_[write_op].perform(op_queue_[connect_op], ops);
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
-    // Exception operations must be processed first to ensure that any
-    // out-of-band data is read before normal data.
-    for (int i = max_select_ops - 1; i >= 0; --i)
-      fd_sets_[i].perform(op_queue_[i], ops);
-  }
-  timer_queues_.get_ready_timers(ops);
-}
-
-void select_reactor::interrupt()
-{
-  interrupter_.interrupt();
-}
-
-#if defined(ASIO_HAS_IOCP)
-void select_reactor::run_thread()
-{
-  asio::detail::mutex::scoped_lock lock(mutex_);
-  while (!stop_thread_)
-  {
-    lock.unlock();
-    op_queue<operation> ops;
-    run(true, ops);
-    io_service_.post_deferred_completions(ops);
-    lock.lock();
-  }
-}
-
-void select_reactor::call_run_thread(select_reactor* reactor)
-{
-  reactor->run_thread();
-}
-#endif // defined(ASIO_HAS_IOCP)
-
-void select_reactor::do_add_timer_queue(timer_queue_base& queue)
-{
-  mutex::scoped_lock lock(mutex_);
-  timer_queues_.insert(&queue);
-}
-
-void select_reactor::do_remove_timer_queue(timer_queue_base& queue)
-{
-  mutex::scoped_lock lock(mutex_);
-  timer_queues_.erase(&queue);
-}
-
-timeval* select_reactor::get_timeout(timeval& tv)
-{
-  // By default we will wait no longer than 5 minutes. This will ensure that
-  // any changes to the system clock are detected after no longer than this.
-  long usec = timer_queues_.wait_duration_usec(5 * 60 * 1000 * 1000);
-  tv.tv_sec = usec / 1000000;
-  tv.tv_usec = usec % 1000000;
-  return &tv;
-}
-
-void select_reactor::cancel_ops_unlocked(socket_type descriptor,
-    const asio::error_code& ec)
-{
-  bool need_interrupt = false;
-  op_queue<operation> ops;
-  for (int i = 0; i < max_ops; ++i)
-    need_interrupt = op_queue_[i].cancel_operations(
-        descriptor, ops, ec) || need_interrupt;
-  io_service_.post_deferred_completions(ops);
-  if (need_interrupt)
-    interrupter_.interrupt();
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_IOCP)
-       //   || (!defined(ASIO_HAS_DEV_POLL)
-       //       && !defined(ASIO_HAS_EPOLL)
-       //       && !defined(ASIO_HAS_KQUEUE))
-       //       && !defined(ASIO_WINDOWS_RUNTIME))
-
-#endif // ASIO_DETAIL_IMPL_SELECT_REACTOR_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/service_registry.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/service_registry.hpp
deleted file mode 100644
index 90cfaa8..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/service_registry.hpp
+++ /dev/null
@@ -1,88 +0,0 @@
-//
-// detail/impl/service_registry.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_SERVICE_REGISTRY_HPP
-#define ASIO_DETAIL_IMPL_SERVICE_REGISTRY_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Service, typename Arg>
-service_registry::service_registry(
-    asio::io_service& o, Service*, Arg arg)
-  : owner_(o),
-    first_service_(new Service(o, arg))
-{
-  asio::io_service::service::key key;
-  init_key(key, Service::id);
-  first_service_->key_ = key;
-  first_service_->next_ = 0;
-}
-
-template <typename Service>
-Service& service_registry::first_service()
-{
-  return *static_cast<Service*>(first_service_);
-}
-
-template <typename Service>
-Service& service_registry::use_service()
-{
-  asio::io_service::service::key key;
-  init_key(key, Service::id);
-  factory_type factory = &service_registry::create<Service>;
-  return *static_cast<Service*>(do_use_service(key, factory));
-}
-
-template <typename Service>
-void service_registry::add_service(Service* new_service)
-{
-  asio::io_service::service::key key;
-  init_key(key, Service::id);
-  return do_add_service(key, new_service);
-}
-
-template <typename Service>
-bool service_registry::has_service() const
-{
-  asio::io_service::service::key key;
-  init_key(key, Service::id);
-  return do_has_service(key);
-}
-
-#if !defined(ASIO_NO_TYPEID)
-template <typename Service>
-void service_registry::init_key(asio::io_service::service::key& key,
-    const asio::detail::service_id<Service>& /*id*/)
-{
-  key.type_info_ = &typeid(typeid_wrapper<Service>);
-  key.id_ = 0;
-}
-#endif // !defined(ASIO_NO_TYPEID)
-
-template <typename Service>
-asio::io_service::service* service_registry::create(
-    asio::io_service& owner)
-{
-  return new Service(owner);
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_IMPL_SERVICE_REGISTRY_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/service_registry.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/service_registry.ipp
deleted file mode 100644
index b7358c5..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/service_registry.ipp
+++ /dev/null
@@ -1,188 +0,0 @@
-//
-// detail/impl/service_registry.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_SERVICE_REGISTRY_IPP
-#define ASIO_DETAIL_IMPL_SERVICE_REGISTRY_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <vector>
-#include "asio/detail/service_registry.hpp"
-#include "asio/detail/throw_exception.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-service_registry::~service_registry()
-{
-  // Shutdown all services. This must be done in a separate loop before the
-  // services are destroyed since the destructors of user-defined handler
-  // objects may try to access other service objects.
-  asio::io_service::service* service = first_service_;
-  while (service)
-  {
-    service->shutdown_service();
-    service = service->next_;
-  }
-
-  // Destroy all services.
-  while (first_service_)
-  {
-    asio::io_service::service* next_service = first_service_->next_;
-    destroy(first_service_);
-    first_service_ = next_service;
-  }
-}
-
-void service_registry::notify_fork(asio::io_service::fork_event fork_ev)
-{
-  // Make a copy of all of the services while holding the lock. We don't want
-  // to hold the lock while calling into each service, as it may try to call
-  // back into this class.
-  std::vector<asio::io_service::service*> services;
-  {
-    asio::detail::mutex::scoped_lock lock(mutex_);
-    asio::io_service::service* service = first_service_;
-    while (service)
-    {
-      services.push_back(service);
-      service = service->next_;
-    }
-  }
-
-  // If processing the fork_prepare event, we want to go in reverse order of
-  // service registration, which happens to be the existing order of the
-  // services in the vector. For the other events we want to go in the other
-  // direction.
-  std::size_t num_services = services.size();
-  if (fork_ev == asio::io_service::fork_prepare)
-    for (std::size_t i = 0; i < num_services; ++i)
-      services[i]->fork_service(fork_ev);
-  else
-    for (std::size_t i = num_services; i > 0; --i)
-      services[i - 1]->fork_service(fork_ev);
-}
-
-void service_registry::init_key(asio::io_service::service::key& key,
-    const asio::io_service::id& id)
-{
-  key.type_info_ = 0;
-  key.id_ = &id;
-}
-
-bool service_registry::keys_match(
-    const asio::io_service::service::key& key1,
-    const asio::io_service::service::key& key2)
-{
-  if (key1.id_ && key2.id_)
-    if (key1.id_ == key2.id_)
-      return true;
-  if (key1.type_info_ && key2.type_info_)
-    if (*key1.type_info_ == *key2.type_info_)
-      return true;
-  return false;
-}
-
-void service_registry::destroy(asio::io_service::service* service)
-{
-  delete service;
-}
-
-asio::io_service::service* service_registry::do_use_service(
-    const asio::io_service::service::key& key,
-    factory_type factory)
-{
-  asio::detail::mutex::scoped_lock lock(mutex_);
-
-  // First see if there is an existing service object with the given key.
-  asio::io_service::service* service = first_service_;
-  while (service)
-  {
-    if (keys_match(service->key_, key))
-      return service;
-    service = service->next_;
-  }
-
-  // Create a new service object. The service registry's mutex is not locked
-  // at this time to allow for nested calls into this function from the new
-  // service's constructor.
-  lock.unlock();
-  auto_service_ptr new_service = { factory(owner_) };
-  new_service.ptr_->key_ = key;
-  lock.lock();
-
-  // Check that nobody else created another service object of the same type
-  // while the lock was released.
-  service = first_service_;
-  while (service)
-  {
-    if (keys_match(service->key_, key))
-      return service;
-    service = service->next_;
-  }
-
-  // Service was successfully initialised, pass ownership to registry.
-  new_service.ptr_->next_ = first_service_;
-  first_service_ = new_service.ptr_;
-  new_service.ptr_ = 0;
-  return first_service_;
-}
-
-void service_registry::do_add_service(
-    const asio::io_service::service::key& key,
-    asio::io_service::service* new_service)
-{
-  if (&owner_ != &new_service->get_io_service())
-    asio::detail::throw_exception(invalid_service_owner());
-
-  asio::detail::mutex::scoped_lock lock(mutex_);
-
-  // Check if there is an existing service object with the given key.
-  asio::io_service::service* service = first_service_;
-  while (service)
-  {
-    if (keys_match(service->key_, key))
-      asio::detail::throw_exception(service_already_exists());
-    service = service->next_;
-  }
-
-  // Take ownership of the service object.
-  new_service->key_ = key;
-  new_service->next_ = first_service_;
-  first_service_ = new_service;
-}
-
-bool service_registry::do_has_service(
-    const asio::io_service::service::key& key) const
-{
-  asio::detail::mutex::scoped_lock lock(mutex_);
-
-  asio::io_service::service* service = first_service_;
-  while (service)
-  {
-    if (keys_match(service->key_, key))
-      return true;
-    service = service->next_;
-  }
-
-  return false;
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_IMPL_SERVICE_REGISTRY_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/signal_set_service.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/signal_set_service.ipp
deleted file mode 100644
index 1b00dc3..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/signal_set_service.ipp
+++ /dev/null
@@ -1,647 +0,0 @@
-//
-// detail/impl/signal_set_service.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_SIGNAL_SET_SERVICE_IPP
-#define ASIO_DETAIL_IMPL_SIGNAL_SET_SERVICE_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#include <cstring>
-#include "asio/detail/reactor.hpp"
-#include "asio/detail/signal_blocker.hpp"
-#include "asio/detail/signal_set_service.hpp"
-#include "asio/detail/static_mutex.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-struct signal_state
-{
-  // Mutex used for protecting global state.
-  static_mutex mutex_;
-
-  // The read end of the pipe used for signal notifications.
-  int read_descriptor_;
-
-  // The write end of the pipe used for signal notifications.
-  int write_descriptor_;
-
-  // Whether the signal state has been prepared for a fork.
-  bool fork_prepared_;
-
-  // The head of a linked list of all signal_set_service instances.
-  class signal_set_service* service_list_;
-
-  // A count of the number of objects that are registered for each signal.
-  std::size_t registration_count_[max_signal_number];
-};
-
-signal_state* get_signal_state()
-{
-  static signal_state state = {
-    ASIO_STATIC_MUTEX_INIT, -1, -1, false, 0, { 0 } };
-  return &state;
-}
-
-void asio_signal_handler(int signal_number)
-{
-#if defined(ASIO_WINDOWS) \
-  || defined(ASIO_WINDOWS_RUNTIME) \
-  || defined(__CYGWIN__)
-  signal_set_service::deliver_signal(signal_number);
-#else // defined(ASIO_WINDOWS)
-      //   || defined(ASIO_WINDOWS_RUNTIME)
-      //   || defined(__CYGWIN__)
-  int saved_errno = errno;
-  signal_state* state = get_signal_state();
-  signed_size_type result = ::write(state->write_descriptor_,
-      &signal_number, sizeof(signal_number));
-  (void)result;
-  errno = saved_errno;
-#endif // defined(ASIO_WINDOWS)
-       //   || defined(ASIO_WINDOWS_RUNTIME)
-       //   || defined(__CYGWIN__)
-
-#if defined(ASIO_HAS_SIGNAL) && !defined(ASIO_HAS_SIGACTION)
-  ::signal(signal_number, asio_signal_handler);
-#endif // defined(ASIO_HAS_SIGNAL) && !defined(ASIO_HAS_SIGACTION)
-}
-
-#if !defined(ASIO_WINDOWS) \
-  && !defined(ASIO_WINDOWS_RUNTIME) \
-  && !defined(__CYGWIN__)
-class signal_set_service::pipe_read_op : public reactor_op
-{
-public:
-  pipe_read_op()
-    : reactor_op(&pipe_read_op::do_perform, pipe_read_op::do_complete)
-  {
-  }
-
-  static bool do_perform(reactor_op*)
-  {
-    signal_state* state = get_signal_state();
-
-    int fd = state->read_descriptor_;
-    int signal_number = 0;
-    while (::read(fd, &signal_number, sizeof(int)) == sizeof(int))
-      if (signal_number >= 0 && signal_number < max_signal_number)
-        signal_set_service::deliver_signal(signal_number);
-
-    return false;
-  }
-
-  static void do_complete(io_service_impl* /*owner*/, operation* base,
-      const asio::error_code& /*ec*/,
-      std::size_t /*bytes_transferred*/)
-  {
-    pipe_read_op* o(static_cast<pipe_read_op*>(base));
-    delete o;
-  }
-};
-#endif // !defined(ASIO_WINDOWS)
-       //   && !defined(ASIO_WINDOWS_RUNTIME)
-       //   && !defined(__CYGWIN__)
-
-signal_set_service::signal_set_service(
-    asio::io_service& io_service)
-  : io_service_(asio::use_service<io_service_impl>(io_service)),
-#if !defined(ASIO_WINDOWS) \
-  && !defined(ASIO_WINDOWS_RUNTIME) \
-  && !defined(__CYGWIN__)
-    reactor_(asio::use_service<reactor>(io_service)),
-#endif // !defined(ASIO_WINDOWS)
-       //   && !defined(ASIO_WINDOWS_RUNTIME)
-       //   && !defined(__CYGWIN__)
-    next_(0),
-    prev_(0)
-{
-  get_signal_state()->mutex_.init();
-
-#if !defined(ASIO_WINDOWS) \
-  && !defined(ASIO_WINDOWS_RUNTIME) \
-  && !defined(__CYGWIN__)
-  reactor_.init_task();
-#endif // !defined(ASIO_WINDOWS)
-       //   && !defined(ASIO_WINDOWS_RUNTIME)
-       //   && !defined(__CYGWIN__)
-
-  for (int i = 0; i < max_signal_number; ++i)
-    registrations_[i] = 0;
-
-  add_service(this);
-}
-
-signal_set_service::~signal_set_service()
-{
-  remove_service(this);
-}
-
-void signal_set_service::shutdown_service()
-{
-  remove_service(this);
-
-  op_queue<operation> ops;
-
-  for (int i = 0; i < max_signal_number; ++i)
-  {
-    registration* reg = registrations_[i];
-    while (reg)
-    {
-      ops.push(*reg->queue_);
-      reg = reg->next_in_table_;
-    }
-  }
-
-  io_service_.abandon_operations(ops);
-}
-
-void signal_set_service::fork_service(
-    asio::io_service::fork_event fork_ev)
-{
-#if !defined(ASIO_WINDOWS) \
-  && !defined(ASIO_WINDOWS_RUNTIME) \
-  && !defined(__CYGWIN__)
-  signal_state* state = get_signal_state();
-  static_mutex::scoped_lock lock(state->mutex_);
-
-  switch (fork_ev)
-  {
-  case asio::io_service::fork_prepare:
-    {
-      int read_descriptor = state->read_descriptor_;
-      state->fork_prepared_ = true;
-      lock.unlock();
-      reactor_.deregister_internal_descriptor(read_descriptor, reactor_data_);
-    }
-    break;
-  case asio::io_service::fork_parent:
-    if (state->fork_prepared_)
-    {
-      int read_descriptor = state->read_descriptor_;
-      state->fork_prepared_ = false;
-      lock.unlock();
-      reactor_.register_internal_descriptor(reactor::read_op,
-          read_descriptor, reactor_data_, new pipe_read_op);
-    }
-    break;
-  case asio::io_service::fork_child:
-    if (state->fork_prepared_)
-    {
-      asio::detail::signal_blocker blocker;
-      close_descriptors();
-      open_descriptors();
-      int read_descriptor = state->read_descriptor_;
-      state->fork_prepared_ = false;
-      lock.unlock();
-      reactor_.register_internal_descriptor(reactor::read_op,
-          read_descriptor, reactor_data_, new pipe_read_op);
-    }
-    break;
-  default:
-    break;
-  }
-#else // !defined(ASIO_WINDOWS)
-      //   && !defined(ASIO_WINDOWS_RUNTIME)
-      //   && !defined(__CYGWIN__)
-  (void)fork_ev;
-#endif // !defined(ASIO_WINDOWS)
-       //   && !defined(ASIO_WINDOWS_RUNTIME)
-       //   && !defined(__CYGWIN__)
-}
-
-void signal_set_service::construct(
-    signal_set_service::implementation_type& impl)
-{
-  impl.signals_ = 0;
-}
-
-void signal_set_service::destroy(
-    signal_set_service::implementation_type& impl)
-{
-  asio::error_code ignored_ec;
-  clear(impl, ignored_ec);
-  cancel(impl, ignored_ec);
-}
-
-asio::error_code signal_set_service::add(
-    signal_set_service::implementation_type& impl,
-    int signal_number, asio::error_code& ec)
-{
-  // Check that the signal number is valid.
-  if (signal_number < 0 || signal_number >= max_signal_number)
-  {
-    ec = asio::error::invalid_argument;
-    return ec;
-  }
-
-  signal_state* state = get_signal_state();
-  static_mutex::scoped_lock lock(state->mutex_);
-
-  // Find the appropriate place to insert the registration.
-  registration** insertion_point = &impl.signals_;
-  registration* next = impl.signals_;
-  while (next && next->signal_number_ < signal_number)
-  {
-    insertion_point = &next->next_in_set_;
-    next = next->next_in_set_;
-  }
-
-  // Only do something if the signal is not already registered.
-  if (next == 0 || next->signal_number_ != signal_number)
-  {
-    registration* new_registration = new registration;
-
-#if defined(ASIO_HAS_SIGNAL) || defined(ASIO_HAS_SIGACTION)
-    // Register for the signal if we're the first.
-    if (state->registration_count_[signal_number] == 0)
-    {
-# if defined(ASIO_HAS_SIGACTION)
-      using namespace std; // For memset.
-      struct sigaction sa;
-      memset(&sa, 0, sizeof(sa));
-      sa.sa_handler = asio_signal_handler;
-      sigfillset(&sa.sa_mask);
-      if (::sigaction(signal_number, &sa, 0) == -1)
-# else // defined(ASIO_HAS_SIGACTION)
-      if (::signal(signal_number, asio_signal_handler) == SIG_ERR)
-# endif // defined(ASIO_HAS_SIGACTION)
-      {
-# if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-        ec = asio::error::invalid_argument;
-# else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-        ec = asio::error_code(errno,
-            asio::error::get_system_category());
-# endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-        delete new_registration;
-        return ec;
-      }
-    }
-#endif // defined(ASIO_HAS_SIGNAL) || defined(ASIO_HAS_SIGACTION)
-
-    // Record the new registration in the set.
-    new_registration->signal_number_ = signal_number;
-    new_registration->queue_ = &impl.queue_;
-    new_registration->next_in_set_ = next;
-    *insertion_point = new_registration;
-
-    // Insert registration into the registration table.
-    new_registration->next_in_table_ = registrations_[signal_number];
-    if (registrations_[signal_number])
-      registrations_[signal_number]->prev_in_table_ = new_registration;
-    registrations_[signal_number] = new_registration;
-
-    ++state->registration_count_[signal_number];
-  }
-
-  ec = asio::error_code();
-  return ec;
-}
-
-asio::error_code signal_set_service::remove(
-    signal_set_service::implementation_type& impl,
-    int signal_number, asio::error_code& ec)
-{
-  // Check that the signal number is valid.
-  if (signal_number < 0 || signal_number >= max_signal_number)
-  {
-    ec = asio::error::invalid_argument;
-    return ec;
-  }
-
-  signal_state* state = get_signal_state();
-  static_mutex::scoped_lock lock(state->mutex_);
-
-  // Find the signal number in the list of registrations.
-  registration** deletion_point = &impl.signals_;
-  registration* reg = impl.signals_;
-  while (reg && reg->signal_number_ < signal_number)
-  {
-    deletion_point = &reg->next_in_set_;
-    reg = reg->next_in_set_;
-  }
-
-  if (reg != 0 && reg->signal_number_ == signal_number)
-  {
-#if defined(ASIO_HAS_SIGNAL) || defined(ASIO_HAS_SIGACTION)
-    // Set signal handler back to the default if we're the last.
-    if (state->registration_count_[signal_number] == 1)
-    {
-# if defined(ASIO_HAS_SIGACTION)
-      using namespace std; // For memset.
-      struct sigaction sa;
-      memset(&sa, 0, sizeof(sa));
-      sa.sa_handler = SIG_DFL;
-      if (::sigaction(signal_number, &sa, 0) == -1)
-# else // defined(ASIO_HAS_SIGACTION)
-      if (::signal(signal_number, SIG_DFL) == SIG_ERR)
-# endif // defined(ASIO_HAS_SIGACTION)
-      {
-# if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-        ec = asio::error::invalid_argument;
-# else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-        ec = asio::error_code(errno,
-            asio::error::get_system_category());
-# endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-        return ec;
-      }
-    }
-#endif // defined(ASIO_HAS_SIGNAL) || defined(ASIO_HAS_SIGACTION)
-
-    // Remove the registration from the set.
-    *deletion_point = reg->next_in_set_;
-
-    // Remove the registration from the registration table.
-    if (registrations_[signal_number] == reg)
-      registrations_[signal_number] = reg->next_in_table_;
-    if (reg->prev_in_table_)
-      reg->prev_in_table_->next_in_table_ = reg->next_in_table_;
-    if (reg->next_in_table_)
-      reg->next_in_table_->prev_in_table_ = reg->prev_in_table_;
-
-    --state->registration_count_[signal_number];
-
-    delete reg;
-  }
-
-  ec = asio::error_code();
-  return ec;
-}
-
-asio::error_code signal_set_service::clear(
-    signal_set_service::implementation_type& impl,
-    asio::error_code& ec)
-{
-  signal_state* state = get_signal_state();
-  static_mutex::scoped_lock lock(state->mutex_);
-
-  while (registration* reg = impl.signals_)
-  {
-#if defined(ASIO_HAS_SIGNAL) || defined(ASIO_HAS_SIGACTION)
-    // Set signal handler back to the default if we're the last.
-    if (state->registration_count_[reg->signal_number_] == 1)
-    {
-# if defined(ASIO_HAS_SIGACTION)
-      using namespace std; // For memset.
-      struct sigaction sa;
-      memset(&sa, 0, sizeof(sa));
-      sa.sa_handler = SIG_DFL;
-      if (::sigaction(reg->signal_number_, &sa, 0) == -1)
-# else // defined(ASIO_HAS_SIGACTION)
-      if (::signal(reg->signal_number_, SIG_DFL) == SIG_ERR)
-# endif // defined(ASIO_HAS_SIGACTION)
-      {
-# if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-        ec = asio::error::invalid_argument;
-# else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-        ec = asio::error_code(errno,
-            asio::error::get_system_category());
-# endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-        return ec;
-      }
-    }
-#endif // defined(ASIO_HAS_SIGNAL) || defined(ASIO_HAS_SIGACTION)
-
-    // Remove the registration from the registration table.
-    if (registrations_[reg->signal_number_] == reg)
-      registrations_[reg->signal_number_] = reg->next_in_table_;
-    if (reg->prev_in_table_)
-      reg->prev_in_table_->next_in_table_ = reg->next_in_table_;
-    if (reg->next_in_table_)
-      reg->next_in_table_->prev_in_table_ = reg->prev_in_table_;
-
-    --state->registration_count_[reg->signal_number_];
-
-    impl.signals_ = reg->next_in_set_;
-    delete reg;
-  }
-
-  ec = asio::error_code();
-  return ec;
-}
-
-asio::error_code signal_set_service::cancel(
-    signal_set_service::implementation_type& impl,
-    asio::error_code& ec)
-{
-  ASIO_HANDLER_OPERATION(("signal_set", &impl, "cancel"));
-
-  op_queue<operation> ops;
-  {
-    signal_state* state = get_signal_state();
-    static_mutex::scoped_lock lock(state->mutex_);
-
-    while (signal_op* op = impl.queue_.front())
-    {
-      op->ec_ = asio::error::operation_aborted;
-      impl.queue_.pop();
-      ops.push(op);
-    }
-  }
-
-  io_service_.post_deferred_completions(ops);
-
-  ec = asio::error_code();
-  return ec;
-}
-
-void signal_set_service::deliver_signal(int signal_number)
-{
-  signal_state* state = get_signal_state();
-  static_mutex::scoped_lock lock(state->mutex_);
-
-  signal_set_service* service = state->service_list_;
-  while (service)
-  {
-    op_queue<operation> ops;
-
-    registration* reg = service->registrations_[signal_number];
-    while (reg)
-    {
-      if (reg->queue_->empty())
-      {
-        ++reg->undelivered_;
-      }
-      else
-      {
-        while (signal_op* op = reg->queue_->front())
-        {
-          op->signal_number_ = signal_number;
-          reg->queue_->pop();
-          ops.push(op);
-        }
-      }
-
-      reg = reg->next_in_table_;
-    }
-
-    service->io_service_.post_deferred_completions(ops);
-
-    service = service->next_;
-  }
-}
-
-void signal_set_service::add_service(signal_set_service* service)
-{
-  signal_state* state = get_signal_state();
-  static_mutex::scoped_lock lock(state->mutex_);
-
-#if !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-  // If this is the first service to be created, open a new pipe.
-  if (state->service_list_ == 0)
-    open_descriptors();
-#endif // !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-
-  // Insert service into linked list of all services.
-  service->next_ = state->service_list_;
-  service->prev_ = 0;
-  if (state->service_list_)
-    state->service_list_->prev_ = service;
-  state->service_list_ = service;
-
-#if !defined(ASIO_WINDOWS) \
-  && !defined(ASIO_WINDOWS_RUNTIME) \
-  && !defined(__CYGWIN__)
-  // Register for pipe readiness notifications.
-  int read_descriptor = state->read_descriptor_;
-  lock.unlock();
-  service->reactor_.register_internal_descriptor(reactor::read_op,
-      read_descriptor, service->reactor_data_, new pipe_read_op);
-#endif // !defined(ASIO_WINDOWS)
-       //   && !defined(ASIO_WINDOWS_RUNTIME)
-       //   && !defined(__CYGWIN__)
-}
-
-void signal_set_service::remove_service(signal_set_service* service)
-{
-  signal_state* state = get_signal_state();
-  static_mutex::scoped_lock lock(state->mutex_);
-
-  if (service->next_ || service->prev_ || state->service_list_ == service)
-  {
-#if !defined(ASIO_WINDOWS) \
-  && !defined(ASIO_WINDOWS_RUNTIME) \
-  && !defined(__CYGWIN__)
-    // Disable the pipe readiness notifications.
-    int read_descriptor = state->read_descriptor_;
-    lock.unlock();
-    service->reactor_.deregister_descriptor(
-        read_descriptor, service->reactor_data_, false);
-    lock.lock();
-#endif // !defined(ASIO_WINDOWS)
-       //   && !defined(ASIO_WINDOWS_RUNTIME)
-       //   && !defined(__CYGWIN__)
-
-    // Remove service from linked list of all services.
-    if (state->service_list_ == service)
-      state->service_list_ = service->next_;
-    if (service->prev_)
-      service->prev_->next_ = service->next_;
-    if (service->next_)
-      service->next_->prev_= service->prev_;
-    service->next_ = 0;
-    service->prev_ = 0;
-
-#if !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-    // If this is the last service to be removed, close the pipe.
-    if (state->service_list_ == 0)
-      close_descriptors();
-#endif // !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-  }
-}
-
-void signal_set_service::open_descriptors()
-{
-#if !defined(ASIO_WINDOWS) \
-  && !defined(ASIO_WINDOWS_RUNTIME) \
-  && !defined(__CYGWIN__)
-  signal_state* state = get_signal_state();
-
-  int pipe_fds[2];
-  if (::pipe(pipe_fds) == 0)
-  {
-    state->read_descriptor_ = pipe_fds[0];
-    ::fcntl(state->read_descriptor_, F_SETFL, O_NONBLOCK);
-
-    state->write_descriptor_ = pipe_fds[1];
-    ::fcntl(state->write_descriptor_, F_SETFL, O_NONBLOCK);
-
-#if defined(FD_CLOEXEC)
-    ::fcntl(state->read_descriptor_, F_SETFD, FD_CLOEXEC);
-    ::fcntl(state->write_descriptor_, F_SETFD, FD_CLOEXEC);
-#endif // defined(FD_CLOEXEC)
-  }
-  else
-  {
-    asio::error_code ec(errno,
-        asio::error::get_system_category());
-    asio::detail::throw_error(ec, "signal_set_service pipe");
-  }
-#endif // !defined(ASIO_WINDOWS)
-       //   && !defined(ASIO_WINDOWS_RUNTIME)
-       //   && !defined(__CYGWIN__)
-}
-
-void signal_set_service::close_descriptors()
-{
-#if !defined(ASIO_WINDOWS) \
-  && !defined(ASIO_WINDOWS_RUNTIME) \
-  && !defined(__CYGWIN__)
-  signal_state* state = get_signal_state();
-
-  if (state->read_descriptor_ != -1)
-    ::close(state->read_descriptor_);
-  state->read_descriptor_ = -1;
-
-  if (state->write_descriptor_ != -1)
-    ::close(state->write_descriptor_);
-  state->write_descriptor_ = -1;
-#endif // !defined(ASIO_WINDOWS)
-       //   && !defined(ASIO_WINDOWS_RUNTIME)
-       //   && !defined(__CYGWIN__)
-}
-
-void signal_set_service::start_wait_op(
-    signal_set_service::implementation_type& impl, signal_op* op)
-{
-  io_service_.work_started();
-
-  signal_state* state = get_signal_state();
-  static_mutex::scoped_lock lock(state->mutex_);
-
-  registration* reg = impl.signals_;
-  while (reg)
-  {
-    if (reg->undelivered_ > 0)
-    {
-      --reg->undelivered_;
-      op->signal_number_ = reg->signal_number_;
-      io_service_.post_deferred_completion(op);
-      return;
-    }
-
-    reg = reg->next_in_set_;
-  }
-
-  impl.queue_.push(op);
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_IMPL_SIGNAL_SET_SERVICE_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/socket_ops.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/socket_ops.ipp
deleted file mode 100644
index 6d3de48..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/socket_ops.ipp
+++ /dev/null
@@ -1,3433 +0,0 @@
-//
-// detail/impl/socket_ops.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_SOCKET_OPS_IPP
-#define ASIO_DETAIL_SOCKET_OPS_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#include <cctype>
-#include <cstdio>
-#include <cstdlib>
-#include <cstring>
-#include <cerrno>
-#include <new>
-#include "asio/detail/assert.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/error.hpp"
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-# include <codecvt>
-# include <locale>
-# include <string>
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) \
-  || defined(__MACH__) && defined(__APPLE__)
-# if defined(ASIO_HAS_PTHREADS)
-#  include <pthread.h>
-# endif // defined(ASIO_HAS_PTHREADS)
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-       // || defined(__MACH__) && defined(__APPLE__)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-namespace socket_ops {
-
-#if !defined(ASIO_WINDOWS_RUNTIME)
-
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-struct msghdr { int msg_namelen; };
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
-#if defined(__hpux)
-// HP-UX doesn't declare these functions extern "C", so they are declared again
-// here to avoid linker errors about undefined symbols.
-extern "C" char* if_indextoname(unsigned int, char*);
-extern "C" unsigned int if_nametoindex(const char*);
-#endif // defined(__hpux)
-
-#endif // !defined(ASIO_WINDOWS_RUNTIME)
-
-inline void clear_last_error()
-{
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  WSASetLastError(0);
-#else
-  errno = 0;
-#endif
-}
-
-#if !defined(ASIO_WINDOWS_RUNTIME)
-
-template <typename ReturnType>
-inline ReturnType error_wrapper(ReturnType return_value,
-    asio::error_code& ec)
-{
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  ec = asio::error_code(WSAGetLastError(),
-      asio::error::get_system_category());
-#else
-  ec = asio::error_code(errno,
-      asio::error::get_system_category());
-#endif
-  return return_value;
-}
-
-template <typename SockLenType>
-inline socket_type call_accept(SockLenType msghdr::*,
-    socket_type s, socket_addr_type* addr, std::size_t* addrlen)
-{
-  SockLenType tmp_addrlen = addrlen ? (SockLenType)*addrlen : 0;
-  socket_type result = ::accept(s, addr, addrlen ? &tmp_addrlen : 0);
-  if (addrlen)
-    *addrlen = (std::size_t)tmp_addrlen;
-  return result;
-}
-
-socket_type accept(socket_type s, socket_addr_type* addr,
-    std::size_t* addrlen, asio::error_code& ec)
-{
-  if (s == invalid_socket)
-  {
-    ec = asio::error::bad_descriptor;
-    return invalid_socket;
-  }
-
-  clear_last_error();
-
-  socket_type new_s = error_wrapper(call_accept(
-        &msghdr::msg_namelen, s, addr, addrlen), ec);
-  if (new_s == invalid_socket)
-    return new_s;
-
-#if defined(__MACH__) && defined(__APPLE__) || defined(__FreeBSD__)
-  int optval = 1;
-  int result = error_wrapper(::setsockopt(new_s,
-        SOL_SOCKET, SO_NOSIGPIPE, &optval, sizeof(optval)), ec);
-  if (result != 0)
-  {
-    ::close(new_s);
-    return invalid_socket;
-  }
-#endif
-
-  ec = asio::error_code();
-  return new_s;
-}
-
-socket_type sync_accept(socket_type s, state_type state,
-    socket_addr_type* addr, std::size_t* addrlen, asio::error_code& ec)
-{
-  // Accept a socket.
-  for (;;)
-  {
-    // Try to complete the operation without blocking.
-    socket_type new_socket = socket_ops::accept(s, addr, addrlen, ec);
-
-    // Check if operation succeeded.
-    if (new_socket != invalid_socket)
-      return new_socket;
-
-    // Operation failed.
-    if (ec == asio::error::would_block
-        || ec == asio::error::try_again)
-    {
-      if (state & user_set_non_blocking)
-        return invalid_socket;
-      // Fall through to retry operation.
-    }
-    else if (ec == asio::error::connection_aborted)
-    {
-      if (state & enable_connection_aborted)
-        return invalid_socket;
-      // Fall through to retry operation.
-    }
-#if defined(EPROTO)
-    else if (ec.value() == EPROTO)
-    {
-      if (state & enable_connection_aborted)
-        return invalid_socket;
-      // Fall through to retry operation.
-    }
-#endif // defined(EPROTO)
-    else
-      return invalid_socket;
-
-    // Wait for socket to become ready.
-    if (socket_ops::poll_read(s, 0, ec) < 0)
-      return invalid_socket;
-  }
-}
-
-#if defined(ASIO_HAS_IOCP)
-
-void complete_iocp_accept(socket_type s,
-    void* output_buffer, DWORD address_length,
-    socket_addr_type* addr, std::size_t* addrlen,
-    socket_type new_socket, asio::error_code& ec)
-{
-  // Map non-portable errors to their portable counterparts.
-  if (ec.value() == ERROR_NETNAME_DELETED)
-    ec = asio::error::connection_aborted;
-
-  if (!ec)
-  {
-    // Get the address of the peer.
-    if (addr && addrlen)
-    {
-      LPSOCKADDR local_addr = 0;
-      int local_addr_length = 0;
-      LPSOCKADDR remote_addr = 0;
-      int remote_addr_length = 0;
-      GetAcceptExSockaddrs(output_buffer, 0, address_length,
-          address_length, &local_addr, &local_addr_length,
-          &remote_addr, &remote_addr_length);
-      if (static_cast<std::size_t>(remote_addr_length) > *addrlen)
-      {
-        ec = asio::error::invalid_argument;
-      }
-      else
-      {
-        using namespace std; // For memcpy.
-        memcpy(addr, remote_addr, remote_addr_length);
-        *addrlen = static_cast<std::size_t>(remote_addr_length);
-      }
-    }
-
-    // Need to set the SO_UPDATE_ACCEPT_CONTEXT option so that getsockname
-    // and getpeername will work on the accepted socket.
-    SOCKET update_ctx_param = s;
-    socket_ops::state_type state = 0;
-    socket_ops::setsockopt(new_socket, state,
-          SOL_SOCKET, SO_UPDATE_ACCEPT_CONTEXT,
-          &update_ctx_param, sizeof(SOCKET), ec);
-  }
-}
-
-#else // defined(ASIO_HAS_IOCP)
-
-bool non_blocking_accept(socket_type s,
-    state_type state, socket_addr_type* addr, std::size_t* addrlen,
-    asio::error_code& ec, socket_type& new_socket)
-{
-  for (;;)
-  {
-    // Accept the waiting connection.
-    new_socket = socket_ops::accept(s, addr, addrlen, ec);
-
-    // Check if operation succeeded.
-    if (new_socket != invalid_socket)
-      return true;
-
-    // Retry operation if interrupted by signal.
-    if (ec == asio::error::interrupted)
-      continue;
-
-    // Operation failed.
-    if (ec == asio::error::would_block
-        || ec == asio::error::try_again)
-    {
-      if (state & user_set_non_blocking)
-        return true;
-      // Fall through to retry operation.
-    }
-    else if (ec == asio::error::connection_aborted)
-    {
-      if (state & enable_connection_aborted)
-        return true;
-      // Fall through to retry operation.
-    }
-#if defined(EPROTO)
-    else if (ec.value() == EPROTO)
-    {
-      if (state & enable_connection_aborted)
-        return true;
-      // Fall through to retry operation.
-    }
-#endif // defined(EPROTO)
-    else
-      return true;
-
-    return false;
-  }
-}
-
-#endif // defined(ASIO_HAS_IOCP)
-
-template <typename SockLenType>
-inline int call_bind(SockLenType msghdr::*,
-    socket_type s, const socket_addr_type* addr, std::size_t addrlen)
-{
-  return ::bind(s, addr, (SockLenType)addrlen);
-}
-
-int bind(socket_type s, const socket_addr_type* addr,
-    std::size_t addrlen, asio::error_code& ec)
-{
-  if (s == invalid_socket)
-  {
-    ec = asio::error::bad_descriptor;
-    return socket_error_retval;
-  }
-
-  clear_last_error();
-  int result = error_wrapper(call_bind(
-        &msghdr::msg_namelen, s, addr, addrlen), ec);
-  if (result == 0)
-    ec = asio::error_code();
-  return result;
-}
-
-int close(socket_type s, state_type& state,
-    bool destruction, asio::error_code& ec)
-{
-  int result = 0;
-  if (s != invalid_socket)
-  {
-    // We don't want the destructor to block, so set the socket to linger in
-    // the background. If the user doesn't like this behaviour then they need
-    // to explicitly close the socket.
-    if (destruction && (state & user_set_linger))
-    {
-      ::linger opt;
-      opt.l_onoff = 0;
-      opt.l_linger = 0;
-      asio::error_code ignored_ec;
-      socket_ops::setsockopt(s, state, SOL_SOCKET,
-          SO_LINGER, &opt, sizeof(opt), ignored_ec);
-    }
-
-    clear_last_error();
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-    result = error_wrapper(::closesocket(s), ec);
-#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-    result = error_wrapper(::close(s), ec);
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
-    if (result != 0
-        && (ec == asio::error::would_block
-          || ec == asio::error::try_again))
-    {
-      // According to UNIX Network Programming Vol. 1, it is possible for
-      // close() to fail with EWOULDBLOCK under certain circumstances. What
-      // isn't clear is the state of the descriptor after this error. The one
-      // current OS where this behaviour is seen, Windows, says that the socket
-      // remains open. Therefore we'll put the descriptor back into blocking
-      // mode and have another attempt at closing it.
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-      ioctl_arg_type arg = 0;
-      ::ioctlsocket(s, FIONBIO, &arg);
-#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-# if defined(__SYMBIAN32__)
-      int flags = ::fcntl(s, F_GETFL, 0);
-      if (flags >= 0)
-        ::fcntl(s, F_SETFL, flags & ~O_NONBLOCK);
-# else // defined(__SYMBIAN32__)
-      ioctl_arg_type arg = 0;
-      ::ioctl(s, FIONBIO, &arg);
-# endif // defined(__SYMBIAN32__)
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-      state &= ~non_blocking;
-
-      clear_last_error();
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-      result = error_wrapper(::closesocket(s), ec);
-#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-      result = error_wrapper(::close(s), ec);
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-    }
-  }
-
-  if (result == 0)
-    ec = asio::error_code();
-  return result;
-}
-
-bool set_user_non_blocking(socket_type s,
-    state_type& state, bool value, asio::error_code& ec)
-{
-  if (s == invalid_socket)
-  {
-    ec = asio::error::bad_descriptor;
-    return false;
-  }
-
-  clear_last_error();
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  ioctl_arg_type arg = (value ? 1 : 0);
-  int result = error_wrapper(::ioctlsocket(s, FIONBIO, &arg), ec);
-#elif defined(__SYMBIAN32__)
-  int result = error_wrapper(::fcntl(s, F_GETFL, 0), ec);
-  if (result >= 0)
-  {
-    clear_last_error();
-    int flag = (value ? (result | O_NONBLOCK) : (result & ~O_NONBLOCK));
-    result = error_wrapper(::fcntl(s, F_SETFL, flag), ec);
-  }
-#else
-  ioctl_arg_type arg = (value ? 1 : 0);
-  int result = error_wrapper(::ioctl(s, FIONBIO, &arg), ec);
-#endif
-
-  if (result >= 0)
-  {
-    ec = asio::error_code();
-    if (value)
-      state |= user_set_non_blocking;
-    else
-    {
-      // Clearing the user-set non-blocking mode always overrides any
-      // internally-set non-blocking flag. Any subsequent asynchronous
-      // operations will need to re-enable non-blocking I/O.
-      state &= ~(user_set_non_blocking | internal_non_blocking);
-    }
-    return true;
-  }
-
-  return false;
-}
-
-bool set_internal_non_blocking(socket_type s,
-    state_type& state, bool value, asio::error_code& ec)
-{
-  if (s == invalid_socket)
-  {
-    ec = asio::error::bad_descriptor;
-    return false;
-  }
-
-  if (!value && (state & user_set_non_blocking))
-  {
-    // It does not make sense to clear the internal non-blocking flag if the
-    // user still wants non-blocking behaviour. Return an error and let the
-    // caller figure out whether to update the user-set non-blocking flag.
-    ec = asio::error::invalid_argument;
-    return false;
-  }
-
-  clear_last_error();
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  ioctl_arg_type arg = (value ? 1 : 0);
-  int result = error_wrapper(::ioctlsocket(s, FIONBIO, &arg), ec);
-#elif defined(__SYMBIAN32__)
-  int result = error_wrapper(::fcntl(s, F_GETFL, 0), ec);
-  if (result >= 0)
-  {
-    clear_last_error();
-    int flag = (value ? (result | O_NONBLOCK) : (result & ~O_NONBLOCK));
-    result = error_wrapper(::fcntl(s, F_SETFL, flag), ec);
-  }
-#else
-  ioctl_arg_type arg = (value ? 1 : 0);
-  int result = error_wrapper(::ioctl(s, FIONBIO, &arg), ec);
-#endif
-
-  if (result >= 0)
-  {
-    ec = asio::error_code();
-    if (value)
-      state |= internal_non_blocking;
-    else
-      state &= ~internal_non_blocking;
-    return true;
-  }
-
-  return false;
-}
-
-int shutdown(socket_type s, int what, asio::error_code& ec)
-{
-  if (s == invalid_socket)
-  {
-    ec = asio::error::bad_descriptor;
-    return socket_error_retval;
-  }
-
-  clear_last_error();
-  int result = error_wrapper(::shutdown(s, what), ec);
-  if (result == 0)
-    ec = asio::error_code();
-  return result;
-}
-
-template <typename SockLenType>
-inline int call_connect(SockLenType msghdr::*,
-    socket_type s, const socket_addr_type* addr, std::size_t addrlen)
-{
-  return ::connect(s, addr, (SockLenType)addrlen);
-}
-
-int connect(socket_type s, const socket_addr_type* addr,
-    std::size_t addrlen, asio::error_code& ec)
-{
-  if (s == invalid_socket)
-  {
-    ec = asio::error::bad_descriptor;
-    return socket_error_retval;
-  }
-
-  clear_last_error();
-  int result = error_wrapper(call_connect(
-        &msghdr::msg_namelen, s, addr, addrlen), ec);
-  if (result == 0)
-    ec = asio::error_code();
-#if defined(__linux__)
-  else if (ec == asio::error::try_again)
-    ec = asio::error::no_buffer_space;
-#endif // defined(__linux__)
-  return result;
-}
-
-void sync_connect(socket_type s, const socket_addr_type* addr,
-    std::size_t addrlen, asio::error_code& ec)
-{
-  // Perform the connect operation.
-  socket_ops::connect(s, addr, addrlen, ec);
-  if (ec != asio::error::in_progress
-      && ec != asio::error::would_block)
-  {
-    // The connect operation finished immediately.
-    return;
-  }
-
-  // Wait for socket to become ready.
-  if (socket_ops::poll_connect(s, ec) < 0)
-    return;
-
-  // Get the error code from the connect operation.
-  int connect_error = 0;
-  size_t connect_error_len = sizeof(connect_error);
-  if (socket_ops::getsockopt(s, 0, SOL_SOCKET, SO_ERROR,
-        &connect_error, &connect_error_len, ec) == socket_error_retval)
-    return;
-
-  // Return the result of the connect operation.
-  ec = asio::error_code(connect_error,
-      asio::error::get_system_category());
-}
-
-#if defined(ASIO_HAS_IOCP)
-
-void complete_iocp_connect(socket_type s, asio::error_code& ec)
-{
-  // Map non-portable errors to their portable counterparts.
-  switch (ec.value())
-  {
-  case ERROR_CONNECTION_REFUSED:
-    ec = asio::error::connection_refused;
-    break;
-  case ERROR_NETWORK_UNREACHABLE:
-    ec = asio::error::network_unreachable;
-    break;
-  case ERROR_HOST_UNREACHABLE:
-    ec = asio::error::host_unreachable;
-    break;
-  case ERROR_SEM_TIMEOUT:
-    ec = asio::error::timed_out;
-    break;
-  default:
-    break;
-  }
-
-  if (!ec)
-  {
-    // Need to set the SO_UPDATE_CONNECT_CONTEXT option so that getsockname
-    // and getpeername will work on the connected socket.
-    socket_ops::state_type state = 0;
-    const int so_update_connect_context = 0x7010;
-    socket_ops::setsockopt(s, state, SOL_SOCKET,
-        so_update_connect_context, 0, 0, ec);
-  }
-}
-
-#endif // defined(ASIO_HAS_IOCP)
-
-bool non_blocking_connect(socket_type s, asio::error_code& ec)
-{
-  // Check if the connect operation has finished. This is required since we may
-  // get spurious readiness notifications from the reactor.
-#if defined(ASIO_WINDOWS) \
-  || defined(__CYGWIN__) \
-  || defined(__SYMBIAN32__)
-  fd_set write_fds;
-  FD_ZERO(&write_fds);
-  FD_SET(s, &write_fds);
-  fd_set except_fds;
-  FD_ZERO(&except_fds);
-  FD_SET(s, &except_fds);
-  timeval zero_timeout;
-  zero_timeout.tv_sec = 0;
-  zero_timeout.tv_usec = 0;
-  int ready = ::select(s + 1, 0, &write_fds, &except_fds, &zero_timeout);
-#else // defined(ASIO_WINDOWS)
-      // || defined(__CYGWIN__)
-      // || defined(__SYMBIAN32__)
-  pollfd fds;
-  fds.fd = s;
-  fds.events = POLLOUT;
-  fds.revents = 0;
-  int ready = ::poll(&fds, 1, 0);
-#endif // defined(ASIO_WINDOWS)
-       // || defined(__CYGWIN__)
-       // || defined(__SYMBIAN32__)
-  if (ready == 0)
-  {
-    // The asynchronous connect operation is still in progress.
-    return false;
-  }
-
-  // Get the error code from the connect operation.
-  int connect_error = 0;
-  size_t connect_error_len = sizeof(connect_error);
-  if (socket_ops::getsockopt(s, 0, SOL_SOCKET, SO_ERROR,
-        &connect_error, &connect_error_len, ec) == 0)
-  {
-    if (connect_error)
-    {
-      ec = asio::error_code(connect_error,
-          asio::error::get_system_category());
-    }
-    else
-      ec = asio::error_code();
-  }
-
-  return true;
-}
-
-int socketpair(int af, int type, int protocol,
-    socket_type sv[2], asio::error_code& ec)
-{
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  (void)(af);
-  (void)(type);
-  (void)(protocol);
-  (void)(sv);
-  ec = asio::error::operation_not_supported;
-  return socket_error_retval;
-#else
-  clear_last_error();
-  int result = error_wrapper(::socketpair(af, type, protocol, sv), ec);
-  if (result == 0)
-    ec = asio::error_code();
-  return result;
-#endif
-}
-
-bool sockatmark(socket_type s, asio::error_code& ec)
-{
-  if (s == invalid_socket)
-  {
-    ec = asio::error::bad_descriptor;
-    return false;
-  }
-
-#if defined(SIOCATMARK)
-  ioctl_arg_type value = 0;
-# if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  int result = error_wrapper(::ioctlsocket(s, SIOCATMARK, &value), ec);
-# else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  int result = error_wrapper(::ioctl(s, SIOCATMARK, &value), ec);
-# endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  if (result == 0)
-    ec = asio::error_code();
-# if defined(ENOTTY)
-  if (ec.value() == ENOTTY)
-    ec = asio::error::not_socket;
-# endif // defined(ENOTTY)
-#else // defined(SIOCATMARK)
-  int value = error_wrapper(::sockatmark(s), ec);
-  if (value != -1)
-    ec = asio::error_code();
-#endif // defined(SIOCATMARK)
-
-  return ec ? false : value != 0;
-}
-
-size_t available(socket_type s, asio::error_code& ec)
-{
-  if (s == invalid_socket)
-  {
-    ec = asio::error::bad_descriptor;
-    return 0;
-  }
-
-  ioctl_arg_type value = 0;
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  int result = error_wrapper(::ioctlsocket(s, FIONREAD, &value), ec);
-#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  int result = error_wrapper(::ioctl(s, FIONREAD, &value), ec);
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  if (result == 0)
-    ec = asio::error_code();
-#if defined(ENOTTY)
-  if (ec.value() == ENOTTY)
-    ec = asio::error::not_socket;
-#endif // defined(ENOTTY)
-
-  return ec ? static_cast<size_t>(0) : static_cast<size_t>(value);
-}
-
-int listen(socket_type s, int backlog, asio::error_code& ec)
-{
-  if (s == invalid_socket)
-  {
-    ec = asio::error::bad_descriptor;
-    return socket_error_retval;
-  }
-
-  clear_last_error();
-  int result = error_wrapper(::listen(s, backlog), ec);
-  if (result == 0)
-    ec = asio::error_code();
-  return result;
-}
-
-inline void init_buf_iov_base(void*& base, void* addr)
-{
-  base = addr;
-}
-
-template <typename T>
-inline void init_buf_iov_base(T& base, void* addr)
-{
-  base = static_cast<T>(addr);
-}
-
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-typedef WSABUF buf;
-#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-typedef iovec buf;
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
-void init_buf(buf& b, void* data, size_t size)
-{
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  b.buf = static_cast<char*>(data);
-  b.len = static_cast<u_long>(size);
-#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  init_buf_iov_base(b.iov_base, data);
-  b.iov_len = size;
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-}
-
-void init_buf(buf& b, const void* data, size_t size)
-{
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  b.buf = static_cast<char*>(const_cast<void*>(data));
-  b.len = static_cast<u_long>(size);
-#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  init_buf_iov_base(b.iov_base, const_cast<void*>(data));
-  b.iov_len = size;
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-}
-
-inline void init_msghdr_msg_name(void*& name, socket_addr_type* addr)
-{
-  name = addr;
-}
-
-inline void init_msghdr_msg_name(void*& name, const socket_addr_type* addr)
-{
-  name = const_cast<socket_addr_type*>(addr);
-}
-
-template <typename T>
-inline void init_msghdr_msg_name(T& name, socket_addr_type* addr)
-{
-  name = reinterpret_cast<T>(addr);
-}
-
-template <typename T>
-inline void init_msghdr_msg_name(T& name, const socket_addr_type* addr)
-{
-  name = reinterpret_cast<T>(const_cast<socket_addr_type*>(addr));
-}
-
-signed_size_type recv(socket_type s, buf* bufs, size_t count,
-    int flags, asio::error_code& ec)
-{
-  clear_last_error();
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  // Receive some data.
-  DWORD recv_buf_count = static_cast<DWORD>(count);
-  DWORD bytes_transferred = 0;
-  DWORD recv_flags = flags;
-  int result = error_wrapper(::WSARecv(s, bufs,
-        recv_buf_count, &bytes_transferred, &recv_flags, 0, 0), ec);
-  if (ec.value() == ERROR_NETNAME_DELETED)
-    ec = asio::error::connection_reset;
-  else if (ec.value() == ERROR_PORT_UNREACHABLE)
-    ec = asio::error::connection_refused;
-  if (result != 0)
-    return socket_error_retval;
-  ec = asio::error_code();
-  return bytes_transferred;
-#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  msghdr msg = msghdr();
-  msg.msg_iov = bufs;
-  msg.msg_iovlen = static_cast<int>(count);
-  signed_size_type result = error_wrapper(::recvmsg(s, &msg, flags), ec);
-  if (result >= 0)
-    ec = asio::error_code();
-  return result;
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-}
-
-size_t sync_recv(socket_type s, state_type state, buf* bufs,
-    size_t count, int flags, bool all_empty, asio::error_code& ec)
-{
-  if (s == invalid_socket)
-  {
-    ec = asio::error::bad_descriptor;
-    return 0;
-  }
-
-  // A request to read 0 bytes on a stream is a no-op.
-  if (all_empty && (state & stream_oriented))
-  {
-    ec = asio::error_code();
-    return 0;
-  }
-
-  // Read some data.
-  for (;;)
-  {
-    // Try to complete the operation without blocking.
-    signed_size_type bytes = socket_ops::recv(s, bufs, count, flags, ec);
-
-    // Check if operation succeeded.
-    if (bytes > 0)
-      return bytes;
-
-    // Check for EOF.
-    if ((state & stream_oriented) && bytes == 0)
-    {
-      ec = asio::error::eof;
-      return 0;
-    }
-
-    // Operation failed.
-    if ((state & user_set_non_blocking)
-        || (ec != asio::error::would_block
-          && ec != asio::error::try_again))
-      return 0;
-
-    // Wait for socket to become ready.
-    if (socket_ops::poll_read(s, 0, ec) < 0)
-      return 0;
-  }
-}
-
-#if defined(ASIO_HAS_IOCP)
-
-void complete_iocp_recv(state_type state,
-    const weak_cancel_token_type& cancel_token, bool all_empty,
-    asio::error_code& ec, size_t bytes_transferred)
-{
-  // Map non-portable errors to their portable counterparts.
-  if (ec.value() == ERROR_NETNAME_DELETED)
-  {
-    if (cancel_token.expired())
-      ec = asio::error::operation_aborted;
-    else
-      ec = asio::error::connection_reset;
-  }
-  else if (ec.value() == ERROR_PORT_UNREACHABLE)
-  {
-    ec = asio::error::connection_refused;
-  }
-
-  // Check for connection closed.
-  else if (!ec && bytes_transferred == 0
-      && (state & stream_oriented) != 0
-      && !all_empty)
-  {
-    ec = asio::error::eof;
-  }
-}
-
-#else // defined(ASIO_HAS_IOCP)
-
-bool non_blocking_recv(socket_type s,
-    buf* bufs, size_t count, int flags, bool is_stream,
-    asio::error_code& ec, size_t& bytes_transferred)
-{
-  for (;;)
-  {
-    // Read some data.
-    signed_size_type bytes = socket_ops::recv(s, bufs, count, flags, ec);
-
-    // Check for end of stream.
-    if (is_stream && bytes == 0)
-    {
-      ec = asio::error::eof;
-      return true;
-    }
-
-    // Retry operation if interrupted by signal.
-    if (ec == asio::error::interrupted)
-      continue;
-
-    // Check if we need to run the operation again.
-    if (ec == asio::error::would_block
-        || ec == asio::error::try_again)
-      return false;
-
-    // Operation is complete.
-    if (bytes >= 0)
-    {
-      ec = asio::error_code();
-      bytes_transferred = bytes;
-    }
-    else
-      bytes_transferred = 0;
-
-    return true;
-  }
-}
-
-#endif // defined(ASIO_HAS_IOCP)
-
-signed_size_type recvfrom(socket_type s, buf* bufs, size_t count,
-    int flags, socket_addr_type* addr, std::size_t* addrlen,
-    asio::error_code& ec)
-{
-  clear_last_error();
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  // Receive some data.
-  DWORD recv_buf_count = static_cast<DWORD>(count);
-  DWORD bytes_transferred = 0;
-  DWORD recv_flags = flags;
-  int tmp_addrlen = (int)*addrlen;
-  int result = error_wrapper(::WSARecvFrom(s, bufs, recv_buf_count,
-        &bytes_transferred, &recv_flags, addr, &tmp_addrlen, 0, 0), ec);
-  *addrlen = (std::size_t)tmp_addrlen;
-  if (ec.value() == ERROR_NETNAME_DELETED)
-    ec = asio::error::connection_reset;
-  else if (ec.value() == ERROR_PORT_UNREACHABLE)
-    ec = asio::error::connection_refused;
-  if (result != 0)
-    return socket_error_retval;
-  ec = asio::error_code();
-  return bytes_transferred;
-#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  msghdr msg = msghdr();
-  init_msghdr_msg_name(msg.msg_name, addr);
-  msg.msg_namelen = static_cast<int>(*addrlen);
-  msg.msg_iov = bufs;
-  msg.msg_iovlen = static_cast<int>(count);
-  signed_size_type result = error_wrapper(::recvmsg(s, &msg, flags), ec);
-  *addrlen = msg.msg_namelen;
-  if (result >= 0)
-    ec = asio::error_code();
-  return result;
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-}
-
-size_t sync_recvfrom(socket_type s, state_type state, buf* bufs,
-    size_t count, int flags, socket_addr_type* addr,
-    std::size_t* addrlen, asio::error_code& ec)
-{
-  if (s == invalid_socket)
-  {
-    ec = asio::error::bad_descriptor;
-    return 0;
-  }
-
-  // Read some data.
-  for (;;)
-  {
-    // Try to complete the operation without blocking.
-    signed_size_type bytes = socket_ops::recvfrom(
-        s, bufs, count, flags, addr, addrlen, ec);
-
-    // Check if operation succeeded.
-    if (bytes >= 0)
-      return bytes;
-
-    // Operation failed.
-    if ((state & user_set_non_blocking)
-        || (ec != asio::error::would_block
-          && ec != asio::error::try_again))
-      return 0;
-
-    // Wait for socket to become ready.
-    if (socket_ops::poll_read(s, 0, ec) < 0)
-      return 0;
-  }
-}
-
-#if defined(ASIO_HAS_IOCP)
-
-void complete_iocp_recvfrom(
-    const weak_cancel_token_type& cancel_token,
-    asio::error_code& ec)
-{
-  // Map non-portable errors to their portable counterparts.
-  if (ec.value() == ERROR_NETNAME_DELETED)
-  {
-    if (cancel_token.expired())
-      ec = asio::error::operation_aborted;
-    else
-      ec = asio::error::connection_reset;
-  }
-  else if (ec.value() == ERROR_PORT_UNREACHABLE)
-  {
-    ec = asio::error::connection_refused;
-  }
-}
-
-#else // defined(ASIO_HAS_IOCP)
-
-bool non_blocking_recvfrom(socket_type s,
-    buf* bufs, size_t count, int flags,
-    socket_addr_type* addr, std::size_t* addrlen,
-    asio::error_code& ec, size_t& bytes_transferred)
-{
-  for (;;)
-  {
-    // Read some data.
-    signed_size_type bytes = socket_ops::recvfrom(
-        s, bufs, count, flags, addr, addrlen, ec);
-
-    // Retry operation if interrupted by signal.
-    if (ec == asio::error::interrupted)
-      continue;
-
-    // Check if we need to run the operation again.
-    if (ec == asio::error::would_block
-        || ec == asio::error::try_again)
-      return false;
-
-    // Operation is complete.
-    if (bytes >= 0)
-    {
-      ec = asio::error_code();
-      bytes_transferred = bytes;
-    }
-    else
-      bytes_transferred = 0;
-
-    return true;
-  }
-}
-
-#endif // defined(ASIO_HAS_IOCP)
-
-signed_size_type recvmsg(socket_type s, buf* bufs, size_t count,
-    int in_flags, int& out_flags, asio::error_code& ec)
-{
-  clear_last_error();
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  out_flags = 0;
-  return socket_ops::recv(s, bufs, count, in_flags, ec);
-#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  msghdr msg = msghdr();
-  msg.msg_iov = bufs;
-  msg.msg_iovlen = static_cast<int>(count);
-  signed_size_type result = error_wrapper(::recvmsg(s, &msg, in_flags), ec);
-  if (result >= 0)
-  {
-    ec = asio::error_code();
-    out_flags = msg.msg_flags;
-  }
-  else
-    out_flags = 0;
-  return result;
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-}
-
-size_t sync_recvmsg(socket_type s, state_type state,
-    buf* bufs, size_t count, int in_flags, int& out_flags,
-    asio::error_code& ec)
-{
-  if (s == invalid_socket)
-  {
-    ec = asio::error::bad_descriptor;
-    return 0;
-  }
-
-  // Read some data.
-  for (;;)
-  {
-    // Try to complete the operation without blocking.
-    signed_size_type bytes = socket_ops::recvmsg(
-        s, bufs, count, in_flags, out_flags, ec);
-
-    // Check if operation succeeded.
-    if (bytes >= 0)
-      return bytes;
-
-    // Operation failed.
-    if ((state & user_set_non_blocking)
-        || (ec != asio::error::would_block
-          && ec != asio::error::try_again))
-      return 0;
-
-    // Wait for socket to become ready.
-    if (socket_ops::poll_read(s, 0, ec) < 0)
-      return 0;
-  }
-}
-
-#if defined(ASIO_HAS_IOCP)
-
-void complete_iocp_recvmsg(
-    const weak_cancel_token_type& cancel_token,
-    asio::error_code& ec)
-{
-  // Map non-portable errors to their portable counterparts.
-  if (ec.value() == ERROR_NETNAME_DELETED)
-  {
-    if (cancel_token.expired())
-      ec = asio::error::operation_aborted;
-    else
-      ec = asio::error::connection_reset;
-  }
-  else if (ec.value() == ERROR_PORT_UNREACHABLE)
-  {
-    ec = asio::error::connection_refused;
-  }
-}
-
-#else // defined(ASIO_HAS_IOCP)
-
-bool non_blocking_recvmsg(socket_type s,
-    buf* bufs, size_t count, int in_flags, int& out_flags,
-    asio::error_code& ec, size_t& bytes_transferred)
-{
-  for (;;)
-  {
-    // Read some data.
-    signed_size_type bytes = socket_ops::recvmsg(
-        s, bufs, count, in_flags, out_flags, ec);
-
-    // Retry operation if interrupted by signal.
-    if (ec == asio::error::interrupted)
-      continue;
-
-    // Check if we need to run the operation again.
-    if (ec == asio::error::would_block
-        || ec == asio::error::try_again)
-      return false;
-
-    // Operation is complete.
-    if (bytes >= 0)
-    {
-      ec = asio::error_code();
-      bytes_transferred = bytes;
-    }
-    else
-      bytes_transferred = 0;
-
-    return true;
-  }
-}
-
-#endif // defined(ASIO_HAS_IOCP)
-
-signed_size_type send(socket_type s, const buf* bufs, size_t count,
-    int flags, asio::error_code& ec)
-{
-  clear_last_error();
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  // Send the data.
-  DWORD send_buf_count = static_cast<DWORD>(count);
-  DWORD bytes_transferred = 0;
-  DWORD send_flags = flags;
-  int result = error_wrapper(::WSASend(s, const_cast<buf*>(bufs),
-        send_buf_count, &bytes_transferred, send_flags, 0, 0), ec);
-  if (ec.value() == ERROR_NETNAME_DELETED)
-    ec = asio::error::connection_reset;
-  else if (ec.value() == ERROR_PORT_UNREACHABLE)
-    ec = asio::error::connection_refused;
-  if (result != 0)
-    return socket_error_retval;
-  ec = asio::error_code();
-  return bytes_transferred;
-#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  msghdr msg = msghdr();
-  msg.msg_iov = const_cast<buf*>(bufs);
-  msg.msg_iovlen = static_cast<int>(count);
-#if defined(__linux__)
-  flags |= MSG_NOSIGNAL;
-#endif // defined(__linux__)
-  signed_size_type result = error_wrapper(::sendmsg(s, &msg, flags), ec);
-  if (result >= 0)
-    ec = asio::error_code();
-  return result;
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-}
-
-size_t sync_send(socket_type s, state_type state, const buf* bufs,
-    size_t count, int flags, bool all_empty, asio::error_code& ec)
-{
-  if (s == invalid_socket)
-  {
-    ec = asio::error::bad_descriptor;
-    return 0;
-  }
-
-  // A request to write 0 bytes to a stream is a no-op.
-  if (all_empty && (state & stream_oriented))
-  {
-    ec = asio::error_code();
-    return 0;
-  }
-
-  // Read some data.
-  for (;;)
-  {
-    // Try to complete the operation without blocking.
-    signed_size_type bytes = socket_ops::send(s, bufs, count, flags, ec);
-
-    // Check if operation succeeded.
-    if (bytes >= 0)
-      return bytes;
-
-    // Operation failed.
-    if ((state & user_set_non_blocking)
-        || (ec != asio::error::would_block
-          && ec != asio::error::try_again))
-      return 0;
-
-    // Wait for socket to become ready.
-    if (socket_ops::poll_write(s, 0, ec) < 0)
-      return 0;
-  }
-}
-
-#if defined(ASIO_HAS_IOCP)
-
-void complete_iocp_send(
-    const weak_cancel_token_type& cancel_token,
-    asio::error_code& ec)
-{
-  // Map non-portable errors to their portable counterparts.
-  if (ec.value() == ERROR_NETNAME_DELETED)
-  {
-    if (cancel_token.expired())
-      ec = asio::error::operation_aborted;
-    else
-      ec = asio::error::connection_reset;
-  }
-  else if (ec.value() == ERROR_PORT_UNREACHABLE)
-  {
-    ec = asio::error::connection_refused;
-  }
-}
-
-#else // defined(ASIO_HAS_IOCP)
-
-bool non_blocking_send(socket_type s,
-    const buf* bufs, size_t count, int flags,
-    asio::error_code& ec, size_t& bytes_transferred)
-{
-  for (;;)
-  {
-    // Write some data.
-    signed_size_type bytes = socket_ops::send(s, bufs, count, flags, ec);
-
-    // Retry operation if interrupted by signal.
-    if (ec == asio::error::interrupted)
-      continue;
-
-    // Check if we need to run the operation again.
-    if (ec == asio::error::would_block
-        || ec == asio::error::try_again)
-      return false;
-
-    // Operation is complete.
-    if (bytes >= 0)
-    {
-      ec = asio::error_code();
-      bytes_transferred = bytes;
-    }
-    else
-      bytes_transferred = 0;
-
-    return true;
-  }
-}
-
-#endif // defined(ASIO_HAS_IOCP)
-
-signed_size_type sendto(socket_type s, const buf* bufs, size_t count,
-    int flags, const socket_addr_type* addr, std::size_t addrlen,
-    asio::error_code& ec)
-{
-  clear_last_error();
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  // Send the data.
-  DWORD send_buf_count = static_cast<DWORD>(count);
-  DWORD bytes_transferred = 0;
-  int result = error_wrapper(::WSASendTo(s, const_cast<buf*>(bufs),
-        send_buf_count, &bytes_transferred, flags, addr,
-        static_cast<int>(addrlen), 0, 0), ec);
-  if (ec.value() == ERROR_NETNAME_DELETED)
-    ec = asio::error::connection_reset;
-  else if (ec.value() == ERROR_PORT_UNREACHABLE)
-    ec = asio::error::connection_refused;
-  if (result != 0)
-    return socket_error_retval;
-  ec = asio::error_code();
-  return bytes_transferred;
-#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  msghdr msg = msghdr();
-  init_msghdr_msg_name(msg.msg_name, addr);
-  msg.msg_namelen = static_cast<int>(addrlen);
-  msg.msg_iov = const_cast<buf*>(bufs);
-  msg.msg_iovlen = static_cast<int>(count);
-#if defined(__linux__)
-  flags |= MSG_NOSIGNAL;
-#endif // defined(__linux__)
-  signed_size_type result = error_wrapper(::sendmsg(s, &msg, flags), ec);
-  if (result >= 0)
-    ec = asio::error_code();
-  return result;
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-}
-
-size_t sync_sendto(socket_type s, state_type state, const buf* bufs,
-    size_t count, int flags, const socket_addr_type* addr,
-    std::size_t addrlen, asio::error_code& ec)
-{
-  if (s == invalid_socket)
-  {
-    ec = asio::error::bad_descriptor;
-    return 0;
-  }
-
-  // Write some data.
-  for (;;)
-  {
-    // Try to complete the operation without blocking.
-    signed_size_type bytes = socket_ops::sendto(
-        s, bufs, count, flags, addr, addrlen, ec);
-
-    // Check if operation succeeded.
-    if (bytes >= 0)
-      return bytes;
-
-    // Operation failed.
-    if ((state & user_set_non_blocking)
-        || (ec != asio::error::would_block
-          && ec != asio::error::try_again))
-      return 0;
-
-    // Wait for socket to become ready.
-    if (socket_ops::poll_write(s, 0, ec) < 0)
-      return 0;
-  }
-}
-
-#if !defined(ASIO_HAS_IOCP)
-
-bool non_blocking_sendto(socket_type s,
-    const buf* bufs, size_t count, int flags,
-    const socket_addr_type* addr, std::size_t addrlen,
-    asio::error_code& ec, size_t& bytes_transferred)
-{
-  for (;;)
-  {
-    // Write some data.
-    signed_size_type bytes = socket_ops::sendto(
-        s, bufs, count, flags, addr, addrlen, ec);
-
-    // Retry operation if interrupted by signal.
-    if (ec == asio::error::interrupted)
-      continue;
-
-    // Check if we need to run the operation again.
-    if (ec == asio::error::would_block
-        || ec == asio::error::try_again)
-      return false;
-
-    // Operation is complete.
-    if (bytes >= 0)
-    {
-      ec = asio::error_code();
-      bytes_transferred = bytes;
-    }
-    else
-      bytes_transferred = 0;
-
-    return true;
-  }
-}
-
-#endif // !defined(ASIO_HAS_IOCP)
-
-socket_type socket(int af, int type, int protocol,
-    asio::error_code& ec)
-{
-  clear_last_error();
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  socket_type s = error_wrapper(::WSASocketW(af, type, protocol, 0, 0,
-        WSA_FLAG_OVERLAPPED), ec);
-  if (s == invalid_socket)
-    return s;
-
-  if (af == ASIO_OS_DEF(AF_INET6))
-  {
-    // Try to enable the POSIX default behaviour of having IPV6_V6ONLY set to
-    // false. This will only succeed on Windows Vista and later versions of
-    // Windows, where a dual-stack IPv4/v6 implementation is available.
-    DWORD optval = 0;
-    ::setsockopt(s, IPPROTO_IPV6, IPV6_V6ONLY,
-        reinterpret_cast<const char*>(&optval), sizeof(optval));
-  }
-
-  ec = asio::error_code();
-
-  return s;
-#elif defined(__MACH__) && defined(__APPLE__) || defined(__FreeBSD__)
-  socket_type s = error_wrapper(::socket(af, type, protocol), ec);
-  if (s == invalid_socket)
-    return s;
-
-  int optval = 1;
-  int result = error_wrapper(::setsockopt(s,
-        SOL_SOCKET, SO_NOSIGPIPE, &optval, sizeof(optval)), ec);
-  if (result != 0)
-  {
-    ::close(s);
-    return invalid_socket;
-  }
-
-  return s;
-#else
-  int s = error_wrapper(::socket(af, type, protocol), ec);
-  if (s >= 0)
-    ec = asio::error_code();
-  return s;
-#endif
-}
-
-template <typename SockLenType>
-inline int call_setsockopt(SockLenType msghdr::*,
-    socket_type s, int level, int optname,
-    const void* optval, std::size_t optlen)
-{
-  return ::setsockopt(s, level, optname,
-      (const char*)optval, (SockLenType)optlen);
-}
-
-int setsockopt(socket_type s, state_type& state, int level, int optname,
-    const void* optval, std::size_t optlen, asio::error_code& ec)
-{
-  if (s == invalid_socket)
-  {
-    ec = asio::error::bad_descriptor;
-    return socket_error_retval;
-  }
-
-  if (level == custom_socket_option_level && optname == always_fail_option)
-  {
-    ec = asio::error::invalid_argument;
-    return socket_error_retval;
-  }
-
-  if (level == custom_socket_option_level
-      && optname == enable_connection_aborted_option)
-  {
-    if (optlen != sizeof(int))
-    {
-      ec = asio::error::invalid_argument;
-      return socket_error_retval;
-    }
-
-    if (*static_cast<const int*>(optval))
-      state |= enable_connection_aborted;
-    else
-      state &= ~enable_connection_aborted;
-    ec = asio::error_code();
-    return 0;
-  }
-
-  if (level == SOL_SOCKET && optname == SO_LINGER)
-    state |= user_set_linger;
-
-#if defined(__BORLANDC__)
-  // Mysteriously, using the getsockopt and setsockopt functions directly with
-  // Borland C++ results in incorrect values being set and read. The bug can be
-  // worked around by using function addresses resolved with GetProcAddress.
-  if (HMODULE winsock_module = ::GetModuleHandleA("ws2_32"))
-  {
-    typedef int (WSAAPI *sso_t)(SOCKET, int, int, const char*, int);
-    if (sso_t sso = (sso_t)::GetProcAddress(winsock_module, "setsockopt"))
-    {
-      clear_last_error();
-      return error_wrapper(sso(s, level, optname,
-            reinterpret_cast<const char*>(optval),
-            static_cast<int>(optlen)), ec);
-    }
-  }
-  ec = asio::error::fault;
-  return socket_error_retval;
-#else // defined(__BORLANDC__)
-  clear_last_error();
-  int result = error_wrapper(call_setsockopt(&msghdr::msg_namelen,
-        s, level, optname, optval, optlen), ec);
-  if (result == 0)
-  {
-    ec = asio::error_code();
-
-#if defined(__MACH__) && defined(__APPLE__) \
-  || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__)
-    // To implement portable behaviour for SO_REUSEADDR with UDP sockets we
-    // need to also set SO_REUSEPORT on BSD-based platforms.
-    if ((state & datagram_oriented)
-        && level == SOL_SOCKET && optname == SO_REUSEADDR)
-    {
-      call_setsockopt(&msghdr::msg_namelen, s,
-          SOL_SOCKET, SO_REUSEPORT, optval, optlen);
-    }
-#endif
-  }
-
-  return result;
-#endif // defined(__BORLANDC__)
-}
-
-template <typename SockLenType>
-inline int call_getsockopt(SockLenType msghdr::*,
-    socket_type s, int level, int optname,
-    void* optval, std::size_t* optlen)
-{
-  SockLenType tmp_optlen = (SockLenType)*optlen;
-  int result = ::getsockopt(s, level, optname, (char*)optval, &tmp_optlen);
-  *optlen = (std::size_t)tmp_optlen;
-  return result;
-}
-
-int getsockopt(socket_type s, state_type state, int level, int optname,
-    void* optval, size_t* optlen, asio::error_code& ec)
-{
-  if (s == invalid_socket)
-  {
-    ec = asio::error::bad_descriptor;
-    return socket_error_retval;
-  }
-
-  if (level == custom_socket_option_level && optname == always_fail_option)
-  {
-    ec = asio::error::invalid_argument;
-    return socket_error_retval;
-  }
-
-  if (level == custom_socket_option_level
-      && optname == enable_connection_aborted_option)
-  {
-    if (*optlen != sizeof(int))
-    {
-      ec = asio::error::invalid_argument;
-      return socket_error_retval;
-    }
-
-    *static_cast<int*>(optval) = (state & enable_connection_aborted) ? 1 : 0;
-    ec = asio::error_code();
-    return 0;
-  }
-
-#if defined(__BORLANDC__)
-  // Mysteriously, using the getsockopt and setsockopt functions directly with
-  // Borland C++ results in incorrect values being set and read. The bug can be
-  // worked around by using function addresses resolved with GetProcAddress.
-  if (HMODULE winsock_module = ::GetModuleHandleA("ws2_32"))
-  {
-    typedef int (WSAAPI *gso_t)(SOCKET, int, int, char*, int*);
-    if (gso_t gso = (gso_t)::GetProcAddress(winsock_module, "getsockopt"))
-    {
-      clear_last_error();
-      int tmp_optlen = static_cast<int>(*optlen);
-      int result = error_wrapper(gso(s, level, optname,
-            reinterpret_cast<char*>(optval), &tmp_optlen), ec);
-      *optlen = static_cast<size_t>(tmp_optlen);
-      if (result != 0 && level == IPPROTO_IPV6 && optname == IPV6_V6ONLY
-          && ec.value() == WSAENOPROTOOPT && *optlen == sizeof(DWORD))
-      {
-        // Dual-stack IPv4/v6 sockets, and the IPV6_V6ONLY socket option, are
-        // only supported on Windows Vista and later. To simplify program logic
-        // we will fake success of getting this option and specify that the
-        // value is non-zero (i.e. true). This corresponds to the behavior of
-        // IPv6 sockets on Windows platforms pre-Vista.
-        *static_cast<DWORD*>(optval) = 1;
-        ec = asio::error_code();
-      }
-      return result;
-    }
-  }
-  ec = asio::error::fault;
-  return socket_error_retval;
-#elif defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  clear_last_error();
-  int result = error_wrapper(call_getsockopt(&msghdr::msg_namelen,
-        s, level, optname, optval, optlen), ec);
-  if (result != 0 && level == IPPROTO_IPV6 && optname == IPV6_V6ONLY
-      && ec.value() == WSAENOPROTOOPT && *optlen == sizeof(DWORD))
-  {
-    // Dual-stack IPv4/v6 sockets, and the IPV6_V6ONLY socket option, are only
-    // supported on Windows Vista and later. To simplify program logic we will
-    // fake success of getting this option and specify that the value is
-    // non-zero (i.e. true). This corresponds to the behavior of IPv6 sockets
-    // on Windows platforms pre-Vista.
-    *static_cast<DWORD*>(optval) = 1;
-    ec = asio::error_code();
-  }
-  if (result == 0)
-    ec = asio::error_code();
-  return result;
-#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  clear_last_error();
-  int result = error_wrapper(call_getsockopt(&msghdr::msg_namelen,
-        s, level, optname, optval, optlen), ec);
-#if defined(__linux__)
-  if (result == 0 && level == SOL_SOCKET && *optlen == sizeof(int)
-      && (optname == SO_SNDBUF || optname == SO_RCVBUF))
-  {
-    // On Linux, setting SO_SNDBUF or SO_RCVBUF to N actually causes the kernel
-    // to set the buffer size to N*2. Linux puts additional stuff into the
-    // buffers so that only about half is actually available to the application.
-    // The retrieved value is divided by 2 here to make it appear as though the
-    // correct value has been set.
-    *static_cast<int*>(optval) /= 2;
-  }
-#endif // defined(__linux__)
-  if (result == 0)
-    ec = asio::error_code();
-  return result;
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-}
-
-template <typename SockLenType>
-inline int call_getpeername(SockLenType msghdr::*,
-    socket_type s, socket_addr_type* addr, std::size_t* addrlen)
-{
-  SockLenType tmp_addrlen = (SockLenType)*addrlen;
-  int result = ::getpeername(s, addr, &tmp_addrlen);
-  *addrlen = (std::size_t)tmp_addrlen;
-  return result;
-}
-
-int getpeername(socket_type s, socket_addr_type* addr,
-    std::size_t* addrlen, bool cached, asio::error_code& ec)
-{
-  if (s == invalid_socket)
-  {
-    ec = asio::error::bad_descriptor;
-    return socket_error_retval;
-  }
-
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  if (cached)
-  {
-    // Check if socket is still connected.
-    DWORD connect_time = 0;
-    size_t connect_time_len = sizeof(connect_time);
-    if (socket_ops::getsockopt(s, 0, SOL_SOCKET, SO_CONNECT_TIME,
-          &connect_time, &connect_time_len, ec) == socket_error_retval)
-    {
-      return socket_error_retval;
-    }
-    if (connect_time == 0xFFFFFFFF)
-    {
-      ec = asio::error::not_connected;
-      return socket_error_retval;
-    }
-
-    // The cached value is still valid.
-    ec = asio::error_code();
-    return 0;
-  }
-#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  (void)cached;
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
-  clear_last_error();
-  int result = error_wrapper(call_getpeername(
-        &msghdr::msg_namelen, s, addr, addrlen), ec);
-  if (result == 0)
-    ec = asio::error_code();
-  return result;
-}
-
-template <typename SockLenType>
-inline int call_getsockname(SockLenType msghdr::*,
-    socket_type s, socket_addr_type* addr, std::size_t* addrlen)
-{
-  SockLenType tmp_addrlen = (SockLenType)*addrlen;
-  int result = ::getsockname(s, addr, &tmp_addrlen);
-  *addrlen = (std::size_t)tmp_addrlen;
-  return result;
-}
-
-int getsockname(socket_type s, socket_addr_type* addr,
-    std::size_t* addrlen, asio::error_code& ec)
-{
-  if (s == invalid_socket)
-  {
-    ec = asio::error::bad_descriptor;
-    return socket_error_retval;
-  }
-
-  clear_last_error();
-  int result = error_wrapper(call_getsockname(
-        &msghdr::msg_namelen, s, addr, addrlen), ec);
-  if (result == 0)
-    ec = asio::error_code();
-  return result;
-}
-
-int ioctl(socket_type s, state_type& state, int cmd,
-    ioctl_arg_type* arg, asio::error_code& ec)
-{
-  if (s == invalid_socket)
-  {
-    ec = asio::error::bad_descriptor;
-    return socket_error_retval;
-  }
-
-  clear_last_error();
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  int result = error_wrapper(::ioctlsocket(s, cmd, arg), ec);
-#elif defined(__MACH__) && defined(__APPLE__) \
-  || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__)
-  int result = error_wrapper(::ioctl(s,
-        static_cast<unsigned int>(cmd), arg), ec);
-#else
-  int result = error_wrapper(::ioctl(s, cmd, arg), ec);
-#endif
-  if (result >= 0)
-  {
-    ec = asio::error_code();
-
-    // When updating the non-blocking mode we always perform the ioctl syscall,
-    // even if the flags would otherwise indicate that the socket is already in
-    // the correct state. This ensures that the underlying socket is put into
-    // the state that has been requested by the user. If the ioctl syscall was
-    // successful then we need to update the flags to match.
-    if (cmd == static_cast<int>(FIONBIO))
-    {
-      if (*arg)
-      {
-        state |= user_set_non_blocking;
-      }
-      else
-      {
-        // Clearing the non-blocking mode always overrides any internally-set
-        // non-blocking flag. Any subsequent asynchronous operations will need
-        // to re-enable non-blocking I/O.
-        state &= ~(user_set_non_blocking | internal_non_blocking);
-      }
-    }
-  }
-
-  return result;
-}
-
-int select(int nfds, fd_set* readfds, fd_set* writefds,
-    fd_set* exceptfds, timeval* timeout, asio::error_code& ec)
-{
-  clear_last_error();
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  if (!readfds && !writefds && !exceptfds && timeout)
-  {
-    DWORD milliseconds = timeout->tv_sec * 1000 + timeout->tv_usec / 1000;
-    if (milliseconds == 0)
-      milliseconds = 1; // Force context switch.
-    ::Sleep(milliseconds);
-    ec = asio::error_code();
-    return 0;
-  }
-
-  // The select() call allows timeout values measured in microseconds, but the
-  // system clock (as wrapped by boost::posix_time::microsec_clock) typically
-  // has a resolution of 10 milliseconds. This can lead to a spinning select
-  // reactor, meaning increased CPU usage, when waiting for the earliest
-  // scheduled timeout if it's less than 10 milliseconds away. To avoid a tight
-  // spin we'll use a minimum timeout of 1 millisecond.
-  if (timeout && timeout->tv_sec == 0
-      && timeout->tv_usec > 0 && timeout->tv_usec < 1000)
-    timeout->tv_usec = 1000;
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
-#if defined(__hpux) && defined(__SELECT)
-  timespec ts;
-  ts.tv_sec = timeout ? timeout->tv_sec : 0;
-  ts.tv_nsec = timeout ? timeout->tv_usec * 1000 : 0;
-  return error_wrapper(::pselect(nfds, readfds,
-        writefds, exceptfds, timeout ? &ts : 0, 0), ec);
-#else
-  int result = error_wrapper(::select(nfds, readfds,
-        writefds, exceptfds, timeout), ec);
-  if (result >= 0)
-    ec = asio::error_code();
-  return result;
-#endif
-}
-
-int poll_read(socket_type s, state_type state, asio::error_code& ec)
-{
-  if (s == invalid_socket)
-  {
-    ec = asio::error::bad_descriptor;
-    return socket_error_retval;
-  }
-
-#if defined(ASIO_WINDOWS) \
-  || defined(__CYGWIN__) \
-  || defined(__SYMBIAN32__)
-  fd_set fds;
-  FD_ZERO(&fds);
-  FD_SET(s, &fds);
-  timeval zero_timeout;
-  zero_timeout.tv_sec = 0;
-  zero_timeout.tv_usec = 0;
-  timeval* timeout = (state & user_set_non_blocking) ? &zero_timeout : 0;
-  clear_last_error();
-  int result = error_wrapper(::select(s + 1, &fds, 0, 0, timeout), ec);
-#else // defined(ASIO_WINDOWS)
-      // || defined(__CYGWIN__)
-      // || defined(__SYMBIAN32__)
-  pollfd fds;
-  fds.fd = s;
-  fds.events = POLLIN;
-  fds.revents = 0;
-  int timeout = (state & user_set_non_blocking) ? 0 : -1;
-  clear_last_error();
-  int result = error_wrapper(::poll(&fds, 1, timeout), ec);
-#endif // defined(ASIO_WINDOWS)
-       // || defined(__CYGWIN__)
-       // || defined(__SYMBIAN32__)
-  if (result == 0)
-    ec = (state & user_set_non_blocking)
-      ? asio::error::would_block : asio::error_code();
-  else if (result > 0)
-    ec = asio::error_code();
-  return result;
-}
-
-int poll_write(socket_type s, state_type state, asio::error_code& ec)
-{
-  if (s == invalid_socket)
-  {
-    ec = asio::error::bad_descriptor;
-    return socket_error_retval;
-  }
-
-#if defined(ASIO_WINDOWS) \
-  || defined(__CYGWIN__) \
-  || defined(__SYMBIAN32__)
-  fd_set fds;
-  FD_ZERO(&fds);
-  FD_SET(s, &fds);
-  timeval zero_timeout;
-  zero_timeout.tv_sec = 0;
-  zero_timeout.tv_usec = 0;
-  timeval* timeout = (state & user_set_non_blocking) ? &zero_timeout : 0;
-  clear_last_error();
-  int result = error_wrapper(::select(s + 1, 0, &fds, 0, timeout), ec);
-#else // defined(ASIO_WINDOWS)
-      // || defined(__CYGWIN__)
-      // || defined(__SYMBIAN32__)
-  pollfd fds;
-  fds.fd = s;
-  fds.events = POLLOUT;
-  fds.revents = 0;
-  int timeout = (state & user_set_non_blocking) ? 0 : -1;
-  clear_last_error();
-  int result = error_wrapper(::poll(&fds, 1, timeout), ec);
-#endif // defined(ASIO_WINDOWS)
-       // || defined(__CYGWIN__)
-       // || defined(__SYMBIAN32__)
-  if (result == 0)
-    ec = (state & user_set_non_blocking)
-      ? asio::error::would_block : asio::error_code();
-  else if (result > 0)
-    ec = asio::error_code();
-  return result;
-}
-
-int poll_connect(socket_type s, asio::error_code& ec)
-{
-  if (s == invalid_socket)
-  {
-    ec = asio::error::bad_descriptor;
-    return socket_error_retval;
-  }
-
-#if defined(ASIO_WINDOWS) \
-  || defined(__CYGWIN__) \
-  || defined(__SYMBIAN32__)
-  fd_set write_fds;
-  FD_ZERO(&write_fds);
-  FD_SET(s, &write_fds);
-  fd_set except_fds;
-  FD_ZERO(&except_fds);
-  FD_SET(s, &except_fds);
-  clear_last_error();
-  int result = error_wrapper(::select(
-        s + 1, 0, &write_fds, &except_fds, 0), ec);
-  if (result >= 0)
-    ec = asio::error_code();
-  return result;
-#else // defined(ASIO_WINDOWS)
-      // || defined(__CYGWIN__)
-      // || defined(__SYMBIAN32__)
-  pollfd fds;
-  fds.fd = s;
-  fds.events = POLLOUT;
-  fds.revents = 0;
-  clear_last_error();
-  int result = error_wrapper(::poll(&fds, 1, -1), ec);
-  if (result >= 0)
-    ec = asio::error_code();
-  return result;
-#endif // defined(ASIO_WINDOWS)
-       // || defined(__CYGWIN__)
-       // || defined(__SYMBIAN32__)
-}
-
-#endif // !defined(ASIO_WINDOWS_RUNTIME)
-
-const char* inet_ntop(int af, const void* src, char* dest, size_t length,
-    unsigned long scope_id, asio::error_code& ec)
-{
-  clear_last_error();
-#if defined(ASIO_WINDOWS_RUNTIME)
-  using namespace std; // For sprintf.
-  const unsigned char* bytes = static_cast<const unsigned char*>(src);
-  if (af == ASIO_OS_DEF(AF_INET))
-  {
-    sprintf_s(dest, length, "%u.%u.%u.%u",
-        bytes[0], bytes[1], bytes[2], bytes[3]);
-    return dest;
-  }
-  else if (af == ASIO_OS_DEF(AF_INET6))
-  {
-    size_t n = 0, b = 0, z = 0;
-    while (n < length && b < 16)
-    {
-      if (bytes[b] == 0 && bytes[b + 1] == 0 && z == 0)
-      {
-        do b += 2; while (b < 16 && bytes[b] == 0 && bytes[b + 1] == 0);
-        n += sprintf_s(dest + n, length - n, ":%s", b < 16 ? "" : ":"), ++z;
-      }
-      else
-      {
-        n += sprintf_s(dest + n, length - n, "%s%x", b ? ":" : "",
-            (static_cast<u_long_type>(bytes[b]) << 8) | bytes[b + 1]);
-        b += 2;
-      }
-    }
-    if (scope_id)
-      n += sprintf_s(dest + n, length - n, "%%%lu", scope_id);
-    return dest;
-  }
-  else
-  {
-    ec = asio::error::address_family_not_supported;
-    return 0;
-  }
-#elif defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  using namespace std; // For memcpy.
-
-  if (af != ASIO_OS_DEF(AF_INET) && af != ASIO_OS_DEF(AF_INET6))
-  {
-    ec = asio::error::address_family_not_supported;
-    return 0;
-  }
-
-  union
-  {
-    socket_addr_type base;
-    sockaddr_storage_type storage;
-    sockaddr_in4_type v4;
-    sockaddr_in6_type v6;
-  } address;
-  DWORD address_length;
-  if (af == ASIO_OS_DEF(AF_INET))
-  {
-    address_length = sizeof(sockaddr_in4_type);
-    address.v4.sin_family = ASIO_OS_DEF(AF_INET);
-    address.v4.sin_port = 0;
-    memcpy(&address.v4.sin_addr, src, sizeof(in4_addr_type));
-  }
-  else // AF_INET6
-  {
-    address_length = sizeof(sockaddr_in6_type);
-    address.v6.sin6_family = ASIO_OS_DEF(AF_INET6);
-    address.v6.sin6_port = 0;
-    address.v6.sin6_flowinfo = 0;
-    address.v6.sin6_scope_id = scope_id;
-    memcpy(&address.v6.sin6_addr, src, sizeof(in6_addr_type));
-  }
-
-  DWORD string_length = static_cast<DWORD>(length);
-#if defined(BOOST_NO_ANSI_APIS) || (defined(_MSC_VER) && (_MSC_VER >= 1800))
-  LPWSTR string_buffer = (LPWSTR)_alloca(length * sizeof(WCHAR));
-  int result = error_wrapper(::WSAAddressToStringW(&address.base,
-        address_length, 0, string_buffer, &string_length), ec);
-  ::WideCharToMultiByte(CP_ACP, 0, string_buffer, -1,
-      dest, static_cast<int>(length), 0, 0);
-#else
-  int result = error_wrapper(::WSAAddressToStringA(
-        &address.base, address_length, 0, dest, &string_length), ec);
-#endif
-
-  // Windows may set error code on success.
-  if (result != socket_error_retval)
-    ec = asio::error_code();
-
-  // Windows may not set an error code on failure.
-  else if (result == socket_error_retval && !ec)
-    ec = asio::error::invalid_argument;
-
-  return result == socket_error_retval ? 0 : dest;
-#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  const char* result = error_wrapper(::inet_ntop(
-        af, src, dest, static_cast<int>(length)), ec);
-  if (result == 0 && !ec)
-    ec = asio::error::invalid_argument;
-  if (result != 0 && af == ASIO_OS_DEF(AF_INET6) && scope_id != 0)
-  {
-    using namespace std; // For strcat and sprintf.
-    char if_name[IF_NAMESIZE + 1] = "%";
-    const in6_addr_type* ipv6_address = static_cast<const in6_addr_type*>(src);
-    bool is_link_local = ((ipv6_address->s6_addr[0] == 0xfe)
-        && ((ipv6_address->s6_addr[1] & 0xc0) == 0x80));
-    bool is_multicast_link_local = ((ipv6_address->s6_addr[0] == 0xff)
-        && ((ipv6_address->s6_addr[1] & 0x0f) == 0x02));
-    if ((!is_link_local && !is_multicast_link_local)
-        || if_indextoname(static_cast<unsigned>(scope_id), if_name + 1) == 0)
-      sprintf(if_name + 1, "%lu", scope_id);
-    strcat(dest, if_name);
-  }
-  return result;
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-}
-
-int inet_pton(int af, const char* src, void* dest,
-    unsigned long* scope_id, asio::error_code& ec)
-{
-  clear_last_error();
-#if defined(ASIO_WINDOWS_RUNTIME)
-  using namespace std; // For sscanf.
-  unsigned char* bytes = static_cast<unsigned char*>(dest);
-  if (af == ASIO_OS_DEF(AF_INET))
-  {
-    unsigned int b0, b1, b2, b3;
-    if (sscanf_s(src, "%u.%u.%u.%u", &b0, &b1, &b2, &b3) != 4)
-    {
-      ec = asio::error::invalid_argument;
-      return -1;
-    }
-    if (b0 > 255 || b1 > 255 || b2 > 255 || b3 > 255)
-    {
-      ec = asio::error::invalid_argument;
-      return -1;
-    }
-    bytes[0] = static_cast<unsigned char>(b0);
-    bytes[1] = static_cast<unsigned char>(b1);
-    bytes[2] = static_cast<unsigned char>(b2);
-    bytes[3] = static_cast<unsigned char>(b3);
-    ec = asio::error_code();
-    return 1;
-  }
-  else if (af == ASIO_OS_DEF(AF_INET6))
-  {
-    unsigned char* bytes = static_cast<unsigned char*>(dest);
-    std::memset(bytes, 0, 16);
-    unsigned char back_bytes[16] = { 0 };
-    int num_front_bytes = 0, num_back_bytes = 0;
-    const char* p = src;
-
-    enum { fword, fcolon, bword, scope, done } state = fword;
-    unsigned long current_word = 0;
-    while (state != done)
-    {
-      if (current_word > 0xFFFF)
-      {
-        ec = asio::error::invalid_argument;
-        return -1;
-      }
-
-      switch (state)
-      {
-      case fword:
-        if (*p >= '0' && *p <= '9')
-          current_word = current_word * 16 + *p++ - '0';
-        else if (*p >= 'a' && *p <= 'f')
-          current_word = current_word * 16 + *p++ - 'a' + 10;
-        else if (*p >= 'A' && *p <= 'F')
-          current_word = current_word * 16 + *p++ - 'A' + 10;
-        else
-        {
-          if (num_front_bytes == 16)
-          {
-            ec = asio::error::invalid_argument;
-            return -1;
-          }
-
-          bytes[num_front_bytes++] = (current_word >> 8) & 0xFF;
-          bytes[num_front_bytes++] = current_word & 0xFF;
-          current_word = 0;
-
-          if (*p == ':')
-            state = fcolon, ++p;
-          else if (*p == '%')
-            state = scope, ++p;
-          else if (*p == 0)
-            state = done;
-          else
-          {
-            ec = asio::error::invalid_argument;
-            return -1;
-          }
-        }
-        break;
-
-      case fcolon:
-        if (*p == ':')
-          state = bword, ++p;
-        else
-          state = fword;
-        break;
-
-      case bword:
-        if (*p >= '0' && *p <= '9')
-          current_word = current_word * 16 + *p++ - '0';
-        else if (*p >= 'a' && *p <= 'f')
-          current_word = current_word * 16 + *p++ - 'a' + 10;
-        else if (*p >= 'A' && *p <= 'F')
-          current_word = current_word * 16 + *p++ - 'A' + 10;
-        else
-        {
-          if (num_front_bytes + num_back_bytes == 16)
-          {
-            ec = asio::error::invalid_argument;
-            return -1;
-          }
-
-          back_bytes[num_back_bytes++] = (current_word >> 8) & 0xFF;
-          back_bytes[num_back_bytes++] = current_word & 0xFF;
-          current_word = 0;
-
-          if (*p == ':')
-            state = bword, ++p;
-          else if (*p == '%')
-            state = scope, ++p;
-          else if (*p == 0)
-            state = done;
-          else
-          {
-            ec = asio::error::invalid_argument;
-            return -1;
-          }
-        }
-        break;
-
-      case scope:
-        if (*p >= '0' && *p <= '9')
-          current_word = current_word * 10 + *p++ - '0';
-        else if (*p == 0)
-          *scope_id = current_word, state = done;
-        else
-        {
-          ec = asio::error::invalid_argument;
-          return -1;
-        }
-        break;
-
-      default:
-        break;
-      }
-    }
-
-    for (int i = 0; i < num_back_bytes; ++i)
-      bytes[16 - num_back_bytes + i] = back_bytes[i];
-
-    ec = asio::error_code();
-    return 1;
-  }
-  else
-  {
-    ec = asio::error::address_family_not_supported;
-    return -1;
-  }
-#elif defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  using namespace std; // For memcpy and strcmp.
-
-  if (af != ASIO_OS_DEF(AF_INET) && af != ASIO_OS_DEF(AF_INET6))
-  {
-    ec = asio::error::address_family_not_supported;
-    return -1;
-  }
-
-  union
-  {
-    socket_addr_type base;
-    sockaddr_storage_type storage;
-    sockaddr_in4_type v4;
-    sockaddr_in6_type v6;
-  } address;
-  int address_length = sizeof(sockaddr_storage_type);
-#if defined(BOOST_NO_ANSI_APIS) || (defined(_MSC_VER) && (_MSC_VER >= 1800))
-  int num_wide_chars = static_cast<int>(strlen(src)) + 1;
-  LPWSTR wide_buffer = (LPWSTR)_alloca(num_wide_chars * sizeof(WCHAR));
-  ::MultiByteToWideChar(CP_ACP, 0, src, -1, wide_buffer, num_wide_chars);
-  int result = error_wrapper(::WSAStringToAddressW(
-        wide_buffer, af, 0, &address.base, &address_length), ec);
-#else
-  int result = error_wrapper(::WSAStringToAddressA(
-        const_cast<char*>(src), af, 0, &address.base, &address_length), ec);
-#endif
-
-  if (af == ASIO_OS_DEF(AF_INET))
-  {
-    if (result != socket_error_retval)
-    {
-      memcpy(dest, &address.v4.sin_addr, sizeof(in4_addr_type));
-      ec = asio::error_code();
-    }
-    else if (strcmp(src, "255.255.255.255") == 0)
-    {
-      static_cast<in4_addr_type*>(dest)->s_addr = INADDR_NONE;
-      ec = asio::error_code();
-    }
-  }
-  else // AF_INET6
-  {
-    if (result != socket_error_retval)
-    {
-      memcpy(dest, &address.v6.sin6_addr, sizeof(in6_addr_type));
-      if (scope_id)
-        *scope_id = address.v6.sin6_scope_id;
-      ec = asio::error_code();
-    }
-  }
-
-  // Windows may not set an error code on failure.
-  if (result == socket_error_retval && !ec)
-    ec = asio::error::invalid_argument;
-
-  if (result != socket_error_retval)
-    ec = asio::error_code();
-
-  return result == socket_error_retval ? -1 : 1;
-#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  using namespace std; // For strchr, memcpy and atoi.
-
-  // On some platforms, inet_pton fails if an address string contains a scope
-  // id. Detect and remove the scope id before passing the string to inet_pton.
-  const bool is_v6 = (af == ASIO_OS_DEF(AF_INET6));
-  const char* if_name = is_v6 ? strchr(src, '%') : 0;
-  char src_buf[max_addr_v6_str_len + 1];
-  const char* src_ptr = src;
-  if (if_name != 0)
-  {
-    if (if_name - src > max_addr_v6_str_len)
-    {
-      ec = asio::error::invalid_argument;
-      return 0;
-    }
-    memcpy(src_buf, src, if_name - src);
-    src_buf[if_name - src] = 0;
-    src_ptr = src_buf;
-  }
-
-  int result = error_wrapper(::inet_pton(af, src_ptr, dest), ec);
-  if (result <= 0 && !ec)
-    ec = asio::error::invalid_argument;
-  if (result > 0 && is_v6 && scope_id)
-  {
-    using namespace std; // For strchr and atoi.
-    *scope_id = 0;
-    if (if_name != 0)
-    {
-      in6_addr_type* ipv6_address = static_cast<in6_addr_type*>(dest);
-      bool is_link_local = ((ipv6_address->s6_addr[0] == 0xfe)
-          && ((ipv6_address->s6_addr[1] & 0xc0) == 0x80));
-      bool is_multicast_link_local = ((ipv6_address->s6_addr[0] == 0xff)
-          && ((ipv6_address->s6_addr[1] & 0x0f) == 0x02));
-      if (is_link_local || is_multicast_link_local)
-        *scope_id = if_nametoindex(if_name + 1);
-      if (*scope_id == 0)
-        *scope_id = atoi(if_name + 1);
-    }
-  }
-  return result;
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-}
-
-int gethostname(char* name, int namelen, asio::error_code& ec)
-{
-  clear_last_error();
-#if defined(ASIO_WINDOWS_RUNTIME)
-  try
-  {
-    using namespace Windows::Foundation::Collections;
-    using namespace Windows::Networking;
-    using namespace Windows::Networking::Connectivity;
-    IVectorView<HostName^>^ hostnames = NetworkInformation::GetHostNames();
-    for (unsigned i = 0; i < hostnames->Size; ++i)
-    {
-      HostName^ hostname = hostnames->GetAt(i);
-      if (hostname->Type == HostNameType::DomainName)
-      {
-        std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;
-        std::string raw_name = converter.to_bytes(hostname->RawName->Data());
-        if (namelen > 0 && raw_name.size() < static_cast<std::size_t>(namelen))
-        {
-          strcpy_s(name, namelen, raw_name.c_str());
-          return 0;
-        }
-      }
-    }
-    return -1;
-  }
-  catch (Platform::Exception^ e)
-  {
-    ec = asio::error_code(e->HResult,
-        asio::system_category());
-    return -1;
-  }
-#else // defined(ASIO_WINDOWS_RUNTIME)
-  int result = error_wrapper(::gethostname(name, namelen), ec);
-# if defined(ASIO_WINDOWS)
-  if (result == 0)
-    ec = asio::error_code();
-# endif // defined(ASIO_WINDOWS)
-  return result;
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-}
-
-#if !defined(ASIO_WINDOWS_RUNTIME)
-
-#if !defined(ASIO_HAS_GETADDRINFO)
-
-// The following functions are only needed for emulation of getaddrinfo and
-// getnameinfo.
-
-inline asio::error_code translate_netdb_error(int error)
-{
-  switch (error)
-  {
-  case 0:
-    return asio::error_code();
-  case HOST_NOT_FOUND:
-    return asio::error::host_not_found;
-  case TRY_AGAIN:
-    return asio::error::host_not_found_try_again;
-  case NO_RECOVERY:
-    return asio::error::no_recovery;
-  case NO_DATA:
-    return asio::error::no_data;
-  default:
-    ASIO_ASSERT(false);
-    return asio::error::invalid_argument;
-  }
-}
-
-inline hostent* gethostbyaddr(const char* addr, int length, int af,
-    hostent* result, char* buffer, int buflength, asio::error_code& ec)
-{
-  clear_last_error();
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  (void)(buffer);
-  (void)(buflength);
-  hostent* retval = error_wrapper(::gethostbyaddr(addr, length, af), ec);
-  if (!retval)
-    return 0;
-  ec = asio::error_code();
-  *result = *retval;
-  return retval;
-#elif defined(__sun) || defined(__QNX__)
-  int error = 0;
-  hostent* retval = error_wrapper(::gethostbyaddr_r(addr, length, af, result,
-        buffer, buflength, &error), ec);
-  if (error)
-    ec = translate_netdb_error(error);
-  return retval;
-#elif defined(__MACH__) && defined(__APPLE__)
-  (void)(buffer);
-  (void)(buflength);
-  int error = 0;
-  hostent* retval = error_wrapper(::getipnodebyaddr(
-        addr, length, af, &error), ec);
-  if (error)
-    ec = translate_netdb_error(error);
-  if (!retval)
-    return 0;
-  *result = *retval;
-  return retval;
-#else
-  hostent* retval = 0;
-  int error = 0;
-  error_wrapper(::gethostbyaddr_r(addr, length, af, result, buffer,
-        buflength, &retval, &error), ec);
-  if (error)
-    ec = translate_netdb_error(error);
-  return retval;
-#endif
-}
-
-inline hostent* gethostbyname(const char* name, int af, struct hostent* result,
-    char* buffer, int buflength, int ai_flags, asio::error_code& ec)
-{
-  clear_last_error();
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  (void)(buffer);
-  (void)(buflength);
-  (void)(ai_flags);
-  if (af != ASIO_OS_DEF(AF_INET))
-  {
-    ec = asio::error::address_family_not_supported;
-    return 0;
-  }
-  hostent* retval = error_wrapper(::gethostbyname(name), ec);
-  if (!retval)
-    return 0;
-  ec = asio::error_code();
-  *result = *retval;
-  return result;
-#elif defined(__sun) || defined(__QNX__)
-  (void)(ai_flags);
-  if (af != ASIO_OS_DEF(AF_INET))
-  {
-    ec = asio::error::address_family_not_supported;
-    return 0;
-  }
-  int error = 0;
-  hostent* retval = error_wrapper(::gethostbyname_r(name, result, buffer,
-        buflength, &error), ec);
-  if (error)
-    ec = translate_netdb_error(error);
-  return retval;
-#elif defined(__MACH__) && defined(__APPLE__)
-  (void)(buffer);
-  (void)(buflength);
-  int error = 0;
-  hostent* retval = error_wrapper(::getipnodebyname(
-        name, af, ai_flags, &error), ec);
-  if (error)
-    ec = translate_netdb_error(error);
-  if (!retval)
-    return 0;
-  *result = *retval;
-  return retval;
-#else
-  (void)(ai_flags);
-  if (af != ASIO_OS_DEF(AF_INET))
-  {
-    ec = asio::error::address_family_not_supported;
-    return 0;
-  }
-  hostent* retval = 0;
-  int error = 0;
-  error_wrapper(::gethostbyname_r(name, result,
-        buffer, buflength, &retval, &error), ec);
-  if (error)
-    ec = translate_netdb_error(error);
-  return retval;
-#endif
-}
-
-inline void freehostent(hostent* h)
-{
-#if defined(__MACH__) && defined(__APPLE__)
-  if (h)
-    ::freehostent(h);
-#else
-  (void)(h);
-#endif
-}
-
-// Emulation of getaddrinfo based on implementation in:
-// Stevens, W. R., UNIX Network Programming Vol. 1, 2nd Ed., Prentice-Hall 1998.
-
-struct gai_search
-{
-  const char* host;
-  int family;
-};
-
-inline int gai_nsearch(const char* host,
-    const addrinfo_type* hints, gai_search (&search)[2])
-{
-  int search_count = 0;
-  if (host == 0 || host[0] == '\0')
-  {
-    if (hints->ai_flags & AI_PASSIVE)
-    {
-      // No host and AI_PASSIVE implies wildcard bind.
-      switch (hints->ai_family)
-      {
-      case ASIO_OS_DEF(AF_INET):
-        search[search_count].host = "0.0.0.0";
-        search[search_count].family = ASIO_OS_DEF(AF_INET);
-        ++search_count;
-        break;
-      case ASIO_OS_DEF(AF_INET6):
-        search[search_count].host = "0::0";
-        search[search_count].family = ASIO_OS_DEF(AF_INET6);
-        ++search_count;
-        break;
-      case ASIO_OS_DEF(AF_UNSPEC):
-        search[search_count].host = "0::0";
-        search[search_count].family = ASIO_OS_DEF(AF_INET6);
-        ++search_count;
-        search[search_count].host = "0.0.0.0";
-        search[search_count].family = ASIO_OS_DEF(AF_INET);
-        ++search_count;
-        break;
-      default:
-        break;
-      }
-    }
-    else
-    {
-      // No host and not AI_PASSIVE means connect to local host.
-      switch (hints->ai_family)
-      {
-      case ASIO_OS_DEF(AF_INET):
-        search[search_count].host = "localhost";
-        search[search_count].family = ASIO_OS_DEF(AF_INET);
-        ++search_count;
-        break;
-      case ASIO_OS_DEF(AF_INET6):
-        search[search_count].host = "localhost";
-        search[search_count].family = ASIO_OS_DEF(AF_INET6);
-        ++search_count;
-        break;
-      case ASIO_OS_DEF(AF_UNSPEC):
-        search[search_count].host = "localhost";
-        search[search_count].family = ASIO_OS_DEF(AF_INET6);
-        ++search_count;
-        search[search_count].host = "localhost";
-        search[search_count].family = ASIO_OS_DEF(AF_INET);
-        ++search_count;
-        break;
-      default:
-        break;
-      }
-    }
-  }
-  else
-  {
-    // Host is specified.
-    switch (hints->ai_family)
-    {
-    case ASIO_OS_DEF(AF_INET):
-      search[search_count].host = host;
-      search[search_count].family = ASIO_OS_DEF(AF_INET);
-      ++search_count;
-      break;
-    case ASIO_OS_DEF(AF_INET6):
-      search[search_count].host = host;
-      search[search_count].family = ASIO_OS_DEF(AF_INET6);
-      ++search_count;
-      break;
-    case ASIO_OS_DEF(AF_UNSPEC):
-      search[search_count].host = host;
-      search[search_count].family = ASIO_OS_DEF(AF_INET6);
-      ++search_count;
-      search[search_count].host = host;
-      search[search_count].family = ASIO_OS_DEF(AF_INET);
-      ++search_count;
-      break;
-    default:
-      break;
-    }
-  }
-  return search_count;
-}
-
-template <typename T>
-inline T* gai_alloc(std::size_t size = sizeof(T))
-{
-  using namespace std;
-  T* p = static_cast<T*>(::operator new(size, std::nothrow));
-  if (p)
-    memset(p, 0, size);
-  return p;
-}
-
-inline void gai_free(void* p)
-{
-  ::operator delete(p);
-}
-
-inline void gai_strcpy(char* target, const char* source, std::size_t max_size)
-{
-  using namespace std;
-#if defined(ASIO_HAS_SECURE_RTL)
-  strcpy_s(target, max_size, source);
-#else // defined(ASIO_HAS_SECURE_RTL)
-  *target = 0;
-  strncat(target, source, max_size);
-#endif // defined(ASIO_HAS_SECURE_RTL)
-}
-
-enum { gai_clone_flag = 1 << 30 };
-
-inline int gai_aistruct(addrinfo_type*** next, const addrinfo_type* hints,
-    const void* addr, int family)
-{
-  using namespace std;
-
-  addrinfo_type* ai = gai_alloc<addrinfo_type>();
-  if (ai == 0)
-    return EAI_MEMORY;
-
-  ai->ai_next = 0;
-  **next = ai;
-  *next = &ai->ai_next;
-
-  ai->ai_canonname = 0;
-  ai->ai_socktype = hints->ai_socktype;
-  if (ai->ai_socktype == 0)
-    ai->ai_flags |= gai_clone_flag;
-  ai->ai_protocol = hints->ai_protocol;
-  ai->ai_family = family;
-
-  switch (ai->ai_family)
-  {
-  case ASIO_OS_DEF(AF_INET):
-    {
-      sockaddr_in4_type* sinptr = gai_alloc<sockaddr_in4_type>();
-      if (sinptr == 0)
-        return EAI_MEMORY;
-      sinptr->sin_family = ASIO_OS_DEF(AF_INET);
-      memcpy(&sinptr->sin_addr, addr, sizeof(in4_addr_type));
-      ai->ai_addr = reinterpret_cast<sockaddr*>(sinptr);
-      ai->ai_addrlen = sizeof(sockaddr_in4_type);
-      break;
-    }
-  case ASIO_OS_DEF(AF_INET6):
-    {
-      sockaddr_in6_type* sin6ptr = gai_alloc<sockaddr_in6_type>();
-      if (sin6ptr == 0)
-        return EAI_MEMORY;
-      sin6ptr->sin6_family = ASIO_OS_DEF(AF_INET6);
-      memcpy(&sin6ptr->sin6_addr, addr, sizeof(in6_addr_type));
-      ai->ai_addr = reinterpret_cast<sockaddr*>(sin6ptr);
-      ai->ai_addrlen = sizeof(sockaddr_in6_type);
-      break;
-    }
-  default:
-    break;
-  }
-
-  return 0;
-}
-
-inline addrinfo_type* gai_clone(addrinfo_type* ai)
-{
-  using namespace std;
-
-  addrinfo_type* new_ai = gai_alloc<addrinfo_type>();
-  if (new_ai == 0)
-    return new_ai;
-
-  new_ai->ai_next = ai->ai_next;
-  ai->ai_next = new_ai;
-
-  new_ai->ai_flags = 0;
-  new_ai->ai_family = ai->ai_family;
-  new_ai->ai_socktype = ai->ai_socktype;
-  new_ai->ai_protocol = ai->ai_protocol;
-  new_ai->ai_canonname = 0;
-  new_ai->ai_addrlen = ai->ai_addrlen;
-  new_ai->ai_addr = gai_alloc<sockaddr>(ai->ai_addrlen);
-  memcpy(new_ai->ai_addr, ai->ai_addr, ai->ai_addrlen);
-
-  return new_ai;
-}
-
-inline int gai_port(addrinfo_type* aihead, int port, int socktype)
-{
-  int num_found = 0;
-
-  for (addrinfo_type* ai = aihead; ai; ai = ai->ai_next)
-  {
-    if (ai->ai_flags & gai_clone_flag)
-    {
-      if (ai->ai_socktype != 0)
-      {
-        ai = gai_clone(ai);
-        if (ai == 0)
-          return -1;
-        // ai now points to newly cloned entry.
-      }
-    }
-    else if (ai->ai_socktype != socktype)
-    {
-      // Ignore if mismatch on socket type.
-      continue;
-    }
-
-    ai->ai_socktype = socktype;
-
-    switch (ai->ai_family)
-    {
-    case ASIO_OS_DEF(AF_INET):
-      {
-        sockaddr_in4_type* sinptr =
-          reinterpret_cast<sockaddr_in4_type*>(ai->ai_addr);
-        sinptr->sin_port = port;
-        ++num_found;
-        break;
-      }
-    case ASIO_OS_DEF(AF_INET6):
-      {
-        sockaddr_in6_type* sin6ptr =
-          reinterpret_cast<sockaddr_in6_type*>(ai->ai_addr);
-        sin6ptr->sin6_port = port;
-        ++num_found;
-        break;
-      }
-    default:
-      break;
-    }
-  }
-
-  return num_found;
-}
-
-inline int gai_serv(addrinfo_type* aihead,
-    const addrinfo_type* hints, const char* serv)
-{
-  using namespace std;
-
-  int num_found = 0;
-
-  if (
-#if defined(AI_NUMERICSERV)
-      (hints->ai_flags & AI_NUMERICSERV) ||
-#endif
-      isdigit(static_cast<unsigned char>(serv[0])))
-  {
-    int port = htons(atoi(serv));
-    if (hints->ai_socktype)
-    {
-      // Caller specifies socket type.
-      int rc = gai_port(aihead, port, hints->ai_socktype);
-      if (rc < 0)
-        return EAI_MEMORY;
-      num_found += rc;
-    }
-    else
-    {
-      // Caller does not specify socket type.
-      int rc = gai_port(aihead, port, SOCK_STREAM);
-      if (rc < 0)
-        return EAI_MEMORY;
-      num_found += rc;
-      rc = gai_port(aihead, port, SOCK_DGRAM);
-      if (rc < 0)
-        return EAI_MEMORY;
-      num_found += rc;
-    }
-  }
-  else
-  {
-    // Try service name with TCP first, then UDP.
-    if (hints->ai_socktype == 0 || hints->ai_socktype == SOCK_STREAM)
-    {
-      servent* sptr = getservbyname(serv, "tcp");
-      if (sptr != 0)
-      {
-        int rc = gai_port(aihead, sptr->s_port, SOCK_STREAM);
-        if (rc < 0)
-          return EAI_MEMORY;
-        num_found += rc;
-      }
-    }
-    if (hints->ai_socktype == 0 || hints->ai_socktype == SOCK_DGRAM)
-    {
-      servent* sptr = getservbyname(serv, "udp");
-      if (sptr != 0)
-      {
-        int rc = gai_port(aihead, sptr->s_port, SOCK_DGRAM);
-        if (rc < 0)
-          return EAI_MEMORY;
-        num_found += rc;
-      }
-    }
-  }
-
-  if (num_found == 0)
-  {
-    if (hints->ai_socktype == 0)
-    {
-      // All calls to getservbyname() failed.
-      return EAI_NONAME;
-    }
-    else
-    {
-      // Service not supported for socket type.
-      return EAI_SERVICE;
-    }
-  }
-
-  return 0;
-}
-
-inline int gai_echeck(const char* host, const char* service,
-    int flags, int family, int socktype, int protocol)
-{
-  (void)(flags);
-  (void)(protocol);
-
-  // Host or service must be specified.
-  if (host == 0 || host[0] == '\0')
-    if (service == 0 || service[0] == '\0')
-      return EAI_NONAME;
-
-  // Check combination of family and socket type.
-  switch (family)
-  {
-  case ASIO_OS_DEF(AF_UNSPEC):
-    break;
-  case ASIO_OS_DEF(AF_INET):
-  case ASIO_OS_DEF(AF_INET6):
-    if (service != 0 && service[0] != '\0')
-      if (socktype != 0 && socktype != SOCK_STREAM && socktype != SOCK_DGRAM)
-        return EAI_SOCKTYPE;
-    break;
-  default:
-    return EAI_FAMILY;
-  }
-
-  return 0;
-}
-
-inline void freeaddrinfo_emulation(addrinfo_type* aihead)
-{
-  addrinfo_type* ai = aihead;
-  while (ai)
-  {
-    gai_free(ai->ai_addr);
-    gai_free(ai->ai_canonname);
-    addrinfo_type* ainext = ai->ai_next;
-    gai_free(ai);
-    ai = ainext;
-  }
-}
-
-inline int getaddrinfo_emulation(const char* host, const char* service,
-    const addrinfo_type* hintsp, addrinfo_type** result)
-{
-  // Set up linked list of addrinfo structures.
-  addrinfo_type* aihead = 0;
-  addrinfo_type** ainext = &aihead;
-  char* canon = 0;
-
-  // Supply default hints if not specified by caller.
-  addrinfo_type hints = addrinfo_type();
-  hints.ai_family = ASIO_OS_DEF(AF_UNSPEC);
-  if (hintsp)
-    hints = *hintsp;
-
-  // If the resolution is not specifically for AF_INET6, remove the AI_V4MAPPED
-  // and AI_ALL flags.
-#if defined(AI_V4MAPPED)
-  if (hints.ai_family != ASIO_OS_DEF(AF_INET6))
-    hints.ai_flags &= ~AI_V4MAPPED;
-#endif
-#if defined(AI_ALL)
-  if (hints.ai_family != ASIO_OS_DEF(AF_INET6))
-    hints.ai_flags &= ~AI_ALL;
-#endif
-
-  // Basic error checking.
-  int rc = gai_echeck(host, service, hints.ai_flags, hints.ai_family,
-      hints.ai_socktype, hints.ai_protocol);
-  if (rc != 0)
-  {
-    freeaddrinfo_emulation(aihead);
-    return rc;
-  }
-
-  gai_search search[2];
-  int search_count = gai_nsearch(host, &hints, search);
-  for (gai_search* sptr = search; sptr < search + search_count; ++sptr)
-  {
-    // Check for IPv4 dotted decimal string.
-    in4_addr_type inaddr;
-    asio::error_code ec;
-    if (socket_ops::inet_pton(ASIO_OS_DEF(AF_INET),
-          sptr->host, &inaddr, 0, ec) == 1)
-    {
-      if (hints.ai_family != ASIO_OS_DEF(AF_UNSPEC)
-          && hints.ai_family != ASIO_OS_DEF(AF_INET))
-      {
-        freeaddrinfo_emulation(aihead);
-        gai_free(canon);
-        return EAI_FAMILY;
-      }
-      if (sptr->family == ASIO_OS_DEF(AF_INET))
-      {
-        rc = gai_aistruct(&ainext, &hints, &inaddr, ASIO_OS_DEF(AF_INET));
-        if (rc != 0)
-        {
-          freeaddrinfo_emulation(aihead);
-          gai_free(canon);
-          return rc;
-        }
-      }
-      continue;
-    }
-
-    // Check for IPv6 hex string.
-    in6_addr_type in6addr;
-    if (socket_ops::inet_pton(ASIO_OS_DEF(AF_INET6),
-          sptr->host, &in6addr, 0, ec) == 1)
-    {
-      if (hints.ai_family != ASIO_OS_DEF(AF_UNSPEC)
-          && hints.ai_family != ASIO_OS_DEF(AF_INET6))
-      {
-        freeaddrinfo_emulation(aihead);
-        gai_free(canon);
-        return EAI_FAMILY;
-      }
-      if (sptr->family == ASIO_OS_DEF(AF_INET6))
-      {
-        rc = gai_aistruct(&ainext, &hints, &in6addr,
-            ASIO_OS_DEF(AF_INET6));
-        if (rc != 0)
-        {
-          freeaddrinfo_emulation(aihead);
-          gai_free(canon);
-          return rc;
-        }
-      }
-      continue;
-    }
-
-    // Look up hostname.
-    hostent hent;
-    char hbuf[8192] = "";
-    hostent* hptr = socket_ops::gethostbyname(sptr->host,
-        sptr->family, &hent, hbuf, sizeof(hbuf), hints.ai_flags, ec);
-    if (hptr == 0)
-    {
-      if (search_count == 2)
-      {
-        // Failure is OK if there are multiple searches.
-        continue;
-      }
-      freeaddrinfo_emulation(aihead);
-      gai_free(canon);
-      if (ec == asio::error::host_not_found)
-        return EAI_NONAME;
-      if (ec == asio::error::host_not_found_try_again)
-        return EAI_AGAIN;
-      if (ec == asio::error::no_recovery)
-        return EAI_FAIL;
-      if (ec == asio::error::no_data)
-        return EAI_NONAME;
-      return EAI_NONAME;
-    }
-
-    // Check for address family mismatch if one was specified.
-    if (hints.ai_family != ASIO_OS_DEF(AF_UNSPEC)
-        && hints.ai_family != hptr->h_addrtype)
-    {
-      freeaddrinfo_emulation(aihead);
-      gai_free(canon);
-      socket_ops::freehostent(hptr);
-      return EAI_FAMILY;
-    }
-
-    // Save canonical name first time.
-    if (host != 0 && host[0] != '\0' && hptr->h_name && hptr->h_name[0]
-        && (hints.ai_flags & AI_CANONNAME) && canon == 0)
-    {
-      std::size_t canon_len = strlen(hptr->h_name) + 1;
-      canon = gai_alloc<char>(canon_len);
-      if (canon == 0)
-      {
-        freeaddrinfo_emulation(aihead);
-        socket_ops::freehostent(hptr);
-        return EAI_MEMORY;
-      }
-      gai_strcpy(canon, hptr->h_name, canon_len);
-    }
-
-    // Create an addrinfo structure for each returned address.
-    for (char** ap = hptr->h_addr_list; *ap; ++ap)
-    {
-      rc = gai_aistruct(&ainext, &hints, *ap, hptr->h_addrtype);
-      if (rc != 0)
-      {
-        freeaddrinfo_emulation(aihead);
-        gai_free(canon);
-        socket_ops::freehostent(hptr);
-        return EAI_FAMILY;
-      }
-    }
-
-    socket_ops::freehostent(hptr);
-  }
-
-  // Check if we found anything.
-  if (aihead == 0)
-  {
-    gai_free(canon);
-    return EAI_NONAME;
-  }
-
-  // Return canonical name in first entry.
-  if (host != 0 && host[0] != '\0' && (hints.ai_flags & AI_CANONNAME))
-  {
-    if (canon)
-    {
-      aihead->ai_canonname = canon;
-      canon = 0;
-    }
-    else
-    {
-      std::size_t canonname_len = strlen(search[0].host) + 1;
-      aihead->ai_canonname = gai_alloc<char>(canonname_len);
-      if (aihead->ai_canonname == 0)
-      {
-        freeaddrinfo_emulation(aihead);
-        return EAI_MEMORY;
-      }
-      gai_strcpy(aihead->ai_canonname, search[0].host, canonname_len);
-    }
-  }
-  gai_free(canon);
-
-  // Process the service name.
-  if (service != 0 && service[0] != '\0')
-  {
-    rc = gai_serv(aihead, &hints, service);
-    if (rc != 0)
-    {
-      freeaddrinfo_emulation(aihead);
-      return rc;
-    }
-  }
-
-  // Return result to caller.
-  *result = aihead;
-  return 0;
-}
-
-inline asio::error_code getnameinfo_emulation(
-    const socket_addr_type* sa, std::size_t salen, char* host,
-    std::size_t hostlen, char* serv, std::size_t servlen, int flags,
-    asio::error_code& ec)
-{
-  using namespace std;
-
-  const char* addr;
-  size_t addr_len;
-  unsigned short port;
-  switch (sa->sa_family)
-  {
-  case ASIO_OS_DEF(AF_INET):
-    if (salen != sizeof(sockaddr_in4_type))
-    {
-      return ec = asio::error::invalid_argument;
-    }
-    addr = reinterpret_cast<const char*>(
-        &reinterpret_cast<const sockaddr_in4_type*>(sa)->sin_addr);
-    addr_len = sizeof(in4_addr_type);
-    port = reinterpret_cast<const sockaddr_in4_type*>(sa)->sin_port;
-    break;
-  case ASIO_OS_DEF(AF_INET6):
-    if (salen != sizeof(sockaddr_in6_type))
-    {
-      return ec = asio::error::invalid_argument;
-    }
-    addr = reinterpret_cast<const char*>(
-        &reinterpret_cast<const sockaddr_in6_type*>(sa)->sin6_addr);
-    addr_len = sizeof(in6_addr_type);
-    port = reinterpret_cast<const sockaddr_in6_type*>(sa)->sin6_port;
-    break;
-  default:
-    return ec = asio::error::address_family_not_supported;
-  }
-
-  if (host && hostlen > 0)
-  {
-    if (flags & NI_NUMERICHOST)
-    {
-      if (socket_ops::inet_ntop(sa->sa_family, addr, host, hostlen, 0, ec) == 0)
-      {
-        return ec;
-      }
-    }
-    else
-    {
-      hostent hent;
-      char hbuf[8192] = "";
-      hostent* hptr = socket_ops::gethostbyaddr(addr,
-          static_cast<int>(addr_len), sa->sa_family,
-          &hent, hbuf, sizeof(hbuf), ec);
-      if (hptr && hptr->h_name && hptr->h_name[0] != '\0')
-      {
-        if (flags & NI_NOFQDN)
-        {
-          char* dot = strchr(hptr->h_name, '.');
-          if (dot)
-          {
-            *dot = 0;
-          }
-        }
-        gai_strcpy(host, hptr->h_name, hostlen);
-        socket_ops::freehostent(hptr);
-      }
-      else
-      {
-        socket_ops::freehostent(hptr);
-        if (flags & NI_NAMEREQD)
-        {
-          return ec = asio::error::host_not_found;
-        }
-        if (socket_ops::inet_ntop(sa->sa_family,
-              addr, host, hostlen, 0, ec) == 0)
-        {
-          return ec;
-        }
-      }
-    }
-  }
-
-  if (serv && servlen > 0)
-  {
-    if (flags & NI_NUMERICSERV)
-    {
-      if (servlen < 6)
-      {
-        return ec = asio::error::no_buffer_space;
-      }
-#if defined(ASIO_HAS_SECURE_RTL)
-      sprintf_s(serv, servlen, "%u", ntohs(port));
-#else // defined(ASIO_HAS_SECURE_RTL)
-      sprintf(serv, "%u", ntohs(port));
-#endif // defined(ASIO_HAS_SECURE_RTL)
-    }
-    else
-    {
-#if defined(ASIO_HAS_PTHREADS)
-      static ::pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
-      ::pthread_mutex_lock(&mutex);
-#endif // defined(ASIO_HAS_PTHREADS)
-      servent* sptr = ::getservbyport(port, (flags & NI_DGRAM) ? "udp" : 0);
-      if (sptr && sptr->s_name && sptr->s_name[0] != '\0')
-      {
-        gai_strcpy(serv, sptr->s_name, servlen);
-      }
-      else
-      {
-        if (servlen < 6)
-        {
-          return ec = asio::error::no_buffer_space;
-        }
-#if defined(ASIO_HAS_SECURE_RTL)
-        sprintf_s(serv, servlen, "%u", ntohs(port));
-#else // defined(ASIO_HAS_SECURE_RTL)
-        sprintf(serv, "%u", ntohs(port));
-#endif // defined(ASIO_HAS_SECURE_RTL)
-      }
-#if defined(ASIO_HAS_PTHREADS)
-      ::pthread_mutex_unlock(&mutex);
-#endif // defined(ASIO_HAS_PTHREADS)
-    }
-  }
-
-  ec = asio::error_code();
-  return ec;
-}
-
-#endif // !defined(ASIO_HAS_GETADDRINFO)
-
-inline asio::error_code translate_addrinfo_error(int error)
-{
-  switch (error)
-  {
-  case 0:
-    return asio::error_code();
-  case EAI_AGAIN:
-    return asio::error::host_not_found_try_again;
-  case EAI_BADFLAGS:
-    return asio::error::invalid_argument;
-  case EAI_FAIL:
-    return asio::error::no_recovery;
-  case EAI_FAMILY:
-    return asio::error::address_family_not_supported;
-  case EAI_MEMORY:
-    return asio::error::no_memory;
-  case EAI_NONAME:
-#if defined(EAI_ADDRFAMILY)
-  case EAI_ADDRFAMILY:
-#endif
-#if defined(EAI_NODATA) && (EAI_NODATA != EAI_NONAME)
-  case EAI_NODATA:
-#endif
-    return asio::error::host_not_found;
-  case EAI_SERVICE:
-    return asio::error::service_not_found;
-  case EAI_SOCKTYPE:
-    return asio::error::socket_type_not_supported;
-  default: // Possibly the non-portable EAI_SYSTEM.
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-    return asio::error_code(
-        WSAGetLastError(), asio::error::get_system_category());
-#else
-    return asio::error_code(
-        errno, asio::error::get_system_category());
-#endif
-  }
-}
-
-asio::error_code getaddrinfo(const char* host,
-    const char* service, const addrinfo_type& hints,
-    addrinfo_type** result, asio::error_code& ec)
-{
-  host = (host && *host) ? host : 0;
-  service = (service && *service) ? service : 0;
-  clear_last_error();
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-# if defined(ASIO_HAS_GETADDRINFO)
-  // Building for Windows XP, Windows Server 2003, or later.
-  int error = ::getaddrinfo(host, service, &hints, result);
-  return ec = translate_addrinfo_error(error);
-# else
-  // Building for Windows 2000 or earlier.
-  typedef int (WSAAPI *gai_t)(const char*,
-      const char*, const addrinfo_type*, addrinfo_type**);
-  if (HMODULE winsock_module = ::GetModuleHandleA("ws2_32"))
-  {
-    if (gai_t gai = (gai_t)::GetProcAddress(winsock_module, "getaddrinfo"))
-    {
-      int error = gai(host, service, &hints, result);
-      return ec = translate_addrinfo_error(error);
-    }
-  }
-  int error = getaddrinfo_emulation(host, service, &hints, result);
-  return ec = translate_addrinfo_error(error);
-# endif
-#elif !defined(ASIO_HAS_GETADDRINFO)
-  int error = getaddrinfo_emulation(host, service, &hints, result);
-  return ec = translate_addrinfo_error(error);
-#else
-  int error = ::getaddrinfo(host, service, &hints, result);
-  return ec = translate_addrinfo_error(error);
-#endif
-}
-
-asio::error_code background_getaddrinfo(
-    const weak_cancel_token_type& cancel_token, const char* host,
-    const char* service, const addrinfo_type& hints,
-    addrinfo_type** result, asio::error_code& ec)
-{
-  if (cancel_token.expired())
-    ec = asio::error::operation_aborted;
-  else
-    socket_ops::getaddrinfo(host, service, hints, result, ec);
-  return ec;
-}
-
-void freeaddrinfo(addrinfo_type* ai)
-{
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-# if defined(ASIO_HAS_GETADDRINFO)
-  // Building for Windows XP, Windows Server 2003, or later.
-  ::freeaddrinfo(ai);
-# else
-  // Building for Windows 2000 or earlier.
-  typedef int (WSAAPI *fai_t)(addrinfo_type*);
-  if (HMODULE winsock_module = ::GetModuleHandleA("ws2_32"))
-  {
-    if (fai_t fai = (fai_t)::GetProcAddress(winsock_module, "freeaddrinfo"))
-    {
-      fai(ai);
-      return;
-    }
-  }
-  freeaddrinfo_emulation(ai);
-# endif
-#elif !defined(ASIO_HAS_GETADDRINFO)
-  freeaddrinfo_emulation(ai);
-#else
-  ::freeaddrinfo(ai);
-#endif
-}
-
-asio::error_code getnameinfo(const socket_addr_type* addr,
-    std::size_t addrlen, char* host, std::size_t hostlen,
-    char* serv, std::size_t servlen, int flags, asio::error_code& ec)
-{
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-# if defined(ASIO_HAS_GETADDRINFO)
-  // Building for Windows XP, Windows Server 2003, or later.
-  clear_last_error();
-  int error = ::getnameinfo(addr, static_cast<socklen_t>(addrlen),
-      host, static_cast<DWORD>(hostlen),
-      serv, static_cast<DWORD>(servlen), flags);
-  return ec = translate_addrinfo_error(error);
-# else
-  // Building for Windows 2000 or earlier.
-  typedef int (WSAAPI *gni_t)(const socket_addr_type*,
-      int, char*, DWORD, char*, DWORD, int);
-  if (HMODULE winsock_module = ::GetModuleHandleA("ws2_32"))
-  {
-    if (gni_t gni = (gni_t)::GetProcAddress(winsock_module, "getnameinfo"))
-    {
-      clear_last_error();
-      int error = gni(addr, static_cast<int>(addrlen),
-          host, static_cast<DWORD>(hostlen),
-          serv, static_cast<DWORD>(servlen), flags);
-      return ec = translate_addrinfo_error(error);
-    }
-  }
-  clear_last_error();
-  return getnameinfo_emulation(addr, addrlen,
-      host, hostlen, serv, servlen, flags, ec);
-# endif
-#elif !defined(ASIO_HAS_GETADDRINFO)
-  using namespace std; // For memcpy.
-  sockaddr_storage_type tmp_addr;
-  memcpy(&tmp_addr, addr, addrlen);
-  tmp_addr.ss_len = addrlen;
-  addr = reinterpret_cast<socket_addr_type*>(&tmp_addr);
-  clear_last_error();
-  return getnameinfo_emulation(addr, addrlen,
-      host, hostlen, serv, servlen, flags, ec);
-#else
-  clear_last_error();
-  int error = ::getnameinfo(addr, addrlen, host, hostlen, serv, servlen, flags);
-  return ec = translate_addrinfo_error(error);
-#endif
-}
-
-asio::error_code sync_getnameinfo(
-    const socket_addr_type* addr, std::size_t addrlen,
-    char* host, std::size_t hostlen, char* serv,
-    std::size_t servlen, int sock_type, asio::error_code& ec)
-{
-  // First try resolving with the service name. If that fails try resolving
-  // but allow the service to be returned as a number.
-  int flags = (sock_type == SOCK_DGRAM) ? NI_DGRAM : 0;
-  socket_ops::getnameinfo(addr, addrlen, host,
-      hostlen, serv, servlen, flags, ec);
-  if (ec)
-  {
-    socket_ops::getnameinfo(addr, addrlen, host, hostlen,
-        serv, servlen, flags | NI_NUMERICSERV, ec);
-  }
-
-  return ec;
-}
-
-asio::error_code background_getnameinfo(
-    const weak_cancel_token_type& cancel_token,
-    const socket_addr_type* addr, std::size_t addrlen,
-    char* host, std::size_t hostlen, char* serv,
-    std::size_t servlen, int sock_type, asio::error_code& ec)
-{
-  if (cancel_token.expired())
-  {
-    ec = asio::error::operation_aborted;
-  }
-  else
-  {
-    // First try resolving with the service name. If that fails try resolving
-    // but allow the service to be returned as a number.
-    int flags = (sock_type == SOCK_DGRAM) ? NI_DGRAM : 0;
-    socket_ops::getnameinfo(addr, addrlen, host,
-        hostlen, serv, servlen, flags, ec);
-    if (ec)
-    {
-      socket_ops::getnameinfo(addr, addrlen, host, hostlen,
-          serv, servlen, flags | NI_NUMERICSERV, ec);
-    }
-  }
-
-  return ec;
-}
-
-#endif // !defined(ASIO_WINDOWS_RUNTIME)
-
-u_long_type network_to_host_long(u_long_type value)
-{
-#if defined(ASIO_WINDOWS_RUNTIME)
-  unsigned char* value_p = reinterpret_cast<unsigned char*>(&value);
-  u_long_type result = (static_cast<u_long_type>(value_p[0]) << 24)
-    | (static_cast<u_long_type>(value_p[1]) << 16)
-    | (static_cast<u_long_type>(value_p[2]) << 8)
-    | static_cast<u_long_type>(value_p[3]);
-  return result;
-#else // defined(ASIO_WINDOWS_RUNTIME)
-  return ntohl(value);
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-}
-
-u_long_type host_to_network_long(u_long_type value)
-{
-#if defined(ASIO_WINDOWS_RUNTIME)
-  u_long_type result;
-  unsigned char* result_p = reinterpret_cast<unsigned char*>(&result);
-  result_p[0] = static_cast<unsigned char>((value >> 24) & 0xFF);
-  result_p[1] = static_cast<unsigned char>((value >> 16) & 0xFF);
-  result_p[2] = static_cast<unsigned char>((value >> 8) & 0xFF);
-  result_p[3] = static_cast<unsigned char>(value & 0xFF);
-  return result;
-#else // defined(ASIO_WINDOWS_RUNTIME)
-  return htonl(value);
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-}
-
-u_short_type network_to_host_short(u_short_type value)
-{
-#if defined(ASIO_WINDOWS_RUNTIME)
-  unsigned char* value_p = reinterpret_cast<unsigned char*>(&value);
-  u_short_type result = (static_cast<u_short_type>(value_p[0]) << 8)
-    | static_cast<u_short_type>(value_p[1]);
-  return result;
-#else // defined(ASIO_WINDOWS_RUNTIME)
-  return ntohs(value);
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-}
-
-u_short_type host_to_network_short(u_short_type value)
-{
-#if defined(ASIO_WINDOWS_RUNTIME)
-  u_short_type result;
-  unsigned char* result_p = reinterpret_cast<unsigned char*>(&result);
-  result_p[0] = static_cast<unsigned char>((value >> 8) & 0xFF);
-  result_p[1] = static_cast<unsigned char>(value & 0xFF);
-  return result;
-#else // defined(ASIO_WINDOWS_RUNTIME)
-  return htons(value);
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-}
-
-} // namespace socket_ops
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_SOCKET_OPS_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/socket_select_interrupter.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/socket_select_interrupter.ipp
deleted file mode 100644
index 21c0fbc..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/socket_select_interrupter.ipp
+++ /dev/null
@@ -1,175 +0,0 @@
-//
-// detail/impl/socket_select_interrupter.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_SOCKET_SELECT_INTERRUPTER_IPP
-#define ASIO_DETAIL_IMPL_SOCKET_SELECT_INTERRUPTER_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_WINDOWS_RUNTIME)
-
-#if defined(ASIO_WINDOWS) \
-  || defined(__CYGWIN__) \
-  || defined(__SYMBIAN32__)
-
-#include <cstdlib>
-#include "asio/detail/socket_holder.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/detail/socket_select_interrupter.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-socket_select_interrupter::socket_select_interrupter()
-{
-  open_descriptors();
-}
-
-void socket_select_interrupter::open_descriptors()
-{
-  asio::error_code ec;
-  socket_holder acceptor(socket_ops::socket(
-        AF_INET, SOCK_STREAM, IPPROTO_TCP, ec));
-  if (acceptor.get() == invalid_socket)
-    asio::detail::throw_error(ec, "socket_select_interrupter");
-
-  int opt = 1;
-  socket_ops::state_type acceptor_state = 0;
-  socket_ops::setsockopt(acceptor.get(), acceptor_state,
-      SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt), ec);
-
-  using namespace std; // For memset.
-  sockaddr_in4_type addr;
-  std::size_t addr_len = sizeof(addr);
-  memset(&addr, 0, sizeof(addr));
-  addr.sin_family = AF_INET;
-  addr.sin_addr.s_addr = socket_ops::host_to_network_long(INADDR_LOOPBACK);
-  addr.sin_port = 0;
-  if (socket_ops::bind(acceptor.get(), (const socket_addr_type*)&addr,
-        addr_len, ec) == socket_error_retval)
-    asio::detail::throw_error(ec, "socket_select_interrupter");
-
-  if (socket_ops::getsockname(acceptor.get(), (socket_addr_type*)&addr,
-        &addr_len, ec) == socket_error_retval)
-    asio::detail::throw_error(ec, "socket_select_interrupter");
-
-  // Some broken firewalls on Windows will intermittently cause getsockname to
-  // return 0.0.0.0 when the socket is actually bound to 127.0.0.1. We
-  // explicitly specify the target address here to work around this problem.
-  addr.sin_addr.s_addr = socket_ops::host_to_network_long(INADDR_LOOPBACK);
-
-  if (socket_ops::listen(acceptor.get(),
-        SOMAXCONN, ec) == socket_error_retval)
-    asio::detail::throw_error(ec, "socket_select_interrupter");
-
-  socket_holder client(socket_ops::socket(
-        AF_INET, SOCK_STREAM, IPPROTO_TCP, ec));
-  if (client.get() == invalid_socket)
-    asio::detail::throw_error(ec, "socket_select_interrupter");
-
-  if (socket_ops::connect(client.get(), (const socket_addr_type*)&addr,
-        addr_len, ec) == socket_error_retval)
-    asio::detail::throw_error(ec, "socket_select_interrupter");
-
-  socket_holder server(socket_ops::accept(acceptor.get(), 0, 0, ec));
-  if (server.get() == invalid_socket)
-    asio::detail::throw_error(ec, "socket_select_interrupter");
-  
-  ioctl_arg_type non_blocking = 1;
-  socket_ops::state_type client_state = 0;
-  if (socket_ops::ioctl(client.get(), client_state,
-        FIONBIO, &non_blocking, ec))
-    asio::detail::throw_error(ec, "socket_select_interrupter");
-
-  opt = 1;
-  socket_ops::setsockopt(client.get(), client_state,
-      IPPROTO_TCP, TCP_NODELAY, &opt, sizeof(opt), ec);
-
-  non_blocking = 1;
-  socket_ops::state_type server_state = 0;
-  if (socket_ops::ioctl(server.get(), server_state,
-        FIONBIO, &non_blocking, ec))
-    asio::detail::throw_error(ec, "socket_select_interrupter");
-
-  opt = 1;
-  socket_ops::setsockopt(server.get(), server_state,
-      IPPROTO_TCP, TCP_NODELAY, &opt, sizeof(opt), ec);
-
-  read_descriptor_ = server.release();
-  write_descriptor_ = client.release();
-}
-
-socket_select_interrupter::~socket_select_interrupter()
-{
-  close_descriptors();
-}
-
-void socket_select_interrupter::close_descriptors()
-{
-  asio::error_code ec;
-  socket_ops::state_type state = socket_ops::internal_non_blocking;
-  if (read_descriptor_ != invalid_socket)
-    socket_ops::close(read_descriptor_, state, true, ec);
-  if (write_descriptor_ != invalid_socket)
-    socket_ops::close(write_descriptor_, state, true, ec);
-}
-
-void socket_select_interrupter::recreate()
-{
-  close_descriptors();
-
-  write_descriptor_ = invalid_socket;
-  read_descriptor_ = invalid_socket;
-
-  open_descriptors();
-}
-
-void socket_select_interrupter::interrupt()
-{
-  char byte = 0;
-  socket_ops::buf b;
-  socket_ops::init_buf(b, &byte, 1);
-  asio::error_code ec;
-  socket_ops::send(write_descriptor_, &b, 1, 0, ec);
-}
-
-bool socket_select_interrupter::reset()
-{
-  char data[1024];
-  socket_ops::buf b;
-  socket_ops::init_buf(b, data, sizeof(data));
-  asio::error_code ec;
-  int bytes_read = socket_ops::recv(read_descriptor_, &b, 1, 0, ec);
-  bool was_interrupted = (bytes_read > 0);
-  while (bytes_read == sizeof(data))
-    bytes_read = socket_ops::recv(read_descriptor_, &b, 1, 0, ec);
-  return was_interrupted;
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS)
-       // || defined(__CYGWIN__)
-       // || defined(__SYMBIAN32__)
-
-#endif // !defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_IMPL_SOCKET_SELECT_INTERRUPTER_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/strand_service.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/strand_service.hpp
deleted file mode 100644
index b34b776..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/strand_service.hpp
+++ /dev/null
@@ -1,118 +0,0 @@
-//
-// detail/impl/strand_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_STRAND_SERVICE_HPP
-#define ASIO_DETAIL_IMPL_STRAND_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/call_stack.hpp"
-#include "asio/detail/completion_handler.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-inline strand_service::strand_impl::strand_impl()
-  : operation(&strand_service::do_complete),
-    locked_(false)
-{
-}
-
-struct strand_service::on_dispatch_exit
-{
-  io_service_impl* io_service_;
-  strand_impl* impl_;
-
-  ~on_dispatch_exit()
-  {
-    impl_->mutex_.lock();
-    impl_->ready_queue_.push(impl_->waiting_queue_);
-    bool more_handlers = impl_->locked_ = !impl_->ready_queue_.empty();
-    impl_->mutex_.unlock();
-
-    if (more_handlers)
-      io_service_->post_immediate_completion(impl_, false);
-  }
-};
-
-template <typename Handler>
-void strand_service::dispatch(strand_service::implementation_type& impl,
-    Handler& handler)
-{
-  // If we are already in the strand then the handler can run immediately.
-  if (call_stack<strand_impl>::contains(impl))
-  {
-    fenced_block b(fenced_block::full);
-    asio_handler_invoke_helpers::invoke(handler, handler);
-    return;
-  }
-
-  // Allocate and construct an operation to wrap the handler.
-  typedef completion_handler<Handler> op;
-  typename op::ptr p = { asio::detail::addressof(handler),
-    asio_handler_alloc_helpers::allocate(
-      sizeof(op), handler), 0 };
-  p.p = new (p.v) op(handler);
-
-  ASIO_HANDLER_CREATION((p.p, "strand", impl, "dispatch"));
-
-  bool dispatch_immediately = do_dispatch(impl, p.p);
-  operation* o = p.p;
-  p.v = p.p = 0;
-
-  if (dispatch_immediately)
-  {
-    // Indicate that this strand is executing on the current thread.
-    call_stack<strand_impl>::context ctx(impl);
-
-    // Ensure the next handler, if any, is scheduled on block exit.
-    on_dispatch_exit on_exit = { &io_service_, impl };
-    (void)on_exit;
-
-    completion_handler<Handler>::do_complete(
-        &io_service_, o, asio::error_code(), 0);
-  }
-}
-
-// Request the io_service to invoke the given handler and return immediately.
-template <typename Handler>
-void strand_service::post(strand_service::implementation_type& impl,
-    Handler& handler)
-{
-  bool is_continuation =
-    asio_handler_cont_helpers::is_continuation(handler);
-
-  // Allocate and construct an operation to wrap the handler.
-  typedef completion_handler<Handler> op;
-  typename op::ptr p = { asio::detail::addressof(handler),
-    asio_handler_alloc_helpers::allocate(
-      sizeof(op), handler), 0 };
-  p.p = new (p.v) op(handler);
-
-  ASIO_HANDLER_CREATION((p.p, "strand", impl, "post"));
-
-  do_post(impl, p.p, is_continuation);
-  p.v = p.p = 0;
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_IMPL_STRAND_SERVICE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/strand_service.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/strand_service.ipp
deleted file mode 100644
index e99da03..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/strand_service.ipp
+++ /dev/null
@@ -1,176 +0,0 @@
-//
-// detail/impl/strand_service.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_STRAND_SERVICE_IPP
-#define ASIO_DETAIL_IMPL_STRAND_SERVICE_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/call_stack.hpp"
-#include "asio/detail/strand_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-struct strand_service::on_do_complete_exit
-{
-  io_service_impl* owner_;
-  strand_impl* impl_;
-
-  ~on_do_complete_exit()
-  {
-    impl_->mutex_.lock();
-    impl_->ready_queue_.push(impl_->waiting_queue_);
-    bool more_handlers = impl_->locked_ = !impl_->ready_queue_.empty();
-    impl_->mutex_.unlock();
-
-    if (more_handlers)
-      owner_->post_immediate_completion(impl_, true);
-  }
-};
-
-strand_service::strand_service(asio::io_service& io_service)
-  : asio::detail::service_base<strand_service>(io_service),
-    io_service_(asio::use_service<io_service_impl>(io_service)),
-    mutex_(),
-    salt_(0)
-{
-}
-
-void strand_service::shutdown_service()
-{
-  op_queue<operation> ops;
-
-  asio::detail::mutex::scoped_lock lock(mutex_);
-
-  for (std::size_t i = 0; i < num_implementations; ++i)
-  {
-    if (strand_impl* impl = implementations_[i].get())
-    {
-      ops.push(impl->waiting_queue_);
-      ops.push(impl->ready_queue_);
-    }
-  }
-}
-
-void strand_service::construct(strand_service::implementation_type& impl)
-{
-  asio::detail::mutex::scoped_lock lock(mutex_);
-
-  std::size_t salt = salt_++;
-#if defined(ASIO_ENABLE_SEQUENTIAL_STRAND_ALLOCATION)
-  std::size_t index = salt;
-#else // defined(ASIO_ENABLE_SEQUENTIAL_STRAND_ALLOCATION)
-  std::size_t index = reinterpret_cast<std::size_t>(&impl);
-  index += (reinterpret_cast<std::size_t>(&impl) >> 3);
-  index ^= salt + 0x9e3779b9 + (index << 6) + (index >> 2);
-#endif // defined(ASIO_ENABLE_SEQUENTIAL_STRAND_ALLOCATION)
-  index = index % num_implementations;
-
-  if (!implementations_[index].get())
-    implementations_[index].reset(new strand_impl);
-  impl = implementations_[index].get();
-}
-
-bool strand_service::running_in_this_thread(
-    const implementation_type& impl) const
-{
-  return call_stack<strand_impl>::contains(impl) != 0;
-}
-
-bool strand_service::do_dispatch(implementation_type& impl, operation* op)
-{
-  // If we are running inside the io_service, and no other handler already
-  // holds the strand lock, then the handler can run immediately.
-  bool can_dispatch = io_service_.can_dispatch();
-  impl->mutex_.lock();
-  if (can_dispatch && !impl->locked_)
-  {
-    // Immediate invocation is allowed.
-    impl->locked_ = true;
-    impl->mutex_.unlock();
-    return true;
-  }
-
-  if (impl->locked_)
-  {
-    // Some other handler already holds the strand lock. Enqueue for later.
-    impl->waiting_queue_.push(op);
-    impl->mutex_.unlock();
-  }
-  else
-  {
-    // The handler is acquiring the strand lock and so is responsible for
-    // scheduling the strand.
-    impl->locked_ = true;
-    impl->mutex_.unlock();
-    impl->ready_queue_.push(op);
-    io_service_.post_immediate_completion(impl, false);
-  }
-
-  return false;
-}
-
-void strand_service::do_post(implementation_type& impl,
-    operation* op, bool is_continuation)
-{
-  impl->mutex_.lock();
-  if (impl->locked_)
-  {
-    // Some other handler already holds the strand lock. Enqueue for later.
-    impl->waiting_queue_.push(op);
-    impl->mutex_.unlock();
-  }
-  else
-  {
-    // The handler is acquiring the strand lock and so is responsible for
-    // scheduling the strand.
-    impl->locked_ = true;
-    impl->mutex_.unlock();
-    impl->ready_queue_.push(op);
-    io_service_.post_immediate_completion(impl, is_continuation);
-  }
-}
-
-void strand_service::do_complete(io_service_impl* owner, operation* base,
-    const asio::error_code& ec, std::size_t /*bytes_transferred*/)
-{
-  if (owner)
-  {
-    strand_impl* impl = static_cast<strand_impl*>(base);
-
-    // Indicate that this strand is executing on the current thread.
-    call_stack<strand_impl>::context ctx(impl);
-
-    // Ensure the next handler, if any, is scheduled on block exit.
-    on_do_complete_exit on_exit = { owner, impl };
-    (void)on_exit;
-
-    // Run all ready handlers. No lock is required since the ready queue is
-    // accessed only within the strand.
-    while (operation* o = impl->ready_queue_.front())
-    {
-      impl->ready_queue_.pop();
-      o->complete(*owner, ec, 0);
-    }
-  }
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_IMPL_STRAND_SERVICE_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/task_io_service.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/task_io_service.hpp
deleted file mode 100644
index cef9371..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/task_io_service.hpp
+++ /dev/null
@@ -1,78 +0,0 @@
-//
-// detail/impl/task_io_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_TASK_IO_SERVICE_HPP
-#define ASIO_DETAIL_IMPL_TASK_IO_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/completion_handler.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_cont_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Handler>
-void task_io_service::dispatch(Handler& handler)
-{
-  if (thread_call_stack::contains(this))
-  {
-    fenced_block b(fenced_block::full);
-    asio_handler_invoke_helpers::invoke(handler, handler);
-  }
-  else
-  {
-    // Allocate and construct an operation to wrap the handler.
-    typedef completion_handler<Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(handler);
-
-    ASIO_HANDLER_CREATION((p.p, "io_service", this, "dispatch"));
-
-    do_dispatch(p.p);
-    p.v = p.p = 0;
-  }
-}
-
-template <typename Handler>
-void task_io_service::post(Handler& handler)
-{
-  bool is_continuation =
-    asio_handler_cont_helpers::is_continuation(handler);
-
-  // Allocate and construct an operation to wrap the handler.
-  typedef completion_handler<Handler> op;
-  typename op::ptr p = { asio::detail::addressof(handler),
-    asio_handler_alloc_helpers::allocate(
-      sizeof(op), handler), 0 };
-  p.p = new (p.v) op(handler);
-
-  ASIO_HANDLER_CREATION((p.p, "io_service", this, "post"));
-
-  post_immediate_completion(p.p, is_continuation);
-  p.v = p.p = 0;
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_IMPL_TASK_IO_SERVICE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/task_io_service.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/task_io_service.ipp
deleted file mode 100644
index 67ba663..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/task_io_service.ipp
+++ /dev/null
@@ -1,474 +0,0 @@
-//
-// detail/impl/task_io_service.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_TASK_IO_SERVICE_IPP
-#define ASIO_DETAIL_IMPL_TASK_IO_SERVICE_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_HAS_IOCP)
-
-#include "asio/detail/event.hpp"
-#include "asio/detail/limits.hpp"
-#include "asio/detail/reactor.hpp"
-#include "asio/detail/task_io_service.hpp"
-#include "asio/detail/task_io_service_thread_info.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-struct task_io_service::task_cleanup
-{
-  ~task_cleanup()
-  {
-    if (this_thread_->private_outstanding_work > 0)
-    {
-      asio::detail::increment(
-          task_io_service_->outstanding_work_,
-          this_thread_->private_outstanding_work);
-    }
-    this_thread_->private_outstanding_work = 0;
-
-    // Enqueue the completed operations and reinsert the task at the end of
-    // the operation queue.
-    lock_->lock();
-    task_io_service_->task_interrupted_ = true;
-    task_io_service_->op_queue_.push(this_thread_->private_op_queue);
-    task_io_service_->op_queue_.push(&task_io_service_->task_operation_);
-  }
-
-  task_io_service* task_io_service_;
-  mutex::scoped_lock* lock_;
-  thread_info* this_thread_;
-};
-
-struct task_io_service::work_cleanup
-{
-  ~work_cleanup()
-  {
-    if (this_thread_->private_outstanding_work > 1)
-    {
-      asio::detail::increment(
-          task_io_service_->outstanding_work_,
-          this_thread_->private_outstanding_work - 1);
-    }
-    else if (this_thread_->private_outstanding_work < 1)
-    {
-      task_io_service_->work_finished();
-    }
-    this_thread_->private_outstanding_work = 0;
-
-#if defined(ASIO_HAS_THREADS)
-    if (!this_thread_->private_op_queue.empty())
-    {
-      lock_->lock();
-      task_io_service_->op_queue_.push(this_thread_->private_op_queue);
-    }
-#endif // defined(ASIO_HAS_THREADS)
-  }
-
-  task_io_service* task_io_service_;
-  mutex::scoped_lock* lock_;
-  thread_info* this_thread_;
-};
-
-task_io_service::task_io_service(
-    asio::io_service& io_service, std::size_t concurrency_hint)
-  : asio::detail::service_base<task_io_service>(io_service),
-    one_thread_(concurrency_hint == 1),
-    mutex_(),
-    task_(0),
-    task_interrupted_(true),
-    outstanding_work_(0),
-    stopped_(false),
-    shutdown_(false)
-{
-  ASIO_HANDLER_TRACKING_INIT;
-}
-
-void task_io_service::shutdown_service()
-{
-  mutex::scoped_lock lock(mutex_);
-  shutdown_ = true;
-  lock.unlock();
-
-  // Destroy handler objects.
-  while (!op_queue_.empty())
-  {
-    operation* o = op_queue_.front();
-    op_queue_.pop();
-    if (o != &task_operation_)
-      o->destroy();
-  }
-
-  // Reset to initial state.
-  task_ = 0;
-}
-
-void task_io_service::init_task()
-{
-  mutex::scoped_lock lock(mutex_);
-  if (!shutdown_ && !task_)
-  {
-    task_ = &use_service<reactor>(this->get_io_service());
-    op_queue_.push(&task_operation_);
-    wake_one_thread_and_unlock(lock);
-  }
-}
-
-std::size_t task_io_service::run(asio::error_code& ec)
-{
-  ec = asio::error_code();
-  if (outstanding_work_ == 0)
-  {
-    stop();
-    return 0;
-  }
-
-  thread_info this_thread;
-  this_thread.private_outstanding_work = 0;
-  thread_call_stack::context ctx(this, this_thread);
-
-  mutex::scoped_lock lock(mutex_);
-
-  std::size_t n = 0;
-  for (; do_run_one(lock, this_thread, ec); lock.lock())
-    if (n != (std::numeric_limits<std::size_t>::max)())
-      ++n;
-  return n;
-}
-
-std::size_t task_io_service::run_one(asio::error_code& ec)
-{
-  ec = asio::error_code();
-  if (outstanding_work_ == 0)
-  {
-    stop();
-    return 0;
-  }
-
-  thread_info this_thread;
-  this_thread.private_outstanding_work = 0;
-  thread_call_stack::context ctx(this, this_thread);
-
-  mutex::scoped_lock lock(mutex_);
-
-  return do_run_one(lock, this_thread, ec);
-}
-
-std::size_t task_io_service::poll(asio::error_code& ec)
-{
-  ec = asio::error_code();
-  if (outstanding_work_ == 0)
-  {
-    stop();
-    return 0;
-  }
-
-  thread_info this_thread;
-  this_thread.private_outstanding_work = 0;
-  thread_call_stack::context ctx(this, this_thread);
-
-  mutex::scoped_lock lock(mutex_);
-
-#if defined(ASIO_HAS_THREADS)
-  // We want to support nested calls to poll() and poll_one(), so any handlers
-  // that are already on a thread-private queue need to be put on to the main
-  // queue now.
-  if (one_thread_)
-    if (thread_info* outer_thread_info = ctx.next_by_key())
-      op_queue_.push(outer_thread_info->private_op_queue);
-#endif // defined(ASIO_HAS_THREADS)
-
-  std::size_t n = 0;
-  for (; do_poll_one(lock, this_thread, ec); lock.lock())
-    if (n != (std::numeric_limits<std::size_t>::max)())
-      ++n;
-  return n;
-}
-
-std::size_t task_io_service::poll_one(asio::error_code& ec)
-{
-  ec = asio::error_code();
-  if (outstanding_work_ == 0)
-  {
-    stop();
-    return 0;
-  }
-
-  thread_info this_thread;
-  this_thread.private_outstanding_work = 0;
-  thread_call_stack::context ctx(this, this_thread);
-
-  mutex::scoped_lock lock(mutex_);
-
-#if defined(ASIO_HAS_THREADS)
-  // We want to support nested calls to poll() and poll_one(), so any handlers
-  // that are already on a thread-private queue need to be put on to the main
-  // queue now.
-  if (one_thread_)
-    if (thread_info* outer_thread_info = ctx.next_by_key())
-      op_queue_.push(outer_thread_info->private_op_queue);
-#endif // defined(ASIO_HAS_THREADS)
-
-  return do_poll_one(lock, this_thread, ec);
-}
-
-void task_io_service::stop()
-{
-  mutex::scoped_lock lock(mutex_);
-  stop_all_threads(lock);
-}
-
-bool task_io_service::stopped() const
-{
-  mutex::scoped_lock lock(mutex_);
-  return stopped_;
-}
-
-void task_io_service::reset()
-{
-  mutex::scoped_lock lock(mutex_);
-  stopped_ = false;
-}
-
-void task_io_service::post_immediate_completion(
-    task_io_service::operation* op, bool is_continuation)
-{
-#if defined(ASIO_HAS_THREADS)
-  if (one_thread_ || is_continuation)
-  {
-    if (thread_info* this_thread = thread_call_stack::contains(this))
-    {
-      ++this_thread->private_outstanding_work;
-      this_thread->private_op_queue.push(op);
-      return;
-    }
-  }
-#else // defined(ASIO_HAS_THREADS)
-  (void)is_continuation;
-#endif // defined(ASIO_HAS_THREADS)
-
-  work_started();
-  mutex::scoped_lock lock(mutex_);
-  op_queue_.push(op);
-  wake_one_thread_and_unlock(lock);
-}
-
-void task_io_service::post_deferred_completion(task_io_service::operation* op)
-{
-#if defined(ASIO_HAS_THREADS)
-  if (one_thread_)
-  {
-    if (thread_info* this_thread = thread_call_stack::contains(this))
-    {
-      this_thread->private_op_queue.push(op);
-      return;
-    }
-  }
-#endif // defined(ASIO_HAS_THREADS)
-
-  mutex::scoped_lock lock(mutex_);
-  op_queue_.push(op);
-  wake_one_thread_and_unlock(lock);
-}
-
-void task_io_service::post_deferred_completions(
-    op_queue<task_io_service::operation>& ops)
-{
-  if (!ops.empty())
-  {
-#if defined(ASIO_HAS_THREADS)
-    if (one_thread_)
-    {
-      if (thread_info* this_thread = thread_call_stack::contains(this))
-      {
-        this_thread->private_op_queue.push(ops);
-        return;
-      }
-    }
-#endif // defined(ASIO_HAS_THREADS)
-
-    mutex::scoped_lock lock(mutex_);
-    op_queue_.push(ops);
-    wake_one_thread_and_unlock(lock);
-  }
-}
-
-void task_io_service::do_dispatch(
-    task_io_service::operation* op)
-{
-  work_started();
-  mutex::scoped_lock lock(mutex_);
-  op_queue_.push(op);
-  wake_one_thread_and_unlock(lock);
-}
-
-void task_io_service::abandon_operations(
-    op_queue<task_io_service::operation>& ops)
-{
-  op_queue<task_io_service::operation> ops2;
-  ops2.push(ops);
-}
-
-std::size_t task_io_service::do_run_one(mutex::scoped_lock& lock,
-    task_io_service::thread_info& this_thread,
-    const asio::error_code& ec)
-{
-  while (!stopped_)
-  {
-    if (!op_queue_.empty())
-    {
-      // Prepare to execute first handler from queue.
-      operation* o = op_queue_.front();
-      op_queue_.pop();
-      bool more_handlers = (!op_queue_.empty());
-
-      if (o == &task_operation_)
-      {
-        task_interrupted_ = more_handlers;
-
-        if (more_handlers && !one_thread_)
-          wakeup_event_.unlock_and_signal_one(lock);
-        else
-          lock.unlock();
-
-        task_cleanup on_exit = { this, &lock, &this_thread };
-        (void)on_exit;
-
-        // Run the task. May throw an exception. Only block if the operation
-        // queue is empty and we're not polling, otherwise we want to return
-        // as soon as possible.
-        task_->run(!more_handlers, this_thread.private_op_queue);
-      }
-      else
-      {
-        std::size_t task_result = o->task_result_;
-
-        if (more_handlers && !one_thread_)
-          wake_one_thread_and_unlock(lock);
-        else
-          lock.unlock();
-
-        // Ensure the count of outstanding work is decremented on block exit.
-        work_cleanup on_exit = { this, &lock, &this_thread };
-        (void)on_exit;
-
-        // Complete the operation. May throw an exception. Deletes the object.
-        o->complete(*this, ec, task_result);
-
-        return 1;
-      }
-    }
-    else
-    {
-      wakeup_event_.clear(lock);
-      wakeup_event_.wait(lock);
-    }
-  }
-
-  return 0;
-}
-
-std::size_t task_io_service::do_poll_one(mutex::scoped_lock& lock,
-    task_io_service::thread_info& this_thread,
-    const asio::error_code& ec)
-{
-  if (stopped_)
-    return 0;
-
-  operation* o = op_queue_.front();
-  if (o == &task_operation_)
-  {
-    op_queue_.pop();
-    lock.unlock();
-
-    {
-      task_cleanup c = { this, &lock, &this_thread };
-      (void)c;
-
-      // Run the task. May throw an exception. Only block if the operation
-      // queue is empty and we're not polling, otherwise we want to return
-      // as soon as possible.
-      task_->run(false, this_thread.private_op_queue);
-    }
-
-    o = op_queue_.front();
-    if (o == &task_operation_)
-    {
-      wakeup_event_.maybe_unlock_and_signal_one(lock);
-      return 0;
-    }
-  }
-
-  if (o == 0)
-    return 0;
-
-  op_queue_.pop();
-  bool more_handlers = (!op_queue_.empty());
-
-  std::size_t task_result = o->task_result_;
-
-  if (more_handlers && !one_thread_)
-    wake_one_thread_and_unlock(lock);
-  else
-    lock.unlock();
-
-  // Ensure the count of outstanding work is decremented on block exit.
-  work_cleanup on_exit = { this, &lock, &this_thread };
-  (void)on_exit;
-
-  // Complete the operation. May throw an exception. Deletes the object.
-  o->complete(*this, ec, task_result);
-
-  return 1;
-}
-
-void task_io_service::stop_all_threads(
-    mutex::scoped_lock& lock)
-{
-  stopped_ = true;
-  wakeup_event_.signal_all(lock);
-
-  if (!task_interrupted_ && task_)
-  {
-    task_interrupted_ = true;
-    task_->interrupt();
-  }
-}
-
-void task_io_service::wake_one_thread_and_unlock(
-    mutex::scoped_lock& lock)
-{
-  if (!wakeup_event_.maybe_unlock_and_signal_one(lock))
-  {
-    if (!task_interrupted_ && task_)
-    {
-      task_interrupted_ = true;
-      task_->interrupt();
-    }
-    lock.unlock();
-  }
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_IMPL_TASK_IO_SERVICE_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/throw_error.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/throw_error.ipp
deleted file mode 100644
index 0e327d0..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/throw_error.ipp
+++ /dev/null
@@ -1,60 +0,0 @@
-//
-// detail/impl/throw_error.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_THROW_ERROR_IPP
-#define ASIO_DETAIL_IMPL_THROW_ERROR_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/detail/throw_exception.hpp"
-#include "asio/system_error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-void do_throw_error(const asio::error_code& err)
-{
-  asio::system_error e(err);
-  asio::detail::throw_exception(e);
-}
-
-void do_throw_error(const asio::error_code& err, const char* location)
-{
-  // boostify: non-boost code starts here
-#if defined(ASIO_MSVC) && defined(ASIO_HAS_STD_SYSTEM_ERROR)
-  // Microsoft's implementation of std::system_error is non-conformant in that
-  // it ignores the error code's message when a "what" string is supplied. We'll
-  // work around this by explicitly formatting the "what" string.
-  std::string what_msg = location;
-  what_msg += ": ";
-  what_msg += err.message();
-  asio::system_error e(err, what_msg);
-  asio::detail::throw_exception(e);
-#else // defined(ASIO_MSVC) && defined(ASIO_HAS_STD_SYSTEM_ERROR)
-  // boostify: non-boost code ends here
-  asio::system_error e(err, location);
-  asio::detail::throw_exception(e);
-  // boostify: non-boost code starts here
-#endif // defined(ASIO_MSVC) && defined(ASIO_HAS_STD_SYSTEM_ERROR)
-  // boostify: non-boost code ends here
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_IMPL_THROW_ERROR_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/timer_queue_ptime.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/timer_queue_ptime.ipp
deleted file mode 100644
index 3a396ee..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/timer_queue_ptime.ipp
+++ /dev/null
@@ -1,84 +0,0 @@
-//
-// detail/impl/timer_queue_ptime.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_TIMER_QUEUE_PTIME_IPP
-#define ASIO_DETAIL_IMPL_TIMER_QUEUE_PTIME_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/timer_queue_ptime.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-#if defined(ASIO_HAS_BOOST_DATE_TIME)
-
-namespace asio {
-namespace detail {
-
-timer_queue<time_traits<boost::posix_time::ptime> >::timer_queue()
-{
-}
-
-timer_queue<time_traits<boost::posix_time::ptime> >::~timer_queue()
-{
-}
-
-bool timer_queue<time_traits<boost::posix_time::ptime> >::enqueue_timer(
-    const time_type& time, per_timer_data& timer, wait_op* op)
-{
-  return impl_.enqueue_timer(time, timer, op);
-}
-
-bool timer_queue<time_traits<boost::posix_time::ptime> >::empty() const
-{
-  return impl_.empty();
-}
-
-long timer_queue<time_traits<boost::posix_time::ptime> >::wait_duration_msec(
-    long max_duration) const
-{
-  return impl_.wait_duration_msec(max_duration);
-}
-
-long timer_queue<time_traits<boost::posix_time::ptime> >::wait_duration_usec(
-    long max_duration) const
-{
-  return impl_.wait_duration_usec(max_duration);
-}
-
-void timer_queue<time_traits<boost::posix_time::ptime> >::get_ready_timers(
-    op_queue<operation>& ops)
-{
-  impl_.get_ready_timers(ops);
-}
-
-void timer_queue<time_traits<boost::posix_time::ptime> >::get_all_timers(
-    op_queue<operation>& ops)
-{
-  impl_.get_all_timers(ops);
-}
-
-std::size_t timer_queue<time_traits<boost::posix_time::ptime> >::cancel_timer(
-    per_timer_data& timer, op_queue<operation>& ops, std::size_t max_cancelled)
-{
-  return impl_.cancel_timer(timer, ops, max_cancelled);
-}
-
-} // namespace detail
-} // namespace asio
-
-#endif // defined(ASIO_HAS_BOOST_DATE_TIME)
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_IMPL_TIMER_QUEUE_PTIME_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/timer_queue_set.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/timer_queue_set.ipp
deleted file mode 100644
index b76e238..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/timer_queue_set.ipp
+++ /dev/null
@@ -1,101 +0,0 @@
-//
-// detail/impl/timer_queue_set.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_TIMER_QUEUE_SET_IPP
-#define ASIO_DETAIL_IMPL_TIMER_QUEUE_SET_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/timer_queue_set.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-timer_queue_set::timer_queue_set()
-  : first_(0)
-{
-}
-
-void timer_queue_set::insert(timer_queue_base* q)
-{
-  q->next_ = first_;
-  first_ = q;
-}
-
-void timer_queue_set::erase(timer_queue_base* q)
-{
-  if (first_)
-  {
-    if (q == first_)
-    {
-      first_ = q->next_;
-      q->next_ = 0;
-      return;
-    }
-
-    for (timer_queue_base* p = first_; p->next_; p = p->next_)
-    {
-      if (p->next_ == q)
-      {
-        p->next_ = q->next_;
-        q->next_ = 0;
-        return;
-      }
-    }
-  }
-}
-
-bool timer_queue_set::all_empty() const
-{
-  for (timer_queue_base* p = first_; p; p = p->next_)
-    if (!p->empty())
-      return false;
-  return true;
-}
-
-long timer_queue_set::wait_duration_msec(long max_duration) const
-{
-  long min_duration = max_duration;
-  for (timer_queue_base* p = first_; p; p = p->next_)
-    min_duration = p->wait_duration_msec(min_duration);
-  return min_duration;
-}
-
-long timer_queue_set::wait_duration_usec(long max_duration) const
-{
-  long min_duration = max_duration;
-  for (timer_queue_base* p = first_; p; p = p->next_)
-    min_duration = p->wait_duration_usec(min_duration);
-  return min_duration;
-}
-
-void timer_queue_set::get_ready_timers(op_queue<operation>& ops)
-{
-  for (timer_queue_base* p = first_; p; p = p->next_)
-    p->get_ready_timers(ops);
-}
-
-void timer_queue_set::get_all_timers(op_queue<operation>& ops)
-{
-  for (timer_queue_base* p = first_; p; p = p->next_)
-    p->get_all_timers(ops);
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_IMPL_TIMER_QUEUE_SET_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/win_event.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/win_event.ipp
deleted file mode 100644
index 38bfe52..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/win_event.ipp
+++ /dev/null
@@ -1,67 +0,0 @@
-//
-// detail/win_event.ipp
-// ~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_WIN_EVENT_IPP
-#define ASIO_DETAIL_IMPL_WIN_EVENT_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS)
-
-#include "asio/detail/throw_error.hpp"
-#include "asio/detail/win_event.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-win_event::win_event()
-  : state_(0)
-{
-  events_[0] = ::CreateEvent(0, true, false, 0);
-  if (!events_[0])
-  {
-    DWORD last_error = ::GetLastError();
-    asio::error_code ec(last_error,
-        asio::error::get_system_category());
-    asio::detail::throw_error(ec, "event");
-  }
-
-  events_[1] = ::CreateEvent(0, false, false, 0);
-  if (!events_[1])
-  {
-    DWORD last_error = ::GetLastError();
-    ::CloseHandle(events_[0]);
-    asio::error_code ec(last_error,
-        asio::error::get_system_category());
-    asio::detail::throw_error(ec, "event");
-  }
-}
-
-win_event::~win_event()
-{
-  ::CloseHandle(events_[0]);
-  ::CloseHandle(events_[1]);
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS)
-
-#endif // ASIO_DETAIL_IMPL_WIN_EVENT_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/win_iocp_handle_service.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/win_iocp_handle_service.ipp
deleted file mode 100644
index b484f7b..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/win_iocp_handle_service.ipp
+++ /dev/null
@@ -1,525 +0,0 @@
-//
-// detail/impl/win_iocp_handle_service.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_WIN_IOCP_HANDLE_SERVICE_IPP
-#define ASIO_DETAIL_IMPL_WIN_IOCP_HANDLE_SERVICE_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_IOCP)
-
-#include "asio/detail/win_iocp_handle_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class win_iocp_handle_service::overlapped_wrapper
-  : public OVERLAPPED
-{
-public:
-  explicit overlapped_wrapper(asio::error_code& ec)
-  {
-    Internal = 0;
-    InternalHigh = 0;
-    Offset = 0;
-    OffsetHigh = 0;
-
-    // Create a non-signalled manual-reset event, for GetOverlappedResult.
-    hEvent = ::CreateEvent(0, TRUE, FALSE, 0);
-    if (hEvent)
-    {
-      // As documented in GetQueuedCompletionStatus, setting the low order
-      // bit of this event prevents our synchronous writes from being treated
-      // as completion port events.
-      DWORD_PTR tmp = reinterpret_cast<DWORD_PTR>(hEvent);
-      hEvent = reinterpret_cast<HANDLE>(tmp | 1);
-    }
-    else
-    {
-      DWORD last_error = ::GetLastError();
-      ec = asio::error_code(last_error,
-          asio::error::get_system_category());
-    }
-  }
-
-  ~overlapped_wrapper()
-  {
-    if (hEvent)
-    {
-      ::CloseHandle(hEvent);
-    }
-  }
-};
-
-win_iocp_handle_service::win_iocp_handle_service(
-    asio::io_service& io_service)
-  : iocp_service_(asio::use_service<win_iocp_io_service>(io_service)),
-    mutex_(),
-    impl_list_(0)
-{
-}
-
-void win_iocp_handle_service::shutdown_service()
-{
-  // Close all implementations, causing all operations to complete.
-  asio::detail::mutex::scoped_lock lock(mutex_);
-  implementation_type* impl = impl_list_;
-  while (impl)
-  {
-    close_for_destruction(*impl);
-    impl = impl->next_;
-  }
-}
-
-void win_iocp_handle_service::construct(
-    win_iocp_handle_service::implementation_type& impl)
-{
-  impl.handle_ = INVALID_HANDLE_VALUE;
-  impl.safe_cancellation_thread_id_ = 0;
-
-  // Insert implementation into linked list of all implementations.
-  asio::detail::mutex::scoped_lock lock(mutex_);
-  impl.next_ = impl_list_;
-  impl.prev_ = 0;
-  if (impl_list_)
-    impl_list_->prev_ = &impl;
-  impl_list_ = &impl;
-}
-
-void win_iocp_handle_service::move_construct(
-    win_iocp_handle_service::implementation_type& impl,
-    win_iocp_handle_service::implementation_type& other_impl)
-{
-  impl.handle_ = other_impl.handle_;
-  other_impl.handle_ = INVALID_HANDLE_VALUE;
-
-  impl.safe_cancellation_thread_id_ = other_impl.safe_cancellation_thread_id_;
-  other_impl.safe_cancellation_thread_id_ = 0;
-
-  // Insert implementation into linked list of all implementations.
-  asio::detail::mutex::scoped_lock lock(mutex_);
-  impl.next_ = impl_list_;
-  impl.prev_ = 0;
-  if (impl_list_)
-    impl_list_->prev_ = &impl;
-  impl_list_ = &impl;
-}
-
-void win_iocp_handle_service::move_assign(
-    win_iocp_handle_service::implementation_type& impl,
-    win_iocp_handle_service& other_service,
-    win_iocp_handle_service::implementation_type& other_impl)
-{
-  close_for_destruction(impl);
-
-  if (this != &other_service)
-  {
-    // Remove implementation from linked list of all implementations.
-    asio::detail::mutex::scoped_lock lock(mutex_);
-    if (impl_list_ == &impl)
-      impl_list_ = impl.next_;
-    if (impl.prev_)
-      impl.prev_->next_ = impl.next_;
-    if (impl.next_)
-      impl.next_->prev_= impl.prev_;
-    impl.next_ = 0;
-    impl.prev_ = 0;
-  }
-
-  impl.handle_ = other_impl.handle_;
-  other_impl.handle_ = INVALID_HANDLE_VALUE;
-
-  impl.safe_cancellation_thread_id_ = other_impl.safe_cancellation_thread_id_;
-  other_impl.safe_cancellation_thread_id_ = 0;
-
-  if (this != &other_service)
-  {
-    // Insert implementation into linked list of all implementations.
-    asio::detail::mutex::scoped_lock lock(other_service.mutex_);
-    impl.next_ = other_service.impl_list_;
-    impl.prev_ = 0;
-    if (other_service.impl_list_)
-      other_service.impl_list_->prev_ = &impl;
-    other_service.impl_list_ = &impl;
-  }
-}
-
-void win_iocp_handle_service::destroy(
-    win_iocp_handle_service::implementation_type& impl)
-{
-  close_for_destruction(impl);
-  
-  // Remove implementation from linked list of all implementations.
-  asio::detail::mutex::scoped_lock lock(mutex_);
-  if (impl_list_ == &impl)
-    impl_list_ = impl.next_;
-  if (impl.prev_)
-    impl.prev_->next_ = impl.next_;
-  if (impl.next_)
-    impl.next_->prev_= impl.prev_;
-  impl.next_ = 0;
-  impl.prev_ = 0;
-}
-
-asio::error_code win_iocp_handle_service::assign(
-    win_iocp_handle_service::implementation_type& impl,
-    const native_handle_type& handle, asio::error_code& ec)
-{
-  if (is_open(impl))
-  {
-    ec = asio::error::already_open;
-    return ec;
-  }
-
-  if (iocp_service_.register_handle(handle, ec))
-    return ec;
-
-  impl.handle_ = handle;
-  ec = asio::error_code();
-  return ec;
-}
-
-asio::error_code win_iocp_handle_service::close(
-    win_iocp_handle_service::implementation_type& impl,
-    asio::error_code& ec)
-{
-  if (is_open(impl))
-  {
-    ASIO_HANDLER_OPERATION(("handle", &impl, "close"));
-
-    if (!::CloseHandle(impl.handle_))
-    {
-      DWORD last_error = ::GetLastError();
-      ec = asio::error_code(last_error,
-          asio::error::get_system_category());
-    }
-    else
-    {
-      ec = asio::error_code();
-    }
-
-    impl.handle_ = INVALID_HANDLE_VALUE;
-    impl.safe_cancellation_thread_id_ = 0;
-  }
-  else
-  {
-    ec = asio::error_code();
-  }
-
-  return ec;
-}
-
-asio::error_code win_iocp_handle_service::cancel(
-    win_iocp_handle_service::implementation_type& impl,
-    asio::error_code& ec)
-{
-  if (!is_open(impl))
-  {
-    ec = asio::error::bad_descriptor;
-    return ec;
-  }
-
-  ASIO_HANDLER_OPERATION(("handle", &impl, "cancel"));
-
-  if (FARPROC cancel_io_ex_ptr = ::GetProcAddress(
-        ::GetModuleHandleA("KERNEL32"), "CancelIoEx"))
-  {
-    // The version of Windows supports cancellation from any thread.
-    typedef BOOL (WINAPI* cancel_io_ex_t)(HANDLE, LPOVERLAPPED);
-    cancel_io_ex_t cancel_io_ex = (cancel_io_ex_t)cancel_io_ex_ptr;
-    if (!cancel_io_ex(impl.handle_, 0))
-    {
-      DWORD last_error = ::GetLastError();
-      if (last_error == ERROR_NOT_FOUND)
-      {
-        // ERROR_NOT_FOUND means that there were no operations to be
-        // cancelled. We swallow this error to match the behaviour on other
-        // platforms.
-        ec = asio::error_code();
-      }
-      else
-      {
-        ec = asio::error_code(last_error,
-            asio::error::get_system_category());
-      }
-    }
-    else
-    {
-      ec = asio::error_code();
-    }
-  }
-  else if (impl.safe_cancellation_thread_id_ == 0)
-  {
-    // No operations have been started, so there's nothing to cancel.
-    ec = asio::error_code();
-  }
-  else if (impl.safe_cancellation_thread_id_ == ::GetCurrentThreadId())
-  {
-    // Asynchronous operations have been started from the current thread only,
-    // so it is safe to try to cancel them using CancelIo.
-    if (!::CancelIo(impl.handle_))
-    {
-      DWORD last_error = ::GetLastError();
-      ec = asio::error_code(last_error,
-          asio::error::get_system_category());
-    }
-    else
-    {
-      ec = asio::error_code();
-    }
-  }
-  else
-  {
-    // Asynchronous operations have been started from more than one thread,
-    // so cancellation is not safe.
-    ec = asio::error::operation_not_supported;
-  }
-
-  return ec;
-}
-
-size_t win_iocp_handle_service::do_write(
-    win_iocp_handle_service::implementation_type& impl, uint64_t offset,
-    const asio::const_buffer& buffer, asio::error_code& ec)
-{
-  if (!is_open(impl))
-  {
-    ec = asio::error::bad_descriptor;
-    return 0;
-  }
-
-  // A request to write 0 bytes on a handle is a no-op.
-  if (asio::buffer_size(buffer) == 0)
-  {
-    ec = asio::error_code();
-    return 0;
-  }
-
-  overlapped_wrapper overlapped(ec);
-  if (ec)
-  {
-    return 0;
-  }
-
-  // Write the data. 
-  overlapped.Offset = offset & 0xFFFFFFFF;
-  overlapped.OffsetHigh = (offset >> 32) & 0xFFFFFFFF;
-  BOOL ok = ::WriteFile(impl.handle_,
-      asio::buffer_cast<LPCVOID>(buffer),
-      static_cast<DWORD>(asio::buffer_size(buffer)), 0, &overlapped);
-  if (!ok) 
-  {
-    DWORD last_error = ::GetLastError();
-    if (last_error != ERROR_IO_PENDING)
-    {
-      ec = asio::error_code(last_error,
-          asio::error::get_system_category());
-      return 0;
-    }
-  }
-
-  // Wait for the operation to complete.
-  DWORD bytes_transferred = 0;
-  ok = ::GetOverlappedResult(impl.handle_,
-      &overlapped, &bytes_transferred, TRUE);
-  if (!ok)
-  {
-    DWORD last_error = ::GetLastError();
-    ec = asio::error_code(last_error,
-        asio::error::get_system_category());
-    return 0;
-  }
-
-  ec = asio::error_code();
-  return bytes_transferred;
-}
-
-void win_iocp_handle_service::start_write_op(
-    win_iocp_handle_service::implementation_type& impl, uint64_t offset,
-    const asio::const_buffer& buffer, operation* op)
-{
-  update_cancellation_thread_id(impl);
-  iocp_service_.work_started();
-
-  if (!is_open(impl))
-  {
-    iocp_service_.on_completion(op, asio::error::bad_descriptor);
-  }
-  else if (asio::buffer_size(buffer) == 0)
-  {
-    // A request to write 0 bytes on a handle is a no-op.
-    iocp_service_.on_completion(op);
-  }
-  else
-  {
-    DWORD bytes_transferred = 0;
-    op->Offset = offset & 0xFFFFFFFF;
-    op->OffsetHigh = (offset >> 32) & 0xFFFFFFFF;
-    BOOL ok = ::WriteFile(impl.handle_,
-        asio::buffer_cast<LPCVOID>(buffer),
-        static_cast<DWORD>(asio::buffer_size(buffer)),
-        &bytes_transferred, op);
-    DWORD last_error = ::GetLastError();
-    if (!ok && last_error != ERROR_IO_PENDING
-        && last_error != ERROR_MORE_DATA)
-    {
-      iocp_service_.on_completion(op, last_error, bytes_transferred);
-    }
-    else
-    {
-      iocp_service_.on_pending(op);
-    }
-  }
-}
-
-size_t win_iocp_handle_service::do_read(
-    win_iocp_handle_service::implementation_type& impl, uint64_t offset,
-    const asio::mutable_buffer& buffer, asio::error_code& ec)
-{
-  if (!is_open(impl))
-  {
-    ec = asio::error::bad_descriptor;
-    return 0;
-  }
-  
-  // A request to read 0 bytes on a stream handle is a no-op.
-  if (asio::buffer_size(buffer) == 0)
-  {
-    ec = asio::error_code();
-    return 0;
-  }
-
-  overlapped_wrapper overlapped(ec);
-  if (ec)
-  {
-    return 0;
-  }
-
-  // Read some data.
-  overlapped.Offset = offset & 0xFFFFFFFF;
-  overlapped.OffsetHigh = (offset >> 32) & 0xFFFFFFFF;
-  BOOL ok = ::ReadFile(impl.handle_,
-      asio::buffer_cast<LPVOID>(buffer),
-      static_cast<DWORD>(asio::buffer_size(buffer)), 0, &overlapped);
-  if (!ok) 
-  {
-    DWORD last_error = ::GetLastError();
-    if (last_error != ERROR_IO_PENDING && last_error != ERROR_MORE_DATA)
-    {
-      if (last_error == ERROR_HANDLE_EOF)
-      {
-        ec = asio::error::eof;
-      }
-      else
-      {
-        ec = asio::error_code(last_error,
-            asio::error::get_system_category());
-      }
-      return 0;
-    }
-  }
-
-  // Wait for the operation to complete.
-  DWORD bytes_transferred = 0;
-  ok = ::GetOverlappedResult(impl.handle_,
-      &overlapped, &bytes_transferred, TRUE);
-  if (!ok)
-  {
-    DWORD last_error = ::GetLastError();
-    if (last_error == ERROR_HANDLE_EOF)
-    {
-      ec = asio::error::eof;
-    }
-    else
-    {
-      ec = asio::error_code(last_error,
-          asio::error::get_system_category());
-    }
-    return (last_error == ERROR_MORE_DATA) ? bytes_transferred : 0;
-  }
-
-  ec = asio::error_code();
-  return bytes_transferred;
-}
-
-void win_iocp_handle_service::start_read_op(
-    win_iocp_handle_service::implementation_type& impl, uint64_t offset,
-    const asio::mutable_buffer& buffer, operation* op)
-{
-  update_cancellation_thread_id(impl);
-  iocp_service_.work_started();
-
-  if (!is_open(impl))
-  {
-    iocp_service_.on_completion(op, asio::error::bad_descriptor);
-  }
-  else if (asio::buffer_size(buffer) == 0)
-  {
-    // A request to read 0 bytes on a handle is a no-op.
-    iocp_service_.on_completion(op);
-  }
-  else
-  {
-    DWORD bytes_transferred = 0;
-    op->Offset = offset & 0xFFFFFFFF;
-    op->OffsetHigh = (offset >> 32) & 0xFFFFFFFF;
-    BOOL ok = ::ReadFile(impl.handle_,
-        asio::buffer_cast<LPVOID>(buffer),
-        static_cast<DWORD>(asio::buffer_size(buffer)),
-        &bytes_transferred, op);
-    DWORD last_error = ::GetLastError();
-    if (!ok && last_error != ERROR_IO_PENDING
-        && last_error != ERROR_MORE_DATA)
-    {
-      iocp_service_.on_completion(op, last_error, bytes_transferred);
-    }
-    else
-    {
-      iocp_service_.on_pending(op);
-    }
-  }
-}
-
-void win_iocp_handle_service::update_cancellation_thread_id(
-    win_iocp_handle_service::implementation_type& impl)
-{
-  if (impl.safe_cancellation_thread_id_ == 0)
-    impl.safe_cancellation_thread_id_ = ::GetCurrentThreadId();
-  else if (impl.safe_cancellation_thread_id_ != ::GetCurrentThreadId())
-    impl.safe_cancellation_thread_id_ = ~DWORD(0);
-}
-
-void win_iocp_handle_service::close_for_destruction(implementation_type& impl)
-{
-  if (is_open(impl))
-  {
-    ASIO_HANDLER_OPERATION(("handle", &impl, "close"));
-
-    ::CloseHandle(impl.handle_);
-    impl.handle_ = INVALID_HANDLE_VALUE;
-    impl.safe_cancellation_thread_id_ = 0;
-  }
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_IMPL_WIN_IOCP_HANDLE_SERVICE_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/win_iocp_io_service.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/win_iocp_io_service.hpp
deleted file mode 100644
index faa221a..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/win_iocp_io_service.hpp
+++ /dev/null
@@ -1,130 +0,0 @@
-//
-// detail/impl/win_iocp_io_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_WIN_IOCP_IO_SERVICE_HPP
-#define ASIO_DETAIL_IMPL_WIN_IOCP_IO_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_IOCP)
-
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/completion_handler.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Handler>
-void win_iocp_io_service::dispatch(Handler& handler)
-{
-  if (thread_call_stack::contains(this))
-  {
-    fenced_block b(fenced_block::full);
-    asio_handler_invoke_helpers::invoke(handler, handler);
-  }
-  else
-  {
-    // Allocate and construct an operation to wrap the handler.
-    typedef completion_handler<Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(handler);
-
-    ASIO_HANDLER_CREATION((p.p, "io_service", this, "dispatch"));
-
-    post_immediate_completion(p.p, false);
-    p.v = p.p = 0;
-  }
-}
-
-template <typename Handler>
-void win_iocp_io_service::post(Handler& handler)
-{
-  // Allocate and construct an operation to wrap the handler.
-  typedef completion_handler<Handler> op;
-  typename op::ptr p = { asio::detail::addressof(handler),
-    asio_handler_alloc_helpers::allocate(
-      sizeof(op), handler), 0 };
-  p.p = new (p.v) op(handler);
-
-  ASIO_HANDLER_CREATION((p.p, "io_service", this, "post"));
-
-  post_immediate_completion(p.p, false);
-  p.v = p.p = 0;
-}
-
-template <typename Time_Traits>
-void win_iocp_io_service::add_timer_queue(
-    timer_queue<Time_Traits>& queue)
-{
-  do_add_timer_queue(queue);
-}
-
-template <typename Time_Traits>
-void win_iocp_io_service::remove_timer_queue(
-    timer_queue<Time_Traits>& queue)
-{
-  do_remove_timer_queue(queue);
-}
-
-template <typename Time_Traits>
-void win_iocp_io_service::schedule_timer(timer_queue<Time_Traits>& queue,
-    const typename Time_Traits::time_type& time,
-    typename timer_queue<Time_Traits>::per_timer_data& timer, wait_op* op)
-{
-  // If the service has been shut down we silently discard the timer.
-  if (::InterlockedExchangeAdd(&shutdown_, 0) != 0)
-  {
-    post_immediate_completion(op, false);
-    return;
-  }
-
-  mutex::scoped_lock lock(dispatch_mutex_);
-
-  bool earliest = queue.enqueue_timer(time, timer, op);
-  work_started();
-  if (earliest)
-    update_timeout();
-}
-
-template <typename Time_Traits>
-std::size_t win_iocp_io_service::cancel_timer(timer_queue<Time_Traits>& queue,
-    typename timer_queue<Time_Traits>::per_timer_data& timer,
-    std::size_t max_cancelled)
-{
-  // If the service has been shut down we silently ignore the cancellation.
-  if (::InterlockedExchangeAdd(&shutdown_, 0) != 0)
-    return 0;
-
-  mutex::scoped_lock lock(dispatch_mutex_);
-  op_queue<win_iocp_operation> ops;
-  std::size_t n = queue.cancel_timer(timer, ops, max_cancelled);
-  post_deferred_completions(ops);
-  return n;
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_IMPL_WIN_IOCP_IO_SERVICE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/win_iocp_io_service.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/win_iocp_io_service.ipp
deleted file mode 100644
index 40adca0..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/win_iocp_io_service.ipp
+++ /dev/null
@@ -1,538 +0,0 @@
-//
-// detail/impl/win_iocp_io_service.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_WIN_IOCP_IO_SERVICE_IPP
-#define ASIO_DETAIL_IMPL_WIN_IOCP_IO_SERVICE_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_IOCP)
-
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/detail/cstdint.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/limits.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/detail/win_iocp_io_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-struct win_iocp_io_service::work_finished_on_block_exit
-{
-  ~work_finished_on_block_exit()
-  {
-    io_service_->work_finished();
-  }
-
-  win_iocp_io_service* io_service_;
-};
-
-struct win_iocp_io_service::timer_thread_function
-{
-  void operator()()
-  {
-    while (::InterlockedExchangeAdd(&io_service_->shutdown_, 0) == 0)
-    {
-      if (::WaitForSingleObject(io_service_->waitable_timer_.handle,
-            INFINITE) == WAIT_OBJECT_0)
-      {
-        ::InterlockedExchange(&io_service_->dispatch_required_, 1);
-        ::PostQueuedCompletionStatus(io_service_->iocp_.handle,
-            0, wake_for_dispatch, 0);
-      }
-    }
-  }
-
-  win_iocp_io_service* io_service_;
-};
-
-win_iocp_io_service::win_iocp_io_service(
-    asio::io_service& io_service, size_t concurrency_hint)
-  : asio::detail::service_base<win_iocp_io_service>(io_service),
-    iocp_(),
-    outstanding_work_(0),
-    stopped_(0),
-    stop_event_posted_(0),
-    shutdown_(0),
-    gqcs_timeout_(get_gqcs_timeout()),
-    dispatch_required_(0)
-{
-  ASIO_HANDLER_TRACKING_INIT;
-
-  iocp_.handle = ::CreateIoCompletionPort(INVALID_HANDLE_VALUE, 0, 0,
-      static_cast<DWORD>(concurrency_hint < DWORD(~0)
-        ? concurrency_hint : DWORD(~0)));
-  if (!iocp_.handle)
-  {
-    DWORD last_error = ::GetLastError();
-    asio::error_code ec(last_error,
-        asio::error::get_system_category());
-    asio::detail::throw_error(ec, "iocp");
-  }
-}
-
-void win_iocp_io_service::shutdown_service()
-{
-  ::InterlockedExchange(&shutdown_, 1);
-
-  if (timer_thread_.get())
-  {
-    LARGE_INTEGER timeout;
-    timeout.QuadPart = 1;
-    ::SetWaitableTimer(waitable_timer_.handle, &timeout, 1, 0, 0, FALSE);
-  }
-
-  while (::InterlockedExchangeAdd(&outstanding_work_, 0) > 0)
-  {
-    op_queue<win_iocp_operation> ops;
-    timer_queues_.get_all_timers(ops);
-    ops.push(completed_ops_);
-    if (!ops.empty())
-    {
-      while (win_iocp_operation* op = ops.front())
-      {
-        ops.pop();
-        ::InterlockedDecrement(&outstanding_work_);
-        op->destroy();
-      }
-    }
-    else
-    {
-      DWORD bytes_transferred = 0;
-      dword_ptr_t completion_key = 0;
-      LPOVERLAPPED overlapped = 0;
-      ::GetQueuedCompletionStatus(iocp_.handle, &bytes_transferred,
-          &completion_key, &overlapped, gqcs_timeout_);
-      if (overlapped)
-      {
-        ::InterlockedDecrement(&outstanding_work_);
-        static_cast<win_iocp_operation*>(overlapped)->destroy();
-      }
-    }
-  }
-
-  if (timer_thread_.get())
-    timer_thread_->join();
-}
-
-asio::error_code win_iocp_io_service::register_handle(
-    HANDLE handle, asio::error_code& ec)
-{
-  if (::CreateIoCompletionPort(handle, iocp_.handle, 0, 0) == 0)
-  {
-    DWORD last_error = ::GetLastError();
-    ec = asio::error_code(last_error,
-        asio::error::get_system_category());
-  }
-  else
-  {
-    ec = asio::error_code();
-  }
-  return ec;
-}
-
-size_t win_iocp_io_service::run(asio::error_code& ec)
-{
-  if (::InterlockedExchangeAdd(&outstanding_work_, 0) == 0)
-  {
-    stop();
-    ec = asio::error_code();
-    return 0;
-  }
-
-  win_iocp_thread_info this_thread;
-  thread_call_stack::context ctx(this, this_thread);
-
-  size_t n = 0;
-  while (do_one(true, ec))
-    if (n != (std::numeric_limits<size_t>::max)())
-      ++n;
-  return n;
-}
-
-size_t win_iocp_io_service::run_one(asio::error_code& ec)
-{
-  if (::InterlockedExchangeAdd(&outstanding_work_, 0) == 0)
-  {
-    stop();
-    ec = asio::error_code();
-    return 0;
-  }
-
-  win_iocp_thread_info this_thread;
-  thread_call_stack::context ctx(this, this_thread);
-
-  return do_one(true, ec);
-}
-
-size_t win_iocp_io_service::poll(asio::error_code& ec)
-{
-  if (::InterlockedExchangeAdd(&outstanding_work_, 0) == 0)
-  {
-    stop();
-    ec = asio::error_code();
-    return 0;
-  }
-
-  win_iocp_thread_info this_thread;
-  thread_call_stack::context ctx(this, this_thread);
-
-  size_t n = 0;
-  while (do_one(false, ec))
-    if (n != (std::numeric_limits<size_t>::max)())
-      ++n;
-  return n;
-}
-
-size_t win_iocp_io_service::poll_one(asio::error_code& ec)
-{
-  if (::InterlockedExchangeAdd(&outstanding_work_, 0) == 0)
-  {
-    stop();
-    ec = asio::error_code();
-    return 0;
-  }
-
-  win_iocp_thread_info this_thread;
-  thread_call_stack::context ctx(this, this_thread);
-
-  return do_one(false, ec);
-}
-
-void win_iocp_io_service::stop()
-{
-  if (::InterlockedExchange(&stopped_, 1) == 0)
-  {
-    if (::InterlockedExchange(&stop_event_posted_, 1) == 0)
-    {
-      if (!::PostQueuedCompletionStatus(iocp_.handle, 0, 0, 0))
-      {
-        DWORD last_error = ::GetLastError();
-        asio::error_code ec(last_error,
-            asio::error::get_system_category());
-        asio::detail::throw_error(ec, "pqcs");
-      }
-    }
-  }
-}
-
-void win_iocp_io_service::post_deferred_completion(win_iocp_operation* op)
-{
-  // Flag the operation as ready.
-  op->ready_ = 1;
-
-  // Enqueue the operation on the I/O completion port.
-  if (!::PostQueuedCompletionStatus(iocp_.handle, 0, 0, op))
-  {
-    // Out of resources. Put on completed queue instead.
-    mutex::scoped_lock lock(dispatch_mutex_);
-    completed_ops_.push(op);
-    ::InterlockedExchange(&dispatch_required_, 1);
-  }
-}
-
-void win_iocp_io_service::post_deferred_completions(
-    op_queue<win_iocp_operation>& ops)
-{
-  while (win_iocp_operation* op = ops.front())
-  {
-    ops.pop();
-
-    // Flag the operation as ready.
-    op->ready_ = 1;
-
-    // Enqueue the operation on the I/O completion port.
-    if (!::PostQueuedCompletionStatus(iocp_.handle, 0, 0, op))
-    {
-      // Out of resources. Put on completed queue instead.
-      mutex::scoped_lock lock(dispatch_mutex_);
-      completed_ops_.push(op);
-      completed_ops_.push(ops);
-      ::InterlockedExchange(&dispatch_required_, 1);
-    }
-  }
-}
-
-void win_iocp_io_service::abandon_operations(
-    op_queue<win_iocp_operation>& ops)
-{
-  while (win_iocp_operation* op = ops.front())
-  {
-    ops.pop();
-    ::InterlockedDecrement(&outstanding_work_);
-    op->destroy();
-  }
-}
-
-void win_iocp_io_service::on_pending(win_iocp_operation* op)
-{
-  if (::InterlockedCompareExchange(&op->ready_, 1, 0) == 1)
-  {
-    // Enqueue the operation on the I/O completion port.
-    if (!::PostQueuedCompletionStatus(iocp_.handle,
-          0, overlapped_contains_result, op))
-    {
-      // Out of resources. Put on completed queue instead.
-      mutex::scoped_lock lock(dispatch_mutex_);
-      completed_ops_.push(op);
-      ::InterlockedExchange(&dispatch_required_, 1);
-    }
-  }
-}
-
-void win_iocp_io_service::on_completion(win_iocp_operation* op,
-    DWORD last_error, DWORD bytes_transferred)
-{
-  // Flag that the operation is ready for invocation.
-  op->ready_ = 1;
-
-  // Store results in the OVERLAPPED structure.
-  op->Internal = reinterpret_cast<ulong_ptr_t>(
-      &asio::error::get_system_category());
-  op->Offset = last_error;
-  op->OffsetHigh = bytes_transferred;
-
-  // Enqueue the operation on the I/O completion port.
-  if (!::PostQueuedCompletionStatus(iocp_.handle,
-        0, overlapped_contains_result, op))
-  {
-    // Out of resources. Put on completed queue instead.
-    mutex::scoped_lock lock(dispatch_mutex_);
-    completed_ops_.push(op);
-    ::InterlockedExchange(&dispatch_required_, 1);
-  }
-}
-
-void win_iocp_io_service::on_completion(win_iocp_operation* op,
-    const asio::error_code& ec, DWORD bytes_transferred)
-{
-  // Flag that the operation is ready for invocation.
-  op->ready_ = 1;
-
-  // Store results in the OVERLAPPED structure.
-  op->Internal = reinterpret_cast<ulong_ptr_t>(&ec.category());
-  op->Offset = ec.value();
-  op->OffsetHigh = bytes_transferred;
-
-  // Enqueue the operation on the I/O completion port.
-  if (!::PostQueuedCompletionStatus(iocp_.handle,
-        0, overlapped_contains_result, op))
-  {
-    // Out of resources. Put on completed queue instead.
-    mutex::scoped_lock lock(dispatch_mutex_);
-    completed_ops_.push(op);
-    ::InterlockedExchange(&dispatch_required_, 1);
-  }
-}
-
-size_t win_iocp_io_service::do_one(bool block, asio::error_code& ec)
-{
-  for (;;)
-  {
-    // Try to acquire responsibility for dispatching timers and completed ops.
-    if (::InterlockedCompareExchange(&dispatch_required_, 0, 1) == 1)
-    {
-      mutex::scoped_lock lock(dispatch_mutex_);
-
-      // Dispatch pending timers and operations.
-      op_queue<win_iocp_operation> ops;
-      ops.push(completed_ops_);
-      timer_queues_.get_ready_timers(ops);
-      post_deferred_completions(ops);
-      update_timeout();
-    }
-
-    // Get the next operation from the queue.
-    DWORD bytes_transferred = 0;
-    dword_ptr_t completion_key = 0;
-    LPOVERLAPPED overlapped = 0;
-    ::SetLastError(0);
-    BOOL ok = ::GetQueuedCompletionStatus(iocp_.handle, &bytes_transferred,
-        &completion_key, &overlapped, block ? gqcs_timeout_ : 0);
-    DWORD last_error = ::GetLastError();
-
-    if (overlapped)
-    {
-      win_iocp_operation* op = static_cast<win_iocp_operation*>(overlapped);
-      asio::error_code result_ec(last_error,
-          asio::error::get_system_category());
-
-      // We may have been passed the last_error and bytes_transferred in the
-      // OVERLAPPED structure itself.
-      if (completion_key == overlapped_contains_result)
-      {
-        result_ec = asio::error_code(static_cast<int>(op->Offset),
-            *reinterpret_cast<asio::error_category*>(op->Internal));
-        bytes_transferred = op->OffsetHigh;
-      }
-
-      // Otherwise ensure any result has been saved into the OVERLAPPED
-      // structure.
-      else
-      {
-        op->Internal = reinterpret_cast<ulong_ptr_t>(&result_ec.category());
-        op->Offset = result_ec.value();
-        op->OffsetHigh = bytes_transferred;
-      }
-
-      // Dispatch the operation only if ready. The operation may not be ready
-      // if the initiating function (e.g. a call to WSARecv) has not yet
-      // returned. This is because the initiating function still wants access
-      // to the operation's OVERLAPPED structure.
-      if (::InterlockedCompareExchange(&op->ready_, 1, 0) == 1)
-      {
-        // Ensure the count of outstanding work is decremented on block exit.
-        work_finished_on_block_exit on_exit = { this };
-        (void)on_exit;
-
-        op->complete(*this, result_ec, bytes_transferred);
-        ec = asio::error_code();
-        return 1;
-      }
-    }
-    else if (!ok)
-    {
-      if (last_error != WAIT_TIMEOUT)
-      {
-        ec = asio::error_code(last_error,
-            asio::error::get_system_category());
-        return 0;
-      }
-
-      // If we're not polling we need to keep going until we get a real handler.
-      if (block)
-        continue;
-
-      ec = asio::error_code();
-      return 0;
-    }
-    else if (completion_key == wake_for_dispatch)
-    {
-      // We have been woken up to try to acquire responsibility for dispatching
-      // timers and completed operations.
-    }
-    else
-    {
-      // Indicate that there is no longer an in-flight stop event.
-      ::InterlockedExchange(&stop_event_posted_, 0);
-
-      // The stopped_ flag is always checked to ensure that any leftover
-      // stop events from a previous run invocation are ignored.
-      if (::InterlockedExchangeAdd(&stopped_, 0) != 0)
-      {
-        // Wake up next thread that is blocked on GetQueuedCompletionStatus.
-        if (::InterlockedExchange(&stop_event_posted_, 1) == 0)
-        {
-          if (!::PostQueuedCompletionStatus(iocp_.handle, 0, 0, 0))
-          {
-            last_error = ::GetLastError();
-            ec = asio::error_code(last_error,
-                asio::error::get_system_category());
-            return 0;
-          }
-        }
-
-        ec = asio::error_code();
-        return 0;
-      }
-    }
-  }
-}
-
-DWORD win_iocp_io_service::get_gqcs_timeout()
-{
-  OSVERSIONINFOEX osvi;
-  ZeroMemory(&osvi, sizeof(osvi));
-  osvi.dwOSVersionInfoSize = sizeof(osvi);
-  osvi.dwMajorVersion = 6ul;
-
-  const uint64_t condition_mask = ::VerSetConditionMask(
-      0, VER_MAJORVERSION, VER_GREATER_EQUAL);
-
-  if (!!::VerifyVersionInfo(&osvi, VER_MAJORVERSION, condition_mask))
-    return INFINITE;
-
-  return default_gqcs_timeout;
-}
-
-void win_iocp_io_service::do_add_timer_queue(timer_queue_base& queue)
-{
-  mutex::scoped_lock lock(dispatch_mutex_);
-
-  timer_queues_.insert(&queue);
-
-  if (!waitable_timer_.handle)
-  {
-    waitable_timer_.handle = ::CreateWaitableTimer(0, FALSE, 0);
-    if (waitable_timer_.handle == 0)
-    {
-      DWORD last_error = ::GetLastError();
-      asio::error_code ec(last_error,
-          asio::error::get_system_category());
-      asio::detail::throw_error(ec, "timer");
-    }
-
-    LARGE_INTEGER timeout;
-    timeout.QuadPart = -max_timeout_usec;
-    timeout.QuadPart *= 10;
-    ::SetWaitableTimer(waitable_timer_.handle,
-        &timeout, max_timeout_msec, 0, 0, FALSE);
-  }
-
-  if (!timer_thread_.get())
-  {
-    timer_thread_function thread_function = { this };
-    timer_thread_.reset(new thread(thread_function, 65536));
-  }
-}
-
-void win_iocp_io_service::do_remove_timer_queue(timer_queue_base& queue)
-{
-  mutex::scoped_lock lock(dispatch_mutex_);
-
-  timer_queues_.erase(&queue);
-}
-
-void win_iocp_io_service::update_timeout()
-{
-  if (timer_thread_.get())
-  {
-    // There's no point updating the waitable timer if the new timeout period
-    // exceeds the maximum timeout. In that case, we might as well wait for the
-    // existing period of the timer to expire.
-    long timeout_usec = timer_queues_.wait_duration_usec(max_timeout_usec);
-    if (timeout_usec < max_timeout_usec)
-    {
-      LARGE_INTEGER timeout;
-      timeout.QuadPart = -timeout_usec;
-      timeout.QuadPart *= 10;
-      ::SetWaitableTimer(waitable_timer_.handle,
-          &timeout, max_timeout_msec, 0, 0, FALSE);
-    }
-  }
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_IMPL_WIN_IOCP_IO_SERVICE_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/win_iocp_serial_port_service.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/win_iocp_serial_port_service.ipp
deleted file mode 100644
index 43e46f7..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/win_iocp_serial_port_service.ipp
+++ /dev/null
@@ -1,180 +0,0 @@
-//
-// detail/impl/win_iocp_serial_port_service.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_WIN_IOCP_SERIAL_PORT_SERVICE_IPP
-#define ASIO_DETAIL_IMPL_WIN_IOCP_SERIAL_PORT_SERVICE_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_IOCP) && defined(ASIO_HAS_SERIAL_PORT)
-
-#include <cstring>
-#include "asio/detail/win_iocp_serial_port_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-win_iocp_serial_port_service::win_iocp_serial_port_service(
-    asio::io_service& io_service)
-  : handle_service_(io_service)
-{
-}
-
-void win_iocp_serial_port_service::shutdown_service()
-{
-}
-
-asio::error_code win_iocp_serial_port_service::open(
-    win_iocp_serial_port_service::implementation_type& impl,
-    const std::string& device, asio::error_code& ec)
-{
-  if (is_open(impl))
-  {
-    ec = asio::error::already_open;
-    return ec;
-  }
-
-  // For convenience, add a leading \\.\ sequence if not already present.
-  std::string name = (device[0] == '\\') ? device : "\\\\.\\" + device;
-
-  // Open a handle to the serial port.
-  ::HANDLE handle = ::CreateFileA(name.c_str(),
-      GENERIC_READ | GENERIC_WRITE, 0, 0,
-      OPEN_EXISTING, FILE_FLAG_OVERLAPPED, 0);
-  if (handle == INVALID_HANDLE_VALUE)
-  {
-    DWORD last_error = ::GetLastError();
-    ec = asio::error_code(last_error,
-        asio::error::get_system_category());
-    return ec;
-  }
-
-  // Determine the initial serial port parameters.
-  using namespace std; // For memset.
-  ::DCB dcb;
-  memset(&dcb, 0, sizeof(DCB));
-  dcb.DCBlength = sizeof(DCB);
-  if (!::GetCommState(handle, &dcb))
-  {
-    DWORD last_error = ::GetLastError();
-    ::CloseHandle(handle);
-    ec = asio::error_code(last_error,
-        asio::error::get_system_category());
-    return ec;
-  }
-
-  // Set some default serial port parameters. This implementation does not
-  // support changing these, so they might as well be in a known state.
-  dcb.fBinary = TRUE; // Win32 only supports binary mode.
-  dcb.fDsrSensitivity = FALSE;
-  dcb.fNull = FALSE; // Do not ignore NULL characters.
-  dcb.fAbortOnError = FALSE; // Ignore serial framing errors.
-  if (!::SetCommState(handle, &dcb))
-  {
-    DWORD last_error = ::GetLastError();
-    ::CloseHandle(handle);
-    ec = asio::error_code(last_error,
-        asio::error::get_system_category());
-    return ec;
-  }
-
-  // Set up timeouts so that the serial port will behave similarly to a
-  // network socket. Reads wait for at least one byte, then return with
-  // whatever they have. Writes return once everything is out the door.
-  ::COMMTIMEOUTS timeouts;
-  timeouts.ReadIntervalTimeout = 1;
-  timeouts.ReadTotalTimeoutMultiplier = 0;
-  timeouts.ReadTotalTimeoutConstant = 0;
-  timeouts.WriteTotalTimeoutMultiplier = 0;
-  timeouts.WriteTotalTimeoutConstant = 0;
-  if (!::SetCommTimeouts(handle, &timeouts))
-  {
-    DWORD last_error = ::GetLastError();
-    ::CloseHandle(handle);
-    ec = asio::error_code(last_error,
-        asio::error::get_system_category());
-    return ec;
-  }
-
-  // We're done. Take ownership of the serial port handle.
-  if (handle_service_.assign(impl, handle, ec))
-    ::CloseHandle(handle);
-  return ec;
-}
-
-asio::error_code win_iocp_serial_port_service::do_set_option(
-    win_iocp_serial_port_service::implementation_type& impl,
-    win_iocp_serial_port_service::store_function_type store,
-    const void* option, asio::error_code& ec)
-{
-  using namespace std; // For memcpy.
-
-  ::DCB dcb;
-  memset(&dcb, 0, sizeof(DCB));
-  dcb.DCBlength = sizeof(DCB);
-  if (!::GetCommState(handle_service_.native_handle(impl), &dcb))
-  {
-    DWORD last_error = ::GetLastError();
-    ec = asio::error_code(last_error,
-        asio::error::get_system_category());
-    return ec;
-  }
-
-  if (store(option, dcb, ec))
-    return ec;
-
-  if (!::SetCommState(handle_service_.native_handle(impl), &dcb))
-  {
-    DWORD last_error = ::GetLastError();
-    ec = asio::error_code(last_error,
-        asio::error::get_system_category());
-    return ec;
-  }
-
-  ec = asio::error_code();
-  return ec;
-}
-
-asio::error_code win_iocp_serial_port_service::do_get_option(
-    const win_iocp_serial_port_service::implementation_type& impl,
-    win_iocp_serial_port_service::load_function_type load,
-    void* option, asio::error_code& ec) const
-{
-  using namespace std; // For memset.
-
-  ::DCB dcb;
-  memset(&dcb, 0, sizeof(DCB));
-  dcb.DCBlength = sizeof(DCB);
-  if (!::GetCommState(handle_service_.native_handle(impl), &dcb))
-  {
-    DWORD last_error = ::GetLastError();
-    ec = asio::error_code(last_error,
-        asio::error::get_system_category());
-    return ec;
-  }
-
-  return load(option, dcb, ec);
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_IOCP) && defined(ASIO_HAS_SERIAL_PORT)
-
-#endif // ASIO_DETAIL_IMPL_WIN_IOCP_SERIAL_PORT_SERVICE_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/win_iocp_socket_service_base.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/win_iocp_socket_service_base.ipp
deleted file mode 100644
index 6794e09..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/win_iocp_socket_service_base.ipp
+++ /dev/null
@@ -1,734 +0,0 @@
-//
-// detail/impl/win_iocp_socket_service_base.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_WIN_IOCP_SOCKET_SERVICE_BASE_IPP
-#define ASIO_DETAIL_IMPL_WIN_IOCP_SOCKET_SERVICE_BASE_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_IOCP)
-
-#include "asio/detail/win_iocp_socket_service_base.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-win_iocp_socket_service_base::win_iocp_socket_service_base(
-    asio::io_service& io_service)
-  : io_service_(io_service),
-    iocp_service_(use_service<win_iocp_io_service>(io_service)),
-    reactor_(0),
-    connect_ex_(0),
-    mutex_(),
-    impl_list_(0)
-{
-}
-
-void win_iocp_socket_service_base::shutdown_service()
-{
-  // Close all implementations, causing all operations to complete.
-  asio::detail::mutex::scoped_lock lock(mutex_);
-  base_implementation_type* impl = impl_list_;
-  while (impl)
-  {
-    asio::error_code ignored_ec;
-    close_for_destruction(*impl);
-    impl = impl->next_;
-  }
-}
-
-void win_iocp_socket_service_base::construct(
-    win_iocp_socket_service_base::base_implementation_type& impl)
-{
-  impl.socket_ = invalid_socket;
-  impl.state_ = 0;
-  impl.cancel_token_.reset();
-#if defined(ASIO_ENABLE_CANCELIO)
-  impl.safe_cancellation_thread_id_ = 0;
-#endif // defined(ASIO_ENABLE_CANCELIO)
-
-  // Insert implementation into linked list of all implementations.
-  asio::detail::mutex::scoped_lock lock(mutex_);
-  impl.next_ = impl_list_;
-  impl.prev_ = 0;
-  if (impl_list_)
-    impl_list_->prev_ = &impl;
-  impl_list_ = &impl;
-}
-
-void win_iocp_socket_service_base::base_move_construct(
-    win_iocp_socket_service_base::base_implementation_type& impl,
-    win_iocp_socket_service_base::base_implementation_type& other_impl)
-{
-  impl.socket_ = other_impl.socket_;
-  other_impl.socket_ = invalid_socket;
-
-  impl.state_ = other_impl.state_;
-  other_impl.state_ = 0;
-
-  impl.cancel_token_ = other_impl.cancel_token_;
-  other_impl.cancel_token_.reset();
-
-#if defined(ASIO_ENABLE_CANCELIO)
-  impl.safe_cancellation_thread_id_ = other_impl.safe_cancellation_thread_id_;
-  other_impl.safe_cancellation_thread_id_ = 0;
-#endif // defined(ASIO_ENABLE_CANCELIO)
-
-  // Insert implementation into linked list of all implementations.
-  asio::detail::mutex::scoped_lock lock(mutex_);
-  impl.next_ = impl_list_;
-  impl.prev_ = 0;
-  if (impl_list_)
-    impl_list_->prev_ = &impl;
-  impl_list_ = &impl;
-}
-
-void win_iocp_socket_service_base::base_move_assign(
-    win_iocp_socket_service_base::base_implementation_type& impl,
-    win_iocp_socket_service_base& other_service,
-    win_iocp_socket_service_base::base_implementation_type& other_impl)
-{
-  close_for_destruction(impl);
-
-  if (this != &other_service)
-  {
-    // Remove implementation from linked list of all implementations.
-    asio::detail::mutex::scoped_lock lock(mutex_);
-    if (impl_list_ == &impl)
-      impl_list_ = impl.next_;
-    if (impl.prev_)
-      impl.prev_->next_ = impl.next_;
-    if (impl.next_)
-      impl.next_->prev_= impl.prev_;
-    impl.next_ = 0;
-    impl.prev_ = 0;
-  }
-
-  impl.socket_ = other_impl.socket_;
-  other_impl.socket_ = invalid_socket;
-
-  impl.state_ = other_impl.state_;
-  other_impl.state_ = 0;
-
-  impl.cancel_token_ = other_impl.cancel_token_;
-  other_impl.cancel_token_.reset();
-
-#if defined(ASIO_ENABLE_CANCELIO)
-  impl.safe_cancellation_thread_id_ = other_impl.safe_cancellation_thread_id_;
-  other_impl.safe_cancellation_thread_id_ = 0;
-#endif // defined(ASIO_ENABLE_CANCELIO)
-
-  if (this != &other_service)
-  {
-    // Insert implementation into linked list of all implementations.
-    asio::detail::mutex::scoped_lock lock(other_service.mutex_);
-    impl.next_ = other_service.impl_list_;
-    impl.prev_ = 0;
-    if (other_service.impl_list_)
-      other_service.impl_list_->prev_ = &impl;
-    other_service.impl_list_ = &impl;
-  }
-}
-
-void win_iocp_socket_service_base::destroy(
-    win_iocp_socket_service_base::base_implementation_type& impl)
-{
-  close_for_destruction(impl);
-
-  // Remove implementation from linked list of all implementations.
-  asio::detail::mutex::scoped_lock lock(mutex_);
-  if (impl_list_ == &impl)
-    impl_list_ = impl.next_;
-  if (impl.prev_)
-    impl.prev_->next_ = impl.next_;
-  if (impl.next_)
-    impl.next_->prev_= impl.prev_;
-  impl.next_ = 0;
-  impl.prev_ = 0;
-}
-
-asio::error_code win_iocp_socket_service_base::close(
-    win_iocp_socket_service_base::base_implementation_type& impl,
-    asio::error_code& ec)
-{
-  if (is_open(impl))
-  {
-    ASIO_HANDLER_OPERATION(("socket", &impl, "close"));
-
-    // Check if the reactor was created, in which case we need to close the
-    // socket on the reactor as well to cancel any operations that might be
-    // running there.
-    reactor* r = static_cast<reactor*>(
-          interlocked_compare_exchange_pointer(
-            reinterpret_cast<void**>(&reactor_), 0, 0));
-    if (r)
-      r->deregister_descriptor(impl.socket_, impl.reactor_data_, true);
-  }
-
-  socket_ops::close(impl.socket_, impl.state_, false, ec);
-
-  impl.socket_ = invalid_socket;
-  impl.state_ = 0;
-  impl.cancel_token_.reset();
-#if defined(ASIO_ENABLE_CANCELIO)
-  impl.safe_cancellation_thread_id_ = 0;
-#endif // defined(ASIO_ENABLE_CANCELIO)
-
-  return ec;
-}
-
-asio::error_code win_iocp_socket_service_base::cancel(
-    win_iocp_socket_service_base::base_implementation_type& impl,
-    asio::error_code& ec)
-{
-  if (!is_open(impl))
-  {
-    ec = asio::error::bad_descriptor;
-    return ec;
-  }
-
-  ASIO_HANDLER_OPERATION(("socket", &impl, "cancel"));
-
-  if (FARPROC cancel_io_ex_ptr = ::GetProcAddress(
-        ::GetModuleHandleA("KERNEL32"), "CancelIoEx"))
-  {
-    // The version of Windows supports cancellation from any thread.
-    typedef BOOL (WINAPI* cancel_io_ex_t)(HANDLE, LPOVERLAPPED);
-    cancel_io_ex_t cancel_io_ex = (cancel_io_ex_t)cancel_io_ex_ptr;
-    socket_type sock = impl.socket_;
-    HANDLE sock_as_handle = reinterpret_cast<HANDLE>(sock);
-    if (!cancel_io_ex(sock_as_handle, 0))
-    {
-      DWORD last_error = ::GetLastError();
-      if (last_error == ERROR_NOT_FOUND)
-      {
-        // ERROR_NOT_FOUND means that there were no operations to be
-        // cancelled. We swallow this error to match the behaviour on other
-        // platforms.
-        ec = asio::error_code();
-      }
-      else
-      {
-        ec = asio::error_code(last_error,
-            asio::error::get_system_category());
-      }
-    }
-    else
-    {
-      ec = asio::error_code();
-    }
-  }
-#if defined(ASIO_ENABLE_CANCELIO)
-  else if (impl.safe_cancellation_thread_id_ == 0)
-  {
-    // No operations have been started, so there's nothing to cancel.
-    ec = asio::error_code();
-  }
-  else if (impl.safe_cancellation_thread_id_ == ::GetCurrentThreadId())
-  {
-    // Asynchronous operations have been started from the current thread only,
-    // so it is safe to try to cancel them using CancelIo.
-    socket_type sock = impl.socket_;
-    HANDLE sock_as_handle = reinterpret_cast<HANDLE>(sock);
-    if (!::CancelIo(sock_as_handle))
-    {
-      DWORD last_error = ::GetLastError();
-      ec = asio::error_code(last_error,
-          asio::error::get_system_category());
-    }
-    else
-    {
-      ec = asio::error_code();
-    }
-  }
-  else
-  {
-    // Asynchronous operations have been started from more than one thread,
-    // so cancellation is not safe.
-    ec = asio::error::operation_not_supported;
-  }
-#else // defined(ASIO_ENABLE_CANCELIO)
-  else
-  {
-    // Cancellation is not supported as CancelIo may not be used.
-    ec = asio::error::operation_not_supported;
-  }
-#endif // defined(ASIO_ENABLE_CANCELIO)
-
-  // Cancel any operations started via the reactor.
-  if (!ec)
-  {
-    reactor* r = static_cast<reactor*>(
-          interlocked_compare_exchange_pointer(
-            reinterpret_cast<void**>(&reactor_), 0, 0));
-    if (r)
-      r->cancel_ops(impl.socket_, impl.reactor_data_);
-  }
-
-  return ec;
-}
-
-asio::error_code win_iocp_socket_service_base::do_open(
-    win_iocp_socket_service_base::base_implementation_type& impl,
-    int family, int type, int protocol, asio::error_code& ec)
-{
-  if (is_open(impl))
-  {
-    ec = asio::error::already_open;
-    return ec;
-  }
-
-  socket_holder sock(socket_ops::socket(family, type, protocol, ec));
-  if (sock.get() == invalid_socket)
-    return ec;
-
-  HANDLE sock_as_handle = reinterpret_cast<HANDLE>(sock.get());
-  if (iocp_service_.register_handle(sock_as_handle, ec))
-    return ec;
-
-  impl.socket_ = sock.release();
-  switch (type)
-  {
-  case SOCK_STREAM: impl.state_ = socket_ops::stream_oriented; break;
-  case SOCK_DGRAM: impl.state_ = socket_ops::datagram_oriented; break;
-  default: impl.state_ = 0; break;
-  }
-  impl.cancel_token_.reset(static_cast<void*>(0), socket_ops::noop_deleter());
-  ec = asio::error_code();
-  return ec;
-}
-
-asio::error_code win_iocp_socket_service_base::do_assign(
-    win_iocp_socket_service_base::base_implementation_type& impl,
-    int type, socket_type native_socket, asio::error_code& ec)
-{
-  if (is_open(impl))
-  {
-    ec = asio::error::already_open;
-    return ec;
-  }
-
-  HANDLE sock_as_handle = reinterpret_cast<HANDLE>(native_socket);
-  if (iocp_service_.register_handle(sock_as_handle, ec))
-    return ec;
-
-  impl.socket_ = native_socket;
-  switch (type)
-  {
-  case SOCK_STREAM: impl.state_ = socket_ops::stream_oriented; break;
-  case SOCK_DGRAM: impl.state_ = socket_ops::datagram_oriented; break;
-  default: impl.state_ = 0; break;
-  }
-  impl.cancel_token_.reset(static_cast<void*>(0), socket_ops::noop_deleter());
-  ec = asio::error_code();
-  return ec;
-}
-
-void win_iocp_socket_service_base::start_send_op(
-    win_iocp_socket_service_base::base_implementation_type& impl,
-    WSABUF* buffers, std::size_t buffer_count,
-    socket_base::message_flags flags, bool noop, operation* op)
-{
-  update_cancellation_thread_id(impl);
-  iocp_service_.work_started();
-
-  if (noop)
-    iocp_service_.on_completion(op);
-  else if (!is_open(impl))
-    iocp_service_.on_completion(op, asio::error::bad_descriptor);
-  else
-  {
-    DWORD bytes_transferred = 0;
-    int result = ::WSASend(impl.socket_, buffers,
-        static_cast<DWORD>(buffer_count), &bytes_transferred, flags, op, 0);
-    DWORD last_error = ::WSAGetLastError();
-    if (last_error == ERROR_PORT_UNREACHABLE)
-      last_error = WSAECONNREFUSED;
-    if (result != 0 && last_error != WSA_IO_PENDING)
-      iocp_service_.on_completion(op, last_error, bytes_transferred);
-    else
-      iocp_service_.on_pending(op);
-  }
-}
-
-void win_iocp_socket_service_base::start_send_to_op(
-    win_iocp_socket_service_base::base_implementation_type& impl,
-    WSABUF* buffers, std::size_t buffer_count,
-    const socket_addr_type* addr, int addrlen,
-    socket_base::message_flags flags, operation* op)
-{
-  update_cancellation_thread_id(impl);
-  iocp_service_.work_started();
-
-  if (!is_open(impl))
-    iocp_service_.on_completion(op, asio::error::bad_descriptor);
-  else
-  {
-    DWORD bytes_transferred = 0;
-    int result = ::WSASendTo(impl.socket_, buffers,
-        static_cast<DWORD>(buffer_count),
-        &bytes_transferred, flags, addr, addrlen, op, 0);
-    DWORD last_error = ::WSAGetLastError();
-    if (last_error == ERROR_PORT_UNREACHABLE)
-      last_error = WSAECONNREFUSED;
-    if (result != 0 && last_error != WSA_IO_PENDING)
-      iocp_service_.on_completion(op, last_error, bytes_transferred);
-    else
-      iocp_service_.on_pending(op);
-  }
-}
-
-void win_iocp_socket_service_base::start_receive_op(
-    win_iocp_socket_service_base::base_implementation_type& impl,
-    WSABUF* buffers, std::size_t buffer_count,
-    socket_base::message_flags flags, bool noop, operation* op)
-{
-  update_cancellation_thread_id(impl);
-  iocp_service_.work_started();
-
-  if (noop)
-    iocp_service_.on_completion(op);
-  else if (!is_open(impl))
-    iocp_service_.on_completion(op, asio::error::bad_descriptor);
-  else
-  {
-    DWORD bytes_transferred = 0;
-    DWORD recv_flags = flags;
-    int result = ::WSARecv(impl.socket_, buffers,
-        static_cast<DWORD>(buffer_count),
-        &bytes_transferred, &recv_flags, op, 0);
-    DWORD last_error = ::WSAGetLastError();
-    if (last_error == ERROR_NETNAME_DELETED)
-      last_error = WSAECONNRESET;
-    else if (last_error == ERROR_PORT_UNREACHABLE)
-      last_error = WSAECONNREFUSED;
-    if (result != 0 && last_error != WSA_IO_PENDING)
-      iocp_service_.on_completion(op, last_error, bytes_transferred);
-    else
-      iocp_service_.on_pending(op);
-  }
-}
-
-void win_iocp_socket_service_base::start_null_buffers_receive_op(
-    win_iocp_socket_service_base::base_implementation_type& impl,
-    socket_base::message_flags flags, reactor_op* op)
-{
-  if ((impl.state_ & socket_ops::stream_oriented) != 0)
-  {
-    // For stream sockets on Windows, we may issue a 0-byte overlapped
-    // WSARecv to wait until there is data available on the socket.
-    ::WSABUF buf = { 0, 0 };
-    start_receive_op(impl, &buf, 1, flags, false, op);
-  }
-  else
-  {
-    start_reactor_op(impl,
-        (flags & socket_base::message_out_of_band)
-          ? reactor::except_op : reactor::read_op,
-        op);
-  }
-}
-
-void win_iocp_socket_service_base::start_receive_from_op(
-    win_iocp_socket_service_base::base_implementation_type& impl,
-    WSABUF* buffers, std::size_t buffer_count, socket_addr_type* addr,
-    socket_base::message_flags flags, int* addrlen, operation* op)
-{
-  update_cancellation_thread_id(impl);
-  iocp_service_.work_started();
-
-  if (!is_open(impl))
-    iocp_service_.on_completion(op, asio::error::bad_descriptor);
-  else
-  {
-    DWORD bytes_transferred = 0;
-    DWORD recv_flags = flags;
-    int result = ::WSARecvFrom(impl.socket_, buffers,
-        static_cast<DWORD>(buffer_count),
-        &bytes_transferred, &recv_flags, addr, addrlen, op, 0);
-    DWORD last_error = ::WSAGetLastError();
-    if (last_error == ERROR_PORT_UNREACHABLE)
-      last_error = WSAECONNREFUSED;
-    if (result != 0 && last_error != WSA_IO_PENDING)
-      iocp_service_.on_completion(op, last_error, bytes_transferred);
-    else
-      iocp_service_.on_pending(op);
-  }
-}
-
-void win_iocp_socket_service_base::start_accept_op(
-    win_iocp_socket_service_base::base_implementation_type& impl,
-    bool peer_is_open, socket_holder& new_socket, int family, int type,
-    int protocol, void* output_buffer, DWORD address_length, operation* op)
-{
-  update_cancellation_thread_id(impl);
-  iocp_service_.work_started();
-
-  if (!is_open(impl))
-    iocp_service_.on_completion(op, asio::error::bad_descriptor);
-  else if (peer_is_open)
-    iocp_service_.on_completion(op, asio::error::already_open);
-  else
-  {
-    asio::error_code ec;
-    new_socket.reset(socket_ops::socket(family, type, protocol, ec));
-    if (new_socket.get() == invalid_socket)
-      iocp_service_.on_completion(op, ec);
-    else
-    {
-      DWORD bytes_read = 0;
-      BOOL result = ::AcceptEx(impl.socket_, new_socket.get(), output_buffer,
-          0, address_length, address_length, &bytes_read, op);
-      DWORD last_error = ::WSAGetLastError();
-      if (!result && last_error != WSA_IO_PENDING)
-        iocp_service_.on_completion(op, last_error);
-      else
-        iocp_service_.on_pending(op);
-    }
-  }
-}
-
-void win_iocp_socket_service_base::restart_accept_op(
-    socket_type s, socket_holder& new_socket, int family, int type,
-    int protocol, void* output_buffer, DWORD address_length, operation* op)
-{
-  new_socket.reset();
-  iocp_service_.work_started();
-
-  asio::error_code ec;
-  new_socket.reset(socket_ops::socket(family, type, protocol, ec));
-  if (new_socket.get() == invalid_socket)
-    iocp_service_.on_completion(op, ec);
-  else
-  {
-    DWORD bytes_read = 0;
-    BOOL result = ::AcceptEx(s, new_socket.get(), output_buffer,
-        0, address_length, address_length, &bytes_read, op);
-    DWORD last_error = ::WSAGetLastError();
-    if (!result && last_error != WSA_IO_PENDING)
-      iocp_service_.on_completion(op, last_error);
-    else
-      iocp_service_.on_pending(op);
-  }
-}
-
-void win_iocp_socket_service_base::start_reactor_op(
-    win_iocp_socket_service_base::base_implementation_type& impl,
-    int op_type, reactor_op* op)
-{
-  reactor& r = get_reactor();
-  update_cancellation_thread_id(impl);
-
-  if (is_open(impl))
-  {
-    r.start_op(op_type, impl.socket_, impl.reactor_data_, op, false, false);
-    return;
-  }
-  else
-    op->ec_ = asio::error::bad_descriptor;
-
-  iocp_service_.post_immediate_completion(op, false);
-}
-
-void win_iocp_socket_service_base::start_connect_op(
-    win_iocp_socket_service_base::base_implementation_type& impl,
-    int family, int type, const socket_addr_type* addr,
-    std::size_t addrlen, win_iocp_socket_connect_op_base* op)
-{
-  // If ConnectEx is available, use that.
-  if (family == ASIO_OS_DEF(AF_INET)
-      || family == ASIO_OS_DEF(AF_INET6))
-  {
-    if (connect_ex_fn connect_ex = get_connect_ex(impl, type))
-    {
-      union address_union
-      {
-        socket_addr_type base;
-        sockaddr_in4_type v4;
-        sockaddr_in6_type v6;
-      } a;
-
-      using namespace std; // For memset.
-      memset(&a, 0, sizeof(a));
-      a.base.sa_family = family;
-
-      socket_ops::bind(impl.socket_, &a.base,
-          family == ASIO_OS_DEF(AF_INET)
-          ? sizeof(a.v4) : sizeof(a.v6), op->ec_);
-      if (op->ec_ && op->ec_ != asio::error::invalid_argument)
-      {
-        iocp_service_.post_immediate_completion(op, false);
-        return;
-      }
-
-      op->connect_ex_ = true;
-      update_cancellation_thread_id(impl);
-      iocp_service_.work_started();
-
-      BOOL result = connect_ex(impl.socket_,
-          addr, static_cast<int>(addrlen), 0, 0, 0, op);
-      DWORD last_error = ::WSAGetLastError();
-      if (!result && last_error != WSA_IO_PENDING)
-        iocp_service_.on_completion(op, last_error);
-      else
-        iocp_service_.on_pending(op);
-      return;
-    }
-  }
-
-  // Otherwise, fall back to a reactor-based implementation.
-  reactor& r = get_reactor();
-  update_cancellation_thread_id(impl);
-
-  if ((impl.state_ & socket_ops::non_blocking) != 0
-      || socket_ops::set_internal_non_blocking(
-        impl.socket_, impl.state_, true, op->ec_))
-  {
-    if (socket_ops::connect(impl.socket_, addr, addrlen, op->ec_) != 0)
-    {
-      if (op->ec_ == asio::error::in_progress
-          || op->ec_ == asio::error::would_block)
-      {
-        op->ec_ = asio::error_code();
-        r.start_op(reactor::connect_op, impl.socket_,
-            impl.reactor_data_, op, false, false);
-        return;
-      }
-    }
-  }
-
-  r.post_immediate_completion(op, false);
-}
-
-void win_iocp_socket_service_base::close_for_destruction(
-    win_iocp_socket_service_base::base_implementation_type& impl)
-{
-  if (is_open(impl))
-  {
-    ASIO_HANDLER_OPERATION(("socket", &impl, "close"));
-
-    // Check if the reactor was created, in which case we need to close the
-    // socket on the reactor as well to cancel any operations that might be
-    // running there.
-    reactor* r = static_cast<reactor*>(
-          interlocked_compare_exchange_pointer(
-            reinterpret_cast<void**>(&reactor_), 0, 0));
-    if (r)
-      r->deregister_descriptor(impl.socket_, impl.reactor_data_, true);
-  }
-
-  asio::error_code ignored_ec;
-  socket_ops::close(impl.socket_, impl.state_, true, ignored_ec);
-  impl.socket_ = invalid_socket;
-  impl.state_ = 0;
-  impl.cancel_token_.reset();
-#if defined(ASIO_ENABLE_CANCELIO)
-  impl.safe_cancellation_thread_id_ = 0;
-#endif // defined(ASIO_ENABLE_CANCELIO)
-}
-
-void win_iocp_socket_service_base::update_cancellation_thread_id(
-    win_iocp_socket_service_base::base_implementation_type& impl)
-{
-#if defined(ASIO_ENABLE_CANCELIO)
-  if (impl.safe_cancellation_thread_id_ == 0)
-    impl.safe_cancellation_thread_id_ = ::GetCurrentThreadId();
-  else if (impl.safe_cancellation_thread_id_ != ::GetCurrentThreadId())
-    impl.safe_cancellation_thread_id_ = ~DWORD(0);
-#else // defined(ASIO_ENABLE_CANCELIO)
-  (void)impl;
-#endif // defined(ASIO_ENABLE_CANCELIO)
-}
-
-reactor& win_iocp_socket_service_base::get_reactor()
-{
-  reactor* r = static_cast<reactor*>(
-        interlocked_compare_exchange_pointer(
-          reinterpret_cast<void**>(&reactor_), 0, 0));
-  if (!r)
-  {
-    r = &(use_service<reactor>(io_service_));
-    interlocked_exchange_pointer(reinterpret_cast<void**>(&reactor_), r);
-  }
-  return *r;
-}
-
-win_iocp_socket_service_base::connect_ex_fn
-win_iocp_socket_service_base::get_connect_ex(
-    win_iocp_socket_service_base::base_implementation_type& impl, int type)
-{
-#if defined(ASIO_DISABLE_CONNECTEX)
-  (void)impl;
-  (void)type;
-  return 0;
-#else // defined(ASIO_DISABLE_CONNECTEX)
-  if (type != ASIO_OS_DEF(SOCK_STREAM)
-      && type != ASIO_OS_DEF(SOCK_SEQPACKET))
-    return 0;
-
-  void* ptr = interlocked_compare_exchange_pointer(&connect_ex_, 0, 0);
-  if (!ptr)
-  {
-    GUID guid = { 0x25a207b9, 0xddf3, 0x4660,
-      { 0x8e, 0xe9, 0x76, 0xe5, 0x8c, 0x74, 0x06, 0x3e } };
-
-    DWORD bytes = 0;
-    if (::WSAIoctl(impl.socket_, SIO_GET_EXTENSION_FUNCTION_POINTER,
-          &guid, sizeof(guid), &ptr, sizeof(ptr), &bytes, 0, 0) != 0)
-    {
-      // Set connect_ex_ to a special value to indicate that ConnectEx is
-      // unavailable. That way we won't bother trying to look it up again.
-      ptr = this;
-    }
-
-    interlocked_exchange_pointer(&connect_ex_, ptr);
-  }
-
-  return reinterpret_cast<connect_ex_fn>(ptr == this ? 0 : ptr);
-#endif // defined(ASIO_DISABLE_CONNECTEX)
-}
-
-void* win_iocp_socket_service_base::interlocked_compare_exchange_pointer(
-    void** dest, void* exch, void* cmp)
-{
-#if defined(_M_IX86)
-  return reinterpret_cast<void*>(InterlockedCompareExchange(
-        reinterpret_cast<PLONG>(dest), reinterpret_cast<LONG>(exch),
-        reinterpret_cast<LONG>(cmp)));
-#else
-  return InterlockedCompareExchangePointer(dest, exch, cmp);
-#endif
-}
-
-void* win_iocp_socket_service_base::interlocked_exchange_pointer(
-    void** dest, void* val)
-{
-#if defined(_M_IX86)
-  return reinterpret_cast<void*>(InterlockedExchange(
-        reinterpret_cast<PLONG>(dest), reinterpret_cast<LONG>(val)));
-#else
-  return InterlockedExchangePointer(dest, val);
-#endif
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_IMPL_WIN_IOCP_SOCKET_SERVICE_BASE_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/win_mutex.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/win_mutex.ipp
deleted file mode 100644
index 608f4f5..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/win_mutex.ipp
+++ /dev/null
@@ -1,78 +0,0 @@
-//
-// detail/impl/win_mutex.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_WIN_MUTEX_IPP
-#define ASIO_DETAIL_IMPL_WIN_MUTEX_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS)
-
-#include "asio/detail/throw_error.hpp"
-#include "asio/detail/win_mutex.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-win_mutex::win_mutex()
-{
-  int error = do_init();
-  asio::error_code ec(error,
-      asio::error::get_system_category());
-  asio::detail::throw_error(ec, "mutex");
-}
-
-int win_mutex::do_init()
-{
-#if defined(__MINGW32__)
-  // Not sure if MinGW supports structured exception handling, so for now
-  // we'll just call the Windows API and hope.
-# if defined(UNDER_CE)
-  ::InitializeCriticalSection(&crit_section_);
-# else
-  if (!::InitializeCriticalSectionAndSpinCount(&crit_section_, 0x80000000))
-    return ::GetLastError();
-# endif
-  return 0;
-#else
-  __try
-  {
-# if defined(UNDER_CE)
-    ::InitializeCriticalSection(&crit_section_);
-# else
-    if (!::InitializeCriticalSectionAndSpinCount(&crit_section_, 0x80000000))
-      return ::GetLastError();
-# endif
-  }
-  __except(GetExceptionCode() == STATUS_NO_MEMORY
-      ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)
-  {
-    return ERROR_OUTOFMEMORY;
-  }
-
-  return 0;
-#endif
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS)
-
-#endif // ASIO_DETAIL_IMPL_WIN_MUTEX_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/win_object_handle_service.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/win_object_handle_service.ipp
deleted file mode 100644
index 8afeb8c..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/win_object_handle_service.ipp
+++ /dev/null
@@ -1,445 +0,0 @@
-//
-// detail/impl/win_object_handle_service.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2011 Boris Schaeling (boris@highscore.de)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_WIN_OBJECT_HANDLE_SERVICE_IPP
-#define ASIO_DETAIL_IMPL_WIN_OBJECT_HANDLE_SERVICE_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_WINDOWS_OBJECT_HANDLE)
-
-#include "asio/detail/win_object_handle_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-win_object_handle_service::win_object_handle_service(
-    asio::io_service& io_service)
-  : io_service_(asio::use_service<io_service_impl>(io_service)),
-    mutex_(),
-    impl_list_(0),
-    shutdown_(false)
-{
-}
-
-void win_object_handle_service::shutdown_service()
-{
-  mutex::scoped_lock lock(mutex_);
-
-  // Setting this flag to true prevents new objects from being registered, and
-  // new asynchronous wait operations from being started. We only need to worry
-  // about cleaning up the operations that are currently in progress.
-  shutdown_ = true;
-
-  op_queue<operation> ops;
-  for (implementation_type* impl = impl_list_; impl; impl = impl->next_)
-    ops.push(impl->op_queue_);
-
-  lock.unlock();
-
-  io_service_.abandon_operations(ops);
-}
-
-void win_object_handle_service::construct(
-    win_object_handle_service::implementation_type& impl)
-{
-  impl.handle_ = INVALID_HANDLE_VALUE;
-  impl.wait_handle_ = INVALID_HANDLE_VALUE;
-  impl.owner_ = this;
-
-  // Insert implementation into linked list of all implementations.
-  mutex::scoped_lock lock(mutex_);
-  if (!shutdown_)
-  {
-    impl.next_ = impl_list_;
-    impl.prev_ = 0;
-    if (impl_list_)
-      impl_list_->prev_ = &impl;
-    impl_list_ = &impl;
-  }
-}
-
-void win_object_handle_service::move_construct(
-    win_object_handle_service::implementation_type& impl,
-    win_object_handle_service::implementation_type& other_impl)
-{
-  mutex::scoped_lock lock(mutex_);
-
-  // Insert implementation into linked list of all implementations.
-  if (!shutdown_)
-  {
-    impl.next_ = impl_list_;
-    impl.prev_ = 0;
-    if (impl_list_)
-      impl_list_->prev_ = &impl;
-    impl_list_ = &impl;
-  }
-
-  impl.handle_ = other_impl.handle_;
-  other_impl.handle_ = INVALID_HANDLE_VALUE;
-  impl.wait_handle_ = other_impl.wait_handle_;
-  other_impl.wait_handle_ = INVALID_HANDLE_VALUE;
-  impl.op_queue_.push(other_impl.op_queue_);
-  impl.owner_ = this;
-
-  // We must not hold the lock while calling UnregisterWaitEx. This is because
-  // the registered callback function might be invoked while we are waiting for
-  // UnregisterWaitEx to complete.
-  lock.unlock();
-
-  if (impl.wait_handle_ != INVALID_HANDLE_VALUE)
-    ::UnregisterWaitEx(impl.wait_handle_, INVALID_HANDLE_VALUE);
-
-  if (!impl.op_queue_.empty())
-    register_wait_callback(impl, lock);
-}
-
-void win_object_handle_service::move_assign(
-    win_object_handle_service::implementation_type& impl,
-    win_object_handle_service& other_service,
-    win_object_handle_service::implementation_type& other_impl)
-{
-  asio::error_code ignored_ec;
-  close(impl, ignored_ec);
-
-  mutex::scoped_lock lock(mutex_);
-
-  if (this != &other_service)
-  {
-    // Remove implementation from linked list of all implementations.
-    if (impl_list_ == &impl)
-      impl_list_ = impl.next_;
-    if (impl.prev_)
-      impl.prev_->next_ = impl.next_;
-    if (impl.next_)
-      impl.next_->prev_= impl.prev_;
-    impl.next_ = 0;
-    impl.prev_ = 0;
-  }
-
-  impl.handle_ = other_impl.handle_;
-  other_impl.handle_ = INVALID_HANDLE_VALUE;
-  impl.wait_handle_ = other_impl.wait_handle_;
-  other_impl.wait_handle_ = INVALID_HANDLE_VALUE;
-  impl.op_queue_.push(other_impl.op_queue_);
-  impl.owner_ = this;
-
-  if (this != &other_service)
-  {
-    // Insert implementation into linked list of all implementations.
-    impl.next_ = other_service.impl_list_;
-    impl.prev_ = 0;
-    if (other_service.impl_list_)
-      other_service.impl_list_->prev_ = &impl;
-    other_service.impl_list_ = &impl;
-  }
-
-  // We must not hold the lock while calling UnregisterWaitEx. This is because
-  // the registered callback function might be invoked while we are waiting for
-  // UnregisterWaitEx to complete.
-  lock.unlock();
-
-  if (impl.wait_handle_ != INVALID_HANDLE_VALUE)
-    ::UnregisterWaitEx(impl.wait_handle_, INVALID_HANDLE_VALUE);
-
-  if (!impl.op_queue_.empty())
-    register_wait_callback(impl, lock);
-}
-
-void win_object_handle_service::destroy(
-    win_object_handle_service::implementation_type& impl)
-{
-  mutex::scoped_lock lock(mutex_);
-
-  // Remove implementation from linked list of all implementations.
-  if (impl_list_ == &impl)
-    impl_list_ = impl.next_;
-  if (impl.prev_)
-    impl.prev_->next_ = impl.next_;
-  if (impl.next_)
-    impl.next_->prev_= impl.prev_;
-  impl.next_ = 0;
-  impl.prev_ = 0;
-
-  if (is_open(impl))
-  {
-    ASIO_HANDLER_OPERATION(("object_handle", &impl, "close"));
-
-    HANDLE wait_handle = impl.wait_handle_;
-    impl.wait_handle_ = INVALID_HANDLE_VALUE;
-
-    op_queue<operation> ops;
-    while (wait_op* op = impl.op_queue_.front())
-    {
-      op->ec_ = asio::error::operation_aborted;
-      impl.op_queue_.pop();
-      ops.push(op);
-    }
-
-    // We must not hold the lock while calling UnregisterWaitEx. This is
-    // because the registered callback function might be invoked while we are
-    // waiting for UnregisterWaitEx to complete.
-    lock.unlock();
-
-    if (wait_handle != INVALID_HANDLE_VALUE)
-      ::UnregisterWaitEx(wait_handle, INVALID_HANDLE_VALUE);
-
-    ::CloseHandle(impl.handle_);
-    impl.handle_ = INVALID_HANDLE_VALUE;
-
-    io_service_.post_deferred_completions(ops);
-  }
-}
-
-asio::error_code win_object_handle_service::assign(
-    win_object_handle_service::implementation_type& impl,
-    const native_handle_type& handle, asio::error_code& ec)
-{
-  if (is_open(impl))
-  {
-    ec = asio::error::already_open;
-    return ec;
-  }
-
-  impl.handle_ = handle;
-  ec = asio::error_code();
-  return ec;
-}
-
-asio::error_code win_object_handle_service::close(
-    win_object_handle_service::implementation_type& impl,
-    asio::error_code& ec)
-{
-  if (is_open(impl))
-  {
-    ASIO_HANDLER_OPERATION(("object_handle", &impl, "close"));
-
-    mutex::scoped_lock lock(mutex_);
-
-    HANDLE wait_handle = impl.wait_handle_;
-    impl.wait_handle_ = INVALID_HANDLE_VALUE;
-
-    op_queue<operation> completed_ops;
-    while (wait_op* op = impl.op_queue_.front())
-    {
-      impl.op_queue_.pop();
-      op->ec_ = asio::error::operation_aborted;
-      completed_ops.push(op);
-    }
-
-    // We must not hold the lock while calling UnregisterWaitEx. This is
-    // because the registered callback function might be invoked while we are
-    // waiting for UnregisterWaitEx to complete.
-    lock.unlock();
-
-    if (wait_handle != INVALID_HANDLE_VALUE)
-      ::UnregisterWaitEx(wait_handle, INVALID_HANDLE_VALUE);
-
-    if (::CloseHandle(impl.handle_))
-    {
-      impl.handle_ = INVALID_HANDLE_VALUE;
-      ec = asio::error_code();
-    }
-    else
-    {
-      DWORD last_error = ::GetLastError();
-      ec = asio::error_code(last_error,
-          asio::error::get_system_category());
-    }
-
-    io_service_.post_deferred_completions(completed_ops);
-  }
-  else
-  {
-    ec = asio::error_code();
-  }
-
-  return ec;
-}
-
-asio::error_code win_object_handle_service::cancel(
-    win_object_handle_service::implementation_type& impl,
-    asio::error_code& ec)
-{
-  if (is_open(impl))
-  {
-    ASIO_HANDLER_OPERATION(("object_handle", &impl, "cancel"));
-
-    mutex::scoped_lock lock(mutex_);
-
-    HANDLE wait_handle = impl.wait_handle_;
-    impl.wait_handle_ = INVALID_HANDLE_VALUE;
-
-    op_queue<operation> completed_ops;
-    while (wait_op* op = impl.op_queue_.front())
-    {
-      op->ec_ = asio::error::operation_aborted;
-      impl.op_queue_.pop();
-      completed_ops.push(op);
-    }
-
-    // We must not hold the lock while calling UnregisterWaitEx. This is
-    // because the registered callback function might be invoked while we are
-    // waiting for UnregisterWaitEx to complete.
-    lock.unlock();
-
-    if (wait_handle != INVALID_HANDLE_VALUE)
-      ::UnregisterWaitEx(wait_handle, INVALID_HANDLE_VALUE);
-
-    ec = asio::error_code();
-
-    io_service_.post_deferred_completions(completed_ops);
-  }
-  else
-  {
-    ec = asio::error::bad_descriptor;
-  }
-
-  return ec;
-}
-
-void win_object_handle_service::wait(
-    win_object_handle_service::implementation_type& impl,
-    asio::error_code& ec)
-{
-  switch (::WaitForSingleObject(impl.handle_, INFINITE))
-  {
-  case WAIT_FAILED:
-    {
-      DWORD last_error = ::GetLastError();
-      ec = asio::error_code(last_error,
-          asio::error::get_system_category());
-      break;
-    }
-  case WAIT_OBJECT_0:
-  case WAIT_ABANDONED:
-  default:
-    ec = asio::error_code();
-    break;
-  }
-}
-
-void win_object_handle_service::start_wait_op(
-    win_object_handle_service::implementation_type& impl, wait_op* op)
-{
-  io_service_.work_started();
-
-  if (is_open(impl))
-  {
-    mutex::scoped_lock lock(mutex_);
-
-    if (!shutdown_)
-    {
-      impl.op_queue_.push(op);
-
-      // Only the first operation to be queued gets to register a wait callback.
-      // Subsequent operations have to wait for the first to finish.
-      if (impl.op_queue_.front() == op)
-        register_wait_callback(impl, lock);
-    }
-    else
-    {
-      lock.unlock();
-      io_service_.post_deferred_completion(op);
-    }
-  }
-  else
-  {
-    op->ec_ = asio::error::bad_descriptor;
-    io_service_.post_deferred_completion(op);
-  }
-}
-
-void win_object_handle_service::register_wait_callback(
-    win_object_handle_service::implementation_type& impl,
-    mutex::scoped_lock& lock)
-{
-  lock.lock();
-
-  if (!RegisterWaitForSingleObject(&impl.wait_handle_,
-        impl.handle_, &win_object_handle_service::wait_callback,
-        &impl, INFINITE, WT_EXECUTEONLYONCE))
-  {
-    DWORD last_error = ::GetLastError();
-    asio::error_code ec(last_error,
-        asio::error::get_system_category());
-
-    op_queue<operation> completed_ops;
-    while (wait_op* op = impl.op_queue_.front())
-    {
-      op->ec_ = ec;
-      impl.op_queue_.pop();
-      completed_ops.push(op);
-    }
-
-    lock.unlock();
-    io_service_.post_deferred_completions(completed_ops);
-  }
-}
-
-void win_object_handle_service::wait_callback(PVOID param, BOOLEAN)
-{
-  implementation_type* impl = static_cast<implementation_type*>(param);
-  mutex::scoped_lock lock(impl->owner_->mutex_);
-
-  if (impl->wait_handle_ != INVALID_HANDLE_VALUE)
-  {
-    ::UnregisterWaitEx(impl->wait_handle_, NULL);
-    impl->wait_handle_ = INVALID_HANDLE_VALUE;
-  }
-
-  if (wait_op* op = impl->op_queue_.front())
-  {
-    op_queue<operation> completed_ops;
-
-    op->ec_ = asio::error_code();
-    impl->op_queue_.pop();
-    completed_ops.push(op);
-
-    if (!impl->op_queue_.empty())
-    {
-      if (!RegisterWaitForSingleObject(&impl->wait_handle_,
-            impl->handle_, &win_object_handle_service::wait_callback,
-            param, INFINITE, WT_EXECUTEONLYONCE))
-      {
-        DWORD last_error = ::GetLastError();
-        asio::error_code ec(last_error,
-            asio::error::get_system_category());
-
-        while ((op = impl->op_queue_.front()) != 0)
-        {
-          op->ec_ = ec;
-          impl->op_queue_.pop();
-          completed_ops.push(op);
-        }
-      }
-    }
-
-    io_service_impl& ios = impl->owner_->io_service_;
-    lock.unlock();
-    ios.post_deferred_completions(completed_ops);
-  }
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_WINDOWS_OBJECT_HANDLE)
-
-#endif // ASIO_DETAIL_IMPL_WIN_OBJECT_HANDLE_SERVICE_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/win_static_mutex.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/win_static_mutex.ipp
deleted file mode 100644
index 2654aa6..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/win_static_mutex.ipp
+++ /dev/null
@@ -1,118 +0,0 @@
-//
-// detail/impl/win_static_mutex.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_WIN_STATIC_MUTEX_IPP
-#define ASIO_DETAIL_IMPL_WIN_STATIC_MUTEX_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS)
-
-#include <cstdio>
-#include "asio/detail/throw_error.hpp"
-#include "asio/detail/win_static_mutex.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-void win_static_mutex::init()
-{
-  int error = do_init();
-  asio::error_code ec(error,
-      asio::error::get_system_category());
-  asio::detail::throw_error(ec, "static_mutex");
-}
-
-int win_static_mutex::do_init()
-{
-  using namespace std; // For sprintf.
-  wchar_t mutex_name[128];
-#if defined(ASIO_HAS_SECURE_RTL)
-  swprintf_s(
-#else // defined(ASIO_HAS_SECURE_RTL)
-  _snwprintf(
-#endif // defined(ASIO_HAS_SECURE_RTL)
-      mutex_name, 128, L"asio-58CCDC44-6264-4842-90C2-F3C545CB8AA7-%u-%p",
-      static_cast<unsigned int>(::GetCurrentProcessId()), this);
-
-  HANDLE mutex = ::CreateMutexW(0, TRUE, mutex_name);
-  DWORD last_error = ::GetLastError();
-  if (mutex == 0)
-    return ::GetLastError();
-
-  if (last_error == ERROR_ALREADY_EXISTS)
-    ::WaitForSingleObject(mutex, INFINITE);
-
-  if (initialised_)
-  {
-    ::ReleaseMutex(mutex);
-    ::CloseHandle(mutex);
-    return 0;
-  }
-
-#if defined(__MINGW32__)
-  // Not sure if MinGW supports structured exception handling, so for now
-  // we'll just call the Windows API and hope.
-# if defined(UNDER_CE)
-  ::InitializeCriticalSection(&crit_section_);
-# else
-  if (!::InitializeCriticalSectionAndSpinCount(&crit_section_, 0x80000000))
-  {
-    last_error = ::GetLastError();
-    ::ReleaseMutex(mutex);
-    ::CloseHandle(mutex);
-    return last_error;
-  }
-# endif
-#else
-  __try
-  {
-# if defined(UNDER_CE)
-    ::InitializeCriticalSection(&crit_section_);
-# else
-    if (!::InitializeCriticalSectionAndSpinCount(&crit_section_, 0x80000000))
-    {
-      last_error = ::GetLastError();
-      ::ReleaseMutex(mutex);
-      ::CloseHandle(mutex);
-      return last_error;
-    }
-# endif
-  }
-  __except(GetExceptionCode() == STATUS_NO_MEMORY
-      ? EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)
-  {
-    ::ReleaseMutex(mutex);
-    ::CloseHandle(mutex);
-    return ERROR_OUTOFMEMORY;
-  }
-#endif
-
-  initialised_ = true;
-  ::ReleaseMutex(mutex);
-  ::CloseHandle(mutex);
-  return 0;
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS)
-
-#endif // ASIO_DETAIL_IMPL_WIN_STATIC_MUTEX_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/win_thread.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/win_thread.ipp
deleted file mode 100644
index 70b2c85..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/win_thread.ipp
+++ /dev/null
@@ -1,139 +0,0 @@
-//
-// detail/impl/win_thread.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_WIN_THREAD_IPP
-#define ASIO_DETAIL_IMPL_WIN_THREAD_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS) && !defined(UNDER_CE)
-
-#include <process.h>
-#include "asio/detail/throw_error.hpp"
-#include "asio/detail/win_thread.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-win_thread::~win_thread()
-{
-  ::CloseHandle(thread_);
-
-  // The exit_event_ handle is deliberately allowed to leak here since it
-  // is an error for the owner of an internal thread not to join() it.
-}
-
-void win_thread::join()
-{
-  HANDLE handles[2] = { exit_event_, thread_ };
-  ::WaitForMultipleObjects(2, handles, FALSE, INFINITE);
-  ::CloseHandle(exit_event_);
-  if (terminate_threads())
-  {
-    ::TerminateThread(thread_, 0);
-  }
-  else
-  {
-    ::QueueUserAPC(apc_function, thread_, 0);
-    ::WaitForSingleObject(thread_, INFINITE);
-  }
-}
-
-void win_thread::start_thread(func_base* arg, unsigned int stack_size)
-{
-  ::HANDLE entry_event = 0;
-  arg->entry_event_ = entry_event = ::CreateEvent(0, true, false, 0);
-  if (!entry_event)
-  {
-    DWORD last_error = ::GetLastError();
-    delete arg;
-    asio::error_code ec(last_error,
-        asio::error::get_system_category());
-    asio::detail::throw_error(ec, "thread.entry_event");
-  }
-
-  arg->exit_event_ = exit_event_ = ::CreateEvent(0, true, false, 0);
-  if (!exit_event_)
-  {
-    DWORD last_error = ::GetLastError();
-    delete arg;
-    asio::error_code ec(last_error,
-        asio::error::get_system_category());
-    asio::detail::throw_error(ec, "thread.exit_event");
-  }
-
-  unsigned int thread_id = 0;
-  thread_ = reinterpret_cast<HANDLE>(::_beginthreadex(0,
-        stack_size, win_thread_function, arg, 0, &thread_id));
-  if (!thread_)
-  {
-    DWORD last_error = ::GetLastError();
-    delete arg;
-    if (entry_event)
-      ::CloseHandle(entry_event);
-    if (exit_event_)
-      ::CloseHandle(exit_event_);
-    asio::error_code ec(last_error,
-        asio::error::get_system_category());
-    asio::detail::throw_error(ec, "thread");
-  }
-
-  if (entry_event)
-  {
-    ::WaitForSingleObject(entry_event, INFINITE);
-    ::CloseHandle(entry_event);
-  }
-}
-
-unsigned int __stdcall win_thread_function(void* arg)
-{
-  win_thread::auto_func_base_ptr func = {
-      static_cast<win_thread::func_base*>(arg) };
-
-  ::SetEvent(func.ptr->entry_event_);
-
-  func.ptr->run();
-
-  // Signal that the thread has finished its work, but rather than returning go
-  // to sleep to put the thread into a well known state. If the thread is being
-  // joined during global object destruction then it may be killed using
-  // TerminateThread (to avoid a deadlock in DllMain). Otherwise, the SleepEx
-  // call will be interrupted using QueueUserAPC and the thread will shut down
-  // cleanly.
-  HANDLE exit_event = func.ptr->exit_event_;
-  delete func.ptr;
-  func.ptr = 0;
-  ::SetEvent(exit_event);
-  ::SleepEx(INFINITE, TRUE);
-
-  return 0;
-}
-
-#if defined(WINVER) && (WINVER < 0x0500)
-void __stdcall apc_function(ULONG) {}
-#else
-void __stdcall apc_function(ULONG_PTR) {}
-#endif
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS) && !defined(UNDER_CE)
-
-#endif // ASIO_DETAIL_IMPL_WIN_THREAD_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/win_tss_ptr.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/win_tss_ptr.ipp
deleted file mode 100644
index 74414a3..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/win_tss_ptr.ipp
+++ /dev/null
@@ -1,57 +0,0 @@
-//
-// detail/impl/win_tss_ptr.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_WIN_TSS_PTR_IPP
-#define ASIO_DETAIL_IMPL_WIN_TSS_PTR_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS)
-
-#include "asio/detail/throw_error.hpp"
-#include "asio/detail/win_tss_ptr.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-DWORD win_tss_ptr_create()
-{
-#if defined(UNDER_CE)
-  enum { out_of_indexes = 0xFFFFFFFF };
-#else
-  enum { out_of_indexes = TLS_OUT_OF_INDEXES };
-#endif
-
-  DWORD tss_key = ::TlsAlloc();
-  if (tss_key == out_of_indexes)
-  {
-    DWORD last_error = ::GetLastError();
-    asio::error_code ec(last_error,
-        asio::error::get_system_category());
-    asio::detail::throw_error(ec, "tss");
-  }
-  return tss_key;
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS)
-
-#endif // ASIO_DETAIL_IMPL_WIN_TSS_PTR_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/winrt_ssocket_service_base.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/winrt_ssocket_service_base.ipp
deleted file mode 100644
index 0650700..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/winrt_ssocket_service_base.ipp
+++ /dev/null
@@ -1,612 +0,0 @@
-//
-// detail/impl/winrt_ssocket_service_base.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_WINRT_SSOCKET_SERVICE_BASE_IPP
-#define ASIO_DETAIL_IMPL_WINRT_SSOCKET_SERVICE_BASE_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-
-#include <cstring>
-#include "asio/detail/winrt_ssocket_service_base.hpp"
-#include "asio/detail/winrt_async_op.hpp"
-#include "asio/detail/winrt_utils.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-winrt_ssocket_service_base::winrt_ssocket_service_base(
-    asio::io_service& io_service)
-  : io_service_(use_service<io_service_impl>(io_service)),
-    async_manager_(use_service<winrt_async_manager>(io_service)),
-    mutex_(),
-    impl_list_(0)
-{
-}
-
-void winrt_ssocket_service_base::shutdown_service()
-{
-  // Close all implementations, causing all operations to complete.
-  asio::detail::mutex::scoped_lock lock(mutex_);
-  base_implementation_type* impl = impl_list_;
-  while (impl)
-  {
-    asio::error_code ignored_ec;
-    close(*impl, ignored_ec);
-    impl = impl->next_;
-  }
-}
-
-void winrt_ssocket_service_base::construct(
-    winrt_ssocket_service_base::base_implementation_type& impl)
-{
-  // Insert implementation into linked list of all implementations.
-  asio::detail::mutex::scoped_lock lock(mutex_);
-  impl.next_ = impl_list_;
-  impl.prev_ = 0;
-  if (impl_list_)
-    impl_list_->prev_ = &impl;
-  impl_list_ = &impl;
-}
-
-void winrt_ssocket_service_base::base_move_construct(
-    winrt_ssocket_service_base::base_implementation_type& impl,
-    winrt_ssocket_service_base::base_implementation_type& other_impl)
-{
-  impl.socket_ = other_impl.socket_;
-  other_impl.socket_ = nullptr;
-
-  // Insert implementation into linked list of all implementations.
-  asio::detail::mutex::scoped_lock lock(mutex_);
-  impl.next_ = impl_list_;
-  impl.prev_ = 0;
-  if (impl_list_)
-    impl_list_->prev_ = &impl;
-  impl_list_ = &impl;
-}
-
-void winrt_ssocket_service_base::base_move_assign(
-    winrt_ssocket_service_base::base_implementation_type& impl,
-    winrt_ssocket_service_base& other_service,
-    winrt_ssocket_service_base::base_implementation_type& other_impl)
-{
-  asio::error_code ignored_ec;
-  close(impl, ignored_ec);
-
-  if (this != &other_service)
-  {
-    // Remove implementation from linked list of all implementations.
-    asio::detail::mutex::scoped_lock lock(mutex_);
-    if (impl_list_ == &impl)
-      impl_list_ = impl.next_;
-    if (impl.prev_)
-      impl.prev_->next_ = impl.next_;
-    if (impl.next_)
-      impl.next_->prev_= impl.prev_;
-    impl.next_ = 0;
-    impl.prev_ = 0;
-  }
-
-  impl.socket_ = other_impl.socket_;
-  other_impl.socket_ = nullptr;
-
-  if (this != &other_service)
-  {
-    // Insert implementation into linked list of all implementations.
-    asio::detail::mutex::scoped_lock lock(other_service.mutex_);
-    impl.next_ = other_service.impl_list_;
-    impl.prev_ = 0;
-    if (other_service.impl_list_)
-      other_service.impl_list_->prev_ = &impl;
-    other_service.impl_list_ = &impl;
-  }
-}
-
-void winrt_ssocket_service_base::destroy(
-    winrt_ssocket_service_base::base_implementation_type& impl)
-{
-  asio::error_code ignored_ec;
-  close(impl, ignored_ec);
-
-  // Remove implementation from linked list of all implementations.
-  asio::detail::mutex::scoped_lock lock(mutex_);
-  if (impl_list_ == &impl)
-    impl_list_ = impl.next_;
-  if (impl.prev_)
-    impl.prev_->next_ = impl.next_;
-  if (impl.next_)
-    impl.next_->prev_= impl.prev_;
-  impl.next_ = 0;
-  impl.prev_ = 0;
-}
-
-asio::error_code winrt_ssocket_service_base::close(
-    winrt_ssocket_service_base::base_implementation_type& impl,
-    asio::error_code& ec)
-{
-  if (impl.socket_)
-  {
-    delete impl.socket_;
-    impl.socket_ = nullptr;
-  }
-
-  ec = asio::error_code();
-  return ec;
-}
-
-std::size_t winrt_ssocket_service_base::do_get_endpoint(
-    const base_implementation_type& impl, bool local,
-    void* addr, std::size_t addr_len, asio::error_code& ec) const
-{
-  if (!is_open(impl))
-  {
-    ec = asio::error::bad_descriptor;
-    return addr_len;
-  }
-
-  try
-  {
-    std::string addr_string = winrt_utils::string(local
-        ? impl.socket_->Information->LocalAddress->CanonicalName
-        : impl.socket_->Information->RemoteAddress->CanonicalName);
-    unsigned short port = winrt_utils::integer(local
-        ? impl.socket_->Information->LocalPort
-        : impl.socket_->Information->RemotePort);
-    unsigned long scope = 0;
-
-    switch (reinterpret_cast<const socket_addr_type*>(addr)->sa_family)
-    {
-    case ASIO_OS_DEF(AF_INET):
-      if (addr_len < sizeof(sockaddr_in4_type))
-      {
-        ec = asio::error::invalid_argument;
-        return addr_len;
-      }
-      else
-      {
-        socket_ops::inet_pton(ASIO_OS_DEF(AF_INET), addr_string.c_str(),
-            &reinterpret_cast<sockaddr_in4_type*>(addr)->sin_addr, &scope, ec);
-        reinterpret_cast<sockaddr_in4_type*>(addr)->sin_port
-          = socket_ops::host_to_network_short(port);
-        ec = asio::error_code();
-        return sizeof(sockaddr_in4_type);
-      }
-    case ASIO_OS_DEF(AF_INET6):
-      if (addr_len < sizeof(sockaddr_in6_type))
-      {
-        ec = asio::error::invalid_argument;
-        return addr_len;
-      }
-      else
-      {
-        socket_ops::inet_pton(ASIO_OS_DEF(AF_INET6), addr_string.c_str(),
-            &reinterpret_cast<sockaddr_in6_type*>(addr)->sin6_addr, &scope, ec);
-        reinterpret_cast<sockaddr_in6_type*>(addr)->sin6_port
-          = socket_ops::host_to_network_short(port);
-        ec = asio::error_code();
-        return sizeof(sockaddr_in6_type);
-      }
-    default:
-      ec = asio::error::address_family_not_supported;
-      return addr_len;
-    }
-  }
-  catch (Platform::Exception^ e)
-  {
-    ec = asio::error_code(e->HResult,
-        asio::system_category());
-    return addr_len;
-  }
-}
-
-asio::error_code winrt_ssocket_service_base::do_set_option(
-    winrt_ssocket_service_base::base_implementation_type& impl,
-    int level, int optname, const void* optval,
-    std::size_t optlen, asio::error_code& ec)
-{
-  if (!is_open(impl))
-  {
-    ec = asio::error::bad_descriptor;
-    return ec;
-  }
-
-  try
-  {
-    if (level == ASIO_OS_DEF(SOL_SOCKET)
-        && optname == ASIO_OS_DEF(SO_KEEPALIVE))
-    {
-      if (optlen == sizeof(int))
-      {
-        int value = 0;
-        std::memcpy(&value, optval, optlen);
-        impl.socket_->Control->KeepAlive = !!value;
-        ec = asio::error_code();
-      }
-      else
-      {
-        ec = asio::error::invalid_argument;
-      }
-    }
-    else if (level == ASIO_OS_DEF(IPPROTO_TCP)
-        && optname == ASIO_OS_DEF(TCP_NODELAY))
-    {
-      if (optlen == sizeof(int))
-      {
-        int value = 0;
-        std::memcpy(&value, optval, optlen);
-        impl.socket_->Control->NoDelay = !!value;
-        ec = asio::error_code();
-      }
-      else
-      {
-        ec = asio::error::invalid_argument;
-      }
-    }
-    else
-    {
-      ec = asio::error::invalid_argument;
-    }
-  }
-  catch (Platform::Exception^ e)
-  {
-    ec = asio::error_code(e->HResult,
-        asio::system_category());
-  }
-
-  return ec;
-}
-
-void winrt_ssocket_service_base::do_get_option(
-    const winrt_ssocket_service_base::base_implementation_type& impl,
-    int level, int optname, void* optval,
-    std::size_t* optlen, asio::error_code& ec) const
-{
-  if (!is_open(impl))
-  {
-    ec = asio::error::bad_descriptor;
-    return;
-  }
-
-  try
-  {
-    if (level == ASIO_OS_DEF(SOL_SOCKET)
-        && optname == ASIO_OS_DEF(SO_KEEPALIVE))
-    {
-      if (*optlen >= sizeof(int))
-      {
-        int value = impl.socket_->Control->KeepAlive ? 1 : 0;
-        std::memcpy(optval, &value, sizeof(int));
-        *optlen = sizeof(int);
-        ec = asio::error_code();
-      }
-      else
-      {
-        ec = asio::error::invalid_argument;
-      }
-    }
-    else if (level == ASIO_OS_DEF(IPPROTO_TCP)
-        && optname == ASIO_OS_DEF(TCP_NODELAY))
-    {
-      if (*optlen >= sizeof(int))
-      {
-        int value = impl.socket_->Control->NoDelay ? 1 : 0;
-        std::memcpy(optval, &value, sizeof(int));
-        *optlen = sizeof(int);
-        ec = asio::error_code();
-      }
-      else
-      {
-        ec = asio::error::invalid_argument;
-      }
-    }
-    else
-    {
-      ec = asio::error::invalid_argument;
-    }
-  }
-  catch (Platform::Exception^ e)
-  {
-    ec = asio::error_code(e->HResult,
-        asio::system_category());
-  }
-}
-
-asio::error_code winrt_ssocket_service_base::do_connect(
-    winrt_ssocket_service_base::base_implementation_type& impl,
-    const void* addr, asio::error_code& ec)
-{
-  if (!is_open(impl))
-  {
-    ec = asio::error::bad_descriptor;
-    return ec;
-  }
-
-  char addr_string[max_addr_v6_str_len];
-  unsigned short port;
-  switch (reinterpret_cast<const socket_addr_type*>(addr)->sa_family)
-  {
-  case ASIO_OS_DEF(AF_INET):
-    socket_ops::inet_ntop(ASIO_OS_DEF(AF_INET),
-        &reinterpret_cast<const sockaddr_in4_type*>(addr)->sin_addr,
-        addr_string, sizeof(addr_string), 0, ec);
-    port = socket_ops::network_to_host_short(
-        reinterpret_cast<const sockaddr_in4_type*>(addr)->sin_port);
-    break;
-  case ASIO_OS_DEF(AF_INET6):
-    socket_ops::inet_ntop(ASIO_OS_DEF(AF_INET6),
-        &reinterpret_cast<const sockaddr_in6_type*>(addr)->sin6_addr,
-        addr_string, sizeof(addr_string), 0, ec);
-    port = socket_ops::network_to_host_short(
-        reinterpret_cast<const sockaddr_in6_type*>(addr)->sin6_port);
-    break;
-  default:
-    ec = asio::error::address_family_not_supported;
-    return ec;
-  }
-
-  if (!ec) try
-  {
-    async_manager_.sync(impl.socket_->ConnectAsync(
-          ref new Windows::Networking::HostName(
-            winrt_utils::string(addr_string)),
-          winrt_utils::string(port)), ec);
-  }
-  catch (Platform::Exception^ e)
-  {
-    ec = asio::error_code(e->HResult,
-        asio::system_category());
-  }
-
-  return ec;
-}
-
-void winrt_ssocket_service_base::start_connect_op(
-    winrt_ssocket_service_base::base_implementation_type& impl,
-    const void* addr, winrt_async_op<void>* op, bool is_continuation)
-{
-  if (!is_open(impl))
-  {
-    op->ec_ = asio::error::bad_descriptor;
-    io_service_.post_immediate_completion(op, is_continuation);
-    return;
-  }
-
-  char addr_string[max_addr_v6_str_len];
-  unsigned short port = 0;
-  switch (reinterpret_cast<const socket_addr_type*>(addr)->sa_family)
-  {
-  case ASIO_OS_DEF(AF_INET):
-    socket_ops::inet_ntop(ASIO_OS_DEF(AF_INET),
-        &reinterpret_cast<const sockaddr_in4_type*>(addr)->sin_addr,
-        addr_string, sizeof(addr_string), 0, op->ec_);
-    port = socket_ops::network_to_host_short(
-        reinterpret_cast<const sockaddr_in4_type*>(addr)->sin_port);
-    break;
-  case ASIO_OS_DEF(AF_INET6):
-    socket_ops::inet_ntop(ASIO_OS_DEF(AF_INET6),
-        &reinterpret_cast<const sockaddr_in6_type*>(addr)->sin6_addr,
-        addr_string, sizeof(addr_string), 0, op->ec_);
-    port = socket_ops::network_to_host_short(
-        reinterpret_cast<const sockaddr_in6_type*>(addr)->sin6_port);
-    break;
-  default:
-    op->ec_ = asio::error::address_family_not_supported;
-    break;
-  }
-
-  if (op->ec_)
-  {
-    io_service_.post_immediate_completion(op, is_continuation);
-    return;
-  }
-
-  try
-  {
-    async_manager_.async(impl.socket_->ConnectAsync(
-          ref new Windows::Networking::HostName(
-            winrt_utils::string(addr_string)),
-          winrt_utils::string(port)), op);
-  }
-  catch (Platform::Exception^ e)
-  {
-    op->ec_ = asio::error_code(
-        e->HResult, asio::system_category());
-    io_service_.post_immediate_completion(op, is_continuation);
-  }
-}
-
-std::size_t winrt_ssocket_service_base::do_send(
-    winrt_ssocket_service_base::base_implementation_type& impl,
-    const asio::const_buffer& data,
-    socket_base::message_flags flags, asio::error_code& ec)
-{
-  if (flags)
-  {
-    ec = asio::error::operation_not_supported;
-    return 0;
-  }
-
-  if (!is_open(impl))
-  {
-    ec = asio::error::bad_descriptor;
-    return 0;
-  }
-
-  try
-  {
-    buffer_sequence_adapter<asio::const_buffer,
-      asio::const_buffers_1> bufs(asio::buffer(data));
-
-    if (bufs.all_empty())
-    {
-      ec = asio::error_code();
-      return 0;
-    }
-
-    return async_manager_.sync(
-        impl.socket_->OutputStream->WriteAsync(bufs.buffers()[0]), ec);
-  }
-  catch (Platform::Exception^ e)
-  {
-    ec = asio::error_code(e->HResult,
-        asio::system_category());
-    return 0;
-  }
-}
-
-void winrt_ssocket_service_base::start_send_op(
-      winrt_ssocket_service_base::base_implementation_type& impl,
-      const asio::const_buffer& data, socket_base::message_flags flags,
-      winrt_async_op<unsigned int>* op, bool is_continuation)
-{
-  if (flags)
-  {
-    op->ec_ = asio::error::operation_not_supported;
-    io_service_.post_immediate_completion(op, is_continuation);
-    return;
-  }
-
-  if (!is_open(impl))
-  {
-    op->ec_ = asio::error::bad_descriptor;
-    io_service_.post_immediate_completion(op, is_continuation);
-    return;
-  }
-
-  try
-  {
-    buffer_sequence_adapter<asio::const_buffer,
-        asio::const_buffers_1> bufs(asio::buffer(data));
-
-    if (bufs.all_empty())
-    {
-      io_service_.post_immediate_completion(op, is_continuation);
-      return;
-    }
-
-    async_manager_.async(
-        impl.socket_->OutputStream->WriteAsync(bufs.buffers()[0]), op);
-  }
-  catch (Platform::Exception^ e)
-  {
-    op->ec_ = asio::error_code(e->HResult,
-        asio::system_category());
-    io_service_.post_immediate_completion(op, is_continuation);
-  }
-}
-
-std::size_t winrt_ssocket_service_base::do_receive(
-    winrt_ssocket_service_base::base_implementation_type& impl,
-    const asio::mutable_buffer& data,
-    socket_base::message_flags flags, asio::error_code& ec)
-{
-  if (flags)
-  {
-    ec = asio::error::operation_not_supported;
-    return 0;
-  }
-
-  if (!is_open(impl))
-  {
-    ec = asio::error::bad_descriptor;
-    return 0;
-  }
-
-  try
-  {
-    buffer_sequence_adapter<asio::mutable_buffer,
-        asio::mutable_buffers_1> bufs(asio::buffer(data));
-
-    if (bufs.all_empty())
-    {
-      ec = asio::error_code();
-      return 0;
-    }
-
-    async_manager_.sync(
-        impl.socket_->InputStream->ReadAsync(
-          bufs.buffers()[0], bufs.buffers()[0]->Capacity,
-          Windows::Storage::Streams::InputStreamOptions::Partial), ec);
-
-    std::size_t bytes_transferred = bufs.buffers()[0]->Length;
-    if (bytes_transferred == 0 && !ec)
-    {
-      ec = asio::error::eof;
-    }
-
-    return bytes_transferred;
-  }
-  catch (Platform::Exception^ e)
-  {
-    ec = asio::error_code(e->HResult,
-        asio::system_category());
-    return 0;
-  }
-}
-
-void winrt_ssocket_service_base::start_receive_op(
-      winrt_ssocket_service_base::base_implementation_type& impl,
-      const asio::mutable_buffer& data, socket_base::message_flags flags,
-      winrt_async_op<Windows::Storage::Streams::IBuffer^>* op,
-      bool is_continuation)
-{
-  if (flags)
-  {
-    op->ec_ = asio::error::operation_not_supported;
-    io_service_.post_immediate_completion(op, is_continuation);
-    return;
-  }
-
-  if (!is_open(impl))
-  {
-    op->ec_ = asio::error::bad_descriptor;
-    io_service_.post_immediate_completion(op, is_continuation);
-    return;
-  }
-
-  try
-  {
-    buffer_sequence_adapter<asio::mutable_buffer,
-        asio::mutable_buffers_1> bufs(asio::buffer(data));
-
-    if (bufs.all_empty())
-    {
-      io_service_.post_immediate_completion(op, is_continuation);
-      return;
-    }
-
-    async_manager_.async(
-        impl.socket_->InputStream->ReadAsync(
-          bufs.buffers()[0], bufs.buffers()[0]->Capacity,
-          Windows::Storage::Streams::InputStreamOptions::Partial), op);
-  }
-  catch (Platform::Exception^ e)
-  {
-    op->ec_ = asio::error_code(e->HResult,
-        asio::system_category());
-    io_service_.post_immediate_completion(op, is_continuation);
-  }
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_IMPL_WINRT_SSOCKET_SERVICE_BASE_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/winrt_timer_scheduler.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/winrt_timer_scheduler.hpp
deleted file mode 100644
index 75b7472..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/winrt_timer_scheduler.hpp
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// detail/impl/winrt_timer_scheduler.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_WINRT_TIMER_SCHEDULER_HPP
-#define ASIO_DETAIL_IMPL_WINRT_TIMER_SCHEDULER_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Time_Traits>
-void winrt_timer_scheduler::add_timer_queue(timer_queue<Time_Traits>& queue)
-{
-  do_add_timer_queue(queue);
-}
-
-// Remove a timer queue from the reactor.
-template <typename Time_Traits>
-void winrt_timer_scheduler::remove_timer_queue(timer_queue<Time_Traits>& queue)
-{
-  do_remove_timer_queue(queue);
-}
-
-template <typename Time_Traits>
-void winrt_timer_scheduler::schedule_timer(timer_queue<Time_Traits>& queue,
-    const typename Time_Traits::time_type& time,
-    typename timer_queue<Time_Traits>::per_timer_data& timer, wait_op* op)
-{
-  asio::detail::mutex::scoped_lock lock(mutex_);
-
-  if (shutdown_)
-  {
-    io_service_.post_immediate_completion(op, false);
-    return;
-  }
-
-  bool earliest = queue.enqueue_timer(time, timer, op);
-  io_service_.work_started();
-  if (earliest)
-    event_.signal(lock);
-}
-
-template <typename Time_Traits>
-std::size_t winrt_timer_scheduler::cancel_timer(timer_queue<Time_Traits>& queue,
-    typename timer_queue<Time_Traits>::per_timer_data& timer,
-    std::size_t max_cancelled)
-{
-  asio::detail::mutex::scoped_lock lock(mutex_);
-  op_queue<operation> ops;
-  std::size_t n = queue.cancel_timer(timer, ops, max_cancelled);
-  lock.unlock();
-  io_service_.post_deferred_completions(ops);
-  return n;
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_IMPL_WINRT_TIMER_SCHEDULER_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/winrt_timer_scheduler.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/winrt_timer_scheduler.ipp
deleted file mode 100644
index 7738917..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/winrt_timer_scheduler.ipp
+++ /dev/null
@@ -1,122 +0,0 @@
-//
-// detail/impl/winrt_timer_scheduler.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_WINRT_TIMER_SCHEDULER_IPP
-#define ASIO_DETAIL_IMPL_WINRT_TIMER_SCHEDULER_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/winrt_timer_scheduler.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-winrt_timer_scheduler::winrt_timer_scheduler(
-    asio::io_service& io_service)
-  : asio::detail::service_base<winrt_timer_scheduler>(io_service),
-    io_service_(use_service<io_service_impl>(io_service)),
-    mutex_(),
-    event_(),
-    timer_queues_(),
-    thread_(0),
-    stop_thread_(false),
-    shutdown_(false)
-{
-  thread_ = new asio::detail::thread(
-      bind_handler(&winrt_timer_scheduler::call_run_thread, this));
-}
-
-winrt_timer_scheduler::~winrt_timer_scheduler()
-{
-  shutdown_service();
-}
-
-void winrt_timer_scheduler::shutdown_service()
-{
-  asio::detail::mutex::scoped_lock lock(mutex_);
-  shutdown_ = true;
-  stop_thread_ = true;
-  event_.signal(lock);
-  lock.unlock();
-
-  if (thread_)
-  {
-    thread_->join();
-    delete thread_;
-    thread_ = 0;
-  }
-
-  op_queue<operation> ops;
-  timer_queues_.get_all_timers(ops);
-  io_service_.abandon_operations(ops);
-}
-
-void winrt_timer_scheduler::fork_service(asio::io_service::fork_event)
-{
-}
-
-void winrt_timer_scheduler::init_task()
-{
-}
-
-void winrt_timer_scheduler::run_thread()
-{
-  asio::detail::mutex::scoped_lock lock(mutex_);
-  while (!stop_thread_)
-  {
-    const long max_wait_duration = 5 * 60 * 1000000;
-    long wait_duration = timer_queues_.wait_duration_usec(max_wait_duration);
-    event_.wait_for_usec(lock, wait_duration);
-    event_.clear(lock);
-    op_queue<operation> ops;
-    timer_queues_.get_ready_timers(ops);
-    if (!ops.empty())
-    {
-      lock.unlock();
-      io_service_.post_deferred_completions(ops);
-      lock.lock();
-    }
-  }
-}
-
-void winrt_timer_scheduler::call_run_thread(winrt_timer_scheduler* scheduler)
-{
-  scheduler->run_thread();
-}
-
-void winrt_timer_scheduler::do_add_timer_queue(timer_queue_base& queue)
-{
-  mutex::scoped_lock lock(mutex_);
-  timer_queues_.insert(&queue);
-}
-
-void winrt_timer_scheduler::do_remove_timer_queue(timer_queue_base& queue)
-{
-  mutex::scoped_lock lock(mutex_);
-  timer_queues_.erase(&queue);
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_IMPL_WINRT_TIMER_SCHEDULER_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/winsock_init.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/winsock_init.ipp
deleted file mode 100644
index 45cc9e0..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/impl/winsock_init.ipp
+++ /dev/null
@@ -1,82 +0,0 @@
-//
-// detail/impl/winsock_init.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IMPL_WINSOCK_INIT_IPP
-#define ASIO_DETAIL_IMPL_WINSOCK_INIT_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/winsock_init.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-void winsock_init_base::startup(data& d,
-    unsigned char major, unsigned char minor)
-{
-  if (::InterlockedIncrement(&d.init_count_) == 1)
-  {
-    WSADATA wsa_data;
-    long result = ::WSAStartup(MAKEWORD(major, minor), &wsa_data);
-    ::InterlockedExchange(&d.result_, result);
-  }
-}
-
-void winsock_init_base::manual_startup(data& d)
-{
-  if (::InterlockedIncrement(&d.init_count_) == 1)
-  {
-    ::InterlockedExchange(&d.result_, 0);
-  }
-}
-
-void winsock_init_base::cleanup(data& d)
-{
-  if (::InterlockedDecrement(&d.init_count_) == 0)
-  {
-    ::WSACleanup();
-  }
-}
-
-void winsock_init_base::manual_cleanup(data& d)
-{
-  ::InterlockedDecrement(&d.init_count_);
-}
-
-void winsock_init_base::throw_on_error(data& d)
-{
-  long result = ::InterlockedExchangeAdd(&d.result_, 0);
-  if (result != 0)
-  {
-    asio::error_code ec(result,
-        asio::error::get_system_category());
-    asio::detail::throw_error(ec, "winsock");
-  }
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
-#endif // ASIO_DETAIL_IMPL_WINSOCK_INIT_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/io_control.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/io_control.hpp
deleted file mode 100644
index 625aba6..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/io_control.hpp
+++ /dev/null
@@ -1,134 +0,0 @@
-//
-// detail/io_control.hpp
-// ~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_IO_CONTROL_HPP
-#define ASIO_DETAIL_IO_CONTROL_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cstddef>
-#include "asio/detail/socket_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-namespace io_control {
-
-// IO control command for non-blocking I/O.
-class non_blocking_io
-{
-public:
-  // Default constructor.
-  non_blocking_io()
-    : value_(0)
-  {
-  }
-
-  // Construct with a specific command value.
-  non_blocking_io(bool value)
-    : value_(value ? 1 : 0)
-  {
-  }
-
-  // Get the name of the IO control command.
-  int name() const
-  {
-    return static_cast<int>(ASIO_OS_DEF(FIONBIO));
-  }
-
-  // Set the value of the I/O control command.
-  void set(bool value)
-  {
-    value_ = value ? 1 : 0;
-  }
-
-  // Get the current value of the I/O control command.
-  bool get() const
-  {
-    return value_ != 0;
-  }
-
-  // Get the address of the command data.
-  detail::ioctl_arg_type* data()
-  {
-    return &value_;
-  }
-
-  // Get the address of the command data.
-  const detail::ioctl_arg_type* data() const
-  {
-    return &value_;
-  }
-
-private:
-  detail::ioctl_arg_type value_;
-};
-
-// I/O control command for getting number of bytes available.
-class bytes_readable
-{
-public:
-  // Default constructor.
-  bytes_readable()
-    : value_(0)
-  {
-  }
-
-  // Construct with a specific command value.
-  bytes_readable(std::size_t value)
-    : value_(static_cast<detail::ioctl_arg_type>(value))
-  {
-  }
-
-  // Get the name of the IO control command.
-  int name() const
-  {
-    return static_cast<int>(ASIO_OS_DEF(FIONREAD));
-  }
-
-  // Set the value of the I/O control command.
-  void set(std::size_t value)
-  {
-    value_ = static_cast<detail::ioctl_arg_type>(value);
-  }
-
-  // Get the current value of the I/O control command.
-  std::size_t get() const
-  {
-    return static_cast<std::size_t>(value_);
-  }
-
-  // Get the address of the command data.
-  detail::ioctl_arg_type* data()
-  {
-    return &value_;
-  }
-
-  // Get the address of the command data.
-  const detail::ioctl_arg_type* data() const
-  {
-    return &value_;
-  }
-
-private:
-  detail::ioctl_arg_type value_;
-};
-
-} // namespace io_control
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_IO_CONTROL_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/keyword_tss_ptr.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/keyword_tss_ptr.hpp
deleted file mode 100644
index c4840bf..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/keyword_tss_ptr.hpp
+++ /dev/null
@@ -1,70 +0,0 @@
-//
-// detail/keyword_tss_ptr.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_KEYWORD_TSS_PTR_HPP
-#define ASIO_DETAIL_KEYWORD_TSS_PTR_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_THREAD_KEYWORD_EXTENSION)
-
-#include "asio/detail/noncopyable.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename T>
-class keyword_tss_ptr
-  : private noncopyable
-{
-public:
-  // Constructor.
-  keyword_tss_ptr()
-  {
-  }
-
-  // Destructor.
-  ~keyword_tss_ptr()
-  {
-  }
-
-  // Get the value.
-  operator T*() const
-  {
-    return value_;
-  }
-
-  // Set the value.
-  void operator=(T* value)
-  {
-    value_ = value;
-  }
-
-private:
-  static ASIO_THREAD_KEYWORD T* value_;
-};
-
-template <typename T>
-ASIO_THREAD_KEYWORD T* keyword_tss_ptr<T>::value_;
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_THREAD_KEYWORD_EXTENSION)
-
-#endif // ASIO_DETAIL_KEYWORD_TSS_PTR_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/kqueue_reactor.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/kqueue_reactor.hpp
deleted file mode 100644
index f2ab213..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/kqueue_reactor.hpp
+++ /dev/null
@@ -1,220 +0,0 @@
-//
-// detail/kqueue_reactor.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2005 Stefan Arentz (stefan at soze dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_KQUEUE_REACTOR_HPP
-#define ASIO_DETAIL_KQUEUE_REACTOR_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_KQUEUE)
-
-#include <cstddef>
-#include <sys/types.h>
-#include <sys/event.h>
-#include <sys/time.h>
-#include "asio/detail/limits.hpp"
-#include "asio/detail/mutex.hpp"
-#include "asio/detail/object_pool.hpp"
-#include "asio/detail/op_queue.hpp"
-#include "asio/detail/reactor_op.hpp"
-#include "asio/detail/select_interrupter.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/timer_queue_base.hpp"
-#include "asio/detail/timer_queue_set.hpp"
-#include "asio/detail/wait_op.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-
-// Older versions of Mac OS X may not define EV_OOBAND.
-#if !defined(EV_OOBAND)
-# define EV_OOBAND EV_FLAG1
-#endif // !defined(EV_OOBAND)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class kqueue_reactor
-  : public asio::detail::service_base<kqueue_reactor>
-{
-public:
-  enum op_types { read_op = 0, write_op = 1,
-    connect_op = 1, except_op = 2, max_ops = 3 };
-
-  // Per-descriptor queues.
-  struct descriptor_state
-  {
-    friend class kqueue_reactor;
-    friend class object_pool_access;
-
-    descriptor_state* next_;
-    descriptor_state* prev_;
-
-    mutex mutex_;
-    int descriptor_;
-    int num_kevents_; // 1 == read only, 2 == read and write
-    op_queue<reactor_op> op_queue_[max_ops];
-    bool shutdown_;
-  };
-
-  // Per-descriptor data.
-  typedef descriptor_state* per_descriptor_data;
-
-  // Constructor.
-  ASIO_DECL kqueue_reactor(asio::io_service& io_service);
-
-  // Destructor.
-  ASIO_DECL ~kqueue_reactor();
-
-  // Destroy all user-defined handler objects owned by the service.
-  ASIO_DECL void shutdown_service();
-
-  // Recreate internal descriptors following a fork.
-  ASIO_DECL void fork_service(
-      asio::io_service::fork_event fork_ev);
-
-  // Initialise the task.
-  ASIO_DECL void init_task();
-
-  // Register a socket with the reactor. Returns 0 on success, system error
-  // code on failure.
-  ASIO_DECL int register_descriptor(socket_type descriptor,
-      per_descriptor_data& descriptor_data);
-
-  // Register a descriptor with an associated single operation. Returns 0 on
-  // success, system error code on failure.
-  ASIO_DECL int register_internal_descriptor(
-      int op_type, socket_type descriptor,
-      per_descriptor_data& descriptor_data, reactor_op* op);
-
-  // Move descriptor registration from one descriptor_data object to another.
-  ASIO_DECL void move_descriptor(socket_type descriptor,
-      per_descriptor_data& target_descriptor_data,
-      per_descriptor_data& source_descriptor_data);
-
-  // Post a reactor operation for immediate completion.
-  void post_immediate_completion(reactor_op* op, bool is_continuation)
-  {
-    io_service_.post_immediate_completion(op, is_continuation);
-  }
-
-  // Start a new operation. The reactor operation will be performed when the
-  // given descriptor is flagged as ready, or an error has occurred.
-  ASIO_DECL void start_op(int op_type, socket_type descriptor,
-      per_descriptor_data& descriptor_data, reactor_op* op,
-      bool is_continuation, bool allow_speculative);
-
-  // Cancel all operations associated with the given descriptor. The
-  // handlers associated with the descriptor will be invoked with the
-  // operation_aborted error.
-  ASIO_DECL void cancel_ops(socket_type descriptor,
-      per_descriptor_data& descriptor_data);
-
-  // Cancel any operations that are running against the descriptor and remove
-  // its registration from the reactor.
-  ASIO_DECL void deregister_descriptor(socket_type descriptor,
-      per_descriptor_data& descriptor_data, bool closing);
-
-  // Remote the descriptor's registration from the reactor.
-  ASIO_DECL void deregister_internal_descriptor(
-      socket_type descriptor, per_descriptor_data& descriptor_data);
-
-  // Add a new timer queue to the reactor.
-  template <typename Time_Traits>
-  void add_timer_queue(timer_queue<Time_Traits>& queue);
-
-  // Remove a timer queue from the reactor.
-  template <typename Time_Traits>
-  void remove_timer_queue(timer_queue<Time_Traits>& queue);
-
-  // Schedule a new operation in the given timer queue to expire at the
-  // specified absolute time.
-  template <typename Time_Traits>
-  void schedule_timer(timer_queue<Time_Traits>& queue,
-      const typename Time_Traits::time_type& time,
-      typename timer_queue<Time_Traits>::per_timer_data& timer, wait_op* op);
-
-  // Cancel the timer operations associated with the given token. Returns the
-  // number of operations that have been posted or dispatched.
-  template <typename Time_Traits>
-  std::size_t cancel_timer(timer_queue<Time_Traits>& queue,
-      typename timer_queue<Time_Traits>::per_timer_data& timer,
-      std::size_t max_cancelled = (std::numeric_limits<std::size_t>::max)());
-
-  // Run the kqueue loop.
-  ASIO_DECL void run(bool block, op_queue<operation>& ops);
-
-  // Interrupt the kqueue loop.
-  ASIO_DECL void interrupt();
-
-private:
-  // Create the kqueue file descriptor. Throws an exception if the descriptor
-  // cannot be created.
-  ASIO_DECL static int do_kqueue_create();
-
-  // Allocate a new descriptor state object.
-  ASIO_DECL descriptor_state* allocate_descriptor_state();
-
-  // Free an existing descriptor state object.
-  ASIO_DECL void free_descriptor_state(descriptor_state* s);
-
-  // Helper function to add a new timer queue.
-  ASIO_DECL void do_add_timer_queue(timer_queue_base& queue);
-
-  // Helper function to remove a timer queue.
-  ASIO_DECL void do_remove_timer_queue(timer_queue_base& queue);
-
-  // Get the timeout value for the kevent call.
-  ASIO_DECL timespec* get_timeout(timespec& ts);
-
-  // The io_service implementation used to post completions.
-  io_service_impl& io_service_;
-
-  // Mutex to protect access to internal data.
-  mutex mutex_;
-
-  // The kqueue file descriptor.
-  int kqueue_fd_;
-
-  // The interrupter is used to break a blocking kevent call.
-  select_interrupter interrupter_;
-
-  // The timer queues.
-  timer_queue_set timer_queues_;
-
-  // Whether the service has been shut down.
-  bool shutdown_;
-
-  // Mutex to protect access to the registered descriptors.
-  mutex registered_descriptors_mutex_;
-
-  // Keep track of all registered descriptors.
-  object_pool<descriptor_state> registered_descriptors_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/detail/impl/kqueue_reactor.hpp"
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/kqueue_reactor.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_HAS_KQUEUE)
-
-#endif // ASIO_DETAIL_KQUEUE_REACTOR_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/limits.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/limits.hpp
deleted file mode 100644
index d32470d..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/limits.hpp
+++ /dev/null
@@ -1,26 +0,0 @@
-//
-// detail/limits.hpp
-// ~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2011 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_LIMITS_HPP
-#define ASIO_DETAIL_LIMITS_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_BOOST_LIMITS)
-# include <boost/limits.hpp>
-#else // defined(ASIO_HAS_BOOST_LIMITS)
-# include <limits>
-#endif // defined(ASIO_HAS_BOOST_LIMITS)
-
-#endif // ASIO_DETAIL_LIMITS_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/local_free_on_block_exit.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/local_free_on_block_exit.hpp
deleted file mode 100644
index 2960dea..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/local_free_on_block_exit.hpp
+++ /dev/null
@@ -1,57 +0,0 @@
-//
-// detail/local_free_on_block_exit.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_LOCAL_FREE_ON_BLOCK_EXIT_HPP
-#define ASIO_DETAIL_LOCAL_FREE_ON_BLOCK_EXIT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/socket_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class local_free_on_block_exit
-  : private noncopyable
-{
-public:
-  // Constructor blocks all signals for the calling thread.
-  explicit local_free_on_block_exit(void* p)
-    : p_(p)
-  {
-  }
-
-  // Destructor restores the previous signal mask.
-  ~local_free_on_block_exit()
-  {
-    ::LocalFree(p_);
-  }
-
-private:
-  void* p_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
-#endif // ASIO_DETAIL_LOCAL_FREE_ON_BLOCK_EXIT_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/macos_fenced_block.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/macos_fenced_block.hpp
deleted file mode 100644
index ce1c1e9..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/macos_fenced_block.hpp
+++ /dev/null
@@ -1,61 +0,0 @@
-//
-// detail/macos_fenced_block.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_MACOS_FENCED_BLOCK_HPP
-#define ASIO_DETAIL_MACOS_FENCED_BLOCK_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(__MACH__) && defined(__APPLE__)
-
-#include <libkern/OSAtomic.h>
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class macos_fenced_block
-  : private noncopyable
-{
-public:
-  enum half_t { half };
-  enum full_t { full };
-
-  // Constructor for a half fenced block.
-  explicit macos_fenced_block(half_t)
-  {
-  }
-
-  // Constructor for a full fenced block.
-  explicit macos_fenced_block(full_t)
-  {
-    OSMemoryBarrier();
-  }
-
-  // Destructor.
-  ~macos_fenced_block()
-  {
-    OSMemoryBarrier();
-  }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(__MACH__) && defined(__APPLE__)
-
-#endif // ASIO_DETAIL_MACOS_FENCED_BLOCK_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/mutex.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/mutex.hpp
deleted file mode 100644
index 35885ad..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/mutex.hpp
+++ /dev/null
@@ -1,48 +0,0 @@
-//
-// detail/mutex.hpp
-// ~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_MUTEX_HPP
-#define ASIO_DETAIL_MUTEX_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_HAS_THREADS)
-# include "asio/detail/null_mutex.hpp"
-#elif defined(ASIO_WINDOWS)
-# include "asio/detail/win_mutex.hpp"
-#elif defined(ASIO_HAS_PTHREADS)
-# include "asio/detail/posix_mutex.hpp"
-#elif defined(ASIO_HAS_STD_MUTEX_AND_CONDVAR)
-# include "asio/detail/std_mutex.hpp"
-#else
-# error Only Windows, POSIX and std::mutex are supported!
-#endif
-
-namespace asio {
-namespace detail {
-
-#if !defined(ASIO_HAS_THREADS)
-typedef null_mutex mutex;
-#elif defined(ASIO_WINDOWS)
-typedef win_mutex mutex;
-#elif defined(ASIO_HAS_PTHREADS)
-typedef posix_mutex mutex;
-#elif defined(ASIO_HAS_STD_MUTEX_AND_CONDVAR)
-typedef std_mutex mutex;
-#endif
-
-} // namespace detail
-} // namespace asio
-
-#endif // ASIO_DETAIL_MUTEX_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/noncopyable.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/noncopyable.hpp
deleted file mode 100644
index db5ac4c..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/noncopyable.hpp
+++ /dev/null
@@ -1,43 +0,0 @@
-//
-// detail/noncopyable.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_NONCOPYABLE_HPP
-#define ASIO_DETAIL_NONCOPYABLE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class noncopyable
-{
-protected:
-  noncopyable() {}
-  ~noncopyable() {}
-private:
-  noncopyable(const noncopyable&);
-  const noncopyable& operator=(const noncopyable&);
-};
-
-} // namespace detail
-
-using asio::detail::noncopyable;
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_NONCOPYABLE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/null_event.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/null_event.hpp
deleted file mode 100644
index 394bb16..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/null_event.hpp
+++ /dev/null
@@ -1,88 +0,0 @@
-//
-// detail/null_event.hpp
-// ~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_NULL_EVENT_HPP
-#define ASIO_DETAIL_NULL_EVENT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_HAS_THREADS)
-
-#include "asio/detail/noncopyable.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class null_event
-  : private noncopyable
-{
-public:
-  // Constructor.
-  null_event()
-  {
-  }
-
-  // Destructor.
-  ~null_event()
-  {
-  }
-
-  // Signal the event. (Retained for backward compatibility.)
-  template <typename Lock>
-  void signal(Lock&)
-  {
-  }
-
-  // Signal all waiters.
-  template <typename Lock>
-  void signal_all(Lock&)
-  {
-  }
-
-  // Unlock the mutex and signal one waiter.
-  template <typename Lock>
-  void unlock_and_signal_one(Lock&)
-  {
-  }
-
-  // If there's a waiter, unlock the mutex and signal it.
-  template <typename Lock>
-  bool maybe_unlock_and_signal_one(Lock&)
-  {
-    return false;
-  }
-
-  // Reset the event.
-  template <typename Lock>
-  void clear(Lock&)
-  {
-  }
-
-  // Wait for the event to become signalled.
-  template <typename Lock>
-  void wait(Lock&)
-  {
-  }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_HAS_THREADS)
-
-#endif // ASIO_DETAIL_NULL_EVENT_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/null_fenced_block.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/null_fenced_block.hpp
deleted file mode 100644
index 0592de0..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/null_fenced_block.hpp
+++ /dev/null
@@ -1,45 +0,0 @@
-//
-// detail/null_fenced_block.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_NULL_FENCED_BLOCK_HPP
-#define ASIO_DETAIL_NULL_FENCED_BLOCK_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class null_fenced_block
-  : private noncopyable
-{
-public:
-  enum half_or_full_t { half, full };
-
-  // Constructor.
-  explicit null_fenced_block(half_or_full_t)
-  {
-  }
-
-  // Destructor.
-  ~null_fenced_block()
-  {
-  }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_NULL_FENCED_BLOCK_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/null_mutex.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/null_mutex.hpp
deleted file mode 100644
index 4ee92e4..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/null_mutex.hpp
+++ /dev/null
@@ -1,64 +0,0 @@
-//
-// detail/null_mutex.hpp
-// ~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_NULL_MUTEX_HPP
-#define ASIO_DETAIL_NULL_MUTEX_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_HAS_THREADS)
-
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/scoped_lock.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class null_mutex
-  : private noncopyable
-{
-public:
-  typedef asio::detail::scoped_lock<null_mutex> scoped_lock;
-
-  // Constructor.
-  null_mutex()
-  {
-  }
-
-  // Destructor.
-  ~null_mutex()
-  {
-  }
-
-  // Lock the mutex.
-  void lock()
-  {
-  }
-
-  // Unlock the mutex.
-  void unlock()
-  {
-  }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_HAS_THREADS)
-
-#endif // ASIO_DETAIL_NULL_MUTEX_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/null_reactor.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/null_reactor.hpp
deleted file mode 100644
index cc8c477..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/null_reactor.hpp
+++ /dev/null
@@ -1,67 +0,0 @@
-//
-// detail/null_reactor.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_NULL_REACTOR_HPP
-#define ASIO_DETAIL_NULL_REACTOR_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-
-#include "asio/io_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class null_reactor
-  : public asio::detail::service_base<null_reactor>
-{
-public:
-  // Constructor.
-  null_reactor(asio::io_service& io_service)
-    : asio::detail::service_base<null_reactor>(io_service)
-  {
-  }
-
-  // Destructor.
-  ~null_reactor()
-  {
-  }
-
-  // Destroy all user-defined handler objects owned by the service.
-  void shutdown_service()
-  {
-  }
-
-  // No-op because should never be called.
-  void run(bool /*block*/, op_queue<operation>& /*ops*/)
-  {
-  }
-
-  // No-op.
-  void interrupt()
-  {
-  }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_NULL_REACTOR_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/null_signal_blocker.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/null_signal_blocker.hpp
deleted file mode 100644
index 43ed011..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/null_signal_blocker.hpp
+++ /dev/null
@@ -1,69 +0,0 @@
-//
-// detail/null_signal_blocker.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_NULL_SIGNAL_BLOCKER_HPP
-#define ASIO_DETAIL_NULL_SIGNAL_BLOCKER_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_HAS_THREADS) \
-  || defined(ASIO_WINDOWS) \
-  || defined(ASIO_WINDOWS_RUNTIME) \
-  || defined(__CYGWIN__) \
-  || defined(__SYMBIAN32__)
-
-#include "asio/detail/noncopyable.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class null_signal_blocker
-  : private noncopyable
-{
-public:
-  // Constructor blocks all signals for the calling thread.
-  null_signal_blocker()
-  {
-  }
-
-  // Destructor restores the previous signal mask.
-  ~null_signal_blocker()
-  {
-  }
-
-  // Block all signals for the calling thread.
-  void block()
-  {
-  }
-
-  // Restore the previous signal mask.
-  void unblock()
-  {
-  }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_HAS_THREADS)
-       // || defined(ASIO_WINDOWS)
-       // || defined(ASIO_WINDOWS_RUNTIME)
-       // || defined(__CYGWIN__)
-       // || defined(__SYMBIAN32__)
-
-#endif // ASIO_DETAIL_NULL_SIGNAL_BLOCKER_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/null_socket_service.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/null_socket_service.hpp
deleted file mode 100644
index c991720..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/null_socket_service.hpp
+++ /dev/null
@@ -1,497 +0,0 @@
-//
-// detail/null_socket_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_NULL_SOCKET_SERVICE_HPP
-#define ASIO_DETAIL_NULL_SOCKET_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-
-#include "asio/buffer.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/socket_base.hpp"
-#include "asio/detail/bind_handler.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Protocol>
-class null_socket_service
-{
-public:
-  // The protocol type.
-  typedef Protocol protocol_type;
-
-  // The endpoint type.
-  typedef typename Protocol::endpoint endpoint_type;
-
-  // The native type of a socket.
-  typedef int native_handle_type;
-
-  // The implementation type of the socket.
-  struct implementation_type
-  {
-  };
-
-  // Constructor.
-  null_socket_service(asio::io_service& io_service)
-    : io_service_(io_service)
-  {
-  }
-
-  // Destroy all user-defined handler objects owned by the service.
-  void shutdown_service()
-  {
-  }
-
-  // Construct a new socket implementation.
-  void construct(implementation_type&)
-  {
-  }
-
-  // Move-construct a new socket implementation.
-  void move_construct(implementation_type&, implementation_type&)
-  {
-  }
-
-  // Move-assign from another socket implementation.
-  void move_assign(implementation_type&,
-      null_socket_service&, implementation_type&)
-  {
-  }
-
-  // Move-construct a new socket implementation from another protocol type.
-  template <typename Protocol1>
-  void converting_move_construct(implementation_type&,
-      typename null_socket_service<Protocol1>::implementation_type&)
-  {
-  }
-
-  // Destroy a socket implementation.
-  void destroy(implementation_type&)
-  {
-  }
-
-  // Open a new socket implementation.
-  asio::error_code open(implementation_type&,
-      const protocol_type&, asio::error_code& ec)
-  {
-    ec = asio::error::operation_not_supported;
-    return ec;
-  }
-
-  // Assign a native socket to a socket implementation.
-  asio::error_code assign(implementation_type&, const protocol_type&,
-      const native_handle_type&, asio::error_code& ec)
-  {
-    ec = asio::error::operation_not_supported;
-    return ec;
-  }
-
-  // Determine whether the socket is open.
-  bool is_open(const implementation_type&) const
-  {
-    return false;
-  }
-
-  // Destroy a socket implementation.
-  asio::error_code close(implementation_type&,
-      asio::error_code& ec)
-  {
-    ec = asio::error::operation_not_supported;
-    return ec;
-  }
-
-  // Get the native socket representation.
-  native_handle_type native_handle(implementation_type&)
-  {
-    return 0;
-  }
-
-  // Cancel all operations associated with the socket.
-  asio::error_code cancel(implementation_type&,
-      asio::error_code& ec)
-  {
-    ec = asio::error::operation_not_supported;
-    return ec;
-  }
-
-  // Determine whether the socket is at the out-of-band data mark.
-  bool at_mark(const implementation_type&,
-      asio::error_code& ec) const
-  {
-    ec = asio::error::operation_not_supported;
-    return false;
-  }
-
-  // Determine the number of bytes available for reading.
-  std::size_t available(const implementation_type&,
-      asio::error_code& ec) const
-  {
-    ec = asio::error::operation_not_supported;
-    return 0;
-  }
-
-  // Place the socket into the state where it will listen for new connections.
-  asio::error_code listen(implementation_type&,
-      int, asio::error_code& ec)
-  {
-    ec = asio::error::operation_not_supported;
-    return ec;
-  }
-
-  // Perform an IO control command on the socket.
-  template <typename IO_Control_Command>
-  asio::error_code io_control(implementation_type&,
-      IO_Control_Command&, asio::error_code& ec)
-  {
-    ec = asio::error::operation_not_supported;
-    return ec;
-  }
-
-  // Gets the non-blocking mode of the socket.
-  bool non_blocking(const implementation_type&) const
-  {
-    return false;
-  }
-
-  // Sets the non-blocking mode of the socket.
-  asio::error_code non_blocking(implementation_type&,
-      bool, asio::error_code& ec)
-  {
-    ec = asio::error::operation_not_supported;
-    return ec;
-  }
-
-  // Gets the non-blocking mode of the native socket implementation.
-  bool native_non_blocking(const implementation_type&) const
-  {
-    return false;
-  }
-
-  // Sets the non-blocking mode of the native socket implementation.
-  asio::error_code native_non_blocking(implementation_type&,
-      bool, asio::error_code& ec)
-  {
-    ec = asio::error::operation_not_supported;
-    return ec;
-  }
-
-  // Disable sends or receives on the socket.
-  asio::error_code shutdown(implementation_type&,
-      socket_base::shutdown_type, asio::error_code& ec)
-  {
-    ec = asio::error::operation_not_supported;
-    return ec;
-  }
-
-  // Bind the socket to the specified local endpoint.
-  asio::error_code bind(implementation_type&,
-      const endpoint_type&, asio::error_code& ec)
-  {
-    ec = asio::error::operation_not_supported;
-    return ec;
-  }
-
-  // Set a socket option.
-  template <typename Option>
-  asio::error_code set_option(implementation_type&,
-      const Option&, asio::error_code& ec)
-  {
-    ec = asio::error::operation_not_supported;
-    return ec;
-  }
-
-  // Set a socket option.
-  template <typename Option>
-  asio::error_code get_option(const implementation_type&,
-      Option&, asio::error_code& ec) const
-  {
-    ec = asio::error::operation_not_supported;
-    return ec;
-  }
-
-  // Get the local endpoint.
-  endpoint_type local_endpoint(const implementation_type&,
-      asio::error_code& ec) const
-  {
-    ec = asio::error::operation_not_supported;
-    return endpoint_type();
-  }
-
-  // Get the remote endpoint.
-  endpoint_type remote_endpoint(const implementation_type&,
-      asio::error_code& ec) const
-  {
-    ec = asio::error::operation_not_supported;
-    return endpoint_type();
-  }
-
-  // Send the given data to the peer.
-  template <typename ConstBufferSequence>
-  std::size_t send(implementation_type&, const ConstBufferSequence&,
-      socket_base::message_flags, asio::error_code& ec)
-  {
-    ec = asio::error::operation_not_supported;
-    return 0;
-  }
-
-  // Wait until data can be sent without blocking.
-  std::size_t send(implementation_type&, const null_buffers&,
-      socket_base::message_flags, asio::error_code& ec)
-  {
-    ec = asio::error::operation_not_supported;
-    return 0;
-  }
-
-  // Start an asynchronous send. The data being sent must be valid for the
-  // lifetime of the asynchronous operation.
-  template <typename ConstBufferSequence, typename Handler>
-  void async_send(implementation_type&, const ConstBufferSequence&,
-      socket_base::message_flags, Handler& handler)
-  {
-    asio::error_code ec = asio::error::operation_not_supported;
-    const std::size_t bytes_transferred = 0;
-    io_service_.post(detail::bind_handler(handler, ec, bytes_transferred));
-  }
-
-  // Start an asynchronous wait until data can be sent without blocking.
-  template <typename Handler>
-  void async_send(implementation_type&, const null_buffers&,
-      socket_base::message_flags, Handler& handler)
-  {
-    asio::error_code ec = asio::error::operation_not_supported;
-    const std::size_t bytes_transferred = 0;
-    io_service_.post(detail::bind_handler(handler, ec, bytes_transferred));
-  }
-
-  // Receive some data from the peer. Returns the number of bytes received.
-  template <typename MutableBufferSequence>
-  std::size_t receive(implementation_type&, const MutableBufferSequence&,
-      socket_base::message_flags, asio::error_code& ec)
-  {
-    ec = asio::error::operation_not_supported;
-    return 0;
-  }
-
-  // Wait until data can be received without blocking.
-  std::size_t receive(implementation_type&, const null_buffers&,
-      socket_base::message_flags, asio::error_code& ec)
-  {
-    ec = asio::error::operation_not_supported;
-    return 0;
-  }
-
-  // Start an asynchronous receive. The buffer for the data being received
-  // must be valid for the lifetime of the asynchronous operation.
-  template <typename MutableBufferSequence, typename Handler>
-  void async_receive(implementation_type&, const MutableBufferSequence&,
-      socket_base::message_flags, Handler& handler)
-  {
-    asio::error_code ec = asio::error::operation_not_supported;
-    const std::size_t bytes_transferred = 0;
-    io_service_.post(detail::bind_handler(handler, ec, bytes_transferred));
-  }
-
-  // Wait until data can be received without blocking.
-  template <typename Handler>
-  void async_receive(implementation_type&, const null_buffers&,
-      socket_base::message_flags, Handler& handler)
-  {
-    asio::error_code ec = asio::error::operation_not_supported;
-    const std::size_t bytes_transferred = 0;
-    io_service_.post(detail::bind_handler(handler, ec, bytes_transferred));
-  }
-
-  // Receive some data with associated flags. Returns the number of bytes
-  // received.
-  template <typename MutableBufferSequence>
-  std::size_t receive_with_flags(implementation_type&,
-      const MutableBufferSequence&, socket_base::message_flags,
-      socket_base::message_flags&, asio::error_code& ec)
-  {
-    ec = asio::error::operation_not_supported;
-    return 0;
-  }
-
-  // Wait until data can be received without blocking.
-  std::size_t receive_with_flags(implementation_type&,
-      const null_buffers&, socket_base::message_flags,
-      socket_base::message_flags&, asio::error_code& ec)
-  {
-    ec = asio::error::operation_not_supported;
-    return 0;
-  }
-
-  // Start an asynchronous receive. The buffer for the data being received
-  // must be valid for the lifetime of the asynchronous operation.
-  template <typename MutableBufferSequence, typename Handler>
-  void async_receive_with_flags(implementation_type&,
-      const MutableBufferSequence&, socket_base::message_flags,
-      socket_base::message_flags&, Handler& handler)
-  {
-    asio::error_code ec = asio::error::operation_not_supported;
-    const std::size_t bytes_transferred = 0;
-    io_service_.post(detail::bind_handler(handler, ec, bytes_transferred));
-  }
-
-  // Wait until data can be received without blocking.
-  template <typename Handler>
-  void async_receive_with_flags(implementation_type&,
-      const null_buffers&, socket_base::message_flags,
-      socket_base::message_flags&, Handler& handler)
-  {
-    asio::error_code ec = asio::error::operation_not_supported;
-    const std::size_t bytes_transferred = 0;
-    io_service_.post(detail::bind_handler(handler, ec, bytes_transferred));
-  }
-
-  // Send a datagram to the specified endpoint. Returns the number of bytes
-  // sent.
-  template <typename ConstBufferSequence>
-  std::size_t send_to(implementation_type&, const ConstBufferSequence&,
-      const endpoint_type&, socket_base::message_flags,
-      asio::error_code& ec)
-  {
-    ec = asio::error::operation_not_supported;
-    return 0;
-  }
-
-  // Wait until data can be sent without blocking.
-  std::size_t send_to(implementation_type&, const null_buffers&,
-      const endpoint_type&, socket_base::message_flags,
-      asio::error_code& ec)
-  {
-    ec = asio::error::operation_not_supported;
-    return 0;
-  }
-
-  // Start an asynchronous send. The data being sent must be valid for the
-  // lifetime of the asynchronous operation.
-  template <typename ConstBufferSequence, typename Handler>
-  void async_send_to(implementation_type&, const ConstBufferSequence&,
-      const endpoint_type&, socket_base::message_flags,
-      Handler& handler)
-  {
-    asio::error_code ec = asio::error::operation_not_supported;
-    const std::size_t bytes_transferred = 0;
-    io_service_.post(detail::bind_handler(handler, ec, bytes_transferred));
-  }
-
-  // Start an asynchronous wait until data can be sent without blocking.
-  template <typename Handler>
-  void async_send_to(implementation_type&, const null_buffers&,
-      const endpoint_type&, socket_base::message_flags, Handler& handler)
-  {
-    asio::error_code ec = asio::error::operation_not_supported;
-    const std::size_t bytes_transferred = 0;
-    io_service_.post(detail::bind_handler(handler, ec, bytes_transferred));
-  }
-
-  // Receive a datagram with the endpoint of the sender. Returns the number of
-  // bytes received.
-  template <typename MutableBufferSequence>
-  std::size_t receive_from(implementation_type&, const MutableBufferSequence&,
-      endpoint_type&, socket_base::message_flags,
-      asio::error_code& ec)
-  {
-    ec = asio::error::operation_not_supported;
-    return 0;
-  }
-
-  // Wait until data can be received without blocking.
-  std::size_t receive_from(implementation_type&, const null_buffers&,
-      endpoint_type&, socket_base::message_flags,
-      asio::error_code& ec)
-  {
-    ec = asio::error::operation_not_supported;
-    return 0;
-  }
-
-  // Start an asynchronous receive. The buffer for the data being received and
-  // the sender_endpoint object must both be valid for the lifetime of the
-  // asynchronous operation.
-  template <typename MutableBufferSequence, typename Handler>
-  void async_receive_from(implementation_type&,
-      const MutableBufferSequence&, endpoint_type&,
-      socket_base::message_flags, Handler& handler)
-  {
-    asio::error_code ec = asio::error::operation_not_supported;
-    const std::size_t bytes_transferred = 0;
-    io_service_.post(detail::bind_handler(handler, ec, bytes_transferred));
-  }
-
-  // Wait until data can be received without blocking.
-  template <typename Handler>
-  void async_receive_from(implementation_type&,
-      const null_buffers&, endpoint_type&,
-      socket_base::message_flags, Handler& handler)
-  {
-    asio::error_code ec = asio::error::operation_not_supported;
-    const std::size_t bytes_transferred = 0;
-    io_service_.post(detail::bind_handler(handler, ec, bytes_transferred));
-  }
-
-  // Accept a new connection.
-  template <typename Socket>
-  asio::error_code accept(implementation_type&,
-      Socket&, endpoint_type*, asio::error_code& ec)
-  {
-    ec = asio::error::operation_not_supported;
-    return ec;
-  }
-
-  // Start an asynchronous accept. The peer and peer_endpoint objects
-  // must be valid until the accept's handler is invoked.
-  template <typename Socket, typename Handler>
-  void async_accept(implementation_type&, Socket&,
-      endpoint_type*, Handler& handler)
-  {
-    asio::error_code ec = asio::error::operation_not_supported;
-    io_service_.post(detail::bind_handler(handler, ec));
-  }
-
-  // Connect the socket to the specified endpoint.
-  asio::error_code connect(implementation_type&,
-      const endpoint_type&, asio::error_code& ec)
-  {
-    ec = asio::error::operation_not_supported;
-    return ec;
-  }
-
-  // Start an asynchronous connect.
-  template <typename Handler>
-  void async_connect(implementation_type&,
-      const endpoint_type&, Handler& handler)
-  {
-    asio::error_code ec = asio::error::operation_not_supported;
-    io_service_.post(detail::bind_handler(handler, ec));
-  }
-
-private:
-  asio::io_service& io_service_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_NULL_SOCKET_SERVICE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/null_static_mutex.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/null_static_mutex.hpp
deleted file mode 100644
index af4dfec..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/null_static_mutex.hpp
+++ /dev/null
@@ -1,60 +0,0 @@
-//
-// detail/null_static_mutex.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_NULL_STATIC_MUTEX_HPP
-#define ASIO_DETAIL_NULL_STATIC_MUTEX_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_HAS_THREADS)
-
-#include "asio/detail/scoped_lock.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-struct null_static_mutex
-{
-  typedef asio::detail::scoped_lock<null_static_mutex> scoped_lock;
-
-  // Initialise the mutex.
-  void init()
-  {
-  }
-
-  // Lock the mutex.
-  void lock()
-  {
-  }
-
-  // Unlock the mutex.
-  void unlock()
-  {
-  }
-
-  int unused_;
-};
-
-#define ASIO_NULL_STATIC_MUTEX_INIT { 0 }
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_HAS_THREADS)
-
-#endif // ASIO_DETAIL_NULL_STATIC_MUTEX_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/null_thread.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/null_thread.hpp
deleted file mode 100644
index 79a9322..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/null_thread.hpp
+++ /dev/null
@@ -1,61 +0,0 @@
-//
-// detail/null_thread.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_NULL_THREAD_HPP
-#define ASIO_DETAIL_NULL_THREAD_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_HAS_THREADS)
-
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class null_thread
-  : private noncopyable
-{
-public:
-  // Constructor.
-  template <typename Function>
-  null_thread(Function, unsigned int = 0)
-  {
-    asio::detail::throw_error(
-        asio::error::operation_not_supported, "thread");
-  }
-
-  // Destructor.
-  ~null_thread()
-  {
-  }
-
-  // Wait for the thread to exit.
-  void join()
-  {
-  }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_HAS_THREADS)
-
-#endif // ASIO_DETAIL_NULL_THREAD_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/null_tss_ptr.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/null_tss_ptr.hpp
deleted file mode 100644
index 2ba1c9f..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/null_tss_ptr.hpp
+++ /dev/null
@@ -1,68 +0,0 @@
-//
-// detail/null_tss_ptr.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_NULL_TSS_PTR_HPP
-#define ASIO_DETAIL_NULL_TSS_PTR_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_HAS_THREADS)
-
-#include "asio/detail/noncopyable.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename T>
-class null_tss_ptr
-  : private noncopyable
-{
-public:
-  // Constructor.
-  null_tss_ptr()
-    : value_(0)
-  {
-  }
-
-  // Destructor.
-  ~null_tss_ptr()
-  {
-  }
-
-  // Get the value.
-  operator T*() const
-  {
-    return value_;
-  }
-
-  // Set the value.
-  void operator=(T* value)
-  {
-    value_ = value;
-  }
-
-private:
-  T* value_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_HAS_THREADS)
-
-#endif // ASIO_DETAIL_NULL_TSS_PTR_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/object_pool.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/object_pool.hpp
deleted file mode 100644
index 53e22f6..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/object_pool.hpp
+++ /dev/null
@@ -1,146 +0,0 @@
-//
-// detail/object_pool.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_OBJECT_POOL_HPP
-#define ASIO_DETAIL_OBJECT_POOL_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/noncopyable.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Object>
-class object_pool;
-
-class object_pool_access
-{
-public:
-  template <typename Object>
-  static Object* create()
-  {
-    return new Object;
-  }
-
-  template <typename Object>
-  static void destroy(Object* o)
-  {
-    delete o;
-  }
-
-  template <typename Object>
-  static Object*& next(Object* o)
-  {
-    return o->next_;
-  }
-
-  template <typename Object>
-  static Object*& prev(Object* o)
-  {
-    return o->prev_;
-  }
-};
-
-template <typename Object>
-class object_pool
-  : private noncopyable
-{
-public:
-  // Constructor.
-  object_pool()
-    : live_list_(0),
-      free_list_(0)
-  {
-  }
-
-  // Destructor destroys all objects.
-  ~object_pool()
-  {
-    destroy_list(live_list_);
-    destroy_list(free_list_);
-  }
-
-  // Get the object at the start of the live list.
-  Object* first()
-  {
-    return live_list_;
-  }
-
-  // Allocate a new object.
-  Object* alloc()
-  {
-    Object* o = free_list_;
-    if (o)
-      free_list_ = object_pool_access::next(free_list_);
-    else
-      o = object_pool_access::create<Object>();
-
-    object_pool_access::next(o) = live_list_;
-    object_pool_access::prev(o) = 0;
-    if (live_list_)
-      object_pool_access::prev(live_list_) = o;
-    live_list_ = o;
-
-    return o;
-  }
-
-  // Free an object. Moves it to the free list. No destructors are run.
-  void free(Object* o)
-  {
-    if (live_list_ == o)
-      live_list_ = object_pool_access::next(o);
-
-    if (object_pool_access::prev(o))
-    {
-      object_pool_access::next(object_pool_access::prev(o))
-        = object_pool_access::next(o);
-    }
-
-    if (object_pool_access::next(o))
-    {
-      object_pool_access::prev(object_pool_access::next(o))
-        = object_pool_access::prev(o);
-    }
-
-    object_pool_access::next(o) = free_list_;
-    object_pool_access::prev(o) = 0;
-    free_list_ = o;
-  }
-
-private:
-  // Helper function to destroy all elements in a list.
-  void destroy_list(Object* list)
-  {
-    while (list)
-    {
-      Object* o = list;
-      list = object_pool_access::next(o);
-      object_pool_access::destroy(o);
-    }
-  }
-
-  // The list of live objects.
-  Object* live_list_;
-
-  // The free list.
-  Object* free_list_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_OBJECT_POOL_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/old_win_sdk_compat.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/old_win_sdk_compat.hpp
deleted file mode 100644
index f168182..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/old_win_sdk_compat.hpp
+++ /dev/null
@@ -1,214 +0,0 @@
-//
-// detail/old_win_sdk_compat.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_OLD_WIN_SDK_COMPAT_HPP
-#define ASIO_DETAIL_OLD_WIN_SDK_COMPAT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
-// Guess whether we are building against on old Platform SDK.
-#if !defined(IN6ADDR_ANY_INIT)
-#define ASIO_HAS_OLD_WIN_SDK 1
-#endif // !defined(IN6ADDR_ANY_INIT)
-
-#if defined(ASIO_HAS_OLD_WIN_SDK)
-
-// Emulation of types that are missing from old Platform SDKs.
-//
-// N.B. this emulation is also used if building for a Windows 2000 target with
-// a recent (i.e. Vista or later) SDK, as the SDK does not provide IPv6 support
-// in that case.
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-enum
-{
-  sockaddr_storage_maxsize = 128, // Maximum size.
-  sockaddr_storage_alignsize = (sizeof(__int64)), // Desired alignment.
-  sockaddr_storage_pad1size = (sockaddr_storage_alignsize - sizeof(short)),
-  sockaddr_storage_pad2size = (sockaddr_storage_maxsize -
-      (sizeof(short) + sockaddr_storage_pad1size + sockaddr_storage_alignsize))
-};
-
-struct sockaddr_storage_emulation
-{
-  short ss_family;
-  char __ss_pad1[sockaddr_storage_pad1size];
-  __int64 __ss_align;
-  char __ss_pad2[sockaddr_storage_pad2size];
-};
-
-struct in6_addr_emulation
-{
-  union
-  {
-    u_char Byte[16];
-    u_short Word[8];
-  } u;
-};
-
-#if !defined(s6_addr)
-# define _S6_un u
-# define _S6_u8 Byte
-# define s6_addr _S6_un._S6_u8
-#endif // !defined(s6_addr)
-
-struct sockaddr_in6_emulation
-{
-  short sin6_family;
-  u_short sin6_port;
-  u_long sin6_flowinfo;
-  in6_addr_emulation sin6_addr;
-  u_long sin6_scope_id;
-};
-
-struct ipv6_mreq_emulation
-{
-  in6_addr_emulation ipv6mr_multiaddr;
-  unsigned int ipv6mr_interface;
-};
-
-struct addrinfo_emulation
-{
-  int ai_flags;
-  int ai_family;
-  int ai_socktype;
-  int ai_protocol;
-  size_t ai_addrlen;
-  char* ai_canonname;
-  sockaddr* ai_addr;
-  addrinfo_emulation* ai_next;
-};
-
-#if !defined(AI_PASSIVE)
-# define AI_PASSIVE 0x1
-#endif
-
-#if !defined(AI_CANONNAME)
-# define AI_CANONNAME 0x2
-#endif
-
-#if !defined(AI_NUMERICHOST)
-# define AI_NUMERICHOST 0x4
-#endif
-
-#if !defined(EAI_AGAIN)
-# define EAI_AGAIN WSATRY_AGAIN
-#endif
-
-#if !defined(EAI_BADFLAGS)
-# define EAI_BADFLAGS WSAEINVAL
-#endif
-
-#if !defined(EAI_FAIL)
-# define EAI_FAIL WSANO_RECOVERY
-#endif
-
-#if !defined(EAI_FAMILY)
-# define EAI_FAMILY WSAEAFNOSUPPORT
-#endif
-
-#if !defined(EAI_MEMORY)
-# define EAI_MEMORY WSA_NOT_ENOUGH_MEMORY
-#endif
-
-#if !defined(EAI_NODATA)
-# define EAI_NODATA WSANO_DATA
-#endif
-
-#if !defined(EAI_NONAME)
-# define EAI_NONAME WSAHOST_NOT_FOUND
-#endif
-
-#if !defined(EAI_SERVICE)
-# define EAI_SERVICE WSATYPE_NOT_FOUND
-#endif
-
-#if !defined(EAI_SOCKTYPE)
-# define EAI_SOCKTYPE WSAESOCKTNOSUPPORT
-#endif
-
-#if !defined(NI_NOFQDN)
-# define NI_NOFQDN 0x01
-#endif
-
-#if !defined(NI_NUMERICHOST)
-# define NI_NUMERICHOST 0x02
-#endif
-
-#if !defined(NI_NAMEREQD)
-# define NI_NAMEREQD 0x04
-#endif
-
-#if !defined(NI_NUMERICSERV)
-# define NI_NUMERICSERV 0x08
-#endif
-
-#if !defined(NI_DGRAM)
-# define NI_DGRAM 0x10
-#endif
-
-#if !defined(IPPROTO_IPV6)
-# define IPPROTO_IPV6 41
-#endif
-
-#if !defined(IPV6_UNICAST_HOPS)
-# define IPV6_UNICAST_HOPS 4
-#endif
-
-#if !defined(IPV6_MULTICAST_IF)
-# define IPV6_MULTICAST_IF 9
-#endif
-
-#if !defined(IPV6_MULTICAST_HOPS)
-# define IPV6_MULTICAST_HOPS 10
-#endif
-
-#if !defined(IPV6_MULTICAST_LOOP)
-# define IPV6_MULTICAST_LOOP 11
-#endif
-
-#if !defined(IPV6_JOIN_GROUP)
-# define IPV6_JOIN_GROUP 12
-#endif
-
-#if !defined(IPV6_LEAVE_GROUP)
-# define IPV6_LEAVE_GROUP 13
-#endif
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_OLD_WIN_SDK)
-
-// Even newer Platform SDKs that support IPv6 may not define IPV6_V6ONLY.
-#if !defined(IPV6_V6ONLY)
-# define IPV6_V6ONLY 27
-#endif
-
-// Some SDKs (e.g. Windows CE) don't define IPPROTO_ICMPV6.
-#if !defined(IPPROTO_ICMPV6)
-# define IPPROTO_ICMPV6 58
-#endif
-
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
-#endif // ASIO_DETAIL_OLD_WIN_SDK_COMPAT_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/op_queue.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/op_queue.hpp
deleted file mode 100644
index 38076be..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/op_queue.hpp
+++ /dev/null
@@ -1,156 +0,0 @@
-//
-// detail/op_queue.hpp
-// ~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_OP_QUEUE_HPP
-#define ASIO_DETAIL_OP_QUEUE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/noncopyable.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Operation>
-class op_queue;
-
-class op_queue_access
-{
-public:
-  template <typename Operation>
-  static Operation* next(Operation* o)
-  {
-    return static_cast<Operation*>(o->next_);
-  }
-
-  template <typename Operation1, typename Operation2>
-  static void next(Operation1*& o1, Operation2* o2)
-  {
-    o1->next_ = o2;
-  }
-
-  template <typename Operation>
-  static void destroy(Operation* o)
-  {
-    o->destroy();
-  }
-
-  template <typename Operation>
-  static Operation*& front(op_queue<Operation>& q)
-  {
-    return q.front_;
-  }
-
-  template <typename Operation>
-  static Operation*& back(op_queue<Operation>& q)
-  {
-    return q.back_;
-  }
-};
-
-template <typename Operation>
-class op_queue
-  : private noncopyable
-{
-public:
-  // Constructor.
-  op_queue()
-    : front_(0),
-      back_(0)
-  {
-  }
-
-  // Destructor destroys all operations.
-  ~op_queue()
-  {
-    while (Operation* op = front_)
-    {
-      pop();
-      op_queue_access::destroy(op);
-    }
-  }
-
-  // Get the operation at the front of the queue.
-  Operation* front()
-  {
-    return front_;
-  }
-
-  // Pop an operation from the front of the queue.
-  void pop()
-  {
-    if (front_)
-    {
-      Operation* tmp = front_;
-      front_ = op_queue_access::next(front_);
-      if (front_ == 0)
-        back_ = 0;
-      op_queue_access::next(tmp, static_cast<Operation*>(0));
-    }
-  }
-
-  // Push an operation on to the back of the queue.
-  void push(Operation* h)
-  {
-    op_queue_access::next(h, static_cast<Operation*>(0));
-    if (back_)
-    {
-      op_queue_access::next(back_, h);
-      back_ = h;
-    }
-    else
-    {
-      front_ = back_ = h;
-    }
-  }
-
-  // Push all operations from another queue on to the back of the queue. The
-  // source queue may contain operations of a derived type.
-  template <typename OtherOperation>
-  void push(op_queue<OtherOperation>& q)
-  {
-    if (Operation* other_front = op_queue_access::front(q))
-    {
-      if (back_)
-        op_queue_access::next(back_, other_front);
-      else
-        front_ = other_front;
-      back_ = op_queue_access::back(q);
-      op_queue_access::front(q) = 0;
-      op_queue_access::back(q) = 0;
-    }
-  }
-
-  // Whether the queue is empty.
-  bool empty() const
-  {
-    return front_ == 0;
-  }
-
-private:
-  friend class op_queue_access;
-
-  // The front of the queue.
-  Operation* front_;
-
-  // The back of the queue.
-  Operation* back_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_OP_QUEUE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/operation.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/operation.hpp
deleted file mode 100644
index 637ec15..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/operation.hpp
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// detail/operation.hpp
-// ~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_OPERATION_HPP
-#define ASIO_DETAIL_OPERATION_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_IOCP)
-# include "asio/detail/win_iocp_operation.hpp"
-#else
-# include "asio/detail/task_io_service_operation.hpp"
-#endif
-
-namespace asio {
-namespace detail {
-
-#if defined(ASIO_HAS_IOCP)
-typedef win_iocp_operation operation;
-#else
-typedef task_io_service_operation operation;
-#endif
-
-} // namespace detail
-} // namespace asio
-
-#endif // ASIO_DETAIL_OPERATION_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/pipe_select_interrupter.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/pipe_select_interrupter.hpp
deleted file mode 100644
index 57e211e..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/pipe_select_interrupter.hpp
+++ /dev/null
@@ -1,89 +0,0 @@
-//
-// detail/pipe_select_interrupter.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_PIPE_SELECT_INTERRUPTER_HPP
-#define ASIO_DETAIL_PIPE_SELECT_INTERRUPTER_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_WINDOWS)
-#if !defined(ASIO_WINDOWS_RUNTIME)
-#if !defined(__CYGWIN__)
-#if !defined(__SYMBIAN32__)
-#if !defined(ASIO_HAS_EVENTFD)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class pipe_select_interrupter
-{
-public:
-  // Constructor.
-  ASIO_DECL pipe_select_interrupter();
-
-  // Destructor.
-  ASIO_DECL ~pipe_select_interrupter();
-
-  // Recreate the interrupter's descriptors. Used after a fork.
-  ASIO_DECL void recreate();
-
-  // Interrupt the select call.
-  ASIO_DECL void interrupt();
-
-  // Reset the select interrupt. Returns true if the call was interrupted.
-  ASIO_DECL bool reset();
-
-  // Get the read descriptor to be passed to select.
-  int read_descriptor() const
-  {
-    return read_descriptor_;
-  }
-
-private:
-  // Open the descriptors. Throws on error.
-  ASIO_DECL void open_descriptors();
-
-  // Close the descriptors.
-  ASIO_DECL void close_descriptors();
-
-  // The read end of a connection used to interrupt the select call. This file
-  // descriptor is passed to select such that when it is time to stop, a single
-  // byte will be written on the other end of the connection and this
-  // descriptor will become readable.
-  int read_descriptor_;
-
-  // The write end of a connection used to interrupt the select call. A single
-  // byte may be written to this to wake up the select which is waiting for the
-  // other end to become readable.
-  int write_descriptor_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/pipe_select_interrupter.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // !defined(ASIO_HAS_EVENTFD)
-#endif // !defined(__SYMBIAN32__)
-#endif // !defined(__CYGWIN__)
-#endif // !defined(ASIO_WINDOWS_RUNTIME)
-#endif // !defined(ASIO_WINDOWS)
-
-#endif // ASIO_DETAIL_PIPE_SELECT_INTERRUPTER_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/pop_options.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/pop_options.hpp
deleted file mode 100644
index a41c1a0..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/pop_options.hpp
+++ /dev/null
@@ -1,131 +0,0 @@
-//
-// detail/pop_options.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-// No header guard
-
-#if defined(__COMO__)
-
-// Comeau C++
-
-#elif defined(__DMC__)
-
-// Digital Mars C++
-
-#elif defined(__INTEL_COMPILER) || defined(__ICL) \
-  || defined(__ICC) || defined(__ECC)
-
-// Intel C++
-
-# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
-#  pragma GCC visibility pop
-# endif // (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
-
-#elif defined(__clang__)
-
-// Clang
-
-# if defined(__OBJC__)
-#  if !defined(__APPLE_CC__) || (__APPLE_CC__ <= 1)
-#   if defined(ASIO_OBJC_WORKAROUND)
-#    undef Protocol
-#    undef id
-#    undef ASIO_OBJC_WORKAROUND
-#   endif
-#  endif
-# endif
-
-# if !defined(_WIN32) && !defined(__WIN32__) && !defined(WIN32)
-#  pragma GCC visibility pop
-# endif // !defined(_WIN32) && !defined(__WIN32__) && !defined(WIN32)
-
-#elif defined(__GNUC__)
-
-// GNU C++
-
-# if defined(__MINGW32__) || defined(__CYGWIN__)
-#  pragma pack (pop)
-# endif
-
-# if defined(__OBJC__)
-#  if !defined(__APPLE_CC__) || (__APPLE_CC__ <= 1)
-#   if defined(ASIO_OBJC_WORKAROUND)
-#    undef Protocol
-#    undef id
-#    undef ASIO_OBJC_WORKAROUND
-#   endif
-#  endif
-# endif
-
-# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
-#  pragma GCC visibility pop
-# endif // (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
-
-#elif defined(__KCC)
-
-// Kai C++
-
-#elif defined(__sgi)
-
-// SGI MIPSpro C++
-
-#elif defined(__DECCXX)
-
-// Compaq Tru64 Unix cxx
-
-#elif defined(__ghs)
-
-// Greenhills C++
-
-#elif defined(__BORLANDC__)
-
-// Borland C++
-
-# pragma option pop
-# pragma nopushoptwarn
-# pragma nopackwarning
-
-#elif defined(__MWERKS__)
-
-// Metrowerks CodeWarrior
-
-#elif defined(__SUNPRO_CC)
-
-// Sun Workshop Compiler C++
-
-#elif defined(__HP_aCC)
-
-// HP aCC
-
-#elif defined(__MRC__) || defined(__SC__)
-
-// MPW MrCpp or SCpp
-
-#elif defined(__IBMCPP__)
-
-// IBM Visual Age
-
-#elif defined(_MSC_VER)
-
-// Microsoft Visual C++
-//
-// Must remain the last #elif since some other vendors (Metrowerks, for example)
-// also #define _MSC_VER
-
-# pragma warning (pop)
-# pragma pack (pop)
-
-# if defined(__cplusplus_cli) || defined(__cplusplus_winrt)
-#  if defined(ASIO_CLR_WORKAROUND)
-#   undef generic
-#   undef ASIO_CLR_WORKAROUND
-#  endif
-# endif
-
-#endif
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/posix_event.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/posix_event.hpp
deleted file mode 100644
index 984b70f..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/posix_event.hpp
+++ /dev/null
@@ -1,126 +0,0 @@
-//
-// detail/posix_event.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_POSIX_EVENT_HPP
-#define ASIO_DETAIL_POSIX_EVENT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_PTHREADS)
-
-#include <pthread.h>
-#include "asio/detail/assert.hpp"
-#include "asio/detail/noncopyable.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class posix_event
-  : private noncopyable
-{
-public:
-  // Constructor.
-  ASIO_DECL posix_event();
-
-  // Destructor.
-  ~posix_event()
-  {
-    ::pthread_cond_destroy(&cond_);
-  }
-
-  // Signal the event. (Retained for backward compatibility.)
-  template <typename Lock>
-  void signal(Lock& lock)
-  {
-    this->signal_all(lock);
-  }
-
-  // Signal all waiters.
-  template <typename Lock>
-  void signal_all(Lock& lock)
-  {
-    ASIO_ASSERT(lock.locked());
-    (void)lock;
-    state_ |= 1;
-    ::pthread_cond_broadcast(&cond_); // Ignore EINVAL.
-  }
-
-  // Unlock the mutex and signal one waiter.
-  template <typename Lock>
-  void unlock_and_signal_one(Lock& lock)
-  {
-    ASIO_ASSERT(lock.locked());
-    state_ |= 1;
-    bool have_waiters = (state_ > 1);
-    lock.unlock();
-    if (have_waiters)
-      ::pthread_cond_signal(&cond_); // Ignore EINVAL.
-  }
-
-  // If there's a waiter, unlock the mutex and signal it.
-  template <typename Lock>
-  bool maybe_unlock_and_signal_one(Lock& lock)
-  {
-    ASIO_ASSERT(lock.locked());
-    state_ |= 1;
-    if (state_ > 1)
-    {
-      lock.unlock();
-      ::pthread_cond_signal(&cond_); // Ignore EINVAL.
-      return true;
-    }
-    return false;
-  }
-
-  // Reset the event.
-  template <typename Lock>
-  void clear(Lock& lock)
-  {
-    ASIO_ASSERT(lock.locked());
-    (void)lock;
-    state_ &= ~std::size_t(1);
-  }
-
-  // Wait for the event to become signalled.
-  template <typename Lock>
-  void wait(Lock& lock)
-  {
-    ASIO_ASSERT(lock.locked());
-    while ((state_ & 1) == 0)
-    {
-      state_ += 2;
-      ::pthread_cond_wait(&cond_, &lock.mutex().mutex_); // Ignore EINVAL.
-      state_ -= 2;
-    }
-  }
-
-private:
-  ::pthread_cond_t cond_;
-  std::size_t state_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/posix_event.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_HAS_PTHREADS)
-
-#endif // ASIO_DETAIL_POSIX_EVENT_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/posix_fd_set_adapter.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/posix_fd_set_adapter.hpp
deleted file mode 100644
index 2ea97b6..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/posix_fd_set_adapter.hpp
+++ /dev/null
@@ -1,118 +0,0 @@
-//
-// detail/posix_fd_set_adapter.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_POSIX_FD_SET_ADAPTER_HPP
-#define ASIO_DETAIL_POSIX_FD_SET_ADAPTER_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_WINDOWS) \
-  && !defined(__CYGWIN__) \
-  && !defined(ASIO_WINDOWS_RUNTIME)
-
-#include <cstring>
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/reactor_op_queue.hpp"
-#include "asio/detail/socket_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-// Adapts the FD_SET type to meet the Descriptor_Set concept's requirements.
-class posix_fd_set_adapter : noncopyable
-{
-public:
-  posix_fd_set_adapter()
-    : max_descriptor_(invalid_socket)
-  {
-    using namespace std; // Needed for memset on Solaris.
-    FD_ZERO(&fd_set_);
-  }
-
-  void reset()
-  {
-    using namespace std; // Needed for memset on Solaris.
-    FD_ZERO(&fd_set_);
-  }
-
-  bool set(socket_type descriptor)
-  {
-    if (descriptor < (socket_type)FD_SETSIZE)
-    {
-      if (max_descriptor_ == invalid_socket || descriptor > max_descriptor_)
-        max_descriptor_ = descriptor;
-      FD_SET(descriptor, &fd_set_);
-      return true;
-    }
-    return false;
-  }
-
-  void set(reactor_op_queue<socket_type>& operations, op_queue<operation>& ops)
-  {
-    reactor_op_queue<socket_type>::iterator i = operations.begin();
-    while (i != operations.end())
-    {
-      reactor_op_queue<socket_type>::iterator op_iter = i++;
-      if (!set(op_iter->first))
-      {
-        asio::error_code ec(error::fd_set_failure);
-        operations.cancel_operations(op_iter, ops, ec);
-      }
-    }
-  }
-
-  bool is_set(socket_type descriptor) const
-  {
-    return FD_ISSET(descriptor, &fd_set_) != 0;
-  }
-
-  operator fd_set*()
-  {
-    return &fd_set_;
-  }
-
-  socket_type max_descriptor() const
-  {
-    return max_descriptor_;
-  }
-
-  void perform(reactor_op_queue<socket_type>& operations,
-      op_queue<operation>& ops) const
-  {
-    reactor_op_queue<socket_type>::iterator i = operations.begin();
-    while (i != operations.end())
-    {
-      reactor_op_queue<socket_type>::iterator op_iter = i++;
-      if (is_set(op_iter->first))
-        operations.perform_operations(op_iter, ops);
-    }
-  }
-
-private:
-  mutable fd_set fd_set_;
-  socket_type max_descriptor_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_WINDOWS)
-       // && !defined(__CYGWIN__)
-       // && !defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_POSIX_FD_SET_ADAPTER_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/posix_mutex.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/posix_mutex.hpp
deleted file mode 100644
index 783bc56..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/posix_mutex.hpp
+++ /dev/null
@@ -1,76 +0,0 @@
-//
-// detail/posix_mutex.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_POSIX_MUTEX_HPP
-#define ASIO_DETAIL_POSIX_MUTEX_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_PTHREADS)
-
-#include <pthread.h>
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/scoped_lock.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class posix_event;
-
-class posix_mutex
-  : private noncopyable
-{
-public:
-  typedef asio::detail::scoped_lock<posix_mutex> scoped_lock;
-
-  // Constructor.
-  ASIO_DECL posix_mutex();
-
-  // Destructor.
-  ~posix_mutex()
-  {
-    ::pthread_mutex_destroy(&mutex_); // Ignore EBUSY.
-  }
-
-  // Lock the mutex.
-  void lock()
-  {
-    (void)::pthread_mutex_lock(&mutex_); // Ignore EINVAL.
-  }
-
-  // Unlock the mutex.
-  void unlock()
-  {
-    (void)::pthread_mutex_unlock(&mutex_); // Ignore EINVAL.
-  }
-
-private:
-  friend class posix_event;
-  ::pthread_mutex_t mutex_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/posix_mutex.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_HAS_PTHREADS)
-
-#endif // ASIO_DETAIL_POSIX_MUTEX_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/posix_signal_blocker.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/posix_signal_blocker.hpp
deleted file mode 100644
index d344c32..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/posix_signal_blocker.hpp
+++ /dev/null
@@ -1,85 +0,0 @@
-//
-// detail/posix_signal_blocker.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_POSIX_SIGNAL_BLOCKER_HPP
-#define ASIO_DETAIL_POSIX_SIGNAL_BLOCKER_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_PTHREADS)
-
-#include <csignal>
-#include <pthread.h>
-#include <signal.h>
-#include "asio/detail/noncopyable.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class posix_signal_blocker
-  : private noncopyable
-{
-public:
-  // Constructor blocks all signals for the calling thread.
-  posix_signal_blocker()
-    : blocked_(false)
-  {
-    sigset_t new_mask;
-    sigfillset(&new_mask);
-    blocked_ = (pthread_sigmask(SIG_BLOCK, &new_mask, &old_mask_) == 0);
-  }
-
-  // Destructor restores the previous signal mask.
-  ~posix_signal_blocker()
-  {
-    if (blocked_)
-      pthread_sigmask(SIG_SETMASK, &old_mask_, 0);
-  }
-
-  // Block all signals for the calling thread.
-  void block()
-  {
-    if (!blocked_)
-    {
-      sigset_t new_mask;
-      sigfillset(&new_mask);
-      blocked_ = (pthread_sigmask(SIG_BLOCK, &new_mask, &old_mask_) == 0);
-    }
-  }
-
-  // Restore the previous signal mask.
-  void unblock()
-  {
-    if (blocked_)
-      blocked_ = (pthread_sigmask(SIG_SETMASK, &old_mask_, 0) != 0);
-  }
-
-private:
-  // Have signals been blocked.
-  bool blocked_;
-
-  // The previous signal mask.
-  sigset_t old_mask_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_PTHREADS)
-
-#endif // ASIO_DETAIL_POSIX_SIGNAL_BLOCKER_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/posix_static_mutex.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/posix_static_mutex.hpp
deleted file mode 100644
index 72bd2f4..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/posix_static_mutex.hpp
+++ /dev/null
@@ -1,64 +0,0 @@
-//
-// detail/posix_static_mutex.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_POSIX_STATIC_MUTEX_HPP
-#define ASIO_DETAIL_POSIX_STATIC_MUTEX_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_PTHREADS)
-
-#include <pthread.h>
-#include "asio/detail/scoped_lock.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-struct posix_static_mutex
-{
-  typedef asio::detail::scoped_lock<posix_static_mutex> scoped_lock;
-
-  // Initialise the mutex.
-  void init()
-  {
-    // Nothing to do.
-  }
-
-  // Lock the mutex.
-  void lock()
-  {
-    (void)::pthread_mutex_lock(&mutex_); // Ignore EINVAL.
-  }
-
-  // Unlock the mutex.
-  void unlock()
-  {
-    (void)::pthread_mutex_unlock(&mutex_); // Ignore EINVAL.
-  }
-
-  ::pthread_mutex_t mutex_;
-};
-
-#define ASIO_POSIX_STATIC_MUTEX_INIT { PTHREAD_MUTEX_INITIALIZER }
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_PTHREADS)
-
-#endif // ASIO_DETAIL_POSIX_STATIC_MUTEX_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/posix_thread.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/posix_thread.hpp
deleted file mode 100644
index 2855c63..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/posix_thread.hpp
+++ /dev/null
@@ -1,105 +0,0 @@
-//
-// detail/posix_thread.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_POSIX_THREAD_HPP
-#define ASIO_DETAIL_POSIX_THREAD_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_PTHREADS)
-
-#include <pthread.h>
-#include "asio/detail/noncopyable.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-extern "C"
-{
-  ASIO_DECL void* asio_detail_posix_thread_function(void* arg);
-}
-
-class posix_thread
-  : private noncopyable
-{
-public:
-  // Constructor.
-  template <typename Function>
-  posix_thread(Function f, unsigned int = 0)
-    : joined_(false)
-  {
-    start_thread(new func<Function>(f));
-  }
-
-  // Destructor.
-  ASIO_DECL ~posix_thread();
-
-  // Wait for the thread to exit.
-  ASIO_DECL void join();
-
-private:
-  friend void* asio_detail_posix_thread_function(void* arg);
-
-  class func_base
-  {
-  public:
-    virtual ~func_base() {}
-    virtual void run() = 0;
-  };
-
-  struct auto_func_base_ptr
-  {
-    func_base* ptr;
-    ~auto_func_base_ptr() { delete ptr; }
-  };
-
-  template <typename Function>
-  class func
-    : public func_base
-  {
-  public:
-    func(Function f)
-      : f_(f)
-    {
-    }
-
-    virtual void run()
-    {
-      f_();
-    }
-
-  private:
-    Function f_;
-  };
-
-  ASIO_DECL void start_thread(func_base* arg);
-
-  ::pthread_t thread_;
-  bool joined_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/posix_thread.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_HAS_PTHREADS)
-
-#endif // ASIO_DETAIL_POSIX_THREAD_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/posix_tss_ptr.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/posix_tss_ptr.hpp
deleted file mode 100644
index fd7e9de..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/posix_tss_ptr.hpp
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// detail/posix_tss_ptr.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_POSIX_TSS_PTR_HPP
-#define ASIO_DETAIL_POSIX_TSS_PTR_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_PTHREADS)
-
-#include <pthread.h>
-#include "asio/detail/noncopyable.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-// Helper function to create thread-specific storage.
-ASIO_DECL void posix_tss_ptr_create(pthread_key_t& key);
-
-template <typename T>
-class posix_tss_ptr
-  : private noncopyable
-{
-public:
-  // Constructor.
-  posix_tss_ptr()
-  {
-    posix_tss_ptr_create(tss_key_);
-  }
-
-  // Destructor.
-  ~posix_tss_ptr()
-  {
-    ::pthread_key_delete(tss_key_);
-  }
-
-  // Get the value.
-  operator T*() const
-  {
-    return static_cast<T*>(::pthread_getspecific(tss_key_));
-  }
-
-  // Set the value.
-  void operator=(T* value)
-  {
-    ::pthread_setspecific(tss_key_, value);
-  }
-
-private:
-  // Thread-specific storage to allow unlocked access to determine whether a
-  // thread is a member of the pool.
-  pthread_key_t tss_key_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/posix_tss_ptr.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_HAS_PTHREADS)
-
-#endif // ASIO_DETAIL_POSIX_TSS_PTR_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/push_options.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/push_options.hpp
deleted file mode 100644
index 212c223..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/push_options.hpp
+++ /dev/null
@@ -1,166 +0,0 @@
-//
-// detail/push_options.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-// No header guard
-
-#if defined(__COMO__)
-
-// Comeau C++
-
-#elif defined(__DMC__)
-
-// Digital Mars C++
-
-#elif defined(__INTEL_COMPILER) || defined(__ICL) \
-  || defined(__ICC) || defined(__ECC)
-
-// Intel C++
-
-# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
-#  pragma GCC visibility push (default)
-# endif // (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
-
-#elif defined(__clang__)
-
-// Clang
-
-# if defined(__OBJC__)
-#  if !defined(__APPLE_CC__) || (__APPLE_CC__ <= 1)
-#   if !defined(ASIO_DISABLE_OBJC_WORKAROUND)
-#    if !defined(Protocol) && !defined(id)
-#     define Protocol cpp_Protocol
-#     define id cpp_id
-#     define ASIO_OBJC_WORKAROUND
-#    endif
-#   endif
-#  endif
-# endif
-
-# if !defined(_WIN32) && !defined(__WIN32__) && !defined(WIN32)
-#  pragma GCC visibility push (default)
-# endif // !defined(_WIN32) && !defined(__WIN32__) && !defined(WIN32)
-
-#elif defined(__GNUC__)
-
-// GNU C++
-
-# if defined(__MINGW32__) || defined(__CYGWIN__)
-#  pragma pack (push, 8)
-# endif
-
-# if defined(__OBJC__)
-#  if !defined(__APPLE_CC__) || (__APPLE_CC__ <= 1)
-#   if !defined(ASIO_DISABLE_OBJC_WORKAROUND)
-#    if !defined(Protocol) && !defined(id)
-#     define Protocol cpp_Protocol
-#     define id cpp_id
-#     define ASIO_OBJC_WORKAROUND
-#    endif
-#   endif
-#  endif
-# endif
-
-# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
-#  pragma GCC visibility push (default)
-# endif // (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
-
-#elif defined(__KCC)
-
-// Kai C++
-
-#elif defined(__sgi)
-
-// SGI MIPSpro C++
-
-#elif defined(__DECCXX)
-
-// Compaq Tru64 Unix cxx
-
-#elif defined(__ghs)
-
-// Greenhills C++
-
-#elif defined(__BORLANDC__)
-
-// Borland C++
-
-# pragma option push -a8 -b -Ve- -Vx- -w-inl -vi-
-# pragma nopushoptwarn
-# pragma nopackwarning
-# if !defined(__MT__)
-#  error Multithreaded RTL must be selected.
-# endif // !defined(__MT__)
-
-#elif defined(__MWERKS__)
-
-// Metrowerks CodeWarrior
-
-#elif defined(__SUNPRO_CC)
-
-// Sun Workshop Compiler C++
-
-#elif defined(__HP_aCC)
-
-// HP aCC
-
-#elif defined(__MRC__) || defined(__SC__)
-
-// MPW MrCpp or SCpp
-
-#elif defined(__IBMCPP__)
-
-// IBM Visual Age
-
-#elif defined(_MSC_VER)
-
-// Microsoft Visual C++
-//
-// Must remain the last #elif since some other vendors (Metrowerks, for example)
-// also #define _MSC_VER
-
-# pragma warning (disable:4103)
-# pragma warning (push)
-# pragma warning (disable:4127)
-# pragma warning (disable:4180)
-# pragma warning (disable:4244)
-# pragma warning (disable:4355)
-# pragma warning (disable:4510)
-# pragma warning (disable:4512)
-# pragma warning (disable:4610)
-# pragma warning (disable:4675)
-# if defined(_M_IX86) && defined(_Wp64)
-// The /Wp64 option is broken. If you want to check 64 bit portability, use a
-// 64 bit compiler!
-#  pragma warning (disable:4311)
-#  pragma warning (disable:4312)
-# endif // defined(_M_IX86) && defined(_Wp64)
-# pragma pack (push, 8)
-// Note that if the /Og optimisation flag is enabled with MSVC6, the compiler
-// has a tendency to incorrectly optimise away some calls to member template
-// functions, even though those functions contain code that should not be
-// optimised away! Therefore we will always disable this optimisation option
-// for the MSVC6 compiler.
-# if (_MSC_VER < 1300)
-#  pragma optimize ("g", off)
-# endif
-# if !defined(_MT)
-#  error Multithreaded RTL must be selected.
-# endif // !defined(_MT)
-
-# if defined(__cplusplus_cli) || defined(__cplusplus_winrt)
-#  if !defined(ASIO_DISABLE_CLR_WORKAROUND)
-#   if !defined(generic)
-#    define generic cpp_generic
-#    define ASIO_CLR_WORKAROUND
-#   endif
-#  endif
-# endif
-
-#endif
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactive_descriptor_service.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactive_descriptor_service.hpp
deleted file mode 100644
index e116ed2..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactive_descriptor_service.hpp
+++ /dev/null
@@ -1,322 +0,0 @@
-//
-// detail/reactive_descriptor_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_REACTIVE_DESCRIPTOR_SERVICE_HPP
-#define ASIO_DETAIL_REACTIVE_DESCRIPTOR_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_WINDOWS) \
-  && !defined(ASIO_WINDOWS_RUNTIME) \
-  && !defined(__CYGWIN__)
-
-#include "asio/buffer.hpp"
-#include "asio/io_service.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/descriptor_ops.hpp"
-#include "asio/detail/descriptor_read_op.hpp"
-#include "asio/detail/descriptor_write_op.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/reactive_null_buffers_op.hpp"
-#include "asio/detail/reactor.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class reactive_descriptor_service
-{
-public:
-  // The native type of a descriptor.
-  typedef int native_handle_type;
-
-  // The implementation type of the descriptor.
-  class implementation_type
-    : private asio::detail::noncopyable
-  {
-  public:
-    // Default constructor.
-    implementation_type()
-      : descriptor_(-1),
-        state_(0)
-    {
-    }
-
-  private:
-    // Only this service will have access to the internal values.
-    friend class reactive_descriptor_service;
-
-    // The native descriptor representation.
-    int descriptor_;
-
-    // The current state of the descriptor.
-    descriptor_ops::state_type state_;
-
-    // Per-descriptor data used by the reactor.
-    reactor::per_descriptor_data reactor_data_;
-  };
-
-  // Constructor.
-  ASIO_DECL reactive_descriptor_service(
-      asio::io_service& io_service);
-
-  // Destroy all user-defined handler objects owned by the service.
-  ASIO_DECL void shutdown_service();
-
-  // Construct a new descriptor implementation.
-  ASIO_DECL void construct(implementation_type& impl);
-
-  // Move-construct a new descriptor implementation.
-  ASIO_DECL void move_construct(implementation_type& impl,
-      implementation_type& other_impl);
-
-  // Move-assign from another descriptor implementation.
-  ASIO_DECL void move_assign(implementation_type& impl,
-      reactive_descriptor_service& other_service,
-      implementation_type& other_impl);
-
-  // Destroy a descriptor implementation.
-  ASIO_DECL void destroy(implementation_type& impl);
-
-  // Assign a native descriptor to a descriptor implementation.
-  ASIO_DECL asio::error_code assign(implementation_type& impl,
-      const native_handle_type& native_descriptor,
-      asio::error_code& ec);
-
-  // Determine whether the descriptor is open.
-  bool is_open(const implementation_type& impl) const
-  {
-    return impl.descriptor_ != -1;
-  }
-
-  // Destroy a descriptor implementation.
-  ASIO_DECL asio::error_code close(implementation_type& impl,
-      asio::error_code& ec);
-
-  // Get the native descriptor representation.
-  native_handle_type native_handle(const implementation_type& impl) const
-  {
-    return impl.descriptor_;
-  }
-
-  // Release ownership of the native descriptor representation.
-  ASIO_DECL native_handle_type release(implementation_type& impl);
-
-  // Cancel all operations associated with the descriptor.
-  ASIO_DECL asio::error_code cancel(implementation_type& impl,
-      asio::error_code& ec);
-
-  // Perform an IO control command on the descriptor.
-  template <typename IO_Control_Command>
-  asio::error_code io_control(implementation_type& impl,
-      IO_Control_Command& command, asio::error_code& ec)
-  {
-    descriptor_ops::ioctl(impl.descriptor_, impl.state_,
-        command.name(), static_cast<ioctl_arg_type*>(command.data()), ec);
-    return ec;
-  }
-
-  // Gets the non-blocking mode of the descriptor.
-  bool non_blocking(const implementation_type& impl) const
-  {
-    return (impl.state_ & descriptor_ops::user_set_non_blocking) != 0;
-  }
-
-  // Sets the non-blocking mode of the descriptor.
-  asio::error_code non_blocking(implementation_type& impl,
-      bool mode, asio::error_code& ec)
-  {
-    descriptor_ops::set_user_non_blocking(
-        impl.descriptor_, impl.state_, mode, ec);
-    return ec;
-  }
-
-  // Gets the non-blocking mode of the native descriptor implementation.
-  bool native_non_blocking(const implementation_type& impl) const
-  {
-    return (impl.state_ & descriptor_ops::internal_non_blocking) != 0;
-  }
-
-  // Sets the non-blocking mode of the native descriptor implementation.
-  asio::error_code native_non_blocking(implementation_type& impl,
-      bool mode, asio::error_code& ec)
-  {
-    descriptor_ops::set_internal_non_blocking(
-        impl.descriptor_, impl.state_, mode, ec);
-    return ec;
-  }
-
-  // Write some data to the descriptor.
-  template <typename ConstBufferSequence>
-  size_t write_some(implementation_type& impl,
-      const ConstBufferSequence& buffers, asio::error_code& ec)
-  {
-    buffer_sequence_adapter<asio::const_buffer,
-        ConstBufferSequence> bufs(buffers);
-
-    return descriptor_ops::sync_write(impl.descriptor_, impl.state_,
-        bufs.buffers(), bufs.count(), bufs.all_empty(), ec);
-  }
-
-  // Wait until data can be written without blocking.
-  size_t write_some(implementation_type& impl,
-      const null_buffers&, asio::error_code& ec)
-  {
-    // Wait for descriptor to become ready.
-    descriptor_ops::poll_write(impl.descriptor_, impl.state_, ec);
-
-    return 0;
-  }
-
-  // Start an asynchronous write. The data being sent must be valid for the
-  // lifetime of the asynchronous operation.
-  template <typename ConstBufferSequence, typename Handler>
-  void async_write_some(implementation_type& impl,
-      const ConstBufferSequence& buffers, Handler& handler)
-  {
-    bool is_continuation =
-      asio_handler_cont_helpers::is_continuation(handler);
-
-    // Allocate and construct an operation to wrap the handler.
-    typedef descriptor_write_op<ConstBufferSequence, Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(impl.descriptor_, buffers, handler);
-
-    ASIO_HANDLER_CREATION((p.p, "descriptor", &impl, "async_write_some"));
-
-    start_op(impl, reactor::write_op, p.p, is_continuation, true,
-        buffer_sequence_adapter<asio::const_buffer,
-          ConstBufferSequence>::all_empty(buffers));
-    p.v = p.p = 0;
-  }
-
-  // Start an asynchronous wait until data can be written without blocking.
-  template <typename Handler>
-  void async_write_some(implementation_type& impl,
-      const null_buffers&, Handler& handler)
-  {
-    bool is_continuation =
-      asio_handler_cont_helpers::is_continuation(handler);
-
-    // Allocate and construct an operation to wrap the handler.
-    typedef reactive_null_buffers_op<Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(handler);
-
-    ASIO_HANDLER_CREATION((p.p, "descriptor",
-          &impl, "async_write_some(null_buffers)"));
-
-    start_op(impl, reactor::write_op, p.p, is_continuation, false, false);
-    p.v = p.p = 0;
-  }
-
-  // Read some data from the stream. Returns the number of bytes read.
-  template <typename MutableBufferSequence>
-  size_t read_some(implementation_type& impl,
-      const MutableBufferSequence& buffers, asio::error_code& ec)
-  {
-    buffer_sequence_adapter<asio::mutable_buffer,
-        MutableBufferSequence> bufs(buffers);
-
-    return descriptor_ops::sync_read(impl.descriptor_, impl.state_,
-        bufs.buffers(), bufs.count(), bufs.all_empty(), ec);
-  }
-
-  // Wait until data can be read without blocking.
-  size_t read_some(implementation_type& impl,
-      const null_buffers&, asio::error_code& ec)
-  {
-    // Wait for descriptor to become ready.
-    descriptor_ops::poll_read(impl.descriptor_, impl.state_, ec);
-
-    return 0;
-  }
-
-  // Start an asynchronous read. The buffer for the data being read must be
-  // valid for the lifetime of the asynchronous operation.
-  template <typename MutableBufferSequence, typename Handler>
-  void async_read_some(implementation_type& impl,
-      const MutableBufferSequence& buffers, Handler& handler)
-  {
-    bool is_continuation =
-      asio_handler_cont_helpers::is_continuation(handler);
-
-    // Allocate and construct an operation to wrap the handler.
-    typedef descriptor_read_op<MutableBufferSequence, Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(impl.descriptor_, buffers, handler);
-
-    ASIO_HANDLER_CREATION((p.p, "descriptor", &impl, "async_read_some"));
-
-    start_op(impl, reactor::read_op, p.p, is_continuation, true,
-        buffer_sequence_adapter<asio::mutable_buffer,
-          MutableBufferSequence>::all_empty(buffers));
-    p.v = p.p = 0;
-  }
-
-  // Wait until data can be read without blocking.
-  template <typename Handler>
-  void async_read_some(implementation_type& impl,
-      const null_buffers&, Handler& handler)
-  {
-    bool is_continuation =
-      asio_handler_cont_helpers::is_continuation(handler);
-
-    // Allocate and construct an operation to wrap the handler.
-    typedef reactive_null_buffers_op<Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(handler);
-
-    ASIO_HANDLER_CREATION((p.p, "descriptor",
-          &impl, "async_read_some(null_buffers)"));
-
-    start_op(impl, reactor::read_op, p.p, is_continuation, false, false);
-    p.v = p.p = 0;
-  }
-
-private:
-  // Start the asynchronous operation.
-  ASIO_DECL void start_op(implementation_type& impl, int op_type,
-      reactor_op* op, bool is_continuation, bool is_non_blocking, bool noop);
-
-  // The selector that performs event demultiplexing for the service.
-  reactor& reactor_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/reactive_descriptor_service.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // !defined(ASIO_WINDOWS)
-       //   && !defined(ASIO_WINDOWS_RUNTIME)
-       //   && !defined(__CYGWIN__)
-
-#endif // ASIO_DETAIL_REACTIVE_DESCRIPTOR_SERVICE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactive_null_buffers_op.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactive_null_buffers_op.hpp
deleted file mode 100644
index b713817..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactive_null_buffers_op.hpp
+++ /dev/null
@@ -1,88 +0,0 @@
-//
-// detail/reactive_null_buffers_op.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_REACTIVE_NULL_BUFFERS_OP_HPP
-#define ASIO_DETAIL_REACTIVE_NULL_BUFFERS_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/reactor_op.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Handler>
-class reactive_null_buffers_op : public reactor_op
-{
-public:
-  ASIO_DEFINE_HANDLER_PTR(reactive_null_buffers_op);
-
-  reactive_null_buffers_op(Handler& handler)
-    : reactor_op(&reactive_null_buffers_op::do_perform,
-        &reactive_null_buffers_op::do_complete),
-      handler_(ASIO_MOVE_CAST(Handler)(handler))
-  {
-  }
-
-  static bool do_perform(reactor_op*)
-  {
-    return true;
-  }
-
-  static void do_complete(io_service_impl* owner, operation* base,
-      const asio::error_code& /*ec*/,
-      std::size_t /*bytes_transferred*/)
-  {
-    // Take ownership of the handler object.
-    reactive_null_buffers_op* o(static_cast<reactive_null_buffers_op*>(base));
-    ptr p = { asio::detail::addressof(o->handler_), o, o };
-
-    ASIO_HANDLER_COMPLETION((o));
-
-    // Make a copy of the handler so that the memory can be deallocated before
-    // the upcall is made. Even if we're not about to make an upcall, a
-    // sub-object of the handler may be the true owner of the memory associated
-    // with the handler. Consequently, a local copy of the handler is required
-    // to ensure that any owning sub-object remains valid until after we have
-    // deallocated the memory here.
-    detail::binder2<Handler, asio::error_code, std::size_t>
-      handler(o->handler_, o->ec_, o->bytes_transferred_);
-    p.h = asio::detail::addressof(handler.handler_);
-    p.reset();
-
-    // Make the upcall if required.
-    if (owner)
-    {
-      fenced_block b(fenced_block::half);
-      ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
-      asio_handler_invoke_helpers::invoke(handler, handler.handler_);
-      ASIO_HANDLER_INVOCATION_END;
-    }
-  }
-
-private:
-  Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_REACTIVE_NULL_BUFFERS_OP_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactive_serial_port_service.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactive_serial_port_service.hpp
deleted file mode 100644
index efac78e..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactive_serial_port_service.hpp
+++ /dev/null
@@ -1,234 +0,0 @@
-//
-// detail/reactive_serial_port_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_REACTIVE_SERIAL_PORT_SERVICE_HPP
-#define ASIO_DETAIL_REACTIVE_SERIAL_PORT_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_SERIAL_PORT)
-#if !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-
-#include <string>
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/serial_port_base.hpp"
-#include "asio/detail/descriptor_ops.hpp"
-#include "asio/detail/reactive_descriptor_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-// Extend reactive_descriptor_service to provide serial port support.
-class reactive_serial_port_service
-{
-public:
-  // The native type of a serial port.
-  typedef reactive_descriptor_service::native_handle_type native_handle_type;
-
-  // The implementation type of the serial port.
-  typedef reactive_descriptor_service::implementation_type implementation_type;
-
-  ASIO_DECL reactive_serial_port_service(
-      asio::io_service& io_service);
-
-  // Destroy all user-defined handler objects owned by the service.
-  ASIO_DECL void shutdown_service();
-
-  // Construct a new serial port implementation.
-  void construct(implementation_type& impl)
-  {
-    descriptor_service_.construct(impl);
-  }
-
-  // Move-construct a new serial port implementation.
-  void move_construct(implementation_type& impl,
-      implementation_type& other_impl)
-  {
-    descriptor_service_.move_construct(impl, other_impl);
-  }
-
-  // Move-assign from another serial port implementation.
-  void move_assign(implementation_type& impl,
-      reactive_serial_port_service& other_service,
-      implementation_type& other_impl)
-  {
-    descriptor_service_.move_assign(impl,
-        other_service.descriptor_service_, other_impl);
-  }
-
-  // Destroy a serial port implementation.
-  void destroy(implementation_type& impl)
-  {
-    descriptor_service_.destroy(impl);
-  }
-
-  // Open the serial port using the specified device name.
-  ASIO_DECL asio::error_code open(implementation_type& impl,
-      const std::string& device, asio::error_code& ec);
-
-  // Assign a native descriptor to a serial port implementation.
-  asio::error_code assign(implementation_type& impl,
-      const native_handle_type& native_descriptor,
-      asio::error_code& ec)
-  {
-    return descriptor_service_.assign(impl, native_descriptor, ec);
-  }
-
-  // Determine whether the serial port is open.
-  bool is_open(const implementation_type& impl) const
-  {
-    return descriptor_service_.is_open(impl);
-  }
-
-  // Destroy a serial port implementation.
-  asio::error_code close(implementation_type& impl,
-      asio::error_code& ec)
-  {
-    return descriptor_service_.close(impl, ec);
-  }
-
-  // Get the native serial port representation.
-  native_handle_type native_handle(implementation_type& impl)
-  {
-    return descriptor_service_.native_handle(impl);
-  }
-
-  // Cancel all operations associated with the serial port.
-  asio::error_code cancel(implementation_type& impl,
-      asio::error_code& ec)
-  {
-    return descriptor_service_.cancel(impl, ec);
-  }
-
-  // Set an option on the serial port.
-  template <typename SettableSerialPortOption>
-  asio::error_code set_option(implementation_type& impl,
-      const SettableSerialPortOption& option, asio::error_code& ec)
-  {
-    return do_set_option(impl,
-        &reactive_serial_port_service::store_option<SettableSerialPortOption>,
-        &option, ec);
-  }
-
-  // Get an option from the serial port.
-  template <typename GettableSerialPortOption>
-  asio::error_code get_option(const implementation_type& impl,
-      GettableSerialPortOption& option, asio::error_code& ec) const
-  {
-    return do_get_option(impl,
-        &reactive_serial_port_service::load_option<GettableSerialPortOption>,
-        &option, ec);
-  }
-
-  // Send a break sequence to the serial port.
-  asio::error_code send_break(implementation_type& impl,
-      asio::error_code& ec)
-  {
-    errno = 0;
-    descriptor_ops::error_wrapper(::tcsendbreak(
-          descriptor_service_.native_handle(impl), 0), ec);
-    return ec;
-  }
-
-  // Write the given data. Returns the number of bytes sent.
-  template <typename ConstBufferSequence>
-  size_t write_some(implementation_type& impl,
-      const ConstBufferSequence& buffers, asio::error_code& ec)
-  {
-    return descriptor_service_.write_some(impl, buffers, ec);
-  }
-
-  // Start an asynchronous write. The data being written must be valid for the
-  // lifetime of the asynchronous operation.
-  template <typename ConstBufferSequence, typename Handler>
-  void async_write_some(implementation_type& impl,
-      const ConstBufferSequence& buffers, Handler& handler)
-  {
-    descriptor_service_.async_write_some(impl, buffers, handler);
-  }
-
-  // Read some data. Returns the number of bytes received.
-  template <typename MutableBufferSequence>
-  size_t read_some(implementation_type& impl,
-      const MutableBufferSequence& buffers, asio::error_code& ec)
-  {
-    return descriptor_service_.read_some(impl, buffers, ec);
-  }
-
-  // Start an asynchronous read. The buffer for the data being received must be
-  // valid for the lifetime of the asynchronous operation.
-  template <typename MutableBufferSequence, typename Handler>
-  void async_read_some(implementation_type& impl,
-      const MutableBufferSequence& buffers, Handler& handler)
-  {
-    descriptor_service_.async_read_some(impl, buffers, handler);
-  }
-
-private:
-  // Function pointer type for storing a serial port option.
-  typedef asio::error_code (*store_function_type)(
-      const void*, termios&, asio::error_code&);
-
-  // Helper function template to store a serial port option.
-  template <typename SettableSerialPortOption>
-  static asio::error_code store_option(const void* option,
-      termios& storage, asio::error_code& ec)
-  {
-    return static_cast<const SettableSerialPortOption*>(option)->store(
-        storage, ec);
-  }
-
-  // Helper function to set a serial port option.
-  ASIO_DECL asio::error_code do_set_option(
-      implementation_type& impl, store_function_type store,
-      const void* option, asio::error_code& ec);
-
-  // Function pointer type for loading a serial port option.
-  typedef asio::error_code (*load_function_type)(
-      void*, const termios&, asio::error_code&);
-
-  // Helper function template to load a serial port option.
-  template <typename GettableSerialPortOption>
-  static asio::error_code load_option(void* option,
-      const termios& storage, asio::error_code& ec)
-  {
-    return static_cast<GettableSerialPortOption*>(option)->load(storage, ec);
-  }
-
-  // Helper function to get a serial port option.
-  ASIO_DECL asio::error_code do_get_option(
-      const implementation_type& impl, load_function_type load,
-      void* option, asio::error_code& ec) const;
-
-  // The implementation used for initiating asynchronous operations.
-  reactive_descriptor_service descriptor_service_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/reactive_serial_port_service.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-#endif // defined(ASIO_HAS_SERIAL_PORT)
-
-#endif // ASIO_DETAIL_REACTIVE_SERIAL_PORT_SERVICE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactive_socket_accept_op.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactive_socket_accept_op.hpp
deleted file mode 100644
index 0687e0f..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactive_socket_accept_op.hpp
+++ /dev/null
@@ -1,136 +0,0 @@
-//
-// detail/reactive_socket_accept_op.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_REACTIVE_SOCKET_ACCEPT_OP_HPP
-#define ASIO_DETAIL_REACTIVE_SOCKET_ACCEPT_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/reactor_op.hpp"
-#include "asio/detail/socket_holder.hpp"
-#include "asio/detail/socket_ops.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Socket, typename Protocol>
-class reactive_socket_accept_op_base : public reactor_op
-{
-public:
-  reactive_socket_accept_op_base(socket_type socket,
-      socket_ops::state_type state, Socket& peer, const Protocol& protocol,
-      typename Protocol::endpoint* peer_endpoint, func_type complete_func)
-    : reactor_op(&reactive_socket_accept_op_base::do_perform, complete_func),
-      socket_(socket),
-      state_(state),
-      peer_(peer),
-      protocol_(protocol),
-      peer_endpoint_(peer_endpoint)
-  {
-  }
-
-  static bool do_perform(reactor_op* base)
-  {
-    reactive_socket_accept_op_base* o(
-        static_cast<reactive_socket_accept_op_base*>(base));
-
-    std::size_t addrlen = o->peer_endpoint_ ? o->peer_endpoint_->capacity() : 0;
-    socket_type new_socket = invalid_socket;
-    bool result = socket_ops::non_blocking_accept(o->socket_,
-          o->state_, o->peer_endpoint_ ? o->peer_endpoint_->data() : 0,
-          o->peer_endpoint_ ? &addrlen : 0, o->ec_, new_socket);
-
-    // On success, assign new connection to peer socket object.
-    if (new_socket != invalid_socket)
-    {
-      socket_holder new_socket_holder(new_socket);
-      if (o->peer_endpoint_)
-        o->peer_endpoint_->resize(addrlen);
-      if (!o->peer_.assign(o->protocol_, new_socket, o->ec_))
-        new_socket_holder.release();
-    }
-
-    return result;
-  }
-
-private:
-  socket_type socket_;
-  socket_ops::state_type state_;
-  Socket& peer_;
-  Protocol protocol_;
-  typename Protocol::endpoint* peer_endpoint_;
-};
-
-template <typename Socket, typename Protocol, typename Handler>
-class reactive_socket_accept_op :
-  public reactive_socket_accept_op_base<Socket, Protocol>
-{
-public:
-  ASIO_DEFINE_HANDLER_PTR(reactive_socket_accept_op);
-
-  reactive_socket_accept_op(socket_type socket,
-      socket_ops::state_type state, Socket& peer, const Protocol& protocol,
-      typename Protocol::endpoint* peer_endpoint, Handler& handler)
-    : reactive_socket_accept_op_base<Socket, Protocol>(socket, state, peer,
-        protocol, peer_endpoint, &reactive_socket_accept_op::do_complete),
-      handler_(ASIO_MOVE_CAST(Handler)(handler))
-  {
-  }
-
-  static void do_complete(io_service_impl* owner, operation* base,
-      const asio::error_code& /*ec*/,
-      std::size_t /*bytes_transferred*/)
-  {
-    // Take ownership of the handler object.
-    reactive_socket_accept_op* o(static_cast<reactive_socket_accept_op*>(base));
-    ptr p = { asio::detail::addressof(o->handler_), o, o };
-
-    ASIO_HANDLER_COMPLETION((o));
-
-    // Make a copy of the handler so that the memory can be deallocated before
-    // the upcall is made. Even if we're not about to make an upcall, a
-    // sub-object of the handler may be the true owner of the memory associated
-    // with the handler. Consequently, a local copy of the handler is required
-    // to ensure that any owning sub-object remains valid until after we have
-    // deallocated the memory here.
-    detail::binder1<Handler, asio::error_code>
-      handler(o->handler_, o->ec_);
-    p.h = asio::detail::addressof(handler.handler_);
-    p.reset();
-
-    // Make the upcall if required.
-    if (owner)
-    {
-      fenced_block b(fenced_block::half);
-      ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_));
-      asio_handler_invoke_helpers::invoke(handler, handler.handler_);
-      ASIO_HANDLER_INVOCATION_END;
-    }
-  }
-
-private:
-  Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_REACTIVE_SOCKET_ACCEPT_OP_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactive_socket_connect_op.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactive_socket_connect_op.hpp
deleted file mode 100644
index bd9146a..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactive_socket_connect_op.hpp
+++ /dev/null
@@ -1,106 +0,0 @@
-//
-// detail/reactive_socket_connect_op.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_REACTIVE_SOCKET_CONNECT_OP_HPP
-#define ASIO_DETAIL_REACTIVE_SOCKET_CONNECT_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/reactor_op.hpp"
-#include "asio/detail/socket_ops.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class reactive_socket_connect_op_base : public reactor_op
-{
-public:
-  reactive_socket_connect_op_base(socket_type socket, func_type complete_func)
-    : reactor_op(&reactive_socket_connect_op_base::do_perform, complete_func),
-      socket_(socket)
-  {
-  }
-
-  static bool do_perform(reactor_op* base)
-  {
-    reactive_socket_connect_op_base* o(
-        static_cast<reactive_socket_connect_op_base*>(base));
-
-    return socket_ops::non_blocking_connect(o->socket_, o->ec_);
-  }
-
-private:
-  socket_type socket_;
-};
-
-template <typename Handler>
-class reactive_socket_connect_op : public reactive_socket_connect_op_base
-{
-public:
-  ASIO_DEFINE_HANDLER_PTR(reactive_socket_connect_op);
-
-  reactive_socket_connect_op(socket_type socket, Handler& handler)
-    : reactive_socket_connect_op_base(socket,
-        &reactive_socket_connect_op::do_complete),
-      handler_(ASIO_MOVE_CAST(Handler)(handler))
-  {
-  }
-
-  static void do_complete(io_service_impl* owner, operation* base,
-      const asio::error_code& /*ec*/,
-      std::size_t /*bytes_transferred*/)
-  {
-    // Take ownership of the handler object.
-    reactive_socket_connect_op* o
-      (static_cast<reactive_socket_connect_op*>(base));
-    ptr p = { asio::detail::addressof(o->handler_), o, o };
-
-    ASIO_HANDLER_COMPLETION((o));
-
-    // Make a copy of the handler so that the memory can be deallocated before
-    // the upcall is made. Even if we're not about to make an upcall, a
-    // sub-object of the handler may be the true owner of the memory associated
-    // with the handler. Consequently, a local copy of the handler is required
-    // to ensure that any owning sub-object remains valid until after we have
-    // deallocated the memory here.
-    detail::binder1<Handler, asio::error_code>
-      handler(o->handler_, o->ec_);
-    p.h = asio::detail::addressof(handler.handler_);
-    p.reset();
-
-    // Make the upcall if required.
-    if (owner)
-    {
-      fenced_block b(fenced_block::half);
-      ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_));
-      asio_handler_invoke_helpers::invoke(handler, handler);
-      ASIO_HANDLER_INVOCATION_END;
-    }
-  }
-
-private:
-  Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_REACTIVE_SOCKET_CONNECT_OP_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactive_socket_recv_op.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactive_socket_recv_op.hpp
deleted file mode 100644
index 4a1e9da..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactive_socket_recv_op.hpp
+++ /dev/null
@@ -1,123 +0,0 @@
-//
-// detail/reactive_socket_recv_op.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_REACTIVE_SOCKET_RECV_OP_HPP
-#define ASIO_DETAIL_REACTIVE_SOCKET_RECV_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/reactor_op.hpp"
-#include "asio/detail/socket_ops.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename MutableBufferSequence>
-class reactive_socket_recv_op_base : public reactor_op
-{
-public:
-  reactive_socket_recv_op_base(socket_type socket,
-      socket_ops::state_type state, const MutableBufferSequence& buffers,
-      socket_base::message_flags flags, func_type complete_func)
-    : reactor_op(&reactive_socket_recv_op_base::do_perform, complete_func),
-      socket_(socket),
-      state_(state),
-      buffers_(buffers),
-      flags_(flags)
-  {
-  }
-
-  static bool do_perform(reactor_op* base)
-  {
-    reactive_socket_recv_op_base* o(
-        static_cast<reactive_socket_recv_op_base*>(base));
-
-    buffer_sequence_adapter<asio::mutable_buffer,
-        MutableBufferSequence> bufs(o->buffers_);
-
-    return socket_ops::non_blocking_recv(o->socket_,
-        bufs.buffers(), bufs.count(), o->flags_,
-        (o->state_ & socket_ops::stream_oriented) != 0,
-        o->ec_, o->bytes_transferred_);
-  }
-
-private:
-  socket_type socket_;
-  socket_ops::state_type state_;
-  MutableBufferSequence buffers_;
-  socket_base::message_flags flags_;
-};
-
-template <typename MutableBufferSequence, typename Handler>
-class reactive_socket_recv_op :
-  public reactive_socket_recv_op_base<MutableBufferSequence>
-{
-public:
-  ASIO_DEFINE_HANDLER_PTR(reactive_socket_recv_op);
-
-  reactive_socket_recv_op(socket_type socket,
-      socket_ops::state_type state, const MutableBufferSequence& buffers,
-      socket_base::message_flags flags, Handler& handler)
-    : reactive_socket_recv_op_base<MutableBufferSequence>(socket, state,
-        buffers, flags, &reactive_socket_recv_op::do_complete),
-      handler_(ASIO_MOVE_CAST(Handler)(handler))
-  {
-  }
-
-  static void do_complete(io_service_impl* owner, operation* base,
-      const asio::error_code& /*ec*/,
-      std::size_t /*bytes_transferred*/)
-  {
-    // Take ownership of the handler object.
-    reactive_socket_recv_op* o(static_cast<reactive_socket_recv_op*>(base));
-    ptr p = { asio::detail::addressof(o->handler_), o, o };
-
-    ASIO_HANDLER_COMPLETION((o));
-
-    // Make a copy of the handler so that the memory can be deallocated before
-    // the upcall is made. Even if we're not about to make an upcall, a
-    // sub-object of the handler may be the true owner of the memory associated
-    // with the handler. Consequently, a local copy of the handler is required
-    // to ensure that any owning sub-object remains valid until after we have
-    // deallocated the memory here.
-    detail::binder2<Handler, asio::error_code, std::size_t>
-      handler(o->handler_, o->ec_, o->bytes_transferred_);
-    p.h = asio::detail::addressof(handler.handler_);
-    p.reset();
-
-    // Make the upcall if required.
-    if (owner)
-    {
-      fenced_block b(fenced_block::half);
-      ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
-      asio_handler_invoke_helpers::invoke(handler, handler.handler_);
-      ASIO_HANDLER_INVOCATION_END;
-    }
-  }
-
-private:
-  Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_REACTIVE_SOCKET_RECV_OP_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactive_socket_recvfrom_op.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactive_socket_recvfrom_op.hpp
deleted file mode 100644
index 1921071..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactive_socket_recvfrom_op.hpp
+++ /dev/null
@@ -1,133 +0,0 @@
-//
-// detail/reactive_socket_recvfrom_op.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_REACTIVE_SOCKET_RECVFROM_OP_HPP
-#define ASIO_DETAIL_REACTIVE_SOCKET_RECVFROM_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/reactor_op.hpp"
-#include "asio/detail/socket_ops.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename MutableBufferSequence, typename Endpoint>
-class reactive_socket_recvfrom_op_base : public reactor_op
-{
-public:
-  reactive_socket_recvfrom_op_base(socket_type socket, int protocol_type,
-      const MutableBufferSequence& buffers, Endpoint& endpoint,
-      socket_base::message_flags flags, func_type complete_func)
-    : reactor_op(&reactive_socket_recvfrom_op_base::do_perform, complete_func),
-      socket_(socket),
-      protocol_type_(protocol_type),
-      buffers_(buffers),
-      sender_endpoint_(endpoint),
-      flags_(flags)
-  {
-  }
-
-  static bool do_perform(reactor_op* base)
-  {
-    reactive_socket_recvfrom_op_base* o(
-        static_cast<reactive_socket_recvfrom_op_base*>(base));
-
-    buffer_sequence_adapter<asio::mutable_buffer,
-        MutableBufferSequence> bufs(o->buffers_);
-
-    std::size_t addr_len = o->sender_endpoint_.capacity();
-    bool result = socket_ops::non_blocking_recvfrom(o->socket_,
-        bufs.buffers(), bufs.count(), o->flags_,
-        o->sender_endpoint_.data(), &addr_len,
-        o->ec_, o->bytes_transferred_);
-
-    if (result && !o->ec_)
-      o->sender_endpoint_.resize(addr_len);
-
-    return result;
-  }
-
-private:
-  socket_type socket_;
-  int protocol_type_;
-  MutableBufferSequence buffers_;
-  Endpoint& sender_endpoint_;
-  socket_base::message_flags flags_;
-};
-
-template <typename MutableBufferSequence, typename Endpoint, typename Handler>
-class reactive_socket_recvfrom_op :
-  public reactive_socket_recvfrom_op_base<MutableBufferSequence, Endpoint>
-{
-public:
-  ASIO_DEFINE_HANDLER_PTR(reactive_socket_recvfrom_op);
-
-  reactive_socket_recvfrom_op(socket_type socket, int protocol_type,
-      const MutableBufferSequence& buffers, Endpoint& endpoint,
-      socket_base::message_flags flags, Handler& handler)
-    : reactive_socket_recvfrom_op_base<MutableBufferSequence, Endpoint>(
-        socket, protocol_type, buffers, endpoint, flags,
-        &reactive_socket_recvfrom_op::do_complete),
-      handler_(ASIO_MOVE_CAST(Handler)(handler))
-  {
-  }
-
-  static void do_complete(io_service_impl* owner, operation* base,
-      const asio::error_code& /*ec*/,
-      std::size_t /*bytes_transferred*/)
-  {
-    // Take ownership of the handler object.
-    reactive_socket_recvfrom_op* o(
-        static_cast<reactive_socket_recvfrom_op*>(base));
-    ptr p = { asio::detail::addressof(o->handler_), o, o };
-
-    ASIO_HANDLER_COMPLETION((o));
-
-    // Make a copy of the handler so that the memory can be deallocated before
-    // the upcall is made. Even if we're not about to make an upcall, a
-    // sub-object of the handler may be the true owner of the memory associated
-    // with the handler. Consequently, a local copy of the handler is required
-    // to ensure that any owning sub-object remains valid until after we have
-    // deallocated the memory here.
-    detail::binder2<Handler, asio::error_code, std::size_t>
-      handler(o->handler_, o->ec_, o->bytes_transferred_);
-    p.h = asio::detail::addressof(handler.handler_);
-    p.reset();
-
-    // Make the upcall if required.
-    if (owner)
-    {
-      fenced_block b(fenced_block::half);
-      ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
-      asio_handler_invoke_helpers::invoke(handler, handler.handler_);
-      ASIO_HANDLER_INVOCATION_END;
-    }
-  }
-
-private:
-  Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_REACTIVE_SOCKET_RECVFROM_OP_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactive_socket_recvmsg_op.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactive_socket_recvmsg_op.hpp
deleted file mode 100644
index a8c9df4..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactive_socket_recvmsg_op.hpp
+++ /dev/null
@@ -1,125 +0,0 @@
-//
-// detail/reactive_socket_recvmsg_op.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_REACTIVE_SOCKET_RECVMSG_OP_HPP
-#define ASIO_DETAIL_REACTIVE_SOCKET_RECVMSG_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/reactor_op.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/socket_base.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename MutableBufferSequence>
-class reactive_socket_recvmsg_op_base : public reactor_op
-{
-public:
-  reactive_socket_recvmsg_op_base(socket_type socket,
-      const MutableBufferSequence& buffers, socket_base::message_flags in_flags,
-      socket_base::message_flags& out_flags, func_type complete_func)
-    : reactor_op(&reactive_socket_recvmsg_op_base::do_perform, complete_func),
-      socket_(socket),
-      buffers_(buffers),
-      in_flags_(in_flags),
-      out_flags_(out_flags)
-  {
-  }
-
-  static bool do_perform(reactor_op* base)
-  {
-    reactive_socket_recvmsg_op_base* o(
-        static_cast<reactive_socket_recvmsg_op_base*>(base));
-
-    buffer_sequence_adapter<asio::mutable_buffer,
-        MutableBufferSequence> bufs(o->buffers_);
-
-    return socket_ops::non_blocking_recvmsg(o->socket_,
-        bufs.buffers(), bufs.count(),
-        o->in_flags_, o->out_flags_,
-        o->ec_, o->bytes_transferred_);
-  }
-
-private:
-  socket_type socket_;
-  MutableBufferSequence buffers_;
-  socket_base::message_flags in_flags_;
-  socket_base::message_flags& out_flags_;
-};
-
-template <typename MutableBufferSequence, typename Handler>
-class reactive_socket_recvmsg_op :
-  public reactive_socket_recvmsg_op_base<MutableBufferSequence>
-{
-public:
-  ASIO_DEFINE_HANDLER_PTR(reactive_socket_recvmsg_op);
-
-  reactive_socket_recvmsg_op(socket_type socket,
-      const MutableBufferSequence& buffers, socket_base::message_flags in_flags,
-      socket_base::message_flags& out_flags, Handler& handler)
-    : reactive_socket_recvmsg_op_base<MutableBufferSequence>(socket, buffers,
-        in_flags, out_flags, &reactive_socket_recvmsg_op::do_complete),
-      handler_(ASIO_MOVE_CAST(Handler)(handler))
-  {
-  }
-
-  static void do_complete(io_service_impl* owner, operation* base,
-      const asio::error_code& /*ec*/,
-      std::size_t /*bytes_transferred*/)
-  {
-    // Take ownership of the handler object.
-    reactive_socket_recvmsg_op* o(
-        static_cast<reactive_socket_recvmsg_op*>(base));
-    ptr p = { asio::detail::addressof(o->handler_), o, o };
-
-    ASIO_HANDLER_COMPLETION((o));
-
-    // Make a copy of the handler so that the memory can be deallocated before
-    // the upcall is made. Even if we're not about to make an upcall, a
-    // sub-object of the handler may be the true owner of the memory associated
-    // with the handler. Consequently, a local copy of the handler is required
-    // to ensure that any owning sub-object remains valid until after we have
-    // deallocated the memory here.
-    detail::binder2<Handler, asio::error_code, std::size_t>
-      handler(o->handler_, o->ec_, o->bytes_transferred_);
-    p.h = asio::detail::addressof(handler.handler_);
-    p.reset();
-
-    // Make the upcall if required.
-    if (owner)
-    {
-      fenced_block b(fenced_block::half);
-      ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
-      asio_handler_invoke_helpers::invoke(handler, handler.handler_);
-      ASIO_HANDLER_INVOCATION_END;
-    }
-  }
-
-private:
-  Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_REACTIVE_SOCKET_RECVMSG_OP_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactive_socket_send_op.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactive_socket_send_op.hpp
deleted file mode 100644
index af0b627..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactive_socket_send_op.hpp
+++ /dev/null
@@ -1,120 +0,0 @@
-//
-// detail/reactive_socket_send_op.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_REACTIVE_SOCKET_SEND_OP_HPP
-#define ASIO_DETAIL_REACTIVE_SOCKET_SEND_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/reactor_op.hpp"
-#include "asio/detail/socket_ops.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename ConstBufferSequence>
-class reactive_socket_send_op_base : public reactor_op
-{
-public:
-  reactive_socket_send_op_base(socket_type socket,
-      const ConstBufferSequence& buffers,
-      socket_base::message_flags flags, func_type complete_func)
-    : reactor_op(&reactive_socket_send_op_base::do_perform, complete_func),
-      socket_(socket),
-      buffers_(buffers),
-      flags_(flags)
-  {
-  }
-
-  static bool do_perform(reactor_op* base)
-  {
-    reactive_socket_send_op_base* o(
-        static_cast<reactive_socket_send_op_base*>(base));
-
-    buffer_sequence_adapter<asio::const_buffer,
-        ConstBufferSequence> bufs(o->buffers_);
-
-    return socket_ops::non_blocking_send(o->socket_,
-          bufs.buffers(), bufs.count(), o->flags_,
-          o->ec_, o->bytes_transferred_);
-  }
-
-private:
-  socket_type socket_;
-  ConstBufferSequence buffers_;
-  socket_base::message_flags flags_;
-};
-
-template <typename ConstBufferSequence, typename Handler>
-class reactive_socket_send_op :
-  public reactive_socket_send_op_base<ConstBufferSequence>
-{
-public:
-  ASIO_DEFINE_HANDLER_PTR(reactive_socket_send_op);
-
-  reactive_socket_send_op(socket_type socket,
-      const ConstBufferSequence& buffers,
-      socket_base::message_flags flags, Handler& handler)
-    : reactive_socket_send_op_base<ConstBufferSequence>(socket,
-        buffers, flags, &reactive_socket_send_op::do_complete),
-      handler_(ASIO_MOVE_CAST(Handler)(handler))
-  {
-  }
-
-  static void do_complete(io_service_impl* owner, operation* base,
-      const asio::error_code& /*ec*/,
-      std::size_t /*bytes_transferred*/)
-  {
-    // Take ownership of the handler object.
-    reactive_socket_send_op* o(static_cast<reactive_socket_send_op*>(base));
-    ptr p = { asio::detail::addressof(o->handler_), o, o };
-
-    ASIO_HANDLER_COMPLETION((o));
-
-    // Make a copy of the handler so that the memory can be deallocated before
-    // the upcall is made. Even if we're not about to make an upcall, a
-    // sub-object of the handler may be the true owner of the memory associated
-    // with the handler. Consequently, a local copy of the handler is required
-    // to ensure that any owning sub-object remains valid until after we have
-    // deallocated the memory here.
-    detail::binder2<Handler, asio::error_code, std::size_t>
-      handler(o->handler_, o->ec_, o->bytes_transferred_);
-    p.h = asio::detail::addressof(handler.handler_);
-    p.reset();
-
-    // Make the upcall if required.
-    if (owner)
-    {
-      fenced_block b(fenced_block::half);
-      ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
-      asio_handler_invoke_helpers::invoke(handler, handler.handler_);
-      ASIO_HANDLER_INVOCATION_END;
-    }
-  }
-
-private:
-  Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_REACTIVE_SOCKET_SEND_OP_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactive_socket_sendto_op.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactive_socket_sendto_op.hpp
deleted file mode 100644
index 28f7feb..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactive_socket_sendto_op.hpp
+++ /dev/null
@@ -1,123 +0,0 @@
-//
-// detail/reactive_socket_sendto_op.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_REACTIVE_SOCKET_SENDTO_OP_HPP
-#define ASIO_DETAIL_REACTIVE_SOCKET_SENDTO_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/reactor_op.hpp"
-#include "asio/detail/socket_ops.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename ConstBufferSequence, typename Endpoint>
-class reactive_socket_sendto_op_base : public reactor_op
-{
-public:
-  reactive_socket_sendto_op_base(socket_type socket,
-      const ConstBufferSequence& buffers, const Endpoint& endpoint,
-      socket_base::message_flags flags, func_type complete_func)
-    : reactor_op(&reactive_socket_sendto_op_base::do_perform, complete_func),
-      socket_(socket),
-      buffers_(buffers),
-      destination_(endpoint),
-      flags_(flags)
-  {
-  }
-
-  static bool do_perform(reactor_op* base)
-  {
-    reactive_socket_sendto_op_base* o(
-        static_cast<reactive_socket_sendto_op_base*>(base));
-
-    buffer_sequence_adapter<asio::const_buffer,
-        ConstBufferSequence> bufs(o->buffers_);
-
-    return socket_ops::non_blocking_sendto(o->socket_,
-          bufs.buffers(), bufs.count(), o->flags_,
-          o->destination_.data(), o->destination_.size(),
-          o->ec_, o->bytes_transferred_);
-  }
-
-private:
-  socket_type socket_;
-  ConstBufferSequence buffers_;
-  Endpoint destination_;
-  socket_base::message_flags flags_;
-};
-
-template <typename ConstBufferSequence, typename Endpoint, typename Handler>
-class reactive_socket_sendto_op :
-  public reactive_socket_sendto_op_base<ConstBufferSequence, Endpoint>
-{
-public:
-  ASIO_DEFINE_HANDLER_PTR(reactive_socket_sendto_op);
-
-  reactive_socket_sendto_op(socket_type socket,
-      const ConstBufferSequence& buffers, const Endpoint& endpoint,
-      socket_base::message_flags flags, Handler& handler)
-    : reactive_socket_sendto_op_base<ConstBufferSequence, Endpoint>(socket,
-        buffers, endpoint, flags, &reactive_socket_sendto_op::do_complete),
-      handler_(ASIO_MOVE_CAST(Handler)(handler))
-  {
-  }
-
-  static void do_complete(io_service_impl* owner, operation* base,
-      const asio::error_code& /*ec*/,
-      std::size_t /*bytes_transferred*/)
-  {
-    // Take ownership of the handler object.
-    reactive_socket_sendto_op* o(static_cast<reactive_socket_sendto_op*>(base));
-    ptr p = { asio::detail::addressof(o->handler_), o, o };
-
-    ASIO_HANDLER_COMPLETION((o));
-
-    // Make a copy of the handler so that the memory can be deallocated before
-    // the upcall is made. Even if we're not about to make an upcall, a
-    // sub-object of the handler may be the true owner of the memory associated
-    // with the handler. Consequently, a local copy of the handler is required
-    // to ensure that any owning sub-object remains valid until after we have
-    // deallocated the memory here.
-    detail::binder2<Handler, asio::error_code, std::size_t>
-      handler(o->handler_, o->ec_, o->bytes_transferred_);
-    p.h = asio::detail::addressof(handler.handler_);
-    p.reset();
-
-    // Make the upcall if required.
-    if (owner)
-    {
-      fenced_block b(fenced_block::half);
-      ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
-      asio_handler_invoke_helpers::invoke(handler, handler.handler_);
-      ASIO_HANDLER_INVOCATION_END;
-    }
-  }
-
-private:
-  Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_REACTIVE_SOCKET_SENDTO_OP_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactive_socket_service.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactive_socket_service.hpp
deleted file mode 100644
index 235fb4e..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactive_socket_service.hpp
+++ /dev/null
@@ -1,457 +0,0 @@
-//
-// detail/reactive_socket_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_REACTIVE_SOCKET_SERVICE_HPP
-#define ASIO_DETAIL_REACTIVE_SOCKET_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_HAS_IOCP)
-
-#include "asio/buffer.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/socket_base.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/reactive_null_buffers_op.hpp"
-#include "asio/detail/reactive_socket_accept_op.hpp"
-#include "asio/detail/reactive_socket_connect_op.hpp"
-#include "asio/detail/reactive_socket_recvfrom_op.hpp"
-#include "asio/detail/reactive_socket_sendto_op.hpp"
-#include "asio/detail/reactive_socket_service_base.hpp"
-#include "asio/detail/reactor.hpp"
-#include "asio/detail/reactor_op.hpp"
-#include "asio/detail/socket_holder.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/detail/socket_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Protocol>
-class reactive_socket_service :
-  public reactive_socket_service_base
-{
-public:
-  // The protocol type.
-  typedef Protocol protocol_type;
-
-  // The endpoint type.
-  typedef typename Protocol::endpoint endpoint_type;
-
-  // The native type of a socket.
-  typedef socket_type native_handle_type;
-
-  // The implementation type of the socket.
-  struct implementation_type :
-    reactive_socket_service_base::base_implementation_type
-  {
-    // Default constructor.
-    implementation_type()
-      : protocol_(endpoint_type().protocol())
-    {
-    }
-
-    // The protocol associated with the socket.
-    protocol_type protocol_;
-  };
-
-  // Constructor.
-  reactive_socket_service(asio::io_service& io_service)
-    : reactive_socket_service_base(io_service)
-  {
-  }
-
-  // Move-construct a new socket implementation.
-  void move_construct(implementation_type& impl,
-      implementation_type& other_impl)
-  {
-    this->base_move_construct(impl, other_impl);
-
-    impl.protocol_ = other_impl.protocol_;
-    other_impl.protocol_ = endpoint_type().protocol();
-  }
-
-  // Move-assign from another socket implementation.
-  void move_assign(implementation_type& impl,
-      reactive_socket_service_base& other_service,
-      implementation_type& other_impl)
-  {
-    this->base_move_assign(impl, other_service, other_impl);
-
-    impl.protocol_ = other_impl.protocol_;
-    other_impl.protocol_ = endpoint_type().protocol();
-  }
-
-  // Move-construct a new socket implementation from another protocol type.
-  template <typename Protocol1>
-  void converting_move_construct(implementation_type& impl,
-      typename reactive_socket_service<
-        Protocol1>::implementation_type& other_impl)
-  {
-    this->base_move_construct(impl, other_impl);
-
-    impl.protocol_ = protocol_type(other_impl.protocol_);
-    other_impl.protocol_ = typename Protocol1::endpoint().protocol();
-  }
-
-  // Open a new socket implementation.
-  asio::error_code open(implementation_type& impl,
-      const protocol_type& protocol, asio::error_code& ec)
-  {
-    if (!do_open(impl, protocol.family(),
-          protocol.type(), protocol.protocol(), ec))
-      impl.protocol_ = protocol;
-    return ec;
-  }
-
-  // Assign a native socket to a socket implementation.
-  asio::error_code assign(implementation_type& impl,
-      const protocol_type& protocol, const native_handle_type& native_socket,
-      asio::error_code& ec)
-  {
-    if (!do_assign(impl, protocol.type(), native_socket, ec))
-      impl.protocol_ = protocol;
-    return ec;
-  }
-
-  // Get the native socket representation.
-  native_handle_type native_handle(implementation_type& impl)
-  {
-    return impl.socket_;
-  }
-
-  // Bind the socket to the specified local endpoint.
-  asio::error_code bind(implementation_type& impl,
-      const endpoint_type& endpoint, asio::error_code& ec)
-  {
-    socket_ops::bind(impl.socket_, endpoint.data(), endpoint.size(), ec);
-    return ec;
-  }
-
-  // Set a socket option.
-  template <typename Option>
-  asio::error_code set_option(implementation_type& impl,
-      const Option& option, asio::error_code& ec)
-  {
-    socket_ops::setsockopt(impl.socket_, impl.state_,
-        option.level(impl.protocol_), option.name(impl.protocol_),
-        option.data(impl.protocol_), option.size(impl.protocol_), ec);
-    return ec;
-  }
-
-  // Set a socket option.
-  template <typename Option>
-  asio::error_code get_option(const implementation_type& impl,
-      Option& option, asio::error_code& ec) const
-  {
-    std::size_t size = option.size(impl.protocol_);
-    socket_ops::getsockopt(impl.socket_, impl.state_,
-        option.level(impl.protocol_), option.name(impl.protocol_),
-        option.data(impl.protocol_), &size, ec);
-    if (!ec)
-      option.resize(impl.protocol_, size);
-    return ec;
-  }
-
-  // Get the local endpoint.
-  endpoint_type local_endpoint(const implementation_type& impl,
-      asio::error_code& ec) const
-  {
-    endpoint_type endpoint;
-    std::size_t addr_len = endpoint.capacity();
-    if (socket_ops::getsockname(impl.socket_, endpoint.data(), &addr_len, ec))
-      return endpoint_type();
-    endpoint.resize(addr_len);
-    return endpoint;
-  }
-
-  // Get the remote endpoint.
-  endpoint_type remote_endpoint(const implementation_type& impl,
-      asio::error_code& ec) const
-  {
-    endpoint_type endpoint;
-    std::size_t addr_len = endpoint.capacity();
-    if (socket_ops::getpeername(impl.socket_,
-          endpoint.data(), &addr_len, false, ec))
-      return endpoint_type();
-    endpoint.resize(addr_len);
-    return endpoint;
-  }
-
-  // Send a datagram to the specified endpoint. Returns the number of bytes
-  // sent.
-  template <typename ConstBufferSequence>
-  size_t send_to(implementation_type& impl, const ConstBufferSequence& buffers,
-      const endpoint_type& destination, socket_base::message_flags flags,
-      asio::error_code& ec)
-  {
-    buffer_sequence_adapter<asio::const_buffer,
-        ConstBufferSequence> bufs(buffers);
-
-    return socket_ops::sync_sendto(impl.socket_, impl.state_,
-        bufs.buffers(), bufs.count(), flags,
-        destination.data(), destination.size(), ec);
-  }
-
-  // Wait until data can be sent without blocking.
-  size_t send_to(implementation_type& impl, const null_buffers&,
-      const endpoint_type&, socket_base::message_flags,
-      asio::error_code& ec)
-  {
-    // Wait for socket to become ready.
-    socket_ops::poll_write(impl.socket_, impl.state_, ec);
-
-    return 0;
-  }
-
-  // Start an asynchronous send. The data being sent must be valid for the
-  // lifetime of the asynchronous operation.
-  template <typename ConstBufferSequence, typename Handler>
-  void async_send_to(implementation_type& impl,
-      const ConstBufferSequence& buffers,
-      const endpoint_type& destination, socket_base::message_flags flags,
-      Handler& handler)
-  {
-    bool is_continuation =
-      asio_handler_cont_helpers::is_continuation(handler);
-
-    // Allocate and construct an operation to wrap the handler.
-    typedef reactive_socket_sendto_op<ConstBufferSequence,
-        endpoint_type, Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(impl.socket_, buffers, destination, flags, handler);
-
-    ASIO_HANDLER_CREATION((p.p, "socket", &impl, "async_send_to"));
-
-    start_op(impl, reactor::write_op, p.p, is_continuation, true, false);
-    p.v = p.p = 0;
-  }
-
-  // Start an asynchronous wait until data can be sent without blocking.
-  template <typename Handler>
-  void async_send_to(implementation_type& impl, const null_buffers&,
-      const endpoint_type&, socket_base::message_flags, Handler& handler)
-  {
-    bool is_continuation =
-      asio_handler_cont_helpers::is_continuation(handler);
-
-    // Allocate and construct an operation to wrap the handler.
-    typedef reactive_null_buffers_op<Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(handler);
-
-    ASIO_HANDLER_CREATION((p.p, "socket",
-          &impl, "async_send_to(null_buffers)"));
-
-    start_op(impl, reactor::write_op, p.p, is_continuation, false, false);
-    p.v = p.p = 0;
-  }
-
-  // Receive a datagram with the endpoint of the sender. Returns the number of
-  // bytes received.
-  template <typename MutableBufferSequence>
-  size_t receive_from(implementation_type& impl,
-      const MutableBufferSequence& buffers,
-      endpoint_type& sender_endpoint, socket_base::message_flags flags,
-      asio::error_code& ec)
-  {
-    buffer_sequence_adapter<asio::mutable_buffer,
-        MutableBufferSequence> bufs(buffers);
-
-    std::size_t addr_len = sender_endpoint.capacity();
-    std::size_t bytes_recvd = socket_ops::sync_recvfrom(
-        impl.socket_, impl.state_, bufs.buffers(), bufs.count(),
-        flags, sender_endpoint.data(), &addr_len, ec);
-
-    if (!ec)
-      sender_endpoint.resize(addr_len);
-
-    return bytes_recvd;
-  }
-
-  // Wait until data can be received without blocking.
-  size_t receive_from(implementation_type& impl, const null_buffers&,
-      endpoint_type& sender_endpoint, socket_base::message_flags,
-      asio::error_code& ec)
-  {
-    // Wait for socket to become ready.
-    socket_ops::poll_read(impl.socket_, impl.state_, ec);
-
-    // Reset endpoint since it can be given no sensible value at this time.
-    sender_endpoint = endpoint_type();
-
-    return 0;
-  }
-
-  // Start an asynchronous receive. The buffer for the data being received and
-  // the sender_endpoint object must both be valid for the lifetime of the
-  // asynchronous operation.
-  template <typename MutableBufferSequence, typename Handler>
-  void async_receive_from(implementation_type& impl,
-      const MutableBufferSequence& buffers, endpoint_type& sender_endpoint,
-      socket_base::message_flags flags, Handler& handler)
-  {
-    bool is_continuation =
-      asio_handler_cont_helpers::is_continuation(handler);
-
-    // Allocate and construct an operation to wrap the handler.
-    typedef reactive_socket_recvfrom_op<MutableBufferSequence,
-        endpoint_type, Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    int protocol = impl.protocol_.type();
-    p.p = new (p.v) op(impl.socket_, protocol,
-        buffers, sender_endpoint, flags, handler);
-
-    ASIO_HANDLER_CREATION((p.p, "socket",
-          &impl, "async_receive_from"));
-
-    start_op(impl,
-        (flags & socket_base::message_out_of_band)
-          ? reactor::except_op : reactor::read_op,
-        p.p, is_continuation, true, false);
-    p.v = p.p = 0;
-  }
-
-  // Wait until data can be received without blocking.
-  template <typename Handler>
-  void async_receive_from(implementation_type& impl,
-      const null_buffers&, endpoint_type& sender_endpoint,
-      socket_base::message_flags flags, Handler& handler)
-  {
-    bool is_continuation =
-      asio_handler_cont_helpers::is_continuation(handler);
-
-    // Allocate and construct an operation to wrap the handler.
-    typedef reactive_null_buffers_op<Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(handler);
-
-    ASIO_HANDLER_CREATION((p.p, "socket",
-          &impl, "async_receive_from(null_buffers)"));
-
-    // Reset endpoint since it can be given no sensible value at this time.
-    sender_endpoint = endpoint_type();
-
-    start_op(impl,
-        (flags & socket_base::message_out_of_band)
-          ? reactor::except_op : reactor::read_op,
-        p.p, is_continuation, false, false);
-    p.v = p.p = 0;
-  }
-
-  // Accept a new connection.
-  template <typename Socket>
-  asio::error_code accept(implementation_type& impl,
-      Socket& peer, endpoint_type* peer_endpoint, asio::error_code& ec)
-  {
-    // We cannot accept a socket that is already open.
-    if (peer.is_open())
-    {
-      ec = asio::error::already_open;
-      return ec;
-    }
-
-    std::size_t addr_len = peer_endpoint ? peer_endpoint->capacity() : 0;
-    socket_holder new_socket(socket_ops::sync_accept(impl.socket_,
-          impl.state_, peer_endpoint ? peer_endpoint->data() : 0,
-          peer_endpoint ? &addr_len : 0, ec));
-
-    // On success, assign new connection to peer socket object.
-    if (new_socket.get() != invalid_socket)
-    {
-      if (peer_endpoint)
-        peer_endpoint->resize(addr_len);
-      if (!peer.assign(impl.protocol_, new_socket.get(), ec))
-        new_socket.release();
-    }
-
-    return ec;
-  }
-
-  // Start an asynchronous accept. The peer and peer_endpoint objects
-  // must be valid until the accept's handler is invoked.
-  template <typename Socket, typename Handler>
-  void async_accept(implementation_type& impl, Socket& peer,
-      endpoint_type* peer_endpoint, Handler& handler)
-  {
-    bool is_continuation =
-      asio_handler_cont_helpers::is_continuation(handler);
-
-    // Allocate and construct an operation to wrap the handler.
-    typedef reactive_socket_accept_op<Socket, Protocol, Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(impl.socket_, impl.state_, peer,
-        impl.protocol_, peer_endpoint, handler);
-
-    ASIO_HANDLER_CREATION((p.p, "socket", &impl, "async_accept"));
-
-    start_accept_op(impl, p.p, is_continuation, peer.is_open());
-    p.v = p.p = 0;
-  }
-
-  // Connect the socket to the specified endpoint.
-  asio::error_code connect(implementation_type& impl,
-      const endpoint_type& peer_endpoint, asio::error_code& ec)
-  {
-    socket_ops::sync_connect(impl.socket_,
-        peer_endpoint.data(), peer_endpoint.size(), ec);
-    return ec;
-  }
-
-  // Start an asynchronous connect.
-  template <typename Handler>
-  void async_connect(implementation_type& impl,
-      const endpoint_type& peer_endpoint, Handler& handler)
-  {
-    bool is_continuation =
-      asio_handler_cont_helpers::is_continuation(handler);
-
-    // Allocate and construct an operation to wrap the handler.
-    typedef reactive_socket_connect_op<Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(impl.socket_, handler);
-
-    ASIO_HANDLER_CREATION((p.p, "socket", &impl, "async_connect"));
-
-    start_connect_op(impl, p.p, is_continuation,
-        peer_endpoint.data(), peer_endpoint.size());
-    p.v = p.p = 0;
-  }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_REACTIVE_SOCKET_SERVICE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactive_socket_service_base.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactive_socket_service_base.hpp
deleted file mode 100644
index b55053f..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactive_socket_service_base.hpp
+++ /dev/null
@@ -1,450 +0,0 @@
-//
-// detail/reactive_socket_service_base.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_REACTIVE_SOCKET_SERVICE_BASE_HPP
-#define ASIO_DETAIL_REACTIVE_SOCKET_SERVICE_BASE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_HAS_IOCP) \
-  && !defined(ASIO_WINDOWS_RUNTIME)
-
-#include "asio/buffer.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/socket_base.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/reactive_null_buffers_op.hpp"
-#include "asio/detail/reactive_socket_recv_op.hpp"
-#include "asio/detail/reactive_socket_recvmsg_op.hpp"
-#include "asio/detail/reactive_socket_send_op.hpp"
-#include "asio/detail/reactor.hpp"
-#include "asio/detail/reactor_op.hpp"
-#include "asio/detail/socket_holder.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/detail/socket_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class reactive_socket_service_base
-{
-public:
-  // The native type of a socket.
-  typedef socket_type native_handle_type;
-
-  // The implementation type of the socket.
-  struct base_implementation_type
-  {
-    // The native socket representation.
-    socket_type socket_;
-
-    // The current state of the socket.
-    socket_ops::state_type state_;
-
-    // Per-descriptor data used by the reactor.
-    reactor::per_descriptor_data reactor_data_;
-  };
-
-  // Constructor.
-  ASIO_DECL reactive_socket_service_base(
-      asio::io_service& io_service);
-
-  // Destroy all user-defined handler objects owned by the service.
-  ASIO_DECL void shutdown_service();
-
-  // Construct a new socket implementation.
-  ASIO_DECL void construct(base_implementation_type& impl);
-
-  // Move-construct a new socket implementation.
-  ASIO_DECL void base_move_construct(base_implementation_type& impl,
-      base_implementation_type& other_impl);
-
-  // Move-assign from another socket implementation.
-  ASIO_DECL void base_move_assign(base_implementation_type& impl,
-      reactive_socket_service_base& other_service,
-      base_implementation_type& other_impl);
-
-  // Destroy a socket implementation.
-  ASIO_DECL void destroy(base_implementation_type& impl);
-
-  // Determine whether the socket is open.
-  bool is_open(const base_implementation_type& impl) const
-  {
-    return impl.socket_ != invalid_socket;
-  }
-
-  // Destroy a socket implementation.
-  ASIO_DECL asio::error_code close(
-      base_implementation_type& impl, asio::error_code& ec);
-
-  // Get the native socket representation.
-  native_handle_type native_handle(base_implementation_type& impl)
-  {
-    return impl.socket_;
-  }
-
-  // Cancel all operations associated with the socket.
-  ASIO_DECL asio::error_code cancel(
-      base_implementation_type& impl, asio::error_code& ec);
-
-  // Determine whether the socket is at the out-of-band data mark.
-  bool at_mark(const base_implementation_type& impl,
-      asio::error_code& ec) const
-  {
-    return socket_ops::sockatmark(impl.socket_, ec);
-  }
-
-  // Determine the number of bytes available for reading.
-  std::size_t available(const base_implementation_type& impl,
-      asio::error_code& ec) const
-  {
-    return socket_ops::available(impl.socket_, ec);
-  }
-
-  // Place the socket into the state where it will listen for new connections.
-  asio::error_code listen(base_implementation_type& impl,
-      int backlog, asio::error_code& ec)
-  {
-    socket_ops::listen(impl.socket_, backlog, ec);
-    return ec;
-  }
-
-  // Perform an IO control command on the socket.
-  template <typename IO_Control_Command>
-  asio::error_code io_control(base_implementation_type& impl,
-      IO_Control_Command& command, asio::error_code& ec)
-  {
-    socket_ops::ioctl(impl.socket_, impl.state_, command.name(),
-        static_cast<ioctl_arg_type*>(command.data()), ec);
-    return ec;
-  }
-
-  // Gets the non-blocking mode of the socket.
-  bool non_blocking(const base_implementation_type& impl) const
-  {
-    return (impl.state_ & socket_ops::user_set_non_blocking) != 0;
-  }
-
-  // Sets the non-blocking mode of the socket.
-  asio::error_code non_blocking(base_implementation_type& impl,
-      bool mode, asio::error_code& ec)
-  {
-    socket_ops::set_user_non_blocking(impl.socket_, impl.state_, mode, ec);
-    return ec;
-  }
-
-  // Gets the non-blocking mode of the native socket implementation.
-  bool native_non_blocking(const base_implementation_type& impl) const
-  {
-    return (impl.state_ & socket_ops::internal_non_blocking) != 0;
-  }
-
-  // Sets the non-blocking mode of the native socket implementation.
-  asio::error_code native_non_blocking(base_implementation_type& impl,
-      bool mode, asio::error_code& ec)
-  {
-    socket_ops::set_internal_non_blocking(impl.socket_, impl.state_, mode, ec);
-    return ec;
-  }
-
-  // Disable sends or receives on the socket.
-  asio::error_code shutdown(base_implementation_type& impl,
-      socket_base::shutdown_type what, asio::error_code& ec)
-  {
-    socket_ops::shutdown(impl.socket_, what, ec);
-    return ec;
-  }
-
-  // Send the given data to the peer.
-  template <typename ConstBufferSequence>
-  size_t send(base_implementation_type& impl,
-      const ConstBufferSequence& buffers,
-      socket_base::message_flags flags, asio::error_code& ec)
-  {
-    buffer_sequence_adapter<asio::const_buffer,
-        ConstBufferSequence> bufs(buffers);
-
-    return socket_ops::sync_send(impl.socket_, impl.state_,
-        bufs.buffers(), bufs.count(), flags, bufs.all_empty(), ec);
-  }
-
-  // Wait until data can be sent without blocking.
-  size_t send(base_implementation_type& impl, const null_buffers&,
-      socket_base::message_flags, asio::error_code& ec)
-  {
-    // Wait for socket to become ready.
-    socket_ops::poll_write(impl.socket_, impl.state_, ec);
-
-    return 0;
-  }
-
-  // Start an asynchronous send. The data being sent must be valid for the
-  // lifetime of the asynchronous operation.
-  template <typename ConstBufferSequence, typename Handler>
-  void async_send(base_implementation_type& impl,
-      const ConstBufferSequence& buffers,
-      socket_base::message_flags flags, Handler& handler)
-  {
-    bool is_continuation =
-      asio_handler_cont_helpers::is_continuation(handler);
-
-    // Allocate and construct an operation to wrap the handler.
-    typedef reactive_socket_send_op<ConstBufferSequence, Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(impl.socket_, buffers, flags, handler);
-
-    ASIO_HANDLER_CREATION((p.p, "socket", &impl, "async_send"));
-
-    start_op(impl, reactor::write_op, p.p, is_continuation, true,
-        ((impl.state_ & socket_ops::stream_oriented)
-          && buffer_sequence_adapter<asio::const_buffer,
-            ConstBufferSequence>::all_empty(buffers)));
-    p.v = p.p = 0;
-  }
-
-  // Start an asynchronous wait until data can be sent without blocking.
-  template <typename Handler>
-  void async_send(base_implementation_type& impl, const null_buffers&,
-      socket_base::message_flags, Handler& handler)
-  {
-    bool is_continuation =
-      asio_handler_cont_helpers::is_continuation(handler);
-
-    // Allocate and construct an operation to wrap the handler.
-    typedef reactive_null_buffers_op<Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(handler);
-
-    ASIO_HANDLER_CREATION((p.p, "socket",
-          &impl, "async_send(null_buffers)"));
-
-    start_op(impl, reactor::write_op, p.p, is_continuation, false, false);
-    p.v = p.p = 0;
-  }
-
-  // Receive some data from the peer. Returns the number of bytes received.
-  template <typename MutableBufferSequence>
-  size_t receive(base_implementation_type& impl,
-      const MutableBufferSequence& buffers,
-      socket_base::message_flags flags, asio::error_code& ec)
-  {
-    buffer_sequence_adapter<asio::mutable_buffer,
-        MutableBufferSequence> bufs(buffers);
-
-    return socket_ops::sync_recv(impl.socket_, impl.state_,
-        bufs.buffers(), bufs.count(), flags, bufs.all_empty(), ec);
-  }
-
-  // Wait until data can be received without blocking.
-  size_t receive(base_implementation_type& impl, const null_buffers&,
-      socket_base::message_flags, asio::error_code& ec)
-  {
-    // Wait for socket to become ready.
-    socket_ops::poll_read(impl.socket_, impl.state_, ec);
-
-    return 0;
-  }
-
-  // Start an asynchronous receive. The buffer for the data being received
-  // must be valid for the lifetime of the asynchronous operation.
-  template <typename MutableBufferSequence, typename Handler>
-  void async_receive(base_implementation_type& impl,
-      const MutableBufferSequence& buffers,
-      socket_base::message_flags flags, Handler& handler)
-  {
-    bool is_continuation =
-      asio_handler_cont_helpers::is_continuation(handler);
-
-    // Allocate and construct an operation to wrap the handler.
-    typedef reactive_socket_recv_op<MutableBufferSequence, Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(impl.socket_, impl.state_, buffers, flags, handler);
-
-    ASIO_HANDLER_CREATION((p.p, "socket", &impl, "async_receive"));
-
-    start_op(impl,
-        (flags & socket_base::message_out_of_band)
-          ? reactor::except_op : reactor::read_op,
-        p.p, is_continuation,
-        (flags & socket_base::message_out_of_band) == 0,
-        ((impl.state_ & socket_ops::stream_oriented)
-          && buffer_sequence_adapter<asio::mutable_buffer,
-            MutableBufferSequence>::all_empty(buffers)));
-    p.v = p.p = 0;
-  }
-
-  // Wait until data can be received without blocking.
-  template <typename Handler>
-  void async_receive(base_implementation_type& impl, const null_buffers&,
-      socket_base::message_flags flags, Handler& handler)
-  {
-    bool is_continuation =
-      asio_handler_cont_helpers::is_continuation(handler);
-
-    // Allocate and construct an operation to wrap the handler.
-    typedef reactive_null_buffers_op<Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(handler);
-
-    ASIO_HANDLER_CREATION((p.p, "socket",
-          &impl, "async_receive(null_buffers)"));
-
-    start_op(impl,
-        (flags & socket_base::message_out_of_band)
-          ? reactor::except_op : reactor::read_op,
-        p.p, is_continuation, false, false);
-    p.v = p.p = 0;
-  }
-
-  // Receive some data with associated flags. Returns the number of bytes
-  // received.
-  template <typename MutableBufferSequence>
-  size_t receive_with_flags(base_implementation_type& impl,
-      const MutableBufferSequence& buffers,
-      socket_base::message_flags in_flags,
-      socket_base::message_flags& out_flags, asio::error_code& ec)
-  {
-    buffer_sequence_adapter<asio::mutable_buffer,
-        MutableBufferSequence> bufs(buffers);
-
-    return socket_ops::sync_recvmsg(impl.socket_, impl.state_,
-        bufs.buffers(), bufs.count(), in_flags, out_flags, ec);
-  }
-
-  // Wait until data can be received without blocking.
-  size_t receive_with_flags(base_implementation_type& impl,
-      const null_buffers&, socket_base::message_flags,
-      socket_base::message_flags& out_flags, asio::error_code& ec)
-  {
-    // Wait for socket to become ready.
-    socket_ops::poll_read(impl.socket_, impl.state_, ec);
-
-    // Clear out_flags, since we cannot give it any other sensible value when
-    // performing a null_buffers operation.
-    out_flags = 0;
-
-    return 0;
-  }
-
-  // Start an asynchronous receive. The buffer for the data being received
-  // must be valid for the lifetime of the asynchronous operation.
-  template <typename MutableBufferSequence, typename Handler>
-  void async_receive_with_flags(base_implementation_type& impl,
-      const MutableBufferSequence& buffers, socket_base::message_flags in_flags,
-      socket_base::message_flags& out_flags, Handler& handler)
-  {
-    bool is_continuation =
-      asio_handler_cont_helpers::is_continuation(handler);
-
-    // Allocate and construct an operation to wrap the handler.
-    typedef reactive_socket_recvmsg_op<MutableBufferSequence, Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(impl.socket_, buffers, in_flags, out_flags, handler);
-
-    ASIO_HANDLER_CREATION((p.p, "socket",
-          &impl, "async_receive_with_flags"));
-
-    start_op(impl,
-        (in_flags & socket_base::message_out_of_band)
-          ? reactor::except_op : reactor::read_op,
-        p.p, is_continuation,
-        (in_flags & socket_base::message_out_of_band) == 0, false);
-    p.v = p.p = 0;
-  }
-
-  // Wait until data can be received without blocking.
-  template <typename Handler>
-  void async_receive_with_flags(base_implementation_type& impl,
-      const null_buffers&, socket_base::message_flags in_flags,
-      socket_base::message_flags& out_flags, Handler& handler)
-  {
-    bool is_continuation =
-      asio_handler_cont_helpers::is_continuation(handler);
-
-    // Allocate and construct an operation to wrap the handler.
-    typedef reactive_null_buffers_op<Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(handler);
-
-    ASIO_HANDLER_CREATION((p.p, "socket", &impl,
-          "async_receive_with_flags(null_buffers)"));
-
-    // Clear out_flags, since we cannot give it any other sensible value when
-    // performing a null_buffers operation.
-    out_flags = 0;
-
-    start_op(impl,
-        (in_flags & socket_base::message_out_of_band)
-          ? reactor::except_op : reactor::read_op,
-        p.p, is_continuation, false, false);
-    p.v = p.p = 0;
-  }
-
-protected:
-  // Open a new socket implementation.
-  ASIO_DECL asio::error_code do_open(
-      base_implementation_type& impl, int af,
-      int type, int protocol, asio::error_code& ec);
-
-  // Assign a native socket to a socket implementation.
-  ASIO_DECL asio::error_code do_assign(
-      base_implementation_type& impl, int type,
-      const native_handle_type& native_socket, asio::error_code& ec);
-
-  // Start the asynchronous read or write operation.
-  ASIO_DECL void start_op(base_implementation_type& impl, int op_type,
-      reactor_op* op, bool is_continuation, bool is_non_blocking, bool noop);
-
-  // Start the asynchronous accept operation.
-  ASIO_DECL void start_accept_op(base_implementation_type& impl,
-      reactor_op* op, bool is_continuation, bool peer_is_open);
-
-  // Start the asynchronous connect operation.
-  ASIO_DECL void start_connect_op(base_implementation_type& impl,
-      reactor_op* op, bool is_continuation,
-      const socket_addr_type* addr, size_t addrlen);
-
-  // The selector that performs event demultiplexing for the service.
-  reactor& reactor_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/reactive_socket_service_base.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // !defined(ASIO_HAS_IOCP)
-       //   && !defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_REACTIVE_SOCKET_SERVICE_BASE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactor.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactor.hpp
deleted file mode 100644
index 29a5157..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactor.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-//
-// detail/reactor.hpp
-// ~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_REACTOR_HPP
-#define ASIO_DETAIL_REACTOR_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/reactor_fwd.hpp"
-
-#if defined(ASIO_HAS_EPOLL)
-# include "asio/detail/epoll_reactor.hpp"
-#elif defined(ASIO_HAS_KQUEUE)
-# include "asio/detail/kqueue_reactor.hpp"
-#elif defined(ASIO_HAS_DEV_POLL)
-# include "asio/detail/dev_poll_reactor.hpp"
-#elif defined(ASIO_WINDOWS_RUNTIME)
-# include "asio/detail/null_reactor.hpp"
-#else
-# include "asio/detail/select_reactor.hpp"
-#endif
-
-#endif // ASIO_DETAIL_REACTOR_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactor_fwd.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactor_fwd.hpp
deleted file mode 100644
index 2b6076c..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactor_fwd.hpp
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// detail/reactor_fwd.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_REACTOR_FWD_HPP
-#define ASIO_DETAIL_REACTOR_FWD_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-namespace asio {
-namespace detail {
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-typedef class null_reactor reactor;
-#elif defined(ASIO_HAS_IOCP)
-typedef class select_reactor reactor;
-#elif defined(ASIO_HAS_EPOLL)
-typedef class epoll_reactor reactor;
-#elif defined(ASIO_HAS_KQUEUE)
-typedef class kqueue_reactor reactor;
-#elif defined(ASIO_HAS_DEV_POLL)
-typedef class dev_poll_reactor reactor;
-#else
-typedef class select_reactor reactor;
-#endif
-
-} // namespace detail
-} // namespace asio
-
-#endif // ASIO_DETAIL_REACTOR_FWD_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactor_op.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactor_op.hpp
deleted file mode 100644
index b339ffd..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactor_op.hpp
+++ /dev/null
@@ -1,61 +0,0 @@
-//
-// detail/reactor_op.hpp
-// ~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_REACTOR_OP_HPP
-#define ASIO_DETAIL_REACTOR_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/operation.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class reactor_op
-  : public operation
-{
-public:
-  // The error code to be passed to the completion handler.
-  asio::error_code ec_;
-
-  // The number of bytes transferred, to be passed to the completion handler.
-  std::size_t bytes_transferred_;
-
-  // Perform the operation. Returns true if it is finished.
-  bool perform()
-  {
-    return perform_func_(this);
-  }
-
-protected:
-  typedef bool (*perform_func_type)(reactor_op*);
-
-  reactor_op(perform_func_type perform_func, func_type complete_func)
-    : operation(complete_func),
-      bytes_transferred_(0),
-      perform_func_(perform_func)
-  {
-  }
-
-private:
-  perform_func_type perform_func_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_REACTOR_OP_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactor_op_queue.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactor_op_queue.hpp
deleted file mode 100644
index efeacf7..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/reactor_op_queue.hpp
+++ /dev/null
@@ -1,168 +0,0 @@
-//
-// detail/reactor_op_queue.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_REACTOR_OP_QUEUE_HPP
-#define ASIO_DETAIL_REACTOR_OP_QUEUE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/hash_map.hpp"
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/op_queue.hpp"
-#include "asio/detail/reactor_op.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Descriptor>
-class reactor_op_queue
-  : private noncopyable
-{
-public:
-  typedef Descriptor key_type;
-
-  struct mapped_type : op_queue<reactor_op>
-  {
-    mapped_type() {}
-    mapped_type(const mapped_type&) {}
-    void operator=(const mapped_type&) {}
-  };
-
-  typedef typename hash_map<key_type, mapped_type>::value_type value_type;
-  typedef typename hash_map<key_type, mapped_type>::iterator iterator;
-
-  // Constructor.
-  reactor_op_queue()
-    : operations_()
-  {
-  }
-
-  // Obtain iterators to all registered descriptors.
-  iterator begin() { return operations_.begin(); }
-  iterator end() { return operations_.end(); }
-
-  // Add a new operation to the queue. Returns true if this is the only
-  // operation for the given descriptor, in which case the reactor's event
-  // demultiplexing function call may need to be interrupted and restarted.
-  bool enqueue_operation(Descriptor descriptor, reactor_op* op)
-  {
-    std::pair<iterator, bool> entry =
-      operations_.insert(value_type(descriptor, mapped_type()));
-    entry.first->second.push(op);
-    return entry.second;
-  }
-
-  // Cancel all operations associated with the descriptor identified by the
-  // supplied iterator. Any operations pending for the descriptor will be
-  // cancelled. Returns true if any operations were cancelled, in which case
-  // the reactor's event demultiplexing function may need to be interrupted and
-  // restarted.
-  bool cancel_operations(iterator i, op_queue<operation>& ops,
-      const asio::error_code& ec =
-        asio::error::operation_aborted)
-  {
-    if (i != operations_.end())
-    {
-      while (reactor_op* op = i->second.front())
-      {
-        op->ec_ = ec;
-        i->second.pop();
-        ops.push(op);
-      }
-      operations_.erase(i);
-      return true;
-    }
-
-    return false;
-  }
-
-  // Cancel all operations associated with the descriptor. Any operations
-  // pending for the descriptor will be cancelled. Returns true if any
-  // operations were cancelled, in which case the reactor's event
-  // demultiplexing function may need to be interrupted and restarted.
-  bool cancel_operations(Descriptor descriptor, op_queue<operation>& ops,
-      const asio::error_code& ec =
-        asio::error::operation_aborted)
-  {
-    return this->cancel_operations(operations_.find(descriptor), ops, ec);
-  }
-
-  // Whether there are no operations in the queue.
-  bool empty() const
-  {
-    return operations_.empty();
-  }
-
-  // Determine whether there are any operations associated with the descriptor.
-  bool has_operation(Descriptor descriptor) const
-  {
-    return operations_.find(descriptor) != operations_.end();
-  }
-
-  // Perform the operations corresponding to the descriptor identified by the
-  // supplied iterator. Returns true if there are still unfinished operations
-  // queued for the descriptor.
-  bool perform_operations(iterator i, op_queue<operation>& ops)
-  {
-    if (i != operations_.end())
-    {
-      while (reactor_op* op = i->second.front())
-      {
-        if (op->perform())
-        {
-          i->second.pop();
-          ops.push(op);
-        }
-        else
-        {
-          return true;
-        }
-      }
-      operations_.erase(i);
-    }
-    return false;
-  }
-
-  // Perform the operations corresponding to the descriptor. Returns true if
-  // there are still unfinished operations queued for the descriptor.
-  bool perform_operations(Descriptor descriptor, op_queue<operation>& ops)
-  {
-    return this->perform_operations(operations_.find(descriptor), ops);
-  }
-
-  // Get all operations owned by the queue.
-  void get_all_operations(op_queue<operation>& ops)
-  {
-    iterator i = operations_.begin();
-    while (i != operations_.end())
-    {
-      iterator op_iter = i++;
-      ops.push(op_iter->second);
-      operations_.erase(op_iter);
-    }
-  }
-
-private:
-  // The operations that are currently executing asynchronously.
-  hash_map<key_type, mapped_type> operations_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_REACTOR_OP_QUEUE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/regex_fwd.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/regex_fwd.hpp
deleted file mode 100644
index af825c6..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/regex_fwd.hpp
+++ /dev/null
@@ -1,35 +0,0 @@
-//
-// detail/regex_fwd.hpp
-// ~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_REGEX_FWD_HPP
-#define ASIO_DETAIL_REGEX_FWD_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#if defined(ASIO_HAS_BOOST_REGEX)
-
-#include <boost/regex_fwd.hpp>
-#include <boost/regex/v4/match_flags.hpp>
-
-namespace boost {
-
-template <class BidiIterator>
-struct sub_match;
-
-template <class BidiIterator, class Allocator>
-class match_results;
-
-} // namespace boost
-
-#endif // defined(ASIO_HAS_BOOST_REGEX)
-
-#endif // ASIO_DETAIL_REGEX_FWD_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/resolve_endpoint_op.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/resolve_endpoint_op.hpp
deleted file mode 100644
index 75897a0..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/resolve_endpoint_op.hpp
+++ /dev/null
@@ -1,121 +0,0 @@
-//
-// detail/resolve_endpoint_op.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_RESOLVER_ENDPOINT_OP_HPP
-#define ASIO_DETAIL_RESOLVER_ENDPOINT_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/ip/basic_resolver_iterator.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/operation.hpp"
-#include "asio/detail/socket_ops.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Protocol, typename Handler>
-class resolve_endpoint_op : public operation
-{
-public:
-  ASIO_DEFINE_HANDLER_PTR(resolve_endpoint_op);
-
-  typedef typename Protocol::endpoint endpoint_type;
-  typedef asio::ip::basic_resolver_iterator<Protocol> iterator_type;
-
-  resolve_endpoint_op(socket_ops::weak_cancel_token_type cancel_token,
-      const endpoint_type& endpoint, io_service_impl& ios, Handler& handler)
-    : operation(&resolve_endpoint_op::do_complete),
-      cancel_token_(cancel_token),
-      endpoint_(endpoint),
-      io_service_impl_(ios),
-      handler_(ASIO_MOVE_CAST(Handler)(handler))
-  {
-  }
-
-  static void do_complete(io_service_impl* owner, operation* base,
-      const asio::error_code& /*ec*/,
-      std::size_t /*bytes_transferred*/)
-  {
-    // Take ownership of the operation object.
-    resolve_endpoint_op* o(static_cast<resolve_endpoint_op*>(base));
-    ptr p = { asio::detail::addressof(o->handler_), o, o };
-
-    if (owner && owner != &o->io_service_impl_)
-    {
-      // The operation is being run on the worker io_service. Time to perform
-      // the resolver operation.
-    
-      // Perform the blocking endpoint resolution operation.
-      char host_name[NI_MAXHOST];
-      char service_name[NI_MAXSERV];
-      socket_ops::background_getnameinfo(o->cancel_token_, o->endpoint_.data(),
-          o->endpoint_.size(), host_name, NI_MAXHOST, service_name, NI_MAXSERV,
-          o->endpoint_.protocol().type(), o->ec_);
-      o->iter_ = iterator_type::create(o->endpoint_, host_name, service_name);
-
-      // Pass operation back to main io_service for completion.
-      o->io_service_impl_.post_deferred_completion(o);
-      p.v = p.p = 0;
-    }
-    else
-    {
-      // The operation has been returned to the main io_service. The completion
-      // handler is ready to be delivered.
-
-      ASIO_HANDLER_COMPLETION((o));
-
-      // Make a copy of the handler so that the memory can be deallocated
-      // before the upcall is made. Even if we're not about to make an upcall,
-      // a sub-object of the handler may be the true owner of the memory
-      // associated with the handler. Consequently, a local copy of the handler
-      // is required to ensure that any owning sub-object remains valid until
-      // after we have deallocated the memory here.
-      detail::binder2<Handler, asio::error_code, iterator_type>
-        handler(o->handler_, o->ec_, o->iter_);
-      p.h = asio::detail::addressof(handler.handler_);
-      p.reset();
-
-      if (owner)
-      {
-        fenced_block b(fenced_block::half);
-        ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, "..."));
-        asio_handler_invoke_helpers::invoke(handler, handler.handler_);
-        ASIO_HANDLER_INVOCATION_END;
-      }
-    }
-  }
-
-private:
-  socket_ops::weak_cancel_token_type cancel_token_;
-  endpoint_type endpoint_;
-  io_service_impl& io_service_impl_;
-  Handler handler_;
-  asio::error_code ec_;
-  iterator_type iter_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_RESOLVER_ENDPOINT_OP_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/resolve_op.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/resolve_op.hpp
deleted file mode 100644
index 0492fcd..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/resolve_op.hpp
+++ /dev/null
@@ -1,131 +0,0 @@
-//
-// detail/resolve_op.hpp
-// ~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_RESOLVE_OP_HPP
-#define ASIO_DETAIL_RESOLVE_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/ip/basic_resolver_iterator.hpp"
-#include "asio/ip/basic_resolver_query.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/operation.hpp"
-#include "asio/detail/socket_ops.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Protocol, typename Handler>
-class resolve_op : public operation
-{
-public:
-  ASIO_DEFINE_HANDLER_PTR(resolve_op);
-
-  typedef asio::ip::basic_resolver_query<Protocol> query_type;
-  typedef asio::ip::basic_resolver_iterator<Protocol> iterator_type;
-
-  resolve_op(socket_ops::weak_cancel_token_type cancel_token,
-      const query_type& query, io_service_impl& ios, Handler& handler)
-    : operation(&resolve_op::do_complete),
-      cancel_token_(cancel_token),
-      query_(query),
-      io_service_impl_(ios),
-      handler_(ASIO_MOVE_CAST(Handler)(handler)),
-      addrinfo_(0)
-  {
-  }
-
-  ~resolve_op()
-  {
-    if (addrinfo_)
-      socket_ops::freeaddrinfo(addrinfo_);
-  }
-
-  static void do_complete(io_service_impl* owner, operation* base,
-      const asio::error_code& /*ec*/,
-      std::size_t /*bytes_transferred*/)
-  {
-    // Take ownership of the operation object.
-    resolve_op* o(static_cast<resolve_op*>(base));
-    ptr p = { asio::detail::addressof(o->handler_), o, o };
-
-    if (owner && owner != &o->io_service_impl_)
-    {
-      // The operation is being run on the worker io_service. Time to perform
-      // the resolver operation.
-    
-      // Perform the blocking host resolution operation.
-      socket_ops::background_getaddrinfo(o->cancel_token_,
-          o->query_.host_name().c_str(), o->query_.service_name().c_str(),
-          o->query_.hints(), &o->addrinfo_, o->ec_);
-
-      // Pass operation back to main io_service for completion.
-      o->io_service_impl_.post_deferred_completion(o);
-      p.v = p.p = 0;
-    }
-    else
-    {
-      // The operation has been returned to the main io_service. The completion
-      // handler is ready to be delivered.
-
-      ASIO_HANDLER_COMPLETION((o));
-
-      // Make a copy of the handler so that the memory can be deallocated
-      // before the upcall is made. Even if we're not about to make an upcall,
-      // a sub-object of the handler may be the true owner of the memory
-      // associated with the handler. Consequently, a local copy of the handler
-      // is required to ensure that any owning sub-object remains valid until
-      // after we have deallocated the memory here.
-      detail::binder2<Handler, asio::error_code, iterator_type>
-        handler(o->handler_, o->ec_, iterator_type());
-      p.h = asio::detail::addressof(handler.handler_);
-      if (o->addrinfo_)
-      {
-        handler.arg2_ = iterator_type::create(o->addrinfo_,
-            o->query_.host_name(), o->query_.service_name());
-      }
-      p.reset();
-
-      if (owner)
-      {
-        fenced_block b(fenced_block::half);
-        ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, "..."));
-        asio_handler_invoke_helpers::invoke(handler, handler.handler_);
-        ASIO_HANDLER_INVOCATION_END;
-      }
-    }
-  }
-
-private:
-  socket_ops::weak_cancel_token_type cancel_token_;
-  query_type query_;
-  io_service_impl& io_service_impl_;
-  Handler handler_;
-  asio::error_code ec_;
-  asio::detail::addrinfo_type* addrinfo_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_RESOLVE_OP_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/resolver_service.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/resolver_service.hpp
deleted file mode 100644
index 7395dfe..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/resolver_service.hpp
+++ /dev/null
@@ -1,129 +0,0 @@
-//
-// detail/resolver_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_RESOLVER_SERVICE_HPP
-#define ASIO_DETAIL_RESOLVER_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_WINDOWS_RUNTIME)
-
-#include "asio/ip/basic_resolver_iterator.hpp"
-#include "asio/ip/basic_resolver_query.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/resolve_endpoint_op.hpp"
-#include "asio/detail/resolve_op.hpp"
-#include "asio/detail/resolver_service_base.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Protocol>
-class resolver_service : public resolver_service_base
-{
-public:
-  // The implementation type of the resolver. A cancellation token is used to
-  // indicate to the background thread that the operation has been cancelled.
-  typedef socket_ops::shared_cancel_token_type implementation_type;
-
-  // The endpoint type.
-  typedef typename Protocol::endpoint endpoint_type;
-
-  // The query type.
-  typedef asio::ip::basic_resolver_query<Protocol> query_type;
-
-  // The iterator type.
-  typedef asio::ip::basic_resolver_iterator<Protocol> iterator_type;
-
-  // Constructor.
-  resolver_service(asio::io_service& io_service)
-    : resolver_service_base(io_service)
-  {
-  }
-
-  // Resolve a query to a list of entries.
-  iterator_type resolve(implementation_type&, const query_type& query,
-      asio::error_code& ec)
-  {
-    asio::detail::addrinfo_type* address_info = 0;
-
-    socket_ops::getaddrinfo(query.host_name().c_str(),
-        query.service_name().c_str(), query.hints(), &address_info, ec);
-    auto_addrinfo auto_address_info(address_info);
-
-    return ec ? iterator_type() : iterator_type::create(
-        address_info, query.host_name(), query.service_name());
-  }
-
-  // Asynchronously resolve a query to a list of entries.
-  template <typename Handler>
-  void async_resolve(implementation_type& impl,
-      const query_type& query, Handler& handler)
-  {
-    // Allocate and construct an operation to wrap the handler.
-    typedef resolve_op<Protocol, Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(impl, query, io_service_impl_, handler);
-
-    ASIO_HANDLER_CREATION((p.p, "resolver", &impl, "async_resolve"));
-
-    start_resolve_op(p.p);
-    p.v = p.p = 0;
-  }
-
-  // Resolve an endpoint to a list of entries.
-  iterator_type resolve(implementation_type&,
-      const endpoint_type& endpoint, asio::error_code& ec)
-  {
-    char host_name[NI_MAXHOST];
-    char service_name[NI_MAXSERV];
-    socket_ops::sync_getnameinfo(endpoint.data(), endpoint.size(),
-        host_name, NI_MAXHOST, service_name, NI_MAXSERV,
-        endpoint.protocol().type(), ec);
-
-    return ec ? iterator_type() : iterator_type::create(
-        endpoint, host_name, service_name);
-  }
-
-  // Asynchronously resolve an endpoint to a list of entries.
-  template <typename Handler>
-  void async_resolve(implementation_type& impl,
-      const endpoint_type& endpoint, Handler& handler)
-  {
-    // Allocate and construct an operation to wrap the handler.
-    typedef resolve_endpoint_op<Protocol, Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(impl, endpoint, io_service_impl_, handler);
-
-    ASIO_HANDLER_CREATION((p.p, "resolver", &impl, "async_resolve"));
-
-    start_resolve_op(p.p);
-    p.v = p.p = 0;
-  }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_RESOLVER_SERVICE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/resolver_service_base.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/resolver_service_base.hpp
deleted file mode 100644
index 221ae91..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/resolver_service_base.hpp
+++ /dev/null
@@ -1,129 +0,0 @@
-//
-// detail/resolver_service_base.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_RESOLVER_SERVICE_BASE_HPP
-#define ASIO_DETAIL_RESOLVER_SERVICE_BASE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/detail/mutex.hpp"
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/operation.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/scoped_ptr.hpp"
-#include "asio/detail/thread.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class resolver_service_base
-{
-public:
-  // The implementation type of the resolver. A cancellation token is used to
-  // indicate to the background thread that the operation has been cancelled.
-  typedef socket_ops::shared_cancel_token_type implementation_type;
-
-  // Constructor.
-  ASIO_DECL resolver_service_base(asio::io_service& io_service);
-
-  // Destructor.
-  ASIO_DECL ~resolver_service_base();
-
-  // Destroy all user-defined handler objects owned by the service.
-  ASIO_DECL void shutdown_service();
-
-  // Perform any fork-related housekeeping.
-  ASIO_DECL void fork_service(
-      asio::io_service::fork_event fork_ev);
-
-  // Construct a new resolver implementation.
-  ASIO_DECL void construct(implementation_type& impl);
-
-  // Destroy a resolver implementation.
-  ASIO_DECL void destroy(implementation_type&);
-
-  // Cancel pending asynchronous operations.
-  ASIO_DECL void cancel(implementation_type& impl);
-
-protected:
-  // Helper function to start an asynchronous resolve operation.
-  ASIO_DECL void start_resolve_op(operation* op);
-
-#if !defined(ASIO_WINDOWS_RUNTIME)
-  // Helper class to perform exception-safe cleanup of addrinfo objects.
-  class auto_addrinfo
-    : private asio::detail::noncopyable
-  {
-  public:
-    explicit auto_addrinfo(asio::detail::addrinfo_type* ai)
-      : ai_(ai)
-    {
-    }
-
-    ~auto_addrinfo()
-    {
-      if (ai_)
-        socket_ops::freeaddrinfo(ai_);
-    }
-
-    operator asio::detail::addrinfo_type*()
-    {
-      return ai_;
-    }
-
-  private:
-    asio::detail::addrinfo_type* ai_;
-  };
-#endif // !defined(ASIO_WINDOWS_RUNTIME)
-
-  // Helper class to run the work io_service in a thread.
-  class work_io_service_runner;
-
-  // Start the work thread if it's not already running.
-  ASIO_DECL void start_work_thread();
-
-  // The io_service implementation used to post completions.
-  io_service_impl& io_service_impl_;
-
-private:
-  // Mutex to protect access to internal data.
-  asio::detail::mutex mutex_;
-
-  // Private io_service used for performing asynchronous host resolution.
-  asio::detail::scoped_ptr<asio::io_service> work_io_service_;
-
-  // The work io_service implementation used to post completions.
-  io_service_impl& work_io_service_impl_;
-
-  // Work for the private io_service to perform.
-  asio::detail::scoped_ptr<asio::io_service::work> work_;
-
-  // Thread used for running the work io_service's run loop.
-  asio::detail::scoped_ptr<asio::detail::thread> work_thread_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/resolver_service_base.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_DETAIL_RESOLVER_SERVICE_BASE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/scoped_lock.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/scoped_lock.hpp
deleted file mode 100644
index 27d6c8f..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/scoped_lock.hpp
+++ /dev/null
@@ -1,101 +0,0 @@
-//
-// detail/scoped_lock.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_SCOPED_LOCK_HPP
-#define ASIO_DETAIL_SCOPED_LOCK_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/noncopyable.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-// Helper class to lock and unlock a mutex automatically.
-template <typename Mutex>
-class scoped_lock
-  : private noncopyable
-{
-public:
-  // Tag type used to distinguish constructors.
-  enum adopt_lock_t { adopt_lock };
-
-  // Constructor adopts a lock that is already held.
-  scoped_lock(Mutex& m, adopt_lock_t)
-    : mutex_(m),
-      locked_(true)
-  {
-  }
-
-  // Constructor acquires the lock.
-  explicit scoped_lock(Mutex& m)
-    : mutex_(m)
-  {
-    mutex_.lock();
-    locked_ = true;
-  }
-
-  // Destructor releases the lock.
-  ~scoped_lock()
-  {
-    if (locked_)
-      mutex_.unlock();
-  }
-
-  // Explicitly acquire the lock.
-  void lock()
-  {
-    if (!locked_)
-    {
-      mutex_.lock();
-      locked_ = true;
-    }
-  }
-
-  // Explicitly release the lock.
-  void unlock()
-  {
-    if (locked_)
-    {
-      mutex_.unlock();
-      locked_ = false;
-    }
-  }
-
-  // Test whether the lock is held.
-  bool locked() const
-  {
-    return locked_;
-  }
-
-  // Get the underlying mutex.
-  Mutex& mutex()
-  {
-    return mutex_;
-  }
-
-private:
-  // The underlying mutex.
-  Mutex& mutex_;
-
-  // Whether the mutex is currently locked or unlocked.
-  bool locked_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_SCOPED_LOCK_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/scoped_ptr.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/scoped_ptr.hpp
deleted file mode 100644
index 23aa0ce..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/scoped_ptr.hpp
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// detail/scoped_ptr.hpp
-// ~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_SCOPED_PTR_HPP
-#define ASIO_DETAIL_SCOPED_PTR_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename T>
-class scoped_ptr
-{
-public:
-  // Constructor.
-  explicit scoped_ptr(T* p = 0)
-    : p_(p)
-  {
-  }
-
-  // Destructor.
-  ~scoped_ptr()
-  {
-    delete p_;
-  }
-
-  // Access.
-  T* get()
-  {
-    return p_;
-  }
-
-  // Access.
-  T* operator->()
-  {
-    return p_;
-  }
-
-  // Dereference.
-  T& operator*()
-  {
-    return *p_;
-  }
-
-  // Reset pointer.
-  void reset(T* p = 0)
-  {
-    delete p_;
-    p_ = p;
-  }
-
-private:
-  // Disallow copying and assignment.
-  scoped_ptr(const scoped_ptr&);
-  scoped_ptr& operator=(const scoped_ptr&);
-
-  T* p_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_SCOPED_PTR_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/select_interrupter.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/select_interrupter.hpp
deleted file mode 100644
index 4db8350..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/select_interrupter.hpp
+++ /dev/null
@@ -1,46 +0,0 @@
-//
-// detail/select_interrupter.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_SELECT_INTERRUPTER_HPP
-#define ASIO_DETAIL_SELECT_INTERRUPTER_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_WINDOWS_RUNTIME)
-
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) || defined(__SYMBIAN32__)
-# include "asio/detail/socket_select_interrupter.hpp"
-#elif defined(ASIO_HAS_EVENTFD)
-# include "asio/detail/eventfd_select_interrupter.hpp"
-#else
-# include "asio/detail/pipe_select_interrupter.hpp"
-#endif
-
-namespace asio {
-namespace detail {
-
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__) || defined(__SYMBIAN32__)
-typedef socket_select_interrupter select_interrupter;
-#elif defined(ASIO_HAS_EVENTFD)
-typedef eventfd_select_interrupter select_interrupter;
-#else
-typedef pipe_select_interrupter select_interrupter;
-#endif
-
-} // namespace detail
-} // namespace asio
-
-#endif // !defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_SELECT_INTERRUPTER_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/select_reactor.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/select_reactor.hpp
deleted file mode 100644
index a6c0cc5..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/select_reactor.hpp
+++ /dev/null
@@ -1,219 +0,0 @@
-//
-// detail/select_reactor.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_SELECT_REACTOR_HPP
-#define ASIO_DETAIL_SELECT_REACTOR_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_IOCP) \
-  || (!defined(ASIO_HAS_DEV_POLL) \
-      && !defined(ASIO_HAS_EPOLL) \
-      && !defined(ASIO_HAS_KQUEUE) \
-      && !defined(ASIO_WINDOWS_RUNTIME))
-
-#include <cstddef>
-#include "asio/detail/fd_set_adapter.hpp"
-#include "asio/detail/limits.hpp"
-#include "asio/detail/mutex.hpp"
-#include "asio/detail/op_queue.hpp"
-#include "asio/detail/reactor_op.hpp"
-#include "asio/detail/reactor_op_queue.hpp"
-#include "asio/detail/select_interrupter.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/timer_queue_base.hpp"
-#include "asio/detail/timer_queue_set.hpp"
-#include "asio/detail/wait_op.hpp"
-#include "asio/io_service.hpp"
-
-#if defined(ASIO_HAS_IOCP)
-# include "asio/detail/thread.hpp"
-#endif // defined(ASIO_HAS_IOCP)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class select_reactor
-  : public asio::detail::service_base<select_reactor>
-{
-public:
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  enum op_types { read_op = 0, write_op = 1, except_op = 2,
-    max_select_ops = 3, connect_op = 3, max_ops = 4 };
-#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  enum op_types { read_op = 0, write_op = 1, except_op = 2,
-    max_select_ops = 3, connect_op = 1, max_ops = 3 };
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
-  // Per-descriptor data.
-  struct per_descriptor_data
-  {
-  };
-
-  // Constructor.
-  ASIO_DECL select_reactor(asio::io_service& io_service);
-
-  // Destructor.
-  ASIO_DECL ~select_reactor();
-
-  // Destroy all user-defined handler objects owned by the service.
-  ASIO_DECL void shutdown_service();
-
-  // Recreate internal descriptors following a fork.
-  ASIO_DECL void fork_service(
-      asio::io_service::fork_event fork_ev);
-
-  // Initialise the task, but only if the reactor is not in its own thread.
-  ASIO_DECL void init_task();
-
-  // Register a socket with the reactor. Returns 0 on success, system error
-  // code on failure.
-  ASIO_DECL int register_descriptor(socket_type, per_descriptor_data&);
-
-  // Register a descriptor with an associated single operation. Returns 0 on
-  // success, system error code on failure.
-  ASIO_DECL int register_internal_descriptor(
-      int op_type, socket_type descriptor,
-      per_descriptor_data& descriptor_data, reactor_op* op);
-
-  // Post a reactor operation for immediate completion.
-  void post_immediate_completion(reactor_op* op, bool is_continuation)
-  {
-    io_service_.post_immediate_completion(op, is_continuation);
-  }
-
-  // Start a new operation. The reactor operation will be performed when the
-  // given descriptor is flagged as ready, or an error has occurred.
-  ASIO_DECL void start_op(int op_type, socket_type descriptor,
-      per_descriptor_data&, reactor_op* op, bool is_continuation, bool);
-
-  // Cancel all operations associated with the given descriptor. The
-  // handlers associated with the descriptor will be invoked with the
-  // operation_aborted error.
-  ASIO_DECL void cancel_ops(socket_type descriptor, per_descriptor_data&);
-
-  // Cancel any operations that are running against the descriptor and remove
-  // its registration from the reactor.
-  ASIO_DECL void deregister_descriptor(socket_type descriptor,
-      per_descriptor_data&, bool closing);
-
-  // Remote the descriptor's registration from the reactor.
-  ASIO_DECL void deregister_internal_descriptor(
-      socket_type descriptor, per_descriptor_data& descriptor_data);
-
-  // Move descriptor registration from one descriptor_data object to another.
-  ASIO_DECL void move_descriptor(socket_type descriptor,
-      per_descriptor_data& target_descriptor_data,
-      per_descriptor_data& source_descriptor_data);
-
-  // Add a new timer queue to the reactor.
-  template <typename Time_Traits>
-  void add_timer_queue(timer_queue<Time_Traits>& queue);
-
-  // Remove a timer queue from the reactor.
-  template <typename Time_Traits>
-  void remove_timer_queue(timer_queue<Time_Traits>& queue);
-
-  // Schedule a new operation in the given timer queue to expire at the
-  // specified absolute time.
-  template <typename Time_Traits>
-  void schedule_timer(timer_queue<Time_Traits>& queue,
-      const typename Time_Traits::time_type& time,
-      typename timer_queue<Time_Traits>::per_timer_data& timer, wait_op* op);
-
-  // Cancel the timer operations associated with the given token. Returns the
-  // number of operations that have been posted or dispatched.
-  template <typename Time_Traits>
-  std::size_t cancel_timer(timer_queue<Time_Traits>& queue,
-      typename timer_queue<Time_Traits>::per_timer_data& timer,
-      std::size_t max_cancelled = (std::numeric_limits<std::size_t>::max)());
-
-  // Run select once until interrupted or events are ready to be dispatched.
-  ASIO_DECL void run(bool block, op_queue<operation>& ops);
-
-  // Interrupt the select loop.
-  ASIO_DECL void interrupt();
-
-private:
-#if defined(ASIO_HAS_IOCP)
-  // Run the select loop in the thread.
-  ASIO_DECL void run_thread();
-
-  // Entry point for the select loop thread.
-  ASIO_DECL static void call_run_thread(select_reactor* reactor);
-#endif // defined(ASIO_HAS_IOCP)
-
-  // Helper function to add a new timer queue.
-  ASIO_DECL void do_add_timer_queue(timer_queue_base& queue);
-
-  // Helper function to remove a timer queue.
-  ASIO_DECL void do_remove_timer_queue(timer_queue_base& queue);
-
-  // Get the timeout value for the select call.
-  ASIO_DECL timeval* get_timeout(timeval& tv);
-
-  // Cancel all operations associated with the given descriptor. This function
-  // does not acquire the select_reactor's mutex.
-  ASIO_DECL void cancel_ops_unlocked(socket_type descriptor,
-      const asio::error_code& ec);
-
-  // The io_service implementation used to post completions.
-  io_service_impl& io_service_;
-
-  // Mutex to protect access to internal data.
-  asio::detail::mutex mutex_;
-
-  // The interrupter is used to break a blocking select call.
-  select_interrupter interrupter_;
-
-  // The queues of read, write and except operations.
-  reactor_op_queue<socket_type> op_queue_[max_ops];
-
-  // The file descriptor sets to be passed to the select system call.
-  fd_set_adapter fd_sets_[max_select_ops];
-
-  // The timer queues.
-  timer_queue_set timer_queues_;
-
-#if defined(ASIO_HAS_IOCP)
-  // Does the reactor loop thread need to stop.
-  bool stop_thread_;
-
-  // The thread that is running the reactor loop.
-  asio::detail::thread* thread_;
-#endif // defined(ASIO_HAS_IOCP)
-
-  // Whether the service has been shut down.
-  bool shutdown_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/detail/impl/select_reactor.hpp"
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/select_reactor.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_HAS_IOCP)
-       //   || (!defined(ASIO_HAS_DEV_POLL)
-       //       && !defined(ASIO_HAS_EPOLL)
-       //       && !defined(ASIO_HAS_KQUEUE)
-       //       && !defined(ASIO_WINDOWS_RUNTIME))
-
-#endif // ASIO_DETAIL_SELECT_REACTOR_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/service_registry.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/service_registry.hpp
deleted file mode 100644
index 9bfdb86..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/service_registry.hpp
+++ /dev/null
@@ -1,144 +0,0 @@
-//
-// detail/service_registry.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_SERVICE_REGISTRY_HPP
-#define ASIO_DETAIL_SERVICE_REGISTRY_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <typeinfo>
-#include "asio/detail/mutex.hpp"
-#include "asio/detail/noncopyable.hpp"
-#include "asio/io_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename T>
-class typeid_wrapper {};
-
-class service_registry
-  : private noncopyable
-{
-public:
-  // Constructor. Adds the initial service.
-  template <typename Service, typename Arg>
-  service_registry(asio::io_service& o,
-      Service* initial_service, Arg arg);
-
-  // Destructor.
-  ASIO_DECL ~service_registry();
-
-  // Notify all services of a fork event.
-  ASIO_DECL void notify_fork(asio::io_service::fork_event fork_ev);
-
-  // Get the first service object cast to the specified type. Called during
-  // io_service construction and so performs no locking or type checking.
-  template <typename Service>
-  Service& first_service();
-
-  // Get the service object corresponding to the specified service type. Will
-  // create a new service object automatically if no such object already
-  // exists. Ownership of the service object is not transferred to the caller.
-  template <typename Service>
-  Service& use_service();
-
-  // Add a service object. Throws on error, in which case ownership of the
-  // object is retained by the caller.
-  template <typename Service>
-  void add_service(Service* new_service);
-
-  // Check whether a service object of the specified type already exists.
-  template <typename Service>
-  bool has_service() const;
-
-private:
-  // Initialise a service's key based on its id.
-  ASIO_DECL static void init_key(
-      asio::io_service::service::key& key,
-      const asio::io_service::id& id);
-
-#if !defined(ASIO_NO_TYPEID)
-  // Initialise a service's key based on its id.
-  template <typename Service>
-  static void init_key(asio::io_service::service::key& key,
-      const asio::detail::service_id<Service>& /*id*/);
-#endif // !defined(ASIO_NO_TYPEID)
-
-  // Check if a service matches the given id.
-  ASIO_DECL static bool keys_match(
-      const asio::io_service::service::key& key1,
-      const asio::io_service::service::key& key2);
-
-  // The type of a factory function used for creating a service instance.
-  typedef asio::io_service::service*
-    (*factory_type)(asio::io_service&);
-
-  // Factory function for creating a service instance.
-  template <typename Service>
-  static asio::io_service::service* create(
-      asio::io_service& owner);
-
-  // Destroy a service instance.
-  ASIO_DECL static void destroy(
-      asio::io_service::service* service);
-
-  // Helper class to manage service pointers.
-  struct auto_service_ptr;
-  friend struct auto_service_ptr;
-  struct auto_service_ptr
-  {
-    asio::io_service::service* ptr_;
-    ~auto_service_ptr() { destroy(ptr_); }
-  };
-
-  // Get the service object corresponding to the specified service key. Will
-  // create a new service object automatically if no such object already
-  // exists. Ownership of the service object is not transferred to the caller.
-  ASIO_DECL asio::io_service::service* do_use_service(
-      const asio::io_service::service::key& key,
-      factory_type factory);
-
-  // Add a service object. Throws on error, in which case ownership of the
-  // object is retained by the caller.
-  ASIO_DECL void do_add_service(
-      const asio::io_service::service::key& key,
-      asio::io_service::service* new_service);
-
-  // Check whether a service object with the specified key already exists.
-  ASIO_DECL bool do_has_service(
-      const asio::io_service::service::key& key) const;
-
-  // Mutex to protect access to internal data.
-  mutable asio::detail::mutex mutex_;
-
-  // The owner of this service registry and the services it contains.
-  asio::io_service& owner_;
-
-  // The first service in the list of contained services.
-  asio::io_service::service* first_service_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/detail/impl/service_registry.hpp"
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/service_registry.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_DETAIL_SERVICE_REGISTRY_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/shared_ptr.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/shared_ptr.hpp
deleted file mode 100644
index 0811cc2..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/shared_ptr.hpp
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// detail/shared_ptr.hpp
-// ~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_SHARED_PTR_HPP
-#define ASIO_DETAIL_SHARED_PTR_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_STD_SHARED_PTR)
-# include <memory>
-#else // defined(ASIO_HAS_STD_SHARED_PTR)
-# include <boost/shared_ptr.hpp>
-#endif // defined(ASIO_HAS_STD_SHARED_PTR)
-
-namespace asio {
-namespace detail {
-
-#if defined(ASIO_HAS_STD_SHARED_PTR)
-using std::shared_ptr;
-#else // defined(ASIO_HAS_STD_SHARED_PTR)
-using boost::shared_ptr;
-#endif // defined(ASIO_HAS_STD_SHARED_PTR)
-
-} // namespace detail
-} // namespace asio
-
-#endif // ASIO_DETAIL_SHARED_PTR_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/signal_blocker.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/signal_blocker.hpp
deleted file mode 100644
index ad668ad..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/signal_blocker.hpp
+++ /dev/null
@@ -1,44 +0,0 @@
-//
-// detail/signal_blocker.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_SIGNAL_BLOCKER_HPP
-#define ASIO_DETAIL_SIGNAL_BLOCKER_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_HAS_THREADS) || defined(ASIO_WINDOWS) \
-  || defined(ASIO_WINDOWS_RUNTIME) \
-  || defined(__CYGWIN__) || defined(__SYMBIAN32__)
-# include "asio/detail/null_signal_blocker.hpp"
-#elif defined(ASIO_HAS_PTHREADS)
-# include "asio/detail/posix_signal_blocker.hpp"
-#else
-# error Only Windows and POSIX are supported!
-#endif
-
-namespace asio {
-namespace detail {
-
-#if !defined(ASIO_HAS_THREADS) || defined(ASIO_WINDOWS) \
-  || defined(ASIO_WINDOWS_RUNTIME) \
-  || defined(__CYGWIN__) || defined(__SYMBIAN32__)
-typedef null_signal_blocker signal_blocker;
-#elif defined(ASIO_HAS_PTHREADS)
-typedef posix_signal_blocker signal_blocker;
-#endif
-
-} // namespace detail
-} // namespace asio
-
-#endif // ASIO_DETAIL_SIGNAL_BLOCKER_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/signal_handler.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/signal_handler.hpp
deleted file mode 100644
index 412e082..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/signal_handler.hpp
+++ /dev/null
@@ -1,82 +0,0 @@
-//
-// detail/signal_handler.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_SIGNAL_HANDLER_HPP
-#define ASIO_DETAIL_SIGNAL_HANDLER_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/signal_op.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Handler>
-class signal_handler : public signal_op
-{
-public:
-  ASIO_DEFINE_HANDLER_PTR(signal_handler);
-
-  signal_handler(Handler& h)
-    : signal_op(&signal_handler::do_complete),
-      handler_(ASIO_MOVE_CAST(Handler)(h))
-  {
-  }
-
-  static void do_complete(io_service_impl* owner, operation* base,
-      const asio::error_code& /*ec*/,
-      std::size_t /*bytes_transferred*/)
-  {
-    // Take ownership of the handler object.
-    signal_handler* h(static_cast<signal_handler*>(base));
-    ptr p = { asio::detail::addressof(h->handler_), h, h };
-
-    ASIO_HANDLER_COMPLETION((h));
-
-    // Make a copy of the handler so that the memory can be deallocated before
-    // the upcall is made. Even if we're not about to make an upcall, a
-    // sub-object of the handler may be the true owner of the memory associated
-    // with the handler. Consequently, a local copy of the handler is required
-    // to ensure that any owning sub-object remains valid until after we have
-    // deallocated the memory here.
-    detail::binder2<Handler, asio::error_code, int>
-      handler(h->handler_, h->ec_, h->signal_number_);
-    p.h = asio::detail::addressof(handler.handler_);
-    p.reset();
-
-    // Make the upcall if required.
-    if (owner)
-    {
-      fenced_block b(fenced_block::half);
-      ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
-      asio_handler_invoke_helpers::invoke(handler, handler.handler_);
-      ASIO_HANDLER_INVOCATION_END;
-    }
-  }
-
-private:
-  Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_SIGNAL_HANDLER_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/signal_init.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/signal_init.hpp
deleted file mode 100644
index e9a8cac..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/signal_init.hpp
+++ /dev/null
@@ -1,47 +0,0 @@
-//
-// detail/signal_init.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_SIGNAL_INIT_HPP
-#define ASIO_DETAIL_SIGNAL_INIT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-
-#include <csignal>
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <int Signal = SIGPIPE>
-class signal_init
-{
-public:
-  // Constructor.
-  signal_init()
-  {
-    std::signal(Signal, SIG_IGN);
-  }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-
-#endif // ASIO_DETAIL_SIGNAL_INIT_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/signal_op.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/signal_op.hpp
deleted file mode 100644
index 2f7fd62..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/signal_op.hpp
+++ /dev/null
@@ -1,49 +0,0 @@
-//
-// detail/signal_op.hpp
-// ~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_SIGNAL_OP_HPP
-#define ASIO_DETAIL_SIGNAL_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/operation.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class signal_op
-  : public operation
-{
-public:
-  // The error code to be passed to the completion handler.
-  asio::error_code ec_;
-
-  // The signal number to be passed to the completion handler.
-  int signal_number_;
-
-protected:
-  signal_op(func_type func)
-    : operation(func),
-      signal_number_(0)
-  {
-  }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_SIGNAL_OP_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/signal_set_service.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/signal_set_service.hpp
deleted file mode 100644
index d154a09..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/signal_set_service.hpp
+++ /dev/null
@@ -1,216 +0,0 @@
-//
-// detail/signal_set_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_SIGNAL_SET_SERVICE_HPP
-#define ASIO_DETAIL_SIGNAL_SET_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#include <cstddef>
-#include <signal.h>
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/op_queue.hpp"
-#include "asio/detail/signal_handler.hpp"
-#include "asio/detail/signal_op.hpp"
-#include "asio/detail/socket_types.hpp"
-
-#if !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-# include "asio/detail/reactor.hpp"
-#endif // !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-#if defined(NSIG) && (NSIG > 0)
-enum { max_signal_number = NSIG };
-#else
-enum { max_signal_number = 128 };
-#endif
-
-extern ASIO_DECL struct signal_state* get_signal_state();
-
-extern "C" ASIO_DECL void asio_signal_handler(int signal_number);
-
-class signal_set_service
-{
-public:
-  // Type used for tracking an individual signal registration.
-  class registration
-  {
-  public:
-    // Default constructor.
-    registration()
-      : signal_number_(0),
-        queue_(0),
-        undelivered_(0),
-        next_in_table_(0),
-        prev_in_table_(0),
-        next_in_set_(0)
-    {
-    }
-
-  private:
-    // Only this service will have access to the internal values.
-    friend class signal_set_service;
-
-    // The signal number that is registered.
-    int signal_number_;
-
-    // The waiting signal handlers.
-    op_queue<signal_op>* queue_;
-
-    // The number of undelivered signals.
-    std::size_t undelivered_;
-
-    // Pointers to adjacent registrations in the registrations_ table.
-    registration* next_in_table_;
-    registration* prev_in_table_;
-
-    // Link to next registration in the signal set.
-    registration* next_in_set_;
-  };
-
-  // The implementation type of the signal_set.
-  class implementation_type
-  {
-  public:
-    // Default constructor.
-    implementation_type()
-      : signals_(0)
-    {
-    }
-
-  private:
-    // Only this service will have access to the internal values.
-    friend class signal_set_service;
-
-    // The pending signal handlers.
-    op_queue<signal_op> queue_;
-
-    // Linked list of registered signals.
-    registration* signals_;
-  };
-
-  // Constructor.
-  ASIO_DECL signal_set_service(asio::io_service& io_service);
-
-  // Destructor.
-  ASIO_DECL ~signal_set_service();
-
-  // Destroy all user-defined handler objects owned by the service.
-  ASIO_DECL void shutdown_service();
-
-  // Perform fork-related housekeeping.
-  ASIO_DECL void fork_service(
-      asio::io_service::fork_event fork_ev);
-
-  // Construct a new signal_set implementation.
-  ASIO_DECL void construct(implementation_type& impl);
-
-  // Destroy a signal_set implementation.
-  ASIO_DECL void destroy(implementation_type& impl);
-
-  // Add a signal to a signal_set.
-  ASIO_DECL asio::error_code add(implementation_type& impl,
-      int signal_number, asio::error_code& ec);
-
-  // Remove a signal to a signal_set.
-  ASIO_DECL asio::error_code remove(implementation_type& impl,
-      int signal_number, asio::error_code& ec);
-
-  // Remove all signals from a signal_set.
-  ASIO_DECL asio::error_code clear(implementation_type& impl,
-      asio::error_code& ec);
-
-  // Cancel all operations associated with the signal set.
-  ASIO_DECL asio::error_code cancel(implementation_type& impl,
-      asio::error_code& ec);
-
-  // Start an asynchronous operation to wait for a signal to be delivered.
-  template <typename Handler>
-  void async_wait(implementation_type& impl, Handler& handler)
-  {
-    // Allocate and construct an operation to wrap the handler.
-    typedef signal_handler<Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(handler);
-
-    ASIO_HANDLER_CREATION((p.p, "signal_set", &impl, "async_wait"));
-
-    start_wait_op(impl, p.p);
-    p.v = p.p = 0;
-  }
-
-  // Deliver notification that a particular signal occurred.
-  ASIO_DECL static void deliver_signal(int signal_number);
-
-private:
-  // Helper function to add a service to the global signal state.
-  ASIO_DECL static void add_service(signal_set_service* service);
-
-  // Helper function to remove a service from the global signal state.
-  ASIO_DECL static void remove_service(signal_set_service* service);
-
-  // Helper function to create the pipe descriptors.
-  ASIO_DECL static void open_descriptors();
-
-  // Helper function to close the pipe descriptors.
-  ASIO_DECL static void close_descriptors();
-
-  // Helper function to start a wait operation.
-  ASIO_DECL void start_wait_op(implementation_type& impl, signal_op* op);
-
-  // The io_service instance used for dispatching handlers.
-  io_service_impl& io_service_;
-
-#if !defined(ASIO_WINDOWS) \
-  && !defined(ASIO_WINDOWS_RUNTIME) \
-  && !defined(__CYGWIN__)
-  // The type used for registering for pipe reactor notifications.
-  class pipe_read_op;
-
-  // The reactor used for waiting for pipe readiness.
-  reactor& reactor_;
-
-  // The per-descriptor reactor data used for the pipe.
-  reactor::per_descriptor_data reactor_data_;
-#endif // !defined(ASIO_WINDOWS)
-       //   && !defined(ASIO_WINDOWS_RUNTIME)
-       //   && !defined(__CYGWIN__)
-
-  // A mapping from signal number to the registered signal sets.
-  registration* registrations_[max_signal_number];
-
-  // Pointers to adjacent services in linked list.
-  signal_set_service* next_;
-  signal_set_service* prev_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/signal_set_service.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_DETAIL_SIGNAL_SET_SERVICE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/socket_holder.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/socket_holder.hpp
deleted file mode 100644
index 4fa3143..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/socket_holder.hpp
+++ /dev/null
@@ -1,98 +0,0 @@
-//
-// detail/socket_holder.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_SOCKET_HOLDER_HPP
-#define ASIO_DETAIL_SOCKET_HOLDER_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/socket_ops.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-// Implement the resource acquisition is initialisation idiom for sockets.
-class socket_holder
-  : private noncopyable
-{
-public:
-  // Construct as an uninitialised socket.
-  socket_holder()
-    : socket_(invalid_socket)
-  {
-  }
-
-  // Construct to take ownership of the specified socket.
-  explicit socket_holder(socket_type s)
-    : socket_(s)
-  {
-  }
-
-  // Destructor.
-  ~socket_holder()
-  {
-    if (socket_ != invalid_socket)
-    {
-      asio::error_code ec;
-      socket_ops::state_type state = 0;
-      socket_ops::close(socket_, state, true, ec);
-    }
-  }
-
-  // Get the underlying socket.
-  socket_type get() const
-  {
-    return socket_;
-  }
-
-  // Reset to an uninitialised socket.
-  void reset()
-  {
-    if (socket_ != invalid_socket)
-    {
-      asio::error_code ec;
-      socket_ops::state_type state = 0;
-      socket_ops::close(socket_, state, true, ec);
-      socket_ = invalid_socket;
-    }
-  }
-
-  // Reset to take ownership of the specified socket.
-  void reset(socket_type s)
-  {
-    reset();
-    socket_ = s;
-  }
-
-  // Release ownership of the socket.
-  socket_type release()
-  {
-    socket_type tmp = socket_;
-    socket_ = invalid_socket;
-    return tmp;
-  }
-
-private:
-  // The underlying socket.
-  socket_type socket_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_SOCKET_HOLDER_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/socket_ops.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/socket_ops.hpp
deleted file mode 100644
index 49ada0a..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/socket_ops.hpp
+++ /dev/null
@@ -1,334 +0,0 @@
-//
-// detail/socket_ops.hpp
-// ~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_SOCKET_OPS_HPP
-#define ASIO_DETAIL_SOCKET_OPS_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#include "asio/error_code.hpp"
-#include "asio/detail/shared_ptr.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/weak_ptr.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-namespace socket_ops {
-
-// Socket state bits.
-enum
-{
-  // The user wants a non-blocking socket.
-  user_set_non_blocking = 1,
-
-  // The socket has been set non-blocking.
-  internal_non_blocking = 2,
-
-  // Helper "state" used to determine whether the socket is non-blocking.
-  non_blocking = user_set_non_blocking | internal_non_blocking,
-
-  // User wants connection_aborted errors, which are disabled by default.
-  enable_connection_aborted = 4,
-
-  // The user set the linger option. Needs to be checked when closing.
-  user_set_linger = 8,
-
-  // The socket is stream-oriented.
-  stream_oriented = 16,
-
-  // The socket is datagram-oriented.
-  datagram_oriented = 32,
-
-  // The socket may have been dup()-ed.
-  possible_dup = 64
-};
-
-typedef unsigned char state_type;
-
-struct noop_deleter { void operator()(void*) {} };
-typedef shared_ptr<void> shared_cancel_token_type;
-typedef weak_ptr<void> weak_cancel_token_type;
-
-#if !defined(ASIO_WINDOWS_RUNTIME)
-
-ASIO_DECL socket_type accept(socket_type s, socket_addr_type* addr,
-    std::size_t* addrlen, asio::error_code& ec);
-
-ASIO_DECL socket_type sync_accept(socket_type s,
-    state_type state, socket_addr_type* addr,
-    std::size_t* addrlen, asio::error_code& ec);
-
-#if defined(ASIO_HAS_IOCP)
-
-ASIO_DECL void complete_iocp_accept(socket_type s,
-    void* output_buffer, DWORD address_length,
-    socket_addr_type* addr, std::size_t* addrlen,
-    socket_type new_socket, asio::error_code& ec);
-
-#else // defined(ASIO_HAS_IOCP)
-
-ASIO_DECL bool non_blocking_accept(socket_type s,
-    state_type state, socket_addr_type* addr, std::size_t* addrlen,
-    asio::error_code& ec, socket_type& new_socket);
-
-#endif // defined(ASIO_HAS_IOCP)
-
-ASIO_DECL int bind(socket_type s, const socket_addr_type* addr,
-    std::size_t addrlen, asio::error_code& ec);
-
-ASIO_DECL int close(socket_type s, state_type& state,
-    bool destruction, asio::error_code& ec);
-
-ASIO_DECL bool set_user_non_blocking(socket_type s,
-    state_type& state, bool value, asio::error_code& ec);
-
-ASIO_DECL bool set_internal_non_blocking(socket_type s,
-    state_type& state, bool value, asio::error_code& ec);
-
-ASIO_DECL int shutdown(socket_type s,
-    int what, asio::error_code& ec);
-
-ASIO_DECL int connect(socket_type s, const socket_addr_type* addr,
-    std::size_t addrlen, asio::error_code& ec);
-
-ASIO_DECL void sync_connect(socket_type s, const socket_addr_type* addr,
-    std::size_t addrlen, asio::error_code& ec);
-
-#if defined(ASIO_HAS_IOCP)
-
-ASIO_DECL void complete_iocp_connect(socket_type s,
-    asio::error_code& ec);
-
-#endif // defined(ASIO_HAS_IOCP)
-
-ASIO_DECL bool non_blocking_connect(socket_type s,
-    asio::error_code& ec);
-
-ASIO_DECL int socketpair(int af, int type, int protocol,
-    socket_type sv[2], asio::error_code& ec);
-
-ASIO_DECL bool sockatmark(socket_type s, asio::error_code& ec);
-
-ASIO_DECL size_t available(socket_type s, asio::error_code& ec);
-
-ASIO_DECL int listen(socket_type s,
-    int backlog, asio::error_code& ec);
-
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-typedef WSABUF buf;
-#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-typedef iovec buf;
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
-ASIO_DECL void init_buf(buf& b, void* data, size_t size);
-
-ASIO_DECL void init_buf(buf& b, const void* data, size_t size);
-
-ASIO_DECL signed_size_type recv(socket_type s, buf* bufs,
-    size_t count, int flags, asio::error_code& ec);
-
-ASIO_DECL size_t sync_recv(socket_type s, state_type state, buf* bufs,
-    size_t count, int flags, bool all_empty, asio::error_code& ec);
-
-#if defined(ASIO_HAS_IOCP)
-
-ASIO_DECL void complete_iocp_recv(state_type state,
-    const weak_cancel_token_type& cancel_token, bool all_empty,
-    asio::error_code& ec, size_t bytes_transferred);
-
-#else // defined(ASIO_HAS_IOCP)
-
-ASIO_DECL bool non_blocking_recv(socket_type s,
-    buf* bufs, size_t count, int flags, bool is_stream,
-    asio::error_code& ec, size_t& bytes_transferred);
-
-#endif // defined(ASIO_HAS_IOCP)
-
-ASIO_DECL signed_size_type recvfrom(socket_type s, buf* bufs,
-    size_t count, int flags, socket_addr_type* addr,
-    std::size_t* addrlen, asio::error_code& ec);
-
-ASIO_DECL size_t sync_recvfrom(socket_type s, state_type state,
-    buf* bufs, size_t count, int flags, socket_addr_type* addr,
-    std::size_t* addrlen, asio::error_code& ec);
-
-#if defined(ASIO_HAS_IOCP)
-
-ASIO_DECL void complete_iocp_recvfrom(
-    const weak_cancel_token_type& cancel_token,
-    asio::error_code& ec);
-
-#else // defined(ASIO_HAS_IOCP)
-
-ASIO_DECL bool non_blocking_recvfrom(socket_type s,
-    buf* bufs, size_t count, int flags,
-    socket_addr_type* addr, std::size_t* addrlen,
-    asio::error_code& ec, size_t& bytes_transferred);
-
-#endif // defined(ASIO_HAS_IOCP)
-
-ASIO_DECL signed_size_type recvmsg(socket_type s, buf* bufs,
-    size_t count, int in_flags, int& out_flags,
-    asio::error_code& ec);
-
-ASIO_DECL size_t sync_recvmsg(socket_type s, state_type state,
-    buf* bufs, size_t count, int in_flags, int& out_flags,
-    asio::error_code& ec);
-
-#if defined(ASIO_HAS_IOCP)
-
-ASIO_DECL void complete_iocp_recvmsg(
-    const weak_cancel_token_type& cancel_token,
-    asio::error_code& ec);
-
-#else // defined(ASIO_HAS_IOCP)
-
-ASIO_DECL bool non_blocking_recvmsg(socket_type s,
-    buf* bufs, size_t count, int in_flags, int& out_flags,
-    asio::error_code& ec, size_t& bytes_transferred);
-
-#endif // defined(ASIO_HAS_IOCP)
-
-ASIO_DECL signed_size_type send(socket_type s, const buf* bufs,
-    size_t count, int flags, asio::error_code& ec);
-
-ASIO_DECL size_t sync_send(socket_type s, state_type state,
-    const buf* bufs, size_t count, int flags,
-    bool all_empty, asio::error_code& ec);
-
-#if defined(ASIO_HAS_IOCP)
-
-ASIO_DECL void complete_iocp_send(
-    const weak_cancel_token_type& cancel_token,
-    asio::error_code& ec);
-
-#else // defined(ASIO_HAS_IOCP)
-
-ASIO_DECL bool non_blocking_send(socket_type s,
-    const buf* bufs, size_t count, int flags,
-    asio::error_code& ec, size_t& bytes_transferred);
-
-#endif // defined(ASIO_HAS_IOCP)
-
-ASIO_DECL signed_size_type sendto(socket_type s, const buf* bufs,
-    size_t count, int flags, const socket_addr_type* addr,
-    std::size_t addrlen, asio::error_code& ec);
-
-ASIO_DECL size_t sync_sendto(socket_type s, state_type state,
-    const buf* bufs, size_t count, int flags, const socket_addr_type* addr,
-    std::size_t addrlen, asio::error_code& ec);
-
-#if !defined(ASIO_HAS_IOCP)
-
-ASIO_DECL bool non_blocking_sendto(socket_type s,
-    const buf* bufs, size_t count, int flags,
-    const socket_addr_type* addr, std::size_t addrlen,
-    asio::error_code& ec, size_t& bytes_transferred);
-
-#endif // !defined(ASIO_HAS_IOCP)
-
-ASIO_DECL socket_type socket(int af, int type, int protocol,
-    asio::error_code& ec);
-
-ASIO_DECL int setsockopt(socket_type s, state_type& state,
-    int level, int optname, const void* optval,
-    std::size_t optlen, asio::error_code& ec);
-
-ASIO_DECL int getsockopt(socket_type s, state_type state,
-    int level, int optname, void* optval,
-    size_t* optlen, asio::error_code& ec);
-
-ASIO_DECL int getpeername(socket_type s, socket_addr_type* addr,
-    std::size_t* addrlen, bool cached, asio::error_code& ec);
-
-ASIO_DECL int getsockname(socket_type s, socket_addr_type* addr,
-    std::size_t* addrlen, asio::error_code& ec);
-
-ASIO_DECL int ioctl(socket_type s, state_type& state,
-    int cmd, ioctl_arg_type* arg, asio::error_code& ec);
-
-ASIO_DECL int select(int nfds, fd_set* readfds, fd_set* writefds,
-    fd_set* exceptfds, timeval* timeout, asio::error_code& ec);
-
-ASIO_DECL int poll_read(socket_type s,
-    state_type state, asio::error_code& ec);
-
-ASIO_DECL int poll_write(socket_type s,
-    state_type state, asio::error_code& ec);
-
-ASIO_DECL int poll_connect(socket_type s, asio::error_code& ec);
-
-#endif // !defined(ASIO_WINDOWS_RUNTIME)
-
-ASIO_DECL const char* inet_ntop(int af, const void* src, char* dest,
-    size_t length, unsigned long scope_id, asio::error_code& ec);
-
-ASIO_DECL int inet_pton(int af, const char* src, void* dest,
-    unsigned long* scope_id, asio::error_code& ec);
-
-ASIO_DECL int gethostname(char* name,
-    int namelen, asio::error_code& ec);
-
-#if !defined(ASIO_WINDOWS_RUNTIME)
-
-ASIO_DECL asio::error_code getaddrinfo(const char* host,
-    const char* service, const addrinfo_type& hints,
-    addrinfo_type** result, asio::error_code& ec);
-
-ASIO_DECL asio::error_code background_getaddrinfo(
-    const weak_cancel_token_type& cancel_token, const char* host,
-    const char* service, const addrinfo_type& hints,
-    addrinfo_type** result, asio::error_code& ec);
-
-ASIO_DECL void freeaddrinfo(addrinfo_type* ai);
-
-ASIO_DECL asio::error_code getnameinfo(
-    const socket_addr_type* addr, std::size_t addrlen,
-    char* host, std::size_t hostlen, char* serv,
-    std::size_t servlen, int flags, asio::error_code& ec);
-
-ASIO_DECL asio::error_code sync_getnameinfo(
-    const socket_addr_type* addr, std::size_t addrlen,
-    char* host, std::size_t hostlen, char* serv,
-    std::size_t servlen, int sock_type, asio::error_code& ec);
-
-ASIO_DECL asio::error_code background_getnameinfo(
-    const weak_cancel_token_type& cancel_token,
-    const socket_addr_type* addr, std::size_t addrlen,
-    char* host, std::size_t hostlen, char* serv,
-    std::size_t servlen, int sock_type, asio::error_code& ec);
-
-#endif // !defined(ASIO_WINDOWS_RUNTIME)
-
-ASIO_DECL u_long_type network_to_host_long(u_long_type value);
-
-ASIO_DECL u_long_type host_to_network_long(u_long_type value);
-
-ASIO_DECL u_short_type network_to_host_short(u_short_type value);
-
-ASIO_DECL u_short_type host_to_network_short(u_short_type value);
-
-} // namespace socket_ops
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/socket_ops.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_DETAIL_SOCKET_OPS_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/socket_option.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/socket_option.hpp
deleted file mode 100644
index 7241ab7..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/socket_option.hpp
+++ /dev/null
@@ -1,316 +0,0 @@
-//
-// detail/socket_option.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_SOCKET_OPTION_HPP
-#define ASIO_DETAIL_SOCKET_OPTION_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cstddef>
-#include <stdexcept>
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/throw_exception.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-namespace socket_option {
-
-// Helper template for implementing boolean-based options.
-template <int Level, int Name>
-class boolean
-{
-public:
-  // Default constructor.
-  boolean()
-    : value_(0)
-  {
-  }
-
-  // Construct with a specific option value.
-  explicit boolean(bool v)
-    : value_(v ? 1 : 0)
-  {
-  }
-
-  // Set the current value of the boolean.
-  boolean& operator=(bool v)
-  {
-    value_ = v ? 1 : 0;
-    return *this;
-  }
-
-  // Get the current value of the boolean.
-  bool value() const
-  {
-    return !!value_;
-  }
-
-  // Convert to bool.
-  operator bool() const
-  {
-    return !!value_;
-  }
-
-  // Test for false.
-  bool operator!() const
-  {
-    return !value_;
-  }
-
-  // Get the level of the socket option.
-  template <typename Protocol>
-  int level(const Protocol&) const
-  {
-    return Level;
-  }
-
-  // Get the name of the socket option.
-  template <typename Protocol>
-  int name(const Protocol&) const
-  {
-    return Name;
-  }
-
-  // Get the address of the boolean data.
-  template <typename Protocol>
-  int* data(const Protocol&)
-  {
-    return &value_;
-  }
-
-  // Get the address of the boolean data.
-  template <typename Protocol>
-  const int* data(const Protocol&) const
-  {
-    return &value_;
-  }
-
-  // Get the size of the boolean data.
-  template <typename Protocol>
-  std::size_t size(const Protocol&) const
-  {
-    return sizeof(value_);
-  }
-
-  // Set the size of the boolean data.
-  template <typename Protocol>
-  void resize(const Protocol&, std::size_t s)
-  {
-    // On some platforms (e.g. Windows Vista), the getsockopt function will
-    // return the size of a boolean socket option as one byte, even though a
-    // four byte integer was passed in.
-    switch (s)
-    {
-    case sizeof(char):
-      value_ = *reinterpret_cast<char*>(&value_) ? 1 : 0;
-      break;
-    case sizeof(value_):
-      break;
-    default:
-      {
-        std::length_error ex("boolean socket option resize");
-        asio::detail::throw_exception(ex);
-      }
-    }
-  }
-
-private:
-  int value_;
-};
-
-// Helper template for implementing integer options.
-template <int Level, int Name>
-class integer
-{
-public:
-  // Default constructor.
-  integer()
-    : value_(0)
-  {
-  }
-
-  // Construct with a specific option value.
-  explicit integer(int v)
-    : value_(v)
-  {
-  }
-
-  // Set the value of the int option.
-  integer& operator=(int v)
-  {
-    value_ = v;
-    return *this;
-  }
-
-  // Get the current value of the int option.
-  int value() const
-  {
-    return value_;
-  }
-
-  // Get the level of the socket option.
-  template <typename Protocol>
-  int level(const Protocol&) const
-  {
-    return Level;
-  }
-
-  // Get the name of the socket option.
-  template <typename Protocol>
-  int name(const Protocol&) const
-  {
-    return Name;
-  }
-
-  // Get the address of the int data.
-  template <typename Protocol>
-  int* data(const Protocol&)
-  {
-    return &value_;
-  }
-
-  // Get the address of the int data.
-  template <typename Protocol>
-  const int* data(const Protocol&) const
-  {
-    return &value_;
-  }
-
-  // Get the size of the int data.
-  template <typename Protocol>
-  std::size_t size(const Protocol&) const
-  {
-    return sizeof(value_);
-  }
-
-  // Set the size of the int data.
-  template <typename Protocol>
-  void resize(const Protocol&, std::size_t s)
-  {
-    if (s != sizeof(value_))
-    {
-      std::length_error ex("integer socket option resize");
-      asio::detail::throw_exception(ex);
-    }
-  }
-
-private:
-  int value_;
-};
-
-// Helper template for implementing linger options.
-template <int Level, int Name>
-class linger
-{
-public:
-  // Default constructor.
-  linger()
-  {
-    value_.l_onoff = 0;
-    value_.l_linger = 0;
-  }
-
-  // Construct with specific option values.
-  linger(bool e, int t)
-  {
-    enabled(e);
-    timeout ASIO_PREVENT_MACRO_SUBSTITUTION(t);
-  }
-
-  // Set the value for whether linger is enabled.
-  void enabled(bool value)
-  {
-    value_.l_onoff = value ? 1 : 0;
-  }
-
-  // Get the value for whether linger is enabled.
-  bool enabled() const
-  {
-    return value_.l_onoff != 0;
-  }
-
-  // Set the value for the linger timeout.
-  void timeout ASIO_PREVENT_MACRO_SUBSTITUTION(int value)
-  {
-#if defined(WIN32)
-    value_.l_linger = static_cast<u_short>(value);
-#else
-    value_.l_linger = value;
-#endif
-  }
-
-  // Get the value for the linger timeout.
-  int timeout ASIO_PREVENT_MACRO_SUBSTITUTION() const
-  {
-    return static_cast<int>(value_.l_linger);
-  }
-
-  // Get the level of the socket option.
-  template <typename Protocol>
-  int level(const Protocol&) const
-  {
-    return Level;
-  }
-
-  // Get the name of the socket option.
-  template <typename Protocol>
-  int name(const Protocol&) const
-  {
-    return Name;
-  }
-
-  // Get the address of the linger data.
-  template <typename Protocol>
-  detail::linger_type* data(const Protocol&)
-  {
-    return &value_;
-  }
-
-  // Get the address of the linger data.
-  template <typename Protocol>
-  const detail::linger_type* data(const Protocol&) const
-  {
-    return &value_;
-  }
-
-  // Get the size of the linger data.
-  template <typename Protocol>
-  std::size_t size(const Protocol&) const
-  {
-    return sizeof(value_);
-  }
-
-  // Set the size of the int data.
-  template <typename Protocol>
-  void resize(const Protocol&, std::size_t s)
-  {
-    if (s != sizeof(value_))
-    {
-      std::length_error ex("linger socket option resize");
-      asio::detail::throw_exception(ex);
-    }
-  }
-
-private:
-  detail::linger_type value_;
-};
-
-} // namespace socket_option
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_SOCKET_OPTION_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/socket_select_interrupter.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/socket_select_interrupter.hpp
deleted file mode 100644
index 470ce78..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/socket_select_interrupter.hpp
+++ /dev/null
@@ -1,91 +0,0 @@
-//
-// detail/socket_select_interrupter.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_SOCKET_SELECT_INTERRUPTER_HPP
-#define ASIO_DETAIL_SOCKET_SELECT_INTERRUPTER_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_WINDOWS_RUNTIME)
-
-#if defined(ASIO_WINDOWS) \
-  || defined(__CYGWIN__) \
-  || defined(__SYMBIAN32__)
-
-#include "asio/detail/socket_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class socket_select_interrupter
-{
-public:
-  // Constructor.
-  ASIO_DECL socket_select_interrupter();
-
-  // Destructor.
-  ASIO_DECL ~socket_select_interrupter();
-
-  // Recreate the interrupter's descriptors. Used after a fork.
-  ASIO_DECL void recreate();
-
-  // Interrupt the select call.
-  ASIO_DECL void interrupt();
-
-  // Reset the select interrupt. Returns true if the call was interrupted.
-  ASIO_DECL bool reset();
-
-  // Get the read descriptor to be passed to select.
-  socket_type read_descriptor() const
-  {
-    return read_descriptor_;
-  }
-
-private:
-  // Open the descriptors. Throws on error.
-  ASIO_DECL void open_descriptors();
-
-  // Close the descriptors.
-  ASIO_DECL void close_descriptors();
-
-  // The read end of a connection used to interrupt the select call. This file
-  // descriptor is passed to select such that when it is time to stop, a single
-  // byte will be written on the other end of the connection and this
-  // descriptor will become readable.
-  socket_type read_descriptor_;
-
-  // The write end of a connection used to interrupt the select call. A single
-  // byte may be written to this to wake up the select which is waiting for the
-  // other end to become readable.
-  socket_type write_descriptor_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/socket_select_interrupter.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_WINDOWS)
-       // || defined(__CYGWIN__)
-       // || defined(__SYMBIAN32__)
-
-#endif // !defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_SOCKET_SELECT_INTERRUPTER_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/socket_types.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/socket_types.hpp
deleted file mode 100644
index f2600c2..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/socket_types.hpp
+++ /dev/null
@@ -1,404 +0,0 @@
-//
-// detail/socket_types.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_SOCKET_TYPES_HPP
-#define ASIO_DETAIL_SOCKET_TYPES_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-// Empty.
-#elif defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-# if defined(_WINSOCKAPI_) && !defined(_WINSOCK2API_)
-#  error WinSock.h has already been included
-# endif // defined(_WINSOCKAPI_) && !defined(_WINSOCK2API_)
-# if defined(__BORLANDC__)
-#  include <stdlib.h> // Needed for __errno
-#  if !defined(_WSPIAPI_H_)
-#   define _WSPIAPI_H_
-#   define ASIO_WSPIAPI_H_DEFINED
-#  endif // !defined(_WSPIAPI_H_)
-# endif // defined(__BORLANDC__)
-# if defined(WINAPI_FAMILY)
-#  if ((WINAPI_FAMILY & WINAPI_PARTITION_DESKTOP) != 0)
-#   include <windows.h>
-#  endif // ((WINAPI_FAMILY & WINAPI_PARTITION_DESKTOP) != 0)
-# endif // defined(WINAPI_FAMILY)
-# include <winsock2.h>
-# include <ws2tcpip.h>
-# include <mswsock.h>
-# if defined(ASIO_WSPIAPI_H_DEFINED)
-#  undef _WSPIAPI_H_
-#  undef ASIO_WSPIAPI_H_DEFINED
-# endif // defined(ASIO_WSPIAPI_H_DEFINED)
-# if !defined(ASIO_NO_DEFAULT_LINKED_LIBS)
-#  if defined(UNDER_CE)
-#   pragma comment(lib, "ws2.lib")
-#  elif defined(_MSC_VER) || defined(__BORLANDC__)
-#   pragma comment(lib, "ws2_32.lib")
-#   pragma comment(lib, "mswsock.lib")
-#  endif // defined(_MSC_VER) || defined(__BORLANDC__)
-# endif // !defined(ASIO_NO_DEFAULT_LINKED_LIBS)
-# include "asio/detail/old_win_sdk_compat.hpp"
-#else
-# include <sys/ioctl.h>
-# if !defined(__SYMBIAN32__)
-#  include <sys/poll.h>
-# endif
-# include <sys/types.h>
-# include <sys/stat.h>
-# include <fcntl.h>
-# if defined(__hpux)
-#  include <sys/time.h>
-# endif
-# if !defined(__hpux) || defined(__SELECT)
-#  include <sys/select.h>
-# endif
-# include <sys/socket.h>
-# include <sys/uio.h>
-# include <sys/un.h>
-# include <netinet/in.h>
-# if !defined(__SYMBIAN32__)
-#  include <netinet/tcp.h>
-# endif
-# include <arpa/inet.h>
-# include <netdb.h>
-# include <net/if.h>
-# include <limits.h>
-# if defined(__sun)
-#  include <sys/filio.h>
-#  include <sys/sockio.h>
-# endif
-#endif
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-const int max_addr_v4_str_len = 256;
-const int max_addr_v6_str_len = 256;
-typedef unsigned __int32 u_long_type;
-typedef unsigned __int16 u_short_type;
-struct in4_addr_type { u_long_type s_addr; };
-struct in4_mreq_type { in4_addr_type imr_multiaddr, imr_interface; };
-struct in6_addr_type { unsigned char s6_addr[16]; };
-struct in6_mreq_type { in6_addr_type ipv6mr_multiaddr;
-  unsigned long ipv6mr_interface; };
-struct socket_addr_type { int sa_family; };
-struct sockaddr_in4_type { int sin_family;
-  in4_addr_type sin_addr; u_short_type sin_port; };
-struct sockaddr_in6_type { int sin6_family;
-  in6_addr_type sin6_addr; u_short_type sin6_port;
-  u_long_type sin6_flowinfo; u_long_type sin6_scope_id; };
-struct sockaddr_storage_type { int ss_family;
-  unsigned char ss_bytes[128 - sizeof(int)]; };
-struct addrinfo_type { int ai_flags;
-  int ai_family, ai_socktype, ai_protocol;
-  int ai_addrlen; const void* ai_addr;
-  const char* ai_canonname; addrinfo_type* ai_next; };
-struct linger_type { u_short_type l_onoff, l_linger; };
-typedef u_long_type ioctl_arg_type;
-typedef int signed_size_type;
-# define ASIO_OS_DEF(c) ASIO_OS_DEF_##c
-# define ASIO_OS_DEF_AF_UNSPEC 0
-# define ASIO_OS_DEF_AF_INET 2
-# define ASIO_OS_DEF_AF_INET6 23
-# define ASIO_OS_DEF_SOCK_STREAM 1
-# define ASIO_OS_DEF_SOCK_DGRAM 2
-# define ASIO_OS_DEF_SOCK_RAW 3
-# define ASIO_OS_DEF_SOCK_SEQPACKET 5
-# define ASIO_OS_DEF_IPPROTO_IP 0
-# define ASIO_OS_DEF_IPPROTO_IPV6 41
-# define ASIO_OS_DEF_IPPROTO_TCP 6
-# define ASIO_OS_DEF_IPPROTO_UDP 17
-# define ASIO_OS_DEF_IPPROTO_ICMP 1
-# define ASIO_OS_DEF_IPPROTO_ICMPV6 58
-# define ASIO_OS_DEF_FIONBIO 1
-# define ASIO_OS_DEF_FIONREAD 2
-# define ASIO_OS_DEF_INADDR_ANY 0
-# define ASIO_OS_DEF_MSG_OOB 0x1
-# define ASIO_OS_DEF_MSG_PEEK 0x2
-# define ASIO_OS_DEF_MSG_DONTROUTE 0x4
-# define ASIO_OS_DEF_MSG_EOR 0 // Not supported.
-# define ASIO_OS_DEF_SHUT_RD 0x0
-# define ASIO_OS_DEF_SHUT_WR 0x1
-# define ASIO_OS_DEF_SHUT_RDWR 0x2
-# define ASIO_OS_DEF_SOMAXCONN 0x7fffffff
-# define ASIO_OS_DEF_SOL_SOCKET 0xffff
-# define ASIO_OS_DEF_SO_BROADCAST 0x20
-# define ASIO_OS_DEF_SO_DEBUG 0x1
-# define ASIO_OS_DEF_SO_DONTROUTE 0x10
-# define ASIO_OS_DEF_SO_KEEPALIVE 0x8
-# define ASIO_OS_DEF_SO_LINGER 0x80
-# define ASIO_OS_DEF_SO_SNDBUF 0x1001
-# define ASIO_OS_DEF_SO_RCVBUF 0x1002
-# define ASIO_OS_DEF_SO_SNDLOWAT 0x1003
-# define ASIO_OS_DEF_SO_RCVLOWAT 0x1004
-# define ASIO_OS_DEF_SO_REUSEADDR 0x4
-# define ASIO_OS_DEF_TCP_NODELAY 0x1
-# define ASIO_OS_DEF_IP_MULTICAST_IF 2
-# define ASIO_OS_DEF_IP_MULTICAST_TTL 3
-# define ASIO_OS_DEF_IP_MULTICAST_LOOP 4
-# define ASIO_OS_DEF_IP_ADD_MEMBERSHIP 5
-# define ASIO_OS_DEF_IP_DROP_MEMBERSHIP 6
-# define ASIO_OS_DEF_IP_TTL 7
-# define ASIO_OS_DEF_IPV6_UNICAST_HOPS 4
-# define ASIO_OS_DEF_IPV6_MULTICAST_IF 9
-# define ASIO_OS_DEF_IPV6_MULTICAST_HOPS 10
-# define ASIO_OS_DEF_IPV6_MULTICAST_LOOP 11
-# define ASIO_OS_DEF_IPV6_JOIN_GROUP 12
-# define ASIO_OS_DEF_IPV6_LEAVE_GROUP 13
-# define ASIO_OS_DEF_AI_CANONNAME 0x2
-# define ASIO_OS_DEF_AI_PASSIVE 0x1
-# define ASIO_OS_DEF_AI_NUMERICHOST 0x4
-# define ASIO_OS_DEF_AI_NUMERICSERV 0x8
-# define ASIO_OS_DEF_AI_V4MAPPED 0x800
-# define ASIO_OS_DEF_AI_ALL 0x100
-# define ASIO_OS_DEF_AI_ADDRCONFIG 0x400
-#elif defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-typedef SOCKET socket_type;
-const SOCKET invalid_socket = INVALID_SOCKET;
-const int socket_error_retval = SOCKET_ERROR;
-const int max_addr_v4_str_len = 256;
-const int max_addr_v6_str_len = 256;
-typedef sockaddr socket_addr_type;
-typedef in_addr in4_addr_type;
-typedef ip_mreq in4_mreq_type;
-typedef sockaddr_in sockaddr_in4_type;
-# if defined(ASIO_HAS_OLD_WIN_SDK)
-typedef in6_addr_emulation in6_addr_type;
-typedef ipv6_mreq_emulation in6_mreq_type;
-typedef sockaddr_in6_emulation sockaddr_in6_type;
-typedef sockaddr_storage_emulation sockaddr_storage_type;
-typedef addrinfo_emulation addrinfo_type;
-# else
-typedef in6_addr in6_addr_type;
-typedef ipv6_mreq in6_mreq_type;
-typedef sockaddr_in6 sockaddr_in6_type;
-typedef sockaddr_storage sockaddr_storage_type;
-typedef addrinfo addrinfo_type;
-# endif
-typedef ::linger linger_type;
-typedef unsigned long ioctl_arg_type;
-typedef u_long u_long_type;
-typedef u_short u_short_type;
-typedef int signed_size_type;
-# define ASIO_OS_DEF(c) ASIO_OS_DEF_##c
-# define ASIO_OS_DEF_AF_UNSPEC AF_UNSPEC
-# define ASIO_OS_DEF_AF_INET AF_INET
-# define ASIO_OS_DEF_AF_INET6 AF_INET6
-# define ASIO_OS_DEF_SOCK_STREAM SOCK_STREAM
-# define ASIO_OS_DEF_SOCK_DGRAM SOCK_DGRAM
-# define ASIO_OS_DEF_SOCK_RAW SOCK_RAW
-# define ASIO_OS_DEF_SOCK_SEQPACKET SOCK_SEQPACKET
-# define ASIO_OS_DEF_IPPROTO_IP IPPROTO_IP
-# define ASIO_OS_DEF_IPPROTO_IPV6 IPPROTO_IPV6
-# define ASIO_OS_DEF_IPPROTO_TCP IPPROTO_TCP
-# define ASIO_OS_DEF_IPPROTO_UDP IPPROTO_UDP
-# define ASIO_OS_DEF_IPPROTO_ICMP IPPROTO_ICMP
-# define ASIO_OS_DEF_IPPROTO_ICMPV6 IPPROTO_ICMPV6
-# define ASIO_OS_DEF_FIONBIO FIONBIO
-# define ASIO_OS_DEF_FIONREAD FIONREAD
-# define ASIO_OS_DEF_INADDR_ANY INADDR_ANY
-# define ASIO_OS_DEF_MSG_OOB MSG_OOB
-# define ASIO_OS_DEF_MSG_PEEK MSG_PEEK
-# define ASIO_OS_DEF_MSG_DONTROUTE MSG_DONTROUTE
-# define ASIO_OS_DEF_MSG_EOR 0 // Not supported on Windows.
-# define ASIO_OS_DEF_SHUT_RD SD_RECEIVE
-# define ASIO_OS_DEF_SHUT_WR SD_SEND
-# define ASIO_OS_DEF_SHUT_RDWR SD_BOTH
-# define ASIO_OS_DEF_SOMAXCONN SOMAXCONN
-# define ASIO_OS_DEF_SOL_SOCKET SOL_SOCKET
-# define ASIO_OS_DEF_SO_BROADCAST SO_BROADCAST
-# define ASIO_OS_DEF_SO_DEBUG SO_DEBUG
-# define ASIO_OS_DEF_SO_DONTROUTE SO_DONTROUTE
-# define ASIO_OS_DEF_SO_KEEPALIVE SO_KEEPALIVE
-# define ASIO_OS_DEF_SO_LINGER SO_LINGER
-# define ASIO_OS_DEF_SO_SNDBUF SO_SNDBUF
-# define ASIO_OS_DEF_SO_RCVBUF SO_RCVBUF
-# define ASIO_OS_DEF_SO_SNDLOWAT SO_SNDLOWAT
-# define ASIO_OS_DEF_SO_RCVLOWAT SO_RCVLOWAT
-# define ASIO_OS_DEF_SO_REUSEADDR SO_REUSEADDR
-# define ASIO_OS_DEF_TCP_NODELAY TCP_NODELAY
-# define ASIO_OS_DEF_IP_MULTICAST_IF IP_MULTICAST_IF
-# define ASIO_OS_DEF_IP_MULTICAST_TTL IP_MULTICAST_TTL
-# define ASIO_OS_DEF_IP_MULTICAST_LOOP IP_MULTICAST_LOOP
-# define ASIO_OS_DEF_IP_ADD_MEMBERSHIP IP_ADD_MEMBERSHIP
-# define ASIO_OS_DEF_IP_DROP_MEMBERSHIP IP_DROP_MEMBERSHIP
-# define ASIO_OS_DEF_IP_TTL IP_TTL
-# define ASIO_OS_DEF_IPV6_UNICAST_HOPS IPV6_UNICAST_HOPS
-# define ASIO_OS_DEF_IPV6_MULTICAST_IF IPV6_MULTICAST_IF
-# define ASIO_OS_DEF_IPV6_MULTICAST_HOPS IPV6_MULTICAST_HOPS
-# define ASIO_OS_DEF_IPV6_MULTICAST_LOOP IPV6_MULTICAST_LOOP
-# define ASIO_OS_DEF_IPV6_JOIN_GROUP IPV6_JOIN_GROUP
-# define ASIO_OS_DEF_IPV6_LEAVE_GROUP IPV6_LEAVE_GROUP
-# define ASIO_OS_DEF_AI_CANONNAME AI_CANONNAME
-# define ASIO_OS_DEF_AI_PASSIVE AI_PASSIVE
-# define ASIO_OS_DEF_AI_NUMERICHOST AI_NUMERICHOST
-# if defined(AI_NUMERICSERV)
-#  define ASIO_OS_DEF_AI_NUMERICSERV AI_NUMERICSERV
-# else
-#  define ASIO_OS_DEF_AI_NUMERICSERV 0
-# endif
-# if defined(AI_V4MAPPED)
-#  define ASIO_OS_DEF_AI_V4MAPPED AI_V4MAPPED
-# else
-#  define ASIO_OS_DEF_AI_V4MAPPED 0
-# endif
-# if defined(AI_ALL)
-#  define ASIO_OS_DEF_AI_ALL AI_ALL
-# else
-#  define ASIO_OS_DEF_AI_ALL 0
-# endif
-# if defined(AI_ADDRCONFIG)
-#  define ASIO_OS_DEF_AI_ADDRCONFIG AI_ADDRCONFIG
-# else
-#  define ASIO_OS_DEF_AI_ADDRCONFIG 0
-# endif
-# if defined (_WIN32_WINNT)
-const int max_iov_len = 64;
-# else
-const int max_iov_len = 16;
-# endif
-#else
-typedef int socket_type;
-const int invalid_socket = -1;
-const int socket_error_retval = -1;
-const int max_addr_v4_str_len = INET_ADDRSTRLEN;
-#if defined(INET6_ADDRSTRLEN)
-const int max_addr_v6_str_len = INET6_ADDRSTRLEN + 1 + IF_NAMESIZE;
-#else // defined(INET6_ADDRSTRLEN)
-const int max_addr_v6_str_len = 256;
-#endif // defined(INET6_ADDRSTRLEN)
-typedef sockaddr socket_addr_type;
-typedef in_addr in4_addr_type;
-# if defined(__hpux)
-// HP-UX doesn't provide ip_mreq when _XOPEN_SOURCE_EXTENDED is defined.
-struct in4_mreq_type
-{
-  struct in_addr imr_multiaddr;
-  struct in_addr imr_interface;
-};
-# else
-typedef ip_mreq in4_mreq_type;
-# endif
-typedef sockaddr_in sockaddr_in4_type;
-typedef in6_addr in6_addr_type;
-typedef ipv6_mreq in6_mreq_type;
-typedef sockaddr_in6 sockaddr_in6_type;
-typedef sockaddr_storage sockaddr_storage_type;
-typedef sockaddr_un sockaddr_un_type;
-typedef addrinfo addrinfo_type;
-typedef ::linger linger_type;
-typedef int ioctl_arg_type;
-typedef uint32_t u_long_type;
-typedef uint16_t u_short_type;
-#if defined(ASIO_HAS_SSIZE_T)
-typedef ssize_t signed_size_type;
-#else // defined(ASIO_HAS_SSIZE_T)
-typedef int signed_size_type;
-#endif // defined(ASIO_HAS_SSIZE_T)
-# define ASIO_OS_DEF(c) ASIO_OS_DEF_##c
-# define ASIO_OS_DEF_AF_UNSPEC AF_UNSPEC
-# define ASIO_OS_DEF_AF_INET AF_INET
-# define ASIO_OS_DEF_AF_INET6 AF_INET6
-# define ASIO_OS_DEF_SOCK_STREAM SOCK_STREAM
-# define ASIO_OS_DEF_SOCK_DGRAM SOCK_DGRAM
-# define ASIO_OS_DEF_SOCK_RAW SOCK_RAW
-# define ASIO_OS_DEF_SOCK_SEQPACKET SOCK_SEQPACKET
-# define ASIO_OS_DEF_IPPROTO_IP IPPROTO_IP
-# define ASIO_OS_DEF_IPPROTO_IPV6 IPPROTO_IPV6
-# define ASIO_OS_DEF_IPPROTO_TCP IPPROTO_TCP
-# define ASIO_OS_DEF_IPPROTO_UDP IPPROTO_UDP
-# define ASIO_OS_DEF_IPPROTO_ICMP IPPROTO_ICMP
-# define ASIO_OS_DEF_IPPROTO_ICMPV6 IPPROTO_ICMPV6
-# define ASIO_OS_DEF_FIONBIO FIONBIO
-# define ASIO_OS_DEF_FIONREAD FIONREAD
-# define ASIO_OS_DEF_INADDR_ANY INADDR_ANY
-# define ASIO_OS_DEF_MSG_OOB MSG_OOB
-# define ASIO_OS_DEF_MSG_PEEK MSG_PEEK
-# define ASIO_OS_DEF_MSG_DONTROUTE MSG_DONTROUTE
-# define ASIO_OS_DEF_MSG_EOR MSG_EOR
-# define ASIO_OS_DEF_SHUT_RD SHUT_RD
-# define ASIO_OS_DEF_SHUT_WR SHUT_WR
-# define ASIO_OS_DEF_SHUT_RDWR SHUT_RDWR
-# define ASIO_OS_DEF_SOMAXCONN SOMAXCONN
-# define ASIO_OS_DEF_SOL_SOCKET SOL_SOCKET
-# define ASIO_OS_DEF_SO_BROADCAST SO_BROADCAST
-# define ASIO_OS_DEF_SO_DEBUG SO_DEBUG
-# define ASIO_OS_DEF_SO_DONTROUTE SO_DONTROUTE
-# define ASIO_OS_DEF_SO_KEEPALIVE SO_KEEPALIVE
-# define ASIO_OS_DEF_SO_LINGER SO_LINGER
-# define ASIO_OS_DEF_SO_SNDBUF SO_SNDBUF
-# define ASIO_OS_DEF_SO_RCVBUF SO_RCVBUF
-# define ASIO_OS_DEF_SO_SNDLOWAT SO_SNDLOWAT
-# define ASIO_OS_DEF_SO_RCVLOWAT SO_RCVLOWAT
-# define ASIO_OS_DEF_SO_REUSEADDR SO_REUSEADDR
-# define ASIO_OS_DEF_TCP_NODELAY TCP_NODELAY
-# define ASIO_OS_DEF_IP_MULTICAST_IF IP_MULTICAST_IF
-# define ASIO_OS_DEF_IP_MULTICAST_TTL IP_MULTICAST_TTL
-# define ASIO_OS_DEF_IP_MULTICAST_LOOP IP_MULTICAST_LOOP
-# define ASIO_OS_DEF_IP_ADD_MEMBERSHIP IP_ADD_MEMBERSHIP
-# define ASIO_OS_DEF_IP_DROP_MEMBERSHIP IP_DROP_MEMBERSHIP
-# define ASIO_OS_DEF_IP_TTL IP_TTL
-# define ASIO_OS_DEF_IPV6_UNICAST_HOPS IPV6_UNICAST_HOPS
-# define ASIO_OS_DEF_IPV6_MULTICAST_IF IPV6_MULTICAST_IF
-# define ASIO_OS_DEF_IPV6_MULTICAST_HOPS IPV6_MULTICAST_HOPS
-# define ASIO_OS_DEF_IPV6_MULTICAST_LOOP IPV6_MULTICAST_LOOP
-# define ASIO_OS_DEF_IPV6_JOIN_GROUP IPV6_JOIN_GROUP
-# define ASIO_OS_DEF_IPV6_LEAVE_GROUP IPV6_LEAVE_GROUP
-# define ASIO_OS_DEF_AI_CANONNAME AI_CANONNAME
-# define ASIO_OS_DEF_AI_PASSIVE AI_PASSIVE
-# define ASIO_OS_DEF_AI_NUMERICHOST AI_NUMERICHOST
-# if defined(AI_NUMERICSERV)
-#  define ASIO_OS_DEF_AI_NUMERICSERV AI_NUMERICSERV
-# else
-#  define ASIO_OS_DEF_AI_NUMERICSERV 0
-# endif
-// Note: QNX Neutrino 6.3 defines AI_V4MAPPED, AI_ALL and AI_ADDRCONFIG but
-// does not implement them. Therefore they are specifically excluded here.
-# if defined(AI_V4MAPPED) && !defined(__QNXNTO__)
-#  define ASIO_OS_DEF_AI_V4MAPPED AI_V4MAPPED
-# else
-#  define ASIO_OS_DEF_AI_V4MAPPED 0
-# endif
-# if defined(AI_ALL) && !defined(__QNXNTO__)
-#  define ASIO_OS_DEF_AI_ALL AI_ALL
-# else
-#  define ASIO_OS_DEF_AI_ALL 0
-# endif
-# if defined(AI_ADDRCONFIG) && !defined(__QNXNTO__)
-#  define ASIO_OS_DEF_AI_ADDRCONFIG AI_ADDRCONFIG
-# else
-#  define ASIO_OS_DEF_AI_ADDRCONFIG 0
-# endif
-# if defined(IOV_MAX)
-const int max_iov_len = IOV_MAX;
-# else
-// POSIX platforms are not required to define IOV_MAX.
-const int max_iov_len = 16;
-# endif
-#endif
-const int custom_socket_option_level = 0xA5100000;
-const int enable_connection_aborted_option = 1;
-const int always_fail_option = 2;
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_SOCKET_TYPES_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/solaris_fenced_block.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/solaris_fenced_block.hpp
deleted file mode 100644
index a4d1eaf..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/solaris_fenced_block.hpp
+++ /dev/null
@@ -1,61 +0,0 @@
-//
-// detail/solaris_fenced_block.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_SOLARIS_FENCED_BLOCK_HPP
-#define ASIO_DETAIL_SOLARIS_FENCED_BLOCK_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(__sun)
-
-#include <atomic.h>
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class solaris_fenced_block
-  : private noncopyable
-{
-public:
-  enum half_t { half };
-  enum full_t { full };
-
-  // Constructor for a half fenced block.
-  explicit solaris_fenced_block(half_t)
-  {
-  }
-
-  // Constructor for a full fenced block.
-  explicit solaris_fenced_block(full_t)
-  {
-    membar_consumer();
-  }
-
-  // Destructor.
-  ~solaris_fenced_block()
-  {
-    membar_producer();
-  }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(__sun)
-
-#endif // ASIO_DETAIL_SOLARIS_FENCED_BLOCK_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/static_mutex.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/static_mutex.hpp
deleted file mode 100644
index bc84118..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/static_mutex.hpp
+++ /dev/null
@@ -1,52 +0,0 @@
-//
-// detail/static_mutex.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_STATIC_MUTEX_HPP
-#define ASIO_DETAIL_STATIC_MUTEX_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_HAS_THREADS)
-# include "asio/detail/null_static_mutex.hpp"
-#elif defined(ASIO_WINDOWS)
-# include "asio/detail/win_static_mutex.hpp"
-#elif defined(ASIO_HAS_PTHREADS)
-# include "asio/detail/posix_static_mutex.hpp"
-#elif defined(ASIO_HAS_STD_MUTEX_AND_CONDVAR)
-# include "asio/detail/std_static_mutex.hpp"
-#else
-# error Only Windows and POSIX are supported!
-#endif
-
-namespace asio {
-namespace detail {
-
-#if !defined(ASIO_HAS_THREADS)
-typedef null_static_mutex static_mutex;
-# define ASIO_STATIC_MUTEX_INIT ASIO_NULL_STATIC_MUTEX_INIT
-#elif defined(ASIO_WINDOWS)
-typedef win_static_mutex static_mutex;
-# define ASIO_STATIC_MUTEX_INIT ASIO_WIN_STATIC_MUTEX_INIT
-#elif defined(ASIO_HAS_PTHREADS)
-typedef posix_static_mutex static_mutex;
-# define ASIO_STATIC_MUTEX_INIT ASIO_POSIX_STATIC_MUTEX_INIT
-#elif defined(ASIO_HAS_STD_MUTEX_AND_CONDVAR)
-typedef std_static_mutex static_mutex;
-# define ASIO_STATIC_MUTEX_INIT ASIO_STD_STATIC_MUTEX_INIT
-#endif
-
-} // namespace detail
-} // namespace asio
-
-#endif // ASIO_DETAIL_STATIC_MUTEX_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/std_event.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/std_event.hpp
deleted file mode 100644
index b7c5e20..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/std_event.hpp
+++ /dev/null
@@ -1,176 +0,0 @@
-//
-// detail/std_event.hpp
-// ~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_STD_EVENT_HPP
-#define ASIO_DETAIL_STD_EVENT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_STD_MUTEX_AND_CONDVAR)
-
-#include <chrono>
-#include <condition_variable>
-#include "asio/detail/assert.hpp"
-#include "asio/detail/noncopyable.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class std_event
-  : private noncopyable
-{
-public:
-  // Constructor.
-  std_event()
-    : state_(0)
-  {
-  }
-
-  // Destructor.
-  ~std_event()
-  {
-  }
-
-  // Signal the event. (Retained for backward compatibility.)
-  template <typename Lock>
-  void signal(Lock& lock)
-  {
-    this->signal_all(lock);
-  }
-
-  // Signal all waiters.
-  template <typename Lock>
-  void signal_all(Lock& lock)
-  {
-    ASIO_ASSERT(lock.locked());
-    (void)lock;
-    state_ |= 1;
-    cond_.notify_all();
-  }
-
-  // Unlock the mutex and signal one waiter.
-  template <typename Lock>
-  void unlock_and_signal_one(Lock& lock)
-  {
-    ASIO_ASSERT(lock.locked());
-    state_ |= 1;
-    bool have_waiters = (state_ > 1);
-    lock.unlock();
-    if (have_waiters)
-      cond_.notify_one();
-  }
-
-  // If there's a waiter, unlock the mutex and signal it.
-  template <typename Lock>
-  bool maybe_unlock_and_signal_one(Lock& lock)
-  {
-    ASIO_ASSERT(lock.locked());
-    state_ |= 1;
-    if (state_ > 1)
-    {
-      lock.unlock();
-      cond_.notify_one();
-      return true;
-    }
-    return false;
-  }
-
-  // Reset the event.
-  template <typename Lock>
-  void clear(Lock& lock)
-  {
-    ASIO_ASSERT(lock.locked());
-    (void)lock;
-    state_ &= ~std::size_t(1);
-  }
-
-  // Wait for the event to become signalled.
-  template <typename Lock>
-  void wait(Lock& lock)
-  {
-    ASIO_ASSERT(lock.locked());
-    unique_lock_adapter u_lock(lock);
-    while ((state_ & 1) == 0)
-    {
-      waiter w(state_);
-      cond_.wait(u_lock.unique_lock_);
-    }
-  }
-
-  // Timed wait for the event to become signalled.
-  template <typename Lock>
-  bool wait_for_usec(Lock& lock, long usec)
-  {
-    ASIO_ASSERT(lock.locked());
-    unique_lock_adapter u_lock(lock);
-    if ((state_ & 1) == 0)
-    {
-      waiter w(state_);
-      cond_.wait_for(u_lock.unique_lock_, std::chrono::microseconds(usec));
-    }
-    return (state_ & 1) != 0;
-  }
-
-private:
-  // Helper class to temporarily adapt a scoped_lock into a unique_lock so that
-  // it can be passed to std::condition_variable::wait().
-  struct unique_lock_adapter
-  {
-    template <typename Lock>
-    explicit unique_lock_adapter(Lock& lock)
-      : unique_lock_(lock.mutex().mutex_, std::adopt_lock)
-    {
-    }
-
-    ~unique_lock_adapter()
-    {
-      unique_lock_.release();
-    }
-
-    std::unique_lock<std::mutex> unique_lock_;
-  };
-
-  // Helper to increment and decrement the state to track outstanding waiters.
-  class waiter
-  {
-  public:
-    explicit waiter(std::size_t& state)
-      : state_(state)
-    {
-      state_ += 2;
-    }
-
-    ~waiter()
-    {
-      state_ -= 2;
-    }
-
-  private:
-    std::size_t& state_;
-  };
-
-  std::condition_variable cond_;
-  std::size_t state_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_STD_MUTEX_AND_CONDVAR)
-
-#endif // ASIO_DETAIL_STD_EVENT_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/std_mutex.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/std_mutex.hpp
deleted file mode 100644
index 478aa1a..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/std_mutex.hpp
+++ /dev/null
@@ -1,73 +0,0 @@
-//
-// detail/std_mutex.hpp
-// ~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_STD_MUTEX_HPP
-#define ASIO_DETAIL_STD_MUTEX_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_STD_MUTEX_AND_CONDVAR)
-
-#include <mutex>
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/scoped_lock.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class std_event;
-
-class std_mutex
-  : private noncopyable
-{
-public:
-  typedef asio::detail::scoped_lock<std_mutex> scoped_lock;
-
-  // Constructor.
-  std_mutex()
-  {
-  }
-
-  // Destructor.
-  ~std_mutex()
-  {
-  }
-
-  // Lock the mutex.
-  void lock()
-  {
-    mutex_.lock();
-  }
-
-  // Unlock the mutex.
-  void unlock()
-  {
-    mutex_.unlock();
-  }
-
-private:
-  friend class std_event;
-  std::mutex mutex_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_STD_MUTEX_AND_CONDVAR)
-
-#endif // ASIO_DETAIL_STD_MUTEX_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/std_static_mutex.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/std_static_mutex.hpp
deleted file mode 100644
index b2abadf..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/std_static_mutex.hpp
+++ /dev/null
@@ -1,81 +0,0 @@
-//
-// detail/std_static_mutex.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_STD_STATIC_MUTEX_HPP
-#define ASIO_DETAIL_STD_STATIC_MUTEX_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_STD_MUTEX_AND_CONDVAR)
-
-#include <mutex>
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/scoped_lock.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class std_event;
-
-class std_static_mutex
-  : private noncopyable
-{
-public:
-  typedef asio::detail::scoped_lock<std_static_mutex> scoped_lock;
-
-  // Constructor.
-  std_static_mutex(int)
-  {
-  }
-
-  // Destructor.
-  ~std_static_mutex()
-  {
-  }
-
-  // Initialise the mutex.
-  void init()
-  {
-    // Nothing to do.
-  }
-
-  // Lock the mutex.
-  void lock()
-  {
-    mutex_.lock();
-  }
-
-  // Unlock the mutex.
-  void unlock()
-  {
-    mutex_.unlock();
-  }
-
-private:
-  friend class std_event;
-  std::mutex mutex_;
-};
-
-#define ASIO_STD_STATIC_MUTEX_INIT 0
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_STD_MUTEX_AND_CONDVAR)
-
-#endif // ASIO_DETAIL_STD_STATIC_MUTEX_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/std_thread.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/std_thread.hpp
deleted file mode 100644
index a16a897..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/std_thread.hpp
+++ /dev/null
@@ -1,65 +0,0 @@
-//
-// detail/std_thread.hpp
-// ~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_STD_THREAD_HPP
-#define ASIO_DETAIL_STD_THREAD_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_STD_THREAD)
-
-#include <thread>
-#include "asio/detail/noncopyable.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class std_thread
-  : private noncopyable
-{
-public:
-  // Constructor.
-  template <typename Function>
-  std_thread(Function f, unsigned int = 0)
-    : thread_(f)
-  {
-  }
-
-  // Destructor.
-  ~std_thread()
-  {
-    join();
-  }
-
-  // Wait for the thread to exit.
-  void join()
-  {
-    if (thread_.joinable())
-      thread_.join();
-  }
-
-private:
-  std::thread thread_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_STD_THREAD)
-
-#endif // ASIO_DETAIL_STD_THREAD_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/strand_service.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/strand_service.hpp
deleted file mode 100644
index b0e66fa..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/strand_service.hpp
+++ /dev/null
@@ -1,142 +0,0 @@
-//
-// detail/strand_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_STRAND_SERVICE_HPP
-#define ASIO_DETAIL_STRAND_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/io_service.hpp"
-#include "asio/detail/mutex.hpp"
-#include "asio/detail/op_queue.hpp"
-#include "asio/detail/operation.hpp"
-#include "asio/detail/scoped_ptr.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-// Default service implementation for a strand.
-class strand_service
-  : public asio::detail::service_base<strand_service>
-{
-private:
-  // Helper class to re-post the strand on exit.
-  struct on_do_complete_exit;
-
-  // Helper class to re-post the strand on exit.
-  struct on_dispatch_exit;
-
-public:
-
-  // The underlying implementation of a strand.
-  class strand_impl
-    : public operation
-  {
-  public:
-    strand_impl();
-
-  private:
-    // Only this service will have access to the internal values.
-    friend class strand_service;
-    friend struct on_do_complete_exit;
-    friend struct on_dispatch_exit;
-
-    // Mutex to protect access to internal data.
-    asio::detail::mutex mutex_;
-
-    // Indicates whether the strand is currently "locked" by a handler. This
-    // means that there is a handler upcall in progress, or that the strand
-    // itself has been scheduled in order to invoke some pending handlers.
-    bool locked_;
-
-    // The handlers that are waiting on the strand but should not be run until
-    // after the next time the strand is scheduled. This queue must only be
-    // modified while the mutex is locked.
-    op_queue<operation> waiting_queue_;
-
-    // The handlers that are ready to be run. Logically speaking, these are the
-    // handlers that hold the strand's lock. The ready queue is only modified
-    // from within the strand and so may be accessed without locking the mutex.
-    op_queue<operation> ready_queue_;
-  };
-
-  typedef strand_impl* implementation_type;
-
-  // Construct a new strand service for the specified io_service.
-  ASIO_DECL explicit strand_service(asio::io_service& io_service);
-
-  // Destroy all user-defined handler objects owned by the service.
-  ASIO_DECL void shutdown_service();
-
-  // Construct a new strand implementation.
-  ASIO_DECL void construct(implementation_type& impl);
-
-  // Request the io_service to invoke the given handler.
-  template <typename Handler>
-  void dispatch(implementation_type& impl, Handler& handler);
-
-  // Request the io_service to invoke the given handler and return immediately.
-  template <typename Handler>
-  void post(implementation_type& impl, Handler& handler);
-
-  // Determine whether the strand is running in the current thread.
-  ASIO_DECL bool running_in_this_thread(
-      const implementation_type& impl) const;
-
-private:
-  // Helper function to dispatch a handler. Returns true if the handler should
-  // be dispatched immediately.
-  ASIO_DECL bool do_dispatch(implementation_type& impl, operation* op);
-
-  // Helper fiunction to post a handler.
-  ASIO_DECL void do_post(implementation_type& impl,
-      operation* op, bool is_continuation);
-
-  ASIO_DECL static void do_complete(io_service_impl* owner,
-      operation* base, const asio::error_code& ec,
-      std::size_t bytes_transferred);
-
-  // The io_service implementation used to post completions.
-  io_service_impl& io_service_;
-
-  // Mutex to protect access to the array of implementations.
-  asio::detail::mutex mutex_;
-
-  // Number of implementations shared between all strand objects.
-#if defined(ASIO_STRAND_IMPLEMENTATIONS)
-  enum { num_implementations = ASIO_STRAND_IMPLEMENTATIONS };
-#else // defined(ASIO_STRAND_IMPLEMENTATIONS)
-  enum { num_implementations = 193 };
-#endif // defined(ASIO_STRAND_IMPLEMENTATIONS)
-
-  // Pool of implementations.
-  scoped_ptr<strand_impl> implementations_[num_implementations];
-
-  // Extra value used when hashing to prevent recycled memory locations from
-  // getting the same strand implementation.
-  std::size_t salt_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/detail/impl/strand_service.hpp"
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/strand_service.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_DETAIL_STRAND_SERVICE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/task_io_service.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/task_io_service.hpp
deleted file mode 100644
index c0d593c..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/task_io_service.hpp
+++ /dev/null
@@ -1,201 +0,0 @@
-//
-// detail/task_io_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_TASK_IO_SERVICE_HPP
-#define ASIO_DETAIL_TASK_IO_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_HAS_IOCP)
-
-#include "asio/error_code.hpp"
-#include "asio/io_service.hpp"
-#include "asio/detail/atomic_count.hpp"
-#include "asio/detail/call_stack.hpp"
-#include "asio/detail/event.hpp"
-#include "asio/detail/mutex.hpp"
-#include "asio/detail/op_queue.hpp"
-#include "asio/detail/reactor_fwd.hpp"
-#include "asio/detail/task_io_service_operation.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-struct task_io_service_thread_info;
-
-class task_io_service
-  : public asio::detail::service_base<task_io_service>
-{
-public:
-  typedef task_io_service_operation operation;
-
-  // Constructor. Specifies the number of concurrent threads that are likely to
-  // run the io_service. If set to 1 certain optimisation are performed.
-  ASIO_DECL task_io_service(asio::io_service& io_service,
-      std::size_t concurrency_hint = 0);
-
-  // Destroy all user-defined handler objects owned by the service.
-  ASIO_DECL void shutdown_service();
-
-  // Initialise the task, if required.
-  ASIO_DECL void init_task();
-
-  // Run the event loop until interrupted or no more work.
-  ASIO_DECL std::size_t run(asio::error_code& ec);
-
-  // Run until interrupted or one operation is performed.
-  ASIO_DECL std::size_t run_one(asio::error_code& ec);
-
-  // Poll for operations without blocking.
-  ASIO_DECL std::size_t poll(asio::error_code& ec);
-
-  // Poll for one operation without blocking.
-  ASIO_DECL std::size_t poll_one(asio::error_code& ec);
-
-  // Interrupt the event processing loop.
-  ASIO_DECL void stop();
-
-  // Determine whether the io_service is stopped.
-  ASIO_DECL bool stopped() const;
-
-  // Reset in preparation for a subsequent run invocation.
-  ASIO_DECL void reset();
-
-  // Notify that some work has started.
-  void work_started()
-  {
-    ++outstanding_work_;
-  }
-
-  // Notify that some work has finished.
-  void work_finished()
-  {
-    if (--outstanding_work_ == 0)
-      stop();
-  }
-
-  // Return whether a handler can be dispatched immediately.
-  bool can_dispatch()
-  {
-    return thread_call_stack::contains(this) != 0;
-  }
-
-  // Request invocation of the given handler.
-  template <typename Handler>
-  void dispatch(Handler& handler);
-
-  // Request invocation of the given handler and return immediately.
-  template <typename Handler>
-  void post(Handler& handler);
-
-  // Request invocation of the given operation and return immediately. Assumes
-  // that work_started() has not yet been called for the operation.
-  ASIO_DECL void post_immediate_completion(
-      operation* op, bool is_continuation);
-
-  // Request invocation of the given operation and return immediately. Assumes
-  // that work_started() was previously called for the operation.
-  ASIO_DECL void post_deferred_completion(operation* op);
-
-  // Request invocation of the given operations and return immediately. Assumes
-  // that work_started() was previously called for each operation.
-  ASIO_DECL void post_deferred_completions(op_queue<operation>& ops);
-
-  // Process unfinished operations as part of a shutdown_service operation.
-  // Assumes that work_started() was previously called for the operations.
-  ASIO_DECL void abandon_operations(op_queue<operation>& ops);
-
-private:
-  // Structure containing thread-specific data.
-  typedef task_io_service_thread_info thread_info;
-
-  // Enqueue the given operation following a failed attempt to dispatch the
-  // operation for immediate invocation.
-  ASIO_DECL void do_dispatch(operation* op);
-
-  // Run at most one operation. May block.
-  ASIO_DECL std::size_t do_run_one(mutex::scoped_lock& lock,
-      thread_info& this_thread, const asio::error_code& ec);
-
-  // Poll for at most one operation.
-  ASIO_DECL std::size_t do_poll_one(mutex::scoped_lock& lock,
-      thread_info& this_thread, const asio::error_code& ec);
-
-  // Stop the task and all idle threads.
-  ASIO_DECL void stop_all_threads(mutex::scoped_lock& lock);
-
-  // Wake a single idle thread, or the task, and always unlock the mutex.
-  ASIO_DECL void wake_one_thread_and_unlock(
-      mutex::scoped_lock& lock);
-
-  // Helper class to perform task-related operations on block exit.
-  struct task_cleanup;
-  friend struct task_cleanup;
-
-  // Helper class to call work-related operations on block exit.
-  struct work_cleanup;
-  friend struct work_cleanup;
-
-  // Whether to optimise for single-threaded use cases.
-  const bool one_thread_;
-
-  // Mutex to protect access to internal data.
-  mutable mutex mutex_;
-
-  // Event to wake up blocked threads.
-  event wakeup_event_;
-
-  // The task to be run by this service.
-  reactor* task_;
-
-  // Operation object to represent the position of the task in the queue.
-  struct task_operation : operation
-  {
-    task_operation() : operation(0) {}
-  } task_operation_;
-
-  // Whether the task has been interrupted.
-  bool task_interrupted_;
-
-  // The count of unfinished work.
-  atomic_count outstanding_work_;
-
-  // The queue of handlers that are ready to be delivered.
-  op_queue<operation> op_queue_;
-
-  // Flag to indicate that the dispatcher has been stopped.
-  bool stopped_;
-
-  // Flag to indicate that the dispatcher has been shut down.
-  bool shutdown_;
-
-  // Per-thread call stack to track the state of each thread in the io_service.
-  typedef call_stack<task_io_service, thread_info> thread_call_stack;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/detail/impl/task_io_service.hpp"
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/task_io_service.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // !defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_TASK_IO_SERVICE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/task_io_service_operation.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/task_io_service_operation.hpp
deleted file mode 100644
index 08b7867..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/task_io_service_operation.hpp
+++ /dev/null
@@ -1,76 +0,0 @@
-//
-// detail/task_io_service_operation.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_TASK_IO_SERVICE_OPERATION_HPP
-#define ASIO_DETAIL_TASK_IO_SERVICE_OPERATION_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/error_code.hpp"
-#include "asio/detail/handler_tracking.hpp"
-#include "asio/detail/op_queue.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class task_io_service;
-
-// Base class for all operations. A function pointer is used instead of virtual
-// functions to avoid the associated overhead.
-class task_io_service_operation ASIO_INHERIT_TRACKED_HANDLER
-{
-public:
-  void complete(task_io_service& owner,
-      const asio::error_code& ec, std::size_t bytes_transferred)
-  {
-    func_(&owner, this, ec, bytes_transferred);
-  }
-
-  void destroy()
-  {
-    func_(0, this, asio::error_code(), 0);
-  }
-
-protected:
-  typedef void (*func_type)(task_io_service*,
-      task_io_service_operation*,
-      const asio::error_code&, std::size_t);
-
-  task_io_service_operation(func_type func)
-    : next_(0),
-      func_(func),
-      task_result_(0)
-  {
-  }
-
-  // Prevents deletion through this type.
-  ~task_io_service_operation()
-  {
-  }
-
-private:
-  friend class op_queue_access;
-  task_io_service_operation* next_;
-  func_type func_;
-protected:
-  friend class task_io_service;
-  unsigned int task_result_; // Passed into bytes transferred.
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_TASK_IO_SERVICE_OPERATION_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/task_io_service_thread_info.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/task_io_service_thread_info.hpp
deleted file mode 100644
index a1b5cf0..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/task_io_service_thread_info.hpp
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// detail/task_io_service_thread_info.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_TASK_IO_SERVICE_THREAD_INFO_HPP
-#define ASIO_DETAIL_TASK_IO_SERVICE_THREAD_INFO_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/op_queue.hpp"
-#include "asio/detail/thread_info_base.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class task_io_service;
-class task_io_service_operation;
-
-struct task_io_service_thread_info : public thread_info_base
-{
-  op_queue<task_io_service_operation> private_op_queue;
-  long private_outstanding_work;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_TASK_IO_SERVICE_THREAD_INFO_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/thread.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/thread.hpp
deleted file mode 100644
index 3592a70..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/thread.hpp
+++ /dev/null
@@ -1,56 +0,0 @@
-//
-// detail/thread.hpp
-// ~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_THREAD_HPP
-#define ASIO_DETAIL_THREAD_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_HAS_THREADS)
-# include "asio/detail/null_thread.hpp"
-#elif defined(ASIO_WINDOWS)
-# if defined(UNDER_CE)
-#  include "asio/detail/wince_thread.hpp"
-# else
-#  include "asio/detail/win_thread.hpp"
-# endif
-#elif defined(ASIO_HAS_PTHREADS)
-# include "asio/detail/posix_thread.hpp"
-#elif defined(ASIO_HAS_STD_THREAD)
-# include "asio/detail/std_thread.hpp"
-#else
-# error Only Windows, POSIX and std::thread are supported!
-#endif
-
-namespace asio {
-namespace detail {
-
-#if !defined(ASIO_HAS_THREADS)
-typedef null_thread thread;
-#elif defined(ASIO_WINDOWS)
-# if defined(UNDER_CE)
-typedef wince_thread thread;
-# else
-typedef win_thread thread;
-# endif
-#elif defined(ASIO_HAS_PTHREADS)
-typedef posix_thread thread;
-#elif defined(ASIO_HAS_STD_THREAD)
-typedef std_thread thread;
-#endif
-
-} // namespace detail
-} // namespace asio
-
-#endif // ASIO_DETAIL_THREAD_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/thread_info_base.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/thread_info_base.hpp
deleted file mode 100644
index dd52468..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/thread_info_base.hpp
+++ /dev/null
@@ -1,91 +0,0 @@
-//
-// detail/thread_info_base.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_THREAD_INFO_BASE_HPP
-#define ASIO_DETAIL_THREAD_INFO_BASE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include <climits>
-#include <cstddef>
-#include "asio/detail/noncopyable.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class thread_info_base
-  : private noncopyable
-{
-public:
-  thread_info_base()
-    : reusable_memory_(0)
-  {
-  }
-
-  ~thread_info_base()
-  {
-    if (reusable_memory_)
-      ::operator delete(reusable_memory_);
-  }
-
-  static void* allocate(thread_info_base* this_thread, std::size_t size)
-  {
-    if (this_thread && this_thread->reusable_memory_)
-    {
-      void* const pointer = this_thread->reusable_memory_;
-      this_thread->reusable_memory_ = 0;
-
-      unsigned char* const mem = static_cast<unsigned char*>(pointer);
-      if (static_cast<std::size_t>(mem[0]) >= size)
-      {
-        mem[size] = mem[0];
-        return pointer;
-      }
-
-      ::operator delete(pointer);
-    }
-
-    void* const pointer = ::operator new(size + 1);
-    unsigned char* const mem = static_cast<unsigned char*>(pointer);
-    mem[size] = (size <= UCHAR_MAX) ? static_cast<unsigned char>(size) : 0;
-    return pointer;
-  }
-
-  static void deallocate(thread_info_base* this_thread,
-      void* pointer, std::size_t size)
-  {
-    if (size <= UCHAR_MAX)
-    {
-      if (this_thread && this_thread->reusable_memory_ == 0)
-      {
-        unsigned char* const mem = static_cast<unsigned char*>(pointer);
-        mem[0] = mem[size];
-        this_thread->reusable_memory_ = pointer;
-        return;
-      }
-    }
-
-    ::operator delete(pointer);
-  }
-
-private:
-  void* reusable_memory_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_THREAD_INFO_BASE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/throw_error.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/throw_error.hpp
deleted file mode 100644
index 5eff60c..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/throw_error.hpp
+++ /dev/null
@@ -1,53 +0,0 @@
-//
-// detail/throw_error.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_THROW_ERROR_HPP
-#define ASIO_DETAIL_THROW_ERROR_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/error_code.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-ASIO_DECL void do_throw_error(const asio::error_code& err);
-
-ASIO_DECL void do_throw_error(const asio::error_code& err,
-    const char* location);
-
-inline void throw_error(const asio::error_code& err)
-{
-  if (err)
-    do_throw_error(err);
-}
-
-inline void throw_error(const asio::error_code& err,
-    const char* location)
-{
-  if (err)
-    do_throw_error(err, location);
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/throw_error.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_DETAIL_THROW_ERROR_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/throw_exception.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/throw_exception.hpp
deleted file mode 100644
index 3cec317..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/throw_exception.hpp
+++ /dev/null
@@ -1,51 +0,0 @@
-//
-// detail/throw_exception.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_THROW_EXCEPTION_HPP
-#define ASIO_DETAIL_THROW_EXCEPTION_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_BOOST_THROW_EXCEPTION)
-# include <boost/throw_exception.hpp>
-#endif // defined(ASIO_BOOST_THROW_EXCEPTION)
-
-namespace asio {
-namespace detail {
-
-#if defined(ASIO_HAS_BOOST_THROW_EXCEPTION)
-using boost::throw_exception;
-#else // defined(ASIO_HAS_BOOST_THROW_EXCEPTION)
-
-// Declare the throw_exception function for all targets.
-template <typename Exception>
-void throw_exception(const Exception& e);
-
-// Only define the throw_exception function when exceptions are enabled.
-// Otherwise, it is up to the application to provide a definition of this
-// function.
-# if !defined(ASIO_NO_EXCEPTIONS)
-template <typename Exception>
-void throw_exception(const Exception& e)
-{
-  throw e;
-}
-# endif // !defined(ASIO_NO_EXCEPTIONS)
-
-#endif // defined(ASIO_HAS_BOOST_THROW_EXCEPTION)
-
-} // namespace detail
-} // namespace asio
-
-#endif // ASIO_DETAIL_THROW_EXCEPTION_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/timer_queue.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/timer_queue.hpp
deleted file mode 100644
index 5fd9f7f..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/timer_queue.hpp
+++ /dev/null
@@ -1,331 +0,0 @@
-//
-// detail/timer_queue.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_TIMER_QUEUE_HPP
-#define ASIO_DETAIL_TIMER_QUEUE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cstddef>
-#include <vector>
-#include "asio/detail/cstdint.hpp"
-#include "asio/detail/date_time_fwd.hpp"
-#include "asio/detail/limits.hpp"
-#include "asio/detail/op_queue.hpp"
-#include "asio/detail/timer_queue_base.hpp"
-#include "asio/detail/wait_op.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Time_Traits>
-class timer_queue
-  : public timer_queue_base
-{
-public:
-  // The time type.
-  typedef typename Time_Traits::time_type time_type;
-
-  // The duration type.
-  typedef typename Time_Traits::duration_type duration_type;
-
-  // Per-timer data.
-  class per_timer_data
-  {
-  public:
-    per_timer_data() : next_(0), prev_(0) {}
-
-  private:
-    friend class timer_queue;
-
-    // The operations waiting on the timer.
-    op_queue<wait_op> op_queue_;
-
-    // The index of the timer in the heap.
-    std::size_t heap_index_;
-
-    // Pointers to adjacent timers in a linked list.
-    per_timer_data* next_;
-    per_timer_data* prev_;
-  };
-
-  // Constructor.
-  timer_queue()
-    : timers_(),
-      heap_()
-  {
-  }
-
-  // Add a new timer to the queue. Returns true if this is the timer that is
-  // earliest in the queue, in which case the reactor's event demultiplexing
-  // function call may need to be interrupted and restarted.
-  bool enqueue_timer(const time_type& time, per_timer_data& timer, wait_op* op)
-  {
-    // Enqueue the timer object.
-    if (timer.prev_ == 0 && &timer != timers_)
-    {
-      if (this->is_positive_infinity(time))
-      {
-        // No heap entry is required for timers that never expire.
-        timer.heap_index_ = (std::numeric_limits<std::size_t>::max)();
-      }
-      else
-      {
-        // Put the new timer at the correct position in the heap. This is done
-        // first since push_back() can throw due to allocation failure.
-        timer.heap_index_ = heap_.size();
-        heap_entry entry = { time, &timer };
-        heap_.push_back(entry);
-        up_heap(heap_.size() - 1);
-      }
-
-      // Insert the new timer into the linked list of active timers.
-      timer.next_ = timers_;
-      timer.prev_ = 0;
-      if (timers_)
-        timers_->prev_ = &timer;
-      timers_ = &timer;
-    }
-
-    // Enqueue the individual timer operation.
-    timer.op_queue_.push(op);
-
-    // Interrupt reactor only if newly added timer is first to expire.
-    return timer.heap_index_ == 0 && timer.op_queue_.front() == op;
-  }
-
-  // Whether there are no timers in the queue.
-  virtual bool empty() const
-  {
-    return timers_ == 0;
-  }
-
-  // Get the time for the timer that is earliest in the queue.
-  virtual long wait_duration_msec(long max_duration) const
-  {
-    if (heap_.empty())
-      return max_duration;
-
-    return this->to_msec(
-        Time_Traits::to_posix_duration(
-          Time_Traits::subtract(heap_[0].time_, Time_Traits::now())),
-        max_duration);
-  }
-
-  // Get the time for the timer that is earliest in the queue.
-  virtual long wait_duration_usec(long max_duration) const
-  {
-    if (heap_.empty())
-      return max_duration;
-
-    return this->to_usec(
-        Time_Traits::to_posix_duration(
-          Time_Traits::subtract(heap_[0].time_, Time_Traits::now())),
-        max_duration);
-  }
-
-  // Dequeue all timers not later than the current time.
-  virtual void get_ready_timers(op_queue<operation>& ops)
-  {
-    if (!heap_.empty())
-    {
-      const time_type now = Time_Traits::now();
-      while (!heap_.empty() && !Time_Traits::less_than(now, heap_[0].time_))
-      {
-        per_timer_data* timer = heap_[0].timer_;
-        ops.push(timer->op_queue_);
-        remove_timer(*timer);
-      }
-    }
-  }
-
-  // Dequeue all timers.
-  virtual void get_all_timers(op_queue<operation>& ops)
-  {
-    while (timers_)
-    {
-      per_timer_data* timer = timers_;
-      timers_ = timers_->next_;
-      ops.push(timer->op_queue_);
-      timer->next_ = 0;
-      timer->prev_ = 0;
-    }
-
-    heap_.clear();
-  }
-
-  // Cancel and dequeue operations for the given timer.
-  std::size_t cancel_timer(per_timer_data& timer, op_queue<operation>& ops,
-      std::size_t max_cancelled = (std::numeric_limits<std::size_t>::max)())
-  {
-    std::size_t num_cancelled = 0;
-    if (timer.prev_ != 0 || &timer == timers_)
-    {
-      while (wait_op* op = (num_cancelled != max_cancelled)
-          ? timer.op_queue_.front() : 0)
-      {
-        op->ec_ = asio::error::operation_aborted;
-        timer.op_queue_.pop();
-        ops.push(op);
-        ++num_cancelled;
-      }
-      if (timer.op_queue_.empty())
-        remove_timer(timer);
-    }
-    return num_cancelled;
-  }
-
-private:
-  // Move the item at the given index up the heap to its correct position.
-  void up_heap(std::size_t index)
-  {
-    while (index > 0)
-    {
-      std::size_t parent = (index - 1) / 2;
-      if (!Time_Traits::less_than(heap_[index].time_, heap_[parent].time_))
-        break;
-      swap_heap(index, parent);
-      index = parent;
-    }
-  }
-
-  // Move the item at the given index down the heap to its correct position.
-  void down_heap(std::size_t index)
-  {
-    std::size_t child = index * 2 + 1;
-    while (child < heap_.size())
-    {
-      std::size_t min_child = (child + 1 == heap_.size()
-          || Time_Traits::less_than(
-            heap_[child].time_, heap_[child + 1].time_))
-        ? child : child + 1;
-      if (Time_Traits::less_than(heap_[index].time_, heap_[min_child].time_))
-        break;
-      swap_heap(index, min_child);
-      index = min_child;
-      child = index * 2 + 1;
-    }
-  }
-
-  // Swap two entries in the heap.
-  void swap_heap(std::size_t index1, std::size_t index2)
-  {
-    heap_entry tmp = heap_[index1];
-    heap_[index1] = heap_[index2];
-    heap_[index2] = tmp;
-    heap_[index1].timer_->heap_index_ = index1;
-    heap_[index2].timer_->heap_index_ = index2;
-  }
-
-  // Remove a timer from the heap and list of timers.
-  void remove_timer(per_timer_data& timer)
-  {
-    // Remove the timer from the heap.
-    std::size_t index = timer.heap_index_;
-    if (!heap_.empty() && index < heap_.size())
-    {
-      if (index == heap_.size() - 1)
-      {
-        heap_.pop_back();
-      }
-      else
-      {
-        swap_heap(index, heap_.size() - 1);
-        heap_.pop_back();
-        if (index > 0 && Time_Traits::less_than(
-              heap_[index].time_, heap_[(index - 1) / 2].time_))
-          up_heap(index);
-        else
-          down_heap(index);
-      }
-    }
-
-    // Remove the timer from the linked list of active timers.
-    if (timers_ == &timer)
-      timers_ = timer.next_;
-    if (timer.prev_)
-      timer.prev_->next_ = timer.next_;
-    if (timer.next_)
-      timer.next_->prev_= timer.prev_;
-    timer.next_ = 0;
-    timer.prev_ = 0;
-  }
-
-  // Determine if the specified absolute time is positive infinity.
-  template <typename Time_Type>
-  static bool is_positive_infinity(const Time_Type&)
-  {
-    return false;
-  }
-
-  // Determine if the specified absolute time is positive infinity.
-  template <typename T, typename TimeSystem>
-  static bool is_positive_infinity(
-      const boost::date_time::base_time<T, TimeSystem>& time)
-  {
-    return time.is_pos_infinity();
-  }
-
-  // Helper function to convert a duration into milliseconds.
-  template <typename Duration>
-  long to_msec(const Duration& d, long max_duration) const
-  {
-    if (d.ticks() <= 0)
-      return 0;
-    int64_t msec = d.total_milliseconds();
-    if (msec == 0)
-      return 1;
-    if (msec > max_duration)
-      return max_duration;
-    return static_cast<long>(msec);
-  }
-
-  // Helper function to convert a duration into microseconds.
-  template <typename Duration>
-  long to_usec(const Duration& d, long max_duration) const
-  {
-    if (d.ticks() <= 0)
-      return 0;
-    int64_t usec = d.total_microseconds();
-    if (usec == 0)
-      return 1;
-    if (usec > max_duration)
-      return max_duration;
-    return static_cast<long>(usec);
-  }
-
-  // The head of a linked list of all active timers.
-  per_timer_data* timers_;
-
-  struct heap_entry
-  {
-    // The time when the timer should fire.
-    time_type time_;
-
-    // The associated timer with enqueued operations.
-    per_timer_data* timer_;
-  };
-
-  // The heap of timers, with the earliest timer at the front.
-  std::vector<heap_entry> heap_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_TIMER_QUEUE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/timer_queue_base.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/timer_queue_base.hpp
deleted file mode 100644
index 56101fd..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/timer_queue_base.hpp
+++ /dev/null
@@ -1,68 +0,0 @@
-//
-// detail/timer_queue_base.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_TIMER_QUEUE_BASE_HPP
-#define ASIO_DETAIL_TIMER_QUEUE_BASE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/op_queue.hpp"
-#include "asio/detail/operation.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class timer_queue_base
-  : private noncopyable
-{
-public:
-  // Constructor.
-  timer_queue_base() : next_(0) {}
-
-  // Destructor.
-  virtual ~timer_queue_base() {}
-
-  // Whether there are no timers in the queue.
-  virtual bool empty() const = 0;
-
-  // Get the time to wait until the next timer.
-  virtual long wait_duration_msec(long max_duration) const = 0;
-
-  // Get the time to wait until the next timer.
-  virtual long wait_duration_usec(long max_duration) const = 0;
-
-  // Dequeue all ready timers.
-  virtual void get_ready_timers(op_queue<operation>& ops) = 0;
-
-  // Dequeue all timers.
-  virtual void get_all_timers(op_queue<operation>& ops) = 0;
-
-private:
-  friend class timer_queue_set;
-
-  // Next timer queue in the set.
-  timer_queue_base* next_;
-};
-
-template <typename Time_Traits>
-class timer_queue;
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_TIMER_QUEUE_BASE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/timer_queue_ptime.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/timer_queue_ptime.hpp
deleted file mode 100644
index 0062fea..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/timer_queue_ptime.hpp
+++ /dev/null
@@ -1,93 +0,0 @@
-//
-// detail/timer_queue_ptime.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_TIMER_QUEUE_PTIME_HPP
-#define ASIO_DETAIL_TIMER_QUEUE_PTIME_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/time_traits.hpp"
-#include "asio/detail/timer_queue.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-#if defined(ASIO_HAS_BOOST_DATE_TIME)
-
-namespace asio {
-namespace detail {
-
-struct forwarding_posix_time_traits : time_traits<boost::posix_time::ptime> {};
-
-// Template specialisation for the commonly used instantation.
-template <>
-class timer_queue<time_traits<boost::posix_time::ptime> >
-  : public timer_queue_base
-{
-public:
-  // The time type.
-  typedef boost::posix_time::ptime time_type;
-
-  // The duration type.
-  typedef boost::posix_time::time_duration duration_type;
-
-  // Per-timer data.
-  typedef timer_queue<forwarding_posix_time_traits>::per_timer_data
-    per_timer_data;
-
-  // Constructor.
-  ASIO_DECL timer_queue();
-
-  // Destructor.
-  ASIO_DECL virtual ~timer_queue();
-
-  // Add a new timer to the queue. Returns true if this is the timer that is
-  // earliest in the queue, in which case the reactor's event demultiplexing
-  // function call may need to be interrupted and restarted.
-  ASIO_DECL bool enqueue_timer(const time_type& time,
-      per_timer_data& timer, wait_op* op);
-
-  // Whether there are no timers in the queue.
-  ASIO_DECL virtual bool empty() const;
-
-  // Get the time for the timer that is earliest in the queue.
-  ASIO_DECL virtual long wait_duration_msec(long max_duration) const;
-
-  // Get the time for the timer that is earliest in the queue.
-  ASIO_DECL virtual long wait_duration_usec(long max_duration) const;
-
-  // Dequeue all timers not later than the current time.
-  ASIO_DECL virtual void get_ready_timers(op_queue<operation>& ops);
-
-  // Dequeue all timers.
-  ASIO_DECL virtual void get_all_timers(op_queue<operation>& ops);
-
-  // Cancel and dequeue operations for the given timer.
-  ASIO_DECL std::size_t cancel_timer(
-      per_timer_data& timer, op_queue<operation>& ops,
-      std::size_t max_cancelled = (std::numeric_limits<std::size_t>::max)());
-
-private:
-  timer_queue<forwarding_posix_time_traits> impl_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#endif // defined(ASIO_HAS_BOOST_DATE_TIME)
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/timer_queue_ptime.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_DETAIL_TIMER_QUEUE_PTIME_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/timer_queue_set.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/timer_queue_set.hpp
deleted file mode 100644
index e8bf649..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/timer_queue_set.hpp
+++ /dev/null
@@ -1,66 +0,0 @@
-//
-// detail/timer_queue_set.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_TIMER_QUEUE_SET_HPP
-#define ASIO_DETAIL_TIMER_QUEUE_SET_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/timer_queue_base.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class timer_queue_set
-{
-public:
-  // Constructor.
-  ASIO_DECL timer_queue_set();
-
-  // Add a timer queue to the set.
-  ASIO_DECL void insert(timer_queue_base* q);
-
-  // Remove a timer queue from the set.
-  ASIO_DECL void erase(timer_queue_base* q);
-
-  // Determine whether all queues are empty.
-  ASIO_DECL bool all_empty() const;
-
-  // Get the wait duration in milliseconds.
-  ASIO_DECL long wait_duration_msec(long max_duration) const;
-
-  // Get the wait duration in microseconds.
-  ASIO_DECL long wait_duration_usec(long max_duration) const;
-
-  // Dequeue all ready timers.
-  ASIO_DECL void get_ready_timers(op_queue<operation>& ops);
-
-  // Dequeue all timers.
-  ASIO_DECL void get_all_timers(op_queue<operation>& ops);
-
-private:
-  timer_queue_base* first_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/timer_queue_set.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_DETAIL_TIMER_QUEUE_SET_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/timer_scheduler.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/timer_scheduler.hpp
deleted file mode 100644
index 34f8259..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/timer_scheduler.hpp
+++ /dev/null
@@ -1,35 +0,0 @@
-//
-// detail/timer_scheduler.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_TIMER_SCHEDULER_HPP
-#define ASIO_DETAIL_TIMER_SCHEDULER_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/timer_scheduler_fwd.hpp"
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-# include "asio/detail/winrt_timer_scheduler.hpp"
-#elif defined(ASIO_HAS_IOCP)
-# include "asio/detail/win_iocp_io_service.hpp"
-#elif defined(ASIO_HAS_EPOLL)
-# include "asio/detail/epoll_reactor.hpp"
-#elif defined(ASIO_HAS_KQUEUE)
-# include "asio/detail/kqueue_reactor.hpp"
-#elif defined(ASIO_HAS_DEV_POLL)
-# include "asio/detail/dev_poll_reactor.hpp"
-#else
-# include "asio/detail/select_reactor.hpp"
-#endif
-
-#endif // ASIO_DETAIL_TIMER_SCHEDULER_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/timer_scheduler_fwd.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/timer_scheduler_fwd.hpp
deleted file mode 100644
index 69b0586..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/timer_scheduler_fwd.hpp
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// detail/timer_scheduler_fwd.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_TIMER_SCHEDULER_FWD_HPP
-#define ASIO_DETAIL_TIMER_SCHEDULER_FWD_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-namespace asio {
-namespace detail {
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-typedef class winrt_timer_scheduler timer_scheduler;
-#elif defined(ASIO_HAS_IOCP)
-typedef class win_iocp_io_service timer_scheduler;
-#elif defined(ASIO_HAS_EPOLL)
-typedef class epoll_reactor timer_scheduler;
-#elif defined(ASIO_HAS_KQUEUE)
-typedef class kqueue_reactor timer_scheduler;
-#elif defined(ASIO_HAS_DEV_POLL)
-typedef class dev_poll_reactor timer_scheduler;
-#else
-typedef class select_reactor timer_scheduler;
-#endif
-
-} // namespace detail
-} // namespace asio
-
-#endif // ASIO_DETAIL_TIMER_SCHEDULER_FWD_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/tss_ptr.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/tss_ptr.hpp
deleted file mode 100644
index af80f28..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/tss_ptr.hpp
+++ /dev/null
@@ -1,69 +0,0 @@
-//
-// detail/tss_ptr.hpp
-// ~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_TSS_PTR_HPP
-#define ASIO_DETAIL_TSS_PTR_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_HAS_THREADS)
-# include "asio/detail/null_tss_ptr.hpp"
-#elif defined(ASIO_HAS_THREAD_KEYWORD_EXTENSION)
-# include "asio/detail/keyword_tss_ptr.hpp"
-#elif defined(ASIO_WINDOWS)
-# include "asio/detail/win_tss_ptr.hpp"
-#elif defined(ASIO_HAS_PTHREADS)
-# include "asio/detail/posix_tss_ptr.hpp"
-#else
-# error Only Windows and POSIX are supported!
-#endif
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename T>
-class tss_ptr
-#if !defined(ASIO_HAS_THREADS)
-  : public null_tss_ptr<T>
-#elif defined(ASIO_HAS_THREAD_KEYWORD_EXTENSION)
-  : public keyword_tss_ptr<T>
-#elif defined(ASIO_WINDOWS)
-  : public win_tss_ptr<T>
-#elif defined(ASIO_HAS_PTHREADS)
-  : public posix_tss_ptr<T>
-#endif
-{
-public:
-  void operator=(T* value)
-  {
-#if !defined(ASIO_HAS_THREADS)
-    null_tss_ptr<T>::operator=(value);
-#elif defined(ASIO_HAS_THREAD_KEYWORD_EXTENSION)
-    keyword_tss_ptr<T>::operator=(value);
-#elif defined(ASIO_WINDOWS)
-    win_tss_ptr<T>::operator=(value);
-#elif defined(ASIO_HAS_PTHREADS)
-    posix_tss_ptr<T>::operator=(value);
-#endif
-  }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_TSS_PTR_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/type_traits.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/type_traits.hpp
deleted file mode 100644
index 56614f3..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/type_traits.hpp
+++ /dev/null
@@ -1,58 +0,0 @@
-//
-// detail/type_traits.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_TYPE_TRAITS_HPP
-#define ASIO_DETAIL_TYPE_TRAITS_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_STD_TYPE_TRAITS)
-# include <type_traits>
-#else // defined(ASIO_HAS_TYPE_TRAITS)
-# include <boost/type_traits/add_const.hpp>
-# include <boost/type_traits/is_const.hpp>
-# include <boost/type_traits/is_convertible.hpp>
-# include <boost/type_traits/is_function.hpp>
-# include <boost/type_traits/is_same.hpp>
-# include <boost/type_traits/remove_pointer.hpp>
-# include <boost/type_traits/remove_reference.hpp>
-# include <boost/utility/enable_if.hpp>
-#endif // defined(ASIO_HAS_TYPE_TRAITS)
-
-namespace asio {
-
-#if defined(ASIO_HAS_STD_TYPE_TRAITS)
-using std::add_const;
-using std::enable_if;
-using std::is_const;
-using std::is_convertible;
-using std::is_function;
-using std::is_same;
-using std::remove_pointer;
-using std::remove_reference;
-#else // defined(ASIO_HAS_STD_TYPE_TRAITS)
-using boost::add_const;
-template <bool Condition, typename Type = void>
-struct enable_if : boost::enable_if_c<Condition, Type> {};
-using boost::is_const;
-using boost::is_convertible;
-using boost::is_function;
-using boost::is_same;
-using boost::remove_pointer;
-using boost::remove_reference;
-#endif // defined(ASIO_HAS_STD_TYPE_TRAITS)
-
-} // namespace asio
-
-#endif // ASIO_DETAIL_TYPE_TRAITS_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/variadic_templates.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/variadic_templates.hpp
deleted file mode 100644
index 0c2ba93..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/variadic_templates.hpp
+++ /dev/null
@@ -1,63 +0,0 @@
-//
-// detail/variadic_templates.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_VARIADIC_TEMPLATES_HPP
-#define ASIO_DETAIL_VARIADIC_TEMPLATES_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_HAS_VARIADIC_TEMPLATES)
-
-# define ASIO_VARIADIC_TPARAMS(n) ASIO_VARIADIC_TPARAMS_##n
-
-# define ASIO_VARIADIC_TPARAMS_1 \
-  typename T1
-# define ASIO_VARIADIC_TPARAMS_2 \
-  typename T1, typename T2
-# define ASIO_VARIADIC_TPARAMS_3 \
-  typename T1, typename T2, typename T3
-# define ASIO_VARIADIC_TPARAMS_4 \
-  typename T1, typename T2, typename T3, typename T4
-# define ASIO_VARIADIC_TPARAMS_5 \
-  typename T1, typename T2, typename T3, typename T4, typename T5
-
-# define ASIO_VARIADIC_TARGS(n) ASIO_VARIADIC_TARGS_##n
-
-# define ASIO_VARIADIC_TARGS_1 x1
-# define ASIO_VARIADIC_TARGS_2 x1, x2
-# define ASIO_VARIADIC_TARGS_3 x1, x2, x3
-# define ASIO_VARIADIC_TARGS_4 x1, x2, x3, x4
-# define ASIO_VARIADIC_TARGS_5 x1, x2, x3, x4, x5
-
-# define ASIO_VARIADIC_PARAMS(n) ASIO_VARIADIC_PARAMS_##n
-
-# define ASIO_VARIADIC_PARAMS_1 T1 x1
-# define ASIO_VARIADIC_PARAMS_2 T1 x1, T2 x2
-# define ASIO_VARIADIC_PARAMS_3 T1 x1, T2 x2, T3 x3
-# define ASIO_VARIADIC_PARAMS_4 T1 x1, T2 x2, T3 x3, T4 x4
-# define ASIO_VARIADIC_PARAMS_5 T1 x1, T2 x2, T3 x3, T4 x4, T5 x5
-
-# define ASIO_VARIADIC_ARGS(n) ASIO_VARIADIC_ARGS_##n
-
-# define ASIO_VARIADIC_ARGS_1 x1
-# define ASIO_VARIADIC_ARGS_2 x1, x2
-# define ASIO_VARIADIC_ARGS_3 x1, x2, x3
-# define ASIO_VARIADIC_ARGS_4 x1, x2, x3, x4
-# define ASIO_VARIADIC_ARGS_5 x1, x2, x3, x4, x5
-
-# define ASIO_VARIADIC_GENERATE(m) m(1) m(2) m(3) m(4) m(5)
-
-#endif // !defined(ASIO_HAS_VARIADIC_TEMPLATES)
-
-#endif // ASIO_DETAIL_VARIADIC_TEMPLATES_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/wait_handler.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/wait_handler.hpp
deleted file mode 100644
index 998a001..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/wait_handler.hpp
+++ /dev/null
@@ -1,83 +0,0 @@
-//
-// detail/wait_handler.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WAIT_HANDLER_HPP
-#define ASIO_DETAIL_WAIT_HANDLER_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/wait_op.hpp"
-#include "asio/io_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Handler>
-class wait_handler : public wait_op
-{
-public:
-  ASIO_DEFINE_HANDLER_PTR(wait_handler);
-
-  wait_handler(Handler& h)
-    : wait_op(&wait_handler::do_complete),
-      handler_(ASIO_MOVE_CAST(Handler)(h))
-  {
-  }
-
-  static void do_complete(io_service_impl* owner, operation* base,
-      const asio::error_code& /*ec*/,
-      std::size_t /*bytes_transferred*/)
-  {
-    // Take ownership of the handler object.
-    wait_handler* h(static_cast<wait_handler*>(base));
-    ptr p = { asio::detail::addressof(h->handler_), h, h };
-
-    ASIO_HANDLER_COMPLETION((h));
-
-    // Make a copy of the handler so that the memory can be deallocated before
-    // the upcall is made. Even if we're not about to make an upcall, a
-    // sub-object of the handler may be the true owner of the memory associated
-    // with the handler. Consequently, a local copy of the handler is required
-    // to ensure that any owning sub-object remains valid until after we have
-    // deallocated the memory here.
-    detail::binder1<Handler, asio::error_code>
-      handler(h->handler_, h->ec_);
-    p.h = asio::detail::addressof(handler.handler_);
-    p.reset();
-
-    // Make the upcall if required.
-    if (owner)
-    {
-      fenced_block b(fenced_block::half);
-      ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_));
-      asio_handler_invoke_helpers::invoke(handler, handler.handler_);
-      ASIO_HANDLER_INVOCATION_END;
-    }
-  }
-
-private:
-  Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_WAIT_HANDLER_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/wait_op.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/wait_op.hpp
deleted file mode 100644
index a03d108..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/wait_op.hpp
+++ /dev/null
@@ -1,45 +0,0 @@
-//
-// detail/wait_op.hpp
-// ~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WAIT_OP_HPP
-#define ASIO_DETAIL_WAIT_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/operation.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class wait_op
-  : public operation
-{
-public:
-  // The error code to be passed to the completion handler.
-  asio::error_code ec_;
-
-protected:
-  wait_op(func_type func)
-    : operation(func)
-  {
-  }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_WAIT_OP_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/weak_ptr.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/weak_ptr.hpp
deleted file mode 100644
index 6b3f0ae..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/weak_ptr.hpp
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// detail/weak_ptr.hpp
-// ~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WEAK_PTR_HPP
-#define ASIO_DETAIL_WEAK_PTR_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_STD_SHARED_PTR)
-# include <memory>
-#else // defined(ASIO_HAS_STD_SHARED_PTR)
-# include <boost/weak_ptr.hpp>
-#endif // defined(ASIO_HAS_STD_SHARED_PTR)
-
-namespace asio {
-namespace detail {
-
-#if defined(ASIO_HAS_STD_SHARED_PTR)
-using std::weak_ptr;
-#else // defined(ASIO_HAS_STD_SHARED_PTR)
-using boost::weak_ptr;
-#endif // defined(ASIO_HAS_STD_SHARED_PTR)
-
-} // namespace detail
-} // namespace asio
-
-#endif // ASIO_DETAIL_WEAK_PTR_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_event.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_event.hpp
deleted file mode 100644
index f4170b9..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_event.hpp
+++ /dev/null
@@ -1,126 +0,0 @@
-//
-// detail/win_event.hpp
-// ~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WIN_EVENT_HPP
-#define ASIO_DETAIL_WIN_EVENT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS)
-
-#include "asio/detail/assert.hpp"
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/socket_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class win_event
-  : private noncopyable
-{
-public:
-  // Constructor.
-  ASIO_DECL win_event();
-
-  // Destructor.
-  ASIO_DECL ~win_event();
-
-  // Signal the event. (Retained for backward compatibility.)
-  template <typename Lock>
-  void signal(Lock& lock)
-  {
-    this->signal_all(lock);
-  }
-
-  // Signal all waiters.
-  template <typename Lock>
-  void signal_all(Lock& lock)
-  {
-    ASIO_ASSERT(lock.locked());
-    (void)lock;
-    state_ |= 1;
-    ::SetEvent(events_[0]);
-  }
-
-  // Unlock the mutex and signal one waiter.
-  template <typename Lock>
-  void unlock_and_signal_one(Lock& lock)
-  {
-    ASIO_ASSERT(lock.locked());
-    state_ |= 1;
-    bool have_waiters = (state_ > 1);
-    lock.unlock();
-    if (have_waiters)
-      ::SetEvent(events_[1]);
-  }
-
-  // If there's a waiter, unlock the mutex and signal it.
-  template <typename Lock>
-  bool maybe_unlock_and_signal_one(Lock& lock)
-  {
-    ASIO_ASSERT(lock.locked());
-    state_ |= 1;
-    if (state_ > 1)
-    {
-      lock.unlock();
-      ::SetEvent(events_[1]);
-      return true;
-    }
-    return false;
-  }
-
-  // Reset the event.
-  template <typename Lock>
-  void clear(Lock& lock)
-  {
-    ASIO_ASSERT(lock.locked());
-    (void)lock;
-    ::ResetEvent(events_[0]);
-    state_ &= ~std::size_t(1);
-  }
-
-  // Wait for the event to become signalled.
-  template <typename Lock>
-  void wait(Lock& lock)
-  {
-    ASIO_ASSERT(lock.locked());
-    while ((state_ & 1) == 0)
-    {
-      state_ += 2;
-      lock.unlock();
-      ::WaitForMultipleObjects(2, events_, false, INFINITE);
-      lock.lock();
-      state_ -= 2;
-    }
-  }
-
-private:
-  HANDLE events_[2];
-  std::size_t state_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/win_event.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_WINDOWS)
-
-#endif // ASIO_DETAIL_WIN_EVENT_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_fd_set_adapter.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_fd_set_adapter.hpp
deleted file mode 100644
index 4a05ce0..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_fd_set_adapter.hpp
+++ /dev/null
@@ -1,149 +0,0 @@
-//
-// detail/win_fd_set_adapter.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WIN_FD_SET_ADAPTER_HPP
-#define ASIO_DETAIL_WIN_FD_SET_ADAPTER_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/reactor_op_queue.hpp"
-#include "asio/detail/socket_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-// Adapts the FD_SET type to meet the Descriptor_Set concept's requirements.
-class win_fd_set_adapter : noncopyable
-{
-public:
-  enum { default_fd_set_size = 1024 };
-
-  win_fd_set_adapter()
-    : capacity_(default_fd_set_size),
-      max_descriptor_(invalid_socket)
-  {
-    fd_set_ = static_cast<win_fd_set*>(::operator new(
-          sizeof(win_fd_set) - sizeof(SOCKET)
-          + sizeof(SOCKET) * (capacity_)));
-    fd_set_->fd_count = 0;
-  }
-
-  ~win_fd_set_adapter()
-  {
-    ::operator delete(fd_set_);
-  }
-
-  void reset()
-  {
-    fd_set_->fd_count = 0;
-    max_descriptor_ = invalid_socket;
-  }
-
-  bool set(socket_type descriptor)
-  {
-    for (u_int i = 0; i < fd_set_->fd_count; ++i)
-      if (fd_set_->fd_array[i] == descriptor)
-        return true;
-
-    reserve(fd_set_->fd_count + 1);
-    fd_set_->fd_array[fd_set_->fd_count++] = descriptor;
-    return true;
-  }
-
-  void set(reactor_op_queue<socket_type>& operations, op_queue<operation>&)
-  {
-    reactor_op_queue<socket_type>::iterator i = operations.begin();
-    while (i != operations.end())
-    {
-      reactor_op_queue<socket_type>::iterator op_iter = i++;
-      reserve(fd_set_->fd_count + 1);
-      fd_set_->fd_array[fd_set_->fd_count++] = op_iter->first;
-    }
-  }
-
-  bool is_set(socket_type descriptor) const
-  {
-    return !!__WSAFDIsSet(descriptor,
-        const_cast<fd_set*>(reinterpret_cast<const fd_set*>(fd_set_)));
-  }
-
-  operator fd_set*()
-  {
-    return reinterpret_cast<fd_set*>(fd_set_);
-  }
-
-  socket_type max_descriptor() const
-  {
-    return max_descriptor_;
-  }
-
-  void perform(reactor_op_queue<socket_type>& operations,
-      op_queue<operation>& ops) const
-  {
-    for (u_int i = 0; i < fd_set_->fd_count; ++i)
-      operations.perform_operations(fd_set_->fd_array[i], ops);
-  }
-
-private:
-  // This structure is defined to be compatible with the Windows API fd_set
-  // structure, but without being dependent on the value of FD_SETSIZE. We use
-  // the "struct hack" to allow the number of descriptors to be varied at
-  // runtime.
-  struct win_fd_set
-  {
-    u_int fd_count;
-    SOCKET fd_array[1];
-  };
-
-  // Increase the fd_set_ capacity to at least the specified number of elements.
-  void reserve(u_int n)
-  {
-    if (n <= capacity_)
-      return;
-
-    u_int new_capacity = capacity_ + capacity_ / 2;
-    if (new_capacity < n)
-      new_capacity = n;
-
-    win_fd_set* new_fd_set = static_cast<win_fd_set*>(::operator new(
-          sizeof(win_fd_set) - sizeof(SOCKET)
-          + sizeof(SOCKET) * (new_capacity)));
-
-    new_fd_set->fd_count = fd_set_->fd_count;
-    for (u_int i = 0; i < fd_set_->fd_count; ++i)
-      new_fd_set->fd_array[i] = fd_set_->fd_array[i];
-
-    ::operator delete(fd_set_);
-    fd_set_ = new_fd_set;
-    capacity_ = new_capacity;
-  }
-
-  win_fd_set* fd_set_;
-  u_int capacity_;
-  socket_type max_descriptor_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
-#endif // ASIO_DETAIL_WIN_FD_SET_ADAPTER_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_fenced_block.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_fenced_block.hpp
deleted file mode 100644
index 610f22f..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_fenced_block.hpp
+++ /dev/null
@@ -1,89 +0,0 @@
-//
-// detail/win_fenced_block.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WIN_FENCED_BLOCK_HPP
-#define ASIO_DETAIL_WIN_FENCED_BLOCK_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS) && !defined(UNDER_CE)
-
-#include "asio/detail/socket_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class win_fenced_block
-  : private noncopyable
-{
-public:
-  enum half_t { half };
-  enum full_t { full };
-
-  // Constructor for a half fenced block.
-  explicit win_fenced_block(half_t)
-  {
-  }
-
-  // Constructor for a full fenced block.
-  explicit win_fenced_block(full_t)
-  {
-#if defined(__BORLANDC__)
-    LONG barrier = 0;
-    ::InterlockedExchange(&barrier, 1);
-#elif defined(ASIO_MSVC) \
-  && ((ASIO_MSVC < 1400) || !defined(MemoryBarrier))
-# if defined(_M_IX86)
-#  pragma warning(push)
-#  pragma warning(disable:4793)
-    LONG barrier;
-    __asm { xchg barrier, eax }
-#  pragma warning(pop)
-# endif // defined(_M_IX86)
-#else
-    MemoryBarrier();
-#endif
-  }
-
-  // Destructor.
-  ~win_fenced_block()
-  {
-#if defined(__BORLANDC__)
-    LONG barrier = 0;
-    ::InterlockedExchange(&barrier, 1);
-#elif defined(ASIO_MSVC) \
-  && ((ASIO_MSVC < 1400) || !defined(MemoryBarrier))
-# if defined(_M_IX86)
-#  pragma warning(push)
-#  pragma warning(disable:4793)
-    LONG barrier;
-    __asm { xchg barrier, eax }
-#  pragma warning(pop)
-# endif // defined(_M_IX86)
-#else
-    MemoryBarrier();
-#endif
-  }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS) && !defined(UNDER_CE)
-
-#endif // ASIO_DETAIL_WIN_FENCED_BLOCK_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_handle_read_op.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_handle_read_op.hpp
deleted file mode 100644
index 1cd92e7..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_handle_read_op.hpp
+++ /dev/null
@@ -1,109 +0,0 @@
-//
-// detail/win_iocp_handle_read_op.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WIN_IOCP_HANDLE_READ_OP_HPP
-#define ASIO_DETAIL_WIN_IOCP_HANDLE_READ_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_IOCP)
-
-#include "asio/error.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/operation.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename MutableBufferSequence, typename Handler>
-class win_iocp_handle_read_op : public operation
-{
-public:
-  ASIO_DEFINE_HANDLER_PTR(win_iocp_handle_read_op);
-
-  win_iocp_handle_read_op(
-      const MutableBufferSequence& buffers, Handler& handler)
-    : operation(&win_iocp_handle_read_op::do_complete),
-      buffers_(buffers),
-      handler_(ASIO_MOVE_CAST(Handler)(handler))
-  {
-  }
-
-  static void do_complete(io_service_impl* owner, operation* base,
-      const asio::error_code& result_ec,
-      std::size_t bytes_transferred)
-  {
-    asio::error_code ec(result_ec);
-
-    // Take ownership of the operation object.
-    win_iocp_handle_read_op* o(static_cast<win_iocp_handle_read_op*>(base));
-    ptr p = { asio::detail::addressof(o->handler_), o, o };
-
-    ASIO_HANDLER_COMPLETION((o));
-
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-    if (owner)
-    {
-      // Check whether buffers are still valid.
-      buffer_sequence_adapter<asio::mutable_buffer,
-          MutableBufferSequence>::validate(o->buffers_);
-    }
-#endif // defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-
-    // Map non-portable errors to their portable counterparts.
-    if (ec.value() == ERROR_HANDLE_EOF)
-      ec = asio::error::eof;
-
-    // Make a copy of the handler so that the memory can be deallocated before
-    // the upcall is made. Even if we're not about to make an upcall, a
-    // sub-object of the handler may be the true owner of the memory associated
-    // with the handler. Consequently, a local copy of the handler is required
-    // to ensure that any owning sub-object remains valid until after we have
-    // deallocated the memory here.
-    detail::binder2<Handler, asio::error_code, std::size_t>
-      handler(o->handler_, ec, bytes_transferred);
-    p.h = asio::detail::addressof(handler.handler_);
-    p.reset();
-
-    // Make the upcall if required.
-    if (owner)
-    {
-      fenced_block b(fenced_block::half);
-      ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
-      asio_handler_invoke_helpers::invoke(handler, handler.handler_);
-      ASIO_HANDLER_INVOCATION_END;
-    }
-  }
-
-private:
-  MutableBufferSequence buffers_;
-  Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_WIN_IOCP_HANDLE_READ_OP_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_handle_service.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_handle_service.hpp
deleted file mode 100644
index 2e174e6..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_handle_service.hpp
+++ /dev/null
@@ -1,322 +0,0 @@
-//
-// detail/win_iocp_handle_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WIN_IOCP_HANDLE_SERVICE_HPP
-#define ASIO_DETAIL_WIN_IOCP_HANDLE_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_IOCP)
-
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/cstdint.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/mutex.hpp"
-#include "asio/detail/operation.hpp"
-#include "asio/detail/win_iocp_handle_read_op.hpp"
-#include "asio/detail/win_iocp_handle_write_op.hpp"
-#include "asio/detail/win_iocp_io_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class win_iocp_handle_service
-{
-public:
-  // The native type of a stream handle.
-  typedef HANDLE native_handle_type;
-
-  // The implementation type of the stream handle.
-  class implementation_type
-  {
-  public:
-    // Default constructor.
-    implementation_type()
-      : handle_(INVALID_HANDLE_VALUE),
-        safe_cancellation_thread_id_(0),
-        next_(0),
-        prev_(0)
-    {
-    }
-
-  private:
-    // Only this service will have access to the internal values.
-    friend class win_iocp_handle_service;
-
-    // The native stream handle representation.
-    native_handle_type handle_;
-
-    // The ID of the thread from which it is safe to cancel asynchronous
-    // operations. 0 means no asynchronous operations have been started yet.
-    // ~0 means asynchronous operations have been started from more than one
-    // thread, and cancellation is not supported for the handle.
-    DWORD safe_cancellation_thread_id_;
-
-    // Pointers to adjacent handle implementations in linked list.
-    implementation_type* next_;
-    implementation_type* prev_;
-  };
-
-  ASIO_DECL win_iocp_handle_service(asio::io_service& io_service);
-
-  // Destroy all user-defined handler objects owned by the service.
-  ASIO_DECL void shutdown_service();
-
-  // Construct a new handle implementation.
-  ASIO_DECL void construct(implementation_type& impl);
-
-  // Move-construct a new handle implementation.
-  ASIO_DECL void move_construct(implementation_type& impl,
-      implementation_type& other_impl);
-
-  // Move-assign from another handle implementation.
-  ASIO_DECL void move_assign(implementation_type& impl,
-      win_iocp_handle_service& other_service,
-      implementation_type& other_impl);
-
-  // Destroy a handle implementation.
-  ASIO_DECL void destroy(implementation_type& impl);
-
-  // Assign a native handle to a handle implementation.
-  ASIO_DECL asio::error_code assign(implementation_type& impl,
-      const native_handle_type& handle, asio::error_code& ec);
-
-  // Determine whether the handle is open.
-  bool is_open(const implementation_type& impl) const
-  {
-    return impl.handle_ != INVALID_HANDLE_VALUE;
-  }
-
-  // Destroy a handle implementation.
-  ASIO_DECL asio::error_code close(implementation_type& impl,
-      asio::error_code& ec);
-
-  // Get the native handle representation.
-  native_handle_type native_handle(const implementation_type& impl) const
-  {
-    return impl.handle_;
-  }
-
-  // Cancel all operations associated with the handle.
-  ASIO_DECL asio::error_code cancel(implementation_type& impl,
-      asio::error_code& ec);
-
-  // Write the given data. Returns the number of bytes written.
-  template <typename ConstBufferSequence>
-  size_t write_some(implementation_type& impl,
-      const ConstBufferSequence& buffers, asio::error_code& ec)
-  {
-    return write_some_at(impl, 0, buffers, ec);
-  }
-
-  // Write the given data at the specified offset. Returns the number of bytes
-  // written.
-  template <typename ConstBufferSequence>
-  size_t write_some_at(implementation_type& impl, uint64_t offset,
-      const ConstBufferSequence& buffers, asio::error_code& ec)
-  {
-    asio::const_buffer buffer =
-      buffer_sequence_adapter<asio::const_buffer,
-        ConstBufferSequence>::first(buffers);
-
-    return do_write(impl, offset, buffer, ec);
-  }
-
-  // Start an asynchronous write. The data being written must be valid for the
-  // lifetime of the asynchronous operation.
-  template <typename ConstBufferSequence, typename Handler>
-  void async_write_some(implementation_type& impl,
-      const ConstBufferSequence& buffers, Handler& handler)
-  {
-    // Allocate and construct an operation to wrap the handler.
-    typedef win_iocp_handle_write_op<ConstBufferSequence, Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(buffers, handler);
-
-    ASIO_HANDLER_CREATION((p.p, "handle", &impl, "async_write_some"));
-
-    start_write_op(impl, 0,
-        buffer_sequence_adapter<asio::const_buffer,
-          ConstBufferSequence>::first(buffers), p.p);
-    p.v = p.p = 0;
-  }
-
-  // Start an asynchronous write at a specified offset. The data being written
-  // must be valid for the lifetime of the asynchronous operation.
-  template <typename ConstBufferSequence, typename Handler>
-  void async_write_some_at(implementation_type& impl, uint64_t offset,
-      const ConstBufferSequence& buffers, Handler& handler)
-  {
-    // Allocate and construct an operation to wrap the handler.
-    typedef win_iocp_handle_write_op<ConstBufferSequence, Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(buffers, handler);
-
-    ASIO_HANDLER_CREATION((p.p, "handle", &impl, "async_write_some_at"));
-
-    start_write_op(impl, offset,
-        buffer_sequence_adapter<asio::const_buffer,
-          ConstBufferSequence>::first(buffers), p.p);
-    p.v = p.p = 0;
-  }
-
-  // Read some data. Returns the number of bytes received.
-  template <typename MutableBufferSequence>
-  size_t read_some(implementation_type& impl,
-      const MutableBufferSequence& buffers, asio::error_code& ec)
-  {
-    return read_some_at(impl, 0, buffers, ec);
-  }
-
-  // Read some data at a specified offset. Returns the number of bytes received.
-  template <typename MutableBufferSequence>
-  size_t read_some_at(implementation_type& impl, uint64_t offset,
-      const MutableBufferSequence& buffers, asio::error_code& ec)
-  {
-    asio::mutable_buffer buffer =
-      buffer_sequence_adapter<asio::mutable_buffer,
-        MutableBufferSequence>::first(buffers);
-
-    return do_read(impl, offset, buffer, ec);
-  }
-
-  // Start an asynchronous read. The buffer for the data being received must be
-  // valid for the lifetime of the asynchronous operation.
-  template <typename MutableBufferSequence, typename Handler>
-  void async_read_some(implementation_type& impl,
-      const MutableBufferSequence& buffers, Handler& handler)
-  {
-    // Allocate and construct an operation to wrap the handler.
-    typedef win_iocp_handle_read_op<MutableBufferSequence, Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(buffers, handler);
-
-    ASIO_HANDLER_CREATION((p.p, "handle", &impl, "async_read_some"));
-
-    start_read_op(impl, 0,
-        buffer_sequence_adapter<asio::mutable_buffer,
-          MutableBufferSequence>::first(buffers), p.p);
-    p.v = p.p = 0;
-  }
-
-  // Start an asynchronous read at a specified offset. The buffer for the data
-  // being received must be valid for the lifetime of the asynchronous
-  // operation.
-  template <typename MutableBufferSequence, typename Handler>
-  void async_read_some_at(implementation_type& impl, uint64_t offset,
-      const MutableBufferSequence& buffers, Handler& handler)
-  {
-    // Allocate and construct an operation to wrap the handler.
-    typedef win_iocp_handle_read_op<MutableBufferSequence, Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(buffers, handler);
-
-    ASIO_HANDLER_CREATION((p.p, "handle", &impl, "async_read_some_at"));
-
-    start_read_op(impl, offset,
-        buffer_sequence_adapter<asio::mutable_buffer,
-          MutableBufferSequence>::first(buffers), p.p);
-    p.v = p.p = 0;
-  }
-
-private:
-  // Prevent the use of the null_buffers type with this service.
-  size_t write_some(implementation_type& impl,
-      const null_buffers& buffers, asio::error_code& ec);
-  size_t write_some_at(implementation_type& impl, uint64_t offset,
-      const null_buffers& buffers, asio::error_code& ec);
-  template <typename Handler>
-  void async_write_some(implementation_type& impl,
-      const null_buffers& buffers, Handler& handler);
-  template <typename Handler>
-  void async_write_some_at(implementation_type& impl, uint64_t offset,
-      const null_buffers& buffers, Handler& handler);
-  size_t read_some(implementation_type& impl,
-      const null_buffers& buffers, asio::error_code& ec);
-  size_t read_some_at(implementation_type& impl, uint64_t offset,
-      const null_buffers& buffers, asio::error_code& ec);
-  template <typename Handler>
-  void async_read_some(implementation_type& impl,
-      const null_buffers& buffers, Handler& handler);
-  template <typename Handler>
-  void async_read_some_at(implementation_type& impl, uint64_t offset,
-      const null_buffers& buffers, Handler& handler);
-
-  // Helper class for waiting for synchronous operations to complete.
-  class overlapped_wrapper;
-
-  // Helper function to perform a synchronous write operation.
-  ASIO_DECL size_t do_write(implementation_type& impl,
-      uint64_t offset, const asio::const_buffer& buffer,
-      asio::error_code& ec);
-
-  // Helper function to start a write operation.
-  ASIO_DECL void start_write_op(implementation_type& impl,
-      uint64_t offset, const asio::const_buffer& buffer,
-      operation* op);
-
-  // Helper function to perform a synchronous write operation.
-  ASIO_DECL size_t do_read(implementation_type& impl,
-      uint64_t offset, const asio::mutable_buffer& buffer,
-      asio::error_code& ec);
-
-  // Helper function to start a read operation.
-  ASIO_DECL void start_read_op(implementation_type& impl,
-      uint64_t offset, const asio::mutable_buffer& buffer,
-      operation* op);
-
-  // Update the ID of the thread from which cancellation is safe.
-  ASIO_DECL void update_cancellation_thread_id(implementation_type& impl);
-
-  // Helper function to close a handle when the associated object is being
-  // destroyed.
-  ASIO_DECL void close_for_destruction(implementation_type& impl);
-
-  // The IOCP service used for running asynchronous operations and dispatching
-  // handlers.
-  win_iocp_io_service& iocp_service_;
-
-  // Mutex to protect access to the linked list of implementations.
-  mutex mutex_;
-
-  // The head of a linked list of all implementations.
-  implementation_type* impl_list_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/win_iocp_handle_service.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_WIN_IOCP_HANDLE_SERVICE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_handle_write_op.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_handle_write_op.hpp
deleted file mode 100644
index 21edc58..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_handle_write_op.hpp
+++ /dev/null
@@ -1,101 +0,0 @@
-//
-// detail/win_iocp_handle_write_op.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WIN_IOCP_HANDLE_WRITE_OP_HPP
-#define ASIO_DETAIL_WIN_IOCP_HANDLE_WRITE_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_IOCP)
-
-#include "asio/error.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/operation.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename ConstBufferSequence, typename Handler>
-class win_iocp_handle_write_op : public operation
-{
-public:
-  ASIO_DEFINE_HANDLER_PTR(win_iocp_handle_write_op);
-
-  win_iocp_handle_write_op(const ConstBufferSequence& buffers, Handler& handler)
-    : operation(&win_iocp_handle_write_op::do_complete),
-      buffers_(buffers),
-      handler_(ASIO_MOVE_CAST(Handler)(handler))
-  {
-  }
-
-  static void do_complete(io_service_impl* owner, operation* base,
-      const asio::error_code& ec, std::size_t bytes_transferred)
-  {
-    // Take ownership of the operation object.
-    win_iocp_handle_write_op* o(static_cast<win_iocp_handle_write_op*>(base));
-    ptr p = { asio::detail::addressof(o->handler_), o, o };
-
-    ASIO_HANDLER_COMPLETION((o));
-
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-    if (owner)
-    {
-      // Check whether buffers are still valid.
-      buffer_sequence_adapter<asio::const_buffer,
-          ConstBufferSequence>::validate(o->buffers_);
-    }
-#endif // defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-
-    // Make a copy of the handler so that the memory can be deallocated before
-    // the upcall is made. Even if we're not about to make an upcall, a
-    // sub-object of the handler may be the true owner of the memory associated
-    // with the handler. Consequently, a local copy of the handler is required
-    // to ensure that any owning sub-object remains valid until after we have
-    // deallocated the memory here.
-    detail::binder2<Handler, asio::error_code, std::size_t>
-      handler(o->handler_, ec, bytes_transferred);
-    p.h = asio::detail::addressof(handler.handler_);
-    p.reset();
-
-    // Make the upcall if required.
-    if (owner)
-    {
-      fenced_block b(fenced_block::half);
-      ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
-      asio_handler_invoke_helpers::invoke(handler, handler.handler_);
-      ASIO_HANDLER_INVOCATION_END;
-    }
-  }
-
-private:
-  ConstBufferSequence buffers_;
-  Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_WIN_IOCP_HANDLE_WRITE_OP_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_io_service.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_io_service.hpp
deleted file mode 100644
index 9dfce08..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_io_service.hpp
+++ /dev/null
@@ -1,315 +0,0 @@
-//
-// detail/win_iocp_io_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WIN_IOCP_IO_SERVICE_HPP
-#define ASIO_DETAIL_WIN_IOCP_IO_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_IOCP)
-
-#include "asio/io_service.hpp"
-#include "asio/detail/call_stack.hpp"
-#include "asio/detail/limits.hpp"
-#include "asio/detail/mutex.hpp"
-#include "asio/detail/op_queue.hpp"
-#include "asio/detail/scoped_ptr.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/thread.hpp"
-#include "asio/detail/timer_queue_base.hpp"
-#include "asio/detail/timer_queue_set.hpp"
-#include "asio/detail/wait_op.hpp"
-#include "asio/detail/win_iocp_operation.hpp"
-#include "asio/detail/win_iocp_thread_info.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class wait_op;
-
-class win_iocp_io_service
-  : public asio::detail::service_base<win_iocp_io_service>
-{
-public:
-
-  // Constructor. Specifies a concurrency hint that is passed through to the
-  // underlying I/O completion port.
-  ASIO_DECL win_iocp_io_service(asio::io_service& io_service,
-      size_t concurrency_hint = 0);
-
-  // Destroy all user-defined handler objects owned by the service.
-  ASIO_DECL void shutdown_service();
-
-  // Initialise the task. Nothing to do here.
-  void init_task()
-  {
-  }
-
-  // Register a handle with the IO completion port.
-  ASIO_DECL asio::error_code register_handle(
-      HANDLE handle, asio::error_code& ec);
-
-  // Run the event loop until stopped or no more work.
-  ASIO_DECL size_t run(asio::error_code& ec);
-
-  // Run until stopped or one operation is performed.
-  ASIO_DECL size_t run_one(asio::error_code& ec);
-
-  // Poll for operations without blocking.
-  ASIO_DECL size_t poll(asio::error_code& ec);
-
-  // Poll for one operation without blocking.
-  ASIO_DECL size_t poll_one(asio::error_code& ec);
-
-  // Stop the event processing loop.
-  ASIO_DECL void stop();
-
-  // Determine whether the io_service is stopped.
-  bool stopped() const
-  {
-    return ::InterlockedExchangeAdd(&stopped_, 0) != 0;
-  }
-
-  // Reset in preparation for a subsequent run invocation.
-  void reset()
-  {
-    ::InterlockedExchange(&stopped_, 0);
-  }
-
-  // Notify that some work has started.
-  void work_started()
-  {
-    ::InterlockedIncrement(&outstanding_work_);
-  }
-
-  // Notify that some work has finished.
-  void work_finished()
-  {
-    if (::InterlockedDecrement(&outstanding_work_) == 0)
-      stop();
-  }
-
-  // Return whether a handler can be dispatched immediately.
-  bool can_dispatch()
-  {
-    return thread_call_stack::contains(this) != 0;
-  }
-
-  // Request invocation of the given handler.
-  template <typename Handler>
-  void dispatch(Handler& handler);
-
-  // Request invocation of the given handler and return immediately.
-  template <typename Handler>
-  void post(Handler& handler);
-
-  // Request invocation of the given operation and return immediately. Assumes
-  // that work_started() has not yet been called for the operation.
-  void post_immediate_completion(win_iocp_operation* op, bool)
-  {
-    work_started();
-    post_deferred_completion(op);
-  }
-
-  // Request invocation of the given operation and return immediately. Assumes
-  // that work_started() was previously called for the operation.
-  ASIO_DECL void post_deferred_completion(win_iocp_operation* op);
-
-  // Request invocation of the given operation and return immediately. Assumes
-  // that work_started() was previously called for the operations.
-  ASIO_DECL void post_deferred_completions(
-      op_queue<win_iocp_operation>& ops);
-
-  // Request invocation of the given operation using the thread-private queue
-  // and return immediately. Assumes that work_started() has not yet been
-  // called for the operation.
-  void post_private_immediate_completion(win_iocp_operation* op)
-  {
-    post_immediate_completion(op, false);
-  }
-
-  // Request invocation of the given operation using the thread-private queue
-  // and return immediately. Assumes that work_started() was previously called
-  // for the operation.
-  void post_private_deferred_completion(win_iocp_operation* op)
-  {
-    post_deferred_completion(op);
-  }
-
-  // Process unfinished operations as part of a shutdown_service operation.
-  // Assumes that work_started() was previously called for the operations.
-  ASIO_DECL void abandon_operations(op_queue<operation>& ops);
-
-  // Called after starting an overlapped I/O operation that did not complete
-  // immediately. The caller must have already called work_started() prior to
-  // starting the operation.
-  ASIO_DECL void on_pending(win_iocp_operation* op);
-
-  // Called after starting an overlapped I/O operation that completed
-  // immediately. The caller must have already called work_started() prior to
-  // starting the operation.
-  ASIO_DECL void on_completion(win_iocp_operation* op,
-      DWORD last_error = 0, DWORD bytes_transferred = 0);
-
-  // Called after starting an overlapped I/O operation that completed
-  // immediately. The caller must have already called work_started() prior to
-  // starting the operation.
-  ASIO_DECL void on_completion(win_iocp_operation* op,
-      const asio::error_code& ec, DWORD bytes_transferred = 0);
-
-  // Add a new timer queue to the service.
-  template <typename Time_Traits>
-  void add_timer_queue(timer_queue<Time_Traits>& timer_queue);
-
-  // Remove a timer queue from the service.
-  template <typename Time_Traits>
-  void remove_timer_queue(timer_queue<Time_Traits>& timer_queue);
-
-  // Schedule a new operation in the given timer queue to expire at the
-  // specified absolute time.
-  template <typename Time_Traits>
-  void schedule_timer(timer_queue<Time_Traits>& queue,
-      const typename Time_Traits::time_type& time,
-      typename timer_queue<Time_Traits>::per_timer_data& timer, wait_op* op);
-
-  // Cancel the timer associated with the given token. Returns the number of
-  // handlers that have been posted or dispatched.
-  template <typename Time_Traits>
-  std::size_t cancel_timer(timer_queue<Time_Traits>& queue,
-      typename timer_queue<Time_Traits>::per_timer_data& timer,
-      std::size_t max_cancelled = (std::numeric_limits<std::size_t>::max)());
-
-private:
-#if defined(WINVER) && (WINVER < 0x0500)
-  typedef DWORD dword_ptr_t;
-  typedef ULONG ulong_ptr_t;
-#else // defined(WINVER) && (WINVER < 0x0500)
-  typedef DWORD_PTR dword_ptr_t;
-  typedef ULONG_PTR ulong_ptr_t;
-#endif // defined(WINVER) && (WINVER < 0x0500)
-
-  // Dequeues at most one operation from the I/O completion port, and then
-  // executes it. Returns the number of operations that were dequeued (i.e.
-  // either 0 or 1).
-  ASIO_DECL size_t do_one(bool block, asio::error_code& ec);
-
-  // Helper to calculate the GetQueuedCompletionStatus timeout.
-  ASIO_DECL static DWORD get_gqcs_timeout();
-
-  // Helper function to add a new timer queue.
-  ASIO_DECL void do_add_timer_queue(timer_queue_base& queue);
-
-  // Helper function to remove a timer queue.
-  ASIO_DECL void do_remove_timer_queue(timer_queue_base& queue);
-
-  // Called to recalculate and update the timeout.
-  ASIO_DECL void update_timeout();
-
-  // Helper class to call work_finished() on block exit.
-  struct work_finished_on_block_exit;
-
-  // Helper class for managing a HANDLE.
-  struct auto_handle
-  {
-    HANDLE handle;
-    auto_handle() : handle(0) {}
-    ~auto_handle() { if (handle) ::CloseHandle(handle); }
-  };
-
-  // The IO completion port used for queueing operations.
-  auto_handle iocp_;
-
-  // The count of unfinished work.
-  long outstanding_work_;
-
-  // Flag to indicate whether the event loop has been stopped.
-  mutable long stopped_;
-
-  // Flag to indicate whether there is an in-flight stop event. Every event
-  // posted using PostQueuedCompletionStatus consumes non-paged pool, so to
-  // avoid exhausting this resouce we limit the number of outstanding events.
-  long stop_event_posted_;
-
-  // Flag to indicate whether the service has been shut down.
-  long shutdown_;
-
-  enum
-  {
-    // Timeout to use with GetQueuedCompletionStatus on older versions of
-    // Windows. Some versions of windows have a "bug" where a call to
-    // GetQueuedCompletionStatus can appear stuck even though there are events
-    // waiting on the queue. Using a timeout helps to work around the issue.
-    default_gqcs_timeout = 500,
-
-    // Maximum waitable timer timeout, in milliseconds.
-    max_timeout_msec = 5 * 60 * 1000,
-
-    // Maximum waitable timer timeout, in microseconds.
-    max_timeout_usec = max_timeout_msec * 1000,
-
-    // Completion key value used to wake up a thread to dispatch timers or
-    // completed operations.
-    wake_for_dispatch = 1,
-
-    // Completion key value to indicate that an operation has posted with the
-    // original last_error and bytes_transferred values stored in the fields of
-    // the OVERLAPPED structure.
-    overlapped_contains_result = 2
-  };
-
-  // Timeout to use with GetQueuedCompletionStatus.
-  const DWORD gqcs_timeout_;
-
-  // Function object for processing timeouts in a background thread.
-  struct timer_thread_function;
-  friend struct timer_thread_function;
-
-  // Background thread used for processing timeouts.
-  scoped_ptr<thread> timer_thread_;
-
-  // A waitable timer object used for waiting for timeouts.
-  auto_handle waitable_timer_;
-
-  // Non-zero if timers or completed operations need to be dispatched.
-  long dispatch_required_;
-
-  // Mutex for protecting access to the timer queues and completed operations.
-  mutex dispatch_mutex_;
-
-  // The timer queues.
-  timer_queue_set timer_queues_;
-
-  // The operations that are ready to dispatch.
-  op_queue<win_iocp_operation> completed_ops_;
-
-  // Per-thread call stack to track the state of each thread in the io_service.
-  typedef call_stack<win_iocp_io_service,
-      win_iocp_thread_info> thread_call_stack;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/detail/impl/win_iocp_io_service.hpp"
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/win_iocp_io_service.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_WIN_IOCP_IO_SERVICE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_null_buffers_op.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_null_buffers_op.hpp
deleted file mode 100644
index c7f1c41..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_null_buffers_op.hpp
+++ /dev/null
@@ -1,119 +0,0 @@
-//
-// detail/win_iocp_null_buffers_op.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WIN_IOCP_NULL_BUFFERS_OP_HPP
-#define ASIO_DETAIL_WIN_IOCP_NULL_BUFFERS_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_IOCP)
-
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/reactor_op.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Handler>
-class win_iocp_null_buffers_op : public reactor_op
-{
-public:
-  ASIO_DEFINE_HANDLER_PTR(win_iocp_null_buffers_op);
-
-  win_iocp_null_buffers_op(socket_ops::weak_cancel_token_type cancel_token,
-      Handler& handler)
-    : reactor_op(&win_iocp_null_buffers_op::do_perform,
-        &win_iocp_null_buffers_op::do_complete),
-      cancel_token_(cancel_token),
-      handler_(ASIO_MOVE_CAST(Handler)(handler))
-  {
-  }
-
-  static bool do_perform(reactor_op*)
-  {
-    return true;
-  }
-
-  static void do_complete(io_service_impl* owner, operation* base,
-      const asio::error_code& result_ec,
-      std::size_t bytes_transferred)
-  {
-    asio::error_code ec(result_ec);
-
-    // Take ownership of the operation object.
-    win_iocp_null_buffers_op* o(static_cast<win_iocp_null_buffers_op*>(base));
-    ptr p = { asio::detail::addressof(o->handler_), o, o };
-
-    ASIO_HANDLER_COMPLETION((o));
-
-    // The reactor may have stored a result in the operation object.
-    if (o->ec_)
-      ec = o->ec_;
-
-    // Map non-portable errors to their portable counterparts.
-    if (ec.value() == ERROR_NETNAME_DELETED)
-    {
-      if (o->cancel_token_.expired())
-        ec = asio::error::operation_aborted;
-      else
-        ec = asio::error::connection_reset;
-    }
-    else if (ec.value() == ERROR_PORT_UNREACHABLE)
-    {
-      ec = asio::error::connection_refused;
-    }
-
-    // Make a copy of the handler so that the memory can be deallocated before
-    // the upcall is made. Even if we're not about to make an upcall, a
-    // sub-object of the handler may be the true owner of the memory associated
-    // with the handler. Consequently, a local copy of the handler is required
-    // to ensure that any owning sub-object remains valid until after we have
-    // deallocated the memory here.
-    detail::binder2<Handler, asio::error_code, std::size_t>
-      handler(o->handler_, ec, bytes_transferred);
-    p.h = asio::detail::addressof(handler.handler_);
-    p.reset();
-
-    // Make the upcall if required.
-    if (owner)
-    {
-      fenced_block b(fenced_block::half);
-      ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
-      asio_handler_invoke_helpers::invoke(handler, handler.handler_);
-      ASIO_HANDLER_INVOCATION_END;
-    }
-  }
-
-private:
-  socket_ops::weak_cancel_token_type cancel_token_;
-  Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_WIN_IOCP_NULL_BUFFERS_OP_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_operation.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_operation.hpp
deleted file mode 100644
index d30b1ba..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_operation.hpp
+++ /dev/null
@@ -1,95 +0,0 @@
-//
-// detail/win_iocp_operation.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WIN_IOCP_OPERATION_HPP
-#define ASIO_DETAIL_WIN_IOCP_OPERATION_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_IOCP)
-
-#include "asio/detail/handler_tracking.hpp"
-#include "asio/detail/op_queue.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/error_code.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class win_iocp_io_service;
-
-// Base class for all operations. A function pointer is used instead of virtual
-// functions to avoid the associated overhead.
-class win_iocp_operation
-  : public OVERLAPPED
-    ASIO_ALSO_INHERIT_TRACKED_HANDLER
-{
-public:
-  void complete(win_iocp_io_service& owner,
-      const asio::error_code& ec,
-      std::size_t bytes_transferred)
-  {
-    func_(&owner, this, ec, bytes_transferred);
-  }
-
-  void destroy()
-  {
-    func_(0, this, asio::error_code(), 0);
-  }
-
-protected:
-  typedef void (*func_type)(
-      win_iocp_io_service*, win_iocp_operation*,
-      const asio::error_code&, std::size_t);
-
-  win_iocp_operation(func_type func)
-    : next_(0),
-      func_(func)
-  {
-    reset();
-  }
-
-  // Prevents deletion through this type.
-  ~win_iocp_operation()
-  {
-  }
-
-  void reset()
-  {
-    Internal = 0;
-    InternalHigh = 0;
-    Offset = 0;
-    OffsetHigh = 0;
-    hEvent = 0;
-    ready_ = 0;
-  }
-
-private:
-  friend class op_queue_access;
-  friend class win_iocp_io_service;
-  win_iocp_operation* next_;
-  func_type func_;
-  long ready_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_WIN_IOCP_OPERATION_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_overlapped_op.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_overlapped_op.hpp
deleted file mode 100644
index 10252d1..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_overlapped_op.hpp
+++ /dev/null
@@ -1,88 +0,0 @@
-//
-// detail/win_iocp_overlapped_op.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WIN_IOCP_OVERLAPPED_OP_HPP
-#define ASIO_DETAIL_WIN_IOCP_OVERLAPPED_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_IOCP)
-
-#include "asio/error.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/operation.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Handler>
-class win_iocp_overlapped_op : public operation
-{
-public:
-  ASIO_DEFINE_HANDLER_PTR(win_iocp_overlapped_op);
-
-  win_iocp_overlapped_op(Handler& handler)
-    : operation(&win_iocp_overlapped_op::do_complete),
-      handler_(ASIO_MOVE_CAST(Handler)(handler))
-  {
-  }
-
-  static void do_complete(io_service_impl* owner, operation* base,
-      const asio::error_code& ec, std::size_t bytes_transferred)
-  {
-    // Take ownership of the operation object.
-    win_iocp_overlapped_op* o(static_cast<win_iocp_overlapped_op*>(base));
-    ptr p = { asio::detail::addressof(o->handler_), o, o };
-
-    ASIO_HANDLER_COMPLETION((o));
-
-    // Make a copy of the handler so that the memory can be deallocated before
-    // the upcall is made. Even if we're not about to make an upcall, a
-    // sub-object of the handler may be the true owner of the memory associated
-    // with the handler. Consequently, a local copy of the handler is required
-    // to ensure that any owning sub-object remains valid until after we have
-    // deallocated the memory here.
-    detail::binder2<Handler, asio::error_code, std::size_t>
-      handler(o->handler_, ec, bytes_transferred);
-    p.h = asio::detail::addressof(handler.handler_);
-    p.reset();
-
-    // Make the upcall if required.
-    if (owner)
-    {
-      fenced_block b(fenced_block::half);
-      ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
-      asio_handler_invoke_helpers::invoke(handler, handler.handler_);
-      ASIO_HANDLER_INVOCATION_END;
-    }
-  }
-
-private:
-  Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_WIN_IOCP_OVERLAPPED_OP_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_overlapped_ptr.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_overlapped_ptr.hpp
deleted file mode 100644
index ae2aee8..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_overlapped_ptr.hpp
+++ /dev/null
@@ -1,144 +0,0 @@
-//
-// detail/win_iocp_overlapped_ptr.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WIN_IOCP_OVERLAPPED_PTR_HPP
-#define ASIO_DETAIL_WIN_IOCP_OVERLAPPED_PTR_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_IOCP)
-
-#include "asio/io_service.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/win_iocp_overlapped_op.hpp"
-#include "asio/detail/win_iocp_io_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-// Wraps a handler to create an OVERLAPPED object for use with overlapped I/O.
-class win_iocp_overlapped_ptr
-  : private noncopyable
-{
-public:
-  // Construct an empty win_iocp_overlapped_ptr.
-  win_iocp_overlapped_ptr()
-    : ptr_(0),
-      iocp_service_(0)
-  {
-  }
-
-  // Construct an win_iocp_overlapped_ptr to contain the specified handler.
-  template <typename Handler>
-  explicit win_iocp_overlapped_ptr(
-      asio::io_service& io_service, ASIO_MOVE_ARG(Handler) handler)
-    : ptr_(0),
-      iocp_service_(0)
-  {
-    this->reset(io_service, ASIO_MOVE_CAST(Handler)(handler));
-  }
-
-  // Destructor automatically frees the OVERLAPPED object unless released.
-  ~win_iocp_overlapped_ptr()
-  {
-    reset();
-  }
-
-  // Reset to empty.
-  void reset()
-  {
-    if (ptr_)
-    {
-      ptr_->destroy();
-      ptr_ = 0;
-      iocp_service_->work_finished();
-      iocp_service_ = 0;
-    }
-  }
-
-  // Reset to contain the specified handler, freeing any current OVERLAPPED
-  // object.
-  template <typename Handler>
-  void reset(asio::io_service& io_service, Handler handler)
-  {
-    typedef win_iocp_overlapped_op<Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(handler);
-
-    ASIO_HANDLER_CREATION((p.p, "io_service",
-          &io_service.impl_, "overlapped"));
-
-    io_service.impl_.work_started();
-    reset();
-    ptr_ = p.p;
-    p.v = p.p = 0;
-    iocp_service_ = &io_service.impl_;
-  }
-
-  // Get the contained OVERLAPPED object.
-  OVERLAPPED* get()
-  {
-    return ptr_;
-  }
-
-  // Get the contained OVERLAPPED object.
-  const OVERLAPPED* get() const
-  {
-    return ptr_;
-  }
-
-  // Release ownership of the OVERLAPPED object.
-  OVERLAPPED* release()
-  {
-    if (ptr_)
-      iocp_service_->on_pending(ptr_);
-
-    OVERLAPPED* tmp = ptr_;
-    ptr_ = 0;
-    iocp_service_ = 0;
-    return tmp;
-  }
-
-  // Post completion notification for overlapped operation. Releases ownership.
-  void complete(const asio::error_code& ec,
-      std::size_t bytes_transferred)
-  {
-    if (ptr_)
-    {
-      iocp_service_->on_completion(ptr_, ec,
-          static_cast<DWORD>(bytes_transferred));
-      ptr_ = 0;
-      iocp_service_ = 0;
-    }
-  }
-
-private:
-  win_iocp_operation* ptr_;
-  win_iocp_io_service* iocp_service_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_WIN_IOCP_OVERLAPPED_PTR_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_serial_port_service.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_serial_port_service.hpp
deleted file mode 100644
index 2bfdcc5..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_serial_port_service.hpp
+++ /dev/null
@@ -1,228 +0,0 @@
-//
-// detail/win_iocp_serial_port_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WIN_IOCP_SERIAL_PORT_SERVICE_HPP
-#define ASIO_DETAIL_WIN_IOCP_SERIAL_PORT_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_IOCP) && defined(ASIO_HAS_SERIAL_PORT)
-
-#include <string>
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/detail/win_iocp_handle_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-// Extend win_iocp_handle_service to provide serial port support.
-class win_iocp_serial_port_service
-{
-public:
-  // The native type of a serial port.
-  typedef win_iocp_handle_service::native_handle_type native_handle_type;
-
-  // The implementation type of the serial port.
-  typedef win_iocp_handle_service::implementation_type implementation_type;
-
-  // Constructor.
-  ASIO_DECL win_iocp_serial_port_service(
-      asio::io_service& io_service);
-
-  // Destroy all user-defined handler objects owned by the service.
-  ASIO_DECL void shutdown_service();
-
-  // Construct a new serial port implementation.
-  void construct(implementation_type& impl)
-  {
-    handle_service_.construct(impl);
-  }
-
-  // Move-construct a new serial port implementation.
-  void move_construct(implementation_type& impl,
-      implementation_type& other_impl)
-  {
-    handle_service_.move_construct(impl, other_impl);
-  }
-
-  // Move-assign from another serial port implementation.
-  void move_assign(implementation_type& impl,
-      win_iocp_serial_port_service& other_service,
-      implementation_type& other_impl)
-  {
-    handle_service_.move_assign(impl,
-        other_service.handle_service_, other_impl);
-  }
-
-  // Destroy a serial port implementation.
-  void destroy(implementation_type& impl)
-  {
-    handle_service_.destroy(impl);
-  }
-
-  // Open the serial port using the specified device name.
-  ASIO_DECL asio::error_code open(implementation_type& impl,
-      const std::string& device, asio::error_code& ec);
-
-  // Assign a native handle to a serial port implementation.
-  asio::error_code assign(implementation_type& impl,
-      const native_handle_type& handle, asio::error_code& ec)
-  {
-    return handle_service_.assign(impl, handle, ec);
-  }
-
-  // Determine whether the serial port is open.
-  bool is_open(const implementation_type& impl) const
-  {
-    return handle_service_.is_open(impl);
-  }
-
-  // Destroy a serial port implementation.
-  asio::error_code close(implementation_type& impl,
-      asio::error_code& ec)
-  {
-    return handle_service_.close(impl, ec);
-  }
-
-  // Get the native serial port representation.
-  native_handle_type native_handle(implementation_type& impl)
-  {
-    return handle_service_.native_handle(impl);
-  }
-
-  // Cancel all operations associated with the handle.
-  asio::error_code cancel(implementation_type& impl,
-      asio::error_code& ec)
-  {
-    return handle_service_.cancel(impl, ec);
-  }
-
-  // Set an option on the serial port.
-  template <typename SettableSerialPortOption>
-  asio::error_code set_option(implementation_type& impl,
-      const SettableSerialPortOption& option, asio::error_code& ec)
-  {
-    return do_set_option(impl,
-        &win_iocp_serial_port_service::store_option<SettableSerialPortOption>,
-        &option, ec);
-  }
-
-  // Get an option from the serial port.
-  template <typename GettableSerialPortOption>
-  asio::error_code get_option(const implementation_type& impl,
-      GettableSerialPortOption& option, asio::error_code& ec) const
-  {
-    return do_get_option(impl,
-        &win_iocp_serial_port_service::load_option<GettableSerialPortOption>,
-        &option, ec);
-  }
-
-  // Send a break sequence to the serial port.
-  asio::error_code send_break(implementation_type&,
-      asio::error_code& ec)
-  {
-    ec = asio::error::operation_not_supported;
-    return ec;
-  }
-
-  // Write the given data. Returns the number of bytes sent.
-  template <typename ConstBufferSequence>
-  size_t write_some(implementation_type& impl,
-      const ConstBufferSequence& buffers, asio::error_code& ec)
-  {
-    return handle_service_.write_some(impl, buffers, ec);
-  }
-
-  // Start an asynchronous write. The data being written must be valid for the
-  // lifetime of the asynchronous operation.
-  template <typename ConstBufferSequence, typename Handler>
-  void async_write_some(implementation_type& impl,
-      const ConstBufferSequence& buffers, Handler& handler)
-  {
-    handle_service_.async_write_some(impl, buffers, handler);
-  }
-
-  // Read some data. Returns the number of bytes received.
-  template <typename MutableBufferSequence>
-  size_t read_some(implementation_type& impl,
-      const MutableBufferSequence& buffers, asio::error_code& ec)
-  {
-    return handle_service_.read_some(impl, buffers, ec);
-  }
-
-  // Start an asynchronous read. The buffer for the data being received must be
-  // valid for the lifetime of the asynchronous operation.
-  template <typename MutableBufferSequence, typename Handler>
-  void async_read_some(implementation_type& impl,
-      const MutableBufferSequence& buffers, Handler& handler)
-  {
-    handle_service_.async_read_some(impl, buffers, handler);
-  }
-
-private:
-  // Function pointer type for storing a serial port option.
-  typedef asio::error_code (*store_function_type)(
-      const void*, ::DCB&, asio::error_code&);
-
-  // Helper function template to store a serial port option.
-  template <typename SettableSerialPortOption>
-  static asio::error_code store_option(const void* option,
-      ::DCB& storage, asio::error_code& ec)
-  {
-    return static_cast<const SettableSerialPortOption*>(option)->store(
-        storage, ec);
-  }
-
-  // Helper function to set a serial port option.
-  ASIO_DECL asio::error_code do_set_option(
-      implementation_type& impl, store_function_type store,
-      const void* option, asio::error_code& ec);
-
-  // Function pointer type for loading a serial port option.
-  typedef asio::error_code (*load_function_type)(
-      void*, const ::DCB&, asio::error_code&);
-
-  // Helper function template to load a serial port option.
-  template <typename GettableSerialPortOption>
-  static asio::error_code load_option(void* option,
-      const ::DCB& storage, asio::error_code& ec)
-  {
-    return static_cast<GettableSerialPortOption*>(option)->load(storage, ec);
-  }
-
-  // Helper function to get a serial port option.
-  ASIO_DECL asio::error_code do_get_option(
-      const implementation_type& impl, load_function_type load,
-      void* option, asio::error_code& ec) const;
-
-  // The implementation used for initiating asynchronous operations.
-  win_iocp_handle_service handle_service_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/win_iocp_serial_port_service.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_HAS_IOCP) && defined(ASIO_HAS_SERIAL_PORT)
-
-#endif // ASIO_DETAIL_WIN_IOCP_SERIAL_PORT_SERVICE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_socket_accept_op.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_socket_accept_op.hpp
deleted file mode 100644
index a10d04d..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_socket_accept_op.hpp
+++ /dev/null
@@ -1,165 +0,0 @@
-//
-// detail/win_iocp_socket_accept_op.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WIN_IOCP_SOCKET_ACCEPT_OP_HPP
-#define ASIO_DETAIL_WIN_IOCP_SOCKET_ACCEPT_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_IOCP)
-
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/operation.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/detail/win_iocp_socket_service_base.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Socket, typename Protocol, typename Handler>
-class win_iocp_socket_accept_op : public operation
-{
-public:
-  ASIO_DEFINE_HANDLER_PTR(win_iocp_socket_accept_op);
-
-  win_iocp_socket_accept_op(win_iocp_socket_service_base& socket_service,
-      socket_type socket, Socket& peer, const Protocol& protocol,
-      typename Protocol::endpoint* peer_endpoint,
-      bool enable_connection_aborted, Handler& handler)
-    : operation(&win_iocp_socket_accept_op::do_complete),
-      socket_service_(socket_service),
-      socket_(socket),
-      peer_(peer),
-      protocol_(protocol),
-      peer_endpoint_(peer_endpoint),
-      enable_connection_aborted_(enable_connection_aborted),
-      handler_(ASIO_MOVE_CAST(Handler)(handler))
-  {
-  }
-
-  socket_holder& new_socket()
-  {
-    return new_socket_;
-  }
-
-  void* output_buffer()
-  {
-    return output_buffer_;
-  }
-
-  DWORD address_length()
-  {
-    return sizeof(sockaddr_storage_type) + 16;
-  }
-
-  static void do_complete(io_service_impl* owner, operation* base,
-      const asio::error_code& result_ec,
-      std::size_t /*bytes_transferred*/)
-  {
-    asio::error_code ec(result_ec);
-
-    // Take ownership of the operation object.
-    win_iocp_socket_accept_op* o(static_cast<win_iocp_socket_accept_op*>(base));
-    ptr p = { asio::detail::addressof(o->handler_), o, o };
-
-    if (owner)
-    {
-      typename Protocol::endpoint peer_endpoint;
-      std::size_t addr_len = peer_endpoint.capacity();
-      socket_ops::complete_iocp_accept(o->socket_,
-          o->output_buffer(), o->address_length(),
-          peer_endpoint.data(), &addr_len,
-          o->new_socket_.get(), ec);
-
-      // Restart the accept operation if we got the connection_aborted error
-      // and the enable_connection_aborted socket option is not set.
-      if (ec == asio::error::connection_aborted
-          && !o->enable_connection_aborted_)
-      {
-        o->reset();
-        o->socket_service_.restart_accept_op(o->socket_,
-            o->new_socket_, o->protocol_.family(),
-            o->protocol_.type(), o->protocol_.protocol(),
-            o->output_buffer(), o->address_length(), o);
-        p.v = p.p = 0;
-        return;
-      }
-
-      // If the socket was successfully accepted, transfer ownership of the
-      // socket to the peer object.
-      if (!ec)
-      {
-        o->peer_.assign(o->protocol_,
-            typename Socket::native_handle_type(
-              o->new_socket_.get(), peer_endpoint), ec);
-        if (!ec)
-          o->new_socket_.release();
-      }
-
-      // Pass endpoint back to caller.
-      if (o->peer_endpoint_)
-        *o->peer_endpoint_ = peer_endpoint;
-    }
-
-    ASIO_HANDLER_COMPLETION((o));
-
-    // Make a copy of the handler so that the memory can be deallocated before
-    // the upcall is made. Even if we're not about to make an upcall, a
-    // sub-object of the handler may be the true owner of the memory associated
-    // with the handler. Consequently, a local copy of the handler is required
-    // to ensure that any owning sub-object remains valid until after we have
-    // deallocated the memory here.
-    detail::binder1<Handler, asio::error_code>
-      handler(o->handler_, ec);
-    p.h = asio::detail::addressof(handler.handler_);
-    p.reset();
-
-    // Make the upcall if required.
-    if (owner)
-    {
-      fenced_block b(fenced_block::half);
-      ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_));
-      asio_handler_invoke_helpers::invoke(handler, handler.handler_);
-      ASIO_HANDLER_INVOCATION_END;
-    }
-  }
-
-private:
-  win_iocp_socket_service_base& socket_service_;
-  socket_type socket_;
-  socket_holder new_socket_;
-  Socket& peer_;
-  Protocol protocol_;
-  typename Protocol::endpoint* peer_endpoint_;
-  unsigned char output_buffer_[(sizeof(sockaddr_storage_type) + 16) * 2];
-  bool enable_connection_aborted_;
-  Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_WIN_IOCP_SOCKET_ACCEPT_OP_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_socket_connect_op.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_socket_connect_op.hpp
deleted file mode 100644
index 9c61747..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_socket_connect_op.hpp
+++ /dev/null
@@ -1,124 +0,0 @@
-//
-// detail/win_iocp_socket_connect_op.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WIN_IOCP_SOCKET_CONNECT_OP_HPP
-#define ASIO_DETAIL_WIN_IOCP_SOCKET_CONNECT_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_IOCP)
-
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/reactor_op.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class win_iocp_socket_connect_op_base : public reactor_op
-{
-public:
-  win_iocp_socket_connect_op_base(socket_type socket, func_type complete_func)
-    : reactor_op(&win_iocp_socket_connect_op_base::do_perform, complete_func),
-      socket_(socket),
-      connect_ex_(false)
-  {
-  }
-
-  static bool do_perform(reactor_op* base)
-  {
-    win_iocp_socket_connect_op_base* o(
-        static_cast<win_iocp_socket_connect_op_base*>(base));
-
-    return socket_ops::non_blocking_connect(o->socket_, o->ec_);
-  }
-
-  socket_type socket_;
-  bool connect_ex_;
-};
-
-template <typename Handler>
-class win_iocp_socket_connect_op : public win_iocp_socket_connect_op_base
-{
-public:
-  ASIO_DEFINE_HANDLER_PTR(win_iocp_socket_connect_op);
-
-  win_iocp_socket_connect_op(socket_type socket, Handler& handler)
-    : win_iocp_socket_connect_op_base(socket,
-        &win_iocp_socket_connect_op::do_complete),
-      handler_(ASIO_MOVE_CAST(Handler)(handler))
-  {
-  }
-
-  static void do_complete(io_service_impl* owner, operation* base,
-      const asio::error_code& result_ec,
-      std::size_t /*bytes_transferred*/)
-  {
-    asio::error_code ec(result_ec);
-
-    // Take ownership of the operation object.
-    win_iocp_socket_connect_op* o(
-        static_cast<win_iocp_socket_connect_op*>(base));
-    ptr p = { asio::detail::addressof(o->handler_), o, o };
-
-    if (owner)
-    {
-      if (o->connect_ex_)
-        socket_ops::complete_iocp_connect(o->socket_, ec);
-      else
-        ec = o->ec_;
-    }
-
-    ASIO_HANDLER_COMPLETION((o));
-
-    // Make a copy of the handler so that the memory can be deallocated before
-    // the upcall is made. Even if we're not about to make an upcall, a
-    // sub-object of the handler may be the true owner of the memory associated
-    // with the handler. Consequently, a local copy of the handler is required
-    // to ensure that any owning sub-object remains valid until after we have
-    // deallocated the memory here.
-    detail::binder1<Handler, asio::error_code>
-      handler(o->handler_, ec);
-    p.h = asio::detail::addressof(handler.handler_);
-    p.reset();
-
-    // Make the upcall if required.
-    if (owner)
-    {
-      fenced_block b(fenced_block::half);
-      ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_));
-      asio_handler_invoke_helpers::invoke(handler, handler.handler_);
-      ASIO_HANDLER_INVOCATION_END;
-    }
-  }
-
-private:
-  Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_WIN_IOCP_SOCKET_CONNECT_OP_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_socket_recv_op.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_socket_recv_op.hpp
deleted file mode 100644
index 86667f0..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_socket_recv_op.hpp
+++ /dev/null
@@ -1,115 +0,0 @@
-//
-// detail/win_iocp_socket_recv_op.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WIN_IOCP_SOCKET_RECV_OP_HPP
-#define ASIO_DETAIL_WIN_IOCP_SOCKET_RECV_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_IOCP)
-
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/operation.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename MutableBufferSequence, typename Handler>
-class win_iocp_socket_recv_op : public operation
-{
-public:
-  ASIO_DEFINE_HANDLER_PTR(win_iocp_socket_recv_op);
-
-  win_iocp_socket_recv_op(socket_ops::state_type state,
-      socket_ops::weak_cancel_token_type cancel_token,
-      const MutableBufferSequence& buffers, Handler& handler)
-    : operation(&win_iocp_socket_recv_op::do_complete),
-      state_(state),
-      cancel_token_(cancel_token),
-      buffers_(buffers),
-      handler_(ASIO_MOVE_CAST(Handler)(handler))
-  {
-  }
-
-  static void do_complete(io_service_impl* owner, operation* base,
-      const asio::error_code& result_ec,
-      std::size_t bytes_transferred)
-  {
-    asio::error_code ec(result_ec);
-
-    // Take ownership of the operation object.
-    win_iocp_socket_recv_op* o(static_cast<win_iocp_socket_recv_op*>(base));
-    ptr p = { asio::detail::addressof(o->handler_), o, o };
-
-    ASIO_HANDLER_COMPLETION((o));
-
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-    // Check whether buffers are still valid.
-    if (owner)
-    {
-      buffer_sequence_adapter<asio::mutable_buffer,
-          MutableBufferSequence>::validate(o->buffers_);
-    }
-#endif // defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-
-    socket_ops::complete_iocp_recv(o->state_, o->cancel_token_,
-        buffer_sequence_adapter<asio::mutable_buffer,
-          MutableBufferSequence>::all_empty(o->buffers_),
-        ec, bytes_transferred);
-
-    // Make a copy of the handler so that the memory can be deallocated before
-    // the upcall is made. Even if we're not about to make an upcall, a
-    // sub-object of the handler may be the true owner of the memory associated
-    // with the handler. Consequently, a local copy of the handler is required
-    // to ensure that any owning sub-object remains valid until after we have
-    // deallocated the memory here.
-    detail::binder2<Handler, asio::error_code, std::size_t>
-      handler(o->handler_, ec, bytes_transferred);
-    p.h = asio::detail::addressof(handler.handler_);
-    p.reset();
-
-    // Make the upcall if required.
-    if (owner)
-    {
-      fenced_block b(fenced_block::half);
-      ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
-      asio_handler_invoke_helpers::invoke(handler, handler.handler_);
-      ASIO_HANDLER_INVOCATION_END;
-    }
-  }
-
-private:
-  socket_ops::state_type state_;
-  socket_ops::weak_cancel_token_type cancel_token_;
-  MutableBufferSequence buffers_;
-  Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_WIN_IOCP_SOCKET_RECV_OP_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_socket_recvfrom_op.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_socket_recvfrom_op.hpp
deleted file mode 100644
index e522d7e..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_socket_recvfrom_op.hpp
+++ /dev/null
@@ -1,123 +0,0 @@
-//
-// detail/win_iocp_socket_recvfrom_op.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WIN_IOCP_SOCKET_RECVFROM_OP_HPP
-#define ASIO_DETAIL_WIN_IOCP_SOCKET_RECVFROM_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_IOCP)
-
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/operation.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename MutableBufferSequence, typename Endpoint, typename Handler>
-class win_iocp_socket_recvfrom_op : public operation
-{
-public:
-  ASIO_DEFINE_HANDLER_PTR(win_iocp_socket_recvfrom_op);
-
-  win_iocp_socket_recvfrom_op(Endpoint& endpoint,
-      socket_ops::weak_cancel_token_type cancel_token,
-      const MutableBufferSequence& buffers, Handler& handler)
-    : operation(&win_iocp_socket_recvfrom_op::do_complete),
-      endpoint_(endpoint),
-      endpoint_size_(static_cast<int>(endpoint.capacity())),
-      cancel_token_(cancel_token),
-      buffers_(buffers),
-      handler_(ASIO_MOVE_CAST(Handler)(handler))
-  {
-  }
-
-  int& endpoint_size()
-  {
-    return endpoint_size_;
-  }
-
-  static void do_complete(io_service_impl* owner, operation* base,
-      const asio::error_code& result_ec,
-      std::size_t bytes_transferred)
-  {
-    asio::error_code ec(result_ec);
-
-    // Take ownership of the operation object.
-    win_iocp_socket_recvfrom_op* o(
-        static_cast<win_iocp_socket_recvfrom_op*>(base));
-    ptr p = { asio::detail::addressof(o->handler_), o, o };
-
-    ASIO_HANDLER_COMPLETION((o));
-
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-    // Check whether buffers are still valid.
-    if (owner)
-    {
-      buffer_sequence_adapter<asio::mutable_buffer,
-          MutableBufferSequence>::validate(o->buffers_);
-    }
-#endif // defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-
-    socket_ops::complete_iocp_recvfrom(o->cancel_token_, ec);
-
-    // Record the size of the endpoint returned by the operation.
-    o->endpoint_.resize(o->endpoint_size_);
-
-    // Make a copy of the handler so that the memory can be deallocated before
-    // the upcall is made. Even if we're not about to make an upcall, a
-    // sub-object of the handler may be the true owner of the memory associated
-    // with the handler. Consequently, a local copy of the handler is required
-    // to ensure that any owning sub-object remains valid until after we have
-    // deallocated the memory here.
-    detail::binder2<Handler, asio::error_code, std::size_t>
-      handler(o->handler_, ec, bytes_transferred);
-    p.h = asio::detail::addressof(handler.handler_);
-    p.reset();
-
-    // Make the upcall if required.
-    if (owner)
-    {
-      fenced_block b(fenced_block::half);
-      ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
-      asio_handler_invoke_helpers::invoke(handler, handler.handler_);
-      ASIO_HANDLER_INVOCATION_END;
-    }
-  }
-
-private:
-  Endpoint& endpoint_;
-  int endpoint_size_;
-  socket_ops::weak_cancel_token_type cancel_token_;
-  MutableBufferSequence buffers_;
-  Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_WIN_IOCP_SOCKET_RECVFROM_OP_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_socket_recvmsg_op.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_socket_recvmsg_op.hpp
deleted file mode 100644
index b78741b..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_socket_recvmsg_op.hpp
+++ /dev/null
@@ -1,116 +0,0 @@
-//
-// detail/win_iocp_socket_recvmsg_op.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WIN_IOCP_SOCKET_RECVMSG_OP_HPP
-#define ASIO_DETAIL_WIN_IOCP_SOCKET_RECVMSG_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_IOCP)
-
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/operation.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/error.hpp"
-#include "asio/socket_base.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename MutableBufferSequence, typename Handler>
-class win_iocp_socket_recvmsg_op : public operation
-{
-public:
-  ASIO_DEFINE_HANDLER_PTR(win_iocp_socket_recvmsg_op);
-
-  win_iocp_socket_recvmsg_op(
-      socket_ops::weak_cancel_token_type cancel_token,
-      const MutableBufferSequence& buffers,
-      socket_base::message_flags& out_flags, Handler& handler)
-    : operation(&win_iocp_socket_recvmsg_op::do_complete),
-      cancel_token_(cancel_token),
-      buffers_(buffers),
-      out_flags_(out_flags),
-      handler_(ASIO_MOVE_CAST(Handler)(handler))
-  {
-  }
-
-  static void do_complete(io_service_impl* owner, operation* base,
-      const asio::error_code& result_ec,
-      std::size_t bytes_transferred)
-  {
-    asio::error_code ec(result_ec);
-
-    // Take ownership of the operation object.
-    win_iocp_socket_recvmsg_op* o(
-        static_cast<win_iocp_socket_recvmsg_op*>(base));
-    ptr p = { asio::detail::addressof(o->handler_), o, o };
-
-    ASIO_HANDLER_COMPLETION((o));
-
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-    // Check whether buffers are still valid.
-    if (owner)
-    {
-      buffer_sequence_adapter<asio::mutable_buffer,
-          MutableBufferSequence>::validate(o->buffers_);
-    }
-#endif // defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-
-    socket_ops::complete_iocp_recvmsg(o->cancel_token_, ec);
-    o->out_flags_ = 0;
-
-    // Make a copy of the handler so that the memory can be deallocated before
-    // the upcall is made. Even if we're not about to make an upcall, a
-    // sub-object of the handler may be the true owner of the memory associated
-    // with the handler. Consequently, a local copy of the handler is required
-    // to ensure that any owning sub-object remains valid until after we have
-    // deallocated the memory here.
-    detail::binder2<Handler, asio::error_code, std::size_t>
-      handler(o->handler_, ec, bytes_transferred);
-    p.h = asio::detail::addressof(handler.handler_);
-    p.reset();
-
-    // Make the upcall if required.
-    if (owner)
-    {
-      fenced_block b(fenced_block::half);
-      ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
-      asio_handler_invoke_helpers::invoke(handler, handler.handler_);
-      ASIO_HANDLER_INVOCATION_END;
-    }
-  }
-
-private:
-  socket_ops::weak_cancel_token_type cancel_token_;
-  MutableBufferSequence buffers_;
-  socket_base::message_flags& out_flags_;
-  Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_WIN_IOCP_SOCKET_RECVMSG_OP_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_socket_send_op.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_socket_send_op.hpp
deleted file mode 100644
index e40c71c..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_socket_send_op.hpp
+++ /dev/null
@@ -1,109 +0,0 @@
-//
-// detail/win_iocp_socket_send_op.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WIN_IOCP_SOCKET_SEND_OP_HPP
-#define ASIO_DETAIL_WIN_IOCP_SOCKET_SEND_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_IOCP)
-
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/operation.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename ConstBufferSequence, typename Handler>
-class win_iocp_socket_send_op : public operation
-{
-public:
-  ASIO_DEFINE_HANDLER_PTR(win_iocp_socket_send_op);
-
-  win_iocp_socket_send_op(socket_ops::weak_cancel_token_type cancel_token,
-      const ConstBufferSequence& buffers, Handler& handler)
-    : operation(&win_iocp_socket_send_op::do_complete),
-      cancel_token_(cancel_token),
-      buffers_(buffers),
-      handler_(ASIO_MOVE_CAST(Handler)(handler))
-  {
-  }
-
-  static void do_complete(io_service_impl* owner, operation* base,
-      const asio::error_code& result_ec,
-      std::size_t bytes_transferred)
-  {
-    asio::error_code ec(result_ec);
-
-    // Take ownership of the operation object.
-    win_iocp_socket_send_op* o(static_cast<win_iocp_socket_send_op*>(base));
-    ptr p = { asio::detail::addressof(o->handler_), o, o };
-
-    ASIO_HANDLER_COMPLETION((o));
-
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-    // Check whether buffers are still valid.
-    if (owner)
-    {
-      buffer_sequence_adapter<asio::const_buffer,
-          ConstBufferSequence>::validate(o->buffers_);
-    }
-#endif // defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-
-    socket_ops::complete_iocp_send(o->cancel_token_, ec);
-
-    // Make a copy of the handler so that the memory can be deallocated before
-    // the upcall is made. Even if we're not about to make an upcall, a
-    // sub-object of the handler may be the true owner of the memory associated
-    // with the handler. Consequently, a local copy of the handler is required
-    // to ensure that any owning sub-object remains valid until after we have
-    // deallocated the memory here.
-    detail::binder2<Handler, asio::error_code, std::size_t>
-      handler(o->handler_, ec, bytes_transferred);
-    p.h = asio::detail::addressof(handler.handler_);
-    p.reset();
-
-    // Make the upcall if required.
-    if (owner)
-    {
-      fenced_block b(fenced_block::half);
-      ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
-      asio_handler_invoke_helpers::invoke(handler, handler.handler_);
-      ASIO_HANDLER_INVOCATION_END;
-    }
-  }
-
-private:
-  socket_ops::weak_cancel_token_type cancel_token_;
-  ConstBufferSequence buffers_;
-  Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_WIN_IOCP_SOCKET_SEND_OP_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_socket_service.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_socket_service.hpp
deleted file mode 100644
index 7632691..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_socket_service.hpp
+++ /dev/null
@@ -1,525 +0,0 @@
-//
-// detail/win_iocp_socket_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WIN_IOCP_SOCKET_SERVICE_HPP
-#define ASIO_DETAIL_WIN_IOCP_SOCKET_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_IOCP)
-
-#include <cstring>
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/socket_base.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/mutex.hpp"
-#include "asio/detail/operation.hpp"
-#include "asio/detail/reactor.hpp"
-#include "asio/detail/reactor_op.hpp"
-#include "asio/detail/socket_holder.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/win_iocp_io_service.hpp"
-#include "asio/detail/win_iocp_null_buffers_op.hpp"
-#include "asio/detail/win_iocp_socket_accept_op.hpp"
-#include "asio/detail/win_iocp_socket_connect_op.hpp"
-#include "asio/detail/win_iocp_socket_recvfrom_op.hpp"
-#include "asio/detail/win_iocp_socket_send_op.hpp"
-#include "asio/detail/win_iocp_socket_service_base.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Protocol>
-class win_iocp_socket_service : public win_iocp_socket_service_base
-{
-public:
-  // The protocol type.
-  typedef Protocol protocol_type;
-
-  // The endpoint type.
-  typedef typename Protocol::endpoint endpoint_type;
-
-  // The native type of a socket.
-  class native_handle_type
-  {
-  public:
-    native_handle_type(socket_type s)
-      : socket_(s),
-        have_remote_endpoint_(false)
-    {
-    }
-
-    native_handle_type(socket_type s, const endpoint_type& ep)
-      : socket_(s),
-        have_remote_endpoint_(true),
-        remote_endpoint_(ep)
-    {
-    }
-
-    void operator=(socket_type s)
-    {
-      socket_ = s;
-      have_remote_endpoint_ = false;
-      remote_endpoint_ = endpoint_type();
-    }
-
-    operator socket_type() const
-    {
-      return socket_;
-    }
-
-    bool have_remote_endpoint() const
-    {
-      return have_remote_endpoint_;
-    }
-
-    endpoint_type remote_endpoint() const
-    {
-      return remote_endpoint_;
-    }
-
-  private:
-    socket_type socket_;
-    bool have_remote_endpoint_;
-    endpoint_type remote_endpoint_;
-  };
-
-  // The implementation type of the socket.
-  struct implementation_type :
-    win_iocp_socket_service_base::base_implementation_type
-  {
-    // Default constructor.
-    implementation_type()
-      : protocol_(endpoint_type().protocol()),
-        have_remote_endpoint_(false),
-        remote_endpoint_()
-    {
-    }
-
-    // The protocol associated with the socket.
-    protocol_type protocol_;
-
-    // Whether we have a cached remote endpoint.
-    bool have_remote_endpoint_;
-
-    // A cached remote endpoint.
-    endpoint_type remote_endpoint_;
-  };
-
-  // Constructor.
-  win_iocp_socket_service(asio::io_service& io_service)
-    : win_iocp_socket_service_base(io_service)
-  {
-  }
-
-  // Move-construct a new socket implementation.
-  void move_construct(implementation_type& impl,
-      implementation_type& other_impl)
-  {
-    this->base_move_construct(impl, other_impl);
-
-    impl.protocol_ = other_impl.protocol_;
-    other_impl.protocol_ = endpoint_type().protocol();
-
-    impl.have_remote_endpoint_ = other_impl.have_remote_endpoint_;
-    other_impl.have_remote_endpoint_ = false;
-
-    impl.remote_endpoint_ = other_impl.remote_endpoint_;
-    other_impl.remote_endpoint_ = endpoint_type();
-  }
-
-  // Move-assign from another socket implementation.
-  void move_assign(implementation_type& impl,
-      win_iocp_socket_service_base& other_service,
-      implementation_type& other_impl)
-  {
-    this->base_move_assign(impl, other_service, other_impl);
-
-    impl.protocol_ = other_impl.protocol_;
-    other_impl.protocol_ = endpoint_type().protocol();
-
-    impl.have_remote_endpoint_ = other_impl.have_remote_endpoint_;
-    other_impl.have_remote_endpoint_ = false;
-
-    impl.remote_endpoint_ = other_impl.remote_endpoint_;
-    other_impl.remote_endpoint_ = endpoint_type();
-  }
-
-  // Move-construct a new socket implementation from another protocol type.
-  template <typename Protocol1>
-  void converting_move_construct(implementation_type& impl,
-      typename win_iocp_socket_service<
-        Protocol1>::implementation_type& other_impl)
-  {
-    this->base_move_construct(impl, other_impl);
-
-    impl.protocol_ = protocol_type(other_impl.protocol_);
-    other_impl.protocol_ = typename Protocol1::endpoint().protocol();
-
-    impl.have_remote_endpoint_ = other_impl.have_remote_endpoint_;
-    other_impl.have_remote_endpoint_ = false;
-
-    impl.remote_endpoint_ = other_impl.remote_endpoint_;
-    other_impl.remote_endpoint_ = typename Protocol1::endpoint();
-  }
-
-  // Open a new socket implementation.
-  asio::error_code open(implementation_type& impl,
-      const protocol_type& protocol, asio::error_code& ec)
-  {
-    if (!do_open(impl, protocol.family(),
-          protocol.type(), protocol.protocol(), ec))
-    {
-      impl.protocol_ = protocol;
-      impl.have_remote_endpoint_ = false;
-      impl.remote_endpoint_ = endpoint_type();
-    }
-    return ec;
-  }
-
-  // Assign a native socket to a socket implementation.
-  asio::error_code assign(implementation_type& impl,
-      const protocol_type& protocol, const native_handle_type& native_socket,
-      asio::error_code& ec)
-  {
-    if (!do_assign(impl, protocol.type(), native_socket, ec))
-    {
-      impl.protocol_ = protocol;
-      impl.have_remote_endpoint_ = native_socket.have_remote_endpoint();
-      impl.remote_endpoint_ = native_socket.remote_endpoint();
-    }
-    return ec;
-  }
-
-  // Get the native socket representation.
-  native_handle_type native_handle(implementation_type& impl)
-  {
-    if (impl.have_remote_endpoint_)
-      return native_handle_type(impl.socket_, impl.remote_endpoint_);
-    return native_handle_type(impl.socket_);
-  }
-
-  // Bind the socket to the specified local endpoint.
-  asio::error_code bind(implementation_type& impl,
-      const endpoint_type& endpoint, asio::error_code& ec)
-  {
-    socket_ops::bind(impl.socket_, endpoint.data(), endpoint.size(), ec);
-    return ec;
-  }
-
-  // Set a socket option.
-  template <typename Option>
-  asio::error_code set_option(implementation_type& impl,
-      const Option& option, asio::error_code& ec)
-  {
-    socket_ops::setsockopt(impl.socket_, impl.state_,
-        option.level(impl.protocol_), option.name(impl.protocol_),
-        option.data(impl.protocol_), option.size(impl.protocol_), ec);
-    return ec;
-  }
-
-  // Set a socket option.
-  template <typename Option>
-  asio::error_code get_option(const implementation_type& impl,
-      Option& option, asio::error_code& ec) const
-  {
-    std::size_t size = option.size(impl.protocol_);
-    socket_ops::getsockopt(impl.socket_, impl.state_,
-        option.level(impl.protocol_), option.name(impl.protocol_),
-        option.data(impl.protocol_), &size, ec);
-    if (!ec)
-      option.resize(impl.protocol_, size);
-    return ec;
-  }
-
-  // Get the local endpoint.
-  endpoint_type local_endpoint(const implementation_type& impl,
-      asio::error_code& ec) const
-  {
-    endpoint_type endpoint;
-    std::size_t addr_len = endpoint.capacity();
-    if (socket_ops::getsockname(impl.socket_, endpoint.data(), &addr_len, ec))
-      return endpoint_type();
-    endpoint.resize(addr_len);
-    return endpoint;
-  }
-
-  // Get the remote endpoint.
-  endpoint_type remote_endpoint(const implementation_type& impl,
-      asio::error_code& ec) const
-  {
-    endpoint_type endpoint = impl.remote_endpoint_;
-    std::size_t addr_len = endpoint.capacity();
-    if (socket_ops::getpeername(impl.socket_, endpoint.data(),
-          &addr_len, impl.have_remote_endpoint_, ec))
-      return endpoint_type();
-    endpoint.resize(addr_len);
-    return endpoint;
-  }
-
-  // Send a datagram to the specified endpoint. Returns the number of bytes
-  // sent.
-  template <typename ConstBufferSequence>
-  size_t send_to(implementation_type& impl, const ConstBufferSequence& buffers,
-      const endpoint_type& destination, socket_base::message_flags flags,
-      asio::error_code& ec)
-  {
-    buffer_sequence_adapter<asio::const_buffer,
-        ConstBufferSequence> bufs(buffers);
-
-    return socket_ops::sync_sendto(impl.socket_, impl.state_,
-        bufs.buffers(), bufs.count(), flags,
-        destination.data(), destination.size(), ec);
-  }
-
-  // Wait until data can be sent without blocking.
-  size_t send_to(implementation_type& impl, const null_buffers&,
-      const endpoint_type&, socket_base::message_flags,
-      asio::error_code& ec)
-  {
-    // Wait for socket to become ready.
-    socket_ops::poll_write(impl.socket_, impl.state_, ec);
-
-    return 0;
-  }
-
-  // Start an asynchronous send. The data being sent must be valid for the
-  // lifetime of the asynchronous operation.
-  template <typename ConstBufferSequence, typename Handler>
-  void async_send_to(implementation_type& impl,
-      const ConstBufferSequence& buffers, const endpoint_type& destination,
-      socket_base::message_flags flags, Handler& handler)
-  {
-    // Allocate and construct an operation to wrap the handler.
-    typedef win_iocp_socket_send_op<ConstBufferSequence, Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(impl.cancel_token_, buffers, handler);
-
-    ASIO_HANDLER_CREATION((p.p, "socket", &impl, "async_send_to"));
-
-    buffer_sequence_adapter<asio::const_buffer,
-        ConstBufferSequence> bufs(buffers);
-
-    start_send_to_op(impl, bufs.buffers(), bufs.count(),
-        destination.data(), static_cast<int>(destination.size()),
-        flags, p.p);
-    p.v = p.p = 0;
-  }
-
-  // Start an asynchronous wait until data can be sent without blocking.
-  template <typename Handler>
-  void async_send_to(implementation_type& impl, const null_buffers&,
-      const endpoint_type&, socket_base::message_flags, Handler& handler)
-  {
-    // Allocate and construct an operation to wrap the handler.
-    typedef win_iocp_null_buffers_op<Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(impl.cancel_token_, handler);
-
-    ASIO_HANDLER_CREATION((p.p, "socket",
-          &impl, "async_send_to(null_buffers)"));
-
-    start_reactor_op(impl, reactor::write_op, p.p);
-    p.v = p.p = 0;
-  }
-
-  // Receive a datagram with the endpoint of the sender. Returns the number of
-  // bytes received.
-  template <typename MutableBufferSequence>
-  size_t receive_from(implementation_type& impl,
-      const MutableBufferSequence& buffers,
-      endpoint_type& sender_endpoint, socket_base::message_flags flags,
-      asio::error_code& ec)
-  {
-    buffer_sequence_adapter<asio::mutable_buffer,
-        MutableBufferSequence> bufs(buffers);
-
-    std::size_t addr_len = sender_endpoint.capacity();
-    std::size_t bytes_recvd = socket_ops::sync_recvfrom(
-        impl.socket_, impl.state_, bufs.buffers(), bufs.count(),
-        flags, sender_endpoint.data(), &addr_len, ec);
-
-    if (!ec)
-      sender_endpoint.resize(addr_len);
-
-    return bytes_recvd;
-  }
-
-  // Wait until data can be received without blocking.
-  size_t receive_from(implementation_type& impl,
-      const null_buffers&, endpoint_type& sender_endpoint,
-      socket_base::message_flags, asio::error_code& ec)
-  {
-    // Wait for socket to become ready.
-    socket_ops::poll_read(impl.socket_, impl.state_, ec);
-
-    // Reset endpoint since it can be given no sensible value at this time.
-    sender_endpoint = endpoint_type();
-
-    return 0;
-  }
-
-  // Start an asynchronous receive. The buffer for the data being received and
-  // the sender_endpoint object must both be valid for the lifetime of the
-  // asynchronous operation.
-  template <typename MutableBufferSequence, typename Handler>
-  void async_receive_from(implementation_type& impl,
-      const MutableBufferSequence& buffers, endpoint_type& sender_endp,
-      socket_base::message_flags flags, Handler& handler)
-  {
-    // Allocate and construct an operation to wrap the handler.
-    typedef win_iocp_socket_recvfrom_op<
-      MutableBufferSequence, endpoint_type, Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(sender_endp, impl.cancel_token_, buffers, handler);
-
-    ASIO_HANDLER_CREATION((p.p, "socket", &impl, "async_receive_from"));
-
-    buffer_sequence_adapter<asio::mutable_buffer,
-        MutableBufferSequence> bufs(buffers);
-
-    start_receive_from_op(impl, bufs.buffers(), bufs.count(),
-        sender_endp.data(), flags, &p.p->endpoint_size(), p.p);
-    p.v = p.p = 0;
-  }
-
-  // Wait until data can be received without blocking.
-  template <typename Handler>
-  void async_receive_from(implementation_type& impl,
-      const null_buffers&, endpoint_type& sender_endpoint,
-      socket_base::message_flags flags, Handler& handler)
-  {
-    // Allocate and construct an operation to wrap the handler.
-    typedef win_iocp_null_buffers_op<Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(impl.cancel_token_, handler);
-
-    ASIO_HANDLER_CREATION((p.p, "socket", &impl,
-          "async_receive_from(null_buffers)"));
-
-    // Reset endpoint since it can be given no sensible value at this time.
-    sender_endpoint = endpoint_type();
-
-    start_null_buffers_receive_op(impl, flags, p.p);
-    p.v = p.p = 0;
-  }
-
-  // Accept a new connection.
-  template <typename Socket>
-  asio::error_code accept(implementation_type& impl, Socket& peer,
-      endpoint_type* peer_endpoint, asio::error_code& ec)
-  {
-    // We cannot accept a socket that is already open.
-    if (peer.is_open())
-    {
-      ec = asio::error::already_open;
-      return ec;
-    }
-
-    std::size_t addr_len = peer_endpoint ? peer_endpoint->capacity() : 0;
-    socket_holder new_socket(socket_ops::sync_accept(impl.socket_,
-          impl.state_, peer_endpoint ? peer_endpoint->data() : 0,
-          peer_endpoint ? &addr_len : 0, ec));
-
-    // On success, assign new connection to peer socket object.
-    if (new_socket.get() != invalid_socket)
-    {
-      if (peer_endpoint)
-        peer_endpoint->resize(addr_len);
-      if (!peer.assign(impl.protocol_, new_socket.get(), ec))
-        new_socket.release();
-    }
-
-    return ec;
-  }
-
-  // Start an asynchronous accept. The peer and peer_endpoint objects
-  // must be valid until the accept's handler is invoked.
-  template <typename Socket, typename Handler>
-  void async_accept(implementation_type& impl, Socket& peer,
-      endpoint_type* peer_endpoint, Handler& handler)
-  {
-    // Allocate and construct an operation to wrap the handler.
-    typedef win_iocp_socket_accept_op<Socket, protocol_type, Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    bool enable_connection_aborted =
-      (impl.state_ & socket_ops::enable_connection_aborted) != 0;
-    p.p = new (p.v) op(*this, impl.socket_, peer, impl.protocol_,
-        peer_endpoint, enable_connection_aborted, handler);
-
-    ASIO_HANDLER_CREATION((p.p, "socket", &impl, "async_accept"));
-
-    start_accept_op(impl, peer.is_open(), p.p->new_socket(),
-        impl.protocol_.family(), impl.protocol_.type(),
-        impl.protocol_.protocol(), p.p->output_buffer(),
-        p.p->address_length(), p.p);
-    p.v = p.p = 0;
-  }
-
-  // Connect the socket to the specified endpoint.
-  asio::error_code connect(implementation_type& impl,
-      const endpoint_type& peer_endpoint, asio::error_code& ec)
-  {
-    socket_ops::sync_connect(impl.socket_,
-        peer_endpoint.data(), peer_endpoint.size(), ec);
-    return ec;
-  }
-
-  // Start an asynchronous connect.
-  template <typename Handler>
-  void async_connect(implementation_type& impl,
-      const endpoint_type& peer_endpoint, Handler& handler)
-  {
-    // Allocate and construct an operation to wrap the handler.
-    typedef win_iocp_socket_connect_op<Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(impl.socket_, handler);
-
-    ASIO_HANDLER_CREATION((p.p, "socket", &impl, "async_connect"));
-
-    start_connect_op(impl, impl.protocol_.family(), impl.protocol_.type(),
-        peer_endpoint.data(), static_cast<int>(peer_endpoint.size()), p.p);
-    p.v = p.p = 0;
-  }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_WIN_IOCP_SOCKET_SERVICE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_socket_service_base.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_socket_service_base.hpp
deleted file mode 100644
index 27bad7c..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_socket_service_base.hpp
+++ /dev/null
@@ -1,524 +0,0 @@
-//
-// detail/win_iocp_socket_service_base.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WIN_IOCP_SOCKET_SERVICE_BASE_HPP
-#define ASIO_DETAIL_WIN_IOCP_SOCKET_SERVICE_BASE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_IOCP)
-
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/socket_base.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/mutex.hpp"
-#include "asio/detail/operation.hpp"
-#include "asio/detail/reactor.hpp"
-#include "asio/detail/reactor_op.hpp"
-#include "asio/detail/socket_holder.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/win_iocp_io_service.hpp"
-#include "asio/detail/win_iocp_null_buffers_op.hpp"
-#include "asio/detail/win_iocp_socket_connect_op.hpp"
-#include "asio/detail/win_iocp_socket_send_op.hpp"
-#include "asio/detail/win_iocp_socket_recv_op.hpp"
-#include "asio/detail/win_iocp_socket_recvmsg_op.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class win_iocp_socket_service_base
-{
-public:
-  // The implementation type of the socket.
-  struct base_implementation_type
-  {
-    // The native socket representation.
-    socket_type socket_;
-
-    // The current state of the socket.
-    socket_ops::state_type state_;
-
-    // We use a shared pointer as a cancellation token here to work around the
-    // broken Windows support for cancellation. MSDN says that when you call
-    // closesocket any outstanding WSARecv or WSASend operations will complete
-    // with the error ERROR_OPERATION_ABORTED. In practice they complete with
-    // ERROR_NETNAME_DELETED, which means you can't tell the difference between
-    // a local cancellation and the socket being hard-closed by the peer.
-    socket_ops::shared_cancel_token_type cancel_token_;
-
-    // Per-descriptor data used by the reactor.
-    reactor::per_descriptor_data reactor_data_;
-
-#if defined(ASIO_ENABLE_CANCELIO)
-    // The ID of the thread from which it is safe to cancel asynchronous
-    // operations. 0 means no asynchronous operations have been started yet.
-    // ~0 means asynchronous operations have been started from more than one
-    // thread, and cancellation is not supported for the socket.
-    DWORD safe_cancellation_thread_id_;
-#endif // defined(ASIO_ENABLE_CANCELIO)
-
-    // Pointers to adjacent socket implementations in linked list.
-    base_implementation_type* next_;
-    base_implementation_type* prev_;
-  };
-
-  // Constructor.
-  ASIO_DECL win_iocp_socket_service_base(
-      asio::io_service& io_service);
-
-  // Destroy all user-defined handler objects owned by the service.
-  ASIO_DECL void shutdown_service();
-
-  // Construct a new socket implementation.
-  ASIO_DECL void construct(base_implementation_type& impl);
-
-  // Move-construct a new socket implementation.
-  ASIO_DECL void base_move_construct(base_implementation_type& impl,
-      base_implementation_type& other_impl);
-
-  // Move-assign from another socket implementation.
-  ASIO_DECL void base_move_assign(base_implementation_type& impl,
-      win_iocp_socket_service_base& other_service,
-      base_implementation_type& other_impl);
-
-  // Destroy a socket implementation.
-  ASIO_DECL void destroy(base_implementation_type& impl);
-
-  // Determine whether the socket is open.
-  bool is_open(const base_implementation_type& impl) const
-  {
-    return impl.socket_ != invalid_socket;
-  }
-
-  // Destroy a socket implementation.
-  ASIO_DECL asio::error_code close(
-      base_implementation_type& impl, asio::error_code& ec);
-
-  // Cancel all operations associated with the socket.
-  ASIO_DECL asio::error_code cancel(
-      base_implementation_type& impl, asio::error_code& ec);
-
-  // Determine whether the socket is at the out-of-band data mark.
-  bool at_mark(const base_implementation_type& impl,
-      asio::error_code& ec) const
-  {
-    return socket_ops::sockatmark(impl.socket_, ec);
-  }
-
-  // Determine the number of bytes available for reading.
-  std::size_t available(const base_implementation_type& impl,
-      asio::error_code& ec) const
-  {
-    return socket_ops::available(impl.socket_, ec);
-  }
-
-  // Place the socket into the state where it will listen for new connections.
-  asio::error_code listen(base_implementation_type& impl,
-      int backlog, asio::error_code& ec)
-  {
-    socket_ops::listen(impl.socket_, backlog, ec);
-    return ec;
-  }
-
-  // Perform an IO control command on the socket.
-  template <typename IO_Control_Command>
-  asio::error_code io_control(base_implementation_type& impl,
-      IO_Control_Command& command, asio::error_code& ec)
-  {
-    socket_ops::ioctl(impl.socket_, impl.state_, command.name(),
-        static_cast<ioctl_arg_type*>(command.data()), ec);
-    return ec;
-  }
-
-  // Gets the non-blocking mode of the socket.
-  bool non_blocking(const base_implementation_type& impl) const
-  {
-    return (impl.state_ & socket_ops::user_set_non_blocking) != 0;
-  }
-
-  // Sets the non-blocking mode of the socket.
-  asio::error_code non_blocking(base_implementation_type& impl,
-      bool mode, asio::error_code& ec)
-  {
-    socket_ops::set_user_non_blocking(impl.socket_, impl.state_, mode, ec);
-    return ec;
-  }
-
-  // Gets the non-blocking mode of the native socket implementation.
-  bool native_non_blocking(const base_implementation_type& impl) const
-  {
-    return (impl.state_ & socket_ops::internal_non_blocking) != 0;
-  }
-
-  // Sets the non-blocking mode of the native socket implementation.
-  asio::error_code native_non_blocking(base_implementation_type& impl,
-      bool mode, asio::error_code& ec)
-  {
-    socket_ops::set_internal_non_blocking(impl.socket_, impl.state_, mode, ec);
-    return ec;
-  }
-
-  // Disable sends or receives on the socket.
-  asio::error_code shutdown(base_implementation_type& impl,
-      socket_base::shutdown_type what, asio::error_code& ec)
-  {
-    socket_ops::shutdown(impl.socket_, what, ec);
-    return ec;
-  }
-
-  // Send the given data to the peer. Returns the number of bytes sent.
-  template <typename ConstBufferSequence>
-  size_t send(base_implementation_type& impl,
-      const ConstBufferSequence& buffers,
-      socket_base::message_flags flags, asio::error_code& ec)
-  {
-    buffer_sequence_adapter<asio::const_buffer,
-        ConstBufferSequence> bufs(buffers);
-
-    return socket_ops::sync_send(impl.socket_, impl.state_,
-        bufs.buffers(), bufs.count(), flags, bufs.all_empty(), ec);
-  }
-
-  // Wait until data can be sent without blocking.
-  size_t send(base_implementation_type& impl, const null_buffers&,
-      socket_base::message_flags, asio::error_code& ec)
-  {
-    // Wait for socket to become ready.
-    socket_ops::poll_write(impl.socket_, impl.state_, ec);
-
-    return 0;
-  }
-
-  // Start an asynchronous send. The data being sent must be valid for the
-  // lifetime of the asynchronous operation.
-  template <typename ConstBufferSequence, typename Handler>
-  void async_send(base_implementation_type& impl,
-      const ConstBufferSequence& buffers,
-      socket_base::message_flags flags, Handler& handler)
-  {
-    // Allocate and construct an operation to wrap the handler.
-    typedef win_iocp_socket_send_op<ConstBufferSequence, Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(impl.cancel_token_, buffers, handler);
-
-    ASIO_HANDLER_CREATION((p.p, "socket", &impl, "async_send"));
-
-    buffer_sequence_adapter<asio::const_buffer,
-        ConstBufferSequence> bufs(buffers);
-
-    start_send_op(impl, bufs.buffers(), bufs.count(), flags,
-        (impl.state_ & socket_ops::stream_oriented) != 0 && bufs.all_empty(),
-        p.p);
-    p.v = p.p = 0;
-  }
-
-  // Start an asynchronous wait until data can be sent without blocking.
-  template <typename Handler>
-  void async_send(base_implementation_type& impl, const null_buffers&,
-      socket_base::message_flags, Handler& handler)
-  {
-    // Allocate and construct an operation to wrap the handler.
-    typedef win_iocp_null_buffers_op<Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(impl.cancel_token_, handler);
-
-    ASIO_HANDLER_CREATION((p.p, "socket",
-          &impl, "async_send(null_buffers)"));
-
-    start_reactor_op(impl, reactor::write_op, p.p);
-    p.v = p.p = 0;
-  }
-
-  // Receive some data from the peer. Returns the number of bytes received.
-  template <typename MutableBufferSequence>
-  size_t receive(base_implementation_type& impl,
-      const MutableBufferSequence& buffers,
-      socket_base::message_flags flags, asio::error_code& ec)
-  {
-    buffer_sequence_adapter<asio::mutable_buffer,
-        MutableBufferSequence> bufs(buffers);
-
-    return socket_ops::sync_recv(impl.socket_, impl.state_,
-        bufs.buffers(), bufs.count(), flags, bufs.all_empty(), ec);
-  }
-
-  // Wait until data can be received without blocking.
-  size_t receive(base_implementation_type& impl, const null_buffers&,
-      socket_base::message_flags, asio::error_code& ec)
-  {
-    // Wait for socket to become ready.
-    socket_ops::poll_read(impl.socket_, impl.state_, ec);
-
-    return 0;
-  }
-
-  // Start an asynchronous receive. The buffer for the data being received
-  // must be valid for the lifetime of the asynchronous operation.
-  template <typename MutableBufferSequence, typename Handler>
-  void async_receive(base_implementation_type& impl,
-      const MutableBufferSequence& buffers,
-      socket_base::message_flags flags, Handler& handler)
-  {
-    // Allocate and construct an operation to wrap the handler.
-    typedef win_iocp_socket_recv_op<MutableBufferSequence, Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(impl.state_, impl.cancel_token_, buffers, handler);
-
-    ASIO_HANDLER_CREATION((p.p, "socket", &impl, "async_receive"));
-
-    buffer_sequence_adapter<asio::mutable_buffer,
-        MutableBufferSequence> bufs(buffers);
-
-    start_receive_op(impl, bufs.buffers(), bufs.count(), flags,
-        (impl.state_ & socket_ops::stream_oriented) != 0 && bufs.all_empty(),
-        p.p);
-    p.v = p.p = 0;
-  }
-
-  // Wait until data can be received without blocking.
-  template <typename Handler>
-  void async_receive(base_implementation_type& impl, const null_buffers&,
-      socket_base::message_flags flags, Handler& handler)
-  {
-    // Allocate and construct an operation to wrap the handler.
-    typedef win_iocp_null_buffers_op<Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(impl.cancel_token_, handler);
-
-    ASIO_HANDLER_CREATION((p.p, "socket",
-          &impl, "async_receive(null_buffers)"));
-
-    start_null_buffers_receive_op(impl, flags, p.p);
-    p.v = p.p = 0;
-  }
-
-  // Receive some data with associated flags. Returns the number of bytes
-  // received.
-  template <typename MutableBufferSequence>
-  size_t receive_with_flags(base_implementation_type& impl,
-      const MutableBufferSequence& buffers,
-      socket_base::message_flags in_flags,
-      socket_base::message_flags& out_flags, asio::error_code& ec)
-  {
-    buffer_sequence_adapter<asio::mutable_buffer,
-        MutableBufferSequence> bufs(buffers);
-
-    return socket_ops::sync_recvmsg(impl.socket_, impl.state_,
-        bufs.buffers(), bufs.count(), in_flags, out_flags, ec);
-  }
-
-  // Wait until data can be received without blocking.
-  size_t receive_with_flags(base_implementation_type& impl,
-      const null_buffers&, socket_base::message_flags,
-      socket_base::message_flags& out_flags, asio::error_code& ec)
-  {
-    // Wait for socket to become ready.
-    socket_ops::poll_read(impl.socket_, impl.state_, ec);
-
-    // Clear out_flags, since we cannot give it any other sensible value when
-    // performing a null_buffers operation.
-    out_flags = 0;
-
-    return 0;
-  }
-
-  // Start an asynchronous receive. The buffer for the data being received
-  // must be valid for the lifetime of the asynchronous operation.
-  template <typename MutableBufferSequence, typename Handler>
-  void async_receive_with_flags(base_implementation_type& impl,
-      const MutableBufferSequence& buffers, socket_base::message_flags in_flags,
-      socket_base::message_flags& out_flags, Handler& handler)
-  {
-    // Allocate and construct an operation to wrap the handler.
-    typedef win_iocp_socket_recvmsg_op<MutableBufferSequence, Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(impl.cancel_token_, buffers, out_flags, handler);
-
-    ASIO_HANDLER_CREATION((p.p, "socket",
-          &impl, "async_receive_with_flags"));
-
-    buffer_sequence_adapter<asio::mutable_buffer,
-        MutableBufferSequence> bufs(buffers);
-
-    start_receive_op(impl, bufs.buffers(), bufs.count(), in_flags, false, p.p);
-    p.v = p.p = 0;
-  }
-
-  // Wait until data can be received without blocking.
-  template <typename Handler>
-  void async_receive_with_flags(base_implementation_type& impl,
-      const null_buffers&, socket_base::message_flags in_flags,
-      socket_base::message_flags& out_flags, Handler& handler)
-  {
-    // Allocate and construct an operation to wrap the handler.
-    typedef win_iocp_null_buffers_op<Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(impl.cancel_token_, handler);
-
-    ASIO_HANDLER_CREATION((p.p, "socket", &impl,
-          "async_receive_with_flags(null_buffers)"));
-
-    // Reset out_flags since it can be given no sensible value at this time.
-    out_flags = 0;
-
-    start_null_buffers_receive_op(impl, in_flags, p.p);
-    p.v = p.p = 0;
-  }
-
-  // Helper function to restart an asynchronous accept operation.
-  ASIO_DECL void restart_accept_op(socket_type s,
-      socket_holder& new_socket, int family, int type, int protocol,
-      void* output_buffer, DWORD address_length, operation* op);
-
-protected:
-  // Open a new socket implementation.
-  ASIO_DECL asio::error_code do_open(
-      base_implementation_type& impl, int family, int type,
-      int protocol, asio::error_code& ec);
-
-  // Assign a native socket to a socket implementation.
-  ASIO_DECL asio::error_code do_assign(
-      base_implementation_type& impl, int type,
-      socket_type native_socket, asio::error_code& ec);
-
-  // Helper function to start an asynchronous send operation.
-  ASIO_DECL void start_send_op(base_implementation_type& impl,
-      WSABUF* buffers, std::size_t buffer_count,
-      socket_base::message_flags flags, bool noop, operation* op);
-
-  // Helper function to start an asynchronous send_to operation.
-  ASIO_DECL void start_send_to_op(base_implementation_type& impl,
-      WSABUF* buffers, std::size_t buffer_count,
-      const socket_addr_type* addr, int addrlen,
-      socket_base::message_flags flags, operation* op);
-
-  // Helper function to start an asynchronous receive operation.
-  ASIO_DECL void start_receive_op(base_implementation_type& impl,
-      WSABUF* buffers, std::size_t buffer_count,
-      socket_base::message_flags flags, bool noop, operation* op);
-
-  // Helper function to start an asynchronous null_buffers receive operation.
-  ASIO_DECL void start_null_buffers_receive_op(
-      base_implementation_type& impl,
-      socket_base::message_flags flags, reactor_op* op);
-
-  // Helper function to start an asynchronous receive_from operation.
-  ASIO_DECL void start_receive_from_op(base_implementation_type& impl,
-      WSABUF* buffers, std::size_t buffer_count, socket_addr_type* addr,
-      socket_base::message_flags flags, int* addrlen, operation* op);
-
-  // Helper function to start an asynchronous accept operation.
-  ASIO_DECL void start_accept_op(base_implementation_type& impl,
-      bool peer_is_open, socket_holder& new_socket, int family, int type,
-      int protocol, void* output_buffer, DWORD address_length, operation* op);
-
-  // Start an asynchronous read or write operation using the reactor.
-  ASIO_DECL void start_reactor_op(base_implementation_type& impl,
-      int op_type, reactor_op* op);
-
-  // Start the asynchronous connect operation using the reactor.
-  ASIO_DECL void start_connect_op(base_implementation_type& impl,
-      int family, int type, const socket_addr_type* remote_addr,
-      std::size_t remote_addrlen, win_iocp_socket_connect_op_base* op);
-
-  // Helper function to close a socket when the associated object is being
-  // destroyed.
-  ASIO_DECL void close_for_destruction(base_implementation_type& impl);
-
-  // Update the ID of the thread from which cancellation is safe.
-  ASIO_DECL void update_cancellation_thread_id(
-      base_implementation_type& impl);
-
-  // Helper function to get the reactor. If no reactor has been created yet, a
-  // new one is obtained from the io_service and a pointer to it is cached in
-  // this service.
-  ASIO_DECL reactor& get_reactor();
-
-  // The type of a ConnectEx function pointer, as old SDKs may not provide it.
-  typedef BOOL (PASCAL *connect_ex_fn)(SOCKET,
-      const socket_addr_type*, int, void*, DWORD, DWORD*, OVERLAPPED*);
-
-  // Helper function to get the ConnectEx pointer. If no ConnectEx pointer has
-  // been obtained yet, one is obtained using WSAIoctl and the pointer is
-  // cached. Returns a null pointer if ConnectEx is not available.
-  ASIO_DECL connect_ex_fn get_connect_ex(
-      base_implementation_type& impl, int type);
-
-  // Helper function to emulate InterlockedCompareExchangePointer functionality
-  // for:
-  // - very old Platform SDKs; and
-  // - platform SDKs where MSVC's /Wp64 option causes spurious warnings.
-  ASIO_DECL void* interlocked_compare_exchange_pointer(
-      void** dest, void* exch, void* cmp);
-
-  // Helper function to emulate InterlockedExchangePointer functionality for:
-  // - very old Platform SDKs; and
-  // - platform SDKs where MSVC's /Wp64 option causes spurious warnings.
-  ASIO_DECL void* interlocked_exchange_pointer(void** dest, void* val);
-
-  // The io_service used to obtain the reactor, if required.
-  asio::io_service& io_service_;
-
-  // The IOCP service used for running asynchronous operations and dispatching
-  // handlers.
-  win_iocp_io_service& iocp_service_;
-
-  // The reactor used for performing connect operations. This object is created
-  // only if needed.
-  reactor* reactor_;
-
-  // Pointer to ConnectEx implementation.
-  void* connect_ex_;
-
-  // Mutex to protect access to the linked list of implementations. 
-  asio::detail::mutex mutex_;
-
-  // The head of a linked list of all implementations.
-  base_implementation_type* impl_list_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/win_iocp_socket_service_base.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_HAS_IOCP)
-
-#endif // ASIO_DETAIL_WIN_IOCP_SOCKET_SERVICE_BASE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_thread_info.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_thread_info.hpp
deleted file mode 100644
index 2b698d8..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_iocp_thread_info.hpp
+++ /dev/null
@@ -1,34 +0,0 @@
-//
-// detail/win_iocp_thread_info.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WIN_IOCP_THREAD_INFO_HPP
-#define ASIO_DETAIL_WIN_IOCP_THREAD_INFO_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/thread_info_base.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-struct win_iocp_thread_info : public thread_info_base
-{
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_WIN_IOCP_THREAD_INFO_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_mutex.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_mutex.hpp
deleted file mode 100644
index dd393de..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_mutex.hpp
+++ /dev/null
@@ -1,78 +0,0 @@
-//
-// detail/win_mutex.hpp
-// ~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WIN_MUTEX_HPP
-#define ASIO_DETAIL_WIN_MUTEX_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS)
-
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/scoped_lock.hpp"
-#include "asio/detail/socket_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class win_mutex
-  : private noncopyable
-{
-public:
-  typedef asio::detail::scoped_lock<win_mutex> scoped_lock;
-
-  // Constructor.
-  ASIO_DECL win_mutex();
-
-  // Destructor.
-  ~win_mutex()
-  {
-    ::DeleteCriticalSection(&crit_section_);
-  }
-
-  // Lock the mutex.
-  void lock()
-  {
-    ::EnterCriticalSection(&crit_section_);
-  }
-
-  // Unlock the mutex.
-  void unlock()
-  {
-    ::LeaveCriticalSection(&crit_section_);
-  }
-
-private:
-  // Initialisation must be performed in a separate function to the constructor
-  // since the compiler does not support the use of structured exceptions and
-  // C++ exceptions in the same function.
-  ASIO_DECL int do_init();
-
-  ::CRITICAL_SECTION crit_section_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/win_mutex.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_WINDOWS)
-
-#endif // ASIO_DETAIL_WIN_MUTEX_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_object_handle_service.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_object_handle_service.hpp
deleted file mode 100644
index d1d2fc2..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_object_handle_service.hpp
+++ /dev/null
@@ -1,183 +0,0 @@
-//
-// detail/win_object_handle_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2011 Boris Schaeling (boris@highscore.de)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WIN_OBJECT_HANDLE_SERVICE_HPP
-#define ASIO_DETAIL_WIN_OBJECT_HANDLE_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_WINDOWS_OBJECT_HANDLE)
-
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/wait_handler.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class win_object_handle_service
-{
-public:
-  // The native type of an object handle.
-  typedef HANDLE native_handle_type;
-
-  // The implementation type of the object handle.
-  class implementation_type
-  {
-   public:
-    // Default constructor.
-    implementation_type()
-      : handle_(INVALID_HANDLE_VALUE),
-        wait_handle_(INVALID_HANDLE_VALUE),
-        owner_(0),
-        next_(0),
-        prev_(0)
-    {
-    }
-
-  private:
-    // Only this service will have access to the internal values.
-    friend class win_object_handle_service;
-
-    // The native object handle representation. May be accessed or modified
-    // without locking the mutex.
-    native_handle_type handle_;
-
-    // The handle used to unregister the wait operation. The mutex must be
-    // locked when accessing or modifying this member.
-    HANDLE wait_handle_;
-
-    // The operations waiting on the object handle. If there is a registered
-    // wait then the mutex must be locked when accessing or modifying this
-    // member
-    op_queue<wait_op> op_queue_;
-
-    // The service instance that owns the object handle implementation.
-    win_object_handle_service* owner_;
-
-    // Pointers to adjacent handle implementations in linked list. The mutex
-    // must be locked when accessing or modifying these members.
-    implementation_type* next_;
-    implementation_type* prev_;
-  };
-
-  // Constructor.
-  ASIO_DECL win_object_handle_service(
-      asio::io_service& io_service);
-
-  // Destroy all user-defined handler objects owned by the service.
-  ASIO_DECL void shutdown_service();
-
-  // Construct a new handle implementation.
-  ASIO_DECL void construct(implementation_type& impl);
-
-  // Move-construct a new handle implementation.
-  ASIO_DECL void move_construct(implementation_type& impl,
-      implementation_type& other_impl);
-
-  // Move-assign from another handle implementation.
-  ASIO_DECL void move_assign(implementation_type& impl,
-      win_object_handle_service& other_service,
-      implementation_type& other_impl);
-
-  // Destroy a handle implementation.
-  ASIO_DECL void destroy(implementation_type& impl);
-
-  // Assign a native handle to a handle implementation.
-  ASIO_DECL asio::error_code assign(implementation_type& impl,
-      const native_handle_type& handle, asio::error_code& ec);
-
-  // Determine whether the handle is open.
-  bool is_open(const implementation_type& impl) const
-  {
-    return impl.handle_ != INVALID_HANDLE_VALUE && impl.handle_ != 0;
-  }
-
-  // Destroy a handle implementation.
-  ASIO_DECL asio::error_code close(implementation_type& impl,
-      asio::error_code& ec);
-
-  // Get the native handle representation.
-  native_handle_type native_handle(const implementation_type& impl) const
-  {
-    return impl.handle_;
-  }
-
-  // Cancel all operations associated with the handle.
-  ASIO_DECL asio::error_code cancel(implementation_type& impl,
-      asio::error_code& ec);
-
-  // Perform a synchronous wait for the object to enter a signalled state.
-  ASIO_DECL void wait(implementation_type& impl,
-      asio::error_code& ec);
-
-  /// Start an asynchronous wait.
-  template <typename Handler>
-  void async_wait(implementation_type& impl, Handler& handler)
-  {
-    // Allocate and construct an operation to wrap the handler.
-    typedef wait_handler<Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(handler);
-
-    ASIO_HANDLER_CREATION((p.p, "object_handle", &impl, "async_wait"));
-
-    start_wait_op(impl, p.p);
-    p.v = p.p = 0;
-  }
-
-private:
-  // Helper function to start an asynchronous wait operation.
-  ASIO_DECL void start_wait_op(implementation_type& impl, wait_op* op);
-
-  // Helper function to register a wait operation.
-  ASIO_DECL void register_wait_callback(
-      implementation_type& impl, mutex::scoped_lock& lock);
-
-  // Callback function invoked when the registered wait completes.
-  static ASIO_DECL VOID CALLBACK wait_callback(
-      PVOID param, BOOLEAN timeout);
-
-  // The io_service implementation used to post completions.
-  io_service_impl& io_service_;
-
-  // Mutex to protect access to internal state.
-  mutex mutex_;
-
-  // The head of a linked list of all implementations.
-  implementation_type* impl_list_;
-
-  // Flag to indicate that the dispatcher has been shut down.
-  bool shutdown_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/win_object_handle_service.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_HAS_WINDOWS_OBJECT_HANDLE)
-
-#endif // ASIO_DETAIL_WIN_OBJECT_HANDLE_SERVICE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_static_mutex.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_static_mutex.hpp
deleted file mode 100644
index b4ff6ce..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_static_mutex.hpp
+++ /dev/null
@@ -1,74 +0,0 @@
-//
-// detail/win_static_mutex.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WIN_STATIC_MUTEX_HPP
-#define ASIO_DETAIL_WIN_STATIC_MUTEX_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS)
-
-#include "asio/detail/scoped_lock.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-struct win_static_mutex
-{
-  typedef asio::detail::scoped_lock<win_static_mutex> scoped_lock;
-
-  // Initialise the mutex.
-  ASIO_DECL void init();
-
-  // Initialisation must be performed in a separate function to the "public"
-  // init() function since the compiler does not support the use of structured
-  // exceptions and C++ exceptions in the same function.
-  ASIO_DECL int do_init();
-
-  // Lock the mutex.
-  void lock()
-  {
-    ::EnterCriticalSection(&crit_section_);
-  }
-
-  // Unlock the mutex.
-  void unlock()
-  {
-    ::LeaveCriticalSection(&crit_section_);
-  }
-
-  bool initialised_;
-  ::CRITICAL_SECTION crit_section_;
-};
-
-#if defined(UNDER_CE)
-# define ASIO_WIN_STATIC_MUTEX_INIT { false, { 0, 0, 0, 0, 0 } }
-#else // defined(UNDER_CE)
-# define ASIO_WIN_STATIC_MUTEX_INIT { false, { 0, 0, 0, 0, 0, 0 } }
-#endif // defined(UNDER_CE)
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/win_static_mutex.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_WINDOWS)
-
-#endif // ASIO_DETAIL_WIN_STATIC_MUTEX_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_thread.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_thread.hpp
deleted file mode 100644
index 4286814..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_thread.hpp
+++ /dev/null
@@ -1,139 +0,0 @@
-//
-// detail/win_thread.hpp
-// ~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WIN_THREAD_HPP
-#define ASIO_DETAIL_WIN_THREAD_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS) && !defined(UNDER_CE)
-
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/socket_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-ASIO_DECL unsigned int __stdcall win_thread_function(void* arg);
-
-#if defined(WINVER) && (WINVER < 0x0500)
-ASIO_DECL void __stdcall apc_function(ULONG data);
-#else
-ASIO_DECL void __stdcall apc_function(ULONG_PTR data);
-#endif
-
-template <typename T>
-class win_thread_base
-{
-public:
-  static bool terminate_threads()
-  {
-    return ::InterlockedExchangeAdd(&terminate_threads_, 0) != 0;
-  }
-
-  static void set_terminate_threads(bool b)
-  {
-    ::InterlockedExchange(&terminate_threads_, b ? 1 : 0);
-  }
-
-private:
-  static long terminate_threads_;
-};
-
-template <typename T>
-long win_thread_base<T>::terminate_threads_ = 0;
-
-class win_thread
-  : private noncopyable,
-    public win_thread_base<win_thread>
-{
-public:
-  // Constructor.
-  template <typename Function>
-  win_thread(Function f, unsigned int stack_size = 0)
-    : thread_(0),
-      exit_event_(0)
-  {
-    start_thread(new func<Function>(f), stack_size);
-  }
-
-  // Destructor.
-  ASIO_DECL ~win_thread();
-
-  // Wait for the thread to exit.
-  ASIO_DECL void join();
-
-private:
-  friend ASIO_DECL unsigned int __stdcall win_thread_function(void* arg);
-
-#if defined(WINVER) && (WINVER < 0x0500)
-  friend ASIO_DECL void __stdcall apc_function(ULONG);
-#else
-  friend ASIO_DECL void __stdcall apc_function(ULONG_PTR);
-#endif
-
-  class func_base
-  {
-  public:
-    virtual ~func_base() {}
-    virtual void run() = 0;
-    ::HANDLE entry_event_;
-    ::HANDLE exit_event_;
-  };
-
-  struct auto_func_base_ptr
-  {
-    func_base* ptr;
-    ~auto_func_base_ptr() { delete ptr; }
-  };
-
-  template <typename Function>
-  class func
-    : public func_base
-  {
-  public:
-    func(Function f)
-      : f_(f)
-    {
-    }
-
-    virtual void run()
-    {
-      f_();
-    }
-
-  private:
-    Function f_;
-  };
-
-  ASIO_DECL void start_thread(func_base* arg, unsigned int stack_size);
-
-  ::HANDLE thread_;
-  ::HANDLE exit_event_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/win_thread.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_WINDOWS) && !defined(UNDER_CE)
-
-#endif // ASIO_DETAIL_WIN_THREAD_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_tss_ptr.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_tss_ptr.hpp
deleted file mode 100644
index 64a9ddf..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/win_tss_ptr.hpp
+++ /dev/null
@@ -1,79 +0,0 @@
-//
-// detail/win_tss_ptr.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WIN_TSS_PTR_HPP
-#define ASIO_DETAIL_WIN_TSS_PTR_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS)
-
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/socket_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-// Helper function to create thread-specific storage.
-ASIO_DECL DWORD win_tss_ptr_create();
-
-template <typename T>
-class win_tss_ptr
-  : private noncopyable
-{
-public:
-  // Constructor.
-  win_tss_ptr()
-    : tss_key_(win_tss_ptr_create())
-  {
-  }
-
-  // Destructor.
-  ~win_tss_ptr()
-  {
-    ::TlsFree(tss_key_);
-  }
-
-  // Get the value.
-  operator T*() const
-  {
-    return static_cast<T*>(::TlsGetValue(tss_key_));
-  }
-
-  // Set the value.
-  void operator=(T* value)
-  {
-    ::TlsSetValue(tss_key_, value);
-  }
-
-private:
-  // Thread-specific storage to allow unlocked access to determine whether a
-  // thread is a member of the pool.
-  DWORD tss_key_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/win_tss_ptr.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_WINDOWS)
-
-#endif // ASIO_DETAIL_WIN_TSS_PTR_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/wince_thread.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/wince_thread.hpp
deleted file mode 100644
index e15ad3e..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/wince_thread.hpp
+++ /dev/null
@@ -1,116 +0,0 @@
-//
-// detail/wince_thread.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WINCE_THREAD_HPP
-#define ASIO_DETAIL_WINCE_THREAD_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS) && defined(UNDER_CE)
-
-#include <memory>
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-DWORD WINAPI wince_thread_function(LPVOID arg);
-
-class wince_thread
-  : private noncopyable
-{
-public:
-  // Constructor.
-  template <typename Function>
-  wince_thread(Function f, unsigned int = 0)
-  {
-    std::auto_ptr<func_base> arg(new func<Function>(f));
-    DWORD thread_id = 0;
-    thread_ = ::CreateThread(0, 0, wince_thread_function,
-        arg.get(), 0, &thread_id);
-    if (!thread_)
-    {
-      DWORD last_error = ::GetLastError();
-      asio::error_code ec(last_error,
-          asio::error::get_system_category());
-      asio::detail::throw_error(ec, "thread");
-    }
-    arg.release();
-  }
-
-  // Destructor.
-  ~wince_thread()
-  {
-    ::CloseHandle(thread_);
-  }
-
-  // Wait for the thread to exit.
-  void join()
-  {
-    ::WaitForSingleObject(thread_, INFINITE);
-  }
-
-private:
-  friend DWORD WINAPI wince_thread_function(LPVOID arg);
-
-  class func_base
-  {
-  public:
-    virtual ~func_base() {}
-    virtual void run() = 0;
-  };
-
-  template <typename Function>
-  class func
-    : public func_base
-  {
-  public:
-    func(Function f)
-      : f_(f)
-    {
-    }
-
-    virtual void run()
-    {
-      f_();
-    }
-
-  private:
-    Function f_;
-  };
-
-  ::HANDLE thread_;
-};
-
-inline DWORD WINAPI wince_thread_function(LPVOID arg)
-{
-  std::auto_ptr<wince_thread::func_base> func(
-      static_cast<wince_thread::func_base*>(arg));
-  func->run();
-  return 0;
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS) && defined(UNDER_CE)
-
-#endif // ASIO_DETAIL_WINCE_THREAD_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/winrt_async_manager.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/winrt_async_manager.hpp
deleted file mode 100644
index 9799669..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/winrt_async_manager.hpp
+++ /dev/null
@@ -1,294 +0,0 @@
-//
-// detail/winrt_async_manager.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WINRT_ASYNC_MANAGER_HPP
-#define ASIO_DETAIL_WINRT_ASYNC_MANAGER_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-
-#include <future>
-#include "asio/detail/atomic_count.hpp"
-#include "asio/detail/winrt_async_op.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class winrt_async_manager
-  : public asio::detail::service_base<winrt_async_manager>
-{
-public:
-  // Constructor.
-  winrt_async_manager(asio::io_service& io_service)
-    : asio::detail::service_base<winrt_async_manager>(io_service),
-      io_service_(use_service<io_service_impl>(io_service)),
-      outstanding_ops_(1)
-  {
-  }
-
-  // Destructor.
-  ~winrt_async_manager()
-  {
-  }
-
-  // Destroy all user-defined handler objects owned by the service.
-  void shutdown_service()
-  {
-    if (--outstanding_ops_ > 0)
-    {
-      // Block until last operation is complete.
-      std::future<void> f = promise_.get_future();
-      f.wait();
-    }
-  }
-
-  void sync(Windows::Foundation::IAsyncAction^ action,
-      asio::error_code& ec)
-  {
-    using namespace Windows::Foundation;
-    using Windows::Foundation::AsyncStatus;
-
-    auto promise = std::make_shared<std::promise<asio::error_code>>();
-    auto future = promise->get_future();
-
-    action->Completed = ref new AsyncActionCompletedHandler(
-      [promise](IAsyncAction^ action, AsyncStatus status)
-      {
-        switch (status)
-        {
-        case AsyncStatus::Canceled:
-          promise->set_value(asio::error::operation_aborted);
-          break;
-        case AsyncStatus::Error:
-        case AsyncStatus::Completed:
-        default:
-          asio::error_code ec(
-              action->ErrorCode.Value,
-              asio::system_category());
-          promise->set_value(ec);
-          break;
-        }
-      });
-
-    ec = future.get();
-  }
-
-  template <typename TResult>
-  TResult sync(Windows::Foundation::IAsyncOperation<TResult>^ operation,
-      asio::error_code& ec)
-  {
-    using namespace Windows::Foundation;
-    using Windows::Foundation::AsyncStatus;
-
-    auto promise = std::make_shared<std::promise<asio::error_code>>();
-    auto future = promise->get_future();
-
-    operation->Completed = ref new AsyncOperationCompletedHandler<TResult>(
-      [promise](IAsyncOperation<TResult>^ operation, AsyncStatus status)
-      {
-        switch (status)
-        {
-        case AsyncStatus::Canceled:
-          promise->set_value(asio::error::operation_aborted);
-          break;
-        case AsyncStatus::Error:
-        case AsyncStatus::Completed:
-        default:
-          asio::error_code ec(
-              operation->ErrorCode.Value,
-              asio::system_category());
-          promise->set_value(ec);
-          break;
-        }
-      });
-
-    ec = future.get();
-    return operation->GetResults();
-  }
-
-  template <typename TResult, typename TProgress>
-  TResult sync(
-      Windows::Foundation::IAsyncOperationWithProgress<
-        TResult, TProgress>^ operation,
-      asio::error_code& ec)
-  {
-    using namespace Windows::Foundation;
-    using Windows::Foundation::AsyncStatus;
-
-    auto promise = std::make_shared<std::promise<asio::error_code>>();
-    auto future = promise->get_future();
-
-    operation->Completed
-      = ref new AsyncOperationWithProgressCompletedHandler<TResult, TProgress>(
-        [promise](IAsyncOperationWithProgress<TResult, TProgress>^ operation,
-          AsyncStatus status)
-        {
-          switch (status)
-          {
-          case AsyncStatus::Canceled:
-            promise->set_value(asio::error::operation_aborted);
-            break;
-          case AsyncStatus::Started:
-            break;
-          case AsyncStatus::Error:
-          case AsyncStatus::Completed:
-          default:
-            asio::error_code ec(
-                operation->ErrorCode.Value,
-                asio::system_category());
-            promise->set_value(ec);
-            break;
-          }
-        });
-
-    ec = future.get();
-    return operation->GetResults();
-  }
-
-  void async(Windows::Foundation::IAsyncAction^ action,
-      winrt_async_op<void>* handler)
-  {
-    using namespace Windows::Foundation;
-    using Windows::Foundation::AsyncStatus;
-
-    auto on_completed = ref new AsyncActionCompletedHandler(
-      [this, handler](IAsyncAction^ action, AsyncStatus status)
-      {
-        switch (status)
-        {
-        case AsyncStatus::Canceled:
-          handler->ec_ = asio::error::operation_aborted;
-          break;
-        case AsyncStatus::Started:
-          return;
-        case AsyncStatus::Completed:
-        case AsyncStatus::Error:
-        default:
-          handler->ec_ = asio::error_code(
-              action->ErrorCode.Value,
-              asio::system_category());
-          break;
-        }
-        io_service_.post_deferred_completion(handler);
-        if (--outstanding_ops_ == 0)
-          promise_.set_value();
-      });
-
-    io_service_.work_started();
-    ++outstanding_ops_;
-    action->Completed = on_completed;
-  }
-
-  template <typename TResult>
-  void async(Windows::Foundation::IAsyncOperation<TResult>^ operation,
-      winrt_async_op<TResult>* handler)
-  {
-    using namespace Windows::Foundation;
-    using Windows::Foundation::AsyncStatus;
-
-    auto on_completed = ref new AsyncOperationCompletedHandler<TResult>(
-      [this, handler](IAsyncOperation<TResult>^ operation, AsyncStatus status)
-      {
-        switch (status)
-        {
-        case AsyncStatus::Canceled:
-          handler->ec_ = asio::error::operation_aborted;
-          break;
-        case AsyncStatus::Started:
-          return;
-        case AsyncStatus::Completed:
-          handler->result_ = operation->GetResults();
-          // Fall through.
-        case AsyncStatus::Error:
-        default:
-          handler->ec_ = asio::error_code(
-              operation->ErrorCode.Value,
-              asio::system_category());
-          break;
-        }
-        io_service_.post_deferred_completion(handler);
-        if (--outstanding_ops_ == 0)
-          promise_.set_value();
-      });
-
-    io_service_.work_started();
-    ++outstanding_ops_;
-    operation->Completed = on_completed;
-  }
-
-  template <typename TResult, typename TProgress>
-  void async(
-      Windows::Foundation::IAsyncOperationWithProgress<
-        TResult, TProgress>^ operation,
-      winrt_async_op<TResult>* handler)
-  {
-    using namespace Windows::Foundation;
-    using Windows::Foundation::AsyncStatus;
-
-    auto on_completed
-      = ref new AsyncOperationWithProgressCompletedHandler<TResult, TProgress>(
-        [this, handler](IAsyncOperationWithProgress<
-          TResult, TProgress>^ operation, AsyncStatus status)
-        {
-          switch (status)
-          {
-          case AsyncStatus::Canceled:
-            handler->ec_ = asio::error::operation_aborted;
-            break;
-          case AsyncStatus::Started:
-            return;
-          case AsyncStatus::Completed:
-            handler->result_ = operation->GetResults();
-            // Fall through.
-          case AsyncStatus::Error:
-          default:
-            handler->ec_ = asio::error_code(
-                operation->ErrorCode.Value,
-                asio::system_category());
-            break;
-          }
-          io_service_.post_deferred_completion(handler);
-          if (--outstanding_ops_ == 0)
-            promise_.set_value();
-        });
-
-    io_service_.work_started();
-    ++outstanding_ops_;
-    operation->Completed = on_completed;
-  }
-
-private:
-  // The io_service implementation used to post completed handlers.
-  io_service_impl& io_service_;
-
-  // Count of outstanding operations.
-  atomic_count outstanding_ops_;
-
-  // Used to keep wait for outstanding operations to complete.
-  std::promise<void> promise_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_WINRT_ASYNC_MANAGER_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/winrt_async_op.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/winrt_async_op.hpp
deleted file mode 100644
index 00bc0d1..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/winrt_async_op.hpp
+++ /dev/null
@@ -1,65 +0,0 @@
-//
-// detail/winrt_async_op.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WINRT_ASYNC_OP_HPP
-#define ASIO_DETAIL_WINRT_ASYNC_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/operation.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename TResult>
-class winrt_async_op
-  : public operation
-{
-public:
-  // The error code to be passed to the completion handler.
-  asio::error_code ec_;
-
-  // The result of the operation, to be passed to the completion handler.
-  TResult result_;
-
-protected:
-  winrt_async_op(func_type complete_func)
-    : operation(complete_func),
-      result_()
-  {
-  }
-};
-
-template <>
-class winrt_async_op<void>
-  : public operation
-{
-public:
-  // The error code to be passed to the completion handler.
-  asio::error_code ec_;
-
-protected:
-  winrt_async_op(func_type complete_func)
-    : operation(complete_func)
-  {
-  }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_WINRT_ASYNC_OP_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/winrt_resolve_op.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/winrt_resolve_op.hpp
deleted file mode 100644
index 35452f4..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/winrt_resolve_op.hpp
+++ /dev/null
@@ -1,117 +0,0 @@
-//
-// detail/winrt_resolve_op.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WINRT_RESOLVE_OP_HPP
-#define ASIO_DETAIL_WINRT_RESOLVE_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/winrt_async_op.hpp"
-#include "asio/ip/basic_resolver_iterator.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Protocol, typename Handler>
-class winrt_resolve_op :
-  public winrt_async_op<
-    Windows::Foundation::Collections::IVectorView<
-      Windows::Networking::EndpointPair^>^>
-{
-public:
-  ASIO_DEFINE_HANDLER_PTR(winrt_resolve_op);
-
-  typedef typename Protocol::endpoint endpoint_type;
-  typedef asio::ip::basic_resolver_query<Protocol> query_type;
-  typedef asio::ip::basic_resolver_iterator<Protocol> iterator_type;
-
-  winrt_resolve_op(const query_type& query, Handler& handler)
-    : winrt_async_op<
-        Windows::Foundation::Collections::IVectorView<
-          Windows::Networking::EndpointPair^>^>(
-            &winrt_resolve_op::do_complete),
-      query_(query),
-      handler_(ASIO_MOVE_CAST(Handler)(handler))
-  {
-  }
-
-  static void do_complete(io_service_impl* owner, operation* base,
-      const asio::error_code&, std::size_t)
-  {
-    // Take ownership of the operation object.
-    winrt_resolve_op* o(static_cast<winrt_resolve_op*>(base));
-    ptr p = { asio::detail::addressof(o->handler_), o, o };
-
-    ASIO_HANDLER_COMPLETION((o));
-
-    iterator_type iterator = iterator_type();
-    if (!o->ec_)
-    {
-      try
-      {
-        iterator = iterator_type::create(
-            o->result_, o->query_.hints(),
-            o->query_.host_name(), o->query_.service_name());
-      }
-      catch (Platform::Exception^ e)
-      {
-        o->ec_ = asio::error_code(e->HResult,
-            asio::system_category());
-      }
-    }
-
-    // Make a copy of the handler so that the memory can be deallocated before
-    // the upcall is made. Even if we're not about to make an upcall, a
-    // sub-object of the handler may be the true owner of the memory associated
-    // with the handler. Consequently, a local copy of the handler is required
-    // to ensure that any owning sub-object remains valid until after we have
-    // deallocated the memory here.
-    detail::binder2<Handler, asio::error_code, iterator_type>
-      handler(o->handler_, o->ec_, iterator);
-    p.h = asio::detail::addressof(handler.handler_);
-    p.reset();
-
-    // Make the upcall if required.
-    if (owner)
-    {
-      fenced_block b(fenced_block::half);
-      ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
-      asio_handler_invoke_helpers::invoke(handler, handler.handler_);
-      ASIO_HANDLER_INVOCATION_END;
-    }
-  }
-
-private:
-  query_type query_;
-  Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_WINRT_RESOLVE_OP_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/winrt_resolver_service.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/winrt_resolver_service.hpp
deleted file mode 100644
index 1220719..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/winrt_resolver_service.hpp
+++ /dev/null
@@ -1,183 +0,0 @@
-//
-// detail/winrt_resolver_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WINRT_RESOLVER_SERVICE_HPP
-#define ASIO_DETAIL_WINRT_RESOLVER_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-
-#include "asio/ip/basic_resolver_iterator.hpp"
-#include "asio/ip/basic_resolver_query.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/detail/winrt_async_manager.hpp"
-#include "asio/detail/winrt_resolve_op.hpp"
-#include "asio/detail/winrt_utils.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Protocol>
-class winrt_resolver_service
-{
-public:
-  // The implementation type of the resolver. A cancellation token is used to
-  // indicate to the asynchronous operation that the operation has been
-  // cancelled.
-  typedef socket_ops::shared_cancel_token_type implementation_type;
-
-  // The endpoint type.
-  typedef typename Protocol::endpoint endpoint_type;
-
-  // The query type.
-  typedef asio::ip::basic_resolver_query<Protocol> query_type;
-
-  // The iterator type.
-  typedef asio::ip::basic_resolver_iterator<Protocol> iterator_type;
-
-  // Constructor.
-  winrt_resolver_service(asio::io_service& io_service)
-    : io_service_(use_service<io_service_impl>(io_service)),
-      async_manager_(use_service<winrt_async_manager>(io_service))
-  {
-  }
-
-  // Destructor.
-  ~winrt_resolver_service()
-  {
-  }
-
-  // Destroy all user-defined handler objects owned by the service.
-  void shutdown_service()
-  {
-  }
-
-  // Perform any fork-related housekeeping.
-  void fork_service(asio::io_service::fork_event)
-  {
-  }
-
-  // Construct a new resolver implementation.
-  void construct(implementation_type&)
-  {
-  }
-
-  // Destroy a resolver implementation.
-  void destroy(implementation_type&)
-  {
-  }
-
-  // Cancel pending asynchronous operations.
-  void cancel(implementation_type&)
-  {
-  }
-
-  // Resolve a query to a list of entries.
-  iterator_type resolve(implementation_type&,
-      const query_type& query, asio::error_code& ec)
-  {
-    try
-    {
-      using namespace Windows::Networking::Sockets;
-      auto endpoint_pairs = async_manager_.sync(
-          DatagramSocket::GetEndpointPairsAsync(
-            winrt_utils::host_name(query.host_name()),
-            winrt_utils::string(query.service_name())), ec);
-
-      if (ec)
-        return iterator_type();
-
-      return iterator_type::create(
-          endpoint_pairs, query.hints(),
-          query.host_name(), query.service_name());
-    }
-    catch (Platform::Exception^ e)
-    {
-      ec = asio::error_code(e->HResult,
-          asio::system_category());
-      return iterator_type();
-    }
-  }
-
-  // Asynchronously resolve a query to a list of entries.
-  template <typename Handler>
-  void async_resolve(implementation_type&,
-      const query_type& query, Handler& handler)
-  {
-    bool is_continuation =
-      asio_handler_cont_helpers::is_continuation(handler);
-
-    // Allocate and construct an operation to wrap the handler.
-    typedef winrt_resolve_op<Protocol, Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(query, handler);
-
-    ASIO_HANDLER_CREATION((p.p, "resolver", &impl, "async_resolve"));
-
-    try
-    {
-      using namespace Windows::Networking::Sockets;
-      async_manager_.async(DatagramSocket::GetEndpointPairsAsync(
-            winrt_utils::host_name(query.host_name()),
-            winrt_utils::string(query.service_name())), p.p);
-      p.v = p.p = 0;
-    }
-    catch (Platform::Exception^ e)
-    {
-      p.p->ec_ = asio::error_code(
-          e->HResult, asio::system_category());
-      io_service_.post_immediate_completion(p.p, is_continuation);
-      p.v = p.p = 0;
-    }
-  }
-
-  // Resolve an endpoint to a list of entries.
-  iterator_type resolve(implementation_type&,
-      const endpoint_type&, asio::error_code& ec)
-  {
-    ec = asio::error::operation_not_supported;
-    return iterator_type();
-  }
-
-  // Asynchronously resolve an endpoint to a list of entries.
-  template <typename Handler>
-  void async_resolve(implementation_type&,
-      const endpoint_type&, Handler& handler)
-  {
-    asio::error_code ec = asio::error::operation_not_supported;
-    const iterator_type iterator;
-    io_service_.get_io_service().post(
-        detail::bind_handler(handler, ec, iterator));
-  }
-
-private:
-  io_service_impl& io_service_;
-  winrt_async_manager& async_manager_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_WINRT_RESOLVER_SERVICE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/winrt_socket_connect_op.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/winrt_socket_connect_op.hpp
deleted file mode 100644
index 81f42b0..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/winrt_socket_connect_op.hpp
+++ /dev/null
@@ -1,90 +0,0 @@
-//
-// detail/winrt_socket_connect_op.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WINRT_SOCKET_CONNECT_OP_HPP
-#define ASIO_DETAIL_WINRT_SOCKET_CONNECT_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/winrt_async_op.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Handler>
-class winrt_socket_connect_op :
-  public winrt_async_op<void>
-{
-public:
-  ASIO_DEFINE_HANDLER_PTR(winrt_socket_connect_op);
-
-  winrt_socket_connect_op(Handler& handler)
-    : winrt_async_op<void>(&winrt_socket_connect_op::do_complete),
-      handler_(ASIO_MOVE_CAST(Handler)(handler))
-  {
-  }
-
-  static void do_complete(io_service_impl* owner, operation* base,
-      const asio::error_code&, std::size_t)
-  {
-    // Take ownership of the operation object.
-    winrt_socket_connect_op* o(static_cast<winrt_socket_connect_op*>(base));
-    ptr p = { asio::detail::addressof(o->handler_), o, o };
-
-    ASIO_HANDLER_COMPLETION((o));
-
-    // Make a copy of the handler so that the memory can be deallocated before
-    // the upcall is made. Even if we're not about to make an upcall, a
-    // sub-object of the handler may be the true owner of the memory associated
-    // with the handler. Consequently, a local copy of the handler is required
-    // to ensure that any owning sub-object remains valid until after we have
-    // deallocated the memory here.
-    detail::binder1<Handler, asio::error_code>
-      handler(o->handler_, o->ec_);
-    p.h = asio::detail::addressof(handler.handler_);
-    p.reset();
-
-    // Make the upcall if required.
-    if (owner)
-    {
-      fenced_block b(fenced_block::half);
-      ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
-      asio_handler_invoke_helpers::invoke(handler, handler.handler_);
-      ASIO_HANDLER_INVOCATION_END;
-    }
-  }
-
-private:
-  Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_WINRT_SOCKET_CONNECT_OP_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/winrt_socket_recv_op.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/winrt_socket_recv_op.hpp
deleted file mode 100644
index 1474486..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/winrt_socket_recv_op.hpp
+++ /dev/null
@@ -1,110 +0,0 @@
-//
-// detail/winrt_socket_recv_op.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WINRT_SOCKET_RECV_OP_HPP
-#define ASIO_DETAIL_WINRT_SOCKET_RECV_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/winrt_async_op.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename MutableBufferSequence, typename Handler>
-class winrt_socket_recv_op :
-  public winrt_async_op<Windows::Storage::Streams::IBuffer^>
-{
-public:
-  ASIO_DEFINE_HANDLER_PTR(winrt_socket_recv_op);
-
-  winrt_socket_recv_op(const MutableBufferSequence& buffers, Handler& handler)
-    : winrt_async_op<Windows::Storage::Streams::IBuffer^>(
-          &winrt_socket_recv_op::do_complete),
-      buffers_(buffers),
-      handler_(ASIO_MOVE_CAST(Handler)(handler))
-  {
-  }
-
-  static void do_complete(io_service_impl* owner, operation* base,
-      const asio::error_code&, std::size_t)
-  {
-    // Take ownership of the operation object.
-    winrt_socket_recv_op* o(static_cast<winrt_socket_recv_op*>(base));
-    ptr p = { asio::detail::addressof(o->handler_), o, o };
-
-    ASIO_HANDLER_COMPLETION((o));
-
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-    // Check whether buffers are still valid.
-    if (owner)
-    {
-      buffer_sequence_adapter<asio::mutable_buffer,
-          MutableBufferSequence>::validate(o->buffers_);
-    }
-#endif // defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-
-    std::size_t bytes_transferred = o->result_ ? o->result_->Length : 0;
-    if (bytes_transferred == 0 && !o->ec_ &&
-        !buffer_sequence_adapter<asio::mutable_buffer,
-          MutableBufferSequence>::all_empty(o->buffers_))
-    {
-      o->ec_ = asio::error::eof;
-    }
-
-    // Make a copy of the handler so that the memory can be deallocated before
-    // the upcall is made. Even if we're not about to make an upcall, a
-    // sub-object of the handler may be the true owner of the memory associated
-    // with the handler. Consequently, a local copy of the handler is required
-    // to ensure that any owning sub-object remains valid until after we have
-    // deallocated the memory here.
-    detail::binder2<Handler, asio::error_code, std::size_t>
-      handler(o->handler_, o->ec_, bytes_transferred);
-    p.h = asio::detail::addressof(handler.handler_);
-    p.reset();
-
-    // Make the upcall if required.
-    if (owner)
-    {
-      fenced_block b(fenced_block::half);
-      ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
-      asio_handler_invoke_helpers::invoke(handler, handler.handler_);
-      ASIO_HANDLER_INVOCATION_END;
-    }
-  }
-
-private:
-  MutableBufferSequence buffers_;
-  Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_WINRT_SOCKET_RECV_OP_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/winrt_socket_send_op.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/winrt_socket_send_op.hpp
deleted file mode 100644
index c534543..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/winrt_socket_send_op.hpp
+++ /dev/null
@@ -1,101 +0,0 @@
-//
-// detail/winrt_socket_send_op.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WINRT_SOCKET_SEND_OP_HPP
-#define ASIO_DETAIL_WINRT_SOCKET_SEND_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/fenced_block.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/winrt_async_op.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename ConstBufferSequence, typename Handler>
-class winrt_socket_send_op :
-  public winrt_async_op<unsigned int>
-{
-public:
-  ASIO_DEFINE_HANDLER_PTR(winrt_socket_send_op);
-
-  winrt_socket_send_op(const ConstBufferSequence& buffers, Handler& handler)
-    : winrt_async_op<unsigned int>(&winrt_socket_send_op::do_complete),
-      buffers_(buffers),
-      handler_(ASIO_MOVE_CAST(Handler)(handler))
-  {
-  }
-
-  static void do_complete(io_service_impl* owner, operation* base,
-      const asio::error_code&, std::size_t)
-  {
-    // Take ownership of the operation object.
-    winrt_socket_send_op* o(static_cast<winrt_socket_send_op*>(base));
-    ptr p = { asio::detail::addressof(o->handler_), o, o };
-
-    ASIO_HANDLER_COMPLETION((o));
-
-#if defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-    // Check whether buffers are still valid.
-    if (owner)
-    {
-      buffer_sequence_adapter<asio::const_buffer,
-          ConstBufferSequence>::validate(o->buffers_);
-    }
-#endif // defined(ASIO_ENABLE_BUFFER_DEBUGGING)
-
-    // Make a copy of the handler so that the memory can be deallocated before
-    // the upcall is made. Even if we're not about to make an upcall, a
-    // sub-object of the handler may be the true owner of the memory associated
-    // with the handler. Consequently, a local copy of the handler is required
-    // to ensure that any owning sub-object remains valid until after we have
-    // deallocated the memory here.
-    detail::binder2<Handler, asio::error_code, std::size_t>
-      handler(o->handler_, o->ec_, o->result_);
-    p.h = asio::detail::addressof(handler.handler_);
-    p.reset();
-
-    // Make the upcall if required.
-    if (owner)
-    {
-      fenced_block b(fenced_block::half);
-      ASIO_HANDLER_INVOCATION_BEGIN((handler.arg1_, handler.arg2_));
-      asio_handler_invoke_helpers::invoke(handler, handler.handler_);
-      ASIO_HANDLER_INVOCATION_END;
-    }
-  }
-
-private:
-  ConstBufferSequence buffers_;
-  Handler handler_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_WINRT_SOCKET_SEND_OP_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/winrt_ssocket_service.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/winrt_ssocket_service.hpp
deleted file mode 100644
index 0c11913..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/winrt_ssocket_service.hpp
+++ /dev/null
@@ -1,232 +0,0 @@
-//
-// detail/winrt_ssocket_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WINRT_SSOCKET_SERVICE_HPP
-#define ASIO_DETAIL_WINRT_SSOCKET_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/winrt_socket_connect_op.hpp"
-#include "asio/detail/winrt_ssocket_service_base.hpp"
-#include "asio/detail/winrt_utils.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-template <typename Protocol>
-class winrt_ssocket_service :
-  public winrt_ssocket_service_base
-{
-public:
-  // The protocol type.
-  typedef Protocol protocol_type;
-
-  // The endpoint type.
-  typedef typename Protocol::endpoint endpoint_type;
-
-  // The native type of a socket.
-  typedef Windows::Networking::Sockets::StreamSocket^ native_handle_type;
-
-  // The implementation type of the socket.
-  struct implementation_type : base_implementation_type
-  {
-    // Default constructor.
-    implementation_type()
-      : base_implementation_type(),
-        protocol_(endpoint_type().protocol())
-    {
-    }
-
-    // The protocol associated with the socket.
-    protocol_type protocol_;
-  };
-
-  // Constructor.
-  winrt_ssocket_service(asio::io_service& io_service)
-    : winrt_ssocket_service_base(io_service)
-  {
-  }
-
-  // Move-construct a new socket implementation.
-  void move_construct(implementation_type& impl,
-      implementation_type& other_impl)
-  {
-    this->base_move_construct(impl, other_impl);
-
-    impl.protocol_ = other_impl.protocol_;
-    other_impl.protocol_ = endpoint_type().protocol();
-  }
-
-  // Move-assign from another socket implementation.
-  void move_assign(implementation_type& impl,
-      winrt_ssocket_service& other_service,
-      implementation_type& other_impl)
-  {
-    this->base_move_assign(impl, other_service, other_impl);
-
-    impl.protocol_ = other_impl.protocol_;
-    other_impl.protocol_ = endpoint_type().protocol();
-  }
-
-  // Move-construct a new socket implementation from another protocol type.
-  template <typename Protocol1>
-  void converting_move_construct(implementation_type& impl,
-      typename winrt_ssocket_service<
-        Protocol1>::implementation_type& other_impl)
-  {
-    this->base_move_construct(impl, other_impl);
-
-    impl.protocol_ = protocol_type(other_impl.protocol_);
-    other_impl.protocol_ = typename Protocol1::endpoint().protocol();
-  }
-
-  // Open a new socket implementation.
-  asio::error_code open(implementation_type& impl,
-      const protocol_type& protocol, asio::error_code& ec)
-  {
-    if (is_open(impl))
-    {
-      ec = asio::error::already_open;
-      return ec;
-    }
-
-    try
-    {
-      impl.socket_ = ref new Windows::Networking::Sockets::StreamSocket;
-      impl.protocol_ = protocol;
-      ec = asio::error_code();
-    }
-    catch (Platform::Exception^ e)
-    {
-      ec = asio::error_code(e->HResult,
-            asio::system_category());
-    }
-
-    return ec;
-  }
-
-  // Assign a native socket to a socket implementation.
-  asio::error_code assign(implementation_type& impl,
-      const protocol_type& protocol, const native_handle_type& native_socket,
-      asio::error_code& ec)
-  {
-    if (is_open(impl))
-    {
-      ec = asio::error::already_open;
-      return ec;
-    }
-
-    impl.socket_ = native_socket;
-    impl.protocol_ = protocol;
-    ec = asio::error_code();
-
-    return ec;
-  }
-
-  // Bind the socket to the specified local endpoint.
-  asio::error_code bind(implementation_type&,
-      const endpoint_type&, asio::error_code& ec)
-  {
-    ec = asio::error::operation_not_supported;
-    return ec;
-  }
-
-  // Get the local endpoint.
-  endpoint_type local_endpoint(const implementation_type& impl,
-      asio::error_code& ec) const
-  {
-    endpoint_type endpoint;
-    endpoint.resize(do_get_endpoint(impl, true,
-          endpoint.data(), endpoint.size(), ec));
-    return endpoint;
-  }
-
-  // Get the remote endpoint.
-  endpoint_type remote_endpoint(const implementation_type& impl,
-      asio::error_code& ec) const
-  {
-    endpoint_type endpoint;
-    endpoint.resize(do_get_endpoint(impl, false,
-          endpoint.data(), endpoint.size(), ec));
-    return endpoint;
-  }
-
-  // Set a socket option.
-  template <typename Option>
-  asio::error_code set_option(implementation_type& impl,
-      const Option& option, asio::error_code& ec)
-  {
-    return do_set_option(impl, option.level(impl.protocol_),
-        option.name(impl.protocol_), option.data(impl.protocol_),
-        option.size(impl.protocol_), ec);
-  }
-
-  // Get a socket option.
-  template <typename Option>
-  asio::error_code get_option(const implementation_type& impl,
-      Option& option, asio::error_code& ec) const
-  {
-    std::size_t size = option.size(impl.protocol_);
-    do_get_option(impl, option.level(impl.protocol_),
-        option.name(impl.protocol_),
-        option.data(impl.protocol_), &size, ec);
-    if (!ec)
-      option.resize(impl.protocol_, size);
-    return ec;
-  }
-
-  // Connect the socket to the specified endpoint.
-  asio::error_code connect(implementation_type& impl,
-      const endpoint_type& peer_endpoint, asio::error_code& ec)
-  {
-    return do_connect(impl, peer_endpoint.data(), ec);
-  }
-
-  // Start an asynchronous connect.
-  template <typename Handler>
-  void async_connect(implementation_type& impl,
-      const endpoint_type& peer_endpoint, Handler& handler)
-  {
-    bool is_continuation =
-      asio_handler_cont_helpers::is_continuation(handler);
-
-    // Allocate and construct an operation to wrap the handler.
-    typedef winrt_socket_connect_op<Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(handler);
-
-    ASIO_HANDLER_CREATION((p.p, "socket", &impl, "async_connect"));
-
-    start_connect_op(impl, peer_endpoint.data(), p.p, is_continuation);
-    p.v = p.p = 0;
-  }
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_WINRT_SSOCKET_SERVICE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/winrt_ssocket_service_base.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/winrt_ssocket_service_base.hpp
deleted file mode 100644
index d290650..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/winrt_ssocket_service_base.hpp
+++ /dev/null
@@ -1,355 +0,0 @@
-//
-// detail/winrt_ssocket_service_base.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WINRT_SSOCKET_SERVICE_BASE_HPP
-#define ASIO_DETAIL_WINRT_SSOCKET_SERVICE_BASE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-
-#include "asio/buffer.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/socket_base.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/winrt_async_manager.hpp"
-#include "asio/detail/winrt_socket_recv_op.hpp"
-#include "asio/detail/winrt_socket_send_op.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class winrt_ssocket_service_base
-{
-public:
-  // The native type of a socket.
-  typedef Windows::Networking::Sockets::StreamSocket^ native_handle_type;
-
-  // The implementation type of the socket.
-  struct base_implementation_type
-  {
-    // Default constructor.
-    base_implementation_type()
-      : socket_(nullptr),
-        next_(0),
-        prev_(0)
-    {
-    }
-
-    // The underlying native socket.
-    native_handle_type socket_;
-
-    // Pointers to adjacent socket implementations in linked list.
-    base_implementation_type* next_;
-    base_implementation_type* prev_;
-  };
-
-  // Constructor.
-  ASIO_DECL winrt_ssocket_service_base(
-      asio::io_service& io_service);
-
-  // Destroy all user-defined handler objects owned by the service.
-  ASIO_DECL void shutdown_service();
-
-  // Construct a new socket implementation.
-  ASIO_DECL void construct(base_implementation_type&);
-
-  // Move-construct a new socket implementation.
-  ASIO_DECL void base_move_construct(base_implementation_type& impl,
-      base_implementation_type& other_impl);
-
-  // Move-assign from another socket implementation.
-  ASIO_DECL void base_move_assign(base_implementation_type& impl,
-      winrt_ssocket_service_base& other_service,
-      base_implementation_type& other_impl);
-
-  // Destroy a socket implementation.
-  ASIO_DECL void destroy(base_implementation_type& impl);
-
-  // Determine whether the socket is open.
-  bool is_open(const base_implementation_type& impl) const
-  {
-    return impl.socket_ != nullptr;
-  }
-
-  // Destroy a socket implementation.
-  ASIO_DECL asio::error_code close(
-      base_implementation_type& impl, asio::error_code& ec);
-
-  // Get the native socket representation.
-  native_handle_type native_handle(base_implementation_type& impl)
-  {
-    return impl.socket_;
-  }
-
-  // Cancel all operations associated with the socket.
-  asio::error_code cancel(base_implementation_type&,
-      asio::error_code& ec)
-  {
-    ec = asio::error::operation_not_supported;
-    return ec;
-  }
-
-  // Determine whether the socket is at the out-of-band data mark.
-  bool at_mark(const base_implementation_type&,
-      asio::error_code& ec) const
-  {
-    ec = asio::error::operation_not_supported;
-    return false;
-  }
-
-  // Determine the number of bytes available for reading.
-  std::size_t available(const base_implementation_type&,
-      asio::error_code& ec) const
-  {
-    ec = asio::error::operation_not_supported;
-    return 0;
-  }
-
-  // Perform an IO control command on the socket.
-  template <typename IO_Control_Command>
-  asio::error_code io_control(base_implementation_type&,
-      IO_Control_Command&, asio::error_code& ec)
-  {
-    ec = asio::error::operation_not_supported;
-    return ec;
-  }
-
-  // Gets the non-blocking mode of the socket.
-  bool non_blocking(const base_implementation_type&) const
-  {
-    return false;
-  }
-
-  // Sets the non-blocking mode of the socket.
-  asio::error_code non_blocking(base_implementation_type&,
-      bool, asio::error_code& ec)
-  {
-    ec = asio::error::operation_not_supported;
-    return ec;
-  }
-
-  // Gets the non-blocking mode of the native socket implementation.
-  bool native_non_blocking(const base_implementation_type&) const
-  {
-    return false;
-  }
-
-  // Sets the non-blocking mode of the native socket implementation.
-  asio::error_code native_non_blocking(base_implementation_type&,
-      bool, asio::error_code& ec)
-  {
-    ec = asio::error::operation_not_supported;
-    return ec;
-  }
-
-  // Disable sends or receives on the socket.
-  asio::error_code shutdown(base_implementation_type&,
-      socket_base::shutdown_type, asio::error_code& ec)
-  {
-    ec = asio::error::operation_not_supported;
-    return ec;
-  }
-
-  // Send the given data to the peer.
-  template <typename ConstBufferSequence>
-  std::size_t send(base_implementation_type& impl,
-      const ConstBufferSequence& buffers,
-      socket_base::message_flags flags, asio::error_code& ec)
-  {
-    return do_send(impl,
-        buffer_sequence_adapter<asio::const_buffer,
-          ConstBufferSequence>::first(buffers), flags, ec);
-  }
-
-  // Wait until data can be sent without blocking.
-  std::size_t send(base_implementation_type&, const null_buffers&,
-      socket_base::message_flags, asio::error_code& ec)
-  {
-    ec = asio::error::operation_not_supported;
-    return 0;
-  }
-
-  // Start an asynchronous send. The data being sent must be valid for the
-  // lifetime of the asynchronous operation.
-  template <typename ConstBufferSequence, typename Handler>
-  void async_send(base_implementation_type& impl,
-      const ConstBufferSequence& buffers,
-      socket_base::message_flags flags, Handler& handler)
-  {
-    bool is_continuation =
-      asio_handler_cont_helpers::is_continuation(handler);
-
-    // Allocate and construct an operation to wrap the handler.
-    typedef winrt_socket_send_op<ConstBufferSequence, Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(buffers, handler);
-
-    ASIO_HANDLER_CREATION((p.p, "socket", &impl, "async_send"));
-
-    start_send_op(impl,
-        buffer_sequence_adapter<asio::const_buffer,
-          ConstBufferSequence>::first(buffers),
-        flags, p.p, is_continuation);
-    p.v = p.p = 0;
-  }
-
-  // Start an asynchronous wait until data can be sent without blocking.
-  template <typename Handler>
-  void async_send(base_implementation_type&, const null_buffers&,
-      socket_base::message_flags, Handler& handler)
-  {
-    asio::error_code ec = asio::error::operation_not_supported;
-    const std::size_t bytes_transferred = 0;
-    io_service_.get_io_service().post(
-        detail::bind_handler(handler, ec, bytes_transferred));
-  }
-
-  // Receive some data from the peer. Returns the number of bytes received.
-  template <typename MutableBufferSequence>
-  std::size_t receive(base_implementation_type& impl,
-      const MutableBufferSequence& buffers,
-      socket_base::message_flags flags, asio::error_code& ec)
-  {
-    return do_receive(impl,
-        buffer_sequence_adapter<asio::mutable_buffer,
-          MutableBufferSequence>::first(buffers), flags, ec);
-  }
-
-  // Wait until data can be received without blocking.
-  std::size_t receive(base_implementation_type&, const null_buffers&,
-      socket_base::message_flags, asio::error_code& ec)
-  {
-    ec = asio::error::operation_not_supported;
-    return 0;
-  }
-
-  // Start an asynchronous receive. The buffer for the data being received
-  // must be valid for the lifetime of the asynchronous operation.
-  template <typename MutableBufferSequence, typename Handler>
-  void async_receive(base_implementation_type& impl,
-      const MutableBufferSequence& buffers,
-      socket_base::message_flags flags, Handler& handler)
-  {
-    bool is_continuation =
-      asio_handler_cont_helpers::is_continuation(handler);
-
-    // Allocate and construct an operation to wrap the handler.
-    typedef winrt_socket_recv_op<MutableBufferSequence, Handler> op;
-    typename op::ptr p = { asio::detail::addressof(handler),
-      asio_handler_alloc_helpers::allocate(
-        sizeof(op), handler), 0 };
-    p.p = new (p.v) op(buffers, handler);
-
-    ASIO_HANDLER_CREATION((p.p, "socket", &impl, "async_receive"));
-
-    start_receive_op(impl,
-        buffer_sequence_adapter<asio::mutable_buffer,
-          MutableBufferSequence>::first(buffers),
-        flags, p.p, is_continuation);
-    p.v = p.p = 0;
-  }
-
-  // Wait until data can be received without blocking.
-  template <typename Handler>
-  void async_receive(base_implementation_type&, const null_buffers&,
-      socket_base::message_flags, Handler& handler)
-  {
-    asio::error_code ec = asio::error::operation_not_supported;
-    const std::size_t bytes_transferred = 0;
-    io_service_.get_io_service().post(
-        detail::bind_handler(handler, ec, bytes_transferred));
-  }
-
-protected:
-  // Helper function to obtain endpoints associated with the connection.
-  ASIO_DECL std::size_t do_get_endpoint(
-      const base_implementation_type& impl, bool local,
-      void* addr, std::size_t addr_len, asio::error_code& ec) const;
-
-  // Helper function to set a socket option.
-  ASIO_DECL asio::error_code do_set_option(
-      base_implementation_type& impl,
-      int level, int optname, const void* optval,
-      std::size_t optlen, asio::error_code& ec);
-
-  // Helper function to get a socket option.
-  ASIO_DECL void do_get_option(
-      const base_implementation_type& impl,
-      int level, int optname, void* optval,
-      std::size_t* optlen, asio::error_code& ec) const;
-
-  // Helper function to perform a synchronous connect.
-  ASIO_DECL asio::error_code do_connect(
-      base_implementation_type& impl,
-      const void* addr, asio::error_code& ec);
-
-  // Helper function to start an asynchronous connect.
-  ASIO_DECL void start_connect_op(
-      base_implementation_type& impl, const void* addr,
-      winrt_async_op<void>* op, bool is_continuation);
-
-  // Helper function to perform a synchronous send.
-  ASIO_DECL std::size_t do_send(
-      base_implementation_type& impl, const asio::const_buffer& data,
-      socket_base::message_flags flags, asio::error_code& ec);
-
-  // Helper function to start an asynchronous send.
-  ASIO_DECL void start_send_op(base_implementation_type& impl,
-      const asio::const_buffer& data, socket_base::message_flags flags,
-      winrt_async_op<unsigned int>* op, bool is_continuation);
-
-  // Helper function to perform a synchronous receive.
-  ASIO_DECL std::size_t do_receive(
-      base_implementation_type& impl, const asio::mutable_buffer& data,
-      socket_base::message_flags flags, asio::error_code& ec);
-
-  // Helper function to start an asynchronous receive.
-  ASIO_DECL void start_receive_op(base_implementation_type& impl,
-      const asio::mutable_buffer& data, socket_base::message_flags flags,
-      winrt_async_op<Windows::Storage::Streams::IBuffer^>* op,
-      bool is_continuation);
-
-  // The io_service implementation used for delivering completions.
-  io_service_impl& io_service_;
-
-  // The manager that keeps track of outstanding operations.
-  winrt_async_manager& async_manager_;
-
-  // Mutex to protect access to the linked list of implementations. 
-  asio::detail::mutex mutex_;
-
-  // The head of a linked list of all implementations.
-  base_implementation_type* impl_list_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/winrt_ssocket_service_base.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_WINRT_SSOCKET_SERVICE_BASE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/winrt_timer_scheduler.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/winrt_timer_scheduler.hpp
deleted file mode 100644
index 86d8700..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/winrt_timer_scheduler.hpp
+++ /dev/null
@@ -1,131 +0,0 @@
-//
-// detail/winrt_timer_scheduler.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WINRT_TIMER_SCHEDULER_HPP
-#define ASIO_DETAIL_WINRT_TIMER_SCHEDULER_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-
-#include <cstddef>
-#include "asio/detail/event.hpp"
-#include "asio/detail/limits.hpp"
-#include "asio/detail/mutex.hpp"
-#include "asio/detail/op_queue.hpp"
-#include "asio/detail/thread.hpp"
-#include "asio/detail/timer_queue_base.hpp"
-#include "asio/detail/timer_queue_set.hpp"
-#include "asio/detail/wait_op.hpp"
-#include "asio/io_service.hpp"
-
-#if defined(ASIO_HAS_IOCP)
-# include "asio/detail/thread.hpp"
-#endif // defined(ASIO_HAS_IOCP)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class winrt_timer_scheduler
-  : public asio::detail::service_base<winrt_timer_scheduler>
-{
-public:
-  // Constructor.
-  ASIO_DECL winrt_timer_scheduler(asio::io_service& io_service);
-
-  // Destructor.
-  ASIO_DECL ~winrt_timer_scheduler();
-
-  // Destroy all user-defined handler objects owned by the service.
-  ASIO_DECL void shutdown_service();
-
-  // Recreate internal descriptors following a fork.
-  ASIO_DECL void fork_service(
-      asio::io_service::fork_event fork_ev);
-
-  // Initialise the task. No effect as this class uses its own thread.
-  ASIO_DECL void init_task();
-
-  // Add a new timer queue to the reactor.
-  template <typename Time_Traits>
-  void add_timer_queue(timer_queue<Time_Traits>& queue);
-
-  // Remove a timer queue from the reactor.
-  template <typename Time_Traits>
-  void remove_timer_queue(timer_queue<Time_Traits>& queue);
-
-  // Schedule a new operation in the given timer queue to expire at the
-  // specified absolute time.
-  template <typename Time_Traits>
-  void schedule_timer(timer_queue<Time_Traits>& queue,
-      const typename Time_Traits::time_type& time,
-      typename timer_queue<Time_Traits>::per_timer_data& timer, wait_op* op);
-
-  // Cancel the timer operations associated with the given token. Returns the
-  // number of operations that have been posted or dispatched.
-  template <typename Time_Traits>
-  std::size_t cancel_timer(timer_queue<Time_Traits>& queue,
-      typename timer_queue<Time_Traits>::per_timer_data& timer,
-      std::size_t max_cancelled = (std::numeric_limits<std::size_t>::max)());
-
-private:
-  // Run the select loop in the thread.
-  ASIO_DECL void run_thread();
-
-  // Entry point for the select loop thread.
-  ASIO_DECL static void call_run_thread(winrt_timer_scheduler* reactor);
-
-  // Helper function to add a new timer queue.
-  ASIO_DECL void do_add_timer_queue(timer_queue_base& queue);
-
-  // Helper function to remove a timer queue.
-  ASIO_DECL void do_remove_timer_queue(timer_queue_base& queue);
-
-  // The io_service implementation used to post completions.
-  io_service_impl& io_service_;
-
-  // Mutex used to protect internal variables.
-  asio::detail::mutex mutex_;
-
-  // Event used to wake up background thread.
-  asio::detail::event event_;
-
-  // The timer queues.
-  timer_queue_set timer_queues_;
-
-  // The background thread that is waiting for timers to expire.
-  asio::detail::thread* thread_;
-
-  // Does the background thread need to stop.
-  bool stop_thread_;
-
-  // Whether the service has been shut down.
-  bool shutdown_;
-};
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/detail/impl/winrt_timer_scheduler.hpp"
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/winrt_timer_scheduler.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_WINRT_TIMER_SCHEDULER_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/winrt_utils.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/winrt_utils.hpp
deleted file mode 100644
index cee6326..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/winrt_utils.hpp
+++ /dev/null
@@ -1,106 +0,0 @@
-//
-// detail/winrt_utils.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WINRT_UTILS_HPP
-#define ASIO_DETAIL_WINRT_UTILS_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-
-#include <codecvt>
-#include <cstdlib>
-#include <future>
-#include <locale>
-#include <memory>
-#include <robuffer.h>
-#include <windows.storage.streams.h>
-#include <wrl/implements.h>
-#include "asio/buffer.hpp"
-#include "asio/error_code.hpp"
-#include "asio/detail/addressof.hpp"
-#include "asio/detail/socket_ops.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-namespace winrt_utils {
-
-inline Platform::String^ string(const char* from)
-{
-  std::wstring tmp(from, from + std::strlen(from));
-  return ref new Platform::String(tmp.c_str());
-}
-
-inline Platform::String^ string(const std::string& from)
-{
-  std::wstring tmp(from.begin(), from.end());
-  return ref new Platform::String(tmp.c_str());
-}
-
-inline std::string string(Platform::String^ from)
-{
-  std::wstring_convert<std::codecvt_utf8<wchar_t>> converter;
-  return converter.to_bytes(from->Data());
-}
-
-inline Platform::String^ string(unsigned short from)
-{
-  return string(std::to_string(from));
-}
-
-template <typename T>
-inline Platform::String^ string(const T& from)
-{
-  return string(from.to_string());
-}
-
-inline int integer(Platform::String^ from)
-{
-  return _wtoi(from->Data());
-}
-
-template <typename T>
-inline Windows::Networking::HostName^ host_name(const T& from)
-{
-  return ref new Windows::Networking::HostName((string)(from));
-}
-
-template <typename ConstBufferSequence>
-inline Windows::Storage::Streams::IBuffer^ buffer_dup(
-    const ConstBufferSequence& buffers)
-{
-  using Microsoft::WRL::ComPtr;
-  std::size_t size = asio::buffer_size(buffers);
-  auto b = ref new Windows::Storage::Streams::Buffer(size);
-  ComPtr<IInspectable> insp = reinterpret_cast<IInspectable*>(b);
-  ComPtr<Windows::Storage::Streams::IBufferByteAccess> bacc;
-  insp.As(&bacc);
-  byte* bytes = nullptr;
-  bacc->Buffer(&bytes);
-  asio::buffer_copy(asio::buffer(bytes, size), buffers);
-  b->Length = size;
-  return b;
-}
-
-} // namespace winrt_utils
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-
-#endif // ASIO_DETAIL_WINRT_UTILS_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/winsock_init.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/winsock_init.hpp
deleted file mode 100644
index 425c9d6..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/winsock_init.hpp
+++ /dev/null
@@ -1,128 +0,0 @@
-//
-// detail/winsock_init.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WINSOCK_INIT_HPP
-#define ASIO_DETAIL_WINSOCK_INIT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class winsock_init_base
-{
-protected:
-  // Structure to track result of initialisation and number of uses. POD is used
-  // to ensure that the values are zero-initialised prior to any code being run.
-  struct data
-  {
-    long init_count_;
-    long result_;
-  };
-
-  ASIO_DECL static void startup(data& d,
-      unsigned char major, unsigned char minor);
-
-  ASIO_DECL static void manual_startup(data& d);
-
-  ASIO_DECL static void cleanup(data& d);
-
-  ASIO_DECL static void manual_cleanup(data& d);
-
-  ASIO_DECL static void throw_on_error(data& d);
-};
-
-template <int Major = 2, int Minor = 0>
-class winsock_init : private winsock_init_base
-{
-public:
-  winsock_init(bool allow_throw = true)
-  {
-    startup(data_, Major, Minor);
-    if (allow_throw)
-      throw_on_error(data_);
-  }
-
-  winsock_init(const winsock_init&)
-  {
-    startup(data_, Major, Minor);
-    throw_on_error(data_);
-  }
-
-  ~winsock_init()
-  {
-    cleanup(data_);
-  }
-
-  // This class may be used to indicate that user code will manage Winsock
-  // initialisation and cleanup. This may be required in the case of a DLL, for
-  // example, where it is not safe to initialise Winsock from global object
-  // constructors.
-  //
-  // To prevent asio from initialising Winsock, the object must be constructed
-  // before any Asio's own global objects. With MSVC, this may be accomplished
-  // by adding the following code to the DLL:
-  //
-  //   #pragma warning(push)
-  //   #pragma warning(disable:4073)
-  //   #pragma init_seg(lib)
-  //   asio::detail::winsock_init<>::manual manual_winsock_init;
-  //   #pragma warning(pop)
-  class manual
-  {
-  public:
-    manual()
-    {
-      manual_startup(data_);
-    }
-
-    manual(const manual&)
-    {
-      manual_startup(data_);
-    }
-
-    ~manual()
-    {
-      manual_cleanup(data_);
-    }
-  };
-
-private:
-  friend class manual;
-  static data data_;
-};
-
-template <int Major, int Minor>
-winsock_init_base::data winsock_init<Major, Minor>::data_;
-
-// Static variable to ensure that winsock is initialised before main, and
-// therefore before any other threads can get started.
-static const winsock_init<>& winsock_init_instance = winsock_init<>(false);
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/detail/impl/winsock_init.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-
-#endif // ASIO_DETAIL_WINSOCK_INIT_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/wrapped_handler.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/wrapped_handler.hpp
deleted file mode 100644
index 1b8edf7..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/detail/wrapped_handler.hpp
+++ /dev/null
@@ -1,291 +0,0 @@
-//
-// detail/wrapped_handler.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_DETAIL_WRAPPED_HANDLER_HPP
-#define ASIO_DETAIL_WRAPPED_HANDLER_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_cont_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-struct is_continuation_delegated
-{
-  template <typename Dispatcher, typename Handler>
-  bool operator()(Dispatcher&, Handler& handler) const
-  {
-    return asio_handler_cont_helpers::is_continuation(handler);
-  }
-};
-
-struct is_continuation_if_running
-{
-  template <typename Dispatcher, typename Handler>
-  bool operator()(Dispatcher& dispatcher, Handler&) const
-  {
-    return dispatcher.running_in_this_thread();
-  }
-};
-
-template <typename Dispatcher, typename Handler,
-    typename IsContinuation = is_continuation_delegated>
-class wrapped_handler
-{
-public:
-  typedef void result_type;
-
-  wrapped_handler(Dispatcher dispatcher, Handler& handler)
-    : dispatcher_(dispatcher),
-      handler_(ASIO_MOVE_CAST(Handler)(handler))
-  {
-  }
-
-#if defined(ASIO_HAS_MOVE)
-  wrapped_handler(const wrapped_handler& other)
-    : dispatcher_(other.dispatcher_),
-      handler_(other.handler_)
-  {
-  }
-
-  wrapped_handler(wrapped_handler&& other)
-    : dispatcher_(other.dispatcher_),
-      handler_(ASIO_MOVE_CAST(Handler)(other.handler_))
-  {
-  }
-#endif // defined(ASIO_HAS_MOVE)
-
-  void operator()()
-  {
-    dispatcher_.dispatch(ASIO_MOVE_CAST(Handler)(handler_));
-  }
-
-  void operator()() const
-  {
-    dispatcher_.dispatch(handler_);
-  }
-
-  template <typename Arg1>
-  void operator()(const Arg1& arg1)
-  {
-    dispatcher_.dispatch(detail::bind_handler(handler_, arg1));
-  }
-
-  template <typename Arg1>
-  void operator()(const Arg1& arg1) const
-  {
-    dispatcher_.dispatch(detail::bind_handler(handler_, arg1));
-  }
-
-  template <typename Arg1, typename Arg2>
-  void operator()(const Arg1& arg1, const Arg2& arg2)
-  {
-    dispatcher_.dispatch(detail::bind_handler(handler_, arg1, arg2));
-  }
-
-  template <typename Arg1, typename Arg2>
-  void operator()(const Arg1& arg1, const Arg2& arg2) const
-  {
-    dispatcher_.dispatch(detail::bind_handler(handler_, arg1, arg2));
-  }
-
-  template <typename Arg1, typename Arg2, typename Arg3>
-  void operator()(const Arg1& arg1, const Arg2& arg2, const Arg3& arg3)
-  {
-    dispatcher_.dispatch(detail::bind_handler(handler_, arg1, arg2, arg3));
-  }
-
-  template <typename Arg1, typename Arg2, typename Arg3>
-  void operator()(const Arg1& arg1, const Arg2& arg2, const Arg3& arg3) const
-  {
-    dispatcher_.dispatch(detail::bind_handler(handler_, arg1, arg2, arg3));
-  }
-
-  template <typename Arg1, typename Arg2, typename Arg3, typename Arg4>
-  void operator()(const Arg1& arg1, const Arg2& arg2, const Arg3& arg3,
-      const Arg4& arg4)
-  {
-    dispatcher_.dispatch(
-        detail::bind_handler(handler_, arg1, arg2, arg3, arg4));
-  }
-
-  template <typename Arg1, typename Arg2, typename Arg3, typename Arg4>
-  void operator()(const Arg1& arg1, const Arg2& arg2, const Arg3& arg3,
-      const Arg4& arg4) const
-  {
-    dispatcher_.dispatch(
-        detail::bind_handler(handler_, arg1, arg2, arg3, arg4));
-  }
-
-  template <typename Arg1, typename Arg2, typename Arg3, typename Arg4,
-      typename Arg5>
-  void operator()(const Arg1& arg1, const Arg2& arg2, const Arg3& arg3,
-      const Arg4& arg4, const Arg5& arg5)
-  {
-    dispatcher_.dispatch(
-        detail::bind_handler(handler_, arg1, arg2, arg3, arg4, arg5));
-  }
-
-  template <typename Arg1, typename Arg2, typename Arg3, typename Arg4,
-      typename Arg5>
-  void operator()(const Arg1& arg1, const Arg2& arg2, const Arg3& arg3,
-      const Arg4& arg4, const Arg5& arg5) const
-  {
-    dispatcher_.dispatch(
-        detail::bind_handler(handler_, arg1, arg2, arg3, arg4, arg5));
-  }
-
-//private:
-  Dispatcher dispatcher_;
-  Handler handler_;
-};
-
-template <typename Handler, typename Context>
-class rewrapped_handler
-{
-public:
-  explicit rewrapped_handler(Handler& handler, const Context& context)
-    : context_(context),
-      handler_(ASIO_MOVE_CAST(Handler)(handler))
-  {
-  }
-
-  explicit rewrapped_handler(const Handler& handler, const Context& context)
-    : context_(context),
-      handler_(handler)
-  {
-  }
-
-#if defined(ASIO_HAS_MOVE)
-  rewrapped_handler(const rewrapped_handler& other)
-    : context_(other.context_),
-      handler_(other.handler_)
-  {
-  }
-
-  rewrapped_handler(rewrapped_handler&& other)
-    : context_(ASIO_MOVE_CAST(Context)(other.context_)),
-      handler_(ASIO_MOVE_CAST(Handler)(other.handler_))
-  {
-  }
-#endif // defined(ASIO_HAS_MOVE)
-
-  void operator()()
-  {
-    handler_();
-  }
-
-  void operator()() const
-  {
-    handler_();
-  }
-
-//private:
-  Context context_;
-  Handler handler_;
-};
-
-template <typename Dispatcher, typename Handler, typename IsContinuation>
-inline void* asio_handler_allocate(std::size_t size,
-    wrapped_handler<Dispatcher, Handler, IsContinuation>* this_handler)
-{
-  return asio_handler_alloc_helpers::allocate(
-      size, this_handler->handler_);
-}
-
-template <typename Dispatcher, typename Handler, typename IsContinuation>
-inline void asio_handler_deallocate(void* pointer, std::size_t size,
-    wrapped_handler<Dispatcher, Handler, IsContinuation>* this_handler)
-{
-  asio_handler_alloc_helpers::deallocate(
-      pointer, size, this_handler->handler_);
-}
-
-template <typename Dispatcher, typename Handler, typename IsContinuation>
-inline bool asio_handler_is_continuation(
-    wrapped_handler<Dispatcher, Handler, IsContinuation>* this_handler)
-{
-  return IsContinuation()(this_handler->dispatcher_, this_handler->handler_);
-}
-
-template <typename Function, typename Dispatcher,
-    typename Handler, typename IsContinuation>
-inline void asio_handler_invoke(Function& function,
-    wrapped_handler<Dispatcher, Handler, IsContinuation>* this_handler)
-{
-  this_handler->dispatcher_.dispatch(
-      rewrapped_handler<Function, Handler>(
-        function, this_handler->handler_));
-}
-
-template <typename Function, typename Dispatcher,
-    typename Handler, typename IsContinuation>
-inline void asio_handler_invoke(const Function& function,
-    wrapped_handler<Dispatcher, Handler, IsContinuation>* this_handler)
-{
-  this_handler->dispatcher_.dispatch(
-      rewrapped_handler<Function, Handler>(
-        function, this_handler->handler_));
-}
-
-template <typename Handler, typename Context>
-inline void* asio_handler_allocate(std::size_t size,
-    rewrapped_handler<Handler, Context>* this_handler)
-{
-  return asio_handler_alloc_helpers::allocate(
-      size, this_handler->context_);
-}
-
-template <typename Handler, typename Context>
-inline void asio_handler_deallocate(void* pointer, std::size_t size,
-    rewrapped_handler<Handler, Context>* this_handler)
-{
-  asio_handler_alloc_helpers::deallocate(
-      pointer, size, this_handler->context_);
-}
-
-template <typename Dispatcher, typename Context>
-inline bool asio_handler_is_continuation(
-    rewrapped_handler<Dispatcher, Context>* this_handler)
-{
-  return asio_handler_cont_helpers::is_continuation(
-      this_handler->context_);
-}
-
-template <typename Function, typename Handler, typename Context>
-inline void asio_handler_invoke(Function& function,
-    rewrapped_handler<Handler, Context>* this_handler)
-{
-  asio_handler_invoke_helpers::invoke(
-      function, this_handler->context_);
-}
-
-template <typename Function, typename Handler, typename Context>
-inline void asio_handler_invoke(const Function& function,
-    rewrapped_handler<Handler, Context>* this_handler)
-{
-  asio_handler_invoke_helpers::invoke(
-      function, this_handler->context_);
-}
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_DETAIL_WRAPPED_HANDLER_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/error.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/error.hpp
deleted file mode 100644
index bc63631..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/error.hpp
+++ /dev/null
@@ -1,336 +0,0 @@
-//
-// error.hpp
-// ~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_ERROR_HPP
-#define ASIO_ERROR_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/error_code.hpp"
-#include "asio/system_error.hpp"
-#if defined(ASIO_WINDOWS) \
-  || defined(__CYGWIN__) \
-  || defined(ASIO_WINDOWS_RUNTIME)
-# include <winerror.h>
-#else
-# include <cerrno>
-# include <netdb.h>
-#endif
-
-#if defined(GENERATING_DOCUMENTATION)
-/// INTERNAL ONLY.
-# define ASIO_NATIVE_ERROR(e) implementation_defined
-/// INTERNAL ONLY.
-# define ASIO_SOCKET_ERROR(e) implementation_defined
-/// INTERNAL ONLY.
-# define ASIO_NETDB_ERROR(e) implementation_defined
-/// INTERNAL ONLY.
-# define ASIO_GETADDRINFO_ERROR(e) implementation_defined
-/// INTERNAL ONLY.
-# define ASIO_WIN_OR_POSIX(e_win, e_posix) implementation_defined
-#elif defined(ASIO_WINDOWS_RUNTIME)
-# define ASIO_NATIVE_ERROR(e) __HRESULT_FROM_WIN32(e)
-# define ASIO_SOCKET_ERROR(e) __HRESULT_FROM_WIN32(WSA ## e)
-# define ASIO_NETDB_ERROR(e) __HRESULT_FROM_WIN32(WSA ## e)
-# define ASIO_GETADDRINFO_ERROR(e) __HRESULT_FROM_WIN32(WSA ## e)
-# define ASIO_WIN_OR_POSIX(e_win, e_posix) e_win
-#elif defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-# define ASIO_NATIVE_ERROR(e) e
-# define ASIO_SOCKET_ERROR(e) WSA ## e
-# define ASIO_NETDB_ERROR(e) WSA ## e
-# define ASIO_GETADDRINFO_ERROR(e) WSA ## e
-# define ASIO_WIN_OR_POSIX(e_win, e_posix) e_win
-#else
-# define ASIO_NATIVE_ERROR(e) e
-# define ASIO_SOCKET_ERROR(e) e
-# define ASIO_NETDB_ERROR(e) e
-# define ASIO_GETADDRINFO_ERROR(e) e
-# define ASIO_WIN_OR_POSIX(e_win, e_posix) e_posix
-#endif
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace error {
-
-enum basic_errors
-{
-  /// Permission denied.
-  access_denied = ASIO_SOCKET_ERROR(EACCES),
-
-  /// Address family not supported by protocol.
-  address_family_not_supported = ASIO_SOCKET_ERROR(EAFNOSUPPORT),
-
-  /// Address already in use.
-  address_in_use = ASIO_SOCKET_ERROR(EADDRINUSE),
-
-  /// Transport endpoint is already connected.
-  already_connected = ASIO_SOCKET_ERROR(EISCONN),
-
-  /// Operation already in progress.
-  already_started = ASIO_SOCKET_ERROR(EALREADY),
-
-  /// Broken pipe.
-  broken_pipe = ASIO_WIN_OR_POSIX(
-      ASIO_NATIVE_ERROR(ERROR_BROKEN_PIPE),
-      ASIO_NATIVE_ERROR(EPIPE)),
-
-  /// A connection has been aborted.
-  connection_aborted = ASIO_SOCKET_ERROR(ECONNABORTED),
-
-  /// Connection refused.
-  connection_refused = ASIO_SOCKET_ERROR(ECONNREFUSED),
-
-  /// Connection reset by peer.
-  connection_reset = ASIO_SOCKET_ERROR(ECONNRESET),
-
-  /// Bad file descriptor.
-  bad_descriptor = ASIO_SOCKET_ERROR(EBADF),
-
-  /// Bad address.
-  fault = ASIO_SOCKET_ERROR(EFAULT),
-
-  /// No route to host.
-  host_unreachable = ASIO_SOCKET_ERROR(EHOSTUNREACH),
-
-  /// Operation now in progress.
-  in_progress = ASIO_SOCKET_ERROR(EINPROGRESS),
-
-  /// Interrupted system call.
-  interrupted = ASIO_SOCKET_ERROR(EINTR),
-
-  /// Invalid argument.
-  invalid_argument = ASIO_SOCKET_ERROR(EINVAL),
-
-  /// Message too long.
-  message_size = ASIO_SOCKET_ERROR(EMSGSIZE),
-
-  /// The name was too long.
-  name_too_long = ASIO_SOCKET_ERROR(ENAMETOOLONG),
-
-  /// Network is down.
-  network_down = ASIO_SOCKET_ERROR(ENETDOWN),
-
-  /// Network dropped connection on reset.
-  network_reset = ASIO_SOCKET_ERROR(ENETRESET),
-
-  /// Network is unreachable.
-  network_unreachable = ASIO_SOCKET_ERROR(ENETUNREACH),
-
-  /// Too many open files.
-  no_descriptors = ASIO_SOCKET_ERROR(EMFILE),
-
-  /// No buffer space available.
-  no_buffer_space = ASIO_SOCKET_ERROR(ENOBUFS),
-
-  /// Cannot allocate memory.
-  no_memory = ASIO_WIN_OR_POSIX(
-      ASIO_NATIVE_ERROR(ERROR_OUTOFMEMORY),
-      ASIO_NATIVE_ERROR(ENOMEM)),
-
-  /// Operation not permitted.
-  no_permission = ASIO_WIN_OR_POSIX(
-      ASIO_NATIVE_ERROR(ERROR_ACCESS_DENIED),
-      ASIO_NATIVE_ERROR(EPERM)),
-
-  /// Protocol not available.
-  no_protocol_option = ASIO_SOCKET_ERROR(ENOPROTOOPT),
-
-  /// No such device.
-  no_such_device = ASIO_WIN_OR_POSIX(
-      ASIO_NATIVE_ERROR(ERROR_BAD_UNIT),
-      ASIO_NATIVE_ERROR(ENODEV)),
-
-  /// Transport endpoint is not connected.
-  not_connected = ASIO_SOCKET_ERROR(ENOTCONN),
-
-  /// Socket operation on non-socket.
-  not_socket = ASIO_SOCKET_ERROR(ENOTSOCK),
-
-  /// Operation cancelled.
-  operation_aborted = ASIO_WIN_OR_POSIX(
-      ASIO_NATIVE_ERROR(ERROR_OPERATION_ABORTED),
-      ASIO_NATIVE_ERROR(ECANCELED)),
-
-  /// Operation not supported.
-  operation_not_supported = ASIO_SOCKET_ERROR(EOPNOTSUPP),
-
-  /// Cannot send after transport endpoint shutdown.
-  shut_down = ASIO_SOCKET_ERROR(ESHUTDOWN),
-
-  /// Connection timed out.
-  timed_out = ASIO_SOCKET_ERROR(ETIMEDOUT),
-
-  /// Resource temporarily unavailable.
-  try_again = ASIO_WIN_OR_POSIX(
-      ASIO_NATIVE_ERROR(ERROR_RETRY),
-      ASIO_NATIVE_ERROR(EAGAIN)),
-
-  /// The socket is marked non-blocking and the requested operation would block.
-  would_block = ASIO_SOCKET_ERROR(EWOULDBLOCK)
-};
-
-enum netdb_errors
-{
-  /// Host not found (authoritative).
-  host_not_found = ASIO_NETDB_ERROR(HOST_NOT_FOUND),
-
-  /// Host not found (non-authoritative).
-  host_not_found_try_again = ASIO_NETDB_ERROR(TRY_AGAIN),
-
-  /// The query is valid but does not have associated address data.
-  no_data = ASIO_NETDB_ERROR(NO_DATA),
-
-  /// A non-recoverable error occurred.
-  no_recovery = ASIO_NETDB_ERROR(NO_RECOVERY)
-};
-
-enum addrinfo_errors
-{
-  /// The service is not supported for the given socket type.
-  service_not_found = ASIO_WIN_OR_POSIX(
-      ASIO_NATIVE_ERROR(WSATYPE_NOT_FOUND),
-      ASIO_GETADDRINFO_ERROR(EAI_SERVICE)),
-
-  /// The socket type is not supported.
-  socket_type_not_supported = ASIO_WIN_OR_POSIX(
-      ASIO_NATIVE_ERROR(WSAESOCKTNOSUPPORT),
-      ASIO_GETADDRINFO_ERROR(EAI_SOCKTYPE))
-};
-
-enum misc_errors
-{
-  /// Already open.
-  already_open = 1,
-
-  /// End of file or stream.
-  eof,
-
-  /// Element not found.
-  not_found,
-
-  /// The descriptor cannot fit into the select system call's fd_set.
-  fd_set_failure
-};
-
-inline const asio::error_category& get_system_category()
-{
-  return asio::system_category();
-}
-
-#if !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-
-extern ASIO_DECL
-const asio::error_category& get_netdb_category();
-
-extern ASIO_DECL
-const asio::error_category& get_addrinfo_category();
-
-#else // !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-
-inline const asio::error_category& get_netdb_category()
-{
-  return get_system_category();
-}
-
-inline const asio::error_category& get_addrinfo_category()
-{
-  return get_system_category();
-}
-
-#endif // !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-
-extern ASIO_DECL
-const asio::error_category& get_misc_category();
-
-static const asio::error_category& system_category
-  = asio::error::get_system_category();
-static const asio::error_category& netdb_category
-  = asio::error::get_netdb_category();
-static const asio::error_category& addrinfo_category
-  = asio::error::get_addrinfo_category();
-static const asio::error_category& misc_category
-  = asio::error::get_misc_category();
-
-} // namespace error
-} // namespace asio
-
-#if defined(ASIO_HAS_STD_SYSTEM_ERROR)
-namespace std {
-
-template<> struct is_error_code_enum<asio::error::basic_errors>
-{
-  static const bool value = true;
-};
-
-template<> struct is_error_code_enum<asio::error::netdb_errors>
-{
-  static const bool value = true;
-};
-
-template<> struct is_error_code_enum<asio::error::addrinfo_errors>
-{
-  static const bool value = true;
-};
-
-template<> struct is_error_code_enum<asio::error::misc_errors>
-{
-  static const bool value = true;
-};
-
-} // namespace std
-#endif // defined(ASIO_HAS_STD_SYSTEM_ERROR)
-
-namespace asio {
-namespace error {
-
-inline asio::error_code make_error_code(basic_errors e)
-{
-  return asio::error_code(
-      static_cast<int>(e), get_system_category());
-}
-
-inline asio::error_code make_error_code(netdb_errors e)
-{
-  return asio::error_code(
-      static_cast<int>(e), get_netdb_category());
-}
-
-inline asio::error_code make_error_code(addrinfo_errors e)
-{
-  return asio::error_code(
-      static_cast<int>(e), get_addrinfo_category());
-}
-
-inline asio::error_code make_error_code(misc_errors e)
-{
-  return asio::error_code(
-      static_cast<int>(e), get_misc_category());
-}
-
-} // namespace error
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#undef ASIO_NATIVE_ERROR
-#undef ASIO_SOCKET_ERROR
-#undef ASIO_NETDB_ERROR
-#undef ASIO_GETADDRINFO_ERROR
-#undef ASIO_WIN_OR_POSIX
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/impl/error.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_ERROR_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/error_code.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/error_code.hpp
deleted file mode 100644
index 01248f3..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/error_code.hpp
+++ /dev/null
@@ -1,188 +0,0 @@
-//
-// error_code.hpp
-// ~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_ERROR_CODE_HPP
-#define ASIO_ERROR_CODE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_STD_SYSTEM_ERROR)
-# include <system_error>
-#else // defined(ASIO_HAS_STD_SYSTEM_ERROR)
-# include <string>
-# include "asio/detail/noncopyable.hpp"
-# if !defined(ASIO_NO_IOSTREAM)
-#  include <iosfwd>
-# endif // !defined(ASIO_NO_IOSTREAM)
-#endif // defined(ASIO_HAS_STD_SYSTEM_ERROR)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-#if defined(ASIO_HAS_STD_SYSTEM_ERROR)
-
-typedef std::error_category error_category;
-
-#else // defined(ASIO_HAS_STD_SYSTEM_ERROR)
-
-/// Base class for all error categories.
-class error_category : private noncopyable
-{
-public:
-  /// Destructor.
-  virtual ~error_category()
-  {
-  }
-
-  /// Returns a string naming the error gategory.
-  virtual const char* name() const = 0;
-
-  /// Returns a string describing the error denoted by @c value.
-  virtual std::string message(int value) const = 0;
-
-  /// Equality operator to compare two error categories.
-  bool operator==(const error_category& rhs) const
-  {
-    return this == &rhs;
-  }
-
-  /// Inequality operator to compare two error categories.
-  bool operator!=(const error_category& rhs) const
-  {
-    return !(*this == rhs);
-  }
-};
-
-#endif // defined(ASIO_HAS_STD_SYSTEM_ERROR)
-
-/// Returns the error category used for the system errors produced by asio.
-extern ASIO_DECL const error_category& system_category();
-
-#if defined(ASIO_HAS_STD_SYSTEM_ERROR)
-
-typedef std::error_code error_code;
-
-#else // defined(ASIO_HAS_STD_SYSTEM_ERROR)
-
-/// Class to represent an error code value.
-class error_code
-{
-public:
-  /// Default constructor.
-  error_code()
-    : value_(0),
-      category_(&system_category())
-  {
-  }
-
-  /// Construct with specific error code and category.
-  error_code(int v, const error_category& c)
-    : value_(v),
-      category_(&c)
-  {
-  }
-
-  /// Construct from an error code enum.
-  template <typename ErrorEnum>
-  error_code(ErrorEnum e)
-  {
-    *this = make_error_code(e);
-  }
-
-  /// Get the error value.
-  int value() const
-  {
-    return value_;
-  }
-
-  /// Get the error category.
-  const error_category& category() const
-  {
-    return *category_;
-  }
-
-  /// Get the message associated with the error.
-  std::string message() const
-  {
-    return category_->message(value_);
-  }
-
-  struct unspecified_bool_type_t
-  {
-  };
-
-  typedef void (*unspecified_bool_type)(unspecified_bool_type_t);
-
-  static void unspecified_bool_true(unspecified_bool_type_t) {}
-
-  /// Operator returns non-null if there is a non-success error code.
-  operator unspecified_bool_type() const
-  {
-    if (value_ == 0)
-      return 0;
-    else
-      return &error_code::unspecified_bool_true;
-  }
-
-  /// Operator to test if the error represents success.
-  bool operator!() const
-  {
-    return value_ == 0;
-  }
-
-  /// Equality operator to compare two error objects.
-  friend bool operator==(const error_code& e1, const error_code& e2)
-  {
-    return e1.value_ == e2.value_ && e1.category_ == e2.category_;
-  }
-
-  /// Inequality operator to compare two error objects.
-  friend bool operator!=(const error_code& e1, const error_code& e2)
-  {
-    return e1.value_ != e2.value_ || e1.category_ != e2.category_;
-  }
-
-private:
-  // The value associated with the error code.
-  int value_;
-
-  // The category associated with the error code.
-  const error_category* category_;
-};
-
-# if !defined(ASIO_NO_IOSTREAM)
-
-/// Output an error code.
-template <typename Elem, typename Traits>
-std::basic_ostream<Elem, Traits>& operator<<(
-    std::basic_ostream<Elem, Traits>& os, const error_code& ec)
-{
-  os << ec.category().name() << ':' << ec.value();
-  return os;
-}
-
-# endif // !defined(ASIO_NO_IOSTREAM)
-
-#endif // defined(ASIO_HAS_STD_SYSTEM_ERROR)
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/impl/error_code.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_ERROR_CODE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/generic/basic_endpoint.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/generic/basic_endpoint.hpp
deleted file mode 100644
index 9f5fbce..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/generic/basic_endpoint.hpp
+++ /dev/null
@@ -1,193 +0,0 @@
-//
-// generic/basic_endpoint.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_GENERIC_BASIC_ENDPOINT_HPP
-#define ASIO_GENERIC_BASIC_ENDPOINT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/generic/detail/endpoint.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace generic {
-
-/// Describes an endpoint for any socket type.
-/**
- * The asio::generic::basic_endpoint class template describes an endpoint
- * that may be associated with any socket type.
- *
- * @note The socket types sockaddr type must be able to fit into a
- * @c sockaddr_storage structure.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- *
- * @par Concepts:
- * Endpoint.
- */
-template <typename Protocol>
-class basic_endpoint
-{
-public:
-  /// The protocol type associated with the endpoint.
-  typedef Protocol protocol_type;
-
-  /// The type of the endpoint structure. This type is dependent on the
-  /// underlying implementation of the socket layer.
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined data_type;
-#else
-  typedef asio::detail::socket_addr_type data_type;
-#endif
-
-  /// Default constructor.
-  basic_endpoint()
-  {
-  }
-
-  /// Construct an endpoint from the specified socket address.
-  basic_endpoint(const void* socket_address,
-      std::size_t socket_address_size, int socket_protocol = 0)
-    : impl_(socket_address, socket_address_size, socket_protocol)
-  {
-  }
-
-  /// Construct an endpoint from the specific endpoint type.
-  template <typename Endpoint>
-  basic_endpoint(const Endpoint& endpoint)
-    : impl_(endpoint.data(), endpoint.size(), endpoint.protocol().protocol())
-  {
-  }
-
-  /// Copy constructor.
-  basic_endpoint(const basic_endpoint& other)
-    : impl_(other.impl_)
-  {
-  }
-
-#if defined(ASIO_HAS_MOVE)
-  /// Move constructor.
-  basic_endpoint(basic_endpoint&& other)
-    : impl_(other.impl_)
-  {
-  }
-#endif // defined(ASIO_HAS_MOVE)
-
-  /// Assign from another endpoint.
-  basic_endpoint& operator=(const basic_endpoint& other)
-  {
-    impl_ = other.impl_;
-    return *this;
-  }
-
-#if defined(ASIO_HAS_MOVE)
-  /// Move-assign from another endpoint.
-  basic_endpoint& operator=(basic_endpoint&& other)
-  {
-    impl_ = other.impl_;
-    return *this;
-  }
-#endif // defined(ASIO_HAS_MOVE)
-
-  /// The protocol associated with the endpoint.
-  protocol_type protocol() const
-  {
-    return protocol_type(impl_.family(), impl_.protocol());
-  }
-
-  /// Get the underlying endpoint in the native type.
-  data_type* data()
-  {
-    return impl_.data();
-  }
-
-  /// Get the underlying endpoint in the native type.
-  const data_type* data() const
-  {
-    return impl_.data();
-  }
-
-  /// Get the underlying size of the endpoint in the native type.
-  std::size_t size() const
-  {
-    return impl_.size();
-  }
-
-  /// Set the underlying size of the endpoint in the native type.
-  void resize(std::size_t new_size)
-  {
-    impl_.resize(new_size);
-  }
-
-  /// Get the capacity of the endpoint in the native type.
-  std::size_t capacity() const
-  {
-    return impl_.capacity();
-  }
-
-  /// Compare two endpoints for equality.
-  friend bool operator==(const basic_endpoint<Protocol>& e1,
-      const basic_endpoint<Protocol>& e2)
-  {
-    return e1.impl_ == e2.impl_;
-  }
-
-  /// Compare two endpoints for inequality.
-  friend bool operator!=(const basic_endpoint<Protocol>& e1,
-      const basic_endpoint<Protocol>& e2)
-  {
-    return !(e1.impl_ == e2.impl_);
-  }
-
-  /// Compare endpoints for ordering.
-  friend bool operator<(const basic_endpoint<Protocol>& e1,
-      const basic_endpoint<Protocol>& e2)
-  {
-    return e1.impl_ < e2.impl_;
-  }
-
-  /// Compare endpoints for ordering.
-  friend bool operator>(const basic_endpoint<Protocol>& e1,
-      const basic_endpoint<Protocol>& e2)
-  {
-    return e2.impl_ < e1.impl_;
-  }
-
-  /// Compare endpoints for ordering.
-  friend bool operator<=(const basic_endpoint<Protocol>& e1,
-      const basic_endpoint<Protocol>& e2)
-  {
-    return !(e2 < e1);
-  }
-
-  /// Compare endpoints for ordering.
-  friend bool operator>=(const basic_endpoint<Protocol>& e1,
-      const basic_endpoint<Protocol>& e2)
-  {
-    return !(e1 < e2);
-  }
-
-private:
-  // The underlying generic endpoint.
-  asio::generic::detail::endpoint impl_;
-};
-
-} // namespace generic
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_GENERIC_BASIC_ENDPOINT_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/generic/datagram_protocol.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/generic/datagram_protocol.hpp
deleted file mode 100644
index 1cfd4f9..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/generic/datagram_protocol.hpp
+++ /dev/null
@@ -1,123 +0,0 @@
-//
-// generic/datagram_protocol.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_GENERIC_DATAGRAM_PROTOCOL_HPP
-#define ASIO_GENERIC_DATAGRAM_PROTOCOL_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#include <typeinfo>
-#include "asio/basic_datagram_socket.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/throw_exception.hpp"
-#include "asio/generic/basic_endpoint.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace generic {
-
-/// Encapsulates the flags needed for a generic datagram-oriented socket.
-/**
- * The asio::generic::datagram_protocol class contains flags necessary
- * for datagram-oriented sockets of any address family and protocol.
- *
- * @par Examples
- * Constructing using a native address family and socket protocol:
- * @code datagram_protocol p(AF_INET, IPPROTO_UDP); @endcode
- * Constructing from a specific protocol type:
- * @code datagram_protocol p(asio::ip::udp::v4()); @endcode
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Safe.
- *
- * @par Concepts:
- * Protocol.
- */
-class datagram_protocol
-{
-public:
-  /// Construct a protocol object for a specific address family and protocol.
-  datagram_protocol(int address_family, int socket_protocol)
-    : family_(address_family),
-      protocol_(socket_protocol)
-  {
-  }
-
-  /// Construct a generic protocol object from a specific protocol.
-  /**
-   * @throws @c bad_cast Thrown if the source protocol is not datagram-oriented.
-   */
-  template <typename Protocol>
-  datagram_protocol(const Protocol& source_protocol)
-    : family_(source_protocol.family()),
-      protocol_(source_protocol.protocol())
-  {
-    if (source_protocol.type() != type())
-    {
-      std::bad_cast ex;
-      asio::detail::throw_exception(ex);
-    }
-  }
-
-  /// Obtain an identifier for the type of the protocol.
-  int type() const
-  {
-    return ASIO_OS_DEF(SOCK_DGRAM);
-  }
-
-  /// Obtain an identifier for the protocol.
-  int protocol() const
-  {
-    return protocol_;
-  }
-
-  /// Obtain an identifier for the protocol family.
-  int family() const
-  {
-    return family_;
-  }
-
-  /// Compare two protocols for equality.
-  friend bool operator==(const datagram_protocol& p1,
-      const datagram_protocol& p2)
-  {
-    return p1.family_ == p2.family_ && p1.protocol_ == p2.protocol_;
-  }
-
-  /// Compare two protocols for inequality.
-  friend bool operator!=(const datagram_protocol& p1,
-      const datagram_protocol& p2)
-  {
-    return !(p1 == p2);
-  }
-
-  /// The type of an endpoint.
-  typedef basic_endpoint<datagram_protocol> endpoint;
-
-  /// The generic socket type.
-  typedef basic_datagram_socket<datagram_protocol> socket;
-
-private:
-  int family_;
-  int protocol_;
-};
-
-} // namespace generic
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_GENERIC_DATAGRAM_PROTOCOL_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/generic/detail/endpoint.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/generic/detail/endpoint.hpp
deleted file mode 100644
index d2eedec..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/generic/detail/endpoint.hpp
+++ /dev/null
@@ -1,133 +0,0 @@
-//
-// generic/detail/endpoint.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_GENERIC_DETAIL_ENDPOINT_HPP
-#define ASIO_GENERIC_DETAIL_ENDPOINT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#include <cstddef>
-#include "asio/detail/socket_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace generic {
-namespace detail {
-
-// Helper class for implementing a generic socket endpoint.
-class endpoint
-{
-public:
-  // Default constructor.
-  ASIO_DECL endpoint();
-
-  // Construct an endpoint from the specified raw bytes.
-  ASIO_DECL endpoint(const void* sock_addr,
-      std::size_t sock_addr_size, int sock_protocol);
-
-  // Copy constructor.
-  endpoint(const endpoint& other)
-    : data_(other.data_),
-      size_(other.size_),
-      protocol_(other.protocol_)
-  {
-  }
-
-  // Assign from another endpoint.
-  endpoint& operator=(const endpoint& other)
-  {
-    data_ = other.data_;
-    size_ = other.size_;
-    protocol_ = other.protocol_;
-    return *this;
-  }
-
-  // Get the address family associated with the endpoint.
-  int family() const
-  {
-    return data_.base.sa_family;
-  }
-
-  // Get the socket protocol associated with the endpoint.
-  int protocol() const
-  {
-    return protocol_;
-  }
-
-  // Get the underlying endpoint in the native type.
-  asio::detail::socket_addr_type* data()
-  {
-    return &data_.base;
-  }
-
-  // Get the underlying endpoint in the native type.
-  const asio::detail::socket_addr_type* data() const
-  {
-    return &data_.base;
-  }
-
-  // Get the underlying size of the endpoint in the native type.
-  std::size_t size() const
-  {
-    return size_;
-  }
-
-  // Set the underlying size of the endpoint in the native type.
-  ASIO_DECL void resize(std::size_t size);
-
-  // Get the capacity of the endpoint in the native type.
-  std::size_t capacity() const
-  {
-    return sizeof(asio::detail::sockaddr_storage_type);
-  }
-
-  // Compare two endpoints for equality.
-  ASIO_DECL friend bool operator==(
-      const endpoint& e1, const endpoint& e2);
-
-  // Compare endpoints for ordering.
-  ASIO_DECL friend bool operator<(
-      const endpoint& e1, const endpoint& e2);
-
-private:
-  // The underlying socket address.
-  union data_union
-  {
-    asio::detail::socket_addr_type base;
-    asio::detail::sockaddr_storage_type generic;
-  } data_;
-
-  // The length of the socket address stored in the endpoint.
-  std::size_t size_;
-
-  // The socket protocol associated with the endpoint.
-  int protocol_;
-
-  // Initialise with a specified memory.
-  ASIO_DECL void init(const void* sock_addr,
-      std::size_t sock_addr_size, int sock_protocol);
-};
-
-} // namespace detail
-} // namespace generic
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/generic/detail/impl/endpoint.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_GENERIC_DETAIL_ENDPOINT_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/generic/detail/impl/endpoint.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/generic/detail/impl/endpoint.ipp
deleted file mode 100644
index 7261819..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/generic/detail/impl/endpoint.ipp
+++ /dev/null
@@ -1,109 +0,0 @@
-//
-// generic/detail/impl/endpoint.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_GENERIC_DETAIL_IMPL_ENDPOINT_IPP
-#define ASIO_GENERIC_DETAIL_IMPL_ENDPOINT_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#include <cstring>
-#include <typeinfo>
-#include "asio/detail/socket_ops.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/detail/throw_exception.hpp"
-#include "asio/error.hpp"
-#include "asio/generic/detail/endpoint.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace generic {
-namespace detail {
-
-endpoint::endpoint()
-{
-  init(0, 0, 0);
-}
-
-endpoint::endpoint(const void* sock_addr,
-    std::size_t sock_addr_size, int sock_protocol)
-{
-  init(sock_addr, sock_addr_size, sock_protocol);
-}
-
-void endpoint::resize(std::size_t new_size)
-{
-  if (new_size > sizeof(asio::detail::sockaddr_storage_type))
-  {
-    asio::error_code ec(asio::error::invalid_argument);
-    asio::detail::throw_error(ec);
-  }
-  else
-  {
-    size_ = new_size;
-    protocol_ = 0;
-  }
-}
-
-bool operator==(const endpoint& e1, const endpoint& e2)
-{
-  using namespace std; // For memcmp.
-  return e1.size() == e2.size() && memcmp(e1.data(), e2.data(), e1.size()) == 0;
-}
-
-bool operator<(const endpoint& e1, const endpoint& e2)
-{
-  if (e1.protocol() < e2.protocol())
-    return true;
-
-  if (e1.protocol() > e2.protocol())
-    return false;
-
-  using namespace std; // For memcmp.
-  std::size_t compare_size = e1.size() < e2.size() ? e1.size() : e2.size();
-  int compare_result = memcmp(e1.data(), e2.data(), compare_size);
-
-  if (compare_result < 0)
-    return true;
-
-  if (compare_result > 0)
-    return false;
-
-  return e1.size() < e2.size();
-}
-
-void endpoint::init(const void* sock_addr,
-    std::size_t sock_addr_size, int sock_protocol)
-{
-  if (sock_addr_size > sizeof(asio::detail::sockaddr_storage_type))
-  {
-    asio::error_code ec(asio::error::invalid_argument);
-    asio::detail::throw_error(ec);
-  }
-
-  using namespace std; // For memset and memcpy.
-  memset(&data_.generic, 0, sizeof(asio::detail::sockaddr_storage_type));
-  memcpy(&data_.generic, sock_addr, sock_addr_size);
-
-  size_ = sock_addr_size;
-  protocol_ = sock_protocol;
-}
-
-} // namespace detail
-} // namespace generic
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_GENERIC_DETAIL_IMPL_ENDPOINT_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/generic/raw_protocol.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/generic/raw_protocol.hpp
deleted file mode 100644
index b563258..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/generic/raw_protocol.hpp
+++ /dev/null
@@ -1,121 +0,0 @@
-//
-// generic/raw_protocol.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_GENERIC_RAW_PROTOCOL_HPP
-#define ASIO_GENERIC_RAW_PROTOCOL_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#include <typeinfo>
-#include "asio/basic_raw_socket.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/throw_exception.hpp"
-#include "asio/generic/basic_endpoint.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace generic {
-
-/// Encapsulates the flags needed for a generic raw socket.
-/**
- * The asio::generic::raw_protocol class contains flags necessary for
- * raw sockets of any address family and protocol.
- *
- * @par Examples
- * Constructing using a native address family and socket protocol:
- * @code raw_protocol p(AF_INET, IPPROTO_ICMP); @endcode
- * Constructing from a specific protocol type:
- * @code raw_protocol p(asio::ip::icmp::v4()); @endcode
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Safe.
- *
- * @par Concepts:
- * Protocol.
- */
-class raw_protocol
-{
-public:
-  /// Construct a protocol object for a specific address family and protocol.
-  raw_protocol(int address_family, int socket_protocol)
-    : family_(address_family),
-      protocol_(socket_protocol)
-  {
-  }
-
-  /// Construct a generic protocol object from a specific protocol.
-  /**
-   * @throws @c bad_cast Thrown if the source protocol is not raw-oriented.
-   */
-  template <typename Protocol>
-  raw_protocol(const Protocol& source_protocol)
-    : family_(source_protocol.family()),
-      protocol_(source_protocol.protocol())
-  {
-    if (source_protocol.type() != type())
-    {
-      std::bad_cast ex;
-      asio::detail::throw_exception(ex);
-    }
-  }
-
-  /// Obtain an identifier for the type of the protocol.
-  int type() const
-  {
-    return ASIO_OS_DEF(SOCK_RAW);
-  }
-
-  /// Obtain an identifier for the protocol.
-  int protocol() const
-  {
-    return protocol_;
-  }
-
-  /// Obtain an identifier for the protocol family.
-  int family() const
-  {
-    return family_;
-  }
-
-  /// Compare two protocols for equality.
-  friend bool operator==(const raw_protocol& p1, const raw_protocol& p2)
-  {
-    return p1.family_ == p2.family_ && p1.protocol_ == p2.protocol_;
-  }
-
-  /// Compare two protocols for inequality.
-  friend bool operator!=(const raw_protocol& p1, const raw_protocol& p2)
-  {
-    return !(p1 == p2);
-  }
-
-  /// The type of an endpoint.
-  typedef basic_endpoint<raw_protocol> endpoint;
-
-  /// The generic socket type.
-  typedef basic_raw_socket<raw_protocol> socket;
-
-private:
-  int family_;
-  int protocol_;
-};
-
-} // namespace generic
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_GENERIC_RAW_PROTOCOL_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/generic/seq_packet_protocol.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/generic/seq_packet_protocol.hpp
deleted file mode 100644
index ea55ce6..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/generic/seq_packet_protocol.hpp
+++ /dev/null
@@ -1,122 +0,0 @@
-//
-// generic/seq_packet_protocol.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_GENERIC_SEQ_PACKET_PROTOCOL_HPP
-#define ASIO_GENERIC_SEQ_PACKET_PROTOCOL_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#include <typeinfo>
-#include "asio/basic_seq_packet_socket.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/throw_exception.hpp"
-#include "asio/generic/basic_endpoint.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace generic {
-
-/// Encapsulates the flags needed for a generic sequenced packet socket.
-/**
- * The asio::generic::seq_packet_protocol class contains flags necessary
- * for seq_packet-oriented sockets of any address family and protocol.
- *
- * @par Examples
- * Constructing using a native address family and socket protocol:
- * @code seq_packet_protocol p(AF_INET, IPPROTO_SCTP); @endcode
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Safe.
- *
- * @par Concepts:
- * Protocol.
- */
-class seq_packet_protocol
-{
-public:
-  /// Construct a protocol object for a specific address family and protocol.
-  seq_packet_protocol(int address_family, int socket_protocol)
-    : family_(address_family),
-      protocol_(socket_protocol)
-  {
-  }
-
-  /// Construct a generic protocol object from a specific protocol.
-  /**
-   * @throws @c bad_cast Thrown if the source protocol is not based around
-   * sequenced packets.
-   */
-  template <typename Protocol>
-  seq_packet_protocol(const Protocol& source_protocol)
-    : family_(source_protocol.family()),
-      protocol_(source_protocol.protocol())
-  {
-    if (source_protocol.type() != type())
-    {
-      std::bad_cast ex;
-      asio::detail::throw_exception(ex);
-    }
-  }
-
-  /// Obtain an identifier for the type of the protocol.
-  int type() const
-  {
-    return ASIO_OS_DEF(SOCK_SEQPACKET);
-  }
-
-  /// Obtain an identifier for the protocol.
-  int protocol() const
-  {
-    return protocol_;
-  }
-
-  /// Obtain an identifier for the protocol family.
-  int family() const
-  {
-    return family_;
-  }
-
-  /// Compare two protocols for equality.
-  friend bool operator==(const seq_packet_protocol& p1,
-      const seq_packet_protocol& p2)
-  {
-    return p1.family_ == p2.family_ && p1.protocol_ == p2.protocol_;
-  }
-
-  /// Compare two protocols for inequality.
-  friend bool operator!=(const seq_packet_protocol& p1,
-      const seq_packet_protocol& p2)
-  {
-    return !(p1 == p2);
-  }
-
-  /// The type of an endpoint.
-  typedef basic_endpoint<seq_packet_protocol> endpoint;
-
-  /// The generic socket type.
-  typedef basic_seq_packet_socket<seq_packet_protocol> socket;
-
-private:
-  int family_;
-  int protocol_;
-};
-
-} // namespace generic
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_GENERIC_SEQ_PACKET_PROTOCOL_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/generic/stream_protocol.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/generic/stream_protocol.hpp
deleted file mode 100644
index 7f457b3..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/generic/stream_protocol.hpp
+++ /dev/null
@@ -1,127 +0,0 @@
-//
-// generic/stream_protocol.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_GENERIC_STREAM_PROTOCOL_HPP
-#define ASIO_GENERIC_STREAM_PROTOCOL_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#include <typeinfo>
-#include "asio/basic_socket_iostream.hpp"
-#include "asio/basic_stream_socket.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/throw_exception.hpp"
-#include "asio/generic/basic_endpoint.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace generic {
-
-/// Encapsulates the flags needed for a generic stream-oriented socket.
-/**
- * The asio::generic::stream_protocol class contains flags necessary for
- * stream-oriented sockets of any address family and protocol.
- *
- * @par Examples
- * Constructing using a native address family and socket protocol:
- * @code stream_protocol p(AF_INET, IPPROTO_TCP); @endcode
- * Constructing from a specific protocol type:
- * @code stream_protocol p(asio::ip::tcp::v4()); @endcode
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Safe.
- *
- * @par Concepts:
- * Protocol.
- */
-class stream_protocol
-{
-public:
-  /// Construct a protocol object for a specific address family and protocol.
-  stream_protocol(int address_family, int socket_protocol)
-    : family_(address_family),
-      protocol_(socket_protocol)
-  {
-  }
-
-  /// Construct a generic protocol object from a specific protocol.
-  /**
-   * @throws @c bad_cast Thrown if the source protocol is not stream-oriented.
-   */
-  template <typename Protocol>
-  stream_protocol(const Protocol& source_protocol)
-    : family_(source_protocol.family()),
-      protocol_(source_protocol.protocol())
-  {
-    if (source_protocol.type() != type())
-    {
-      std::bad_cast ex;
-      asio::detail::throw_exception(ex);
-    }
-  }
-
-  /// Obtain an identifier for the type of the protocol.
-  int type() const
-  {
-    return ASIO_OS_DEF(SOCK_STREAM);
-  }
-
-  /// Obtain an identifier for the protocol.
-  int protocol() const
-  {
-    return protocol_;
-  }
-
-  /// Obtain an identifier for the protocol family.
-  int family() const
-  {
-    return family_;
-  }
-
-  /// Compare two protocols for equality.
-  friend bool operator==(const stream_protocol& p1, const stream_protocol& p2)
-  {
-    return p1.family_ == p2.family_ && p1.protocol_ == p2.protocol_;
-  }
-
-  /// Compare two protocols for inequality.
-  friend bool operator!=(const stream_protocol& p1, const stream_protocol& p2)
-  {
-    return !(p1 == p2);
-  }
-
-  /// The type of an endpoint.
-  typedef basic_endpoint<stream_protocol> endpoint;
-
-  /// The generic socket type.
-  typedef basic_stream_socket<stream_protocol> socket;
-
-#if !defined(ASIO_NO_IOSTREAM)
-  /// The generic socket iostream type.
-  typedef basic_socket_iostream<stream_protocol> iostream;
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-private:
-  int family_;
-  int protocol_;
-};
-
-} // namespace generic
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_GENERIC_STREAM_PROTOCOL_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/handler_alloc_hook.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/handler_alloc_hook.hpp
deleted file mode 100644
index 8d992ca..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/handler_alloc_hook.hpp
+++ /dev/null
@@ -1,81 +0,0 @@
-//
-// handler_alloc_hook.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_HANDLER_ALLOC_HOOK_HPP
-#define ASIO_HANDLER_ALLOC_HOOK_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cstddef>
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Default allocation function for handlers.
-/**
- * Asynchronous operations may need to allocate temporary objects. Since
- * asynchronous operations have a handler function object, these temporary
- * objects can be said to be associated with the handler.
- *
- * Implement asio_handler_allocate and asio_handler_deallocate for your own
- * handlers to provide custom allocation for these temporary objects.
- *
- * The default implementation of these allocation hooks uses <tt>::operator
- * new</tt> and <tt>::operator delete</tt>.
- *
- * @note All temporary objects associated with a handler will be deallocated
- * before the upcall to the handler is performed. This allows the same memory to
- * be reused for a subsequent asynchronous operation initiated by the handler.
- *
- * @par Example
- * @code
- * class my_handler;
- *
- * void* asio_handler_allocate(std::size_t size, my_handler* context)
- * {
- *   return ::operator new(size);
- * }
- *
- * void asio_handler_deallocate(void* pointer, std::size_t size,
- *     my_handler* context)
- * {
- *   ::operator delete(pointer);
- * }
- * @endcode
- */
-ASIO_DECL void* asio_handler_allocate(
-    std::size_t size, ...);
-
-/// Default deallocation function for handlers.
-/**
- * Implement asio_handler_allocate and asio_handler_deallocate for your own
- * handlers to provide custom allocation for the associated temporary objects.
- *
- * The default implementation of these allocation hooks uses <tt>::operator
- * new</tt> and <tt>::operator delete</tt>.
- *
- * @sa asio_handler_allocate.
- */
-ASIO_DECL void asio_handler_deallocate(
-    void* pointer, std::size_t size, ...);
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/impl/handler_alloc_hook.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_HANDLER_ALLOC_HOOK_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/handler_continuation_hook.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/handler_continuation_hook.hpp
deleted file mode 100644
index fd6051e..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/handler_continuation_hook.hpp
+++ /dev/null
@@ -1,54 +0,0 @@
-//
-// handler_continuation_hook.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_HANDLER_CONTINUATION_HOOK_HPP
-#define ASIO_HANDLER_CONTINUATION_HOOK_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Default continuation function for handlers.
-/**
- * Asynchronous operations may represent a continuation of the asynchronous
- * control flow associated with the current handler. The implementation can use
- * this knowledge to optimise scheduling of the handler.
- *
- * Implement asio_handler_is_continuation for your own handlers to indicate
- * when a handler represents a continuation.
- *
- * The default implementation of the continuation hook returns <tt>false</tt>.
- *
- * @par Example
- * @code
- * class my_handler;
- *
- * bool asio_handler_is_continuation(my_handler* context)
- * {
- *   return true;
- * }
- * @endcode
- */
-inline bool asio_handler_is_continuation(...)
-{
-  return false;
-}
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_HANDLER_CONTINUATION_HOOK_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/handler_invoke_hook.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/handler_invoke_hook.hpp
deleted file mode 100644
index 8a2ed43..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/handler_invoke_hook.hpp
+++ /dev/null
@@ -1,85 +0,0 @@
-//
-// handler_invoke_hook.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_HANDLER_INVOKE_HOOK_HPP
-#define ASIO_HANDLER_INVOKE_HOOK_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/** @defgroup asio_handler_invoke asio::asio_handler_invoke
- *
- * @brief Default invoke function for handlers.
- *
- * Completion handlers for asynchronous operations are invoked by the
- * io_service associated with the corresponding object (e.g. a socket or
- * deadline_timer). Certain guarantees are made on when the handler may be
- * invoked, in particular that a handler can only be invoked from a thread that
- * is currently calling @c run() on the corresponding io_service object.
- * Handlers may subsequently be invoked through other objects (such as
- * io_service::strand objects) that provide additional guarantees.
- *
- * When asynchronous operations are composed from other asynchronous
- * operations, all intermediate handlers should be invoked using the same
- * method as the final handler. This is required to ensure that user-defined
- * objects are not accessed in a way that may violate the guarantees. This
- * hooking function ensures that the invoked method used for the final handler
- * is accessible at each intermediate step.
- *
- * Implement asio_handler_invoke for your own handlers to specify a custom
- * invocation strategy.
- *
- * This default implementation invokes the function object like so:
- * @code function(); @endcode
- * If necessary, the default implementation makes a copy of the function object
- * so that the non-const operator() can be used.
- *
- * @par Example
- * @code
- * class my_handler;
- *
- * template <typename Function>
- * void asio_handler_invoke(Function function, my_handler* context)
- * {
- *   context->strand_.dispatch(function);
- * }
- * @endcode
- */
-/*@{*/
-
-/// Default handler invocation hook used for non-const function objects.
-template <typename Function>
-inline void asio_handler_invoke(Function& function, ...)
-{
-  function();
-}
-
-/// Default handler invocation hook used for const function objects.
-template <typename Function>
-inline void asio_handler_invoke(const Function& function, ...)
-{
-  Function tmp(function);
-  tmp();
-}
-
-/*@}*/
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_HANDLER_INVOKE_HOOK_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/handler_type.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/handler_type.hpp
deleted file mode 100644
index 56f75b6..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/handler_type.hpp
+++ /dev/null
@@ -1,112 +0,0 @@
-//
-// handler_type.hpp
-// ~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_HANDLER_TYPE_HPP
-#define ASIO_HANDLER_TYPE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Default handler type traits provided for all handlers.
-/**
- * The handler_type traits class is used for determining the concrete handler
- * type to be used for an asynchronous operation. It allows the handler type to
- * be determined at the point where the specific completion handler signature
- * is known.
- *
- * This template may be specialised for user-defined handler types.
- */
-template <typename Handler, typename Signature>
-struct handler_type
-{
-  /// The handler type for the specific signature.
-  typedef Handler type;
-};
-
-#if !defined(GENERATING_DOCUMENTATION)
-
-template <typename Handler, typename Signature>
-struct handler_type<const Handler, Signature>
-  : handler_type<Handler, Signature> {};
-
-template <typename Handler, typename Signature>
-struct handler_type<volatile Handler, Signature>
-  : handler_type<Handler, Signature> {};
-
-template <typename Handler, typename Signature>
-struct handler_type<const volatile Handler, Signature>
-  : handler_type<Handler, Signature> {};
-
-template <typename Handler, typename Signature>
-struct handler_type<const Handler&, Signature>
-  : handler_type<Handler, Signature> {};
-
-template <typename Handler, typename Signature>
-struct handler_type<volatile Handler&, Signature>
-  : handler_type<Handler, Signature> {};
-
-template <typename Handler, typename Signature>
-struct handler_type<const volatile Handler&, Signature>
-  : handler_type<Handler, Signature> {};
-
-template <typename Handler, typename Signature>
-struct handler_type<Handler&, Signature>
-  : handler_type<Handler, Signature> {};
-
-#if defined(ASIO_HAS_MOVE)
-template <typename Handler, typename Signature>
-struct handler_type<Handler&&, Signature>
-  : handler_type<Handler, Signature> {};
-#endif // defined(ASIO_HAS_MOVE)
-
-template <typename ReturnType, typename Signature>
-struct handler_type<ReturnType(), Signature>
-  : handler_type<ReturnType(*)(), Signature> {};
-
-template <typename ReturnType, typename Arg1, typename Signature>
-struct handler_type<ReturnType(Arg1), Signature>
-  : handler_type<ReturnType(*)(Arg1), Signature> {};
-
-template <typename ReturnType, typename Arg1, typename Arg2, typename Signature>
-struct handler_type<ReturnType(Arg1, Arg2), Signature>
-  : handler_type<ReturnType(*)(Arg1, Arg2), Signature> {};
-
-template <typename ReturnType, typename Arg1, typename Arg2, typename Arg3,
-    typename Signature>
-struct handler_type<ReturnType(Arg1, Arg2, Arg3), Signature>
-  : handler_type<ReturnType(*)(Arg1, Arg2, Arg3), Signature> {};
-
-template <typename ReturnType, typename Arg1, typename Arg2, typename Arg3,
-    typename Arg4, typename Signature>
-struct handler_type<ReturnType(Arg1, Arg2, Arg3, Arg4), Signature>
-  : handler_type<ReturnType(*)(Arg1, Arg2, Arg3, Arg4), Signature> {};
-
-template <typename ReturnType, typename Arg1, typename Arg2, typename Arg3,
-    typename Arg4, typename Arg5, typename Signature>
-struct handler_type<ReturnType(Arg1, Arg2, Arg3, Arg4, Arg5), Signature>
-  : handler_type<ReturnType(*)(Arg1, Arg2, Arg3, Arg4, Arg5), Signature> {};
-
-#endif // !defined(GENERATING_DOCUMENTATION)
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#define ASIO_HANDLER_TYPE(h, sig) \
-  typename handler_type<h, sig>::type
-
-#endif // ASIO_HANDLER_TYPE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/high_resolution_timer.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/high_resolution_timer.hpp
deleted file mode 100644
index 6ab1324..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/high_resolution_timer.hpp
+++ /dev/null
@@ -1,63 +0,0 @@
-//
-// high_resolution_timer.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_HIGH_RESOLUTION_TIMER_HPP
-#define ASIO_HIGH_RESOLUTION_TIMER_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_STD_CHRONO) \
-  || defined(ASIO_HAS_BOOST_CHRONO) \
-  || defined(GENERATING_DOCUMENTATION)
-
-#if defined(ASIO_HAS_STD_CHRONO)
-# include <chrono>
-#elif defined(ASIO_HAS_BOOST_CHRONO)
-# include <boost/chrono/system_clocks.hpp>
-#endif
-
-#include "asio/basic_waitable_timer.hpp"
-
-namespace asio {
-
-#if defined(GENERATING_DOCUMENTATION)
-/// Typedef for a timer based on the high resolution clock.
-/**
- * This typedef uses the C++11 @c &lt;chrono&gt; standard library facility, if
- * available. Otherwise, it may use the Boost.Chrono library. To explicitly
- * utilise Boost.Chrono, use the basic_waitable_timer template directly:
- * @code
- * typedef basic_waitable_timer<boost::chrono::high_resolution_clock> timer;
- * @endcode
- */
-typedef basic_waitable_timer<
-    chrono::high_resolution_clock>
-  high_resolution_timer;
-#elif defined(ASIO_HAS_STD_CHRONO)
-typedef basic_waitable_timer<
-    std::chrono::high_resolution_clock>
-  high_resolution_timer;
-#elif defined(ASIO_HAS_BOOST_CHRONO)
-typedef basic_waitable_timer<
-    boost::chrono::high_resolution_clock>
-  high_resolution_timer;
-#endif
-
-} // namespace asio
-
-#endif // defined(ASIO_HAS_STD_CHRONO) 
-       //   || defined(ASIO_HAS_BOOST_CHRONO)
-       //   || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_HIGH_RESOLUTION_TIMER_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/buffered_read_stream.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/buffered_read_stream.hpp
deleted file mode 100644
index 41bfd94..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/buffered_read_stream.hpp
+++ /dev/null
@@ -1,358 +0,0 @@
-//
-// impl/buffered_read_stream.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IMPL_BUFFERED_READ_STREAM_HPP
-#define ASIO_IMPL_BUFFERED_READ_STREAM_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_cont_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/handler_type_requirements.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-template <typename Stream>
-std::size_t buffered_read_stream<Stream>::fill()
-{
-  detail::buffer_resize_guard<detail::buffered_stream_storage>
-    resize_guard(storage_);
-  std::size_t previous_size = storage_.size();
-  storage_.resize(storage_.capacity());
-  storage_.resize(previous_size + next_layer_.read_some(buffer(
-          storage_.data() + previous_size,
-          storage_.size() - previous_size)));
-  resize_guard.commit();
-  return storage_.size() - previous_size;
-}
-
-template <typename Stream>
-std::size_t buffered_read_stream<Stream>::fill(asio::error_code& ec)
-{
-  detail::buffer_resize_guard<detail::buffered_stream_storage>
-    resize_guard(storage_);
-  std::size_t previous_size = storage_.size();
-  storage_.resize(storage_.capacity());
-  storage_.resize(previous_size + next_layer_.read_some(buffer(
-          storage_.data() + previous_size,
-          storage_.size() - previous_size),
-        ec));
-  resize_guard.commit();
-  return storage_.size() - previous_size;
-}
-
-namespace detail
-{
-  template <typename ReadHandler>
-  class buffered_fill_handler
-  {
-  public:
-    buffered_fill_handler(detail::buffered_stream_storage& storage,
-        std::size_t previous_size, ReadHandler& handler)
-      : storage_(storage),
-        previous_size_(previous_size),
-        handler_(ASIO_MOVE_CAST(ReadHandler)(handler))
-    {
-    }
-
-#if defined(ASIO_HAS_MOVE)
-    buffered_fill_handler(const buffered_fill_handler& other)
-      : storage_(other.storage_),
-        previous_size_(other.previous_size_),
-        handler_(other.handler_)
-    {
-    }
-
-    buffered_fill_handler(buffered_fill_handler&& other)
-      : storage_(other.storage_),
-        previous_size_(other.previous_size_),
-        handler_(ASIO_MOVE_CAST(ReadHandler)(other.handler_))
-    {
-    }
-#endif // defined(ASIO_HAS_MOVE)
-
-    void operator()(const asio::error_code& ec,
-        const std::size_t bytes_transferred)
-    {
-      storage_.resize(previous_size_ + bytes_transferred);
-      handler_(ec, bytes_transferred);
-    }
-
-  //private:
-    detail::buffered_stream_storage& storage_;
-    std::size_t previous_size_;
-    ReadHandler handler_;
-  };
-
-  template <typename ReadHandler>
-  inline void* asio_handler_allocate(std::size_t size,
-      buffered_fill_handler<ReadHandler>* this_handler)
-  {
-    return asio_handler_alloc_helpers::allocate(
-        size, this_handler->handler_);
-  }
-
-  template <typename ReadHandler>
-  inline void asio_handler_deallocate(void* pointer, std::size_t size,
-      buffered_fill_handler<ReadHandler>* this_handler)
-  {
-    asio_handler_alloc_helpers::deallocate(
-        pointer, size, this_handler->handler_);
-  }
-
-  template <typename ReadHandler>
-  inline bool asio_handler_is_continuation(
-      buffered_fill_handler<ReadHandler>* this_handler)
-  {
-    return asio_handler_cont_helpers::is_continuation(
-          this_handler->handler_);
-  }
-
-  template <typename Function, typename ReadHandler>
-  inline void asio_handler_invoke(Function& function,
-      buffered_fill_handler<ReadHandler>* this_handler)
-  {
-    asio_handler_invoke_helpers::invoke(
-        function, this_handler->handler_);
-  }
-
-  template <typename Function, typename ReadHandler>
-  inline void asio_handler_invoke(const Function& function,
-      buffered_fill_handler<ReadHandler>* this_handler)
-  {
-    asio_handler_invoke_helpers::invoke(
-        function, this_handler->handler_);
-  }
-} // namespace detail
-
-template <typename Stream>
-template <typename ReadHandler>
-ASIO_INITFN_RESULT_TYPE(ReadHandler,
-    void (asio::error_code, std::size_t))
-buffered_read_stream<Stream>::async_fill(
-    ASIO_MOVE_ARG(ReadHandler) handler)
-{
-  // If you get an error on the following line it means that your handler does
-  // not meet the documented type requirements for a ReadHandler.
-  ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
-  detail::async_result_init<
-    ReadHandler, void (asio::error_code, std::size_t)> init(
-      ASIO_MOVE_CAST(ReadHandler)(handler));
-
-  std::size_t previous_size = storage_.size();
-  storage_.resize(storage_.capacity());
-  next_layer_.async_read_some(
-      buffer(
-        storage_.data() + previous_size,
-        storage_.size() - previous_size),
-      detail::buffered_fill_handler<ASIO_HANDLER_TYPE(
-        ReadHandler, void (asio::error_code, std::size_t))>(
-        storage_, previous_size, init.handler));
-
-  return init.result.get();
-}
-
-template <typename Stream>
-template <typename MutableBufferSequence>
-std::size_t buffered_read_stream<Stream>::read_some(
-    const MutableBufferSequence& buffers)
-{
-  if (asio::buffer_size(buffers) == 0)
-    return 0;
-
-  if (storage_.empty())
-    this->fill();
-
-  return this->copy(buffers);
-}
-
-template <typename Stream>
-template <typename MutableBufferSequence>
-std::size_t buffered_read_stream<Stream>::read_some(
-    const MutableBufferSequence& buffers, asio::error_code& ec)
-{
-  ec = asio::error_code();
-
-  if (asio::buffer_size(buffers) == 0)
-    return 0;
-
-  if (storage_.empty() && !this->fill(ec))
-    return 0;
-
-  return this->copy(buffers);
-}
-
-namespace detail
-{
-  template <typename MutableBufferSequence, typename ReadHandler>
-  class buffered_read_some_handler
-  {
-  public:
-    buffered_read_some_handler(detail::buffered_stream_storage& storage,
-        const MutableBufferSequence& buffers, ReadHandler& handler)
-      : storage_(storage),
-        buffers_(buffers),
-        handler_(handler)
-    {
-    }
-
-#if defined(ASIO_HAS_MOVE)
-      buffered_read_some_handler(const buffered_read_some_handler& other)
-        : storage_(other.storage_),
-          buffers_(other.buffers_),
-          handler_(other.handler_)
-      {
-      }
-
-      buffered_read_some_handler(buffered_read_some_handler&& other)
-        : storage_(other.storage_),
-          buffers_(other.buffers_),
-          handler_(ASIO_MOVE_CAST(ReadHandler)(other.handler_))
-      {
-      }
-#endif // defined(ASIO_HAS_MOVE)
-
-    void operator()(const asio::error_code& ec, std::size_t)
-    {
-      if (ec || storage_.empty())
-      {
-        const std::size_t length = 0;
-        handler_(ec, length);
-      }
-      else
-      {
-        const std::size_t bytes_copied = asio::buffer_copy(
-            buffers_, storage_.data(), storage_.size());
-        storage_.consume(bytes_copied);
-        handler_(ec, bytes_copied);
-      }
-    }
-
-  //private:
-    detail::buffered_stream_storage& storage_;
-    MutableBufferSequence buffers_;
-    ReadHandler handler_;
-  };
-
-  template <typename MutableBufferSequence, typename ReadHandler>
-  inline void* asio_handler_allocate(std::size_t size,
-      buffered_read_some_handler<
-        MutableBufferSequence, ReadHandler>* this_handler)
-  {
-    return asio_handler_alloc_helpers::allocate(
-        size, this_handler->handler_);
-  }
-
-  template <typename MutableBufferSequence, typename ReadHandler>
-  inline void asio_handler_deallocate(void* pointer, std::size_t size,
-      buffered_read_some_handler<
-        MutableBufferSequence, ReadHandler>* this_handler)
-  {
-    asio_handler_alloc_helpers::deallocate(
-        pointer, size, this_handler->handler_);
-  }
-
-  template <typename MutableBufferSequence, typename ReadHandler>
-  inline bool asio_handler_is_continuation(
-      buffered_read_some_handler<
-        MutableBufferSequence, ReadHandler>* this_handler)
-  {
-    return asio_handler_cont_helpers::is_continuation(
-          this_handler->handler_);
-  }
-
-  template <typename Function, typename MutableBufferSequence,
-      typename ReadHandler>
-  inline void asio_handler_invoke(Function& function,
-      buffered_read_some_handler<
-        MutableBufferSequence, ReadHandler>* this_handler)
-  {
-    asio_handler_invoke_helpers::invoke(
-        function, this_handler->handler_);
-  }
-
-  template <typename Function, typename MutableBufferSequence,
-      typename ReadHandler>
-  inline void asio_handler_invoke(const Function& function,
-      buffered_read_some_handler<
-        MutableBufferSequence, ReadHandler>* this_handler)
-  {
-    asio_handler_invoke_helpers::invoke(
-        function, this_handler->handler_);
-  }
-} // namespace detail
-
-template <typename Stream>
-template <typename MutableBufferSequence, typename ReadHandler>
-ASIO_INITFN_RESULT_TYPE(ReadHandler,
-    void (asio::error_code, std::size_t))
-buffered_read_stream<Stream>::async_read_some(
-    const MutableBufferSequence& buffers,
-    ASIO_MOVE_ARG(ReadHandler) handler)
-{
-  // If you get an error on the following line it means that your handler does
-  // not meet the documented type requirements for a ReadHandler.
-  ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
-  detail::async_result_init<
-    ReadHandler, void (asio::error_code, std::size_t)> init(
-      ASIO_MOVE_CAST(ReadHandler)(handler));
-
-  if (asio::buffer_size(buffers) == 0 || !storage_.empty())
-  {
-    next_layer_.async_read_some(asio::mutable_buffers_1(0, 0),
-        detail::buffered_read_some_handler<
-          MutableBufferSequence, ASIO_HANDLER_TYPE(
-            ReadHandler, void (asio::error_code, std::size_t))>(
-            storage_, buffers, init.handler));
-  }
-  else
-  {
-    this->async_fill(detail::buffered_read_some_handler<
-          MutableBufferSequence, ASIO_HANDLER_TYPE(
-            ReadHandler, void (asio::error_code, std::size_t))>(
-            storage_, buffers, init.handler));
-  }
-
-  return init.result.get();
-}
-
-template <typename Stream>
-template <typename MutableBufferSequence>
-std::size_t buffered_read_stream<Stream>::peek(
-    const MutableBufferSequence& buffers)
-{
-  if (storage_.empty())
-    this->fill();
-  return this->peek_copy(buffers);
-}
-
-template <typename Stream>
-template <typename MutableBufferSequence>
-std::size_t buffered_read_stream<Stream>::peek(
-    const MutableBufferSequence& buffers, asio::error_code& ec)
-{
-  ec = asio::error_code();
-  if (storage_.empty() && !this->fill(ec))
-    return 0;
-  return this->peek_copy(buffers);
-}
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IMPL_BUFFERED_READ_STREAM_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/buffered_write_stream.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/buffered_write_stream.hpp
deleted file mode 100644
index 4a307cf..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/buffered_write_stream.hpp
+++ /dev/null
@@ -1,338 +0,0 @@
-//
-// impl/buffered_write_stream.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IMPL_BUFFERED_WRITE_STREAM_HPP
-#define ASIO_IMPL_BUFFERED_WRITE_STREAM_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_cont_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/handler_type_requirements.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-template <typename Stream>
-std::size_t buffered_write_stream<Stream>::flush()
-{
-  std::size_t bytes_written = write(next_layer_,
-      buffer(storage_.data(), storage_.size()));
-  storage_.consume(bytes_written);
-  return bytes_written;
-}
-
-template <typename Stream>
-std::size_t buffered_write_stream<Stream>::flush(asio::error_code& ec)
-{
-  std::size_t bytes_written = write(next_layer_,
-      buffer(storage_.data(), storage_.size()),
-      transfer_all(), ec);
-  storage_.consume(bytes_written);
-  return bytes_written;
-}
-
-namespace detail
-{
-  template <typename WriteHandler>
-  class buffered_flush_handler
-  {
-  public:
-    buffered_flush_handler(detail::buffered_stream_storage& storage,
-        WriteHandler& handler)
-      : storage_(storage),
-        handler_(handler)
-    {
-    }
-
-#if defined(ASIO_HAS_MOVE)
-    buffered_flush_handler(const buffered_flush_handler& other)
-      : storage_(other.storage_),
-        handler_(other.handler_)
-    {
-    }
-
-    buffered_flush_handler(buffered_flush_handler&& other)
-      : storage_(other.storage_),
-        handler_(ASIO_MOVE_CAST(WriteHandler)(other.handler_))
-    {
-    }
-#endif // defined(ASIO_HAS_MOVE)
-
-    void operator()(const asio::error_code& ec,
-        const std::size_t bytes_written)
-    {
-      storage_.consume(bytes_written);
-      handler_(ec, bytes_written);
-    }
-
-  //private:
-    detail::buffered_stream_storage& storage_;
-    WriteHandler handler_;
-  };
-
-  template <typename WriteHandler>
-  inline void* asio_handler_allocate(std::size_t size,
-      buffered_flush_handler<WriteHandler>* this_handler)
-  {
-    return asio_handler_alloc_helpers::allocate(
-        size, this_handler->handler_);
-  }
-
-  template <typename WriteHandler>
-  inline void asio_handler_deallocate(void* pointer, std::size_t size,
-      buffered_flush_handler<WriteHandler>* this_handler)
-  {
-    asio_handler_alloc_helpers::deallocate(
-        pointer, size, this_handler->handler_);
-  }
-
-  template <typename WriteHandler>
-  inline bool asio_handler_is_continuation(
-      buffered_flush_handler<WriteHandler>* this_handler)
-  {
-    return asio_handler_cont_helpers::is_continuation(
-          this_handler->handler_);
-  }
-
-  template <typename Function, typename WriteHandler>
-  inline void asio_handler_invoke(Function& function,
-      buffered_flush_handler<WriteHandler>* this_handler)
-  {
-    asio_handler_invoke_helpers::invoke(
-        function, this_handler->handler_);
-  }
-
-  template <typename Function, typename WriteHandler>
-  inline void asio_handler_invoke(const Function& function,
-      buffered_flush_handler<WriteHandler>* this_handler)
-  {
-    asio_handler_invoke_helpers::invoke(
-        function, this_handler->handler_);
-  }
-}
-
-template <typename Stream>
-template <typename WriteHandler>
-ASIO_INITFN_RESULT_TYPE(WriteHandler,
-    void (asio::error_code, std::size_t))
-buffered_write_stream<Stream>::async_flush(
-    ASIO_MOVE_ARG(WriteHandler) handler)
-{
-  // If you get an error on the following line it means that your handler does
-  // not meet the documented type requirements for a WriteHandler.
-  ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
-  detail::async_result_init<
-    WriteHandler, void (asio::error_code, std::size_t)> init(
-      ASIO_MOVE_CAST(WriteHandler)(handler));
-
-  async_write(next_layer_, buffer(storage_.data(), storage_.size()),
-      detail::buffered_flush_handler<ASIO_HANDLER_TYPE(
-        WriteHandler, void (asio::error_code, std::size_t))>(
-        storage_, init.handler));
-
-  return init.result.get();
-}
-
-template <typename Stream>
-template <typename ConstBufferSequence>
-std::size_t buffered_write_stream<Stream>::write_some(
-    const ConstBufferSequence& buffers)
-{
-  if (asio::buffer_size(buffers) == 0)
-    return 0;
-
-  if (storage_.size() == storage_.capacity())
-    this->flush();
-
-  return this->copy(buffers);
-}
-
-template <typename Stream>
-template <typename ConstBufferSequence>
-std::size_t buffered_write_stream<Stream>::write_some(
-    const ConstBufferSequence& buffers, asio::error_code& ec)
-{
-  ec = asio::error_code();
-
-  if (asio::buffer_size(buffers) == 0)
-    return 0;
-
-  if (storage_.size() == storage_.capacity() && !flush(ec))
-    return 0;
-
-  return this->copy(buffers);
-}
-
-namespace detail
-{
-  template <typename ConstBufferSequence, typename WriteHandler>
-  class buffered_write_some_handler
-  {
-  public:
-    buffered_write_some_handler(detail::buffered_stream_storage& storage,
-        const ConstBufferSequence& buffers, WriteHandler& handler)
-      : storage_(storage),
-        buffers_(buffers),
-        handler_(handler)
-    {
-    }
-
-#if defined(ASIO_HAS_MOVE)
-      buffered_write_some_handler(const buffered_write_some_handler& other)
-        : storage_(other.storage_),
-          buffers_(other.buffers_),
-          handler_(other.handler_)
-      {
-      }
-
-      buffered_write_some_handler(buffered_write_some_handler&& other)
-        : storage_(other.storage_),
-          buffers_(other.buffers_),
-          handler_(ASIO_MOVE_CAST(WriteHandler)(other.handler_))
-      {
-      }
-#endif // defined(ASIO_HAS_MOVE)
-
-    void operator()(const asio::error_code& ec, std::size_t)
-    {
-      if (ec)
-      {
-        const std::size_t length = 0;
-        handler_(ec, length);
-      }
-      else
-      {
-        std::size_t orig_size = storage_.size();
-        std::size_t space_avail = storage_.capacity() - orig_size;
-        std::size_t bytes_avail = asio::buffer_size(buffers_);
-        std::size_t length = bytes_avail < space_avail
-          ? bytes_avail : space_avail;
-        storage_.resize(orig_size + length);
-        const std::size_t bytes_copied = asio::buffer_copy(
-            storage_.data() + orig_size, buffers_, length);
-        handler_(ec, bytes_copied);
-      }
-    }
-
-  //private:
-    detail::buffered_stream_storage& storage_;
-    ConstBufferSequence buffers_;
-    WriteHandler handler_;
-  };
-
-  template <typename ConstBufferSequence, typename WriteHandler>
-  inline void* asio_handler_allocate(std::size_t size,
-      buffered_write_some_handler<
-        ConstBufferSequence, WriteHandler>* this_handler)
-  {
-    return asio_handler_alloc_helpers::allocate(
-        size, this_handler->handler_);
-  }
-
-  template <typename ConstBufferSequence, typename WriteHandler>
-  inline void asio_handler_deallocate(void* pointer, std::size_t size,
-      buffered_write_some_handler<
-        ConstBufferSequence, WriteHandler>* this_handler)
-  {
-    asio_handler_alloc_helpers::deallocate(
-        pointer, size, this_handler->handler_);
-  }
-
-  template <typename ConstBufferSequence, typename WriteHandler>
-  inline bool asio_handler_is_continuation(
-      buffered_write_some_handler<
-        ConstBufferSequence, WriteHandler>* this_handler)
-  {
-    return asio_handler_cont_helpers::is_continuation(
-          this_handler->handler_);
-  }
-
-  template <typename Function, typename ConstBufferSequence,
-      typename WriteHandler>
-  inline void asio_handler_invoke(Function& function,
-      buffered_write_some_handler<
-        ConstBufferSequence, WriteHandler>* this_handler)
-  {
-    asio_handler_invoke_helpers::invoke(
-        function, this_handler->handler_);
-  }
-
-  template <typename Function, typename ConstBufferSequence,
-      typename WriteHandler>
-  inline void asio_handler_invoke(const Function& function,
-      buffered_write_some_handler<
-        ConstBufferSequence, WriteHandler>* this_handler)
-  {
-    asio_handler_invoke_helpers::invoke(
-        function, this_handler->handler_);
-  }
-} // namespace detail
-
-template <typename Stream>
-template <typename ConstBufferSequence, typename WriteHandler>
-ASIO_INITFN_RESULT_TYPE(WriteHandler,
-    void (asio::error_code, std::size_t))
-buffered_write_stream<Stream>::async_write_some(
-    const ConstBufferSequence& buffers,
-    ASIO_MOVE_ARG(WriteHandler) handler)
-{
-  // If you get an error on the following line it means that your handler does
-  // not meet the documented type requirements for a WriteHandler.
-  ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
-  detail::async_result_init<
-    WriteHandler, void (asio::error_code, std::size_t)> init(
-      ASIO_MOVE_CAST(WriteHandler)(handler));
-
-  if (asio::buffer_size(buffers) == 0
-      || storage_.size() < storage_.capacity())
-  {
-    next_layer_.async_write_some(asio::const_buffers_1(0, 0),
-        detail::buffered_write_some_handler<
-          ConstBufferSequence, ASIO_HANDLER_TYPE(
-            WriteHandler, void (asio::error_code, std::size_t))>(
-            storage_, buffers, init.handler));
-  }
-  else
-  {
-    this->async_flush(detail::buffered_write_some_handler<
-          ConstBufferSequence, ASIO_HANDLER_TYPE(
-            WriteHandler, void (asio::error_code, std::size_t))>(
-            storage_, buffers, init.handler));
-  }
-
-  return init.result.get();
-}
-
-template <typename Stream>
-template <typename ConstBufferSequence>
-std::size_t buffered_write_stream<Stream>::copy(
-    const ConstBufferSequence& buffers)
-{
-  std::size_t orig_size = storage_.size();
-  std::size_t space_avail = storage_.capacity() - orig_size;
-  std::size_t bytes_avail = asio::buffer_size(buffers);
-  std::size_t length = bytes_avail < space_avail ? bytes_avail : space_avail;
-  storage_.resize(orig_size + length);
-  return asio::buffer_copy(
-      storage_.data() + orig_size, buffers, length);
-}
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IMPL_BUFFERED_WRITE_STREAM_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/connect.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/connect.hpp
deleted file mode 100644
index b2cec7a..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/connect.hpp
+++ /dev/null
@@ -1,428 +0,0 @@
-//
-// impl/connect.hpp
-// ~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IMPL_CONNECT_HPP
-#define ASIO_IMPL_CONNECT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/consuming_buffers.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_cont_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-namespace detail
-{
-  struct default_connect_condition
-  {
-    template <typename Iterator>
-    Iterator operator()(const asio::error_code&, Iterator next)
-    {
-      return next;
-    }
-  };
-}
-
-template <typename Protocol, typename SocketService, typename Iterator>
-Iterator connect(basic_socket<Protocol, SocketService>& s, Iterator begin)
-{
-  asio::error_code ec;
-  Iterator result = connect(s, begin, ec);
-  asio::detail::throw_error(ec, "connect");
-  return result;
-}
-
-template <typename Protocol, typename SocketService, typename Iterator>
-inline Iterator connect(basic_socket<Protocol, SocketService>& s,
-    Iterator begin, asio::error_code& ec)
-{
-  return connect(s, begin, Iterator(), detail::default_connect_condition(), ec);
-}
-
-template <typename Protocol, typename SocketService, typename Iterator>
-Iterator connect(basic_socket<Protocol, SocketService>& s,
-    Iterator begin, Iterator end)
-{
-  asio::error_code ec;
-  Iterator result = connect(s, begin, end, ec);
-  asio::detail::throw_error(ec, "connect");
-  return result;
-}
-
-template <typename Protocol, typename SocketService, typename Iterator>
-inline Iterator connect(basic_socket<Protocol, SocketService>& s,
-    Iterator begin, Iterator end, asio::error_code& ec)
-{
-  return connect(s, begin, end, detail::default_connect_condition(), ec);
-}
-
-template <typename Protocol, typename SocketService,
-    typename Iterator, typename ConnectCondition>
-Iterator connect(basic_socket<Protocol, SocketService>& s,
-    Iterator begin, ConnectCondition connect_condition)
-{
-  asio::error_code ec;
-  Iterator result = connect(s, begin, connect_condition, ec);
-  asio::detail::throw_error(ec, "connect");
-  return result;
-}
-
-template <typename Protocol, typename SocketService,
-    typename Iterator, typename ConnectCondition>
-inline Iterator connect(basic_socket<Protocol, SocketService>& s,
-    Iterator begin, ConnectCondition connect_condition,
-    asio::error_code& ec)
-{
-  return connect(s, begin, Iterator(), connect_condition, ec);
-}
-
-template <typename Protocol, typename SocketService,
-    typename Iterator, typename ConnectCondition>
-Iterator connect(basic_socket<Protocol, SocketService>& s,
-    Iterator begin, Iterator end, ConnectCondition connect_condition)
-{
-  asio::error_code ec;
-  Iterator result = connect(s, begin, end, connect_condition, ec);
-  asio::detail::throw_error(ec, "connect");
-  return result;
-}
-
-template <typename Protocol, typename SocketService,
-    typename Iterator, typename ConnectCondition>
-Iterator connect(basic_socket<Protocol, SocketService>& s,
-    Iterator begin, Iterator end, ConnectCondition connect_condition,
-    asio::error_code& ec)
-{
-  ec = asio::error_code();
-
-  for (Iterator iter = begin; iter != end; ++iter)
-  {
-    iter = connect_condition(ec, iter);
-    if (iter != end)
-    {
-      s.close(ec);
-      s.connect(*iter, ec);
-      if (!ec)
-        return iter;
-    }
-  }
-
-  if (!ec)
-    ec = asio::error::not_found;
-
-  return end;
-}
-
-namespace detail
-{
-  // Enable the empty base class optimisation for the connect condition.
-  template <typename ConnectCondition>
-  class base_from_connect_condition
-  {
-  protected:
-    explicit base_from_connect_condition(
-        const ConnectCondition& connect_condition)
-      : connect_condition_(connect_condition)
-    {
-    }
-
-    template <typename Iterator>
-    void check_condition(const asio::error_code& ec,
-        Iterator& iter, Iterator& end)
-    {
-      if (iter != end)
-        iter = connect_condition_(ec, static_cast<const Iterator&>(iter));
-    }
-
-  private:
-    ConnectCondition connect_condition_;
-  };
-
-  // The default_connect_condition implementation is essentially a no-op. This
-  // template specialisation lets us eliminate all costs associated with it.
-  template <>
-  class base_from_connect_condition<default_connect_condition>
-  {
-  protected:
-    explicit base_from_connect_condition(const default_connect_condition&)
-    {
-    }
-
-    template <typename Iterator>
-    void check_condition(const asio::error_code&, Iterator&, Iterator&)
-    {
-    }
-  };
-
-  template <typename Protocol, typename SocketService, typename Iterator,
-      typename ConnectCondition, typename ComposedConnectHandler>
-  class connect_op : base_from_connect_condition<ConnectCondition>
-  {
-  public:
-    connect_op(basic_socket<Protocol, SocketService>& sock,
-        const Iterator& begin, const Iterator& end,
-        const ConnectCondition& connect_condition,
-        ComposedConnectHandler& handler)
-      : base_from_connect_condition<ConnectCondition>(connect_condition),
-        socket_(sock),
-        iter_(begin),
-        end_(end),
-        start_(0),
-        handler_(ASIO_MOVE_CAST(ComposedConnectHandler)(handler))
-    {
-    }
-
-#if defined(ASIO_HAS_MOVE)
-    connect_op(const connect_op& other)
-      : base_from_connect_condition<ConnectCondition>(other),
-        socket_(other.socket_),
-        iter_(other.iter_),
-        end_(other.end_),
-        start_(other.start_),
-        handler_(other.handler_)
-    {
-    }
-
-    connect_op(connect_op&& other)
-      : base_from_connect_condition<ConnectCondition>(other),
-        socket_(other.socket_),
-        iter_(other.iter_),
-        end_(other.end_),
-        start_(other.start_),
-        handler_(ASIO_MOVE_CAST(ComposedConnectHandler)(other.handler_))
-    {
-    }
-#endif // defined(ASIO_HAS_MOVE)
-
-    void operator()(asio::error_code ec, int start = 0)
-    {
-      switch (start_ = start)
-      {
-        case 1:
-        for (;;)
-        {
-          this->check_condition(ec, iter_, end_);
-
-          if (iter_ != end_)
-          {
-            socket_.close(ec);
-            socket_.async_connect(*iter_,
-                ASIO_MOVE_CAST(connect_op)(*this));
-            return;
-          }
-
-          if (start)
-          {
-            ec = asio::error::not_found;
-            socket_.get_io_service().post(detail::bind_handler(*this, ec));
-            return;
-          }
-
-          default:
-
-          if (iter_ == end_)
-            break;
-
-          if (!socket_.is_open())
-          {
-            ec = asio::error::operation_aborted;
-            break;
-          }
-
-          if (!ec)
-            break;
-
-          ++iter_;
-        }
-
-        handler_(static_cast<const asio::error_code&>(ec),
-            static_cast<const Iterator&>(iter_));
-      }
-    }
-
-  //private:
-    basic_socket<Protocol, SocketService>& socket_;
-    Iterator iter_;
-    Iterator end_;
-    int start_;
-    ComposedConnectHandler handler_;
-  };
-
-  template <typename Protocol, typename SocketService, typename Iterator,
-      typename ConnectCondition, typename ComposedConnectHandler>
-  inline void* asio_handler_allocate(std::size_t size,
-      connect_op<Protocol, SocketService, Iterator,
-        ConnectCondition, ComposedConnectHandler>* this_handler)
-  {
-    return asio_handler_alloc_helpers::allocate(
-        size, this_handler->handler_);
-  }
-
-  template <typename Protocol, typename SocketService, typename Iterator,
-      typename ConnectCondition, typename ComposedConnectHandler>
-  inline void asio_handler_deallocate(void* pointer, std::size_t size,
-      connect_op<Protocol, SocketService, Iterator,
-        ConnectCondition, ComposedConnectHandler>* this_handler)
-  {
-    asio_handler_alloc_helpers::deallocate(
-        pointer, size, this_handler->handler_);
-  }
-
-  template <typename Protocol, typename SocketService, typename Iterator,
-      typename ConnectCondition, typename ComposedConnectHandler>
-  inline bool asio_handler_is_continuation(
-      connect_op<Protocol, SocketService, Iterator,
-        ConnectCondition, ComposedConnectHandler>* this_handler)
-  {
-    return asio_handler_cont_helpers::is_continuation(
-        this_handler->handler_);
-  }
-
-  template <typename Function, typename Protocol,
-      typename SocketService, typename Iterator,
-      typename ConnectCondition, typename ComposedConnectHandler>
-  inline void asio_handler_invoke(Function& function,
-      connect_op<Protocol, SocketService, Iterator,
-        ConnectCondition, ComposedConnectHandler>* this_handler)
-  {
-    asio_handler_invoke_helpers::invoke(
-        function, this_handler->handler_);
-  }
-
-  template <typename Function, typename Protocol,
-      typename SocketService, typename Iterator,
-      typename ConnectCondition, typename ComposedConnectHandler>
-  inline void asio_handler_invoke(const Function& function,
-      connect_op<Protocol, SocketService, Iterator,
-        ConnectCondition, ComposedConnectHandler>* this_handler)
-  {
-    asio_handler_invoke_helpers::invoke(
-        function, this_handler->handler_);
-  }
-} // namespace detail
-
-template <typename Protocol, typename SocketService,
-    typename Iterator, typename ComposedConnectHandler>
-inline ASIO_INITFN_RESULT_TYPE(ComposedConnectHandler,
-    void (asio::error_code, Iterator))
-async_connect(basic_socket<Protocol, SocketService>& s,
-    Iterator begin, ASIO_MOVE_ARG(ComposedConnectHandler) handler)
-{
-  // If you get an error on the following line it means that your handler does
-  // not meet the documented type requirements for a ComposedConnectHandler.
-  ASIO_COMPOSED_CONNECT_HANDLER_CHECK(
-      ComposedConnectHandler, handler, Iterator) type_check;
-
-  detail::async_result_init<ComposedConnectHandler,
-    void (asio::error_code, Iterator)> init(
-      ASIO_MOVE_CAST(ComposedConnectHandler)(handler));
-
-  detail::connect_op<Protocol, SocketService, Iterator,
-    detail::default_connect_condition, ASIO_HANDLER_TYPE(
-      ComposedConnectHandler, void (asio::error_code, Iterator))>(s,
-        begin, Iterator(), detail::default_connect_condition(), init.handler)(
-          asio::error_code(), 1);
-
-  return init.result.get();
-}
-
-template <typename Protocol, typename SocketService,
-    typename Iterator, typename ComposedConnectHandler>
-inline ASIO_INITFN_RESULT_TYPE(ComposedConnectHandler,
-    void (asio::error_code, Iterator))
-async_connect(basic_socket<Protocol, SocketService>& s,
-    Iterator begin, Iterator end,
-    ASIO_MOVE_ARG(ComposedConnectHandler) handler)
-{
-  // If you get an error on the following line it means that your handler does
-  // not meet the documented type requirements for a ComposedConnectHandler.
-  ASIO_COMPOSED_CONNECT_HANDLER_CHECK(
-      ComposedConnectHandler, handler, Iterator) type_check;
-
-  detail::async_result_init<ComposedConnectHandler,
-    void (asio::error_code, Iterator)> init(
-      ASIO_MOVE_CAST(ComposedConnectHandler)(handler));
-
-  detail::connect_op<Protocol, SocketService, Iterator,
-    detail::default_connect_condition, ASIO_HANDLER_TYPE(
-      ComposedConnectHandler, void (asio::error_code, Iterator))>(s,
-        begin, end, detail::default_connect_condition(), init.handler)(
-          asio::error_code(), 1);
-
-  return init.result.get();
-}
-
-template <typename Protocol, typename SocketService, typename Iterator,
-    typename ConnectCondition, typename ComposedConnectHandler>
-inline ASIO_INITFN_RESULT_TYPE(ComposedConnectHandler,
-    void (asio::error_code, Iterator))
-async_connect(basic_socket<Protocol, SocketService>& s,
-    Iterator begin, ConnectCondition connect_condition,
-    ASIO_MOVE_ARG(ComposedConnectHandler) handler)
-{
-  // If you get an error on the following line it means that your handler does
-  // not meet the documented type requirements for a ComposedConnectHandler.
-  ASIO_COMPOSED_CONNECT_HANDLER_CHECK(
-      ComposedConnectHandler, handler, Iterator) type_check;
-
-  detail::async_result_init<ComposedConnectHandler,
-    void (asio::error_code, Iterator)> init(
-      ASIO_MOVE_CAST(ComposedConnectHandler)(handler));
-
-  detail::connect_op<Protocol, SocketService, Iterator,
-    ConnectCondition, ASIO_HANDLER_TYPE(
-      ComposedConnectHandler, void (asio::error_code, Iterator))>(s,
-        begin, Iterator(), connect_condition, init.handler)(
-          asio::error_code(), 1);
-
-  return init.result.get();
-}
-
-template <typename Protocol, typename SocketService, typename Iterator,
-    typename ConnectCondition, typename ComposedConnectHandler>
-inline ASIO_INITFN_RESULT_TYPE(ComposedConnectHandler,
-    void (asio::error_code, Iterator))
-async_connect(basic_socket<Protocol, SocketService>& s,
-    Iterator begin, Iterator end, ConnectCondition connect_condition,
-    ASIO_MOVE_ARG(ComposedConnectHandler) handler)
-{
-  // If you get an error on the following line it means that your handler does
-  // not meet the documented type requirements for a ComposedConnectHandler.
-  ASIO_COMPOSED_CONNECT_HANDLER_CHECK(
-      ComposedConnectHandler, handler, Iterator) type_check;
-
-  detail::async_result_init<ComposedConnectHandler,
-    void (asio::error_code, Iterator)> init(
-      ASIO_MOVE_CAST(ComposedConnectHandler)(handler));
-
-  detail::connect_op<Protocol, SocketService, Iterator,
-    ConnectCondition, ASIO_HANDLER_TYPE(
-      ComposedConnectHandler, void (asio::error_code, Iterator))>(s,
-        begin, end, connect_condition, init.handler)(
-          asio::error_code(), 1);
-
-  return init.result.get();
-}
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IMPL_CONNECT_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/error.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/error.ipp
deleted file mode 100644
index fc59d0b..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/error.ipp
+++ /dev/null
@@ -1,128 +0,0 @@
-//
-// impl/error.ipp
-// ~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IMPL_ERROR_IPP
-#define ASIO_IMPL_ERROR_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <string>
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace error {
-
-#if !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-
-namespace detail {
-
-class netdb_category : public asio::error_category
-{
-public:
-  const char* name() const ASIO_ERROR_CATEGORY_NOEXCEPT
-  {
-    return "asio.netdb";
-  }
-
-  std::string message(int value) const
-  {
-    if (value == error::host_not_found)
-      return "Host not found (authoritative)";
-    if (value == error::host_not_found_try_again)
-      return "Host not found (non-authoritative), try again later";
-    if (value == error::no_data)
-      return "The query is valid, but it does not have associated data";
-    if (value == error::no_recovery)
-      return "A non-recoverable error occurred during database lookup";
-    return "asio.netdb error";
-  }
-};
-
-} // namespace detail
-
-const asio::error_category& get_netdb_category()
-{
-  static detail::netdb_category instance;
-  return instance;
-}
-
-namespace detail {
-
-class addrinfo_category : public asio::error_category
-{
-public:
-  const char* name() const ASIO_ERROR_CATEGORY_NOEXCEPT
-  {
-    return "asio.addrinfo";
-  }
-
-  std::string message(int value) const
-  {
-    if (value == error::service_not_found)
-      return "Service not found";
-    if (value == error::socket_type_not_supported)
-      return "Socket type not supported";
-    return "asio.addrinfo error";
-  }
-};
-
-} // namespace detail
-
-const asio::error_category& get_addrinfo_category()
-{
-  static detail::addrinfo_category instance;
-  return instance;
-}
-
-#endif // !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-
-namespace detail {
-
-class misc_category : public asio::error_category
-{
-public:
-  const char* name() const ASIO_ERROR_CATEGORY_NOEXCEPT
-  {
-    return "asio.misc";
-  }
-
-  std::string message(int value) const
-  {
-    if (value == error::already_open)
-      return "Already open";
-    if (value == error::eof)
-      return "End of file";
-    if (value == error::not_found)
-      return "Element not found";
-    if (value == error::fd_set_failure)
-      return "The descriptor does not fit into the select call's fd_set";
-    return "asio.misc error";
-  }
-};
-
-} // namespace detail
-
-const asio::error_category& get_misc_category()
-{
-  static detail::misc_category instance;
-  return instance;
-}
-
-} // namespace error
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IMPL_ERROR_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/error_code.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/error_code.ipp
deleted file mode 100644
index ccb70dd..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/error_code.ipp
+++ /dev/null
@@ -1,128 +0,0 @@
-//
-// impl/error_code.ipp
-// ~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IMPL_ERROR_CODE_IPP
-#define ASIO_IMPL_ERROR_CODE_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-# include <winerror.h>
-#elif defined(ASIO_WINDOWS_RUNTIME)
-# include <windows.h>
-#else
-# include <cerrno>
-# include <cstring>
-# include <string>
-#endif
-#include "asio/detail/local_free_on_block_exit.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/error_code.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-class system_category : public error_category
-{
-public:
-  const char* name() const ASIO_ERROR_CATEGORY_NOEXCEPT
-  {
-    return "asio.system";
-  }
-
-  std::string message(int value) const
-  {
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-    char* msg = 0;
-    DWORD length = ::FormatMessageA(FORMAT_MESSAGE_ALLOCATE_BUFFER
-        | FORMAT_MESSAGE_FROM_SYSTEM
-        | FORMAT_MESSAGE_IGNORE_INSERTS, 0, value,
-        MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (char*)&msg, 0, 0);
-    detail::local_free_on_block_exit local_free_obj(msg);
-    if (length && msg[length - 1] == '\n')
-      msg[--length] = '\0';
-    if (length && msg[length - 1] == '\r')
-      msg[--length] = '\0';
-    if (length)
-      return msg;
-    else
-      return "asio.system error";
-#elif defined(ASIO_WINDOWS_RUNTIME)
-    std::wstring wmsg(128, wchar_t());
-    for (;;)
-    {
-      DWORD wlength = ::FormatMessageW(FORMAT_MESSAGE_FROM_SYSTEM
-          | FORMAT_MESSAGE_IGNORE_INSERTS, 0, value,
-          MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), &wmsg[0], wmsg.size(), 0);
-      if (wlength == 0 && ::GetLastError() == ERROR_INSUFFICIENT_BUFFER)
-      {
-        wmsg.resize(wmsg.size() + wmsg.size() / 2);
-        continue;
-      }
-      if (wlength && wmsg[wlength - 1] == '\n')
-        --wlength;
-      if (wlength && wmsg[wlength - 1] == '\r')
-        --wlength;
-      if (wlength)
-      {
-        std::string msg(wlength * 2, char());
-        int length = ::WideCharToMultiByte(CP_ACP, 0,
-            wmsg.c_str(), static_cast<int>(wlength),
-            &msg[0], static_cast<int>(wlength * 2), 0, 0);
-        if (length <= 0)
-          return "asio.system error";
-        msg.resize(static_cast<std::size_t>(length));
-        return msg;
-      }
-      else
-        return "asio.system error";
-    }
-#else // defined(ASIO_WINDOWS)
-#if !defined(__sun)
-    if (value == ECANCELED)
-      return "Operation aborted.";
-#endif // !defined(__sun)
-#if defined(__sun) || defined(__QNX__) || defined(__SYMBIAN32__)
-    using namespace std;
-    return strerror(value);
-#elif defined(__MACH__) && defined(__APPLE__) \
-  || defined(__NetBSD__) || defined(__FreeBSD__) || defined(__OpenBSD__) \
-  || defined(_AIX) || defined(__hpux) || defined(__osf__) \
-  || defined(__ANDROID__)
-    char buf[256] = "";
-    using namespace std;
-    strerror_r(value, buf, sizeof(buf));
-    return buf;
-#else
-    char buf[256] = "";
-    return strerror_r(value, buf, sizeof(buf));
-#endif
-#endif // defined(ASIO_WINDOWS)
-  }
-};
-
-} // namespace detail
-
-const error_category& system_category()
-{
-  static detail::system_category instance;
-  return instance;
-}
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IMPL_ERROR_CODE_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/handler_alloc_hook.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/handler_alloc_hook.ipp
deleted file mode 100644
index 3cff792..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/handler_alloc_hook.ipp
+++ /dev/null
@@ -1,77 +0,0 @@
-//
-// impl/handler_alloc_hook.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IMPL_HANDLER_ALLOC_HOOK_IPP
-#define ASIO_IMPL_HANDLER_ALLOC_HOOK_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/call_stack.hpp"
-#include "asio/handler_alloc_hook.hpp"
-
-#if !defined(ASIO_DISABLE_SMALL_BLOCK_RECYCLING)
-# if defined(ASIO_HAS_IOCP)
-#  include "asio/detail/win_iocp_thread_info.hpp"
-# else // defined(ASIO_HAS_IOCP)
-#  include "asio/detail/task_io_service_thread_info.hpp"
-# endif // defined(ASIO_HAS_IOCP)
-#endif // !defined(ASIO_DISABLE_SMALL_BLOCK_RECYCLING)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-#if defined(ASIO_HAS_IOCP)
-namespace detail { class win_iocp_io_service; }
-#endif // defined(ASIO_HAS_IOCP)
-
-void* asio_handler_allocate(std::size_t size, ...)
-{
-#if !defined(ASIO_DISABLE_SMALL_BLOCK_RECYCLING)
-# if defined(ASIO_HAS_IOCP)
-  typedef detail::win_iocp_io_service io_service_impl;
-  typedef detail::win_iocp_thread_info thread_info;
-# else // defined(ASIO_HAS_IOCP)
-  typedef detail::task_io_service io_service_impl;
-  typedef detail::task_io_service_thread_info thread_info;
-# endif // defined(ASIO_HAS_IOCP)
-  typedef detail::call_stack<io_service_impl, thread_info> call_stack;
-  return thread_info::allocate(call_stack::top(), size);
-#else // !defined(ASIO_DISABLE_SMALL_BLOCK_RECYCLING)
-  return ::operator new(size);
-#endif // !defined(ASIO_DISABLE_SMALL_BLOCK_RECYCLING)
-}
-
-void asio_handler_deallocate(void* pointer, std::size_t size, ...)
-{
-#if !defined(ASIO_DISABLE_SMALL_BLOCK_RECYCLING)
-# if defined(ASIO_HAS_IOCP)
-  typedef detail::win_iocp_io_service io_service_impl;
-  typedef detail::win_iocp_thread_info thread_info;
-# else // defined(ASIO_HAS_IOCP)
-  typedef detail::task_io_service io_service_impl;
-  typedef detail::task_io_service_thread_info thread_info;
-# endif // defined(ASIO_HAS_IOCP)
-  typedef detail::call_stack<io_service_impl, thread_info> call_stack;
-  thread_info::deallocate(call_stack::top(), pointer, size);
-#else // !defined(ASIO_DISABLE_SMALL_BLOCK_RECYCLING)
-  (void)size;
-  ::operator delete(pointer);
-#endif // !defined(ASIO_DISABLE_SMALL_BLOCK_RECYCLING)
-}
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IMPL_HANDLER_ALLOC_HOOK_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/io_service.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/io_service.hpp
deleted file mode 100644
index b20f546..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/io_service.hpp
+++ /dev/null
@@ -1,152 +0,0 @@
-//
-// impl/io_service.hpp
-// ~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IMPL_IO_SERVICE_HPP
-#define ASIO_IMPL_IO_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/service_registry.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-template <typename Service>
-inline Service& use_service(io_service& ios)
-{
-  // Check that Service meets the necessary type requirements.
-  (void)static_cast<io_service::service*>(static_cast<Service*>(0));
-  (void)static_cast<const io_service::id*>(&Service::id);
-
-  return ios.service_registry_->template use_service<Service>();
-}
-
-template <>
-inline detail::io_service_impl& use_service<detail::io_service_impl>(
-    io_service& ios)
-{
-  return ios.impl_;
-}
-
-template <typename Service>
-inline void add_service(io_service& ios, Service* svc)
-{
-  // Check that Service meets the necessary type requirements.
-  (void)static_cast<io_service::service*>(static_cast<Service*>(0));
-  (void)static_cast<const io_service::id*>(&Service::id);
-
-  ios.service_registry_->template add_service<Service>(svc);
-}
-
-template <typename Service>
-inline bool has_service(io_service& ios)
-{
-  // Check that Service meets the necessary type requirements.
-  (void)static_cast<io_service::service*>(static_cast<Service*>(0));
-  (void)static_cast<const io_service::id*>(&Service::id);
-
-  return ios.service_registry_->template has_service<Service>();
-}
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HAS_IOCP)
-# include "asio/detail/win_iocp_io_service.hpp"
-#else
-# include "asio/detail/task_io_service.hpp"
-#endif
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-template <typename CompletionHandler>
-inline ASIO_INITFN_RESULT_TYPE(CompletionHandler, void ())
-io_service::dispatch(ASIO_MOVE_ARG(CompletionHandler) handler)
-{
-  // If you get an error on the following line it means that your handler does
-  // not meet the documented type requirements for a CompletionHandler.
-  ASIO_COMPLETION_HANDLER_CHECK(CompletionHandler, handler) type_check;
-
-  detail::async_result_init<
-    CompletionHandler, void ()> init(
-      ASIO_MOVE_CAST(CompletionHandler)(handler));
-
-  impl_.dispatch(init.handler);
-
-  return init.result.get();
-}
-
-template <typename CompletionHandler>
-inline ASIO_INITFN_RESULT_TYPE(CompletionHandler, void ())
-io_service::post(ASIO_MOVE_ARG(CompletionHandler) handler)
-{
-  // If you get an error on the following line it means that your handler does
-  // not meet the documented type requirements for a CompletionHandler.
-  ASIO_COMPLETION_HANDLER_CHECK(CompletionHandler, handler) type_check;
-
-  detail::async_result_init<
-    CompletionHandler, void ()> init(
-      ASIO_MOVE_CAST(CompletionHandler)(handler));
-
-  impl_.post(init.handler);
-
-  return init.result.get();
-}
-
-template <typename Handler>
-#if defined(GENERATING_DOCUMENTATION)
-unspecified
-#else
-inline detail::wrapped_handler<io_service&, Handler>
-#endif
-io_service::wrap(Handler handler)
-{
-  return detail::wrapped_handler<io_service&, Handler>(*this, handler);
-}
-
-inline io_service::work::work(asio::io_service& io_service)
-  : io_service_impl_(io_service.impl_)
-{
-  io_service_impl_.work_started();
-}
-
-inline io_service::work::work(const work& other)
-  : io_service_impl_(other.io_service_impl_)
-{
-  io_service_impl_.work_started();
-}
-
-inline io_service::work::~work()
-{
-  io_service_impl_.work_finished();
-}
-
-inline asio::io_service& io_service::work::get_io_service()
-{
-  return io_service_impl_.get_io_service();
-}
-
-inline asio::io_service& io_service::service::get_io_service()
-{
-  return owner_;
-}
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IMPL_IO_SERVICE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/io_service.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/io_service.ipp
deleted file mode 100644
index 952c1bd..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/io_service.ipp
+++ /dev/null
@@ -1,155 +0,0 @@
-//
-// impl/io_service.ipp
-// ~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IMPL_IO_SERVICE_IPP
-#define ASIO_IMPL_IO_SERVICE_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/io_service.hpp"
-#include "asio/detail/limits.hpp"
-#include "asio/detail/scoped_ptr.hpp"
-#include "asio/detail/service_registry.hpp"
-#include "asio/detail/throw_error.hpp"
-
-#if defined(ASIO_HAS_IOCP)
-# include "asio/detail/win_iocp_io_service.hpp"
-#else
-# include "asio/detail/task_io_service.hpp"
-#endif
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-io_service::io_service()
-  : service_registry_(new asio::detail::service_registry(
-        *this, static_cast<impl_type*>(0),
-        (std::numeric_limits<std::size_t>::max)())),
-    impl_(service_registry_->first_service<impl_type>())
-{
-}
-
-io_service::io_service(std::size_t concurrency_hint)
-  : service_registry_(new asio::detail::service_registry(
-        *this, static_cast<impl_type*>(0), concurrency_hint)),
-    impl_(service_registry_->first_service<impl_type>())
-{
-}
-
-io_service::~io_service()
-{
-  delete service_registry_;
-}
-
-std::size_t io_service::run()
-{
-  asio::error_code ec;
-  std::size_t s = impl_.run(ec);
-  asio::detail::throw_error(ec);
-  return s;
-}
-
-std::size_t io_service::run(asio::error_code& ec)
-{
-  return impl_.run(ec);
-}
-
-std::size_t io_service::run_one()
-{
-  asio::error_code ec;
-  std::size_t s = impl_.run_one(ec);
-  asio::detail::throw_error(ec);
-  return s;
-}
-
-std::size_t io_service::run_one(asio::error_code& ec)
-{
-  return impl_.run_one(ec);
-}
-
-std::size_t io_service::poll()
-{
-  asio::error_code ec;
-  std::size_t s = impl_.poll(ec);
-  asio::detail::throw_error(ec);
-  return s;
-}
-
-std::size_t io_service::poll(asio::error_code& ec)
-{
-  return impl_.poll(ec);
-}
-
-std::size_t io_service::poll_one()
-{
-  asio::error_code ec;
-  std::size_t s = impl_.poll_one(ec);
-  asio::detail::throw_error(ec);
-  return s;
-}
-
-std::size_t io_service::poll_one(asio::error_code& ec)
-{
-  return impl_.poll_one(ec);
-}
-
-void io_service::stop()
-{
-  impl_.stop();
-}
-
-bool io_service::stopped() const
-{
-  return impl_.stopped();
-}
-
-void io_service::reset()
-{
-  impl_.reset();
-}
-
-void io_service::notify_fork(asio::io_service::fork_event event)
-{
-  service_registry_->notify_fork(event);
-}
-
-io_service::service::service(asio::io_service& owner)
-  : owner_(owner),
-    next_(0)
-{
-}
-
-io_service::service::~service()
-{
-}
-
-void io_service::service::fork_service(asio::io_service::fork_event)
-{
-}
-
-service_already_exists::service_already_exists()
-  : std::logic_error("Service already exists.")
-{
-}
-
-invalid_service_owner::invalid_service_owner()
-  : std::logic_error("Invalid service owner.")
-{
-}
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IMPL_IO_SERVICE_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/read.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/read.hpp
deleted file mode 100644
index 159bb53..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/read.hpp
+++ /dev/null
@@ -1,753 +0,0 @@
-//
-// impl/read.hpp
-// ~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IMPL_READ_HPP
-#define ASIO_IMPL_READ_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include <algorithm>
-#include "asio/buffer.hpp"
-#include "asio/completion_condition.hpp"
-#include "asio/detail/array_fwd.hpp"
-#include "asio/detail/base_from_completion_cond.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/consuming_buffers.hpp"
-#include "asio/detail/dependent_type.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_cont_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-template <typename SyncReadStream, typename MutableBufferSequence,
-    typename CompletionCondition>
-std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers,
-    CompletionCondition completion_condition, asio::error_code& ec)
-{
-  ec = asio::error_code();
-  asio::detail::consuming_buffers<
-    mutable_buffer, MutableBufferSequence> tmp(buffers);
-  std::size_t total_transferred = 0;
-  tmp.prepare(detail::adapt_completion_condition_result(
-        completion_condition(ec, total_transferred)));
-  while (tmp.begin() != tmp.end())
-  {
-    std::size_t bytes_transferred = s.read_some(tmp, ec);
-    tmp.consume(bytes_transferred);
-    total_transferred += bytes_transferred;
-    tmp.prepare(detail::adapt_completion_condition_result(
-          completion_condition(ec, total_transferred)));
-  }
-  return total_transferred;
-}
-
-template <typename SyncReadStream, typename MutableBufferSequence>
-inline std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers)
-{
-  asio::error_code ec;
-  std::size_t bytes_transferred = read(s, buffers, transfer_all(), ec);
-  asio::detail::throw_error(ec, "read");
-  return bytes_transferred;
-}
-
-template <typename SyncReadStream, typename MutableBufferSequence>
-inline std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers,
-    asio::error_code& ec)
-{
-  return read(s, buffers, transfer_all(), ec);
-}
-
-template <typename SyncReadStream, typename MutableBufferSequence,
-    typename CompletionCondition>
-inline std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers,
-    CompletionCondition completion_condition)
-{
-  asio::error_code ec;
-  std::size_t bytes_transferred = read(s, buffers, completion_condition, ec);
-  asio::detail::throw_error(ec, "read");
-  return bytes_transferred;
-}
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-template <typename SyncReadStream, typename Allocator,
-    typename CompletionCondition>
-std::size_t read(SyncReadStream& s,
-    asio::basic_streambuf<Allocator>& b,
-    CompletionCondition completion_condition, asio::error_code& ec)
-{
-  ec = asio::error_code();
-  std::size_t total_transferred = 0;
-  std::size_t max_size = detail::adapt_completion_condition_result(
-        completion_condition(ec, total_transferred));
-  std::size_t bytes_available = read_size_helper(b, max_size);
-  while (bytes_available > 0)
-  {
-    std::size_t bytes_transferred = s.read_some(b.prepare(bytes_available), ec);
-    b.commit(bytes_transferred);
-    total_transferred += bytes_transferred;
-    max_size = detail::adapt_completion_condition_result(
-          completion_condition(ec, total_transferred));
-    bytes_available = read_size_helper(b, max_size);
-  }
-  return total_transferred;
-}
-
-template <typename SyncReadStream, typename Allocator>
-inline std::size_t read(SyncReadStream& s,
-    asio::basic_streambuf<Allocator>& b)
-{
-  asio::error_code ec;
-  std::size_t bytes_transferred = read(s, b, transfer_all(), ec);
-  asio::detail::throw_error(ec, "read");
-  return bytes_transferred;
-}
-
-template <typename SyncReadStream, typename Allocator>
-inline std::size_t read(SyncReadStream& s,
-    asio::basic_streambuf<Allocator>& b,
-    asio::error_code& ec)
-{
-  return read(s, b, transfer_all(), ec);
-}
-
-template <typename SyncReadStream, typename Allocator,
-    typename CompletionCondition>
-inline std::size_t read(SyncReadStream& s,
-    asio::basic_streambuf<Allocator>& b,
-    CompletionCondition completion_condition)
-{
-  asio::error_code ec;
-  std::size_t bytes_transferred = read(s, b, completion_condition, ec);
-  asio::detail::throw_error(ec, "read");
-  return bytes_transferred;
-}
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-namespace detail
-{
-  template <typename AsyncReadStream, typename MutableBufferSequence,
-      typename CompletionCondition, typename ReadHandler>
-  class read_op
-    : detail::base_from_completion_cond<CompletionCondition>
-  {
-  public:
-    read_op(AsyncReadStream& stream, const MutableBufferSequence& buffers,
-        CompletionCondition completion_condition, ReadHandler& handler)
-      : detail::base_from_completion_cond<
-          CompletionCondition>(completion_condition),
-        stream_(stream),
-        buffers_(buffers),
-        start_(0),
-        total_transferred_(0),
-        handler_(ASIO_MOVE_CAST(ReadHandler)(handler))
-    {
-    }
-
-#if defined(ASIO_HAS_MOVE)
-    read_op(const read_op& other)
-      : detail::base_from_completion_cond<CompletionCondition>(other),
-        stream_(other.stream_),
-        buffers_(other.buffers_),
-        start_(other.start_),
-        total_transferred_(other.total_transferred_),
-        handler_(other.handler_)
-    {
-    }
-
-    read_op(read_op&& other)
-      : detail::base_from_completion_cond<CompletionCondition>(other),
-        stream_(other.stream_),
-        buffers_(other.buffers_),
-        start_(other.start_),
-        total_transferred_(other.total_transferred_),
-        handler_(ASIO_MOVE_CAST(ReadHandler)(other.handler_))
-    {
-    }
-#endif // defined(ASIO_HAS_MOVE)
-
-    void operator()(const asio::error_code& ec,
-        std::size_t bytes_transferred, int start = 0)
-    {
-      switch (start_ = start)
-      {
-        case 1:
-        buffers_.prepare(this->check_for_completion(ec, total_transferred_));
-        for (;;)
-        {
-          stream_.async_read_some(buffers_,
-              ASIO_MOVE_CAST(read_op)(*this));
-          return; default:
-          total_transferred_ += bytes_transferred;
-          buffers_.consume(bytes_transferred);
-          buffers_.prepare(this->check_for_completion(ec, total_transferred_));
-          if ((!ec && bytes_transferred == 0)
-              || buffers_.begin() == buffers_.end())
-            break;
-        }
-
-        handler_(ec, static_cast<const std::size_t&>(total_transferred_));
-      }
-    }
-
-  //private:
-    AsyncReadStream& stream_;
-    asio::detail::consuming_buffers<
-      mutable_buffer, MutableBufferSequence> buffers_;
-    int start_;
-    std::size_t total_transferred_;
-    ReadHandler handler_;
-  };
-
-  template <typename AsyncReadStream,
-      typename CompletionCondition, typename ReadHandler>
-  class read_op<AsyncReadStream, asio::mutable_buffers_1,
-      CompletionCondition, ReadHandler>
-    : detail::base_from_completion_cond<CompletionCondition>
-  {
-  public:
-    read_op(AsyncReadStream& stream,
-        const asio::mutable_buffers_1& buffers,
-        CompletionCondition completion_condition, ReadHandler& handler)
-      : detail::base_from_completion_cond<
-          CompletionCondition>(completion_condition),
-        stream_(stream),
-        buffer_(buffers),
-        start_(0),
-        total_transferred_(0),
-        handler_(ASIO_MOVE_CAST(ReadHandler)(handler))
-    {
-    }
-
-#if defined(ASIO_HAS_MOVE)
-    read_op(const read_op& other)
-      : detail::base_from_completion_cond<CompletionCondition>(other),
-        stream_(other.stream_),
-        buffer_(other.buffer_),
-        start_(other.start_),
-        total_transferred_(other.total_transferred_),
-        handler_(other.handler_)
-    {
-    }
-
-    read_op(read_op&& other)
-      : detail::base_from_completion_cond<CompletionCondition>(other),
-        stream_(other.stream_),
-        buffer_(other.buffer_),
-        start_(other.start_),
-        total_transferred_(other.total_transferred_),
-        handler_(ASIO_MOVE_CAST(ReadHandler)(other.handler_))
-    {
-    }
-#endif // defined(ASIO_HAS_MOVE)
-
-    void operator()(const asio::error_code& ec,
-        std::size_t bytes_transferred, int start = 0)
-    {
-      std::size_t n = 0;
-      switch (start_ = start)
-      {
-        case 1:
-        n = this->check_for_completion(ec, total_transferred_);
-        for (;;)
-        {
-          stream_.async_read_some(
-              asio::buffer(buffer_ + total_transferred_, n),
-              ASIO_MOVE_CAST(read_op)(*this));
-          return; default:
-          total_transferred_ += bytes_transferred;
-          if ((!ec && bytes_transferred == 0)
-              || (n = this->check_for_completion(ec, total_transferred_)) == 0
-              || total_transferred_ == asio::buffer_size(buffer_))
-            break;
-        }
-
-        handler_(ec, static_cast<const std::size_t&>(total_transferred_));
-      }
-    }
-
-  //private:
-    AsyncReadStream& stream_;
-    asio::mutable_buffer buffer_;
-    int start_;
-    std::size_t total_transferred_;
-    ReadHandler handler_;
-  };
-
-  template <typename AsyncReadStream, typename Elem,
-      typename CompletionCondition, typename ReadHandler>
-  class read_op<AsyncReadStream, boost::array<Elem, 2>,
-      CompletionCondition, ReadHandler>
-    : detail::base_from_completion_cond<CompletionCondition>
-  {
-  public:
-    read_op(AsyncReadStream& stream, const boost::array<Elem, 2>& buffers,
-        CompletionCondition completion_condition, ReadHandler& handler)
-      : detail::base_from_completion_cond<
-          CompletionCondition>(completion_condition),
-        stream_(stream),
-        buffers_(buffers),
-        start_(0),
-        total_transferred_(0),
-        handler_(ASIO_MOVE_CAST(ReadHandler)(handler))
-    {
-    }
-
-#if defined(ASIO_HAS_MOVE)
-    read_op(const read_op& other)
-      : detail::base_from_completion_cond<CompletionCondition>(other),
-        stream_(other.stream_),
-        buffers_(other.buffers_),
-        start_(other.start_),
-        total_transferred_(other.total_transferred_),
-        handler_(other.handler_)
-    {
-    }
-
-    read_op(read_op&& other)
-      : detail::base_from_completion_cond<CompletionCondition>(other),
-        stream_(other.stream_),
-        buffers_(other.buffers_),
-        start_(other.start_),
-        total_transferred_(other.total_transferred_),
-        handler_(ASIO_MOVE_CAST(ReadHandler)(other.handler_))
-    {
-    }
-#endif // defined(ASIO_HAS_MOVE)
-
-    void operator()(const asio::error_code& ec,
-        std::size_t bytes_transferred, int start = 0)
-    {
-      typename asio::detail::dependent_type<Elem,
-          boost::array<asio::mutable_buffer, 2> >::type bufs = {{
-        asio::mutable_buffer(buffers_[0]),
-        asio::mutable_buffer(buffers_[1]) }};
-      std::size_t buffer_size0 = asio::buffer_size(bufs[0]);
-      std::size_t buffer_size1 = asio::buffer_size(bufs[1]);
-      std::size_t n = 0;
-      switch (start_ = start)
-      {
-        case 1:
-        n = this->check_for_completion(ec, total_transferred_);
-        for (;;)
-        {
-          bufs[0] = asio::buffer(bufs[0] + total_transferred_, n);
-          bufs[1] = asio::buffer(
-              bufs[1] + (total_transferred_ < buffer_size0
-                ? 0 : total_transferred_ - buffer_size0),
-              n - asio::buffer_size(bufs[0]));
-          stream_.async_read_some(bufs, ASIO_MOVE_CAST(read_op)(*this));
-          return; default:
-          total_transferred_ += bytes_transferred;
-          if ((!ec && bytes_transferred == 0)
-              || (n = this->check_for_completion(ec, total_transferred_)) == 0
-              || total_transferred_ == buffer_size0 + buffer_size1)
-            break;
-        }
-
-        handler_(ec, static_cast<const std::size_t&>(total_transferred_));
-      }
-    }
-
-  //private:
-    AsyncReadStream& stream_;
-    boost::array<Elem, 2> buffers_;
-    int start_;
-    std::size_t total_transferred_;
-    ReadHandler handler_;
-  };
-
-#if defined(ASIO_HAS_STD_ARRAY)
-
-  template <typename AsyncReadStream, typename Elem,
-      typename CompletionCondition, typename ReadHandler>
-  class read_op<AsyncReadStream, std::array<Elem, 2>,
-      CompletionCondition, ReadHandler>
-    : detail::base_from_completion_cond<CompletionCondition>
-  {
-  public:
-    read_op(AsyncReadStream& stream, const std::array<Elem, 2>& buffers,
-        CompletionCondition completion_condition, ReadHandler& handler)
-      : detail::base_from_completion_cond<
-          CompletionCondition>(completion_condition),
-        stream_(stream),
-        buffers_(buffers),
-        start_(0),
-        total_transferred_(0),
-        handler_(ASIO_MOVE_CAST(ReadHandler)(handler))
-    {
-    }
-
-#if defined(ASIO_HAS_MOVE)
-    read_op(const read_op& other)
-      : detail::base_from_completion_cond<CompletionCondition>(other),
-        stream_(other.stream_),
-        buffers_(other.buffers_),
-        start_(other.start_),
-        total_transferred_(other.total_transferred_),
-        handler_(other.handler_)
-    {
-    }
-
-    read_op(read_op&& other)
-      : detail::base_from_completion_cond<CompletionCondition>(other),
-        stream_(other.stream_),
-        buffers_(other.buffers_),
-        start_(other.start_),
-        total_transferred_(other.total_transferred_),
-        handler_(ASIO_MOVE_CAST(ReadHandler)(other.handler_))
-    {
-    }
-#endif // defined(ASIO_HAS_MOVE)
-
-    void operator()(const asio::error_code& ec,
-        std::size_t bytes_transferred, int start = 0)
-    {
-      typename asio::detail::dependent_type<Elem,
-          std::array<asio::mutable_buffer, 2> >::type bufs = {{
-        asio::mutable_buffer(buffers_[0]),
-        asio::mutable_buffer(buffers_[1]) }};
-      std::size_t buffer_size0 = asio::buffer_size(bufs[0]);
-      std::size_t buffer_size1 = asio::buffer_size(bufs[1]);
-      std::size_t n = 0;
-      switch (start_ = start)
-      {
-        case 1:
-        n = this->check_for_completion(ec, total_transferred_);
-        for (;;)
-        {
-          bufs[0] = asio::buffer(bufs[0] + total_transferred_, n);
-          bufs[1] = asio::buffer(
-              bufs[1] + (total_transferred_ < buffer_size0
-                ? 0 : total_transferred_ - buffer_size0),
-              n - asio::buffer_size(bufs[0]));
-          stream_.async_read_some(bufs, ASIO_MOVE_CAST(read_op)(*this));
-          return; default:
-          total_transferred_ += bytes_transferred;
-          if ((!ec && bytes_transferred == 0)
-              || (n = this->check_for_completion(ec, total_transferred_)) == 0
-              || total_transferred_ == buffer_size0 + buffer_size1)
-            break;
-        }
-
-        handler_(ec, static_cast<const std::size_t&>(total_transferred_));
-      }
-    }
-
-  //private:
-    AsyncReadStream& stream_;
-    std::array<Elem, 2> buffers_;
-    int start_;
-    std::size_t total_transferred_;
-    ReadHandler handler_;
-  };
-
-#endif // defined(ASIO_HAS_STD_ARRAY)
-
-  template <typename AsyncReadStream, typename MutableBufferSequence,
-      typename CompletionCondition, typename ReadHandler>
-  inline void* asio_handler_allocate(std::size_t size,
-      read_op<AsyncReadStream, MutableBufferSequence,
-        CompletionCondition, ReadHandler>* this_handler)
-  {
-    return asio_handler_alloc_helpers::allocate(
-        size, this_handler->handler_);
-  }
-
-  template <typename AsyncReadStream, typename MutableBufferSequence,
-      typename CompletionCondition, typename ReadHandler>
-  inline void asio_handler_deallocate(void* pointer, std::size_t size,
-      read_op<AsyncReadStream, MutableBufferSequence,
-        CompletionCondition, ReadHandler>* this_handler)
-  {
-    asio_handler_alloc_helpers::deallocate(
-        pointer, size, this_handler->handler_);
-  }
-
-  template <typename AsyncReadStream, typename MutableBufferSequence,
-      typename CompletionCondition, typename ReadHandler>
-  inline bool asio_handler_is_continuation(
-      read_op<AsyncReadStream, MutableBufferSequence,
-        CompletionCondition, ReadHandler>* this_handler)
-  {
-    return this_handler->start_ == 0 ? true
-      : asio_handler_cont_helpers::is_continuation(
-          this_handler->handler_);
-  }
-
-  template <typename Function, typename AsyncReadStream,
-      typename MutableBufferSequence, typename CompletionCondition,
-      typename ReadHandler>
-  inline void asio_handler_invoke(Function& function,
-      read_op<AsyncReadStream, MutableBufferSequence,
-        CompletionCondition, ReadHandler>* this_handler)
-  {
-    asio_handler_invoke_helpers::invoke(
-        function, this_handler->handler_);
-  }
-
-  template <typename Function, typename AsyncReadStream,
-      typename MutableBufferSequence, typename CompletionCondition,
-      typename ReadHandler>
-  inline void asio_handler_invoke(const Function& function,
-      read_op<AsyncReadStream, MutableBufferSequence,
-        CompletionCondition, ReadHandler>* this_handler)
-  {
-    asio_handler_invoke_helpers::invoke(
-        function, this_handler->handler_);
-  }
-} // namespace detail
-
-template <typename AsyncReadStream, typename MutableBufferSequence,
-    typename CompletionCondition, typename ReadHandler>
-inline ASIO_INITFN_RESULT_TYPE(ReadHandler,
-    void (asio::error_code, std::size_t))
-async_read(AsyncReadStream& s, const MutableBufferSequence& buffers,
-    CompletionCondition completion_condition,
-    ASIO_MOVE_ARG(ReadHandler) handler)
-{
-  // If you get an error on the following line it means that your handler does
-  // not meet the documented type requirements for a ReadHandler.
-  ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
-  detail::async_result_init<
-    ReadHandler, void (asio::error_code, std::size_t)> init(
-      ASIO_MOVE_CAST(ReadHandler)(handler));
-
-  detail::read_op<AsyncReadStream, MutableBufferSequence,
-    CompletionCondition, ASIO_HANDLER_TYPE(
-      ReadHandler, void (asio::error_code, std::size_t))>(
-        s, buffers, completion_condition, init.handler)(
-          asio::error_code(), 0, 1);
-
-  return init.result.get();
-}
-
-template <typename AsyncReadStream, typename MutableBufferSequence,
-    typename ReadHandler>
-inline ASIO_INITFN_RESULT_TYPE(ReadHandler,
-    void (asio::error_code, std::size_t))
-async_read(AsyncReadStream& s, const MutableBufferSequence& buffers,
-    ASIO_MOVE_ARG(ReadHandler) handler)
-{
-  // If you get an error on the following line it means that your handler does
-  // not meet the documented type requirements for a ReadHandler.
-  ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
-  detail::async_result_init<
-    ReadHandler, void (asio::error_code, std::size_t)> init(
-      ASIO_MOVE_CAST(ReadHandler)(handler));
-
-  detail::read_op<AsyncReadStream, MutableBufferSequence,
-    detail::transfer_all_t, ASIO_HANDLER_TYPE(
-      ReadHandler, void (asio::error_code, std::size_t))>(
-        s, buffers, transfer_all(), init.handler)(
-          asio::error_code(), 0, 1);
-
-  return init.result.get();
-}
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-namespace detail
-{
-  template <typename AsyncReadStream, typename Allocator,
-      typename CompletionCondition, typename ReadHandler>
-  class read_streambuf_op
-    : detail::base_from_completion_cond<CompletionCondition>
-  {
-  public:
-    read_streambuf_op(AsyncReadStream& stream,
-        basic_streambuf<Allocator>& streambuf,
-        CompletionCondition completion_condition, ReadHandler& handler)
-      : detail::base_from_completion_cond<
-          CompletionCondition>(completion_condition),
-        stream_(stream),
-        streambuf_(streambuf),
-        start_(0),
-        total_transferred_(0),
-        handler_(ASIO_MOVE_CAST(ReadHandler)(handler))
-    {
-    }
-
-#if defined(ASIO_HAS_MOVE)
-    read_streambuf_op(const read_streambuf_op& other)
-      : detail::base_from_completion_cond<CompletionCondition>(other),
-        stream_(other.stream_),
-        streambuf_(other.streambuf_),
-        start_(other.start_),
-        total_transferred_(other.total_transferred_),
-        handler_(other.handler_)
-    {
-    }
-
-    read_streambuf_op(read_streambuf_op&& other)
-      : detail::base_from_completion_cond<CompletionCondition>(other),
-        stream_(other.stream_),
-        streambuf_(other.streambuf_),
-        start_(other.start_),
-        total_transferred_(other.total_transferred_),
-        handler_(ASIO_MOVE_CAST(ReadHandler)(other.handler_))
-    {
-    }
-#endif // defined(ASIO_HAS_MOVE)
-
-    void operator()(const asio::error_code& ec,
-        std::size_t bytes_transferred, int start = 0)
-    {
-      std::size_t max_size, bytes_available;
-      switch (start_ = start)
-      {
-        case 1:
-        max_size = this->check_for_completion(ec, total_transferred_);
-        bytes_available = read_size_helper(streambuf_, max_size);
-        for (;;)
-        {
-          stream_.async_read_some(streambuf_.prepare(bytes_available),
-              ASIO_MOVE_CAST(read_streambuf_op)(*this));
-          return; default:
-          total_transferred_ += bytes_transferred;
-          streambuf_.commit(bytes_transferred);
-          max_size = this->check_for_completion(ec, total_transferred_);
-          bytes_available = read_size_helper(streambuf_, max_size);
-          if ((!ec && bytes_transferred == 0) || bytes_available == 0)
-            break;
-        }
-
-        handler_(ec, static_cast<const std::size_t&>(total_transferred_));
-      }
-    }
-
-  //private:
-    AsyncReadStream& stream_;
-    asio::basic_streambuf<Allocator>& streambuf_;
-    int start_;
-    std::size_t total_transferred_;
-    ReadHandler handler_;
-  };
-
-  template <typename AsyncReadStream, typename Allocator,
-      typename CompletionCondition, typename ReadHandler>
-  inline void* asio_handler_allocate(std::size_t size,
-      read_streambuf_op<AsyncReadStream, Allocator,
-        CompletionCondition, ReadHandler>* this_handler)
-  {
-    return asio_handler_alloc_helpers::allocate(
-        size, this_handler->handler_);
-  }
-
-  template <typename AsyncReadStream, typename Allocator,
-      typename CompletionCondition, typename ReadHandler>
-  inline void asio_handler_deallocate(void* pointer, std::size_t size,
-      read_streambuf_op<AsyncReadStream, Allocator,
-        CompletionCondition, ReadHandler>* this_handler)
-  {
-    asio_handler_alloc_helpers::deallocate(
-        pointer, size, this_handler->handler_);
-  }
-
-  template <typename AsyncReadStream, typename Allocator,
-      typename CompletionCondition, typename ReadHandler>
-  inline bool asio_handler_is_continuation(
-      read_streambuf_op<AsyncReadStream, Allocator,
-        CompletionCondition, ReadHandler>* this_handler)
-  {
-    return this_handler->start_ == 0 ? true
-      : asio_handler_cont_helpers::is_continuation(
-          this_handler->handler_);
-  }
-
-  template <typename Function, typename AsyncReadStream,
-      typename Allocator, typename CompletionCondition, typename ReadHandler>
-  inline void asio_handler_invoke(Function& function,
-      read_streambuf_op<AsyncReadStream, Allocator,
-        CompletionCondition, ReadHandler>* this_handler)
-  {
-    asio_handler_invoke_helpers::invoke(
-        function, this_handler->handler_);
-  }
-
-  template <typename Function, typename AsyncReadStream,
-      typename Allocator, typename CompletionCondition, typename ReadHandler>
-  inline void asio_handler_invoke(const Function& function,
-      read_streambuf_op<AsyncReadStream, Allocator,
-        CompletionCondition, ReadHandler>* this_handler)
-  {
-    asio_handler_invoke_helpers::invoke(
-        function, this_handler->handler_);
-  }
-} // namespace detail
-
-template <typename AsyncReadStream, typename Allocator,
-    typename CompletionCondition, typename ReadHandler>
-inline ASIO_INITFN_RESULT_TYPE(ReadHandler,
-    void (asio::error_code, std::size_t))
-async_read(AsyncReadStream& s,
-    asio::basic_streambuf<Allocator>& b,
-    CompletionCondition completion_condition,
-    ASIO_MOVE_ARG(ReadHandler) handler)
-{
-  // If you get an error on the following line it means that your handler does
-  // not meet the documented type requirements for a ReadHandler.
-  ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
-  detail::async_result_init<
-    ReadHandler, void (asio::error_code, std::size_t)> init(
-      ASIO_MOVE_CAST(ReadHandler)(handler));
-
-  detail::read_streambuf_op<AsyncReadStream, Allocator,
-    CompletionCondition, ASIO_HANDLER_TYPE(
-      ReadHandler, void (asio::error_code, std::size_t))>(
-        s, b, completion_condition, init.handler)(
-          asio::error_code(), 0, 1);
-
-  return init.result.get();
-}
-
-template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
-inline ASIO_INITFN_RESULT_TYPE(ReadHandler,
-    void (asio::error_code, std::size_t))
-async_read(AsyncReadStream& s,
-    asio::basic_streambuf<Allocator>& b,
-    ASIO_MOVE_ARG(ReadHandler) handler)
-{
-  // If you get an error on the following line it means that your handler does
-  // not meet the documented type requirements for a ReadHandler.
-  ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
-  detail::async_result_init<
-    ReadHandler, void (asio::error_code, std::size_t)> init(
-      ASIO_MOVE_CAST(ReadHandler)(handler));
-
-  detail::read_streambuf_op<AsyncReadStream, Allocator,
-    detail::transfer_all_t, ASIO_HANDLER_TYPE(
-      ReadHandler, void (asio::error_code, std::size_t))>(
-        s, b, transfer_all(), init.handler)(
-          asio::error_code(), 0, 1);
-
-  return init.result.get();
-}
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IMPL_READ_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/read_at.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/read_at.hpp
deleted file mode 100644
index 723b9dd..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/read_at.hpp
+++ /dev/null
@@ -1,810 +0,0 @@
-//
-// impl/read_at.hpp
-// ~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IMPL_READ_AT_HPP
-#define ASIO_IMPL_READ_AT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include <algorithm>
-#include "asio/buffer.hpp"
-#include "asio/completion_condition.hpp"
-#include "asio/detail/array_fwd.hpp"
-#include "asio/detail/base_from_completion_cond.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/consuming_buffers.hpp"
-#include "asio/detail/dependent_type.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_cont_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-template <typename SyncRandomAccessReadDevice, typename MutableBufferSequence,
-    typename CompletionCondition>
-std::size_t read_at(SyncRandomAccessReadDevice& d,
-    uint64_t offset, const MutableBufferSequence& buffers,
-    CompletionCondition completion_condition, asio::error_code& ec)
-{
-  ec = asio::error_code();
-  asio::detail::consuming_buffers<
-    mutable_buffer, MutableBufferSequence> tmp(buffers);
-  std::size_t total_transferred = 0;
-  tmp.prepare(detail::adapt_completion_condition_result(
-        completion_condition(ec, total_transferred)));
-  while (tmp.begin() != tmp.end())
-  {
-    std::size_t bytes_transferred = d.read_some_at(
-        offset + total_transferred, tmp, ec);
-    tmp.consume(bytes_transferred);
-    total_transferred += bytes_transferred;
-    tmp.prepare(detail::adapt_completion_condition_result(
-          completion_condition(ec, total_transferred)));
-  }
-  return total_transferred;
-}
-
-template <typename SyncRandomAccessReadDevice, typename MutableBufferSequence>
-inline std::size_t read_at(SyncRandomAccessReadDevice& d,
-    uint64_t offset, const MutableBufferSequence& buffers)
-{
-  asio::error_code ec;
-  std::size_t bytes_transferred = read_at(
-      d, offset, buffers, transfer_all(), ec);
-  asio::detail::throw_error(ec, "read_at");
-  return bytes_transferred;
-}
-
-template <typename SyncRandomAccessReadDevice, typename MutableBufferSequence>
-inline std::size_t read_at(SyncRandomAccessReadDevice& d,
-    uint64_t offset, const MutableBufferSequence& buffers,
-    asio::error_code& ec)
-{
-  return read_at(d, offset, buffers, transfer_all(), ec);
-}
-
-template <typename SyncRandomAccessReadDevice, typename MutableBufferSequence,
-    typename CompletionCondition>
-inline std::size_t read_at(SyncRandomAccessReadDevice& d,
-    uint64_t offset, const MutableBufferSequence& buffers,
-    CompletionCondition completion_condition)
-{
-  asio::error_code ec;
-  std::size_t bytes_transferred = read_at(
-      d, offset, buffers, completion_condition, ec);
-  asio::detail::throw_error(ec, "read_at");
-  return bytes_transferred;
-}
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-template <typename SyncRandomAccessReadDevice, typename Allocator,
-    typename CompletionCondition>
-std::size_t read_at(SyncRandomAccessReadDevice& d,
-    uint64_t offset, asio::basic_streambuf<Allocator>& b,
-    CompletionCondition completion_condition, asio::error_code& ec)
-{
-  ec = asio::error_code();
-  std::size_t total_transferred = 0;
-  std::size_t max_size = detail::adapt_completion_condition_result(
-        completion_condition(ec, total_transferred));
-  std::size_t bytes_available = read_size_helper(b, max_size);
-  while (bytes_available > 0)
-  {
-    std::size_t bytes_transferred = d.read_some_at(
-        offset + total_transferred, b.prepare(bytes_available), ec);
-    b.commit(bytes_transferred);
-    total_transferred += bytes_transferred;
-    max_size = detail::adapt_completion_condition_result(
-          completion_condition(ec, total_transferred));
-    bytes_available = read_size_helper(b, max_size);
-  }
-  return total_transferred;
-}
-
-template <typename SyncRandomAccessReadDevice, typename Allocator>
-inline std::size_t read_at(SyncRandomAccessReadDevice& d,
-    uint64_t offset, asio::basic_streambuf<Allocator>& b)
-{
-  asio::error_code ec;
-  std::size_t bytes_transferred = read_at(
-      d, offset, b, transfer_all(), ec);
-  asio::detail::throw_error(ec, "read_at");
-  return bytes_transferred;
-}
-
-template <typename SyncRandomAccessReadDevice, typename Allocator>
-inline std::size_t read_at(SyncRandomAccessReadDevice& d,
-    uint64_t offset, asio::basic_streambuf<Allocator>& b,
-    asio::error_code& ec)
-{
-  return read_at(d, offset, b, transfer_all(), ec);
-}
-
-template <typename SyncRandomAccessReadDevice, typename Allocator,
-    typename CompletionCondition>
-inline std::size_t read_at(SyncRandomAccessReadDevice& d,
-    uint64_t offset, asio::basic_streambuf<Allocator>& b,
-    CompletionCondition completion_condition)
-{
-  asio::error_code ec;
-  std::size_t bytes_transferred = read_at(
-      d, offset, b, completion_condition, ec);
-  asio::detail::throw_error(ec, "read_at");
-  return bytes_transferred;
-}
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-namespace detail
-{
-  template <typename AsyncRandomAccessReadDevice,
-      typename MutableBufferSequence, typename CompletionCondition,
-      typename ReadHandler>
-  class read_at_op
-    : detail::base_from_completion_cond<CompletionCondition>
-  {
-  public:
-    read_at_op(AsyncRandomAccessReadDevice& device,
-        uint64_t offset, const MutableBufferSequence& buffers,
-        CompletionCondition completion_condition, ReadHandler& handler)
-      : detail::base_from_completion_cond<
-          CompletionCondition>(completion_condition),
-        device_(device),
-        offset_(offset),
-        buffers_(buffers),
-        start_(0),
-        total_transferred_(0),
-        handler_(ASIO_MOVE_CAST(ReadHandler)(handler))
-    {
-    }
-
-#if defined(ASIO_HAS_MOVE)
-    read_at_op(const read_at_op& other)
-      : detail::base_from_completion_cond<CompletionCondition>(other),
-        device_(other.device_),
-        offset_(other.offset_),
-        buffers_(other.buffers_),
-        start_(other.start_),
-        total_transferred_(other.total_transferred_),
-        handler_(other.handler_)
-    {
-    }
-
-    read_at_op(read_at_op&& other)
-      : detail::base_from_completion_cond<CompletionCondition>(other),
-        device_(other.device_),
-        offset_(other.offset_),
-        buffers_(other.buffers_),
-        start_(other.start_),
-        total_transferred_(other.total_transferred_),
-        handler_(ASIO_MOVE_CAST(ReadHandler)(other.handler_))
-    {
-    }
-#endif // defined(ASIO_HAS_MOVE)
-
-    void operator()(const asio::error_code& ec,
-        std::size_t bytes_transferred, int start = 0)
-    {
-      switch (start_ = start)
-      {
-        case 1:
-        buffers_.prepare(this->check_for_completion(ec, total_transferred_));
-        for (;;)
-        {
-          device_.async_read_some_at(offset_ + total_transferred_,
-              buffers_, ASIO_MOVE_CAST(read_at_op)(*this));
-          return; default:
-          total_transferred_ += bytes_transferred;
-          buffers_.consume(bytes_transferred);
-          buffers_.prepare(this->check_for_completion(ec, total_transferred_));
-          if ((!ec && bytes_transferred == 0)
-              || buffers_.begin() == buffers_.end())
-            break;
-        }
-
-        handler_(ec, static_cast<const std::size_t&>(total_transferred_));
-      }
-    }
-
-  //private:
-    AsyncRandomAccessReadDevice& device_;
-    uint64_t offset_;
-    asio::detail::consuming_buffers<
-      mutable_buffer, MutableBufferSequence> buffers_;
-    int start_;
-    std::size_t total_transferred_;
-    ReadHandler handler_;
-  };
-
-  template <typename AsyncRandomAccessReadDevice,
-      typename CompletionCondition, typename ReadHandler>
-  class read_at_op<AsyncRandomAccessReadDevice,
-      asio::mutable_buffers_1, CompletionCondition, ReadHandler>
-    : detail::base_from_completion_cond<CompletionCondition>
-  {
-  public:
-    read_at_op(AsyncRandomAccessReadDevice& device,
-        uint64_t offset, const asio::mutable_buffers_1& buffers,
-        CompletionCondition completion_condition, ReadHandler& handler)
-      : detail::base_from_completion_cond<
-          CompletionCondition>(completion_condition),
-        device_(device),
-        offset_(offset),
-        buffer_(buffers),
-        start_(0),
-        total_transferred_(0),
-        handler_(ASIO_MOVE_CAST(ReadHandler)(handler))
-    {
-    }
-
-#if defined(ASIO_HAS_MOVE)
-    read_at_op(const read_at_op& other)
-      : detail::base_from_completion_cond<CompletionCondition>(other),
-        device_(other.device_),
-        offset_(other.offset_),
-        buffer_(other.buffer_),
-        start_(other.start_),
-        total_transferred_(other.total_transferred_),
-        handler_(other.handler_)
-    {
-    }
-
-    read_at_op(read_at_op&& other)
-      : detail::base_from_completion_cond<CompletionCondition>(other),
-        device_(other.device_),
-        offset_(other.offset_),
-        buffer_(other.buffer_),
-        start_(other.start_),
-        total_transferred_(other.total_transferred_),
-        handler_(ASIO_MOVE_CAST(ReadHandler)(other.handler_))
-    {
-    }
-#endif // defined(ASIO_HAS_MOVE)
-
-    void operator()(const asio::error_code& ec,
-        std::size_t bytes_transferred, int start = 0)
-    {
-      std::size_t n = 0;
-      switch (start_ = start)
-      {
-        case 1:
-        n = this->check_for_completion(ec, total_transferred_);
-        for (;;)
-        {
-          device_.async_read_some_at(offset_ + total_transferred_,
-              asio::buffer(buffer_ + total_transferred_, n),
-              ASIO_MOVE_CAST(read_at_op)(*this));
-          return; default:
-          total_transferred_ += bytes_transferred;
-          if ((!ec && bytes_transferred == 0)
-              || (n = this->check_for_completion(ec, total_transferred_)) == 0
-              || total_transferred_ == asio::buffer_size(buffer_))
-            break;
-        }
-
-        handler_(ec, static_cast<const std::size_t&>(total_transferred_));
-      }
-    }
-
-  //private:
-    AsyncRandomAccessReadDevice& device_;
-    uint64_t offset_;
-    asio::mutable_buffer buffer_;
-    int start_;
-    std::size_t total_transferred_;
-    ReadHandler handler_;
-  };
-
-  template <typename AsyncRandomAccessReadDevice, typename Elem,
-      typename CompletionCondition, typename ReadHandler>
-  class read_at_op<AsyncRandomAccessReadDevice, boost::array<Elem, 2>,
-      CompletionCondition, ReadHandler>
-    : detail::base_from_completion_cond<CompletionCondition>
-  {
-  public:
-    read_at_op(AsyncRandomAccessReadDevice& device,
-        uint64_t offset, const boost::array<Elem, 2>& buffers,
-        CompletionCondition completion_condition, ReadHandler& handler)
-      : detail::base_from_completion_cond<
-          CompletionCondition>(completion_condition),
-        device_(device),
-        offset_(offset),
-        buffers_(buffers),
-        start_(0),
-        total_transferred_(0),
-        handler_(ASIO_MOVE_CAST(ReadHandler)(handler))
-    {
-    }
-
-#if defined(ASIO_HAS_MOVE)
-    read_at_op(const read_at_op& other)
-      : detail::base_from_completion_cond<CompletionCondition>(other),
-        device_(other.device_),
-        offset_(other.offset_),
-        buffers_(other.buffers_),
-        start_(other.start_),
-        total_transferred_(other.total_transferred_),
-        handler_(other.handler_)
-    {
-    }
-
-    read_at_op(read_at_op&& other)
-      : detail::base_from_completion_cond<CompletionCondition>(other),
-        device_(other.device_),
-        offset_(other.offset_),
-        buffers_(other.buffers_),
-        start_(other.start_),
-        total_transferred_(other.total_transferred_),
-        handler_(ASIO_MOVE_CAST(ReadHandler)(other.handler_))
-    {
-    }
-#endif // defined(ASIO_HAS_MOVE)
-
-    void operator()(const asio::error_code& ec,
-        std::size_t bytes_transferred, int start = 0)
-    {
-      typename asio::detail::dependent_type<Elem,
-          boost::array<asio::mutable_buffer, 2> >::type bufs = {{
-        asio::mutable_buffer(buffers_[0]),
-        asio::mutable_buffer(buffers_[1]) }};
-      std::size_t buffer_size0 = asio::buffer_size(bufs[0]);
-      std::size_t buffer_size1 = asio::buffer_size(bufs[1]);
-      std::size_t n = 0;
-      switch (start_ = start)
-      {
-        case 1:
-        n = this->check_for_completion(ec, total_transferred_);
-        for (;;)
-        {
-          bufs[0] = asio::buffer(bufs[0] + total_transferred_, n);
-          bufs[1] = asio::buffer(
-              bufs[1] + (total_transferred_ < buffer_size0
-                ? 0 : total_transferred_ - buffer_size0),
-              n - asio::buffer_size(bufs[0]));
-          device_.async_read_some_at(offset_ + total_transferred_,
-              bufs, ASIO_MOVE_CAST(read_at_op)(*this));
-          return; default:
-          total_transferred_ += bytes_transferred;
-          if ((!ec && bytes_transferred == 0)
-              || (n = this->check_for_completion(ec, total_transferred_)) == 0
-              || total_transferred_ == buffer_size0 + buffer_size1)
-            break;
-        }
-
-        handler_(ec, static_cast<const std::size_t&>(total_transferred_));
-      }
-    }
-
-  //private:
-    AsyncRandomAccessReadDevice& device_;
-    uint64_t offset_;
-    boost::array<Elem, 2> buffers_;
-    int start_;
-    std::size_t total_transferred_;
-    ReadHandler handler_;
-  };
-
-#if defined(ASIO_HAS_STD_ARRAY)
-
-  template <typename AsyncRandomAccessReadDevice, typename Elem,
-      typename CompletionCondition, typename ReadHandler>
-  class read_at_op<AsyncRandomAccessReadDevice, std::array<Elem, 2>,
-      CompletionCondition, ReadHandler>
-    : detail::base_from_completion_cond<CompletionCondition>
-  {
-  public:
-    read_at_op(AsyncRandomAccessReadDevice& device,
-        uint64_t offset, const std::array<Elem, 2>& buffers,
-        CompletionCondition completion_condition, ReadHandler& handler)
-      : detail::base_from_completion_cond<
-          CompletionCondition>(completion_condition),
-        device_(device),
-        offset_(offset),
-        buffers_(buffers),
-        start_(0),
-        total_transferred_(0),
-        handler_(ASIO_MOVE_CAST(ReadHandler)(handler))
-    {
-    }
-
-#if defined(ASIO_HAS_MOVE)
-    read_at_op(const read_at_op& other)
-      : detail::base_from_completion_cond<CompletionCondition>(other),
-        device_(other.device_),
-        offset_(other.offset_),
-        buffers_(other.buffers_),
-        start_(other.start_),
-        total_transferred_(other.total_transferred_),
-        handler_(other.handler_)
-    {
-    }
-
-    read_at_op(read_at_op&& other)
-      : detail::base_from_completion_cond<CompletionCondition>(other),
-        device_(other.device_),
-        offset_(other.offset_),
-        buffers_(other.buffers_),
-        start_(other.start_),
-        total_transferred_(other.total_transferred_),
-        handler_(ASIO_MOVE_CAST(ReadHandler)(other.handler_))
-    {
-    }
-#endif // defined(ASIO_HAS_MOVE)
-
-    void operator()(const asio::error_code& ec,
-        std::size_t bytes_transferred, int start = 0)
-    {
-      typename asio::detail::dependent_type<Elem,
-          std::array<asio::mutable_buffer, 2> >::type bufs = {{
-        asio::mutable_buffer(buffers_[0]),
-        asio::mutable_buffer(buffers_[1]) }};
-      std::size_t buffer_size0 = asio::buffer_size(bufs[0]);
-      std::size_t buffer_size1 = asio::buffer_size(bufs[1]);
-      std::size_t n = 0;
-      switch (start_ = start)
-      {
-        case 1:
-        n = this->check_for_completion(ec, total_transferred_);
-        for (;;)
-        {
-          bufs[0] = asio::buffer(bufs[0] + total_transferred_, n);
-          bufs[1] = asio::buffer(
-              bufs[1] + (total_transferred_ < buffer_size0
-                ? 0 : total_transferred_ - buffer_size0),
-              n - asio::buffer_size(bufs[0]));
-          device_.async_read_some_at(offset_ + total_transferred_,
-              bufs, ASIO_MOVE_CAST(read_at_op)(*this));
-          return; default:
-          total_transferred_ += bytes_transferred;
-          if ((!ec && bytes_transferred == 0)
-              || (n = this->check_for_completion(ec, total_transferred_)) == 0
-              || total_transferred_ == buffer_size0 + buffer_size1)
-            break;
-        }
-
-        handler_(ec, static_cast<const std::size_t&>(total_transferred_));
-      }
-    }
-
-  //private:
-    AsyncRandomAccessReadDevice& device_;
-    uint64_t offset_;
-    std::array<Elem, 2> buffers_;
-    int start_;
-    std::size_t total_transferred_;
-    ReadHandler handler_;
-  };
-
-#endif // defined(ASIO_HAS_STD_ARRAY)
-
-  template <typename AsyncRandomAccessReadDevice,
-      typename MutableBufferSequence, typename CompletionCondition,
-      typename ReadHandler>
-  inline void* asio_handler_allocate(std::size_t size,
-      read_at_op<AsyncRandomAccessReadDevice, MutableBufferSequence,
-        CompletionCondition, ReadHandler>* this_handler)
-  {
-    return asio_handler_alloc_helpers::allocate(
-        size, this_handler->handler_);
-  }
-
-  template <typename AsyncRandomAccessReadDevice,
-      typename MutableBufferSequence, typename CompletionCondition,
-      typename ReadHandler>
-  inline void asio_handler_deallocate(void* pointer, std::size_t size,
-      read_at_op<AsyncRandomAccessReadDevice, MutableBufferSequence,
-        CompletionCondition, ReadHandler>* this_handler)
-  {
-    asio_handler_alloc_helpers::deallocate(
-        pointer, size, this_handler->handler_);
-  }
-
-  template <typename AsyncRandomAccessReadDevice,
-      typename MutableBufferSequence, typename CompletionCondition,
-      typename ReadHandler>
-  inline bool asio_handler_is_continuation(
-      read_at_op<AsyncRandomAccessReadDevice, MutableBufferSequence,
-        CompletionCondition, ReadHandler>* this_handler)
-  {
-    return this_handler->start_ == 0 ? true
-      : asio_handler_cont_helpers::is_continuation(
-          this_handler->handler_);
-  }
-
-  template <typename Function, typename AsyncRandomAccessReadDevice,
-      typename MutableBufferSequence, typename CompletionCondition,
-      typename ReadHandler>
-  inline void asio_handler_invoke(Function& function,
-      read_at_op<AsyncRandomAccessReadDevice, MutableBufferSequence,
-        CompletionCondition, ReadHandler>* this_handler)
-  {
-    asio_handler_invoke_helpers::invoke(
-        function, this_handler->handler_);
-  }
-
-  template <typename Function, typename AsyncRandomAccessReadDevice,
-      typename MutableBufferSequence, typename CompletionCondition,
-      typename ReadHandler>
-  inline void asio_handler_invoke(const Function& function,
-      read_at_op<AsyncRandomAccessReadDevice, MutableBufferSequence,
-        CompletionCondition, ReadHandler>* this_handler)
-  {
-    asio_handler_invoke_helpers::invoke(
-        function, this_handler->handler_);
-  }
-
-  template <typename AsyncRandomAccessReadDevice,
-      typename MutableBufferSequence, typename CompletionCondition,
-      typename ReadHandler>
-  inline read_at_op<AsyncRandomAccessReadDevice,
-      MutableBufferSequence, CompletionCondition, ReadHandler>
-  make_read_at_op(AsyncRandomAccessReadDevice& d,
-      uint64_t offset, const MutableBufferSequence& buffers,
-      CompletionCondition completion_condition, ReadHandler handler)
-  {
-    return read_at_op<AsyncRandomAccessReadDevice,
-      MutableBufferSequence, CompletionCondition, ReadHandler>(
-        d, offset, buffers, completion_condition, handler);
-  }
-} // namespace detail
-
-template <typename AsyncRandomAccessReadDevice, typename MutableBufferSequence,
-    typename CompletionCondition, typename ReadHandler>
-inline ASIO_INITFN_RESULT_TYPE(ReadHandler,
-    void (asio::error_code, std::size_t))
-async_read_at(AsyncRandomAccessReadDevice& d,
-    uint64_t offset, const MutableBufferSequence& buffers,
-    CompletionCondition completion_condition,
-    ASIO_MOVE_ARG(ReadHandler) handler)
-{
-  // If you get an error on the following line it means that your handler does
-  // not meet the documented type requirements for a ReadHandler.
-  ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
-  detail::async_result_init<
-    ReadHandler, void (asio::error_code, std::size_t)> init(
-      ASIO_MOVE_CAST(ReadHandler)(handler));
-
-  detail::read_at_op<AsyncRandomAccessReadDevice, MutableBufferSequence,
-    CompletionCondition, ASIO_HANDLER_TYPE(ReadHandler,
-      void (asio::error_code, std::size_t))>(
-        d, offset, buffers, completion_condition, init.handler)(
-          asio::error_code(), 0, 1);
-
-  return init.result.get();
-}
-
-template <typename AsyncRandomAccessReadDevice, typename MutableBufferSequence,
-    typename ReadHandler>
-inline ASIO_INITFN_RESULT_TYPE(ReadHandler,
-    void (asio::error_code, std::size_t))
-async_read_at(AsyncRandomAccessReadDevice& d,
-    uint64_t offset, const MutableBufferSequence& buffers,
-    ASIO_MOVE_ARG(ReadHandler) handler)
-{
-  // If you get an error on the following line it means that your handler does
-  // not meet the documented type requirements for a ReadHandler.
-  ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
-  detail::async_result_init<
-    ReadHandler, void (asio::error_code, std::size_t)> init(
-      ASIO_MOVE_CAST(ReadHandler)(handler));
-
-  detail::read_at_op<AsyncRandomAccessReadDevice, MutableBufferSequence,
-    detail::transfer_all_t, ASIO_HANDLER_TYPE(ReadHandler,
-      void (asio::error_code, std::size_t))>(
-        d, offset, buffers, transfer_all(), init.handler)(
-          asio::error_code(), 0, 1);
-
-  return init.result.get();
-}
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-namespace detail
-{
-  template <typename AsyncRandomAccessReadDevice, typename Allocator,
-      typename CompletionCondition, typename ReadHandler>
-  class read_at_streambuf_op
-    : detail::base_from_completion_cond<CompletionCondition>
-  {
-  public:
-    read_at_streambuf_op(AsyncRandomAccessReadDevice& device,
-        uint64_t offset, basic_streambuf<Allocator>& streambuf,
-        CompletionCondition completion_condition, ReadHandler& handler)
-      : detail::base_from_completion_cond<
-          CompletionCondition>(completion_condition),
-        device_(device),
-        offset_(offset),
-        streambuf_(streambuf),
-        start_(0),
-        total_transferred_(0),
-        handler_(ASIO_MOVE_CAST(ReadHandler)(handler))
-    {
-    }
-
-#if defined(ASIO_HAS_MOVE)
-    read_at_streambuf_op(const read_at_streambuf_op& other)
-      : detail::base_from_completion_cond<CompletionCondition>(other),
-        device_(other.device_),
-        offset_(other.offset_),
-        streambuf_(other.streambuf_),
-        start_(other.start_),
-        total_transferred_(other.total_transferred_),
-        handler_(other.handler_)
-    {
-    }
-
-    read_at_streambuf_op(read_at_streambuf_op&& other)
-      : detail::base_from_completion_cond<CompletionCondition>(other),
-        device_(other.device_),
-        offset_(other.offset_),
-        streambuf_(other.streambuf_),
-        start_(other.start_),
-        total_transferred_(other.total_transferred_),
-        handler_(ASIO_MOVE_CAST(ReadHandler)(other.handler_))
-    {
-    }
-#endif // defined(ASIO_HAS_MOVE)
-
-    void operator()(const asio::error_code& ec,
-        std::size_t bytes_transferred, int start = 0)
-    {
-      std::size_t max_size, bytes_available;
-      switch (start_ = start)
-      {
-        case 1:
-        max_size = this->check_for_completion(ec, total_transferred_);
-        bytes_available = read_size_helper(streambuf_, max_size);
-        for (;;)
-        {
-          device_.async_read_some_at(offset_ + total_transferred_,
-              streambuf_.prepare(bytes_available),
-              ASIO_MOVE_CAST(read_at_streambuf_op)(*this));
-          return; default:
-          total_transferred_ += bytes_transferred;
-          streambuf_.commit(bytes_transferred);
-          max_size = this->check_for_completion(ec, total_transferred_);
-          bytes_available = read_size_helper(streambuf_, max_size);
-          if ((!ec && bytes_transferred == 0) || bytes_available == 0)
-            break;
-        }
-
-        handler_(ec, static_cast<const std::size_t&>(total_transferred_));
-      }
-    }
-
-  //private:
-    AsyncRandomAccessReadDevice& device_;
-    uint64_t offset_;
-    asio::basic_streambuf<Allocator>& streambuf_;
-    int start_;
-    std::size_t total_transferred_;
-    ReadHandler handler_;
-  };
-
-  template <typename AsyncRandomAccessReadDevice, typename Allocator,
-      typename CompletionCondition, typename ReadHandler>
-  inline void* asio_handler_allocate(std::size_t size,
-      read_at_streambuf_op<AsyncRandomAccessReadDevice, Allocator,
-        CompletionCondition, ReadHandler>* this_handler)
-  {
-    return asio_handler_alloc_helpers::allocate(
-        size, this_handler->handler_);
-  }
-
-  template <typename AsyncRandomAccessReadDevice, typename Allocator,
-      typename CompletionCondition, typename ReadHandler>
-  inline void asio_handler_deallocate(void* pointer, std::size_t size,
-      read_at_streambuf_op<AsyncRandomAccessReadDevice, Allocator,
-        CompletionCondition, ReadHandler>* this_handler)
-  {
-    asio_handler_alloc_helpers::deallocate(
-        pointer, size, this_handler->handler_);
-  }
-
-  template <typename AsyncRandomAccessReadDevice, typename Allocator,
-      typename CompletionCondition, typename ReadHandler>
-  inline bool asio_handler_is_continuation(
-      read_at_streambuf_op<AsyncRandomAccessReadDevice, Allocator,
-        CompletionCondition, ReadHandler>* this_handler)
-  {
-    return this_handler->start_ == 0 ? true
-      : asio_handler_cont_helpers::is_continuation(
-          this_handler->handler_);
-  }
-
-  template <typename Function, typename AsyncRandomAccessReadDevice,
-      typename Allocator, typename CompletionCondition, typename ReadHandler>
-  inline void asio_handler_invoke(Function& function,
-      read_at_streambuf_op<AsyncRandomAccessReadDevice, Allocator,
-        CompletionCondition, ReadHandler>* this_handler)
-  {
-    asio_handler_invoke_helpers::invoke(
-        function, this_handler->handler_);
-  }
-
-  template <typename Function, typename AsyncRandomAccessReadDevice,
-      typename Allocator, typename CompletionCondition, typename ReadHandler>
-  inline void asio_handler_invoke(const Function& function,
-      read_at_streambuf_op<AsyncRandomAccessReadDevice, Allocator,
-        CompletionCondition, ReadHandler>* this_handler)
-  {
-    asio_handler_invoke_helpers::invoke(
-        function, this_handler->handler_);
-  }
-} // namespace detail
-
-template <typename AsyncRandomAccessReadDevice, typename Allocator,
-    typename CompletionCondition, typename ReadHandler>
-inline ASIO_INITFN_RESULT_TYPE(ReadHandler,
-    void (asio::error_code, std::size_t))
-async_read_at(AsyncRandomAccessReadDevice& d,
-    uint64_t offset, asio::basic_streambuf<Allocator>& b,
-    CompletionCondition completion_condition,
-    ASIO_MOVE_ARG(ReadHandler) handler)
-{
-  // If you get an error on the following line it means that your handler does
-  // not meet the documented type requirements for a ReadHandler.
-  ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
-  detail::async_result_init<
-    ReadHandler, void (asio::error_code, std::size_t)> init(
-      ASIO_MOVE_CAST(ReadHandler)(handler));
-
-  detail::read_at_streambuf_op<AsyncRandomAccessReadDevice, Allocator,
-    CompletionCondition, ASIO_HANDLER_TYPE(ReadHandler,
-      void (asio::error_code, std::size_t))>(
-        d, offset, b, completion_condition, init.handler)(
-          asio::error_code(), 0, 1);
-
-  return init.result.get();
-}
-
-template <typename AsyncRandomAccessReadDevice, typename Allocator,
-    typename ReadHandler>
-inline ASIO_INITFN_RESULT_TYPE(ReadHandler,
-    void (asio::error_code, std::size_t))
-async_read_at(AsyncRandomAccessReadDevice& d,
-    uint64_t offset, asio::basic_streambuf<Allocator>& b,
-    ASIO_MOVE_ARG(ReadHandler) handler)
-{
-  // If you get an error on the following line it means that your handler does
-  // not meet the documented type requirements for a ReadHandler.
-  ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
-  detail::async_result_init<
-    ReadHandler, void (asio::error_code, std::size_t)> init(
-      ASIO_MOVE_CAST(ReadHandler)(handler));
-
-  detail::read_at_streambuf_op<AsyncRandomAccessReadDevice, Allocator,
-    detail::transfer_all_t, ASIO_HANDLER_TYPE(ReadHandler,
-      void (asio::error_code, std::size_t))>(
-        d, offset, b, transfer_all(), init.handler)(
-          asio::error_code(), 0, 1);
-
-  return init.result.get();
-}
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IMPL_READ_AT_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/read_until.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/read_until.hpp
deleted file mode 100644
index 763762d..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/read_until.hpp
+++ /dev/null
@@ -1,1147 +0,0 @@
-//
-// impl/read_until.hpp
-// ~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IMPL_READ_UNTIL_HPP
-#define ASIO_IMPL_READ_UNTIL_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include <algorithm>
-#include <string>
-#include <vector>
-#include <utility>
-#include "asio/buffer.hpp"
-#include "asio/buffers_iterator.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_cont_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/limits.hpp"
-#include "asio/detail/throw_error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-template <typename SyncReadStream, typename Allocator>
-inline std::size_t read_until(SyncReadStream& s,
-    asio::basic_streambuf<Allocator>& b, char delim)
-{
-  asio::error_code ec;
-  std::size_t bytes_transferred = read_until(s, b, delim, ec);
-  asio::detail::throw_error(ec, "read_until");
-  return bytes_transferred;
-}
-
-template <typename SyncReadStream, typename Allocator>
-std::size_t read_until(SyncReadStream& s,
-    asio::basic_streambuf<Allocator>& b, char delim,
-    asio::error_code& ec)
-{
-  std::size_t search_position = 0;
-  for (;;)
-  {
-    // Determine the range of the data to be searched.
-    typedef typename asio::basic_streambuf<
-      Allocator>::const_buffers_type const_buffers_type;
-    typedef asio::buffers_iterator<const_buffers_type> iterator;
-    const_buffers_type buffers = b.data();
-    iterator begin = iterator::begin(buffers);
-    iterator start_pos = begin + search_position;
-    iterator end = iterator::end(buffers);
-
-    // Look for a match.
-    iterator iter = std::find(start_pos, end, delim);
-    if (iter != end)
-    {
-      // Found a match. We're done.
-      ec = asio::error_code();
-      return iter - begin + 1;
-    }
-    else
-    {
-      // No match. Next search can start with the new data.
-      search_position = end - begin;
-    }
-
-    // Check if buffer is full.
-    if (b.size() == b.max_size())
-    {
-      ec = error::not_found;
-      return 0;
-    }
-
-    // Need more data.
-    std::size_t bytes_to_read = read_size_helper(b, 65536);
-    b.commit(s.read_some(b.prepare(bytes_to_read), ec));
-    if (ec)
-      return 0;
-  }
-}
-
-template <typename SyncReadStream, typename Allocator>
-inline std::size_t read_until(SyncReadStream& s,
-    asio::basic_streambuf<Allocator>& b, const std::string& delim)
-{
-  asio::error_code ec;
-  std::size_t bytes_transferred = read_until(s, b, delim, ec);
-  asio::detail::throw_error(ec, "read_until");
-  return bytes_transferred;
-}
-
-namespace detail
-{
-  // Algorithm that finds a subsequence of equal values in a sequence. Returns
-  // (iterator,true) if a full match was found, in which case the iterator
-  // points to the beginning of the match. Returns (iterator,false) if a
-  // partial match was found at the end of the first sequence, in which case
-  // the iterator points to the beginning of the partial match. Returns
-  // (last1,false) if no full or partial match was found.
-  template <typename Iterator1, typename Iterator2>
-  std::pair<Iterator1, bool> partial_search(
-      Iterator1 first1, Iterator1 last1, Iterator2 first2, Iterator2 last2)
-  {
-    for (Iterator1 iter1 = first1; iter1 != last1; ++iter1)
-    {
-      Iterator1 test_iter1 = iter1;
-      Iterator2 test_iter2 = first2;
-      for (;; ++test_iter1, ++test_iter2)
-      {
-        if (test_iter2 == last2)
-          return std::make_pair(iter1, true);
-        if (test_iter1 == last1)
-        {
-          if (test_iter2 != first2)
-            return std::make_pair(iter1, false);
-          else
-            break;
-        }
-        if (*test_iter1 != *test_iter2)
-          break;
-      }
-    }
-    return std::make_pair(last1, false);
-  }
-} // namespace detail
-
-template <typename SyncReadStream, typename Allocator>
-std::size_t read_until(SyncReadStream& s,
-    asio::basic_streambuf<Allocator>& b, const std::string& delim,
-    asio::error_code& ec)
-{
-  std::size_t search_position = 0;
-  for (;;)
-  {
-    // Determine the range of the data to be searched.
-    typedef typename asio::basic_streambuf<
-      Allocator>::const_buffers_type const_buffers_type;
-    typedef asio::buffers_iterator<const_buffers_type> iterator;
-    const_buffers_type buffers = b.data();
-    iterator begin = iterator::begin(buffers);
-    iterator start_pos = begin + search_position;
-    iterator end = iterator::end(buffers);
-
-    // Look for a match.
-    std::pair<iterator, bool> result = detail::partial_search(
-        start_pos, end, delim.begin(), delim.end());
-    if (result.first != end)
-    {
-      if (result.second)
-      {
-        // Full match. We're done.
-        ec = asio::error_code();
-        return result.first - begin + delim.length();
-      }
-      else
-      {
-        // Partial match. Next search needs to start from beginning of match.
-        search_position = result.first - begin;
-      }
-    }
-    else
-    {
-      // No match. Next search can start with the new data.
-      search_position = end - begin;
-    }
-
-    // Check if buffer is full.
-    if (b.size() == b.max_size())
-    {
-      ec = error::not_found;
-      return 0;
-    }
-
-    // Need more data.
-    std::size_t bytes_to_read = read_size_helper(b, 65536);
-    b.commit(s.read_some(b.prepare(bytes_to_read), ec));
-    if (ec)
-      return 0;
-  }
-}
-
-#if defined(ASIO_HAS_BOOST_REGEX)
-
-template <typename SyncReadStream, typename Allocator>
-inline std::size_t read_until(SyncReadStream& s,
-    asio::basic_streambuf<Allocator>& b, const boost::regex& expr)
-{
-  asio::error_code ec;
-  std::size_t bytes_transferred = read_until(s, b, expr, ec);
-  asio::detail::throw_error(ec, "read_until");
-  return bytes_transferred;
-}
-
-template <typename SyncReadStream, typename Allocator>
-std::size_t read_until(SyncReadStream& s,
-    asio::basic_streambuf<Allocator>& b, const boost::regex& expr,
-    asio::error_code& ec)
-{
-  std::size_t search_position = 0;
-  for (;;)
-  {
-    // Determine the range of the data to be searched.
-    typedef typename asio::basic_streambuf<
-      Allocator>::const_buffers_type const_buffers_type;
-    typedef asio::buffers_iterator<const_buffers_type> iterator;
-    const_buffers_type buffers = b.data();
-    iterator begin = iterator::begin(buffers);
-    iterator start_pos = begin + search_position;
-    iterator end = iterator::end(buffers);
-
-    // Look for a match.
-    boost::match_results<iterator,
-      typename std::vector<boost::sub_match<iterator> >::allocator_type>
-        match_results;
-    if (regex_search(start_pos, end, match_results, expr,
-          boost::match_default | boost::match_partial))
-    {
-      if (match_results[0].matched)
-      {
-        // Full match. We're done.
-        ec = asio::error_code();
-        return match_results[0].second - begin;
-      }
-      else
-      {
-        // Partial match. Next search needs to start from beginning of match.
-        search_position = match_results[0].first - begin;
-      }
-    }
-    else
-    {
-      // No match. Next search can start with the new data.
-      search_position = end - begin;
-    }
-
-    // Check if buffer is full.
-    if (b.size() == b.max_size())
-    {
-      ec = error::not_found;
-      return 0;
-    }
-
-    // Need more data.
-    std::size_t bytes_to_read = read_size_helper(b, 65536);
-    b.commit(s.read_some(b.prepare(bytes_to_read), ec));
-    if (ec)
-      return 0;
-  }
-}
-
-#endif // defined(ASIO_HAS_BOOST_REGEX)
-
-template <typename SyncReadStream, typename Allocator, typename MatchCondition>
-std::size_t read_until(SyncReadStream& s,
-    asio::basic_streambuf<Allocator>& b,
-    MatchCondition match_condition, asio::error_code& ec,
-    typename enable_if<is_match_condition<MatchCondition>::value>::type*)
-{
-  std::size_t search_position = 0;
-  for (;;)
-  {
-    // Determine the range of the data to be searched.
-    typedef typename asio::basic_streambuf<
-      Allocator>::const_buffers_type const_buffers_type;
-    typedef asio::buffers_iterator<const_buffers_type> iterator;
-    const_buffers_type buffers = b.data();
-    iterator begin = iterator::begin(buffers);
-    iterator start_pos = begin + search_position;
-    iterator end = iterator::end(buffers);
-
-    // Look for a match.
-    std::pair<iterator, bool> result = match_condition(start_pos, end);
-    if (result.second)
-    {
-      // Full match. We're done.
-      ec = asio::error_code();
-      return result.first - begin;
-    }
-    else if (result.first != end)
-    {
-      // Partial match. Next search needs to start from beginning of match.
-      search_position = result.first - begin;
-    }
-    else
-    {
-      // No match. Next search can start with the new data.
-      search_position = end - begin;
-    }
-
-    // Check if buffer is full.
-    if (b.size() == b.max_size())
-    {
-      ec = error::not_found;
-      return 0;
-    }
-
-    // Need more data.
-    std::size_t bytes_to_read = read_size_helper(b, 65536);
-    b.commit(s.read_some(b.prepare(bytes_to_read), ec));
-    if (ec)
-      return 0;
-  }
-}
-
-template <typename SyncReadStream, typename Allocator, typename MatchCondition>
-inline std::size_t read_until(SyncReadStream& s,
-    asio::basic_streambuf<Allocator>& b, MatchCondition match_condition,
-    typename enable_if<is_match_condition<MatchCondition>::value>::type*)
-{
-  asio::error_code ec;
-  std::size_t bytes_transferred = read_until(s, b, match_condition, ec);
-  asio::detail::throw_error(ec, "read_until");
-  return bytes_transferred;
-}
-
-namespace detail
-{
-  template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
-  class read_until_delim_op
-  {
-  public:
-    read_until_delim_op(AsyncReadStream& stream,
-        asio::basic_streambuf<Allocator>& streambuf,
-        char delim, ReadHandler& handler)
-      : stream_(stream),
-        streambuf_(streambuf),
-        delim_(delim),
-        start_(0),
-        search_position_(0),
-        handler_(ASIO_MOVE_CAST(ReadHandler)(handler))
-    {
-    }
-
-#if defined(ASIO_HAS_MOVE)
-    read_until_delim_op(const read_until_delim_op& other)
-      : stream_(other.stream_),
-        streambuf_(other.streambuf_),
-        delim_(other.delim_),
-        start_(other.start_),
-        search_position_(other.search_position_),
-        handler_(other.handler_)
-    {
-    }
-
-    read_until_delim_op(read_until_delim_op&& other)
-      : stream_(other.stream_),
-        streambuf_(other.streambuf_),
-        delim_(other.delim_),
-        start_(other.start_),
-        search_position_(other.search_position_),
-        handler_(ASIO_MOVE_CAST(ReadHandler)(other.handler_))
-    {
-    }
-#endif // defined(ASIO_HAS_MOVE)
-
-    void operator()(const asio::error_code& ec,
-        std::size_t bytes_transferred, int start = 0)
-    {
-      const std::size_t not_found = (std::numeric_limits<std::size_t>::max)();
-      std::size_t bytes_to_read;
-      switch (start_ = start)
-      {
-      case 1:
-        for (;;)
-        {
-          {
-            // Determine the range of the data to be searched.
-            typedef typename asio::basic_streambuf<
-              Allocator>::const_buffers_type const_buffers_type;
-            typedef asio::buffers_iterator<const_buffers_type> iterator;
-            const_buffers_type buffers = streambuf_.data();
-            iterator begin = iterator::begin(buffers);
-            iterator start_pos = begin + search_position_;
-            iterator end = iterator::end(buffers);
-
-            // Look for a match.
-            iterator iter = std::find(start_pos, end, delim_);
-            if (iter != end)
-            {
-              // Found a match. We're done.
-              search_position_ = iter - begin + 1;
-              bytes_to_read = 0;
-            }
-
-            // No match yet. Check if buffer is full.
-            else if (streambuf_.size() == streambuf_.max_size())
-            {
-              search_position_ = not_found;
-              bytes_to_read = 0;
-            }
-
-            // Need to read some more data.
-            else
-            {
-              // Next search can start with the new data.
-              search_position_ = end - begin;
-              bytes_to_read = read_size_helper(streambuf_, 65536);
-            }
-          }
-
-          // Check if we're done.
-          if (!start && bytes_to_read == 0)
-            break;
-
-          // Start a new asynchronous read operation to obtain more data.
-          stream_.async_read_some(streambuf_.prepare(bytes_to_read),
-              ASIO_MOVE_CAST(read_until_delim_op)(*this));
-          return; default:
-          streambuf_.commit(bytes_transferred);
-          if (ec || bytes_transferred == 0)
-            break;
-        }
-
-        const asio::error_code result_ec =
-          (search_position_ == not_found)
-          ? error::not_found : ec;
-
-        const std::size_t result_n =
-          (ec || search_position_ == not_found)
-          ? 0 : search_position_;
-
-        handler_(result_ec, result_n);
-      }
-    }
-
-  //private:
-    AsyncReadStream& stream_;
-    asio::basic_streambuf<Allocator>& streambuf_;
-    char delim_;
-    int start_;
-    std::size_t search_position_;
-    ReadHandler handler_;
-  };
-
-  template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
-  inline void* asio_handler_allocate(std::size_t size,
-      read_until_delim_op<AsyncReadStream,
-        Allocator, ReadHandler>* this_handler)
-  {
-    return asio_handler_alloc_helpers::allocate(
-        size, this_handler->handler_);
-  }
-
-  template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
-  inline void asio_handler_deallocate(void* pointer, std::size_t size,
-      read_until_delim_op<AsyncReadStream,
-        Allocator, ReadHandler>* this_handler)
-  {
-    asio_handler_alloc_helpers::deallocate(
-        pointer, size, this_handler->handler_);
-  }
-
-  template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
-  inline bool asio_handler_is_continuation(
-      read_until_delim_op<AsyncReadStream,
-        Allocator, ReadHandler>* this_handler)
-  {
-    return this_handler->start_ == 0 ? true
-      : asio_handler_cont_helpers::is_continuation(
-          this_handler->handler_);
-  }
-
-  template <typename Function, typename AsyncReadStream, typename Allocator,
-      typename ReadHandler>
-  inline void asio_handler_invoke(Function& function,
-      read_until_delim_op<AsyncReadStream,
-        Allocator, ReadHandler>* this_handler)
-  {
-    asio_handler_invoke_helpers::invoke(
-        function, this_handler->handler_);
-  }
-
-  template <typename Function, typename AsyncReadStream, typename Allocator,
-      typename ReadHandler>
-  inline void asio_handler_invoke(const Function& function,
-      read_until_delim_op<AsyncReadStream,
-        Allocator, ReadHandler>* this_handler)
-  {
-    asio_handler_invoke_helpers::invoke(
-        function, this_handler->handler_);
-  }
-} // namespace detail
-
-template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
-ASIO_INITFN_RESULT_TYPE(ReadHandler,
-    void (asio::error_code, std::size_t))
-async_read_until(AsyncReadStream& s,
-    asio::basic_streambuf<Allocator>& b, char delim,
-    ASIO_MOVE_ARG(ReadHandler) handler)
-{
-  // If you get an error on the following line it means that your handler does
-  // not meet the documented type requirements for a ReadHandler.
-  ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
-  detail::async_result_init<
-    ReadHandler, void (asio::error_code, std::size_t)> init(
-      ASIO_MOVE_CAST(ReadHandler)(handler));
-
-  detail::read_until_delim_op<AsyncReadStream,
-    Allocator, ASIO_HANDLER_TYPE(ReadHandler,
-      void (asio::error_code, std::size_t))>(
-        s, b, delim, init.handler)(
-          asio::error_code(), 0, 1);
-
-  return init.result.get();
-}
-
-namespace detail
-{
-  template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
-  class read_until_delim_string_op
-  {
-  public:
-    read_until_delim_string_op(AsyncReadStream& stream,
-        asio::basic_streambuf<Allocator>& streambuf,
-        const std::string& delim, ReadHandler& handler)
-      : stream_(stream),
-        streambuf_(streambuf),
-        delim_(delim),
-        start_(0),
-        search_position_(0),
-        handler_(ASIO_MOVE_CAST(ReadHandler)(handler))
-    {
-    }
-
-#if defined(ASIO_HAS_MOVE)
-    read_until_delim_string_op(const read_until_delim_string_op& other)
-      : stream_(other.stream_),
-        streambuf_(other.streambuf_),
-        delim_(other.delim_),
-        start_(other.start_),
-        search_position_(other.search_position_),
-        handler_(other.handler_)
-    {
-    }
-
-    read_until_delim_string_op(read_until_delim_string_op&& other)
-      : stream_(other.stream_),
-        streambuf_(other.streambuf_),
-        delim_(ASIO_MOVE_CAST(std::string)(other.delim_)),
-        start_(other.start_),
-        search_position_(other.search_position_),
-        handler_(ASIO_MOVE_CAST(ReadHandler)(other.handler_))
-    {
-    }
-#endif // defined(ASIO_HAS_MOVE)
-
-    void operator()(const asio::error_code& ec,
-        std::size_t bytes_transferred, int start = 0)
-    {
-      const std::size_t not_found = (std::numeric_limits<std::size_t>::max)();
-      std::size_t bytes_to_read;
-      switch (start_ = start)
-      {
-      case 1:
-        for (;;)
-        {
-          {
-            // Determine the range of the data to be searched.
-            typedef typename asio::basic_streambuf<
-              Allocator>::const_buffers_type const_buffers_type;
-            typedef asio::buffers_iterator<const_buffers_type> iterator;
-            const_buffers_type buffers = streambuf_.data();
-            iterator begin = iterator::begin(buffers);
-            iterator start_pos = begin + search_position_;
-            iterator end = iterator::end(buffers);
-
-            // Look for a match.
-            std::pair<iterator, bool> result = detail::partial_search(
-                start_pos, end, delim_.begin(), delim_.end());
-            if (result.first != end && result.second)
-            {
-              // Full match. We're done.
-              search_position_ = result.first - begin + delim_.length();
-              bytes_to_read = 0;
-            }
-
-            // No match yet. Check if buffer is full.
-            else if (streambuf_.size() == streambuf_.max_size())
-            {
-              search_position_ = not_found;
-              bytes_to_read = 0;
-            }
-
-            // Need to read some more data.
-            else
-            {
-              if (result.first != end)
-              {
-                // Partial match. Next search needs to start from beginning of
-                // match.
-                search_position_ = result.first - begin;
-              }
-              else
-              {
-                // Next search can start with the new data.
-                search_position_ = end - begin;
-              }
-
-              bytes_to_read = read_size_helper(streambuf_, 65536);
-            }
-          }
-
-          // Check if we're done.
-          if (!start && bytes_to_read == 0)
-            break;
-
-          // Start a new asynchronous read operation to obtain more data.
-          stream_.async_read_some(streambuf_.prepare(bytes_to_read),
-              ASIO_MOVE_CAST(read_until_delim_string_op)(*this));
-          return; default:
-          streambuf_.commit(bytes_transferred);
-          if (ec || bytes_transferred == 0)
-            break;
-        }
-
-        const asio::error_code result_ec =
-          (search_position_ == not_found)
-          ? error::not_found : ec;
-
-        const std::size_t result_n =
-          (ec || search_position_ == not_found)
-          ? 0 : search_position_;
-
-        handler_(result_ec, result_n);
-      }
-    }
-
-  //private:
-    AsyncReadStream& stream_;
-    asio::basic_streambuf<Allocator>& streambuf_;
-    std::string delim_;
-    int start_;
-    std::size_t search_position_;
-    ReadHandler handler_;
-  };
-
-  template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
-  inline void* asio_handler_allocate(std::size_t size,
-      read_until_delim_string_op<AsyncReadStream,
-        Allocator, ReadHandler>* this_handler)
-  {
-    return asio_handler_alloc_helpers::allocate(
-        size, this_handler->handler_);
-  }
-
-  template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
-  inline void asio_handler_deallocate(void* pointer, std::size_t size,
-      read_until_delim_string_op<AsyncReadStream,
-        Allocator, ReadHandler>* this_handler)
-  {
-    asio_handler_alloc_helpers::deallocate(
-        pointer, size, this_handler->handler_);
-  }
-
-  template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
-  inline bool asio_handler_is_continuation(
-      read_until_delim_string_op<AsyncReadStream,
-        Allocator, ReadHandler>* this_handler)
-  {
-    return this_handler->start_ == 0 ? true
-      : asio_handler_cont_helpers::is_continuation(
-          this_handler->handler_);
-  }
-
-  template <typename Function, typename AsyncReadStream,
-      typename Allocator, typename ReadHandler>
-  inline void asio_handler_invoke(Function& function,
-      read_until_delim_string_op<AsyncReadStream,
-        Allocator, ReadHandler>* this_handler)
-  {
-    asio_handler_invoke_helpers::invoke(
-        function, this_handler->handler_);
-  }
-
-  template <typename Function, typename AsyncReadStream,
-      typename Allocator, typename ReadHandler>
-  inline void asio_handler_invoke(const Function& function,
-      read_until_delim_string_op<AsyncReadStream,
-        Allocator, ReadHandler>* this_handler)
-  {
-    asio_handler_invoke_helpers::invoke(
-        function, this_handler->handler_);
-  }
-} // namespace detail
-
-template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
-ASIO_INITFN_RESULT_TYPE(ReadHandler,
-    void (asio::error_code, std::size_t))
-async_read_until(AsyncReadStream& s,
-    asio::basic_streambuf<Allocator>& b, const std::string& delim,
-    ASIO_MOVE_ARG(ReadHandler) handler)
-{
-  // If you get an error on the following line it means that your handler does
-  // not meet the documented type requirements for a ReadHandler.
-  ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
-  detail::async_result_init<
-    ReadHandler, void (asio::error_code, std::size_t)> init(
-      ASIO_MOVE_CAST(ReadHandler)(handler));
-
-  detail::read_until_delim_string_op<AsyncReadStream,
-    Allocator, ASIO_HANDLER_TYPE(ReadHandler,
-      void (asio::error_code, std::size_t))>(
-        s, b, delim, init.handler)(
-          asio::error_code(), 0, 1);
-
-  return init.result.get();
-}
-
-#if defined(ASIO_HAS_BOOST_REGEX)
-
-namespace detail
-{
-  template <typename AsyncReadStream, typename Allocator,
-      typename RegEx, typename ReadHandler>
-  class read_until_expr_op
-  {
-  public:
-    read_until_expr_op(AsyncReadStream& stream,
-        asio::basic_streambuf<Allocator>& streambuf,
-        const boost::regex& expr, ReadHandler& handler)
-      : stream_(stream),
-        streambuf_(streambuf),
-        expr_(expr),
-        start_(0),
-        search_position_(0),
-        handler_(ASIO_MOVE_CAST(ReadHandler)(handler))
-    {
-    }
-
-#if defined(ASIO_HAS_MOVE)
-    read_until_expr_op(const read_until_expr_op& other)
-      : stream_(other.stream_),
-        streambuf_(other.streambuf_),
-        expr_(other.expr_),
-        start_(other.start_),
-        search_position_(other.search_position_),
-        handler_(other.handler_)
-    {
-    }
-
-    read_until_expr_op(read_until_expr_op&& other)
-      : stream_(other.stream_),
-        streambuf_(other.streambuf_),
-        expr_(other.expr_),
-        start_(other.start_),
-        search_position_(other.search_position_),
-        handler_(ASIO_MOVE_CAST(ReadHandler)(other.handler_))
-    {
-    }
-#endif // defined(ASIO_HAS_MOVE)
-
-    void operator()(const asio::error_code& ec,
-        std::size_t bytes_transferred, int start = 0)
-    {
-      const std::size_t not_found = (std::numeric_limits<std::size_t>::max)();
-      std::size_t bytes_to_read;
-      switch (start_ = start)
-      {
-      case 1:
-        for (;;)
-        {
-          {
-            // Determine the range of the data to be searched.
-            typedef typename asio::basic_streambuf<
-              Allocator>::const_buffers_type const_buffers_type;
-            typedef asio::buffers_iterator<const_buffers_type> iterator;
-            const_buffers_type buffers = streambuf_.data();
-            iterator begin = iterator::begin(buffers);
-            iterator start_pos = begin + search_position_;
-            iterator end = iterator::end(buffers);
-
-            // Look for a match.
-            boost::match_results<iterator,
-              typename std::vector<boost::sub_match<iterator> >::allocator_type>
-                match_results;
-            bool match = regex_search(start_pos, end, match_results, expr_,
-                boost::match_default | boost::match_partial);
-            if (match && match_results[0].matched)
-            {
-              // Full match. We're done.
-              search_position_ = match_results[0].second - begin;
-              bytes_to_read = 0;
-            }
-
-            // No match yet. Check if buffer is full.
-            else if (streambuf_.size() == streambuf_.max_size())
-            {
-              search_position_ = not_found;
-              bytes_to_read = 0;
-            }
-
-            // Need to read some more data.
-            else
-            {
-              if (match)
-              {
-                // Partial match. Next search needs to start from beginning of
-                // match.
-                search_position_ = match_results[0].first - begin;
-              }
-              else
-              {
-                // Next search can start with the new data.
-                search_position_ = end - begin;
-              }
-
-              bytes_to_read = read_size_helper(streambuf_, 65536);
-            }
-          }
-
-          // Check if we're done.
-          if (!start && bytes_to_read == 0)
-            break;
-
-          // Start a new asynchronous read operation to obtain more data.
-          stream_.async_read_some(streambuf_.prepare(bytes_to_read),
-              ASIO_MOVE_CAST(read_until_expr_op)(*this));
-          return; default:
-          streambuf_.commit(bytes_transferred);
-          if (ec || bytes_transferred == 0)
-            break;
-        }
-
-        const asio::error_code result_ec =
-          (search_position_ == not_found)
-          ? error::not_found : ec;
-
-        const std::size_t result_n =
-          (ec || search_position_ == not_found)
-          ? 0 : search_position_;
-
-        handler_(result_ec, result_n);
-      }
-    }
-
-  //private:
-    AsyncReadStream& stream_;
-    asio::basic_streambuf<Allocator>& streambuf_;
-    RegEx expr_;
-    int start_;
-    std::size_t search_position_;
-    ReadHandler handler_;
-  };
-
-  template <typename AsyncReadStream, typename Allocator,
-      typename RegEx, typename ReadHandler>
-  inline void* asio_handler_allocate(std::size_t size,
-      read_until_expr_op<AsyncReadStream,
-        Allocator, RegEx, ReadHandler>* this_handler)
-  {
-    return asio_handler_alloc_helpers::allocate(
-        size, this_handler->handler_);
-  }
-
-  template <typename AsyncReadStream, typename Allocator,
-      typename RegEx, typename ReadHandler>
-  inline void asio_handler_deallocate(void* pointer, std::size_t size,
-      read_until_expr_op<AsyncReadStream,
-        Allocator, RegEx, ReadHandler>* this_handler)
-  {
-    asio_handler_alloc_helpers::deallocate(
-        pointer, size, this_handler->handler_);
-  }
-
-  template <typename AsyncReadStream, typename Allocator,
-      typename RegEx, typename ReadHandler>
-  inline bool asio_handler_is_continuation(
-      read_until_expr_op<AsyncReadStream,
-        Allocator, RegEx, ReadHandler>* this_handler)
-  {
-    return this_handler->start_ == 0 ? true
-      : asio_handler_cont_helpers::is_continuation(
-          this_handler->handler_);
-  }
-
-  template <typename Function, typename AsyncReadStream, typename Allocator,
-      typename RegEx, typename ReadHandler>
-  inline void asio_handler_invoke(Function& function,
-      read_until_expr_op<AsyncReadStream,
-        Allocator, RegEx, ReadHandler>* this_handler)
-  {
-    asio_handler_invoke_helpers::invoke(
-        function, this_handler->handler_);
-  }
-
-  template <typename Function, typename AsyncReadStream, typename Allocator,
-      typename RegEx, typename ReadHandler>
-  inline void asio_handler_invoke(const Function& function,
-      read_until_expr_op<AsyncReadStream,
-        Allocator, RegEx, ReadHandler>* this_handler)
-  {
-    asio_handler_invoke_helpers::invoke(
-        function, this_handler->handler_);
-  }
-} // namespace detail
-
-template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
-ASIO_INITFN_RESULT_TYPE(ReadHandler,
-    void (asio::error_code, std::size_t))
-async_read_until(AsyncReadStream& s,
-    asio::basic_streambuf<Allocator>& b, const boost::regex& expr,
-    ASIO_MOVE_ARG(ReadHandler) handler)
-{
-  // If you get an error on the following line it means that your handler does
-  // not meet the documented type requirements for a ReadHandler.
-  ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
-  detail::async_result_init<
-    ReadHandler, void (asio::error_code, std::size_t)> init(
-      ASIO_MOVE_CAST(ReadHandler)(handler));
-
-  detail::read_until_expr_op<AsyncReadStream, Allocator,
-    boost::regex, ASIO_HANDLER_TYPE(ReadHandler,
-      void (asio::error_code, std::size_t))>(
-        s, b, expr, init.handler)(
-          asio::error_code(), 0, 1);
-
-  return init.result.get();
-}
-
-#endif // defined(ASIO_HAS_BOOST_REGEX)
-
-namespace detail
-{
-  template <typename AsyncReadStream, typename Allocator,
-      typename MatchCondition, typename ReadHandler>
-  class read_until_match_op
-  {
-  public:
-    read_until_match_op(AsyncReadStream& stream,
-        asio::basic_streambuf<Allocator>& streambuf,
-        MatchCondition match_condition, ReadHandler& handler)
-      : stream_(stream),
-        streambuf_(streambuf),
-        match_condition_(match_condition),
-        start_(0),
-        search_position_(0),
-        handler_(ASIO_MOVE_CAST(ReadHandler)(handler))
-    {
-    }
-
-#if defined(ASIO_HAS_MOVE)
-    read_until_match_op(const read_until_match_op& other)
-      : stream_(other.stream_),
-        streambuf_(other.streambuf_),
-        match_condition_(other.match_condition_),
-        start_(other.start_),
-        search_position_(other.search_position_),
-        handler_(other.handler_)
-    {
-    }
-
-    read_until_match_op(read_until_match_op&& other)
-      : stream_(other.stream_),
-        streambuf_(other.streambuf_),
-        match_condition_(other.match_condition_),
-        start_(other.start_),
-        search_position_(other.search_position_),
-        handler_(ASIO_MOVE_CAST(ReadHandler)(other.handler_))
-    {
-    }
-#endif // defined(ASIO_HAS_MOVE)
-
-    void operator()(const asio::error_code& ec,
-        std::size_t bytes_transferred, int start = 0)
-    {
-      const std::size_t not_found = (std::numeric_limits<std::size_t>::max)();
-      std::size_t bytes_to_read;
-      switch (start_ = start)
-      {
-      case 1:
-        for (;;)
-        {
-          {
-            // Determine the range of the data to be searched.
-            typedef typename asio::basic_streambuf<
-              Allocator>::const_buffers_type const_buffers_type;
-            typedef asio::buffers_iterator<const_buffers_type> iterator;
-            const_buffers_type buffers = streambuf_.data();
-            iterator begin = iterator::begin(buffers);
-            iterator start_pos = begin + search_position_;
-            iterator end = iterator::end(buffers);
-
-            // Look for a match.
-            std::pair<iterator, bool> result = match_condition_(start_pos, end);
-            if (result.second)
-            {
-              // Full match. We're done.
-              search_position_ = result.first - begin;
-              bytes_to_read = 0;
-            }
-
-            // No match yet. Check if buffer is full.
-            else if (streambuf_.size() == streambuf_.max_size())
-            {
-              search_position_ = not_found;
-              bytes_to_read = 0;
-            }
-
-            // Need to read some more data.
-            else
-            {
-              if (result.first != end)
-              {
-                // Partial match. Next search needs to start from beginning of
-                // match.
-                search_position_ = result.first - begin;
-              }
-              else
-              {
-                // Next search can start with the new data.
-                search_position_ = end - begin;
-              }
-
-              bytes_to_read = read_size_helper(streambuf_, 65536);
-            }
-          }
-
-          // Check if we're done.
-          if (!start && bytes_to_read == 0)
-            break;
-
-          // Start a new asynchronous read operation to obtain more data.
-          stream_.async_read_some(streambuf_.prepare(bytes_to_read),
-              ASIO_MOVE_CAST(read_until_match_op)(*this));
-          return; default:
-          streambuf_.commit(bytes_transferred);
-          if (ec || bytes_transferred == 0)
-            break;
-        }
-
-        const asio::error_code result_ec =
-          (search_position_ == not_found)
-          ? error::not_found : ec;
-
-        const std::size_t result_n =
-          (ec || search_position_ == not_found)
-          ? 0 : search_position_;
-
-        handler_(result_ec, result_n);
-      }
-    }
-
-  //private:
-    AsyncReadStream& stream_;
-    asio::basic_streambuf<Allocator>& streambuf_;
-    MatchCondition match_condition_;
-    int start_;
-    std::size_t search_position_;
-    ReadHandler handler_;
-  };
-
-  template <typename AsyncReadStream, typename Allocator,
-      typename MatchCondition, typename ReadHandler>
-  inline void* asio_handler_allocate(std::size_t size,
-      read_until_match_op<AsyncReadStream,
-        Allocator, MatchCondition, ReadHandler>* this_handler)
-  {
-    return asio_handler_alloc_helpers::allocate(
-        size, this_handler->handler_);
-  }
-
-  template <typename AsyncReadStream, typename Allocator,
-      typename MatchCondition, typename ReadHandler>
-  inline void asio_handler_deallocate(void* pointer, std::size_t size,
-      read_until_match_op<AsyncReadStream,
-        Allocator, MatchCondition, ReadHandler>* this_handler)
-  {
-    asio_handler_alloc_helpers::deallocate(
-        pointer, size, this_handler->handler_);
-  }
-
-  template <typename AsyncReadStream, typename Allocator,
-      typename MatchCondition, typename ReadHandler>
-  inline bool asio_handler_is_continuation(
-      read_until_match_op<AsyncReadStream,
-        Allocator, MatchCondition, ReadHandler>* this_handler)
-  {
-    return this_handler->start_ == 0 ? true
-      : asio_handler_cont_helpers::is_continuation(
-          this_handler->handler_);
-  }
-
-  template <typename Function, typename AsyncReadStream, typename Allocator,
-      typename MatchCondition, typename ReadHandler>
-  inline void asio_handler_invoke(Function& function,
-      read_until_match_op<AsyncReadStream,
-        Allocator, MatchCondition, ReadHandler>* this_handler)
-  {
-    asio_handler_invoke_helpers::invoke(
-        function, this_handler->handler_);
-  }
-
-  template <typename Function, typename AsyncReadStream, typename Allocator,
-      typename MatchCondition, typename ReadHandler>
-  inline void asio_handler_invoke(const Function& function,
-      read_until_match_op<AsyncReadStream,
-        Allocator, MatchCondition, ReadHandler>* this_handler)
-  {
-    asio_handler_invoke_helpers::invoke(
-        function, this_handler->handler_);
-  }
-} // namespace detail
-
-template <typename AsyncReadStream, typename Allocator,
-    typename MatchCondition, typename ReadHandler>
-ASIO_INITFN_RESULT_TYPE(ReadHandler,
-    void (asio::error_code, std::size_t))
-async_read_until(AsyncReadStream& s,
-    asio::basic_streambuf<Allocator>& b,
-    MatchCondition match_condition, ASIO_MOVE_ARG(ReadHandler) handler,
-    typename enable_if<is_match_condition<MatchCondition>::value>::type*)
-{
-  // If you get an error on the following line it means that your handler does
-  // not meet the documented type requirements for a ReadHandler.
-  ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
-  detail::async_result_init<
-    ReadHandler, void (asio::error_code, std::size_t)> init(
-      ASIO_MOVE_CAST(ReadHandler)(handler));
-
-  detail::read_until_match_op<AsyncReadStream, Allocator,
-    MatchCondition, ASIO_HANDLER_TYPE(ReadHandler,
-      void (asio::error_code, std::size_t))>(
-        s, b, match_condition, init.handler)(
-          asio::error_code(), 0, 1);
-
-  return init.result.get();
-}
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IMPL_READ_UNTIL_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/serial_port_base.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/serial_port_base.hpp
deleted file mode 100644
index abb8cde..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/serial_port_base.hpp
+++ /dev/null
@@ -1,59 +0,0 @@
-//
-// impl/serial_port_base.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IMPL_SERIAL_PORT_BASE_HPP
-#define ASIO_IMPL_SERIAL_PORT_BASE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-inline serial_port_base::baud_rate::baud_rate(unsigned int rate)
-  : value_(rate)
-{
-}
-
-inline unsigned int serial_port_base::baud_rate::value() const
-{
-  return value_;
-}
-
-inline serial_port_base::flow_control::type
-serial_port_base::flow_control::value() const
-{
-  return value_;
-}
-
-inline serial_port_base::parity::type serial_port_base::parity::value() const
-{
-  return value_;
-}
-
-inline serial_port_base::stop_bits::type
-serial_port_base::stop_bits::value() const
-{
-  return value_;
-}
-
-inline unsigned int serial_port_base::character_size::value() const
-{
-  return value_;
-}
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IMPL_SERIAL_PORT_BASE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/serial_port_base.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/serial_port_base.ipp
deleted file mode 100644
index 57306d9..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/serial_port_base.ipp
+++ /dev/null
@@ -1,554 +0,0 @@
-//
-// impl/serial_port_base.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IMPL_SERIAL_PORT_BASE_IPP
-#define ASIO_IMPL_SERIAL_PORT_BASE_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_SERIAL_PORT)
-
-#include <stdexcept>
-#include "asio/error.hpp"
-#include "asio/serial_port_base.hpp"
-#include "asio/detail/throw_exception.hpp"
-
-#if defined(GENERATING_DOCUMENTATION)
-# define ASIO_OPTION_STORAGE implementation_defined
-#elif defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-# define ASIO_OPTION_STORAGE DCB
-#else
-# define ASIO_OPTION_STORAGE termios
-#endif
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-asio::error_code serial_port_base::baud_rate::store(
-    ASIO_OPTION_STORAGE& storage, asio::error_code& ec) const
-{
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  storage.BaudRate = value_;
-#else
-  speed_t baud;
-  switch (value_)
-  {
-  // Do POSIX-specified rates first.
-  case 0: baud = B0; break;
-  case 50: baud = B50; break;
-  case 75: baud = B75; break;
-  case 110: baud = B110; break;
-  case 134: baud = B134; break;
-  case 150: baud = B150; break;
-  case 200: baud = B200; break;
-  case 300: baud = B300; break;
-  case 600: baud = B600; break;
-  case 1200: baud = B1200; break;
-  case 1800: baud = B1800; break;
-  case 2400: baud = B2400; break;
-  case 4800: baud = B4800; break;
-  case 9600: baud = B9600; break;
-  case 19200: baud = B19200; break;
-  case 38400: baud = B38400; break;
-  // And now the extended ones conditionally.
-# ifdef B7200
-  case 7200: baud = B7200; break;
-# endif
-# ifdef B14400
-  case 14400: baud = B14400; break;
-# endif
-# ifdef B57600
-  case 57600: baud = B57600; break;
-# endif
-# ifdef B115200
-  case 115200: baud = B115200; break;
-# endif
-# ifdef B230400
-  case 230400: baud = B230400; break;
-# endif
-# ifdef B460800
-  case 460800: baud = B460800; break;
-# endif
-# ifdef B500000
-  case 500000: baud = B500000; break;
-# endif
-# ifdef B576000
-  case 576000: baud = B576000; break;
-# endif
-# ifdef B921600
-  case 921600: baud = B921600; break;
-# endif
-# ifdef B1000000
-  case 1000000: baud = B1000000; break;
-# endif
-# ifdef B1152000
-  case 1152000: baud = B1152000; break;
-# endif
-# ifdef B2000000
-  case 2000000: baud = B2000000; break;
-# endif
-# ifdef B3000000
-  case 3000000: baud = B3000000; break;
-# endif
-# ifdef B3500000
-  case 3500000: baud = B3500000; break;
-# endif
-# ifdef B4000000
-  case 4000000: baud = B4000000; break;
-# endif
-  default:
-    ec = asio::error::invalid_argument;
-    return ec;
-  }
-# if defined(_BSD_SOURCE)
-  ::cfsetspeed(&storage, baud);
-# else
-  ::cfsetispeed(&storage, baud);
-  ::cfsetospeed(&storage, baud);
-# endif
-#endif
-  ec = asio::error_code();
-  return ec;
-}
-
-asio::error_code serial_port_base::baud_rate::load(
-    const ASIO_OPTION_STORAGE& storage, asio::error_code& ec)
-{
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  value_ = storage.BaudRate;
-#else
-  speed_t baud = ::cfgetospeed(&storage);
-  switch (baud)
-  {
-  // First do those specified by POSIX.
-  case B0: value_ = 0; break;
-  case B50: value_ = 50; break;
-  case B75: value_ = 75; break;
-  case B110: value_ = 110; break;
-  case B134: value_ = 134; break;
-  case B150: value_ = 150; break;
-  case B200: value_ = 200; break;
-  case B300: value_ = 300; break;
-  case B600: value_ = 600; break;
-  case B1200: value_ = 1200; break;
-  case B1800: value_ = 1800; break;
-  case B2400: value_ = 2400; break;
-  case B4800: value_ = 4800; break;
-  case B9600: value_ = 9600; break;
-  case B19200: value_ = 19200; break;
-  case B38400: value_ = 38400; break;
-  // Now conditionally handle a bunch of extended rates.
-# ifdef B7200
-  case B7200: value_ = 7200; break;
-# endif
-# ifdef B14400
-  case B14400: value_ = 14400; break;
-# endif
-# ifdef B57600
-  case B57600: value_ = 57600; break;
-# endif
-# ifdef B115200
-  case B115200: value_ = 115200; break;
-# endif
-# ifdef B230400
-  case B230400: value_ = 230400; break;
-# endif
-# ifdef B460800
-  case B460800: value_ = 460800; break;
-# endif
-# ifdef B500000
-  case B500000: value_ = 500000; break;
-# endif
-# ifdef B576000
-  case B576000: value_ = 576000; break;
-# endif
-# ifdef B921600
-  case B921600: value_ = 921600; break;
-# endif
-# ifdef B1000000
-  case B1000000: value_ = 1000000; break;
-# endif
-# ifdef B1152000
-  case B1152000: value_ = 1152000; break;
-# endif
-# ifdef B2000000
-  case B2000000: value_ = 2000000; break;
-# endif
-# ifdef B3000000
-  case B3000000: value_ = 3000000; break;
-# endif
-# ifdef B3500000
-  case B3500000: value_ = 3500000; break;
-# endif
-# ifdef B4000000
-  case B4000000: value_ = 4000000; break;
-# endif
-  default:
-    value_ = 0;
-    ec = asio::error::invalid_argument;
-    return ec;
-  }
-#endif
-  ec = asio::error_code();
-  return ec;
-}
-
-serial_port_base::flow_control::flow_control(
-    serial_port_base::flow_control::type t)
-  : value_(t)
-{
-  if (t != none && t != software && t != hardware)
-  {
-    std::out_of_range ex("invalid flow_control value");
-    asio::detail::throw_exception(ex);
-  }
-}
-
-asio::error_code serial_port_base::flow_control::store(
-    ASIO_OPTION_STORAGE& storage, asio::error_code& ec) const
-{
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  storage.fOutxCtsFlow = FALSE;
-  storage.fOutxDsrFlow = FALSE;
-  storage.fTXContinueOnXoff = TRUE;
-  storage.fDtrControl = DTR_CONTROL_ENABLE;
-  storage.fDsrSensitivity = FALSE;
-  storage.fOutX = FALSE;
-  storage.fInX = FALSE;
-  storage.fRtsControl = RTS_CONTROL_ENABLE;
-  switch (value_)
-  {
-  case none:
-    break;
-  case software:
-    storage.fOutX = TRUE;
-    storage.fInX = TRUE;
-    break;
-  case hardware:
-    storage.fOutxCtsFlow = TRUE;
-    storage.fRtsControl = RTS_CONTROL_HANDSHAKE;
-    break;
-  default:
-    break;
-  }
-#else
-  switch (value_)
-  {
-  case none:
-    storage.c_iflag &= ~(IXOFF | IXON);
-# if defined(_BSD_SOURCE)
-    storage.c_cflag &= ~CRTSCTS;
-# elif defined(__QNXNTO__)
-    storage.c_cflag &= ~(IHFLOW | OHFLOW);
-# endif
-    break;
-  case software:
-    storage.c_iflag |= IXOFF | IXON;
-# if defined(_BSD_SOURCE)
-    storage.c_cflag &= ~CRTSCTS;
-# elif defined(__QNXNTO__)
-    storage.c_cflag &= ~(IHFLOW | OHFLOW);
-# endif
-    break;
-  case hardware:
-# if defined(_BSD_SOURCE)
-    storage.c_iflag &= ~(IXOFF | IXON);
-    storage.c_cflag |= CRTSCTS;
-    break;
-# elif defined(__QNXNTO__)
-    storage.c_iflag &= ~(IXOFF | IXON);
-    storage.c_cflag |= (IHFLOW | OHFLOW);
-    break;
-# else
-    ec = asio::error::operation_not_supported;
-    return ec;
-# endif
-  default:
-    break;
-  }
-#endif
-  ec = asio::error_code();
-  return ec;
-}
-
-asio::error_code serial_port_base::flow_control::load(
-    const ASIO_OPTION_STORAGE& storage, asio::error_code& ec)
-{
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  if (storage.fOutX && storage.fInX)
-  {
-    value_ = software;
-  }
-  else if (storage.fOutxCtsFlow && storage.fRtsControl == RTS_CONTROL_HANDSHAKE)
-  {
-    value_ = hardware;
-  }
-  else
-  {
-    value_ = none;
-  }
-#else
-  if (storage.c_iflag & (IXOFF | IXON))
-  {
-    value_ = software;
-  }
-# if defined(_BSD_SOURCE)
-  else if (storage.c_cflag & CRTSCTS)
-  {
-    value_ = hardware;
-  }
-# elif defined(__QNXNTO__)
-  else if (storage.c_cflag & IHFLOW && storage.c_cflag & OHFLOW)
-  {
-    value_ = hardware;
-  }
-# endif
-  else
-  {
-    value_ = none;
-  }
-#endif
-  ec = asio::error_code();
-  return ec;
-}
-
-serial_port_base::parity::parity(serial_port_base::parity::type t)
-  : value_(t)
-{
-  if (t != none && t != odd && t != even)
-  {
-    std::out_of_range ex("invalid parity value");
-    asio::detail::throw_exception(ex);
-  }
-}
-
-asio::error_code serial_port_base::parity::store(
-    ASIO_OPTION_STORAGE& storage, asio::error_code& ec) const
-{
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  switch (value_)
-  {
-  case none:
-    storage.fParity = FALSE;
-    storage.Parity = NOPARITY;
-    break;
-  case odd:
-    storage.fParity = TRUE;
-    storage.Parity = ODDPARITY;
-    break;
-  case even:
-    storage.fParity = TRUE;
-    storage.Parity = EVENPARITY;
-    break;
-  default:
-    break;
-  }
-#else
-  switch (value_)
-  {
-  case none:
-    storage.c_iflag |= IGNPAR;
-    storage.c_cflag &= ~(PARENB | PARODD);
-    break;
-  case even:
-    storage.c_iflag &= ~(IGNPAR | PARMRK);
-    storage.c_iflag |= INPCK;
-    storage.c_cflag |= PARENB;
-    storage.c_cflag &= ~PARODD;
-    break;
-  case odd:
-    storage.c_iflag &= ~(IGNPAR | PARMRK);
-    storage.c_iflag |= INPCK;
-    storage.c_cflag |= (PARENB | PARODD);
-    break;
-  default:
-    break;
-  }
-#endif
-  ec = asio::error_code();
-  return ec;
-}
-
-asio::error_code serial_port_base::parity::load(
-    const ASIO_OPTION_STORAGE& storage, asio::error_code& ec)
-{
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  if (storage.Parity == EVENPARITY)
-  {
-    value_ = even;
-  }
-  else if (storage.Parity == ODDPARITY)
-  {
-    value_ = odd;
-  }
-  else
-  {
-    value_ = none;
-  }
-#else
-  if (storage.c_cflag & PARENB)
-  {
-    if (storage.c_cflag & PARODD)
-    {
-      value_ = odd;
-    }
-    else
-    {
-      value_ = even;
-    }
-  }
-  else
-  {
-    value_ = none;
-  }
-#endif
-  ec = asio::error_code();
-  return ec;
-}
-
-serial_port_base::stop_bits::stop_bits(
-    serial_port_base::stop_bits::type t)
-  : value_(t)
-{
-  if (t != one && t != onepointfive && t != two)
-  {
-    std::out_of_range ex("invalid stop_bits value");
-    asio::detail::throw_exception(ex);
-  }
-}
-
-asio::error_code serial_port_base::stop_bits::store(
-    ASIO_OPTION_STORAGE& storage, asio::error_code& ec) const
-{
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  switch (value_)
-  {
-  case one:
-    storage.StopBits = ONESTOPBIT;
-    break;
-  case onepointfive:
-    storage.StopBits = ONE5STOPBITS;
-    break;
-  case two:
-    storage.StopBits = TWOSTOPBITS;
-    break;
-  default:
-    break;
-  }
-#else
-  switch (value_)
-  {
-  case one:
-    storage.c_cflag &= ~CSTOPB;
-    break;
-  case two:
-    storage.c_cflag |= CSTOPB;
-    break;
-  default:
-    ec = asio::error::operation_not_supported;
-    return ec;
-  }
-#endif
-  ec = asio::error_code();
-  return ec;
-}
-
-asio::error_code serial_port_base::stop_bits::load(
-    const ASIO_OPTION_STORAGE& storage, asio::error_code& ec)
-{
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  if (storage.StopBits == ONESTOPBIT)
-  {
-    value_ = one;
-  }
-  else if (storage.StopBits == ONE5STOPBITS)
-  {
-    value_ = onepointfive;
-  }
-  else if (storage.StopBits == TWOSTOPBITS)
-  {
-    value_ = two;
-  }
-  else
-  {
-    value_ = one;
-  }
-#else
-  value_ = (storage.c_cflag & CSTOPB) ? two : one;
-#endif
-  ec = asio::error_code();
-  return ec;
-}
-
-serial_port_base::character_size::character_size(unsigned int t)
-  : value_(t)
-{
-  if (t < 5 || t > 8)
-  {
-    std::out_of_range ex("invalid character_size value");
-    asio::detail::throw_exception(ex);
-  }
-}
-
-asio::error_code serial_port_base::character_size::store(
-    ASIO_OPTION_STORAGE& storage, asio::error_code& ec) const
-{
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  storage.ByteSize = value_;
-#else
-  storage.c_cflag &= ~CSIZE;
-  switch (value_)
-  {
-  case 5: storage.c_cflag |= CS5; break;
-  case 6: storage.c_cflag |= CS6; break;
-  case 7: storage.c_cflag |= CS7; break;
-  case 8: storage.c_cflag |= CS8; break;
-  default: break;
-  }
-#endif
-  ec = asio::error_code();
-  return ec;
-}
-
-asio::error_code serial_port_base::character_size::load(
-    const ASIO_OPTION_STORAGE& storage, asio::error_code& ec)
-{
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  value_ = storage.ByteSize;
-#else
-  if ((storage.c_cflag & CSIZE) == CS5) { value_ = 5; }
-  else if ((storage.c_cflag & CSIZE) == CS6) { value_ = 6; }
-  else if ((storage.c_cflag & CSIZE) == CS7) { value_ = 7; }
-  else if ((storage.c_cflag & CSIZE) == CS8) { value_ = 8; }
-  else
-  {
-    // Hmmm, use 8 for now.
-    value_ = 8;
-  }
-#endif
-  ec = asio::error_code();
-  return ec;
-}
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#undef ASIO_OPTION_STORAGE
-
-#endif // defined(ASIO_HAS_SERIAL_PORT)
-
-#endif // ASIO_IMPL_SERIAL_PORT_BASE_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/spawn.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/spawn.hpp
deleted file mode 100644
index 170fdf3..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/spawn.hpp
+++ /dev/null
@@ -1,353 +0,0 @@
-//
-// impl/spawn.hpp
-// ~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IMPL_SPAWN_HPP
-#define ASIO_IMPL_SPAWN_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/async_result.hpp"
-#include "asio/detail/atomic_count.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_cont_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/shared_ptr.hpp"
-#include "asio/handler_type.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-  template <typename Handler, typename T>
-  class coro_handler
-  {
-  public:
-    coro_handler(basic_yield_context<Handler> ctx)
-      : coro_(ctx.coro_.lock()),
-        ca_(ctx.ca_),
-        handler_(ctx.handler_),
-        ready_(0),
-        ec_(ctx.ec_),
-        value_(0)
-    {
-    }
-
-    void operator()(T value)
-    {
-      *ec_ = asio::error_code();
-      *value_ = ASIO_MOVE_CAST(T)(value);
-      if (--*ready_ == 0)
-        (*coro_)();
-    }
-
-    void operator()(asio::error_code ec, T value)
-    {
-      *ec_ = ec;
-      *value_ = ASIO_MOVE_CAST(T)(value);
-      if (--*ready_ == 0)
-        (*coro_)();
-    }
-
-  //private:
-    shared_ptr<typename basic_yield_context<Handler>::callee_type> coro_;
-    typename basic_yield_context<Handler>::caller_type& ca_;
-    Handler& handler_;
-    atomic_count* ready_;
-    asio::error_code* ec_;
-    T* value_;
-  };
-
-  template <typename Handler>
-  class coro_handler<Handler, void>
-  {
-  public:
-    coro_handler(basic_yield_context<Handler> ctx)
-      : coro_(ctx.coro_.lock()),
-        ca_(ctx.ca_),
-        handler_(ctx.handler_),
-        ready_(0),
-        ec_(ctx.ec_)
-    {
-    }
-
-    void operator()()
-    {
-      *ec_ = asio::error_code();
-      if (--*ready_ == 0)
-        (*coro_)();
-    }
-
-    void operator()(asio::error_code ec)
-    {
-      *ec_ = ec;
-      if (--*ready_ == 0)
-        (*coro_)();
-    }
-
-  //private:
-    shared_ptr<typename basic_yield_context<Handler>::callee_type> coro_;
-    typename basic_yield_context<Handler>::caller_type& ca_;
-    Handler& handler_;
-    atomic_count* ready_;
-    asio::error_code* ec_;
-  };
-
-  template <typename Handler, typename T>
-  inline void* asio_handler_allocate(std::size_t size,
-      coro_handler<Handler, T>* this_handler)
-  {
-    return asio_handler_alloc_helpers::allocate(
-        size, this_handler->handler_);
-  }
-
-  template <typename Handler, typename T>
-  inline void asio_handler_deallocate(void* pointer, std::size_t size,
-      coro_handler<Handler, T>* this_handler)
-  {
-    asio_handler_alloc_helpers::deallocate(
-        pointer, size, this_handler->handler_);
-  }
-
-  template <typename Handler, typename T>
-  inline bool asio_handler_is_continuation(coro_handler<Handler, T>*)
-  {
-    return true;
-  }
-
-  template <typename Function, typename Handler, typename T>
-  inline void asio_handler_invoke(Function& function,
-      coro_handler<Handler, T>* this_handler)
-  {
-    asio_handler_invoke_helpers::invoke(
-        function, this_handler->handler_);
-  }
-
-  template <typename Function, typename Handler, typename T>
-  inline void asio_handler_invoke(const Function& function,
-      coro_handler<Handler, T>* this_handler)
-  {
-    asio_handler_invoke_helpers::invoke(
-        function, this_handler->handler_);
-  }
-
-} // namespace detail
-
-#if !defined(GENERATING_DOCUMENTATION)
-
-template <typename Handler, typename ReturnType>
-struct handler_type<basic_yield_context<Handler>, ReturnType()>
-{
-  typedef detail::coro_handler<Handler, void> type;
-};
-
-template <typename Handler, typename ReturnType, typename Arg1>
-struct handler_type<basic_yield_context<Handler>, ReturnType(Arg1)>
-{
-  typedef detail::coro_handler<Handler, Arg1> type;
-};
-
-template <typename Handler, typename ReturnType>
-struct handler_type<basic_yield_context<Handler>,
-    ReturnType(asio::error_code)>
-{
-  typedef detail::coro_handler<Handler, void> type;
-};
-
-template <typename Handler, typename ReturnType, typename Arg2>
-struct handler_type<basic_yield_context<Handler>,
-    ReturnType(asio::error_code, Arg2)>
-{
-  typedef detail::coro_handler<Handler, Arg2> type;
-};
-
-template <typename Handler, typename T>
-class async_result<detail::coro_handler<Handler, T> >
-{
-public:
-  typedef T type;
-
-  explicit async_result(detail::coro_handler<Handler, T>& h)
-    : handler_(h),
-      ca_(h.ca_),
-      ready_(2)
-  {
-    h.ready_ = &ready_;
-    out_ec_ = h.ec_;
-    if (!out_ec_) h.ec_ = &ec_;
-    h.value_ = &value_;
-  }
-
-  type get()
-  {
-    handler_.coro_.reset(); // Must not hold shared_ptr to coro while suspended.
-    if (--ready_ != 0)
-      ca_();
-    if (!out_ec_ && ec_) throw asio::system_error(ec_);
-    return ASIO_MOVE_CAST(type)(value_);
-  }
-
-private:
-  detail::coro_handler<Handler, T>& handler_;
-  typename basic_yield_context<Handler>::caller_type& ca_;
-  detail::atomic_count ready_;
-  asio::error_code* out_ec_;
-  asio::error_code ec_;
-  type value_;
-};
-
-template <typename Handler>
-class async_result<detail::coro_handler<Handler, void> >
-{
-public:
-  typedef void type;
-
-  explicit async_result(detail::coro_handler<Handler, void>& h)
-    : handler_(h),
-      ca_(h.ca_),
-      ready_(2)
-  {
-    h.ready_ = &ready_;
-    out_ec_ = h.ec_;
-    if (!out_ec_) h.ec_ = &ec_;
-  }
-
-  void get()
-  {
-    handler_.coro_.reset(); // Must not hold shared_ptr to coro while suspended.
-    if (--ready_ != 0)
-      ca_();
-    if (!out_ec_ && ec_) throw asio::system_error(ec_);
-  }
-
-private:
-  detail::coro_handler<Handler, void>& handler_;
-  typename basic_yield_context<Handler>::caller_type& ca_;
-  detail::atomic_count ready_;
-  asio::error_code* out_ec_;
-  asio::error_code ec_;
-};
-
-namespace detail {
-
-  template <typename Handler, typename Function>
-  struct spawn_data : private noncopyable
-  {
-    spawn_data(ASIO_MOVE_ARG(Handler) handler,
-        bool call_handler, ASIO_MOVE_ARG(Function) function)
-      : handler_(ASIO_MOVE_CAST(Handler)(handler)),
-        call_handler_(call_handler),
-        function_(ASIO_MOVE_CAST(Function)(function))
-    {
-    }
-
-    weak_ptr<typename basic_yield_context<Handler>::callee_type> coro_;
-    Handler handler_;
-    bool call_handler_;
-    Function function_;
-  };
-
-  template <typename Handler, typename Function>
-  struct coro_entry_point
-  {
-    void operator()(typename basic_yield_context<Handler>::caller_type& ca)
-    {
-      shared_ptr<spawn_data<Handler, Function> > data(data_);
-#if !defined(BOOST_COROUTINES_UNIDIRECT) && !defined(BOOST_COROUTINES_V2)
-      ca(); // Yield until coroutine pointer has been initialised.
-#endif // !defined(BOOST_COROUTINES_UNIDIRECT) && !defined(BOOST_COROUTINES_V2)
-      const basic_yield_context<Handler> yield(
-          data->coro_, ca, data->handler_);
-      (data->function_)(yield);
-      if (data->call_handler_)
-        (data->handler_)();
-    }
-
-    shared_ptr<spawn_data<Handler, Function> > data_;
-  };
-
-  template <typename Handler, typename Function>
-  struct spawn_helper
-  {
-    void operator()()
-    {
-      typedef typename basic_yield_context<Handler>::callee_type callee_type;
-      coro_entry_point<Handler, Function> entry_point = { data_ };
-      shared_ptr<callee_type> coro(new callee_type(entry_point, attributes_));
-      data_->coro_ = coro;
-      (*coro)();
-    }
-
-    shared_ptr<spawn_data<Handler, Function> > data_;
-    boost::coroutines::attributes attributes_;
-  };
-
-  inline void default_spawn_handler() {}
-
-} // namespace detail
-
-template <typename Handler, typename Function>
-void spawn(ASIO_MOVE_ARG(Handler) handler,
-    ASIO_MOVE_ARG(Function) function,
-    const boost::coroutines::attributes& attributes)
-{
-  detail::spawn_helper<Handler, Function> helper;
-  helper.data_.reset(
-      new detail::spawn_data<Handler, Function>(
-        ASIO_MOVE_CAST(Handler)(handler), true,
-        ASIO_MOVE_CAST(Function)(function)));
-  helper.attributes_ = attributes;
-  asio_handler_invoke_helpers::invoke(helper, helper.data_->handler_);
-}
-
-template <typename Handler, typename Function>
-void spawn(basic_yield_context<Handler> ctx,
-    ASIO_MOVE_ARG(Function) function,
-    const boost::coroutines::attributes& attributes)
-{
-  Handler handler(ctx.handler_); // Explicit copy that might be moved from.
-  detail::spawn_helper<Handler, Function> helper;
-  helper.data_.reset(
-      new detail::spawn_data<Handler, Function>(
-        ASIO_MOVE_CAST(Handler)(handler), false,
-        ASIO_MOVE_CAST(Function)(function)));
-  helper.attributes_ = attributes;
-  asio_handler_invoke_helpers::invoke(helper, helper.data_->handler_);
-}
-
-template <typename Function>
-void spawn(asio::io_service::strand strand,
-    ASIO_MOVE_ARG(Function) function,
-    const boost::coroutines::attributes& attributes)
-{
-  asio::spawn(strand.wrap(&detail::default_spawn_handler),
-      ASIO_MOVE_CAST(Function)(function), attributes);
-}
-
-template <typename Function>
-void spawn(asio::io_service& io_service,
-    ASIO_MOVE_ARG(Function) function,
-    const boost::coroutines::attributes& attributes)
-{
-  asio::spawn(asio::io_service::strand(io_service),
-      ASIO_MOVE_CAST(Function)(function), attributes);
-}
-
-#endif // !defined(GENERATING_DOCUMENTATION)
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IMPL_SPAWN_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/src.cpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/src.cpp
deleted file mode 100644
index bcd882f..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/src.cpp
+++ /dev/null
@@ -1,25 +0,0 @@
-//
-// impl/src.cpp
-// ~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#if defined(_MSC_VER) \
-  || defined(__BORLANDC__) \
-  || defined(__DMC__)
-# pragma message ( \
-    "This file is deprecated. " \
-    "Please #include <asio/impl/src.hpp> instead.")
-#elif defined(__GNUC__) \
-  || defined(__HP_aCC) \
-  || defined(__SUNPRO_CC) \
-  || defined(__IBMCPP__)
-# warning "This file is deprecated."
-# warning "Please #include <asio/impl/src.hpp> instead."
-#endif
-
-#include "asio/impl/src.hpp"
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/src.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/src.hpp
deleted file mode 100644
index 7e940cb..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/src.hpp
+++ /dev/null
@@ -1,74 +0,0 @@
-//
-// impl/src.hpp
-// ~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IMPL_SRC_HPP
-#define ASIO_IMPL_SRC_HPP
-
-#define ASIO_SOURCE
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# error Do not compile Asio library source with ASIO_HEADER_ONLY defined
-#endif
-
-#include "asio/impl/error.ipp"
-#include "asio/impl/error_code.ipp"
-#include "asio/impl/handler_alloc_hook.ipp"
-#include "asio/impl/io_service.ipp"
-#include "asio/impl/serial_port_base.ipp"
-#include "asio/detail/impl/buffer_sequence_adapter.ipp"
-#include "asio/detail/impl/descriptor_ops.ipp"
-#include "asio/detail/impl/dev_poll_reactor.ipp"
-#include "asio/detail/impl/epoll_reactor.ipp"
-#include "asio/detail/impl/eventfd_select_interrupter.ipp"
-#include "asio/detail/impl/handler_tracking.ipp"
-#include "asio/detail/impl/kqueue_reactor.ipp"
-#include "asio/detail/impl/pipe_select_interrupter.ipp"
-#include "asio/detail/impl/posix_event.ipp"
-#include "asio/detail/impl/posix_mutex.ipp"
-#include "asio/detail/impl/posix_thread.ipp"
-#include "asio/detail/impl/posix_tss_ptr.ipp"
-#include "asio/detail/impl/reactive_descriptor_service.ipp"
-#include "asio/detail/impl/reactive_serial_port_service.ipp"
-#include "asio/detail/impl/reactive_socket_service_base.ipp"
-#include "asio/detail/impl/resolver_service_base.ipp"
-#include "asio/detail/impl/select_reactor.ipp"
-#include "asio/detail/impl/service_registry.ipp"
-#include "asio/detail/impl/signal_set_service.ipp"
-#include "asio/detail/impl/socket_ops.ipp"
-#include "asio/detail/impl/socket_select_interrupter.ipp"
-#include "asio/detail/impl/strand_service.ipp"
-#include "asio/detail/impl/task_io_service.ipp"
-#include "asio/detail/impl/throw_error.ipp"
-#include "asio/detail/impl/timer_queue_ptime.ipp"
-#include "asio/detail/impl/timer_queue_set.ipp"
-#include "asio/detail/impl/win_iocp_handle_service.ipp"
-#include "asio/detail/impl/win_iocp_io_service.ipp"
-#include "asio/detail/impl/win_iocp_serial_port_service.ipp"
-#include "asio/detail/impl/win_iocp_socket_service_base.ipp"
-#include "asio/detail/impl/win_event.ipp"
-#include "asio/detail/impl/win_mutex.ipp"
-#include "asio/detail/impl/win_object_handle_service.ipp"
-#include "asio/detail/impl/win_static_mutex.ipp"
-#include "asio/detail/impl/win_thread.ipp"
-#include "asio/detail/impl/win_tss_ptr.ipp"
-#include "asio/detail/impl/winrt_ssocket_service_base.ipp"
-#include "asio/detail/impl/winrt_timer_scheduler.ipp"
-#include "asio/detail/impl/winsock_init.ipp"
-#include "asio/generic/detail/impl/endpoint.ipp"
-#include "asio/ip/impl/address.ipp"
-#include "asio/ip/impl/address_v4.ipp"
-#include "asio/ip/impl/address_v6.ipp"
-#include "asio/ip/impl/host_name.ipp"
-#include "asio/ip/detail/impl/endpoint.ipp"
-#include "asio/local/detail/impl/endpoint.ipp"
-
-#endif // ASIO_IMPL_SRC_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/use_future.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/use_future.hpp
deleted file mode 100644
index fd3857f..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/use_future.hpp
+++ /dev/null
@@ -1,172 +0,0 @@
-//
-// impl/use_future.hpp
-// ~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IMPL_USE_FUTURE_HPP
-#define ASIO_IMPL_USE_FUTURE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <future>
-#include "asio/async_result.hpp"
-#include "asio/error_code.hpp"
-#include "asio/handler_type.hpp"
-#include "asio/system_error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace detail {
-
-  // Completion handler to adapt a promise as a completion handler.
-  template <typename T>
-  class promise_handler
-  {
-  public:
-    // Construct from use_future special value.
-    template <typename Allocator>
-    promise_handler(use_future_t<Allocator> uf)
-      : promise_(std::allocate_shared<std::promise<T> >(
-            uf.get_allocator(), std::allocator_arg, uf.get_allocator()))
-    {
-    }
-
-    void operator()(T t)
-    {
-      promise_->set_value(t);
-    }
-
-    void operator()(const asio::error_code& ec, T t)
-    {
-      if (ec)
-        promise_->set_exception(
-            std::make_exception_ptr(
-              asio::system_error(ec)));
-      else
-        promise_->set_value(t);
-    }
-
-  //private:
-    std::shared_ptr<std::promise<T> > promise_;
-  };
-
-  // Completion handler to adapt a void promise as a completion handler.
-  template <>
-  class promise_handler<void>
-  {
-  public:
-    // Construct from use_future special value. Used during rebinding.
-    template <typename Allocator>
-    promise_handler(use_future_t<Allocator> uf)
-      : promise_(std::allocate_shared<std::promise<void> >(
-            uf.get_allocator(), std::allocator_arg, uf.get_allocator()))
-    {
-    }
-
-    void operator()()
-    {
-      promise_->set_value();
-    }
-
-    void operator()(const asio::error_code& ec)
-    {
-      if (ec)
-        promise_->set_exception(
-            std::make_exception_ptr(
-              asio::system_error(ec)));
-      else
-        promise_->set_value();
-    }
-
-  //private:
-    std::shared_ptr<std::promise<void> > promise_;
-  };
-
-  // Ensure any exceptions thrown from the handler are propagated back to the
-  // caller via the future.
-  template <typename Function, typename T>
-  void asio_handler_invoke(Function f, promise_handler<T>* h)
-  {
-    std::shared_ptr<std::promise<T> > p(h->promise_);
-    try
-    {
-      f();
-    }
-    catch (...)
-    {
-      p->set_exception(std::current_exception());
-    }
-  }
-
-} // namespace detail
-
-#if !defined(GENERATING_DOCUMENTATION)
-
-// Handler traits specialisation for promise_handler.
-template <typename T>
-class async_result<detail::promise_handler<T> >
-{
-public:
-  // The initiating function will return a future.
-  typedef std::future<T> type;
-
-  // Constructor creates a new promise for the async operation, and obtains the
-  // corresponding future.
-  explicit async_result(detail::promise_handler<T>& h)
-  {
-    value_ = h.promise_->get_future();
-  }
-
-  // Obtain the future to be returned from the initiating function.
-  type get() { return std::move(value_); }
-
-private:
-  type value_;
-};
-
-// Handler type specialisation for use_future.
-template <typename Allocator, typename ReturnType>
-struct handler_type<use_future_t<Allocator>, ReturnType()>
-{
-  typedef detail::promise_handler<void> type;
-};
-
-// Handler type specialisation for use_future.
-template <typename Allocator, typename ReturnType, typename Arg1>
-struct handler_type<use_future_t<Allocator>, ReturnType(Arg1)>
-{
-  typedef detail::promise_handler<Arg1> type;
-};
-
-// Handler type specialisation for use_future.
-template <typename Allocator, typename ReturnType>
-struct handler_type<use_future_t<Allocator>,
-    ReturnType(asio::error_code)>
-{
-  typedef detail::promise_handler<void> type;
-};
-
-// Handler type specialisation for use_future.
-template <typename Allocator, typename ReturnType, typename Arg2>
-struct handler_type<use_future_t<Allocator>,
-    ReturnType(asio::error_code, Arg2)>
-{
-  typedef detail::promise_handler<Arg2> type;
-};
-
-#endif // !defined(GENERATING_DOCUMENTATION)
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IMPL_USE_FUTURE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/write.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/write.hpp
deleted file mode 100644
index b6ac59d..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/write.hpp
+++ /dev/null
@@ -1,765 +0,0 @@
-//
-// impl/write.hpp
-// ~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IMPL_WRITE_HPP
-#define ASIO_IMPL_WRITE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/buffer.hpp"
-#include "asio/completion_condition.hpp"
-#include "asio/detail/array_fwd.hpp"
-#include "asio/detail/base_from_completion_cond.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/consuming_buffers.hpp"
-#include "asio/detail/dependent_type.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_cont_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/throw_error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-template <typename SyncWriteStream, typename ConstBufferSequence,
-    typename CompletionCondition>
-std::size_t write(SyncWriteStream& s, const ConstBufferSequence& buffers,
-    CompletionCondition completion_condition, asio::error_code& ec)
-{
-  ec = asio::error_code();
-  asio::detail::consuming_buffers<
-    const_buffer, ConstBufferSequence> tmp(buffers);
-  std::size_t total_transferred = 0;
-  tmp.prepare(detail::adapt_completion_condition_result(
-        completion_condition(ec, total_transferred)));
-  while (tmp.begin() != tmp.end())
-  {
-    std::size_t bytes_transferred = s.write_some(tmp, ec);
-    tmp.consume(bytes_transferred);
-    total_transferred += bytes_transferred;
-    tmp.prepare(detail::adapt_completion_condition_result(
-          completion_condition(ec, total_transferred)));
-  }
-  return total_transferred;
-}
-
-template <typename SyncWriteStream, typename ConstBufferSequence>
-inline std::size_t write(SyncWriteStream& s, const ConstBufferSequence& buffers)
-{
-  asio::error_code ec;
-  std::size_t bytes_transferred = write(s, buffers, transfer_all(), ec);
-  asio::detail::throw_error(ec, "write");
-  return bytes_transferred;
-}
-
-template <typename SyncWriteStream, typename ConstBufferSequence>
-inline std::size_t write(SyncWriteStream& s, const ConstBufferSequence& buffers,
-    asio::error_code& ec)
-{
-  return write(s, buffers, transfer_all(), ec);
-}
-
-template <typename SyncWriteStream, typename ConstBufferSequence,
-    typename CompletionCondition>
-inline std::size_t write(SyncWriteStream& s, const ConstBufferSequence& buffers,
-    CompletionCondition completion_condition)
-{
-  asio::error_code ec;
-  std::size_t bytes_transferred = write(s, buffers, completion_condition, ec);
-  asio::detail::throw_error(ec, "write");
-  return bytes_transferred;
-}
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-template <typename SyncWriteStream, typename Allocator,
-    typename CompletionCondition>
-std::size_t write(SyncWriteStream& s,
-    asio::basic_streambuf<Allocator>& b,
-    CompletionCondition completion_condition, asio::error_code& ec)
-{
-  std::size_t bytes_transferred = write(s, b.data(), completion_condition, ec);
-  b.consume(bytes_transferred);
-  return bytes_transferred;
-}
-
-template <typename SyncWriteStream, typename Allocator>
-inline std::size_t write(SyncWriteStream& s,
-    asio::basic_streambuf<Allocator>& b)
-{
-  asio::error_code ec;
-  std::size_t bytes_transferred = write(s, b, transfer_all(), ec);
-  asio::detail::throw_error(ec, "write");
-  return bytes_transferred;
-}
-
-template <typename SyncWriteStream, typename Allocator>
-inline std::size_t write(SyncWriteStream& s,
-    asio::basic_streambuf<Allocator>& b,
-    asio::error_code& ec)
-{
-  return write(s, b, transfer_all(), ec);
-}
-
-template <typename SyncWriteStream, typename Allocator,
-    typename CompletionCondition>
-inline std::size_t write(SyncWriteStream& s,
-    asio::basic_streambuf<Allocator>& b,
-    CompletionCondition completion_condition)
-{
-  asio::error_code ec;
-  std::size_t bytes_transferred = write(s, b, completion_condition, ec);
-  asio::detail::throw_error(ec, "write");
-  return bytes_transferred;
-}
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-namespace detail
-{
-  template <typename AsyncWriteStream, typename ConstBufferSequence,
-      typename CompletionCondition, typename WriteHandler>
-  class write_op
-    : detail::base_from_completion_cond<CompletionCondition>
-  {
-  public:
-    write_op(AsyncWriteStream& stream, const ConstBufferSequence& buffers,
-        CompletionCondition completion_condition, WriteHandler& handler)
-      : detail::base_from_completion_cond<
-          CompletionCondition>(completion_condition),
-        stream_(stream),
-        buffers_(buffers),
-        start_(0),
-        total_transferred_(0),
-        handler_(ASIO_MOVE_CAST(WriteHandler)(handler))
-    {
-    }
-
-#if defined(ASIO_HAS_MOVE)
-    write_op(const write_op& other)
-      : detail::base_from_completion_cond<CompletionCondition>(other),
-        stream_(other.stream_),
-        buffers_(other.buffers_),
-        start_(other.start_),
-        total_transferred_(other.total_transferred_),
-        handler_(other.handler_)
-    {
-    }
-
-    write_op(write_op&& other)
-      : detail::base_from_completion_cond<CompletionCondition>(other),
-        stream_(other.stream_),
-        buffers_(other.buffers_),
-        start_(other.start_),
-        total_transferred_(other.total_transferred_),
-        handler_(ASIO_MOVE_CAST(WriteHandler)(other.handler_))
-    {
-    }
-#endif // defined(ASIO_HAS_MOVE)
-
-    void operator()(const asio::error_code& ec,
-        std::size_t bytes_transferred, int start = 0)
-    {
-      switch (start_ = start)
-      {
-        case 1:
-        buffers_.prepare(this->check_for_completion(ec, total_transferred_));
-        for (;;)
-        {
-          stream_.async_write_some(buffers_,
-              ASIO_MOVE_CAST(write_op)(*this));
-          return; default:
-          total_transferred_ += bytes_transferred;
-          buffers_.consume(bytes_transferred);
-          buffers_.prepare(this->check_for_completion(ec, total_transferred_));
-          if ((!ec && bytes_transferred == 0)
-              || buffers_.begin() == buffers_.end())
-            break;
-        }
-
-        handler_(ec, static_cast<const std::size_t&>(total_transferred_));
-      }
-    }
-
-  //private:
-    AsyncWriteStream& stream_;
-    asio::detail::consuming_buffers<
-      const_buffer, ConstBufferSequence> buffers_;
-    int start_;
-    std::size_t total_transferred_;
-    WriteHandler handler_;
-  };
-
-  template <typename AsyncWriteStream,
-      typename CompletionCondition, typename WriteHandler>
-  class write_op<AsyncWriteStream, asio::mutable_buffers_1,
-      CompletionCondition, WriteHandler>
-    : detail::base_from_completion_cond<CompletionCondition>
-  {
-  public:
-    write_op(AsyncWriteStream& stream,
-        const asio::mutable_buffers_1& buffers,
-        CompletionCondition completion_condition,
-        WriteHandler& handler)
-      : detail::base_from_completion_cond<
-          CompletionCondition>(completion_condition),
-        stream_(stream),
-        buffer_(buffers),
-        start_(0),
-        total_transferred_(0),
-        handler_(ASIO_MOVE_CAST(WriteHandler)(handler))
-    {
-    }
-
-#if defined(ASIO_HAS_MOVE)
-    write_op(const write_op& other)
-      : detail::base_from_completion_cond<CompletionCondition>(other),
-        stream_(other.stream_),
-        buffer_(other.buffer_),
-        start_(other.start_),
-        total_transferred_(other.total_transferred_),
-        handler_(other.handler_)
-    {
-    }
-
-    write_op(write_op&& other)
-      : detail::base_from_completion_cond<CompletionCondition>(other),
-        stream_(other.stream_),
-        buffer_(other.buffer_),
-        start_(other.start_),
-        total_transferred_(other.total_transferred_),
-        handler_(ASIO_MOVE_CAST(WriteHandler)(other.handler_))
-    {
-    }
-#endif // defined(ASIO_HAS_MOVE)
-
-    void operator()(const asio::error_code& ec,
-        std::size_t bytes_transferred, int start = 0)
-    {
-      std::size_t n = 0;
-      switch (start_ = start)
-      {
-        case 1:
-        n = this->check_for_completion(ec, total_transferred_);
-        for (;;)
-        {
-          stream_.async_write_some(
-              asio::buffer(buffer_ + total_transferred_, n),
-              ASIO_MOVE_CAST(write_op)(*this));
-          return; default:
-          total_transferred_ += bytes_transferred;
-          if ((!ec && bytes_transferred == 0)
-              || (n = this->check_for_completion(ec, total_transferred_)) == 0
-              || total_transferred_ == asio::buffer_size(buffer_))
-            break;
-        }
-
-        handler_(ec, static_cast<const std::size_t&>(total_transferred_));
-      }
-    }
-
-  //private:
-    AsyncWriteStream& stream_;
-    asio::mutable_buffer buffer_;
-    int start_;
-    std::size_t total_transferred_;
-    WriteHandler handler_;
-  };
-
-  template <typename AsyncWriteStream,
-      typename CompletionCondition, typename WriteHandler>
-  class write_op<AsyncWriteStream, asio::const_buffers_1,
-      CompletionCondition, WriteHandler>
-    : detail::base_from_completion_cond<CompletionCondition>
-  {
-  public:
-    write_op(AsyncWriteStream& stream,
-        const asio::const_buffers_1& buffers,
-        CompletionCondition completion_condition,
-        WriteHandler& handler)
-      : detail::base_from_completion_cond<
-          CompletionCondition>(completion_condition),
-        stream_(stream),
-        buffer_(buffers),
-        start_(0),
-        total_transferred_(0),
-        handler_(ASIO_MOVE_CAST(WriteHandler)(handler))
-    {
-    }
-
-#if defined(ASIO_HAS_MOVE)
-    write_op(const write_op& other)
-      : detail::base_from_completion_cond<CompletionCondition>(other),
-        stream_(other.stream_),
-        buffer_(other.buffer_),
-        start_(other.start_),
-        total_transferred_(other.total_transferred_),
-        handler_(other.handler_)
-    {
-    }
-
-    write_op(write_op&& other)
-      : detail::base_from_completion_cond<CompletionCondition>(other),
-        stream_(other.stream_),
-        buffer_(other.buffer_),
-        start_(other.start_),
-        total_transferred_(other.total_transferred_),
-        handler_(ASIO_MOVE_CAST(WriteHandler)(other.handler_))
-    {
-    }
-#endif // defined(ASIO_HAS_MOVE)
-
-    void operator()(const asio::error_code& ec,
-        std::size_t bytes_transferred, int start = 0)
-    {
-      std::size_t n = 0;
-      switch (start_ = start)
-      {
-        case 1:
-        n = this->check_for_completion(ec, total_transferred_);
-        for (;;)
-        {
-          stream_.async_write_some(
-              asio::buffer(buffer_ + total_transferred_, n),
-              ASIO_MOVE_CAST(write_op)(*this));
-          return; default:
-          total_transferred_ += bytes_transferred;
-          if ((!ec && bytes_transferred == 0)
-              || (n = this->check_for_completion(ec, total_transferred_)) == 0
-              || total_transferred_ == asio::buffer_size(buffer_))
-            break;
-        }
-
-        handler_(ec, static_cast<const std::size_t&>(total_transferred_));
-      }
-    }
-
-  //private:
-    AsyncWriteStream& stream_;
-    asio::const_buffer buffer_;
-    int start_;
-    std::size_t total_transferred_;
-    WriteHandler handler_;
-  };
-
-  template <typename AsyncWriteStream, typename Elem,
-      typename CompletionCondition, typename WriteHandler>
-  class write_op<AsyncWriteStream, boost::array<Elem, 2>,
-      CompletionCondition, WriteHandler>
-    : detail::base_from_completion_cond<CompletionCondition>
-  {
-  public:
-    write_op(AsyncWriteStream& stream, const boost::array<Elem, 2>& buffers,
-        CompletionCondition completion_condition, WriteHandler& handler)
-      : detail::base_from_completion_cond<
-          CompletionCondition>(completion_condition),
-        stream_(stream),
-        buffers_(buffers),
-        start_(0),
-        total_transferred_(0),
-        handler_(ASIO_MOVE_CAST(WriteHandler)(handler))
-    {
-    }
-
-#if defined(ASIO_HAS_MOVE)
-    write_op(const write_op& other)
-      : detail::base_from_completion_cond<CompletionCondition>(other),
-        stream_(other.stream_),
-        buffers_(other.buffers_),
-        start_(other.start_),
-        total_transferred_(other.total_transferred_),
-        handler_(other.handler_)
-    {
-    }
-
-    write_op(write_op&& other)
-      : detail::base_from_completion_cond<CompletionCondition>(other),
-        stream_(other.stream_),
-        buffers_(other.buffers_),
-        start_(other.start_),
-        total_transferred_(other.total_transferred_),
-        handler_(ASIO_MOVE_CAST(WriteHandler)(other.handler_))
-    {
-    }
-#endif // defined(ASIO_HAS_MOVE)
-
-    void operator()(const asio::error_code& ec,
-        std::size_t bytes_transferred, int start = 0)
-    {
-      typename asio::detail::dependent_type<Elem,
-          boost::array<asio::const_buffer, 2> >::type bufs = {{
-        asio::const_buffer(buffers_[0]),
-        asio::const_buffer(buffers_[1]) }};
-      std::size_t buffer_size0 = asio::buffer_size(bufs[0]);
-      std::size_t buffer_size1 = asio::buffer_size(bufs[1]);
-      std::size_t n = 0;
-      switch (start_ = start)
-      {
-        case 1:
-        n = this->check_for_completion(ec, total_transferred_);
-        for (;;)
-        {
-          bufs[0] = asio::buffer(bufs[0] + total_transferred_, n);
-          bufs[1] = asio::buffer(
-              bufs[1] + (total_transferred_ < buffer_size0
-                ? 0 : total_transferred_ - buffer_size0),
-              n - asio::buffer_size(bufs[0]));
-          stream_.async_write_some(bufs, ASIO_MOVE_CAST(write_op)(*this));
-          return; default:
-          total_transferred_ += bytes_transferred;
-          if ((!ec && bytes_transferred == 0)
-              || (n = this->check_for_completion(ec, total_transferred_)) == 0
-              || total_transferred_ == buffer_size0 + buffer_size1)
-            break;
-        }
-
-        handler_(ec, static_cast<const std::size_t&>(total_transferred_));
-      }
-    }
-
-  //private:
-    AsyncWriteStream& stream_;
-    boost::array<Elem, 2> buffers_;
-    int start_;
-    std::size_t total_transferred_;
-    WriteHandler handler_;
-  };
-
-#if defined(ASIO_HAS_STD_ARRAY)
-
-  template <typename AsyncWriteStream, typename Elem,
-      typename CompletionCondition, typename WriteHandler>
-  class write_op<AsyncWriteStream, std::array<Elem, 2>,
-      CompletionCondition, WriteHandler>
-    : detail::base_from_completion_cond<CompletionCondition>
-  {
-  public:
-    write_op(AsyncWriteStream& stream, const std::array<Elem, 2>& buffers,
-        CompletionCondition completion_condition, WriteHandler& handler)
-      : detail::base_from_completion_cond<
-          CompletionCondition>(completion_condition),
-        stream_(stream),
-        buffers_(buffers),
-        start_(0),
-        total_transferred_(0),
-        handler_(ASIO_MOVE_CAST(WriteHandler)(handler))
-    {
-    }
-
-#if defined(ASIO_HAS_MOVE)
-    write_op(const write_op& other)
-      : detail::base_from_completion_cond<CompletionCondition>(other),
-        stream_(other.stream_),
-        buffers_(other.buffers_),
-        start_(other.start_),
-        total_transferred_(other.total_transferred_),
-        handler_(other.handler_)
-    {
-    }
-
-    write_op(write_op&& other)
-      : detail::base_from_completion_cond<CompletionCondition>(other),
-        stream_(other.stream_),
-        buffers_(other.buffers_),
-        start_(other.start_),
-        total_transferred_(other.total_transferred_),
-        handler_(ASIO_MOVE_CAST(WriteHandler)(other.handler_))
-    {
-    }
-#endif // defined(ASIO_HAS_MOVE)
-
-    void operator()(const asio::error_code& ec,
-        std::size_t bytes_transferred, int start = 0)
-    {
-      typename asio::detail::dependent_type<Elem,
-          std::array<asio::const_buffer, 2> >::type bufs = {{
-        asio::const_buffer(buffers_[0]),
-        asio::const_buffer(buffers_[1]) }};
-      std::size_t buffer_size0 = asio::buffer_size(bufs[0]);
-      std::size_t buffer_size1 = asio::buffer_size(bufs[1]);
-      std::size_t n = 0;
-      switch (start_ = start)
-      {
-        case 1:
-        n = this->check_for_completion(ec, total_transferred_);
-        for (;;)
-        {
-          bufs[0] = asio::buffer(bufs[0] + total_transferred_, n);
-          bufs[1] = asio::buffer(
-              bufs[1] + (total_transferred_ < buffer_size0
-                ? 0 : total_transferred_ - buffer_size0),
-              n - asio::buffer_size(bufs[0]));
-          stream_.async_write_some(bufs, ASIO_MOVE_CAST(write_op)(*this));
-          return; default:
-          total_transferred_ += bytes_transferred;
-          if ((!ec && bytes_transferred == 0)
-              || (n = this->check_for_completion(ec, total_transferred_)) == 0
-              || total_transferred_ == buffer_size0 + buffer_size1)
-            break;
-        }
-
-        handler_(ec, static_cast<const std::size_t&>(total_transferred_));
-      }
-    }
-
-  //private:
-    AsyncWriteStream& stream_;
-    std::array<Elem, 2> buffers_;
-    int start_;
-    std::size_t total_transferred_;
-    WriteHandler handler_;
-  };
-
-#endif // defined(ASIO_HAS_STD_ARRAY)
-
-  template <typename AsyncWriteStream, typename ConstBufferSequence,
-      typename CompletionCondition, typename WriteHandler>
-  inline void* asio_handler_allocate(std::size_t size,
-      write_op<AsyncWriteStream, ConstBufferSequence,
-        CompletionCondition, WriteHandler>* this_handler)
-  {
-    return asio_handler_alloc_helpers::allocate(
-        size, this_handler->handler_);
-  }
-
-  template <typename AsyncWriteStream, typename ConstBufferSequence,
-      typename CompletionCondition, typename WriteHandler>
-  inline void asio_handler_deallocate(void* pointer, std::size_t size,
-      write_op<AsyncWriteStream, ConstBufferSequence,
-        CompletionCondition, WriteHandler>* this_handler)
-  {
-    asio_handler_alloc_helpers::deallocate(
-        pointer, size, this_handler->handler_);
-  }
-
-  template <typename AsyncWriteStream, typename ConstBufferSequence,
-      typename CompletionCondition, typename WriteHandler>
-  inline bool asio_handler_is_continuation(
-      write_op<AsyncWriteStream, ConstBufferSequence,
-        CompletionCondition, WriteHandler>* this_handler)
-  {
-    return this_handler->start_ == 0 ? true
-      : asio_handler_cont_helpers::is_continuation(
-          this_handler->handler_);
-  }
-
-  template <typename Function, typename AsyncWriteStream,
-      typename ConstBufferSequence, typename CompletionCondition,
-      typename WriteHandler>
-  inline void asio_handler_invoke(Function& function,
-      write_op<AsyncWriteStream, ConstBufferSequence,
-        CompletionCondition, WriteHandler>* this_handler)
-  {
-    asio_handler_invoke_helpers::invoke(
-        function, this_handler->handler_);
-  }
-
-  template <typename Function, typename AsyncWriteStream,
-      typename ConstBufferSequence, typename CompletionCondition,
-      typename WriteHandler>
-  inline void asio_handler_invoke(const Function& function,
-      write_op<AsyncWriteStream, ConstBufferSequence,
-        CompletionCondition, WriteHandler>* this_handler)
-  {
-    asio_handler_invoke_helpers::invoke(
-        function, this_handler->handler_);
-  }
-} // namespace detail
-
-template <typename AsyncWriteStream, typename ConstBufferSequence,
-  typename CompletionCondition, typename WriteHandler>
-inline ASIO_INITFN_RESULT_TYPE(WriteHandler,
-    void (asio::error_code, std::size_t))
-async_write(AsyncWriteStream& s, const ConstBufferSequence& buffers,
-    CompletionCondition completion_condition,
-    ASIO_MOVE_ARG(WriteHandler) handler)
-{
-  // If you get an error on the following line it means that your handler does
-  // not meet the documented type requirements for a WriteHandler.
-  ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
-  detail::async_result_init<
-    WriteHandler, void (asio::error_code, std::size_t)> init(
-      ASIO_MOVE_CAST(WriteHandler)(handler));
-
-  detail::write_op<AsyncWriteStream, ConstBufferSequence,
-    CompletionCondition, ASIO_HANDLER_TYPE(
-      WriteHandler, void (asio::error_code, std::size_t))>(
-        s, buffers, completion_condition, init.handler)(
-          asio::error_code(), 0, 1);
-
-  return init.result.get();
-}
-
-template <typename AsyncWriteStream, typename ConstBufferSequence,
-    typename WriteHandler>
-inline ASIO_INITFN_RESULT_TYPE(WriteHandler,
-    void (asio::error_code, std::size_t))
-async_write(AsyncWriteStream& s, const ConstBufferSequence& buffers,
-    ASIO_MOVE_ARG(WriteHandler) handler)
-{
-  // If you get an error on the following line it means that your handler does
-  // not meet the documented type requirements for a WriteHandler.
-  ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
-  detail::async_result_init<
-    WriteHandler, void (asio::error_code, std::size_t)> init(
-      ASIO_MOVE_CAST(WriteHandler)(handler));
-
-  detail::write_op<AsyncWriteStream, ConstBufferSequence,
-    detail::transfer_all_t, ASIO_HANDLER_TYPE(
-      WriteHandler, void (asio::error_code, std::size_t))>(
-        s, buffers, transfer_all(), init.handler)(
-          asio::error_code(), 0, 1);
-
-  return init.result.get();
-}
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-namespace detail
-{
-  template <typename Allocator, typename WriteHandler>
-  class write_streambuf_handler
-  {
-  public:
-    write_streambuf_handler(asio::basic_streambuf<Allocator>& streambuf,
-        WriteHandler& handler)
-      : streambuf_(streambuf),
-        handler_(ASIO_MOVE_CAST(WriteHandler)(handler))
-    {
-    }
-
-#if defined(ASIO_HAS_MOVE)
-    write_streambuf_handler(const write_streambuf_handler& other)
-      : streambuf_(other.streambuf_),
-        handler_(other.handler_)
-    {
-    }
-
-    write_streambuf_handler(write_streambuf_handler&& other)
-      : streambuf_(other.streambuf_),
-        handler_(ASIO_MOVE_CAST(WriteHandler)(other.handler_))
-    {
-    }
-#endif // defined(ASIO_HAS_MOVE)
-
-    void operator()(const asio::error_code& ec,
-        const std::size_t bytes_transferred)
-    {
-      streambuf_.consume(bytes_transferred);
-      handler_(ec, bytes_transferred);
-    }
-
-  //private:
-    asio::basic_streambuf<Allocator>& streambuf_;
-    WriteHandler handler_;
-  };
-
-  template <typename Allocator, typename WriteHandler>
-  inline void* asio_handler_allocate(std::size_t size,
-      write_streambuf_handler<Allocator, WriteHandler>* this_handler)
-  {
-    return asio_handler_alloc_helpers::allocate(
-        size, this_handler->handler_);
-  }
-
-  template <typename Allocator, typename WriteHandler>
-  inline void asio_handler_deallocate(void* pointer, std::size_t size,
-      write_streambuf_handler<Allocator, WriteHandler>* this_handler)
-  {
-    asio_handler_alloc_helpers::deallocate(
-        pointer, size, this_handler->handler_);
-  }
-
-  template <typename Allocator, typename WriteHandler>
-  inline bool asio_handler_is_continuation(
-      write_streambuf_handler<Allocator, WriteHandler>* this_handler)
-  {
-    return asio_handler_cont_helpers::is_continuation(
-        this_handler->handler_);
-  }
-
-  template <typename Function, typename Allocator, typename WriteHandler>
-  inline void asio_handler_invoke(Function& function,
-      write_streambuf_handler<Allocator, WriteHandler>* this_handler)
-  {
-    asio_handler_invoke_helpers::invoke(
-        function, this_handler->handler_);
-  }
-
-  template <typename Function, typename Allocator, typename WriteHandler>
-  inline void asio_handler_invoke(const Function& function,
-      write_streambuf_handler<Allocator, WriteHandler>* this_handler)
-  {
-    asio_handler_invoke_helpers::invoke(
-        function, this_handler->handler_);
-  }
-} // namespace detail
-
-template <typename AsyncWriteStream, typename Allocator,
-    typename CompletionCondition, typename WriteHandler>
-inline ASIO_INITFN_RESULT_TYPE(WriteHandler,
-    void (asio::error_code, std::size_t))
-async_write(AsyncWriteStream& s,
-    asio::basic_streambuf<Allocator>& b,
-    CompletionCondition completion_condition,
-    ASIO_MOVE_ARG(WriteHandler) handler)
-{
-  // If you get an error on the following line it means that your handler does
-  // not meet the documented type requirements for a WriteHandler.
-  ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
-  detail::async_result_init<
-    WriteHandler, void (asio::error_code, std::size_t)> init(
-      ASIO_MOVE_CAST(WriteHandler)(handler));
-
-  async_write(s, b.data(), completion_condition,
-    detail::write_streambuf_handler<Allocator, ASIO_HANDLER_TYPE(
-      WriteHandler, void (asio::error_code, std::size_t))>(
-        b, init.handler));
-
-  return init.result.get();
-}
-
-template <typename AsyncWriteStream, typename Allocator, typename WriteHandler>
-inline ASIO_INITFN_RESULT_TYPE(WriteHandler,
-    void (asio::error_code, std::size_t))
-async_write(AsyncWriteStream& s,
-    asio::basic_streambuf<Allocator>& b,
-    ASIO_MOVE_ARG(WriteHandler) handler)
-{
-  // If you get an error on the following line it means that your handler does
-  // not meet the documented type requirements for a WriteHandler.
-  ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
-  detail::async_result_init<
-    WriteHandler, void (asio::error_code, std::size_t)> init(
-      ASIO_MOVE_CAST(WriteHandler)(handler));
-
-  async_write(s, b.data(), transfer_all(),
-    detail::write_streambuf_handler<Allocator, ASIO_HANDLER_TYPE(
-      WriteHandler, void (asio::error_code, std::size_t))>(
-        b, init.handler));
-
-  return init.result.get();
-}
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IMPL_WRITE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/write_at.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/write_at.hpp
deleted file mode 100644
index 7a27958..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/impl/write_at.hpp
+++ /dev/null
@@ -1,825 +0,0 @@
-//
-// impl/write_at.hpp
-// ~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IMPL_WRITE_AT_HPP
-#define ASIO_IMPL_WRITE_AT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/buffer.hpp"
-#include "asio/completion_condition.hpp"
-#include "asio/detail/array_fwd.hpp"
-#include "asio/detail/base_from_completion_cond.hpp"
-#include "asio/detail/bind_handler.hpp"
-#include "asio/detail/consuming_buffers.hpp"
-#include "asio/detail/dependent_type.hpp"
-#include "asio/detail/handler_alloc_helpers.hpp"
-#include "asio/detail/handler_cont_helpers.hpp"
-#include "asio/detail/handler_invoke_helpers.hpp"
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/throw_error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-template <typename SyncRandomAccessWriteDevice, typename ConstBufferSequence,
-    typename CompletionCondition>
-std::size_t write_at(SyncRandomAccessWriteDevice& d,
-    uint64_t offset, const ConstBufferSequence& buffers,
-    CompletionCondition completion_condition, asio::error_code& ec)
-{
-  ec = asio::error_code();
-  asio::detail::consuming_buffers<
-    const_buffer, ConstBufferSequence> tmp(buffers);
-  std::size_t total_transferred = 0;
-  tmp.prepare(detail::adapt_completion_condition_result(
-        completion_condition(ec, total_transferred)));
-  while (tmp.begin() != tmp.end())
-  {
-    std::size_t bytes_transferred = d.write_some_at(
-        offset + total_transferred, tmp, ec);
-    tmp.consume(bytes_transferred);
-    total_transferred += bytes_transferred;
-    tmp.prepare(detail::adapt_completion_condition_result(
-          completion_condition(ec, total_transferred)));
-  }
-  return total_transferred;
-}
-
-template <typename SyncRandomAccessWriteDevice, typename ConstBufferSequence>
-inline std::size_t write_at(SyncRandomAccessWriteDevice& d,
-    uint64_t offset, const ConstBufferSequence& buffers)
-{
-  asio::error_code ec;
-  std::size_t bytes_transferred = write_at(
-      d, offset, buffers, transfer_all(), ec);
-  asio::detail::throw_error(ec, "write_at");
-  return bytes_transferred;
-}
-
-template <typename SyncRandomAccessWriteDevice, typename ConstBufferSequence>
-inline std::size_t write_at(SyncRandomAccessWriteDevice& d,
-    uint64_t offset, const ConstBufferSequence& buffers,
-    asio::error_code& ec)
-{
-  return write_at(d, offset, buffers, transfer_all(), ec);
-}
-
-template <typename SyncRandomAccessWriteDevice, typename ConstBufferSequence,
-    typename CompletionCondition>
-inline std::size_t write_at(SyncRandomAccessWriteDevice& d,
-    uint64_t offset, const ConstBufferSequence& buffers,
-    CompletionCondition completion_condition)
-{
-  asio::error_code ec;
-  std::size_t bytes_transferred = write_at(
-      d, offset, buffers, completion_condition, ec);
-  asio::detail::throw_error(ec, "write_at");
-  return bytes_transferred;
-}
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-template <typename SyncRandomAccessWriteDevice, typename Allocator,
-    typename CompletionCondition>
-std::size_t write_at(SyncRandomAccessWriteDevice& d,
-    uint64_t offset, asio::basic_streambuf<Allocator>& b,
-    CompletionCondition completion_condition, asio::error_code& ec)
-{
-  std::size_t bytes_transferred = write_at(
-      d, offset, b.data(), completion_condition, ec);
-  b.consume(bytes_transferred);
-  return bytes_transferred;
-}
-
-template <typename SyncRandomAccessWriteDevice, typename Allocator>
-inline std::size_t write_at(SyncRandomAccessWriteDevice& d,
-    uint64_t offset, asio::basic_streambuf<Allocator>& b)
-{
-  asio::error_code ec;
-  std::size_t bytes_transferred = write_at(d, offset, b, transfer_all(), ec);
-  asio::detail::throw_error(ec, "write_at");
-  return bytes_transferred;
-}
-
-template <typename SyncRandomAccessWriteDevice, typename Allocator>
-inline std::size_t write_at(SyncRandomAccessWriteDevice& d,
-    uint64_t offset, asio::basic_streambuf<Allocator>& b,
-    asio::error_code& ec)
-{
-  return write_at(d, offset, b, transfer_all(), ec);
-}
-
-template <typename SyncRandomAccessWriteDevice, typename Allocator,
-    typename CompletionCondition>
-inline std::size_t write_at(SyncRandomAccessWriteDevice& d,
-    uint64_t offset, asio::basic_streambuf<Allocator>& b,
-    CompletionCondition completion_condition)
-{
-  asio::error_code ec;
-  std::size_t bytes_transferred = write_at(
-      d, offset, b, completion_condition, ec);
-  asio::detail::throw_error(ec, "write_at");
-  return bytes_transferred;
-}
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-namespace detail
-{
-  template <typename AsyncRandomAccessWriteDevice, typename ConstBufferSequence,
-      typename CompletionCondition, typename WriteHandler>
-  class write_at_op
-    : detail::base_from_completion_cond<CompletionCondition>
-  {
-  public:
-    write_at_op(AsyncRandomAccessWriteDevice& device,
-        uint64_t offset, const ConstBufferSequence& buffers,
-        CompletionCondition completion_condition, WriteHandler& handler)
-      : detail::base_from_completion_cond<
-          CompletionCondition>(completion_condition),
-        device_(device),
-        offset_(offset),
-        buffers_(buffers),
-        start_(0),
-        total_transferred_(0),
-        handler_(ASIO_MOVE_CAST(WriteHandler)(handler))
-    {
-    }
-
-#if defined(ASIO_HAS_MOVE)
-    write_at_op(const write_at_op& other)
-      : detail::base_from_completion_cond<CompletionCondition>(other),
-        device_(other.device_),
-        offset_(other.offset_),
-        buffers_(other.buffers_),
-        start_(other.start_),
-        total_transferred_(other.total_transferred_),
-        handler_(other.handler_)
-    {
-    }
-
-    write_at_op(write_at_op&& other)
-      : detail::base_from_completion_cond<CompletionCondition>(other),
-        device_(other.device_),
-        offset_(other.offset_),
-        buffers_(other.buffers_),
-        start_(other.start_),
-        total_transferred_(other.total_transferred_),
-        handler_(ASIO_MOVE_CAST(WriteHandler)(other.handler_))
-    {
-    }
-#endif // defined(ASIO_HAS_MOVE)
-
-    void operator()(const asio::error_code& ec,
-        std::size_t bytes_transferred, int start = 0)
-    {
-      switch (start_ = start)
-      {
-        case 1:
-        buffers_.prepare(this->check_for_completion(ec, total_transferred_));
-        for (;;)
-        {
-          device_.async_write_some_at(
-              offset_ + total_transferred_, buffers_,
-              ASIO_MOVE_CAST(write_at_op)(*this));
-          return; default:
-          total_transferred_ += bytes_transferred;
-          buffers_.consume(bytes_transferred);
-          buffers_.prepare(this->check_for_completion(ec, total_transferred_));
-          if ((!ec && bytes_transferred == 0)
-              || buffers_.begin() == buffers_.end())
-            break;
-        }
-
-        handler_(ec, static_cast<const std::size_t&>(total_transferred_));
-      }
-    }
-
-  //private:
-    AsyncRandomAccessWriteDevice& device_;
-    uint64_t offset_;
-    asio::detail::consuming_buffers<
-      const_buffer, ConstBufferSequence> buffers_;
-    int start_;
-    std::size_t total_transferred_;
-    WriteHandler handler_;
-  };
-
-  template <typename AsyncRandomAccessWriteDevice,
-      typename CompletionCondition, typename WriteHandler>
-  class write_at_op<AsyncRandomAccessWriteDevice,
-      asio::mutable_buffers_1, CompletionCondition, WriteHandler>
-    : detail::base_from_completion_cond<CompletionCondition>
-  {
-  public:
-    write_at_op(AsyncRandomAccessWriteDevice& device,
-        uint64_t offset, const asio::mutable_buffers_1& buffers,
-        CompletionCondition completion_condition,
-        WriteHandler& handler)
-      : detail::base_from_completion_cond<
-          CompletionCondition>(completion_condition),
-        device_(device),
-        offset_(offset),
-        buffer_(buffers),
-        start_(0),
-        total_transferred_(0),
-        handler_(ASIO_MOVE_CAST(WriteHandler)(handler))
-    {
-    }
-
-#if defined(ASIO_HAS_MOVE)
-    write_at_op(const write_at_op& other)
-      : detail::base_from_completion_cond<CompletionCondition>(other),
-        device_(other.device_),
-        offset_(other.offset_),
-        buffer_(other.buffer_),
-        start_(other.start_),
-        total_transferred_(other.total_transferred_),
-        handler_(other.handler_)
-    {
-    }
-
-    write_at_op(write_at_op&& other)
-      : detail::base_from_completion_cond<CompletionCondition>(other),
-        device_(other.device_),
-        offset_(other.offset_),
-        buffer_(other.buffer_),
-        start_(other.start_),
-        total_transferred_(other.total_transferred_),
-        handler_(ASIO_MOVE_CAST(WriteHandler)(other.handler_))
-    {
-    }
-#endif // defined(ASIO_HAS_MOVE)
-
-    void operator()(const asio::error_code& ec,
-        std::size_t bytes_transferred, int start = 0)
-    {
-      std::size_t n = 0;
-      switch (start_ = start)
-      {
-        case 1:
-        n = this->check_for_completion(ec, total_transferred_);
-        for (;;)
-        {
-          device_.async_write_some_at(offset_ + total_transferred_,
-              asio::buffer(buffer_ + total_transferred_, n),
-              ASIO_MOVE_CAST(write_at_op)(*this));
-          return; default:
-          total_transferred_ += bytes_transferred;
-          if ((!ec && bytes_transferred == 0)
-              || (n = this->check_for_completion(ec, total_transferred_)) == 0
-              || total_transferred_ == asio::buffer_size(buffer_))
-            break;
-        }
-
-        handler_(ec, static_cast<const std::size_t&>(total_transferred_));
-      }
-    }
-
-  //private:
-    AsyncRandomAccessWriteDevice& device_;
-    uint64_t offset_;
-    asio::mutable_buffer buffer_;
-    int start_;
-    std::size_t total_transferred_;
-    WriteHandler handler_;
-  };
-
-  template <typename AsyncRandomAccessWriteDevice,
-      typename CompletionCondition, typename WriteHandler>
-  class write_at_op<AsyncRandomAccessWriteDevice, asio::const_buffers_1,
-      CompletionCondition, WriteHandler>
-    : detail::base_from_completion_cond<CompletionCondition>
-  {
-  public:
-    write_at_op(AsyncRandomAccessWriteDevice& device,
-        uint64_t offset, const asio::const_buffers_1& buffers,
-        CompletionCondition completion_condition,
-        WriteHandler& handler)
-      : detail::base_from_completion_cond<
-          CompletionCondition>(completion_condition),
-        device_(device),
-        offset_(offset),
-        buffer_(buffers),
-        start_(0),
-        total_transferred_(0),
-        handler_(ASIO_MOVE_CAST(WriteHandler)(handler))
-    {
-    }
-
-#if defined(ASIO_HAS_MOVE)
-    write_at_op(const write_at_op& other)
-      : detail::base_from_completion_cond<CompletionCondition>(other),
-        device_(other.device_),
-        offset_(other.offset_),
-        buffer_(other.buffer_),
-        start_(other.start_),
-        total_transferred_(other.total_transferred_),
-        handler_(other.handler_)
-    {
-    }
-
-    write_at_op(write_at_op&& other)
-      : detail::base_from_completion_cond<CompletionCondition>(other),
-        device_(other.device_),
-        offset_(other.offset_),
-        buffer_(other.buffer_),
-        start_(other.start_),
-        total_transferred_(other.total_transferred_),
-        handler_(ASIO_MOVE_CAST(WriteHandler)(other.handler_))
-    {
-    }
-#endif // defined(ASIO_HAS_MOVE)
-
-    void operator()(const asio::error_code& ec,
-        std::size_t bytes_transferred, int start = 0)
-    {
-      std::size_t n = 0;
-      switch (start_ = start)
-      {
-        case 1:
-        n = this->check_for_completion(ec, total_transferred_);
-        for (;;)
-        {
-          device_.async_write_some_at(offset_ + total_transferred_,
-              asio::buffer(buffer_ + total_transferred_, n),
-              ASIO_MOVE_CAST(write_at_op)(*this));
-          return; default:
-          total_transferred_ += bytes_transferred;
-          if ((!ec && bytes_transferred == 0)
-              || (n = this->check_for_completion(ec, total_transferred_)) == 0
-              || total_transferred_ == asio::buffer_size(buffer_))
-            break;
-        }
-
-        handler_(ec, static_cast<const std::size_t&>(total_transferred_));
-      }
-    }
-
-  //private:
-    AsyncRandomAccessWriteDevice& device_;
-    uint64_t offset_;
-    asio::const_buffer buffer_;
-    int start_;
-    std::size_t total_transferred_;
-    WriteHandler handler_;
-  };
-
-  template <typename AsyncRandomAccessWriteDevice, typename Elem,
-      typename CompletionCondition, typename WriteHandler>
-  class write_at_op<AsyncRandomAccessWriteDevice, boost::array<Elem, 2>,
-      CompletionCondition, WriteHandler>
-    : detail::base_from_completion_cond<CompletionCondition>
-  {
-  public:
-    write_at_op(AsyncRandomAccessWriteDevice& device,
-        uint64_t offset, const boost::array<Elem, 2>& buffers,
-        CompletionCondition completion_condition, WriteHandler& handler)
-      : detail::base_from_completion_cond<
-          CompletionCondition>(completion_condition),
-        device_(device),
-        offset_(offset),
-        buffers_(buffers),
-        start_(0),
-        total_transferred_(0),
-        handler_(ASIO_MOVE_CAST(WriteHandler)(handler))
-    {
-    }
-
-#if defined(ASIO_HAS_MOVE)
-    write_at_op(const write_at_op& other)
-      : detail::base_from_completion_cond<CompletionCondition>(other),
-        device_(other.device_),
-        offset_(other.offset_),
-        buffers_(other.buffers_),
-        start_(other.start_),
-        total_transferred_(other.total_transferred_),
-        handler_(other.handler_)
-    {
-    }
-
-    write_at_op(write_at_op&& other)
-      : detail::base_from_completion_cond<CompletionCondition>(other),
-        device_(other.device_),
-        offset_(other.offset_),
-        buffers_(other.buffers_),
-        start_(other.start_),
-        total_transferred_(other.total_transferred_),
-        handler_(ASIO_MOVE_CAST(WriteHandler)(other.handler_))
-    {
-    }
-#endif // defined(ASIO_HAS_MOVE)
-
-    void operator()(const asio::error_code& ec,
-        std::size_t bytes_transferred, int start = 0)
-    {
-      typename asio::detail::dependent_type<Elem,
-          boost::array<asio::const_buffer, 2> >::type bufs = {{
-        asio::const_buffer(buffers_[0]),
-        asio::const_buffer(buffers_[1]) }};
-      std::size_t buffer_size0 = asio::buffer_size(bufs[0]);
-      std::size_t buffer_size1 = asio::buffer_size(bufs[1]);
-      std::size_t n = 0;
-      switch (start_ = start)
-      {
-        case 1:
-        n = this->check_for_completion(ec, total_transferred_);
-        for (;;)
-        {
-          bufs[0] = asio::buffer(bufs[0] + total_transferred_, n);
-          bufs[1] = asio::buffer(
-              bufs[1] + (total_transferred_ < buffer_size0
-                ? 0 : total_transferred_ - buffer_size0),
-              n - asio::buffer_size(bufs[0]));
-          device_.async_write_some_at(offset_ + total_transferred_,
-              bufs, ASIO_MOVE_CAST(write_at_op)(*this));
-          return; default:
-          total_transferred_ += bytes_transferred;
-          if ((!ec && bytes_transferred == 0)
-              || (n = this->check_for_completion(ec, total_transferred_)) == 0
-              || total_transferred_ == buffer_size0 + buffer_size1)
-            break;
-        }
-
-        handler_(ec, static_cast<const std::size_t&>(total_transferred_));
-      }
-    }
-
-  //private:
-    AsyncRandomAccessWriteDevice& device_;
-    uint64_t offset_;
-    boost::array<Elem, 2> buffers_;
-    int start_;
-    std::size_t total_transferred_;
-    WriteHandler handler_;
-  };
-
-#if defined(ASIO_HAS_STD_ARRAY)
-
-  template <typename AsyncRandomAccessWriteDevice, typename Elem,
-      typename CompletionCondition, typename WriteHandler>
-  class write_at_op<AsyncRandomAccessWriteDevice, std::array<Elem, 2>,
-      CompletionCondition, WriteHandler>
-    : detail::base_from_completion_cond<CompletionCondition>
-  {
-  public:
-    write_at_op(AsyncRandomAccessWriteDevice& device,
-        uint64_t offset, const std::array<Elem, 2>& buffers,
-        CompletionCondition completion_condition, WriteHandler& handler)
-      : detail::base_from_completion_cond<
-          CompletionCondition>(completion_condition),
-        device_(device),
-        offset_(offset),
-        buffers_(buffers),
-        start_(0),
-        total_transferred_(0),
-        handler_(ASIO_MOVE_CAST(WriteHandler)(handler))
-    {
-    }
-
-#if defined(ASIO_HAS_MOVE)
-    write_at_op(const write_at_op& other)
-      : detail::base_from_completion_cond<CompletionCondition>(other),
-        device_(other.device_),
-        offset_(other.offset_),
-        buffers_(other.buffers_),
-        start_(other.start_),
-        total_transferred_(other.total_transferred_),
-        handler_(other.handler_)
-    {
-    }
-
-    write_at_op(write_at_op&& other)
-      : detail::base_from_completion_cond<CompletionCondition>(other),
-        device_(other.device_),
-        offset_(other.offset_),
-        buffers_(other.buffers_),
-        start_(other.start_),
-        total_transferred_(other.total_transferred_),
-        handler_(ASIO_MOVE_CAST(WriteHandler)(other.handler_))
-    {
-    }
-#endif // defined(ASIO_HAS_MOVE)
-
-    void operator()(const asio::error_code& ec,
-        std::size_t bytes_transferred, int start = 0)
-    {
-      typename asio::detail::dependent_type<Elem,
-          std::array<asio::const_buffer, 2> >::type bufs = {{
-        asio::const_buffer(buffers_[0]),
-        asio::const_buffer(buffers_[1]) }};
-      std::size_t buffer_size0 = asio::buffer_size(bufs[0]);
-      std::size_t buffer_size1 = asio::buffer_size(bufs[1]);
-      std::size_t n = 0;
-      switch (start_ = start)
-      {
-        case 1:
-        n = this->check_for_completion(ec, total_transferred_);
-        for (;;)
-        {
-          bufs[0] = asio::buffer(bufs[0] + total_transferred_, n);
-          bufs[1] = asio::buffer(
-              bufs[1] + (total_transferred_ < buffer_size0
-                ? 0 : total_transferred_ - buffer_size0),
-              n - asio::buffer_size(bufs[0]));
-          device_.async_write_some_at(offset_ + total_transferred_,
-              bufs, ASIO_MOVE_CAST(write_at_op)(*this));
-          return; default:
-          total_transferred_ += bytes_transferred;
-          if ((!ec && bytes_transferred == 0)
-              || (n = this->check_for_completion(ec, total_transferred_)) == 0
-              || total_transferred_ == buffer_size0 + buffer_size1)
-            break;
-        }
-
-        handler_(ec, static_cast<const std::size_t&>(total_transferred_));
-      }
-    }
-
-  //private:
-    AsyncRandomAccessWriteDevice& device_;
-    uint64_t offset_;
-    std::array<Elem, 2> buffers_;
-    int start_;
-    std::size_t total_transferred_;
-    WriteHandler handler_;
-  };
-
-#endif // defined(ASIO_HAS_STD_ARRAY)
-
-  template <typename AsyncRandomAccessWriteDevice, typename ConstBufferSequence,
-      typename CompletionCondition, typename WriteHandler>
-  inline void* asio_handler_allocate(std::size_t size,
-      write_at_op<AsyncRandomAccessWriteDevice, ConstBufferSequence,
-        CompletionCondition, WriteHandler>* this_handler)
-  {
-    return asio_handler_alloc_helpers::allocate(
-        size, this_handler->handler_);
-  }
-
-  template <typename AsyncRandomAccessWriteDevice, typename ConstBufferSequence,
-      typename CompletionCondition, typename WriteHandler>
-  inline void asio_handler_deallocate(void* pointer, std::size_t size,
-      write_at_op<AsyncRandomAccessWriteDevice, ConstBufferSequence,
-        CompletionCondition, WriteHandler>* this_handler)
-  {
-    asio_handler_alloc_helpers::deallocate(
-        pointer, size, this_handler->handler_);
-  }
-
-  template <typename AsyncRandomAccessWriteDevice, typename ConstBufferSequence,
-      typename CompletionCondition, typename WriteHandler>
-  inline bool asio_handler_is_continuation(
-      write_at_op<AsyncRandomAccessWriteDevice, ConstBufferSequence,
-        CompletionCondition, WriteHandler>* this_handler)
-  {
-    return this_handler->start_ == 0 ? true
-      : asio_handler_cont_helpers::is_continuation(
-          this_handler->handler_);
-  }
-
-  template <typename Function, typename AsyncRandomAccessWriteDevice,
-      typename ConstBufferSequence, typename CompletionCondition,
-      typename WriteHandler>
-  inline void asio_handler_invoke(Function& function,
-      write_at_op<AsyncRandomAccessWriteDevice, ConstBufferSequence,
-        CompletionCondition, WriteHandler>* this_handler)
-  {
-    asio_handler_invoke_helpers::invoke(
-        function, this_handler->handler_);
-  }
-
-  template <typename Function, typename AsyncRandomAccessWriteDevice,
-      typename ConstBufferSequence, typename CompletionCondition,
-      typename WriteHandler>
-  inline void asio_handler_invoke(const Function& function,
-      write_at_op<AsyncRandomAccessWriteDevice, ConstBufferSequence,
-        CompletionCondition, WriteHandler>* this_handler)
-  {
-    asio_handler_invoke_helpers::invoke(
-        function, this_handler->handler_);
-  }
-
-  template <typename AsyncRandomAccessWriteDevice, typename ConstBufferSequence,
-      typename CompletionCondition, typename WriteHandler>
-  inline write_at_op<AsyncRandomAccessWriteDevice,
-      ConstBufferSequence, CompletionCondition, WriteHandler>
-  make_write_at_op(AsyncRandomAccessWriteDevice& d,
-      uint64_t offset, const ConstBufferSequence& buffers,
-      CompletionCondition completion_condition, WriteHandler handler)
-  {
-    return write_at_op<AsyncRandomAccessWriteDevice,
-      ConstBufferSequence, CompletionCondition, WriteHandler>(
-        d, offset, buffers, completion_condition, handler);
-  }
-} // namespace detail
-
-template <typename AsyncRandomAccessWriteDevice, typename ConstBufferSequence,
-    typename CompletionCondition, typename WriteHandler>
-inline ASIO_INITFN_RESULT_TYPE(WriteHandler,
-    void (asio::error_code, std::size_t))
-async_write_at(AsyncRandomAccessWriteDevice& d,
-    uint64_t offset, const ConstBufferSequence& buffers,
-    CompletionCondition completion_condition,
-    ASIO_MOVE_ARG(WriteHandler) handler)
-{
-  // If you get an error on the following line it means that your handler does
-  // not meet the documented type requirements for a WriteHandler.
-  ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
-  detail::async_result_init<
-    WriteHandler, void (asio::error_code, std::size_t)> init(
-      ASIO_MOVE_CAST(WriteHandler)(handler));
-
-  detail::write_at_op<AsyncRandomAccessWriteDevice, ConstBufferSequence,
-    CompletionCondition, ASIO_HANDLER_TYPE(
-      WriteHandler, void (asio::error_code, std::size_t))>(
-        d, offset, buffers, completion_condition, init.handler)(
-          asio::error_code(), 0, 1);
-
-  return init.result.get();
-}
-
-template <typename AsyncRandomAccessWriteDevice, typename ConstBufferSequence,
-    typename WriteHandler>
-inline ASIO_INITFN_RESULT_TYPE(WriteHandler,
-    void (asio::error_code, std::size_t))
-async_write_at(AsyncRandomAccessWriteDevice& d,
-    uint64_t offset, const ConstBufferSequence& buffers,
-    ASIO_MOVE_ARG(WriteHandler) handler)
-{
-  // If you get an error on the following line it means that your handler does
-  // not meet the documented type requirements for a WriteHandler.
-  ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
-  detail::async_result_init<
-    WriteHandler, void (asio::error_code, std::size_t)> init(
-      ASIO_MOVE_CAST(WriteHandler)(handler));
-
-  detail::write_at_op<AsyncRandomAccessWriteDevice, ConstBufferSequence,
-    detail::transfer_all_t, ASIO_HANDLER_TYPE(
-      WriteHandler, void (asio::error_code, std::size_t))>(
-        d, offset, buffers, transfer_all(), init.handler)(
-          asio::error_code(), 0, 1);
-
-  return init.result.get();
-}
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-namespace detail
-{
-  template <typename Allocator, typename WriteHandler>
-  class write_at_streambuf_op
-  {
-  public:
-    write_at_streambuf_op(
-        asio::basic_streambuf<Allocator>& streambuf,
-        WriteHandler& handler)
-      : streambuf_(streambuf),
-        handler_(ASIO_MOVE_CAST(WriteHandler)(handler))
-    {
-    }
-
-#if defined(ASIO_HAS_MOVE)
-    write_at_streambuf_op(const write_at_streambuf_op& other)
-      : streambuf_(other.streambuf_),
-        handler_(other.handler_)
-    {
-    }
-
-    write_at_streambuf_op(write_at_streambuf_op&& other)
-      : streambuf_(other.streambuf_),
-        handler_(ASIO_MOVE_CAST(WriteHandler)(other.handler_))
-    {
-    }
-#endif // defined(ASIO_HAS_MOVE)
-
-    void operator()(const asio::error_code& ec,
-        const std::size_t bytes_transferred)
-    {
-      streambuf_.consume(bytes_transferred);
-      handler_(ec, bytes_transferred);
-    }
-
-  //private:
-    asio::basic_streambuf<Allocator>& streambuf_;
-    WriteHandler handler_;
-  };
-
-  template <typename Allocator, typename WriteHandler>
-  inline void* asio_handler_allocate(std::size_t size,
-      write_at_streambuf_op<Allocator, WriteHandler>* this_handler)
-  {
-    return asio_handler_alloc_helpers::allocate(
-        size, this_handler->handler_);
-  }
-
-  template <typename Allocator, typename WriteHandler>
-  inline void asio_handler_deallocate(void* pointer, std::size_t size,
-      write_at_streambuf_op<Allocator, WriteHandler>* this_handler)
-  {
-    asio_handler_alloc_helpers::deallocate(
-        pointer, size, this_handler->handler_);
-  }
-
-  template <typename Allocator, typename WriteHandler>
-  inline bool asio_handler_is_continuation(
-      write_at_streambuf_op<Allocator, WriteHandler>* this_handler)
-  {
-    return asio_handler_cont_helpers::is_continuation(
-        this_handler->handler_);
-  }
-
-  template <typename Function, typename Allocator, typename WriteHandler>
-  inline void asio_handler_invoke(Function& function,
-      write_at_streambuf_op<Allocator, WriteHandler>* this_handler)
-  {
-    asio_handler_invoke_helpers::invoke(
-        function, this_handler->handler_);
-  }
-
-  template <typename Function, typename Allocator, typename WriteHandler>
-  inline void asio_handler_invoke(const Function& function,
-      write_at_streambuf_op<Allocator, WriteHandler>* this_handler)
-  {
-    asio_handler_invoke_helpers::invoke(
-        function, this_handler->handler_);
-  }
-
-  template <typename Allocator, typename WriteHandler>
-  inline write_at_streambuf_op<Allocator, WriteHandler>
-  make_write_at_streambuf_op(
-      asio::basic_streambuf<Allocator>& b, WriteHandler handler)
-  {
-    return write_at_streambuf_op<Allocator, WriteHandler>(b, handler);
-  }
-} // namespace detail
-
-template <typename AsyncRandomAccessWriteDevice, typename Allocator,
-    typename CompletionCondition, typename WriteHandler>
-inline ASIO_INITFN_RESULT_TYPE(WriteHandler,
-    void (asio::error_code, std::size_t))
-async_write_at(AsyncRandomAccessWriteDevice& d,
-    uint64_t offset, asio::basic_streambuf<Allocator>& b,
-    CompletionCondition completion_condition,
-    ASIO_MOVE_ARG(WriteHandler) handler)
-{
-  // If you get an error on the following line it means that your handler does
-  // not meet the documented type requirements for a WriteHandler.
-  ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
-  detail::async_result_init<
-    WriteHandler, void (asio::error_code, std::size_t)> init(
-      ASIO_MOVE_CAST(WriteHandler)(handler));
-
-  async_write_at(d, offset, b.data(), completion_condition,
-    detail::write_at_streambuf_op<Allocator, ASIO_HANDLER_TYPE(
-      WriteHandler, void (asio::error_code, std::size_t))>(
-        b, init.handler));
-
-  return init.result.get();
-}
-
-template <typename AsyncRandomAccessWriteDevice, typename Allocator,
-    typename WriteHandler>
-inline ASIO_INITFN_RESULT_TYPE(WriteHandler,
-    void (asio::error_code, std::size_t))
-async_write_at(AsyncRandomAccessWriteDevice& d,
-    uint64_t offset, asio::basic_streambuf<Allocator>& b,
-    ASIO_MOVE_ARG(WriteHandler) handler)
-{
-  // If you get an error on the following line it means that your handler does
-  // not meet the documented type requirements for a WriteHandler.
-  ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
-  detail::async_result_init<
-    WriteHandler, void (asio::error_code, std::size_t)> init(
-      ASIO_MOVE_CAST(WriteHandler)(handler));
-
-  async_write_at(d, offset, b.data(), transfer_all(),
-    detail::write_at_streambuf_op<Allocator, ASIO_HANDLER_TYPE(
-      WriteHandler, void (asio::error_code, std::size_t))>(
-        b, init.handler));
-
-  return init.result.get();
-}
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IMPL_WRITE_AT_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/io_service.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/io_service.hpp
deleted file mode 100644
index 690f757..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/io_service.hpp
+++ /dev/null
@@ -1,770 +0,0 @@
-//
-// io_service.hpp
-// ~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IO_SERVICE_HPP
-#define ASIO_IO_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cstddef>
-#include <stdexcept>
-#include <typeinfo>
-#include "asio/async_result.hpp"
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/wrapped_handler.hpp"
-#include "asio/error_code.hpp"
-
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-# include "asio/detail/winsock_init.hpp"
-#elif defined(__sun) || defined(__QNX__) || defined(__hpux) || defined(_AIX) \
-  || defined(__osf__)
-# include "asio/detail/signal_init.hpp"
-#endif
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-class io_service;
-template <typename Service> Service& use_service(io_service& ios);
-template <typename Service> void add_service(io_service& ios, Service* svc);
-template <typename Service> bool has_service(io_service& ios);
-
-namespace detail {
-#if defined(ASIO_HAS_IOCP)
-  typedef class win_iocp_io_service io_service_impl;
-  class win_iocp_overlapped_ptr;
-#else
-  typedef class task_io_service io_service_impl;
-#endif
-  class service_registry;
-} // namespace detail
-
-/// Provides core I/O functionality.
-/**
- * The io_service class provides the core I/O functionality for users of the
- * asynchronous I/O objects, including:
- *
- * @li asio::ip::tcp::socket
- * @li asio::ip::tcp::acceptor
- * @li asio::ip::udp::socket
- * @li asio::deadline_timer.
- *
- * The io_service class also includes facilities intended for developers of
- * custom asynchronous services.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Safe, with the specific exceptions of the reset() and
- * notify_fork() functions. Calling reset() while there are unfinished run(),
- * run_one(), poll() or poll_one() calls results in undefined behaviour. The
- * notify_fork() function should not be called while any io_service function,
- * or any function on an I/O object that is associated with the io_service, is
- * being called in another thread.
- *
- * @par Concepts:
- * Dispatcher.
- *
- * @par Synchronous and asynchronous operations
- *
- * Synchronous operations on I/O objects implicitly run the io_service object
- * for an individual operation. The io_service functions run(), run_one(),
- * poll() or poll_one() must be called for the io_service to perform
- * asynchronous operations on behalf of a C++ program. Notification that an
- * asynchronous operation has completed is delivered by invocation of the
- * associated handler. Handlers are invoked only by a thread that is currently
- * calling any overload of run(), run_one(), poll() or poll_one() for the
- * io_service.
- *
- * @par Effect of exceptions thrown from handlers
- *
- * If an exception is thrown from a handler, the exception is allowed to
- * propagate through the throwing thread's invocation of run(), run_one(),
- * poll() or poll_one(). No other threads that are calling any of these
- * functions are affected. It is then the responsibility of the application to
- * catch the exception.
- *
- * After the exception has been caught, the run(), run_one(), poll() or
- * poll_one() call may be restarted @em without the need for an intervening
- * call to reset(). This allows the thread to rejoin the io_service object's
- * thread pool without impacting any other threads in the pool.
- *
- * For example:
- *
- * @code
- * asio::io_service io_service;
- * ...
- * for (;;)
- * {
- *   try
- *   {
- *     io_service.run();
- *     break; // run() exited normally
- *   }
- *   catch (my_exception& e)
- *   {
- *     // Deal with exception as appropriate.
- *   }
- * }
- * @endcode
- *
- * @par Stopping the io_service from running out of work
- *
- * Some applications may need to prevent an io_service object's run() call from
- * returning when there is no more work to do. For example, the io_service may
- * be being run in a background thread that is launched prior to the
- * application's asynchronous operations. The run() call may be kept running by
- * creating an object of type asio::io_service::work:
- *
- * @code asio::io_service io_service;
- * asio::io_service::work work(io_service);
- * ... @endcode
- *
- * To effect a shutdown, the application will then need to call the io_service
- * object's stop() member function. This will cause the io_service run() call
- * to return as soon as possible, abandoning unfinished operations and without
- * permitting ready handlers to be dispatched.
- *
- * Alternatively, if the application requires that all operations and handlers
- * be allowed to finish normally, the work object may be explicitly destroyed.
- *
- * @code asio::io_service io_service;
- * auto_ptr<asio::io_service::work> work(
- *     new asio::io_service::work(io_service));
- * ...
- * work.reset(); // Allow run() to exit. @endcode
- *
- * @par The io_service class and I/O services
- *
- * Class io_service implements an extensible, type-safe, polymorphic set of I/O
- * services, indexed by service type. An object of class io_service must be
- * initialised before I/O objects such as sockets, resolvers and timers can be
- * used. These I/O objects are distinguished by having constructors that accept
- * an @c io_service& parameter.
- *
- * I/O services exist to manage the logical interface to the operating system on
- * behalf of the I/O objects. In particular, there are resources that are shared
- * across a class of I/O objects. For example, timers may be implemented in
- * terms of a single timer queue. The I/O services manage these shared
- * resources.
- *
- * Access to the services of an io_service is via three function templates,
- * use_service(), add_service() and has_service().
- *
- * In a call to @c use_service<Service>(), the type argument chooses a service,
- * making available all members of the named type. If @c Service is not present
- * in an io_service, an object of type @c Service is created and added to the
- * io_service. A C++ program can check if an io_service implements a
- * particular service with the function template @c has_service<Service>().
- *
- * Service objects may be explicitly added to an io_service using the function
- * template @c add_service<Service>(). If the @c Service is already present, the
- * service_already_exists exception is thrown. If the owner of the service is
- * not the same object as the io_service parameter, the invalid_service_owner
- * exception is thrown.
- *
- * Once a service reference is obtained from an io_service object by calling
- * use_service(), that reference remains usable as long as the owning io_service
- * object exists.
- *
- * All I/O service implementations have io_service::service as a public base
- * class. Custom I/O services may be implemented by deriving from this class and
- * then added to an io_service using the facilities described above.
- */
-class io_service
-  : private noncopyable
-{
-private:
-  typedef detail::io_service_impl impl_type;
-#if defined(ASIO_HAS_IOCP)
-  friend class detail::win_iocp_overlapped_ptr;
-#endif
-
-public:
-  class work;
-  friend class work;
-
-  class id;
-
-  class service;
-
-  class strand;
-
-  /// Constructor.
-  ASIO_DECL io_service();
-
-  /// Constructor.
-  /**
-   * Construct with a hint about the required level of concurrency.
-   *
-   * @param concurrency_hint A suggestion to the implementation on how many
-   * threads it should allow to run simultaneously.
-   */
-  ASIO_DECL explicit io_service(std::size_t concurrency_hint);
-
-  /// Destructor.
-  /**
-   * On destruction, the io_service performs the following sequence of
-   * operations:
-   *
-   * @li For each service object @c svc in the io_service set, in reverse order
-   * of the beginning of service object lifetime, performs
-   * @c svc->shutdown_service().
-   *
-   * @li Uninvoked handler objects that were scheduled for deferred invocation
-   * on the io_service, or any associated strand, are destroyed.
-   *
-   * @li For each service object @c svc in the io_service set, in reverse order
-   * of the beginning of service object lifetime, performs
-   * <tt>delete static_cast<io_service::service*>(svc)</tt>.
-   *
-   * @note The destruction sequence described above permits programs to
-   * simplify their resource management by using @c shared_ptr<>. Where an
-   * object's lifetime is tied to the lifetime of a connection (or some other
-   * sequence of asynchronous operations), a @c shared_ptr to the object would
-   * be bound into the handlers for all asynchronous operations associated with
-   * it. This works as follows:
-   *
-   * @li When a single connection ends, all associated asynchronous operations
-   * complete. The corresponding handler objects are destroyed, and all
-   * @c shared_ptr references to the objects are destroyed.
-   *
-   * @li To shut down the whole program, the io_service function stop() is
-   * called to terminate any run() calls as soon as possible. The io_service
-   * destructor defined above destroys all handlers, causing all @c shared_ptr
-   * references to all connection objects to be destroyed.
-   */
-  ASIO_DECL ~io_service();
-
-  /// Run the io_service object's event processing loop.
-  /**
-   * The run() function blocks until all work has finished and there are no
-   * more handlers to be dispatched, or until the io_service has been stopped.
-   *
-   * Multiple threads may call the run() function to set up a pool of threads
-   * from which the io_service may execute handlers. All threads that are
-   * waiting in the pool are equivalent and the io_service may choose any one
-   * of them to invoke a handler.
-   *
-   * A normal exit from the run() function implies that the io_service object
-   * is stopped (the stopped() function returns @c true). Subsequent calls to
-   * run(), run_one(), poll() or poll_one() will return immediately unless there
-   * is a prior call to reset().
-   *
-   * @return The number of handlers that were executed.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note The run() function must not be called from a thread that is currently
-   * calling one of run(), run_one(), poll() or poll_one() on the same
-   * io_service object.
-   *
-   * The poll() function may also be used to dispatch ready handlers, but
-   * without blocking.
-   */
-  ASIO_DECL std::size_t run();
-
-  /// Run the io_service object's event processing loop.
-  /**
-   * The run() function blocks until all work has finished and there are no
-   * more handlers to be dispatched, or until the io_service has been stopped.
-   *
-   * Multiple threads may call the run() function to set up a pool of threads
-   * from which the io_service may execute handlers. All threads that are
-   * waiting in the pool are equivalent and the io_service may choose any one
-   * of them to invoke a handler.
-   *
-   * A normal exit from the run() function implies that the io_service object
-   * is stopped (the stopped() function returns @c true). Subsequent calls to
-   * run(), run_one(), poll() or poll_one() will return immediately unless there
-   * is a prior call to reset().
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @return The number of handlers that were executed.
-   *
-   * @note The run() function must not be called from a thread that is currently
-   * calling one of run(), run_one(), poll() or poll_one() on the same
-   * io_service object.
-   *
-   * The poll() function may also be used to dispatch ready handlers, but
-   * without blocking.
-   */
-  ASIO_DECL std::size_t run(asio::error_code& ec);
-
-  /// Run the io_service object's event processing loop to execute at most one
-  /// handler.
-  /**
-   * The run_one() function blocks until one handler has been dispatched, or
-   * until the io_service has been stopped.
-   *
-   * @return The number of handlers that were executed. A zero return value
-   * implies that the io_service object is stopped (the stopped() function
-   * returns @c true). Subsequent calls to run(), run_one(), poll() or
-   * poll_one() will return immediately unless there is a prior call to
-   * reset().
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  ASIO_DECL std::size_t run_one();
-
-  /// Run the io_service object's event processing loop to execute at most one
-  /// handler.
-  /**
-   * The run_one() function blocks until one handler has been dispatched, or
-   * until the io_service has been stopped.
-   *
-   * @return The number of handlers that were executed. A zero return value
-   * implies that the io_service object is stopped (the stopped() function
-   * returns @c true). Subsequent calls to run(), run_one(), poll() or
-   * poll_one() will return immediately unless there is a prior call to
-   * reset().
-   *
-   * @return The number of handlers that were executed.
-   */
-  ASIO_DECL std::size_t run_one(asio::error_code& ec);
-
-  /// Run the io_service object's event processing loop to execute ready
-  /// handlers.
-  /**
-   * The poll() function runs handlers that are ready to run, without blocking,
-   * until the io_service has been stopped or there are no more ready handlers.
-   *
-   * @return The number of handlers that were executed.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  ASIO_DECL std::size_t poll();
-
-  /// Run the io_service object's event processing loop to execute ready
-  /// handlers.
-  /**
-   * The poll() function runs handlers that are ready to run, without blocking,
-   * until the io_service has been stopped or there are no more ready handlers.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @return The number of handlers that were executed.
-   */
-  ASIO_DECL std::size_t poll(asio::error_code& ec);
-
-  /// Run the io_service object's event processing loop to execute one ready
-  /// handler.
-  /**
-   * The poll_one() function runs at most one handler that is ready to run,
-   * without blocking.
-   *
-   * @return The number of handlers that were executed.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  ASIO_DECL std::size_t poll_one();
-
-  /// Run the io_service object's event processing loop to execute one ready
-  /// handler.
-  /**
-   * The poll_one() function runs at most one handler that is ready to run,
-   * without blocking.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @return The number of handlers that were executed.
-   */
-  ASIO_DECL std::size_t poll_one(asio::error_code& ec);
-
-  /// Stop the io_service object's event processing loop.
-  /**
-   * This function does not block, but instead simply signals the io_service to
-   * stop. All invocations of its run() or run_one() member functions should
-   * return as soon as possible. Subsequent calls to run(), run_one(), poll()
-   * or poll_one() will return immediately until reset() is called.
-   */
-  ASIO_DECL void stop();
-
-  /// Determine whether the io_service object has been stopped.
-  /**
-   * This function is used to determine whether an io_service object has been
-   * stopped, either through an explicit call to stop(), or due to running out
-   * of work. When an io_service object is stopped, calls to run(), run_one(),
-   * poll() or poll_one() will return immediately without invoking any
-   * handlers.
-   *
-   * @return @c true if the io_service object is stopped, otherwise @c false.
-   */
-  ASIO_DECL bool stopped() const;
-
-  /// Reset the io_service in preparation for a subsequent run() invocation.
-  /**
-   * This function must be called prior to any second or later set of
-   * invocations of the run(), run_one(), poll() or poll_one() functions when a
-   * previous invocation of these functions returned due to the io_service
-   * being stopped or running out of work. After a call to reset(), the
-   * io_service object's stopped() function will return @c false.
-   *
-   * This function must not be called while there are any unfinished calls to
-   * the run(), run_one(), poll() or poll_one() functions.
-   */
-  ASIO_DECL void reset();
-
-  /// Request the io_service to invoke the given handler.
-  /**
-   * This function is used to ask the io_service to execute the given handler.
-   *
-   * The io_service guarantees that the handler will only be called in a thread
-   * in which the run(), run_one(), poll() or poll_one() member functions is
-   * currently being invoked. The handler may be executed inside this function
-   * if the guarantee can be met.
-   *
-   * @param handler The handler to be called. The io_service will make
-   * a copy of the handler object as required. The function signature of the
-   * handler must be: @code void handler(); @endcode
-   *
-   * @note This function throws an exception only if:
-   *
-   * @li the handler's @c asio_handler_allocate function; or
-   *
-   * @li the handler's copy constructor
-   *
-   * throws an exception.
-   */
-  template <typename CompletionHandler>
-  ASIO_INITFN_RESULT_TYPE(CompletionHandler, void ())
-  dispatch(ASIO_MOVE_ARG(CompletionHandler) handler);
-
-  /// Request the io_service to invoke the given handler and return immediately.
-  /**
-   * This function is used to ask the io_service to execute the given handler,
-   * but without allowing the io_service to call the handler from inside this
-   * function.
-   *
-   * The io_service guarantees that the handler will only be called in a thread
-   * in which the run(), run_one(), poll() or poll_one() member functions is
-   * currently being invoked.
-   *
-   * @param handler The handler to be called. The io_service will make
-   * a copy of the handler object as required. The function signature of the
-   * handler must be: @code void handler(); @endcode
-   *
-   * @note This function throws an exception only if:
-   *
-   * @li the handler's @c asio_handler_allocate function; or
-   *
-   * @li the handler's copy constructor
-   *
-   * throws an exception.
-   */
-  template <typename CompletionHandler>
-  ASIO_INITFN_RESULT_TYPE(CompletionHandler, void ())
-  post(ASIO_MOVE_ARG(CompletionHandler) handler);
-
-  /// Create a new handler that automatically dispatches the wrapped handler
-  /// on the io_service.
-  /**
-   * This function is used to create a new handler function object that, when
-   * invoked, will automatically pass the wrapped handler to the io_service
-   * object's dispatch function.
-   *
-   * @param handler The handler to be wrapped. The io_service will make a copy
-   * of the handler object as required. The function signature of the handler
-   * must be: @code void handler(A1 a1, ... An an); @endcode
-   *
-   * @return A function object that, when invoked, passes the wrapped handler to
-   * the io_service object's dispatch function. Given a function object with the
-   * signature:
-   * @code R f(A1 a1, ... An an); @endcode
-   * If this function object is passed to the wrap function like so:
-   * @code io_service.wrap(f); @endcode
-   * then the return value is a function object with the signature
-   * @code void g(A1 a1, ... An an); @endcode
-   * that, when invoked, executes code equivalent to:
-   * @code io_service.dispatch(boost::bind(f, a1, ... an)); @endcode
-   */
-  template <typename Handler>
-#if defined(GENERATING_DOCUMENTATION)
-  unspecified
-#else
-  detail::wrapped_handler<io_service&, Handler>
-#endif
-  wrap(Handler handler);
-
-  /// Fork-related event notifications.
-  enum fork_event
-  {
-    /// Notify the io_service that the process is about to fork.
-    fork_prepare,
-
-    /// Notify the io_service that the process has forked and is the parent.
-    fork_parent,
-
-    /// Notify the io_service that the process has forked and is the child.
-    fork_child
-  };
-
-  /// Notify the io_service of a fork-related event.
-  /**
-   * This function is used to inform the io_service that the process is about
-   * to fork, or has just forked. This allows the io_service, and the services
-   * it contains, to perform any necessary housekeeping to ensure correct
-   * operation following a fork.
-   *
-   * This function must not be called while any other io_service function, or
-   * any function on an I/O object associated with the io_service, is being
-   * called in another thread. It is, however, safe to call this function from
-   * within a completion handler, provided no other thread is accessing the
-   * io_service.
-   *
-   * @param event A fork-related event.
-   *
-   * @throws asio::system_error Thrown on failure. If the notification
-   * fails the io_service object should no longer be used and should be
-   * destroyed.
-   *
-   * @par Example
-   * The following code illustrates how to incorporate the notify_fork()
-   * function:
-   * @code my_io_service.notify_fork(asio::io_service::fork_prepare);
-   * if (fork() == 0)
-   * {
-   *   // This is the child process.
-   *   my_io_service.notify_fork(asio::io_service::fork_child);
-   * }
-   * else
-   * {
-   *   // This is the parent process.
-   *   my_io_service.notify_fork(asio::io_service::fork_parent);
-   * } @endcode
-   *
-   * @note For each service object @c svc in the io_service set, performs
-   * <tt>svc->fork_service();</tt>. When processing the fork_prepare event,
-   * services are visited in reverse order of the beginning of service object
-   * lifetime. Otherwise, services are visited in order of the beginning of
-   * service object lifetime.
-   */
-  ASIO_DECL void notify_fork(asio::io_service::fork_event event);
-
-  /// Obtain the service object corresponding to the given type.
-  /**
-   * This function is used to locate a service object that corresponds to
-   * the given service type. If there is no existing implementation of the
-   * service, then the io_service will create a new instance of the service.
-   *
-   * @param ios The io_service object that owns the service.
-   *
-   * @return The service interface implementing the specified service type.
-   * Ownership of the service interface is not transferred to the caller.
-   */
-  template <typename Service>
-  friend Service& use_service(io_service& ios);
-
-  /// Add a service object to the io_service.
-  /**
-   * This function is used to add a service to the io_service.
-   *
-   * @param ios The io_service object that owns the service.
-   *
-   * @param svc The service object. On success, ownership of the service object
-   * is transferred to the io_service. When the io_service object is destroyed,
-   * it will destroy the service object by performing:
-   * @code delete static_cast<io_service::service*>(svc) @endcode
-   *
-   * @throws asio::service_already_exists Thrown if a service of the
-   * given type is already present in the io_service.
-   *
-   * @throws asio::invalid_service_owner Thrown if the service's owning
-   * io_service is not the io_service object specified by the ios parameter.
-   */
-  template <typename Service>
-  friend void add_service(io_service& ios, Service* svc);
-
-  /// Determine if an io_service contains a specified service type.
-  /**
-   * This function is used to determine whether the io_service contains a
-   * service object corresponding to the given service type.
-   *
-   * @param ios The io_service object that owns the service.
-   *
-   * @return A boolean indicating whether the io_service contains the service.
-   */
-  template <typename Service>
-  friend bool has_service(io_service& ios);
-
-private:
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  detail::winsock_init<> init_;
-#elif defined(__sun) || defined(__QNX__) || defined(__hpux) || defined(_AIX) \
-  || defined(__osf__)
-  detail::signal_init<> init_;
-#endif
-
-  // The service registry.
-  asio::detail::service_registry* service_registry_;
-
-  // The implementation.
-  impl_type& impl_;
-};
-
-/// Class to inform the io_service when it has work to do.
-/**
- * The work class is used to inform the io_service when work starts and
- * finishes. This ensures that the io_service object's run() function will not
- * exit while work is underway, and that it does exit when there is no
- * unfinished work remaining.
- *
- * The work class is copy-constructible so that it may be used as a data member
- * in a handler class. It is not assignable.
- */
-class io_service::work
-{
-public:
-  /// Constructor notifies the io_service that work is starting.
-  /**
-   * The constructor is used to inform the io_service that some work has begun.
-   * This ensures that the io_service object's run() function will not exit
-   * while the work is underway.
-   */
-  explicit work(asio::io_service& io_service);
-
-  /// Copy constructor notifies the io_service that work is starting.
-  /**
-   * The constructor is used to inform the io_service that some work has begun.
-   * This ensures that the io_service object's run() function will not exit
-   * while the work is underway.
-   */
-  work(const work& other);
-
-  /// Destructor notifies the io_service that the work is complete.
-  /**
-   * The destructor is used to inform the io_service that some work has
-   * finished. Once the count of unfinished work reaches zero, the io_service
-   * object's run() function is permitted to exit.
-   */
-  ~work();
-
-  /// Get the io_service associated with the work.
-  asio::io_service& get_io_service();
-
-private:
-  // Prevent assignment.
-  void operator=(const work& other);
-
-  // The io_service implementation.
-  detail::io_service_impl& io_service_impl_;
-};
-
-/// Class used to uniquely identify a service.
-class io_service::id
-  : private noncopyable
-{
-public:
-  /// Constructor.
-  id() {}
-};
-
-/// Base class for all io_service services.
-class io_service::service
-  : private noncopyable
-{
-public:
-  /// Get the io_service object that owns the service.
-  asio::io_service& get_io_service();
-
-protected:
-  /// Constructor.
-  /**
-   * @param owner The io_service object that owns the service.
-   */
-  ASIO_DECL service(asio::io_service& owner);
-
-  /// Destructor.
-  ASIO_DECL virtual ~service();
-
-private:
-  /// Destroy all user-defined handler objects owned by the service.
-  virtual void shutdown_service() = 0;
-
-  /// Handle notification of a fork-related event to perform any necessary
-  /// housekeeping.
-  /**
-   * This function is not a pure virtual so that services only have to
-   * implement it if necessary. The default implementation does nothing.
-   */
-  ASIO_DECL virtual void fork_service(
-      asio::io_service::fork_event event);
-
-  friend class asio::detail::service_registry;
-  struct key
-  {
-    key() : type_info_(0), id_(0) {}
-    const std::type_info* type_info_;
-    const asio::io_service::id* id_;
-  } key_;
-
-  asio::io_service& owner_;
-  service* next_;
-};
-
-/// Exception thrown when trying to add a duplicate service to an io_service.
-class service_already_exists
-  : public std::logic_error
-{
-public:
-  ASIO_DECL service_already_exists();
-};
-
-/// Exception thrown when trying to add a service object to an io_service where
-/// the service has a different owner.
-class invalid_service_owner
-  : public std::logic_error
-{
-public:
-  ASIO_DECL invalid_service_owner();
-};
-
-namespace detail {
-
-// Special derived service id type to keep classes header-file only.
-template <typename Type>
-class service_id
-  : public asio::io_service::id
-{
-};
-
-// Special service base class to keep classes header-file only.
-template <typename Type>
-class service_base
-  : public asio::io_service::service
-{
-public:
-  static asio::detail::service_id<Type> id;
-
-  // Constructor.
-  service_base(asio::io_service& io_service)
-    : asio::io_service::service(io_service)
-  {
-  }
-};
-
-template <typename Type>
-asio::detail::service_id<Type> service_base<Type>::id;
-
-} // namespace detail
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/impl/io_service.hpp"
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/impl/io_service.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_IO_SERVICE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/address.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/address.hpp
deleted file mode 100644
index 05896b8..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/address.hpp
+++ /dev/null
@@ -1,200 +0,0 @@
-//
-// ip/address.hpp
-// ~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IP_ADDRESS_HPP
-#define ASIO_IP_ADDRESS_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <string>
-#include "asio/error_code.hpp"
-#include "asio/ip/address_v4.hpp"
-#include "asio/ip/address_v6.hpp"
-
-#if !defined(ASIO_NO_IOSTREAM)
-# include <iosfwd>
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-/// Implements version-independent IP addresses.
-/**
- * The asio::ip::address class provides the ability to use either IP
- * version 4 or version 6 addresses.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- */
-class address
-{
-public:
-  /// Default constructor.
-  ASIO_DECL address();
-
-  /// Construct an address from an IPv4 address.
-  ASIO_DECL address(const asio::ip::address_v4& ipv4_address);
-
-  /// Construct an address from an IPv6 address.
-  ASIO_DECL address(const asio::ip::address_v6& ipv6_address);
-
-  /// Copy constructor.
-  ASIO_DECL address(const address& other);
-
-#if defined(ASIO_HAS_MOVE)
-  /// Move constructor.
-  ASIO_DECL address(address&& other);
-#endif // defined(ASIO_HAS_MOVE)
-
-  /// Assign from another address.
-  ASIO_DECL address& operator=(const address& other);
-
-#if defined(ASIO_HAS_MOVE)
-  /// Move-assign from another address.
-  ASIO_DECL address& operator=(address&& other);
-#endif // defined(ASIO_HAS_MOVE)
-
-  /// Assign from an IPv4 address.
-  ASIO_DECL address& operator=(
-      const asio::ip::address_v4& ipv4_address);
-
-  /// Assign from an IPv6 address.
-  ASIO_DECL address& operator=(
-      const asio::ip::address_v6& ipv6_address);
-
-  /// Get whether the address is an IP version 4 address.
-  bool is_v4() const
-  {
-    return type_ == ipv4;
-  }
-
-  /// Get whether the address is an IP version 6 address.
-  bool is_v6() const
-  {
-    return type_ == ipv6;
-  }
-
-  /// Get the address as an IP version 4 address.
-  ASIO_DECL asio::ip::address_v4 to_v4() const;
-
-  /// Get the address as an IP version 6 address.
-  ASIO_DECL asio::ip::address_v6 to_v6() const;
-
-  /// Get the address as a string in dotted decimal format.
-  ASIO_DECL std::string to_string() const;
-
-  /// Get the address as a string in dotted decimal format.
-  ASIO_DECL std::string to_string(asio::error_code& ec) const;
-
-  /// Create an address from an IPv4 address string in dotted decimal form,
-  /// or from an IPv6 address in hexadecimal notation.
-  ASIO_DECL static address from_string(const char* str);
-
-  /// Create an address from an IPv4 address string in dotted decimal form,
-  /// or from an IPv6 address in hexadecimal notation.
-  ASIO_DECL static address from_string(
-      const char* str, asio::error_code& ec);
-
-  /// Create an address from an IPv4 address string in dotted decimal form,
-  /// or from an IPv6 address in hexadecimal notation.
-  ASIO_DECL static address from_string(const std::string& str);
-
-  /// Create an address from an IPv4 address string in dotted decimal form,
-  /// or from an IPv6 address in hexadecimal notation.
-  ASIO_DECL static address from_string(
-      const std::string& str, asio::error_code& ec);
-
-  /// Determine whether the address is a loopback address.
-  ASIO_DECL bool is_loopback() const;
-
-  /// Determine whether the address is unspecified.
-  ASIO_DECL bool is_unspecified() const;
-
-  /// Determine whether the address is a multicast address.
-  ASIO_DECL bool is_multicast() const;
-
-  /// Compare two addresses for equality.
-  ASIO_DECL friend bool operator==(const address& a1, const address& a2);
-
-  /// Compare two addresses for inequality.
-  friend bool operator!=(const address& a1, const address& a2)
-  {
-    return !(a1 == a2);
-  }
-
-  /// Compare addresses for ordering.
-  ASIO_DECL friend bool operator<(const address& a1, const address& a2);
-
-  /// Compare addresses for ordering.
-  friend bool operator>(const address& a1, const address& a2)
-  {
-    return a2 < a1;
-  }
-
-  /// Compare addresses for ordering.
-  friend bool operator<=(const address& a1, const address& a2)
-  {
-    return !(a2 < a1);
-  }
-
-  /// Compare addresses for ordering.
-  friend bool operator>=(const address& a1, const address& a2)
-  {
-    return !(a1 < a2);
-  }
-
-private:
-  // The type of the address.
-  enum { ipv4, ipv6 } type_;
-
-  // The underlying IPv4 address.
-  asio::ip::address_v4 ipv4_address_;
-
-  // The underlying IPv6 address.
-  asio::ip::address_v6 ipv6_address_;
-};
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-/// Output an address as a string.
-/**
- * Used to output a human-readable string for a specified address.
- *
- * @param os The output stream to which the string will be written.
- *
- * @param addr The address to be written.
- *
- * @return The output stream.
- *
- * @relates asio::ip::address
- */
-template <typename Elem, typename Traits>
-std::basic_ostream<Elem, Traits>& operator<<(
-    std::basic_ostream<Elem, Traits>& os, const address& addr);
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/ip/impl/address.hpp"
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/ip/impl/address.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_IP_ADDRESS_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/address_v4.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/address_v4.hpp
deleted file mode 100644
index 451afcc..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/address_v4.hpp
+++ /dev/null
@@ -1,241 +0,0 @@
-//
-// ip/address_v4.hpp
-// ~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IP_ADDRESS_V4_HPP
-#define ASIO_IP_ADDRESS_V4_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <string>
-#include "asio/detail/array.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/winsock_init.hpp"
-#include "asio/error_code.hpp"
-
-#if !defined(ASIO_NO_IOSTREAM)
-# include <iosfwd>
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-/// Implements IP version 4 style addresses.
-/**
- * The asio::ip::address_v4 class provides the ability to use and
- * manipulate IP version 4 addresses.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- */
-class address_v4
-{
-public:
-  /// The type used to represent an address as an array of bytes.
-  /**
-   * @note This type is defined in terms of the C++0x template @c std::array
-   * when it is available. Otherwise, it uses @c boost:array.
-   */
-#if defined(GENERATING_DOCUMENTATION)
-  typedef array<unsigned char, 4> bytes_type;
-#else
-  typedef asio::detail::array<unsigned char, 4> bytes_type;
-#endif
-
-  /// Default constructor.
-  address_v4()
-  {
-    addr_.s_addr = 0;
-  }
-
-  /// Construct an address from raw bytes.
-  ASIO_DECL explicit address_v4(const bytes_type& bytes);
-
-  /// Construct an address from a unsigned long in host byte order.
-  ASIO_DECL explicit address_v4(unsigned long addr);
-
-  /// Copy constructor.
-  address_v4(const address_v4& other)
-    : addr_(other.addr_)
-  {
-  }
-
-#if defined(ASIO_HAS_MOVE)
-  /// Move constructor.
-  address_v4(address_v4&& other)
-    : addr_(other.addr_)
-  {
-  }
-#endif // defined(ASIO_HAS_MOVE)
-
-  /// Assign from another address.
-  address_v4& operator=(const address_v4& other)
-  {
-    addr_ = other.addr_;
-    return *this;
-  }
-
-#if defined(ASIO_HAS_MOVE)
-  /// Move-assign from another address.
-  address_v4& operator=(address_v4&& other)
-  {
-    addr_ = other.addr_;
-    return *this;
-  }
-#endif // defined(ASIO_HAS_MOVE)
-
-  /// Get the address in bytes, in network byte order.
-  ASIO_DECL bytes_type to_bytes() const;
-
-  /// Get the address as an unsigned long in host byte order
-  ASIO_DECL unsigned long to_ulong() const;
-
-  /// Get the address as a string in dotted decimal format.
-  ASIO_DECL std::string to_string() const;
-
-  /// Get the address as a string in dotted decimal format.
-  ASIO_DECL std::string to_string(asio::error_code& ec) const;
-
-  /// Create an address from an IP address string in dotted decimal form.
-  ASIO_DECL static address_v4 from_string(const char* str);
-
-  /// Create an address from an IP address string in dotted decimal form.
-  ASIO_DECL static address_v4 from_string(
-      const char* str, asio::error_code& ec);
-
-  /// Create an address from an IP address string in dotted decimal form.
-  ASIO_DECL static address_v4 from_string(const std::string& str);
-
-  /// Create an address from an IP address string in dotted decimal form.
-  ASIO_DECL static address_v4 from_string(
-      const std::string& str, asio::error_code& ec);
-
-  /// Determine whether the address is a loopback address.
-  ASIO_DECL bool is_loopback() const;
-
-  /// Determine whether the address is unspecified.
-  ASIO_DECL bool is_unspecified() const;
-
-  /// Determine whether the address is a class A address.
-  ASIO_DECL bool is_class_a() const;
-
-  /// Determine whether the address is a class B address.
-  ASIO_DECL bool is_class_b() const;
-
-  /// Determine whether the address is a class C address.
-  ASIO_DECL bool is_class_c() const;
-
-  /// Determine whether the address is a multicast address.
-  ASIO_DECL bool is_multicast() const;
-
-  /// Compare two addresses for equality.
-  friend bool operator==(const address_v4& a1, const address_v4& a2)
-  {
-    return a1.addr_.s_addr == a2.addr_.s_addr;
-  }
-
-  /// Compare two addresses for inequality.
-  friend bool operator!=(const address_v4& a1, const address_v4& a2)
-  {
-    return a1.addr_.s_addr != a2.addr_.s_addr;
-  }
-
-  /// Compare addresses for ordering.
-  friend bool operator<(const address_v4& a1, const address_v4& a2)
-  {
-    return a1.to_ulong() < a2.to_ulong();
-  }
-
-  /// Compare addresses for ordering.
-  friend bool operator>(const address_v4& a1, const address_v4& a2)
-  {
-    return a1.to_ulong() > a2.to_ulong();
-  }
-
-  /// Compare addresses for ordering.
-  friend bool operator<=(const address_v4& a1, const address_v4& a2)
-  {
-    return a1.to_ulong() <= a2.to_ulong();
-  }
-
-  /// Compare addresses for ordering.
-  friend bool operator>=(const address_v4& a1, const address_v4& a2)
-  {
-    return a1.to_ulong() >= a2.to_ulong();
-  }
-
-  /// Obtain an address object that represents any address.
-  static address_v4 any()
-  {
-    return address_v4();
-  }
-
-  /// Obtain an address object that represents the loopback address.
-  static address_v4 loopback()
-  {
-    return address_v4(0x7F000001);
-  }
-
-  /// Obtain an address object that represents the broadcast address.
-  static address_v4 broadcast()
-  {
-    return address_v4(0xFFFFFFFF);
-  }
-
-  /// Obtain an address object that represents the broadcast address that
-  /// corresponds to the specified address and netmask.
-  ASIO_DECL static address_v4 broadcast(
-      const address_v4& addr, const address_v4& mask);
-
-  /// Obtain the netmask that corresponds to the address, based on its address
-  /// class.
-  ASIO_DECL static address_v4 netmask(const address_v4& addr);
-
-private:
-  // The underlying IPv4 address.
-  asio::detail::in4_addr_type addr_;
-};
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-/// Output an address as a string.
-/**
- * Used to output a human-readable string for a specified address.
- *
- * @param os The output stream to which the string will be written.
- *
- * @param addr The address to be written.
- *
- * @return The output stream.
- *
- * @relates asio::ip::address_v4
- */
-template <typename Elem, typename Traits>
-std::basic_ostream<Elem, Traits>& operator<<(
-    std::basic_ostream<Elem, Traits>& os, const address_v4& addr);
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/ip/impl/address_v4.hpp"
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/ip/impl/address_v4.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_IP_ADDRESS_V4_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/address_v6.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/address_v6.hpp
deleted file mode 100644
index 9823d16..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/address_v6.hpp
+++ /dev/null
@@ -1,246 +0,0 @@
-//
-// ip/address_v6.hpp
-// ~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IP_ADDRESS_V6_HPP
-#define ASIO_IP_ADDRESS_V6_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <string>
-#include "asio/detail/array.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/winsock_init.hpp"
-#include "asio/error_code.hpp"
-#include "asio/ip/address_v4.hpp"
-
-#if !defined(ASIO_NO_IOSTREAM)
-# include <iosfwd>
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-/// Implements IP version 6 style addresses.
-/**
- * The asio::ip::address_v6 class provides the ability to use and
- * manipulate IP version 6 addresses.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- */
-class address_v6
-{
-public:
-  /// The type used to represent an address as an array of bytes.
-  /**
-   * @note This type is defined in terms of the C++0x template @c std::array
-   * when it is available. Otherwise, it uses @c boost:array.
-   */
-#if defined(GENERATING_DOCUMENTATION)
-  typedef array<unsigned char, 16> bytes_type;
-#else
-  typedef asio::detail::array<unsigned char, 16> bytes_type;
-#endif
-
-  /// Default constructor.
-  ASIO_DECL address_v6();
-
-  /// Construct an address from raw bytes and scope ID.
-  ASIO_DECL explicit address_v6(const bytes_type& bytes,
-      unsigned long scope_id = 0);
-
-  /// Copy constructor.
-  ASIO_DECL address_v6(const address_v6& other);
-
-#if defined(ASIO_HAS_MOVE)
-  /// Move constructor.
-  ASIO_DECL address_v6(address_v6&& other);
-#endif // defined(ASIO_HAS_MOVE)
-
-  /// Assign from another address.
-  ASIO_DECL address_v6& operator=(const address_v6& other);
-
-#if defined(ASIO_HAS_MOVE)
-  /// Move-assign from another address.
-  ASIO_DECL address_v6& operator=(address_v6&& other);
-#endif // defined(ASIO_HAS_MOVE)
-
-  /// The scope ID of the address.
-  /**
-   * Returns the scope ID associated with the IPv6 address.
-   */
-  unsigned long scope_id() const
-  {
-    return scope_id_;
-  }
-
-  /// The scope ID of the address.
-  /**
-   * Modifies the scope ID associated with the IPv6 address.
-   */
-  void scope_id(unsigned long id)
-  {
-    scope_id_ = id;
-  }
-
-  /// Get the address in bytes, in network byte order.
-  ASIO_DECL bytes_type to_bytes() const;
-
-  /// Get the address as a string.
-  ASIO_DECL std::string to_string() const;
-
-  /// Get the address as a string.
-  ASIO_DECL std::string to_string(asio::error_code& ec) const;
-
-  /// Create an address from an IP address string.
-  ASIO_DECL static address_v6 from_string(const char* str);
-
-  /// Create an address from an IP address string.
-  ASIO_DECL static address_v6 from_string(
-      const char* str, asio::error_code& ec);
-
-  /// Create an address from an IP address string.
-  ASIO_DECL static address_v6 from_string(const std::string& str);
-
-  /// Create an address from an IP address string.
-  ASIO_DECL static address_v6 from_string(
-      const std::string& str, asio::error_code& ec);
-
-  /// Converts an IPv4-mapped or IPv4-compatible address to an IPv4 address.
-  ASIO_DECL address_v4 to_v4() const;
-
-  /// Determine whether the address is a loopback address.
-  ASIO_DECL bool is_loopback() const;
-
-  /// Determine whether the address is unspecified.
-  ASIO_DECL bool is_unspecified() const;
-
-  /// Determine whether the address is link local.
-  ASIO_DECL bool is_link_local() const;
-
-  /// Determine whether the address is site local.
-  ASIO_DECL bool is_site_local() const;
-
-  /// Determine whether the address is a mapped IPv4 address.
-  ASIO_DECL bool is_v4_mapped() const;
-
-  /// Determine whether the address is an IPv4-compatible address.
-  ASIO_DECL bool is_v4_compatible() const;
-
-  /// Determine whether the address is a multicast address.
-  ASIO_DECL bool is_multicast() const;
-
-  /// Determine whether the address is a global multicast address.
-  ASIO_DECL bool is_multicast_global() const;
-
-  /// Determine whether the address is a link-local multicast address.
-  ASIO_DECL bool is_multicast_link_local() const;
-
-  /// Determine whether the address is a node-local multicast address.
-  ASIO_DECL bool is_multicast_node_local() const;
-
-  /// Determine whether the address is a org-local multicast address.
-  ASIO_DECL bool is_multicast_org_local() const;
-
-  /// Determine whether the address is a site-local multicast address.
-  ASIO_DECL bool is_multicast_site_local() const;
-
-  /// Compare two addresses for equality.
-  ASIO_DECL friend bool operator==(
-      const address_v6& a1, const address_v6& a2);
-
-  /// Compare two addresses for inequality.
-  friend bool operator!=(const address_v6& a1, const address_v6& a2)
-  {
-    return !(a1 == a2);
-  }
-
-  /// Compare addresses for ordering.
-  ASIO_DECL friend bool operator<(
-      const address_v6& a1, const address_v6& a2);
-
-  /// Compare addresses for ordering.
-  friend bool operator>(const address_v6& a1, const address_v6& a2)
-  {
-    return a2 < a1;
-  }
-
-  /// Compare addresses for ordering.
-  friend bool operator<=(const address_v6& a1, const address_v6& a2)
-  {
-    return !(a2 < a1);
-  }
-
-  /// Compare addresses for ordering.
-  friend bool operator>=(const address_v6& a1, const address_v6& a2)
-  {
-    return !(a1 < a2);
-  }
-
-  /// Obtain an address object that represents any address.
-  static address_v6 any()
-  {
-    return address_v6();
-  }
-
-  /// Obtain an address object that represents the loopback address.
-  ASIO_DECL static address_v6 loopback();
-
-  /// Create an IPv4-mapped IPv6 address.
-  ASIO_DECL static address_v6 v4_mapped(const address_v4& addr);
-
-  /// Create an IPv4-compatible IPv6 address.
-  ASIO_DECL static address_v6 v4_compatible(const address_v4& addr);
-
-private:
-  // The underlying IPv6 address.
-  asio::detail::in6_addr_type addr_;
-
-  // The scope ID associated with the address.
-  unsigned long scope_id_;
-};
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-/// Output an address as a string.
-/**
- * Used to output a human-readable string for a specified address.
- *
- * @param os The output stream to which the string will be written.
- *
- * @param addr The address to be written.
- *
- * @return The output stream.
- *
- * @relates asio::ip::address_v6
- */
-template <typename Elem, typename Traits>
-std::basic_ostream<Elem, Traits>& operator<<(
-    std::basic_ostream<Elem, Traits>& os, const address_v6& addr);
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/ip/impl/address_v6.hpp"
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/ip/impl/address_v6.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_IP_ADDRESS_V6_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/basic_endpoint.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/basic_endpoint.hpp
deleted file mode 100644
index a1bae97..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/basic_endpoint.hpp
+++ /dev/null
@@ -1,263 +0,0 @@
-//
-// ip/basic_endpoint.hpp
-// ~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IP_BASIC_ENDPOINT_HPP
-#define ASIO_IP_BASIC_ENDPOINT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/ip/address.hpp"
-#include "asio/ip/detail/endpoint.hpp"
-
-#if !defined(ASIO_NO_IOSTREAM)
-# include <iosfwd>
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-/// Describes an endpoint for a version-independent IP socket.
-/**
- * The asio::ip::basic_endpoint class template describes an endpoint that
- * may be associated with a particular socket.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- *
- * @par Concepts:
- * Endpoint.
- */
-template <typename InternetProtocol>
-class basic_endpoint
-{
-public:
-  /// The protocol type associated with the endpoint.
-  typedef InternetProtocol protocol_type;
-
-  /// The type of the endpoint structure. This type is dependent on the
-  /// underlying implementation of the socket layer.
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined data_type;
-#else
-  typedef asio::detail::socket_addr_type data_type;
-#endif
-
-  /// Default constructor.
-  basic_endpoint()
-    : impl_()
-  {
-  }
-
-  /// Construct an endpoint using a port number, specified in the host's byte
-  /// order. The IP address will be the any address (i.e. INADDR_ANY or
-  /// in6addr_any). This constructor would typically be used for accepting new
-  /// connections.
-  /**
-   * @par Examples
-   * To initialise an IPv4 TCP endpoint for port 1234, use:
-   * @code
-   * asio::ip::tcp::endpoint ep(asio::ip::tcp::v4(), 1234);
-   * @endcode
-   *
-   * To specify an IPv6 UDP endpoint for port 9876, use:
-   * @code
-   * asio::ip::udp::endpoint ep(asio::ip::udp::v6(), 9876);
-   * @endcode
-   */
-  basic_endpoint(const InternetProtocol& internet_protocol,
-      unsigned short port_num)
-    : impl_(internet_protocol.family(), port_num)
-  {
-  }
-
-  /// Construct an endpoint using a port number and an IP address. This
-  /// constructor may be used for accepting connections on a specific interface
-  /// or for making a connection to a remote endpoint.
-  basic_endpoint(const asio::ip::address& addr, unsigned short port_num)
-    : impl_(addr, port_num)
-  {
-  }
-
-  /// Copy constructor.
-  basic_endpoint(const basic_endpoint& other)
-    : impl_(other.impl_)
-  {
-  }
-
-#if defined(ASIO_HAS_MOVE)
-  /// Move constructor.
-  basic_endpoint(basic_endpoint&& other)
-    : impl_(other.impl_)
-  {
-  }
-#endif // defined(ASIO_HAS_MOVE)
-
-  /// Assign from another endpoint.
-  basic_endpoint& operator=(const basic_endpoint& other)
-  {
-    impl_ = other.impl_;
-    return *this;
-  }
-
-#if defined(ASIO_HAS_MOVE)
-  /// Move-assign from another endpoint.
-  basic_endpoint& operator=(basic_endpoint&& other)
-  {
-    impl_ = other.impl_;
-    return *this;
-  }
-#endif // defined(ASIO_HAS_MOVE)
-
-  /// The protocol associated with the endpoint.
-  protocol_type protocol() const
-  {
-    if (impl_.is_v4())
-      return InternetProtocol::v4();
-    return InternetProtocol::v6();
-  }
-
-  /// Get the underlying endpoint in the native type.
-  data_type* data()
-  {
-    return impl_.data();
-  }
-
-  /// Get the underlying endpoint in the native type.
-  const data_type* data() const
-  {
-    return impl_.data();
-  }
-
-  /// Get the underlying size of the endpoint in the native type.
-  std::size_t size() const
-  {
-    return impl_.size();
-  }
-
-  /// Set the underlying size of the endpoint in the native type.
-  void resize(std::size_t new_size)
-  {
-    impl_.resize(new_size);
-  }
-
-  /// Get the capacity of the endpoint in the native type.
-  std::size_t capacity() const
-  {
-    return impl_.capacity();
-  }
-
-  /// Get the port associated with the endpoint. The port number is always in
-  /// the host's byte order.
-  unsigned short port() const
-  {
-    return impl_.port();
-  }
-
-  /// Set the port associated with the endpoint. The port number is always in
-  /// the host's byte order.
-  void port(unsigned short port_num)
-  {
-    impl_.port(port_num);
-  }
-
-  /// Get the IP address associated with the endpoint.
-  asio::ip::address address() const
-  {
-    return impl_.address();
-  }
-
-  /// Set the IP address associated with the endpoint.
-  void address(const asio::ip::address& addr)
-  {
-    impl_.address(addr);
-  }
-
-  /// Compare two endpoints for equality.
-  friend bool operator==(const basic_endpoint<InternetProtocol>& e1,
-      const basic_endpoint<InternetProtocol>& e2)
-  {
-    return e1.impl_ == e2.impl_;
-  }
-
-  /// Compare two endpoints for inequality.
-  friend bool operator!=(const basic_endpoint<InternetProtocol>& e1,
-      const basic_endpoint<InternetProtocol>& e2)
-  {
-    return !(e1 == e2);
-  }
-
-  /// Compare endpoints for ordering.
-  friend bool operator<(const basic_endpoint<InternetProtocol>& e1,
-      const basic_endpoint<InternetProtocol>& e2)
-  {
-    return e1.impl_ < e2.impl_;
-  }
-
-  /// Compare endpoints for ordering.
-  friend bool operator>(const basic_endpoint<InternetProtocol>& e1,
-      const basic_endpoint<InternetProtocol>& e2)
-  {
-    return e2.impl_ < e1.impl_;
-  }
-
-  /// Compare endpoints for ordering.
-  friend bool operator<=(const basic_endpoint<InternetProtocol>& e1,
-      const basic_endpoint<InternetProtocol>& e2)
-  {
-    return !(e2 < e1);
-  }
-
-  /// Compare endpoints for ordering.
-  friend bool operator>=(const basic_endpoint<InternetProtocol>& e1,
-      const basic_endpoint<InternetProtocol>& e2)
-  {
-    return !(e1 < e2);
-  }
-
-private:
-  // The underlying IP endpoint.
-  asio::ip::detail::endpoint impl_;
-};
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-/// Output an endpoint as a string.
-/**
- * Used to output a human-readable string for a specified endpoint.
- *
- * @param os The output stream to which the string will be written.
- *
- * @param endpoint The endpoint to be written.
- *
- * @return The output stream.
- *
- * @relates asio::ip::basic_endpoint
- */
-template <typename Elem, typename Traits, typename InternetProtocol>
-std::basic_ostream<Elem, Traits>& operator<<(
-    std::basic_ostream<Elem, Traits>& os,
-    const basic_endpoint<InternetProtocol>& endpoint);
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/ip/impl/basic_endpoint.hpp"
-
-#endif // ASIO_IP_BASIC_ENDPOINT_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/basic_resolver.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/basic_resolver.hpp
deleted file mode 100644
index 7e2f428..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/basic_resolver.hpp
+++ /dev/null
@@ -1,268 +0,0 @@
-//
-// ip/basic_resolver.hpp
-// ~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IP_BASIC_RESOLVER_HPP
-#define ASIO_IP_BASIC_RESOLVER_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/basic_io_object.hpp"
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-#include "asio/ip/basic_resolver_iterator.hpp"
-#include "asio/ip/basic_resolver_query.hpp"
-#include "asio/ip/resolver_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-/// Provides endpoint resolution functionality.
-/**
- * The basic_resolver class template provides the ability to resolve a query
- * to a list of endpoints.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- */
-template <typename InternetProtocol,
-    typename ResolverService = resolver_service<InternetProtocol> >
-class basic_resolver
-  : public basic_io_object<ResolverService>
-{
-public:
-  /// The protocol type.
-  typedef InternetProtocol protocol_type;
-
-  /// The endpoint type.
-  typedef typename InternetProtocol::endpoint endpoint_type;
-
-  /// The query type.
-  typedef basic_resolver_query<InternetProtocol> query;
-
-  /// The iterator type.
-  typedef basic_resolver_iterator<InternetProtocol> iterator;
-
-  /// Constructor.
-  /**
-   * This constructor creates a basic_resolver.
-   *
-   * @param io_service The io_service object that the resolver will use to
-   * dispatch handlers for any asynchronous operations performed on the timer.
-   */
-  explicit basic_resolver(asio::io_service& io_service)
-    : basic_io_object<ResolverService>(io_service)
-  {
-  }
-
-  /// Cancel any asynchronous operations that are waiting on the resolver.
-  /**
-   * This function forces the completion of any pending asynchronous
-   * operations on the host resolver. The handler for each cancelled operation
-   * will be invoked with the asio::error::operation_aborted error code.
-   */
-  void cancel()
-  {
-    return this->service.cancel(this->implementation);
-  }
-
-  /// Perform forward resolution of a query to a list of entries.
-  /**
-   * This function is used to resolve a query into a list of endpoint entries.
-   *
-   * @param q A query object that determines what endpoints will be returned.
-   *
-   * @returns A forward-only iterator that can be used to traverse the list
-   * of endpoint entries.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note A default constructed iterator represents the end of the list.
-   *
-   * A successful call to this function is guaranteed to return at least one
-   * entry.
-   */
-  iterator resolve(const query& q)
-  {
-    asio::error_code ec;
-    iterator i = this->service.resolve(this->implementation, q, ec);
-    asio::detail::throw_error(ec, "resolve");
-    return i;
-  }
-
-  /// Perform forward resolution of a query to a list of entries.
-  /**
-   * This function is used to resolve a query into a list of endpoint entries.
-   *
-   * @param q A query object that determines what endpoints will be returned.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns A forward-only iterator that can be used to traverse the list
-   * of endpoint entries. Returns a default constructed iterator if an error
-   * occurs.
-   *
-   * @note A default constructed iterator represents the end of the list.
-   *
-   * A successful call to this function is guaranteed to return at least one
-   * entry.
-   */
-  iterator resolve(const query& q, asio::error_code& ec)
-  {
-    return this->service.resolve(this->implementation, q, ec);
-  }
-
-  /// Asynchronously perform forward resolution of a query to a list of entries.
-  /**
-   * This function is used to asynchronously resolve a query into a list of
-   * endpoint entries.
-   *
-   * @param q A query object that determines what endpoints will be returned.
-   *
-   * @param handler The handler to be called when the resolve operation
-   * completes. Copies will be made of the handler as required. The function
-   * signature of the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error, // Result of operation.
-   *   resolver::iterator iterator             // Forward-only iterator that can
-   *                                           // be used to traverse the list
-   *                                           // of endpoint entries.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   *
-   * @note A default constructed iterator represents the end of the list.
-   *
-   * A successful resolve operation is guaranteed to pass at least one entry to
-   * the handler.
-   */
-  template <typename ResolveHandler>
-  ASIO_INITFN_RESULT_TYPE(ResolveHandler,
-      void (asio::error_code, iterator))
-  async_resolve(const query& q,
-      ASIO_MOVE_ARG(ResolveHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a ResolveHandler.
-    ASIO_RESOLVE_HANDLER_CHECK(
-        ResolveHandler, handler, iterator) type_check;
-
-    return this->service.async_resolve(this->implementation, q,
-        ASIO_MOVE_CAST(ResolveHandler)(handler));
-  }
-
-  /// Perform reverse resolution of an endpoint to a list of entries.
-  /**
-   * This function is used to resolve an endpoint into a list of endpoint
-   * entries.
-   *
-   * @param e An endpoint object that determines what endpoints will be
-   * returned.
-   *
-   * @returns A forward-only iterator that can be used to traverse the list
-   * of endpoint entries.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note A default constructed iterator represents the end of the list.
-   *
-   * A successful call to this function is guaranteed to return at least one
-   * entry.
-   */
-  iterator resolve(const endpoint_type& e)
-  {
-    asio::error_code ec;
-    iterator i = this->service.resolve(this->implementation, e, ec);
-    asio::detail::throw_error(ec, "resolve");
-    return i;
-  }
-
-  /// Perform reverse resolution of an endpoint to a list of entries.
-  /**
-   * This function is used to resolve an endpoint into a list of endpoint
-   * entries.
-   *
-   * @param e An endpoint object that determines what endpoints will be
-   * returned.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns A forward-only iterator that can be used to traverse the list
-   * of endpoint entries. Returns a default constructed iterator if an error
-   * occurs.
-   *
-   * @note A default constructed iterator represents the end of the list.
-   *
-   * A successful call to this function is guaranteed to return at least one
-   * entry.
-   */
-  iterator resolve(const endpoint_type& e, asio::error_code& ec)
-  {
-    return this->service.resolve(this->implementation, e, ec);
-  }
-
-  /// Asynchronously perform reverse resolution of an endpoint to a list of
-  /// entries.
-  /**
-   * This function is used to asynchronously resolve an endpoint into a list of
-   * endpoint entries.
-   *
-   * @param e An endpoint object that determines what endpoints will be
-   * returned.
-   *
-   * @param handler The handler to be called when the resolve operation
-   * completes. Copies will be made of the handler as required. The function
-   * signature of the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error, // Result of operation.
-   *   resolver::iterator iterator             // Forward-only iterator that can
-   *                                           // be used to traverse the list
-   *                                           // of endpoint entries.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   *
-   * @note A default constructed iterator represents the end of the list.
-   *
-   * A successful resolve operation is guaranteed to pass at least one entry to
-   * the handler.
-   */
-  template <typename ResolveHandler>
-  ASIO_INITFN_RESULT_TYPE(ResolveHandler,
-      void (asio::error_code, iterator))
-  async_resolve(const endpoint_type& e,
-      ASIO_MOVE_ARG(ResolveHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a ResolveHandler.
-    ASIO_RESOLVE_HANDLER_CHECK(
-        ResolveHandler, handler, iterator) type_check;
-
-    return this->service.async_resolve(this->implementation, e,
-        ASIO_MOVE_CAST(ResolveHandler)(handler));
-  }
-};
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IP_BASIC_RESOLVER_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/basic_resolver_entry.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/basic_resolver_entry.hpp
deleted file mode 100644
index 8ad45a8..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/basic_resolver_entry.hpp
+++ /dev/null
@@ -1,94 +0,0 @@
-//
-// ip/basic_resolver_entry.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IP_BASIC_RESOLVER_ENTRY_HPP
-#define ASIO_IP_BASIC_RESOLVER_ENTRY_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <string>
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-/// An entry produced by a resolver.
-/**
- * The asio::ip::basic_resolver_entry class template describes an entry
- * as returned by a resolver.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- */
-template <typename InternetProtocol>
-class basic_resolver_entry
-{
-public:
-  /// The protocol type associated with the endpoint entry.
-  typedef InternetProtocol protocol_type;
-
-  /// The endpoint type associated with the endpoint entry.
-  typedef typename InternetProtocol::endpoint endpoint_type;
-
-  /// Default constructor.
-  basic_resolver_entry()
-  {
-  }
-
-  /// Construct with specified endpoint, host name and service name.
-  basic_resolver_entry(const endpoint_type& ep,
-      const std::string& host, const std::string& service)
-    : endpoint_(ep),
-      host_name_(host),
-      service_name_(service)
-  {
-  }
-
-  /// Get the endpoint associated with the entry.
-  endpoint_type endpoint() const
-  {
-    return endpoint_;
-  }
-
-  /// Convert to the endpoint associated with the entry.
-  operator endpoint_type() const
-  {
-    return endpoint_;
-  }
-
-  /// Get the host name associated with the entry.
-  std::string host_name() const
-  {
-    return host_name_;
-  }
-
-  /// Get the service name associated with the entry.
-  std::string service_name() const
-  {
-    return service_name_;
-  }
-
-private:
-  endpoint_type endpoint_;
-  std::string host_name_;
-  std::string service_name_;
-};
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IP_BASIC_RESOLVER_ENTRY_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/basic_resolver_iterator.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/basic_resolver_iterator.hpp
deleted file mode 100644
index 09b1368..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/basic_resolver_iterator.hpp
+++ /dev/null
@@ -1,260 +0,0 @@
-//
-// ip/basic_resolver_iterator.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IP_BASIC_RESOLVER_ITERATOR_HPP
-#define ASIO_IP_BASIC_RESOLVER_ITERATOR_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cstddef>
-#include <cstring>
-#include <iterator>
-#include <string>
-#include <vector>
-#include "asio/detail/shared_ptr.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/ip/basic_resolver_entry.hpp"
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-# include "asio/detail/winrt_utils.hpp"
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-/// An iterator over the entries produced by a resolver.
-/**
- * The asio::ip::basic_resolver_iterator class template is used to define
- * iterators over the results returned by a resolver.
- *
- * The iterator's value_type, obtained when the iterator is dereferenced, is:
- * @code const basic_resolver_entry<InternetProtocol> @endcode
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- */
-template <typename InternetProtocol>
-class basic_resolver_iterator
-{
-public:
-  /// The type used for the distance between two iterators.
-  typedef std::ptrdiff_t difference_type;
-
-  /// The type of the value pointed to by the iterator.
-  typedef basic_resolver_entry<InternetProtocol> value_type;
-
-  /// The type of the result of applying operator->() to the iterator.
-  typedef const basic_resolver_entry<InternetProtocol>* pointer;
-
-  /// The type of the result of applying operator*() to the iterator.
-  typedef const basic_resolver_entry<InternetProtocol>& reference;
-
-  /// The iterator category.
-  typedef std::forward_iterator_tag iterator_category;
-
-  /// Default constructor creates an end iterator.
-  basic_resolver_iterator()
-    : index_(0)
-  {
-  }
-
-  /// Create an iterator from an addrinfo list returned by getaddrinfo.
-  static basic_resolver_iterator create(
-      asio::detail::addrinfo_type* address_info,
-      const std::string& host_name, const std::string& service_name)
-  {
-    basic_resolver_iterator iter;
-    if (!address_info)
-      return iter;
-
-    std::string actual_host_name = host_name;
-    if (address_info->ai_canonname)
-      actual_host_name = address_info->ai_canonname;
-
-    iter.values_.reset(new values_type);
-
-    while (address_info)
-    {
-      if (address_info->ai_family == ASIO_OS_DEF(AF_INET)
-          || address_info->ai_family == ASIO_OS_DEF(AF_INET6))
-      {
-        using namespace std; // For memcpy.
-        typename InternetProtocol::endpoint endpoint;
-        endpoint.resize(static_cast<std::size_t>(address_info->ai_addrlen));
-        memcpy(endpoint.data(), address_info->ai_addr,
-            address_info->ai_addrlen);
-        iter.values_->push_back(
-            basic_resolver_entry<InternetProtocol>(endpoint,
-              actual_host_name, service_name));
-      }
-      address_info = address_info->ai_next;
-    }
-
-    return iter;
-  }
-
-  /// Create an iterator from an endpoint, host name and service name.
-  static basic_resolver_iterator create(
-      const typename InternetProtocol::endpoint& endpoint,
-      const std::string& host_name, const std::string& service_name)
-  {
-    basic_resolver_iterator iter;
-    iter.values_.reset(new values_type);
-    iter.values_->push_back(
-        basic_resolver_entry<InternetProtocol>(
-          endpoint, host_name, service_name));
-    return iter;
-  }
-
-  /// Create an iterator from a sequence of endpoints, host and service name.
-  template <typename EndpointIterator>
-  static basic_resolver_iterator create(
-      EndpointIterator begin, EndpointIterator end,
-      const std::string& host_name, const std::string& service_name)
-  {
-    basic_resolver_iterator iter;
-    if (begin != end)
-    {
-      iter.values_.reset(new values_type);
-      for (EndpointIterator ep_iter = begin; ep_iter != end; ++ep_iter)
-      {
-        iter.values_->push_back(
-            basic_resolver_entry<InternetProtocol>(
-              *ep_iter, host_name, service_name));
-      }
-    }
-    return iter;
-  }
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-  /// Create an iterator from a Windows Runtime list of EndpointPair objects.
-  static basic_resolver_iterator create(
-      Windows::Foundation::Collections::IVectorView<
-        Windows::Networking::EndpointPair^>^ endpoints,
-      const asio::detail::addrinfo_type& hints,
-      const std::string& host_name, const std::string& service_name)
-  {
-    basic_resolver_iterator iter;
-    if (endpoints->Size)
-    {
-      iter.values_.reset(new values_type);
-      for (unsigned int i = 0; i < endpoints->Size; ++i)
-      {
-        auto pair = endpoints->GetAt(i);
-
-        if (hints.ai_family == ASIO_OS_DEF(AF_INET)
-            && pair->RemoteHostName->Type
-              != Windows::Networking::HostNameType::Ipv4)
-          continue;
-
-        if (hints.ai_family == ASIO_OS_DEF(AF_INET6)
-            && pair->RemoteHostName->Type
-              != Windows::Networking::HostNameType::Ipv6)
-          continue;
-
-        iter.values_->push_back(
-            basic_resolver_entry<InternetProtocol>(
-              typename InternetProtocol::endpoint(
-                ip::address::from_string(
-                  asio::detail::winrt_utils::string(
-                    pair->RemoteHostName->CanonicalName)),
-                asio::detail::winrt_utils::integer(
-                  pair->RemoteServiceName)),
-              host_name, service_name));
-      }
-    }
-    return iter;
-  }
-#endif // defined(ASIO_WINDOWS_RUNTIME)
-
-  /// Dereference an iterator.
-  const basic_resolver_entry<InternetProtocol>& operator*() const
-  {
-    return dereference();
-  }
-
-  /// Dereference an iterator.
-  const basic_resolver_entry<InternetProtocol>* operator->() const
-  {
-    return &dereference();
-  }
-
-  /// Increment operator (prefix).
-  basic_resolver_iterator& operator++()
-  {
-    increment();
-    return *this;
-  }
-
-  /// Increment operator (postfix).
-  basic_resolver_iterator operator++(int)
-  {
-    basic_resolver_iterator tmp(*this);
-    ++*this;
-    return tmp;
-  }
-
-  /// Test two iterators for equality.
-  friend bool operator==(const basic_resolver_iterator& a,
-      const basic_resolver_iterator& b)
-  {
-    return a.equal(b);
-  }
-
-  /// Test two iterators for inequality.
-  friend bool operator!=(const basic_resolver_iterator& a,
-      const basic_resolver_iterator& b)
-  {
-    return !a.equal(b);
-  }
-
-private:
-  void increment()
-  {
-    if (++index_ == values_->size())
-    {
-      // Reset state to match a default constructed end iterator.
-      values_.reset();
-      index_ = 0;
-    }
-  }
-
-  bool equal(const basic_resolver_iterator& other) const
-  {
-    if (!values_ && !other.values_)
-      return true;
-    if (values_ != other.values_)
-      return false;
-    return index_ == other.index_;
-  }
-
-  const basic_resolver_entry<InternetProtocol>& dereference() const
-  {
-    return (*values_)[index_];
-  }
-
-  typedef std::vector<basic_resolver_entry<InternetProtocol> > values_type;
-  asio::detail::shared_ptr<values_type> values_;
-  std::size_t index_;
-};
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IP_BASIC_RESOLVER_ITERATOR_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/basic_resolver_query.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/basic_resolver_query.hpp
deleted file mode 100644
index ced5724..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/basic_resolver_query.hpp
+++ /dev/null
@@ -1,244 +0,0 @@
-//
-// ip/basic_resolver_query.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IP_BASIC_RESOLVER_QUERY_HPP
-#define ASIO_IP_BASIC_RESOLVER_QUERY_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <string>
-#include "asio/detail/socket_ops.hpp"
-#include "asio/ip/resolver_query_base.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-/// An query to be passed to a resolver.
-/**
- * The asio::ip::basic_resolver_query class template describes a query
- * that can be passed to a resolver.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- */
-template <typename InternetProtocol>
-class basic_resolver_query
-  : public resolver_query_base
-{
-public:
-  /// The protocol type associated with the endpoint query.
-  typedef InternetProtocol protocol_type;
-
-  /// Construct with specified service name for any protocol.
-  /**
-   * This constructor is typically used to perform name resolution for local
-   * service binding.
-   *
-   * @param service A string identifying the requested service. This may be a
-   * descriptive name or a numeric string corresponding to a port number.
-   *
-   * @param resolve_flags A set of flags that determine how name resolution
-   * should be performed. The default flags are suitable for local service
-   * binding.
-   *
-   * @note On POSIX systems, service names are typically defined in the file
-   * <tt>/etc/services</tt>. On Windows, service names may be found in the file
-   * <tt>c:\\windows\\system32\\drivers\\etc\\services</tt>. Operating systems
-   * may use additional locations when resolving service names.
-   */
-  basic_resolver_query(const std::string& service,
-      resolver_query_base::flags resolve_flags = passive | address_configured)
-    : hints_(),
-      host_name_(),
-      service_name_(service)
-  {
-    typename InternetProtocol::endpoint endpoint;
-    hints_.ai_flags = static_cast<int>(resolve_flags);
-    hints_.ai_family = PF_UNSPEC;
-    hints_.ai_socktype = endpoint.protocol().type();
-    hints_.ai_protocol = endpoint.protocol().protocol();
-    hints_.ai_addrlen = 0;
-    hints_.ai_canonname = 0;
-    hints_.ai_addr = 0;
-    hints_.ai_next = 0;
-  }
-
-  /// Construct with specified service name for a given protocol.
-  /**
-   * This constructor is typically used to perform name resolution for local
-   * service binding with a specific protocol version.
-   *
-   * @param protocol A protocol object, normally representing either the IPv4 or
-   * IPv6 version of an internet protocol.
-   *
-   * @param service A string identifying the requested service. This may be a
-   * descriptive name or a numeric string corresponding to a port number.
-   *
-   * @param resolve_flags A set of flags that determine how name resolution
-   * should be performed. The default flags are suitable for local service
-   * binding.
-   *
-   * @note On POSIX systems, service names are typically defined in the file
-   * <tt>/etc/services</tt>. On Windows, service names may be found in the file
-   * <tt>c:\\windows\\system32\\drivers\\etc\\services</tt>. Operating systems
-   * may use additional locations when resolving service names.
-   */
-  basic_resolver_query(const protocol_type& protocol,
-      const std::string& service,
-      resolver_query_base::flags resolve_flags = passive | address_configured)
-    : hints_(),
-      host_name_(),
-      service_name_(service)
-  {
-    hints_.ai_flags = static_cast<int>(resolve_flags);
-    hints_.ai_family = protocol.family();
-    hints_.ai_socktype = protocol.type();
-    hints_.ai_protocol = protocol.protocol();
-    hints_.ai_addrlen = 0;
-    hints_.ai_canonname = 0;
-    hints_.ai_addr = 0;
-    hints_.ai_next = 0;
-  }
-
-  /// Construct with specified host name and service name for any protocol.
-  /**
-   * This constructor is typically used to perform name resolution for
-   * communication with remote hosts.
-   *
-   * @param host A string identifying a location. May be a descriptive name or
-   * a numeric address string. If an empty string and the passive flag has been
-   * specified, the resolved endpoints are suitable for local service binding.
-   * If an empty string and passive is not specified, the resolved endpoints
-   * will use the loopback address.
-   *
-   * @param service A string identifying the requested service. This may be a
-   * descriptive name or a numeric string corresponding to a port number. May
-   * be an empty string, in which case all resolved endpoints will have a port
-   * number of 0.
-   *
-   * @param resolve_flags A set of flags that determine how name resolution
-   * should be performed. The default flags are suitable for communication with
-   * remote hosts.
-   *
-   * @note On POSIX systems, host names may be locally defined in the file
-   * <tt>/etc/hosts</tt>. On Windows, host names may be defined in the file
-   * <tt>c:\\windows\\system32\\drivers\\etc\\hosts</tt>. Remote host name
-   * resolution is performed using DNS. Operating systems may use additional
-   * locations when resolving host names (such as NETBIOS names on Windows).
-   *
-   * On POSIX systems, service names are typically defined in the file
-   * <tt>/etc/services</tt>. On Windows, service names may be found in the file
-   * <tt>c:\\windows\\system32\\drivers\\etc\\services</tt>. Operating systems
-   * may use additional locations when resolving service names.
-   */
-  basic_resolver_query(const std::string& host, const std::string& service,
-      resolver_query_base::flags resolve_flags = address_configured)
-    : hints_(),
-      host_name_(host),
-      service_name_(service)
-  {
-    typename InternetProtocol::endpoint endpoint;
-    hints_.ai_flags = static_cast<int>(resolve_flags);
-    hints_.ai_family = ASIO_OS_DEF(AF_UNSPEC);
-    hints_.ai_socktype = endpoint.protocol().type();
-    hints_.ai_protocol = endpoint.protocol().protocol();
-    hints_.ai_addrlen = 0;
-    hints_.ai_canonname = 0;
-    hints_.ai_addr = 0;
-    hints_.ai_next = 0;
-  }
-
-  /// Construct with specified host name and service name for a given protocol.
-  /**
-   * This constructor is typically used to perform name resolution for
-   * communication with remote hosts.
-   *
-   * @param protocol A protocol object, normally representing either the IPv4 or
-   * IPv6 version of an internet protocol.
-   *
-   * @param host A string identifying a location. May be a descriptive name or
-   * a numeric address string. If an empty string and the passive flag has been
-   * specified, the resolved endpoints are suitable for local service binding.
-   * If an empty string and passive is not specified, the resolved endpoints
-   * will use the loopback address.
-   *
-   * @param service A string identifying the requested service. This may be a
-   * descriptive name or a numeric string corresponding to a port number. May
-   * be an empty string, in which case all resolved endpoints will have a port
-   * number of 0.
-   *
-   * @param resolve_flags A set of flags that determine how name resolution
-   * should be performed. The default flags are suitable for communication with
-   * remote hosts.
-   *
-   * @note On POSIX systems, host names may be locally defined in the file
-   * <tt>/etc/hosts</tt>. On Windows, host names may be defined in the file
-   * <tt>c:\\windows\\system32\\drivers\\etc\\hosts</tt>. Remote host name
-   * resolution is performed using DNS. Operating systems may use additional
-   * locations when resolving host names (such as NETBIOS names on Windows).
-   *
-   * On POSIX systems, service names are typically defined in the file
-   * <tt>/etc/services</tt>. On Windows, service names may be found in the file
-   * <tt>c:\\windows\\system32\\drivers\\etc\\services</tt>. Operating systems
-   * may use additional locations when resolving service names.
-   */
-  basic_resolver_query(const protocol_type& protocol,
-      const std::string& host, const std::string& service,
-      resolver_query_base::flags resolve_flags = address_configured)
-    : hints_(),
-      host_name_(host),
-      service_name_(service)
-  {
-    hints_.ai_flags = static_cast<int>(resolve_flags);
-    hints_.ai_family = protocol.family();
-    hints_.ai_socktype = protocol.type();
-    hints_.ai_protocol = protocol.protocol();
-    hints_.ai_addrlen = 0;
-    hints_.ai_canonname = 0;
-    hints_.ai_addr = 0;
-    hints_.ai_next = 0;
-  }
-
-  /// Get the hints associated with the query.
-  const asio::detail::addrinfo_type& hints() const
-  {
-    return hints_;
-  }
-
-  /// Get the host name associated with the query.
-  std::string host_name() const
-  {
-    return host_name_;
-  }
-
-  /// Get the service name associated with the query.
-  std::string service_name() const
-  {
-    return service_name_;
-  }
-
-private:
-  asio::detail::addrinfo_type hints_;
-  std::string host_name_;
-  std::string service_name_;
-};
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IP_BASIC_RESOLVER_QUERY_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/detail/endpoint.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/detail/endpoint.hpp
deleted file mode 100644
index 847ca4c..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/detail/endpoint.hpp
+++ /dev/null
@@ -1,139 +0,0 @@
-//
-// ip/detail/endpoint.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IP_DETAIL_ENDPOINT_HPP
-#define ASIO_IP_DETAIL_ENDPOINT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <string>
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/winsock_init.hpp"
-#include "asio/error_code.hpp"
-#include "asio/ip/address.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-namespace detail {
-
-// Helper class for implementating an IP endpoint.
-class endpoint
-{
-public:
-  // Default constructor.
-  ASIO_DECL endpoint();
-
-  // Construct an endpoint using a family and port number.
-  ASIO_DECL endpoint(int family, unsigned short port_num);
-
-  // Construct an endpoint using an address and port number.
-  ASIO_DECL endpoint(const asio::ip::address& addr,
-      unsigned short port_num);
-
-  // Copy constructor.
-  endpoint(const endpoint& other)
-    : data_(other.data_)
-  {
-  }
-
-  // Assign from another endpoint.
-  endpoint& operator=(const endpoint& other)
-  {
-    data_ = other.data_;
-    return *this;
-  }
-
-  // Get the underlying endpoint in the native type.
-  asio::detail::socket_addr_type* data()
-  {
-    return &data_.base;
-  }
-
-  // Get the underlying endpoint in the native type.
-  const asio::detail::socket_addr_type* data() const
-  {
-    return &data_.base;
-  }
-
-  // Get the underlying size of the endpoint in the native type.
-  std::size_t size() const
-  {
-    if (is_v4())
-      return sizeof(asio::detail::sockaddr_in4_type);
-    else
-      return sizeof(asio::detail::sockaddr_in6_type);
-  }
-
-  // Set the underlying size of the endpoint in the native type.
-  ASIO_DECL void resize(std::size_t new_size);
-
-  // Get the capacity of the endpoint in the native type.
-  std::size_t capacity() const
-  {
-    return sizeof(data_);
-  }
-
-  // Get the port associated with the endpoint.
-  ASIO_DECL unsigned short port() const;
-
-  // Set the port associated with the endpoint.
-  ASIO_DECL void port(unsigned short port_num);
-
-  // Get the IP address associated with the endpoint.
-  ASIO_DECL asio::ip::address address() const;
-
-  // Set the IP address associated with the endpoint.
-  ASIO_DECL void address(const asio::ip::address& addr);
-
-  // Compare two endpoints for equality.
-  ASIO_DECL friend bool operator==(
-      const endpoint& e1, const endpoint& e2);
-
-  // Compare endpoints for ordering.
-  ASIO_DECL friend bool operator<(
-      const endpoint& e1, const endpoint& e2);
-
-  // Determine whether the endpoint is IPv4.
-  bool is_v4() const
-  {
-    return data_.base.sa_family == ASIO_OS_DEF(AF_INET);
-  }
-
-#if !defined(ASIO_NO_IOSTREAM)
-  // Convert to a string.
-  ASIO_DECL std::string to_string(asio::error_code& ec) const;
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-private:
-  // The underlying IP socket address.
-  union data_union
-  {
-    asio::detail::socket_addr_type base;
-    asio::detail::sockaddr_in4_type v4;
-    asio::detail::sockaddr_in6_type v6;
-  } data_;
-};
-
-} // namespace detail
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/ip/detail/impl/endpoint.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_IP_DETAIL_ENDPOINT_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/detail/impl/endpoint.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/detail/impl/endpoint.ipp
deleted file mode 100644
index 769277f..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/detail/impl/endpoint.ipp
+++ /dev/null
@@ -1,204 +0,0 @@
-//
-// ip/detail/impl/endpoint.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IP_DETAIL_IMPL_ENDPOINT_IPP
-#define ASIO_IP_DETAIL_IMPL_ENDPOINT_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cstring>
-#if !defined(ASIO_NO_IOSTREAM)
-# include <sstream>
-#endif // !defined(ASIO_NO_IOSTREAM)
-#include "asio/detail/socket_ops.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-#include "asio/ip/detail/endpoint.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-namespace detail {
-
-endpoint::endpoint()
-  : data_()
-{
-  data_.v4.sin_family = ASIO_OS_DEF(AF_INET);
-  data_.v4.sin_port = 0;
-  data_.v4.sin_addr.s_addr = ASIO_OS_DEF(INADDR_ANY);
-}
-
-endpoint::endpoint(int family, unsigned short port_num)
-  : data_()
-{
-  using namespace std; // For memcpy.
-  if (family == ASIO_OS_DEF(AF_INET))
-  {
-    data_.v4.sin_family = ASIO_OS_DEF(AF_INET);
-    data_.v4.sin_port =
-      asio::detail::socket_ops::host_to_network_short(port_num);
-    data_.v4.sin_addr.s_addr = ASIO_OS_DEF(INADDR_ANY);
-  }
-  else
-  {
-    data_.v6.sin6_family = ASIO_OS_DEF(AF_INET6);
-    data_.v6.sin6_port =
-      asio::detail::socket_ops::host_to_network_short(port_num);
-    data_.v6.sin6_flowinfo = 0;
-    data_.v6.sin6_addr.s6_addr[0] = 0; data_.v6.sin6_addr.s6_addr[1] = 0;
-    data_.v6.sin6_addr.s6_addr[2] = 0, data_.v6.sin6_addr.s6_addr[3] = 0;
-    data_.v6.sin6_addr.s6_addr[4] = 0, data_.v6.sin6_addr.s6_addr[5] = 0;
-    data_.v6.sin6_addr.s6_addr[6] = 0, data_.v6.sin6_addr.s6_addr[7] = 0;
-    data_.v6.sin6_addr.s6_addr[8] = 0, data_.v6.sin6_addr.s6_addr[9] = 0;
-    data_.v6.sin6_addr.s6_addr[10] = 0, data_.v6.sin6_addr.s6_addr[11] = 0;
-    data_.v6.sin6_addr.s6_addr[12] = 0, data_.v6.sin6_addr.s6_addr[13] = 0;
-    data_.v6.sin6_addr.s6_addr[14] = 0, data_.v6.sin6_addr.s6_addr[15] = 0;
-    data_.v6.sin6_scope_id = 0;
-  }
-}
-
-endpoint::endpoint(const asio::ip::address& addr,
-    unsigned short port_num)
-  : data_()
-{
-  using namespace std; // For memcpy.
-  if (addr.is_v4())
-  {
-    data_.v4.sin_family = ASIO_OS_DEF(AF_INET);
-    data_.v4.sin_port =
-      asio::detail::socket_ops::host_to_network_short(port_num);
-    data_.v4.sin_addr.s_addr =
-      asio::detail::socket_ops::host_to_network_long(
-          static_cast<asio::detail::u_long_type>(
-            addr.to_v4().to_ulong()));
-  }
-  else
-  {
-    data_.v6.sin6_family = ASIO_OS_DEF(AF_INET6);
-    data_.v6.sin6_port =
-      asio::detail::socket_ops::host_to_network_short(port_num);
-    data_.v6.sin6_flowinfo = 0;
-    asio::ip::address_v6 v6_addr = addr.to_v6();
-    asio::ip::address_v6::bytes_type bytes = v6_addr.to_bytes();
-    memcpy(data_.v6.sin6_addr.s6_addr, bytes.data(), 16);
-    data_.v6.sin6_scope_id =
-      static_cast<asio::detail::u_long_type>(
-        v6_addr.scope_id());
-  }
-}
-
-void endpoint::resize(std::size_t new_size)
-{
-  if (new_size > sizeof(asio::detail::sockaddr_storage_type))
-  {
-    asio::error_code ec(asio::error::invalid_argument);
-    asio::detail::throw_error(ec);
-  }
-}
-
-unsigned short endpoint::port() const
-{
-  if (is_v4())
-  {
-    return asio::detail::socket_ops::network_to_host_short(
-        data_.v4.sin_port);
-  }
-  else
-  {
-    return asio::detail::socket_ops::network_to_host_short(
-        data_.v6.sin6_port);
-  }
-}
-
-void endpoint::port(unsigned short port_num)
-{
-  if (is_v4())
-  {
-    data_.v4.sin_port
-      = asio::detail::socket_ops::host_to_network_short(port_num);
-  }
-  else
-  {
-    data_.v6.sin6_port
-      = asio::detail::socket_ops::host_to_network_short(port_num);
-  }
-}
-
-asio::ip::address endpoint::address() const
-{
-  using namespace std; // For memcpy.
-  if (is_v4())
-  {
-    return asio::ip::address_v4(
-        asio::detail::socket_ops::network_to_host_long(
-          data_.v4.sin_addr.s_addr));
-  }
-  else
-  {
-    asio::ip::address_v6::bytes_type bytes;
-#if defined(ASIO_HAS_STD_ARRAY)
-    memcpy(bytes.data(), data_.v6.sin6_addr.s6_addr, 16);
-#else // defined(ASIO_HAS_STD_ARRAY)
-    memcpy(bytes.elems, data_.v6.sin6_addr.s6_addr, 16);
-#endif // defined(ASIO_HAS_STD_ARRAY)
-    return asio::ip::address_v6(bytes, data_.v6.sin6_scope_id);
-  }
-}
-
-void endpoint::address(const asio::ip::address& addr)
-{
-  endpoint tmp_endpoint(addr, port());
-  data_ = tmp_endpoint.data_;
-}
-
-bool operator==(const endpoint& e1, const endpoint& e2)
-{
-  return e1.address() == e2.address() && e1.port() == e2.port();
-}
-
-bool operator<(const endpoint& e1, const endpoint& e2)
-{
-  if (e1.address() < e2.address())
-    return true;
-  if (e1.address() != e2.address())
-    return false;
-  return e1.port() < e2.port();
-}
-
-#if !defined(ASIO_NO_IOSTREAM)
-std::string endpoint::to_string(asio::error_code& ec) const
-{
-  std::string a = address().to_string(ec);
-  if (ec)
-    return std::string();
-
-  std::ostringstream tmp_os;
-  tmp_os.imbue(std::locale::classic());
-  if (is_v4())
-    tmp_os << a;
-  else
-    tmp_os << '[' << a << ']';
-  tmp_os << ':' << port();
-
-  return tmp_os.str();
-}
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-} // namespace detail
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IP_DETAIL_IMPL_ENDPOINT_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/detail/socket_option.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/detail/socket_option.hpp
deleted file mode 100644
index cb02918..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/detail/socket_option.hpp
+++ /dev/null
@@ -1,569 +0,0 @@
-//
-// detail/socket_option.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IP_DETAIL_SOCKET_OPTION_HPP
-#define ASIO_IP_DETAIL_SOCKET_OPTION_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cstddef>
-#include <cstring>
-#include <stdexcept>
-#include "asio/detail/socket_ops.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/detail/throw_exception.hpp"
-#include "asio/ip/address.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-namespace detail {
-namespace socket_option {
-
-// Helper template for implementing multicast enable loopback options.
-template <int IPv4_Level, int IPv4_Name, int IPv6_Level, int IPv6_Name>
-class multicast_enable_loopback
-{
-public:
-#if defined(__sun) || defined(__osf__)
-  typedef unsigned char ipv4_value_type;
-  typedef unsigned char ipv6_value_type;
-#elif defined(_AIX) || defined(__hpux) || defined(__QNXNTO__) 
-  typedef unsigned char ipv4_value_type;
-  typedef unsigned int ipv6_value_type;
-#else
-  typedef int ipv4_value_type;
-  typedef int ipv6_value_type;
-#endif
-
-  // Default constructor.
-  multicast_enable_loopback()
-    : ipv4_value_(0),
-      ipv6_value_(0)
-  {
-  }
-
-  // Construct with a specific option value.
-  explicit multicast_enable_loopback(bool v)
-    : ipv4_value_(v ? 1 : 0),
-      ipv6_value_(v ? 1 : 0)
-  {
-  }
-
-  // Set the value of the boolean.
-  multicast_enable_loopback& operator=(bool v)
-  {
-    ipv4_value_ = v ? 1 : 0;
-    ipv6_value_ = v ? 1 : 0;
-    return *this;
-  }
-
-  // Get the current value of the boolean.
-  bool value() const
-  {
-    return !!ipv4_value_;
-  }
-
-  // Convert to bool.
-  operator bool() const
-  {
-    return !!ipv4_value_;
-  }
-
-  // Test for false.
-  bool operator!() const
-  {
-    return !ipv4_value_;
-  }
-
-  // Get the level of the socket option.
-  template <typename Protocol>
-  int level(const Protocol& protocol) const
-  {
-    if (protocol.family() == PF_INET6)
-      return IPv6_Level;
-    return IPv4_Level;
-  }
-
-  // Get the name of the socket option.
-  template <typename Protocol>
-  int name(const Protocol& protocol) const
-  {
-    if (protocol.family() == PF_INET6)
-      return IPv6_Name;
-    return IPv4_Name;
-  }
-
-  // Get the address of the boolean data.
-  template <typename Protocol>
-  void* data(const Protocol& protocol)
-  {
-    if (protocol.family() == PF_INET6)
-      return &ipv6_value_;
-    return &ipv4_value_;
-  }
-
-  // Get the address of the boolean data.
-  template <typename Protocol>
-  const void* data(const Protocol& protocol) const
-  {
-    if (protocol.family() == PF_INET6)
-      return &ipv6_value_;
-    return &ipv4_value_;
-  }
-
-  // Get the size of the boolean data.
-  template <typename Protocol>
-  std::size_t size(const Protocol& protocol) const
-  {
-    if (protocol.family() == PF_INET6)
-      return sizeof(ipv6_value_);
-    return sizeof(ipv4_value_);
-  }
-
-  // Set the size of the boolean data.
-  template <typename Protocol>
-  void resize(const Protocol& protocol, std::size_t s)
-  {
-    if (protocol.family() == PF_INET6)
-    {
-      if (s != sizeof(ipv6_value_))
-      {
-        std::length_error ex("multicast_enable_loopback socket option resize");
-        asio::detail::throw_exception(ex);
-      }
-      ipv4_value_ = ipv6_value_ ? 1 : 0;
-    }
-    else
-    {
-      if (s != sizeof(ipv4_value_))
-      {
-        std::length_error ex("multicast_enable_loopback socket option resize");
-        asio::detail::throw_exception(ex);
-      }
-      ipv6_value_ = ipv4_value_ ? 1 : 0;
-    }
-  }
-
-private:
-  ipv4_value_type ipv4_value_;
-  ipv6_value_type ipv6_value_;
-};
-
-// Helper template for implementing unicast hops options.
-template <int IPv4_Level, int IPv4_Name, int IPv6_Level, int IPv6_Name>
-class unicast_hops
-{
-public:
-  // Default constructor.
-  unicast_hops()
-    : value_(0)
-  {
-  }
-
-  // Construct with a specific option value.
-  explicit unicast_hops(int v)
-    : value_(v)
-  {
-  }
-
-  // Set the value of the option.
-  unicast_hops& operator=(int v)
-  {
-    value_ = v;
-    return *this;
-  }
-
-  // Get the current value of the option.
-  int value() const
-  {
-    return value_;
-  }
-
-  // Get the level of the socket option.
-  template <typename Protocol>
-  int level(const Protocol& protocol) const
-  {
-    if (protocol.family() == PF_INET6)
-      return IPv6_Level;
-    return IPv4_Level;
-  }
-
-  // Get the name of the socket option.
-  template <typename Protocol>
-  int name(const Protocol& protocol) const
-  {
-    if (protocol.family() == PF_INET6)
-      return IPv6_Name;
-    return IPv4_Name;
-  }
-
-  // Get the address of the data.
-  template <typename Protocol>
-  int* data(const Protocol&)
-  {
-    return &value_;
-  }
-
-  // Get the address of the data.
-  template <typename Protocol>
-  const int* data(const Protocol&) const
-  {
-    return &value_;
-  }
-
-  // Get the size of the data.
-  template <typename Protocol>
-  std::size_t size(const Protocol&) const
-  {
-    return sizeof(value_);
-  }
-
-  // Set the size of the data.
-  template <typename Protocol>
-  void resize(const Protocol&, std::size_t s)
-  {
-    if (s != sizeof(value_))
-    {
-      std::length_error ex("unicast hops socket option resize");
-      asio::detail::throw_exception(ex);
-    }
-#if defined(__hpux)
-    if (value_ < 0)
-      value_ = value_ & 0xFF;
-#endif
-  }
-
-private:
-  int value_;
-};
-
-// Helper template for implementing multicast hops options.
-template <int IPv4_Level, int IPv4_Name, int IPv6_Level, int IPv6_Name>
-class multicast_hops
-{
-public:
-#if defined(ASIO_WINDOWS) && defined(UNDER_CE)
-  typedef int ipv4_value_type;
-#else
-  typedef unsigned char ipv4_value_type;
-#endif
-  typedef int ipv6_value_type;
-
-  // Default constructor.
-  multicast_hops()
-    : ipv4_value_(0),
-      ipv6_value_(0)
-  {
-  }
-
-  // Construct with a specific option value.
-  explicit multicast_hops(int v)
-  {
-    if (v < 0 || v > 255)
-    {
-      std::out_of_range ex("multicast hops value out of range");
-      asio::detail::throw_exception(ex);
-    }
-    ipv4_value_ = (ipv4_value_type)v;
-    ipv6_value_ = v;
-  }
-
-  // Set the value of the option.
-  multicast_hops& operator=(int v)
-  {
-    if (v < 0 || v > 255)
-    {
-      std::out_of_range ex("multicast hops value out of range");
-      asio::detail::throw_exception(ex);
-    }
-    ipv4_value_ = (ipv4_value_type)v;
-    ipv6_value_ = v;
-    return *this;
-  }
-
-  // Get the current value of the option.
-  int value() const
-  {
-    return ipv6_value_;
-  }
-
-  // Get the level of the socket option.
-  template <typename Protocol>
-  int level(const Protocol& protocol) const
-  {
-    if (protocol.family() == PF_INET6)
-      return IPv6_Level;
-    return IPv4_Level;
-  }
-
-  // Get the name of the socket option.
-  template <typename Protocol>
-  int name(const Protocol& protocol) const
-  {
-    if (protocol.family() == PF_INET6)
-      return IPv6_Name;
-    return IPv4_Name;
-  }
-
-  // Get the address of the data.
-  template <typename Protocol>
-  void* data(const Protocol& protocol)
-  {
-    if (protocol.family() == PF_INET6)
-      return &ipv6_value_;
-    return &ipv4_value_;
-  }
-
-  // Get the address of the data.
-  template <typename Protocol>
-  const void* data(const Protocol& protocol) const
-  {
-    if (protocol.family() == PF_INET6)
-      return &ipv6_value_;
-    return &ipv4_value_;
-  }
-
-  // Get the size of the data.
-  template <typename Protocol>
-  std::size_t size(const Protocol& protocol) const
-  {
-    if (protocol.family() == PF_INET6)
-      return sizeof(ipv6_value_);
-    return sizeof(ipv4_value_);
-  }
-
-  // Set the size of the data.
-  template <typename Protocol>
-  void resize(const Protocol& protocol, std::size_t s)
-  {
-    if (protocol.family() == PF_INET6)
-    {
-      if (s != sizeof(ipv6_value_))
-      {
-        std::length_error ex("multicast hops socket option resize");
-        asio::detail::throw_exception(ex);
-      }
-      if (ipv6_value_ < 0)
-        ipv4_value_ = 0;
-      else if (ipv6_value_ > 255)
-        ipv4_value_ = 255;
-      else
-        ipv4_value_ = (ipv4_value_type)ipv6_value_;
-    }
-    else
-    {
-      if (s != sizeof(ipv4_value_))
-      {
-        std::length_error ex("multicast hops socket option resize");
-        asio::detail::throw_exception(ex);
-      }
-      ipv6_value_ = ipv4_value_;
-    }
-  }
-
-private:
-  ipv4_value_type ipv4_value_;
-  ipv6_value_type ipv6_value_;
-};
-
-// Helper template for implementing ip_mreq-based options.
-template <int IPv4_Level, int IPv4_Name, int IPv6_Level, int IPv6_Name>
-class multicast_request
-{
-public:
-  // Default constructor.
-  multicast_request()
-    : ipv4_value_(), // Zero-initialisation gives the "any" address.
-      ipv6_value_() // Zero-initialisation gives the "any" address.
-  {
-  }
-
-  // Construct with multicast address only.
-  explicit multicast_request(const asio::ip::address& multicast_address)
-    : ipv4_value_(), // Zero-initialisation gives the "any" address.
-      ipv6_value_() // Zero-initialisation gives the "any" address.
-  {
-    if (multicast_address.is_v6())
-    {
-      using namespace std; // For memcpy.
-      asio::ip::address_v6 ipv6_address = multicast_address.to_v6();
-      asio::ip::address_v6::bytes_type bytes = ipv6_address.to_bytes();
-      memcpy(ipv6_value_.ipv6mr_multiaddr.s6_addr, bytes.data(), 16);
-      ipv6_value_.ipv6mr_interface = ipv6_address.scope_id();
-    }
-    else
-    {
-      ipv4_value_.imr_multiaddr.s_addr =
-        asio::detail::socket_ops::host_to_network_long(
-            multicast_address.to_v4().to_ulong());
-      ipv4_value_.imr_interface.s_addr =
-        asio::detail::socket_ops::host_to_network_long(
-            asio::ip::address_v4::any().to_ulong());
-    }
-  }
-
-  // Construct with multicast address and IPv4 address specifying an interface.
-  explicit multicast_request(
-      const asio::ip::address_v4& multicast_address,
-      const asio::ip::address_v4& network_interface
-        = asio::ip::address_v4::any())
-    : ipv6_value_() // Zero-initialisation gives the "any" address.
-  {
-    ipv4_value_.imr_multiaddr.s_addr =
-      asio::detail::socket_ops::host_to_network_long(
-          multicast_address.to_ulong());
-    ipv4_value_.imr_interface.s_addr =
-      asio::detail::socket_ops::host_to_network_long(
-          network_interface.to_ulong());
-  }
-
-  // Construct with multicast address and IPv6 network interface index.
-  explicit multicast_request(
-      const asio::ip::address_v6& multicast_address,
-      unsigned long network_interface = 0)
-    : ipv4_value_() // Zero-initialisation gives the "any" address.
-  {
-    using namespace std; // For memcpy.
-    asio::ip::address_v6::bytes_type bytes =
-      multicast_address.to_bytes();
-    memcpy(ipv6_value_.ipv6mr_multiaddr.s6_addr, bytes.data(), 16);
-    if (network_interface)
-      ipv6_value_.ipv6mr_interface = network_interface;
-    else
-      ipv6_value_.ipv6mr_interface = multicast_address.scope_id();
-  }
-
-  // Get the level of the socket option.
-  template <typename Protocol>
-  int level(const Protocol& protocol) const
-  {
-    if (protocol.family() == PF_INET6)
-      return IPv6_Level;
-    return IPv4_Level;
-  }
-
-  // Get the name of the socket option.
-  template <typename Protocol>
-  int name(const Protocol& protocol) const
-  {
-    if (protocol.family() == PF_INET6)
-      return IPv6_Name;
-    return IPv4_Name;
-  }
-
-  // Get the address of the option data.
-  template <typename Protocol>
-  const void* data(const Protocol& protocol) const
-  {
-    if (protocol.family() == PF_INET6)
-      return &ipv6_value_;
-    return &ipv4_value_;
-  }
-
-  // Get the size of the option data.
-  template <typename Protocol>
-  std::size_t size(const Protocol& protocol) const
-  {
-    if (protocol.family() == PF_INET6)
-      return sizeof(ipv6_value_);
-    return sizeof(ipv4_value_);
-  }
-
-private:
-  asio::detail::in4_mreq_type ipv4_value_;
-  asio::detail::in6_mreq_type ipv6_value_;
-};
-
-// Helper template for implementing options that specify a network interface.
-template <int IPv4_Level, int IPv4_Name, int IPv6_Level, int IPv6_Name>
-class network_interface
-{
-public:
-  // Default constructor.
-  network_interface()
-  {
-    ipv4_value_.s_addr =
-      asio::detail::socket_ops::host_to_network_long(
-          asio::ip::address_v4::any().to_ulong());
-    ipv6_value_ = 0;
-  }
-
-  // Construct with IPv4 interface.
-  explicit network_interface(const asio::ip::address_v4& ipv4_interface)
-  {
-    ipv4_value_.s_addr =
-      asio::detail::socket_ops::host_to_network_long(
-          ipv4_interface.to_ulong());
-    ipv6_value_ = 0;
-  }
-
-  // Construct with IPv6 interface.
-  explicit network_interface(unsigned int ipv6_interface)
-  {
-    ipv4_value_.s_addr =
-      asio::detail::socket_ops::host_to_network_long(
-          asio::ip::address_v4::any().to_ulong());
-    ipv6_value_ = ipv6_interface;
-  }
-
-  // Get the level of the socket option.
-  template <typename Protocol>
-  int level(const Protocol& protocol) const
-  {
-    if (protocol.family() == PF_INET6)
-      return IPv6_Level;
-    return IPv4_Level;
-  }
-
-  // Get the name of the socket option.
-  template <typename Protocol>
-  int name(const Protocol& protocol) const
-  {
-    if (protocol.family() == PF_INET6)
-      return IPv6_Name;
-    return IPv4_Name;
-  }
-
-  // Get the address of the option data.
-  template <typename Protocol>
-  const void* data(const Protocol& protocol) const
-  {
-    if (protocol.family() == PF_INET6)
-      return &ipv6_value_;
-    return &ipv4_value_;
-  }
-
-  // Get the size of the option data.
-  template <typename Protocol>
-  std::size_t size(const Protocol& protocol) const
-  {
-    if (protocol.family() == PF_INET6)
-      return sizeof(ipv6_value_);
-    return sizeof(ipv4_value_);
-  }
-
-private:
-  asio::detail::in4_addr_type ipv4_value_;
-  unsigned int ipv6_value_;
-};
-
-} // namespace socket_option
-} // namespace detail
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IP_DETAIL_SOCKET_OPTION_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/host_name.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/host_name.hpp
deleted file mode 100644
index a5d6e59..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/host_name.hpp
+++ /dev/null
@@ -1,42 +0,0 @@
-//
-// ip/host_name.hpp
-// ~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IP_HOST_NAME_HPP
-#define ASIO_IP_HOST_NAME_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <string>
-#include "asio/error_code.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-/// Get the current host name.
-ASIO_DECL std::string host_name();
-
-/// Get the current host name.
-ASIO_DECL std::string host_name(asio::error_code& ec);
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/ip/impl/host_name.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_IP_HOST_NAME_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/icmp.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/icmp.hpp
deleted file mode 100644
index 26766e6..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/icmp.hpp
+++ /dev/null
@@ -1,115 +0,0 @@
-//
-// ip/icmp.hpp
-// ~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IP_ICMP_HPP
-#define ASIO_IP_ICMP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/basic_raw_socket.hpp"
-#include "asio/ip/basic_endpoint.hpp"
-#include "asio/ip/basic_resolver.hpp"
-#include "asio/ip/basic_resolver_iterator.hpp"
-#include "asio/ip/basic_resolver_query.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-/// Encapsulates the flags needed for ICMP.
-/**
- * The asio::ip::icmp class contains flags necessary for ICMP sockets.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Safe.
- *
- * @par Concepts:
- * Protocol, InternetProtocol.
- */
-class icmp
-{
-public:
-  /// The type of a ICMP endpoint.
-  typedef basic_endpoint<icmp> endpoint;
-
-  /// Construct to represent the IPv4 ICMP protocol.
-  static icmp v4()
-  {
-    return icmp(ASIO_OS_DEF(IPPROTO_ICMP),
-        ASIO_OS_DEF(AF_INET));
-  }
-
-  /// Construct to represent the IPv6 ICMP protocol.
-  static icmp v6()
-  {
-    return icmp(ASIO_OS_DEF(IPPROTO_ICMPV6),
-        ASIO_OS_DEF(AF_INET6));
-  }
-
-  /// Obtain an identifier for the type of the protocol.
-  int type() const
-  {
-    return ASIO_OS_DEF(SOCK_RAW);
-  }
-
-  /// Obtain an identifier for the protocol.
-  int protocol() const
-  {
-    return protocol_;
-  }
-
-  /// Obtain an identifier for the protocol family.
-  int family() const
-  {
-    return family_;
-  }
-
-  /// The ICMP socket type.
-  typedef basic_raw_socket<icmp> socket;
-
-  /// The ICMP resolver type.
-  typedef basic_resolver<icmp> resolver;
-
-  /// Compare two protocols for equality.
-  friend bool operator==(const icmp& p1, const icmp& p2)
-  {
-    return p1.protocol_ == p2.protocol_ && p1.family_ == p2.family_;
-  }
-
-  /// Compare two protocols for inequality.
-  friend bool operator!=(const icmp& p1, const icmp& p2)
-  {
-    return p1.protocol_ != p2.protocol_ || p1.family_ != p2.family_;
-  }
-
-private:
-  // Construct with a specific family.
-  explicit icmp(int protocol_id, int protocol_family)
-    : protocol_(protocol_id),
-      family_(protocol_family)
-  {
-  }
-
-  int protocol_;
-  int family_;
-};
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IP_ICMP_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/impl/address.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/impl/address.hpp
deleted file mode 100644
index 5aea59a..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/impl/address.hpp
+++ /dev/null
@@ -1,53 +0,0 @@
-//
-// ip/impl/address.hpp
-// ~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IP_IMPL_ADDRESS_HPP
-#define ASIO_IP_IMPL_ADDRESS_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-#include "asio/detail/throw_error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-template <typename Elem, typename Traits>
-std::basic_ostream<Elem, Traits>& operator<<(
-    std::basic_ostream<Elem, Traits>& os, const address& addr)
-{
-  asio::error_code ec;
-  std::string s = addr.to_string(ec);
-  if (ec)
-  {
-    if (os.exceptions() & std::basic_ostream<Elem, Traits>::failbit)
-      asio::detail::throw_error(ec);
-    else
-      os.setstate(std::basic_ostream<Elem, Traits>::failbit);
-  }
-  else
-    for (std::string::iterator i = s.begin(); i != s.end(); ++i)
-      os << os.widen(*i);
-  return os;
-}
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-#endif // ASIO_IP_IMPL_ADDRESS_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/impl/address.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/impl/address.ipp
deleted file mode 100644
index 90f52af..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/impl/address.ipp
+++ /dev/null
@@ -1,226 +0,0 @@
-//
-// ip/impl/address.ipp
-// ~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IP_IMPL_ADDRESS_IPP
-#define ASIO_IP_IMPL_ADDRESS_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <typeinfo>
-#include "asio/detail/throw_error.hpp"
-#include "asio/detail/throw_exception.hpp"
-#include "asio/error.hpp"
-#include "asio/ip/address.hpp"
-#include "asio/system_error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-address::address()
-  : type_(ipv4),
-    ipv4_address_(),
-    ipv6_address_()
-{
-}
-
-address::address(const asio::ip::address_v4& ipv4_address)
-  : type_(ipv4),
-    ipv4_address_(ipv4_address),
-    ipv6_address_()
-{
-}
-
-address::address(const asio::ip::address_v6& ipv6_address)
-  : type_(ipv6),
-    ipv4_address_(),
-    ipv6_address_(ipv6_address)
-{
-}
-
-address::address(const address& other)
-  : type_(other.type_),
-    ipv4_address_(other.ipv4_address_),
-    ipv6_address_(other.ipv6_address_)
-{
-}
-
-#if defined(ASIO_HAS_MOVE)
-address::address(address&& other)
-  : type_(other.type_),
-    ipv4_address_(other.ipv4_address_),
-    ipv6_address_(other.ipv6_address_)
-{
-}
-#endif // defined(ASIO_HAS_MOVE)
-
-address& address::operator=(const address& other)
-{
-  type_ = other.type_;
-  ipv4_address_ = other.ipv4_address_;
-  ipv6_address_ = other.ipv6_address_;
-  return *this;
-}
-
-#if defined(ASIO_HAS_MOVE)
-address& address::operator=(address&& other)
-{
-  type_ = other.type_;
-  ipv4_address_ = other.ipv4_address_;
-  ipv6_address_ = other.ipv6_address_;
-  return *this;
-}
-#endif // defined(ASIO_HAS_MOVE)
-
-address& address::operator=(const asio::ip::address_v4& ipv4_address)
-{
-  type_ = ipv4;
-  ipv4_address_ = ipv4_address;
-  ipv6_address_ = asio::ip::address_v6();
-  return *this;
-}
-
-address& address::operator=(const asio::ip::address_v6& ipv6_address)
-{
-  type_ = ipv6;
-  ipv4_address_ = asio::ip::address_v4();
-  ipv6_address_ = ipv6_address;
-  return *this;
-}
-
-asio::ip::address_v4 address::to_v4() const
-{
-  if (type_ != ipv4)
-  {
-    std::bad_cast ex;
-    asio::detail::throw_exception(ex);
-  }
-  return ipv4_address_;
-}
-
-asio::ip::address_v6 address::to_v6() const
-{
-  if (type_ != ipv6)
-  {
-    std::bad_cast ex;
-    asio::detail::throw_exception(ex);
-  }
-  return ipv6_address_;
-}
-
-std::string address::to_string() const
-{
-  if (type_ == ipv6)
-    return ipv6_address_.to_string();
-  return ipv4_address_.to_string();
-}
-
-std::string address::to_string(asio::error_code& ec) const
-{
-  if (type_ == ipv6)
-    return ipv6_address_.to_string(ec);
-  return ipv4_address_.to_string(ec);
-}
-
-address address::from_string(const char* str)
-{
-  asio::error_code ec;
-  address addr = from_string(str, ec);
-  asio::detail::throw_error(ec);
-  return addr;
-}
-
-address address::from_string(const char* str, asio::error_code& ec)
-{
-  asio::ip::address_v6 ipv6_address =
-    asio::ip::address_v6::from_string(str, ec);
-  if (!ec)
-  {
-    address tmp;
-    tmp.type_ = ipv6;
-    tmp.ipv6_address_ = ipv6_address;
-    return tmp;
-  }
-
-  asio::ip::address_v4 ipv4_address =
-    asio::ip::address_v4::from_string(str, ec);
-  if (!ec)
-  {
-    address tmp;
-    tmp.type_ = ipv4;
-    tmp.ipv4_address_ = ipv4_address;
-    return tmp;
-  }
-
-  return address();
-}
-
-address address::from_string(const std::string& str)
-{
-  return from_string(str.c_str());
-}
-
-address address::from_string(const std::string& str,
-    asio::error_code& ec)
-{
-  return from_string(str.c_str(), ec);
-}
-
-bool address::is_loopback() const
-{
-  return (type_ == ipv4)
-    ? ipv4_address_.is_loopback()
-    : ipv6_address_.is_loopback();
-}
-
-bool address::is_unspecified() const
-{
-  return (type_ == ipv4)
-    ? ipv4_address_.is_unspecified()
-    : ipv6_address_.is_unspecified();
-}
-
-bool address::is_multicast() const
-{
-  return (type_ == ipv4)
-    ? ipv4_address_.is_multicast()
-    : ipv6_address_.is_multicast();
-}
-
-bool operator==(const address& a1, const address& a2)
-{
-  if (a1.type_ != a2.type_)
-    return false;
-  if (a1.type_ == address::ipv6)
-    return a1.ipv6_address_ == a2.ipv6_address_;
-  return a1.ipv4_address_ == a2.ipv4_address_;
-}
-
-bool operator<(const address& a1, const address& a2)
-{
-  if (a1.type_ < a2.type_)
-    return true;
-  if (a1.type_ > a2.type_)
-    return false;
-  if (a1.type_ == address::ipv6)
-    return a1.ipv6_address_ < a2.ipv6_address_;
-  return a1.ipv4_address_ < a2.ipv4_address_;
-}
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IP_IMPL_ADDRESS_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/impl/address_v4.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/impl/address_v4.hpp
deleted file mode 100644
index 30e65dc..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/impl/address_v4.hpp
+++ /dev/null
@@ -1,53 +0,0 @@
-//
-// ip/impl/address_v4.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IP_IMPL_ADDRESS_V4_HPP
-#define ASIO_IP_IMPL_ADDRESS_V4_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-#include "asio/detail/throw_error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-template <typename Elem, typename Traits>
-std::basic_ostream<Elem, Traits>& operator<<(
-    std::basic_ostream<Elem, Traits>& os, const address_v4& addr)
-{
-  asio::error_code ec;
-  std::string s = addr.to_string(ec);
-  if (ec)
-  {
-    if (os.exceptions() & std::basic_ostream<Elem, Traits>::failbit)
-      asio::detail::throw_error(ec);
-    else
-      os.setstate(std::basic_ostream<Elem, Traits>::failbit);
-  }
-  else
-    for (std::string::iterator i = s.begin(); i != s.end(); ++i)
-      os << os.widen(*i);
-  return os;
-}
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-#endif // ASIO_IP_IMPL_ADDRESS_V4_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/impl/address_v4.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/impl/address_v4.ipp
deleted file mode 100644
index 8193c6e..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/impl/address_v4.ipp
+++ /dev/null
@@ -1,178 +0,0 @@
-//
-// ip/impl/address_v4.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IP_IMPL_ADDRESS_V4_IPP
-#define ASIO_IP_IMPL_ADDRESS_V4_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <climits>
-#include <stdexcept>
-#include "asio/error.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/detail/throw_exception.hpp"
-#include "asio/ip/address_v4.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-address_v4::address_v4(const address_v4::bytes_type& bytes)
-{
-#if UCHAR_MAX > 0xFF
-  if (bytes[0] > 0xFF || bytes[1] > 0xFF
-      || bytes[2] > 0xFF || bytes[3] > 0xFF)
-  {
-    std::out_of_range ex("address_v4 from bytes_type");
-    asio::detail::throw_exception(ex);
-  }
-#endif // UCHAR_MAX > 0xFF
-
-  using namespace std; // For memcpy.
-  memcpy(&addr_.s_addr, bytes.data(), 4);
-}
-
-address_v4::address_v4(unsigned long addr)
-{
-#if ULONG_MAX > 0xFFFFFFFF
-  if (addr > 0xFFFFFFFF)
-  {
-    std::out_of_range ex("address_v4 from unsigned long");
-    asio::detail::throw_exception(ex);
-  }
-#endif // ULONG_MAX > 0xFFFFFFFF
-
-  addr_.s_addr = asio::detail::socket_ops::host_to_network_long(
-      static_cast<asio::detail::u_long_type>(addr));
-}
-
-address_v4::bytes_type address_v4::to_bytes() const
-{
-  using namespace std; // For memcpy.
-  bytes_type bytes;
-#if defined(ASIO_HAS_STD_ARRAY)
-  memcpy(bytes.data(), &addr_.s_addr, 4);
-#else // defined(ASIO_HAS_STD_ARRAY)
-  memcpy(bytes.elems, &addr_.s_addr, 4);
-#endif // defined(ASIO_HAS_STD_ARRAY)
-  return bytes;
-}
-
-unsigned long address_v4::to_ulong() const
-{
-  return asio::detail::socket_ops::network_to_host_long(addr_.s_addr);
-}
-
-std::string address_v4::to_string() const
-{
-  asio::error_code ec;
-  std::string addr = to_string(ec);
-  asio::detail::throw_error(ec);
-  return addr;
-}
-
-std::string address_v4::to_string(asio::error_code& ec) const
-{
-  char addr_str[asio::detail::max_addr_v4_str_len];
-  const char* addr =
-    asio::detail::socket_ops::inet_ntop(
-        ASIO_OS_DEF(AF_INET), &addr_, addr_str,
-        asio::detail::max_addr_v4_str_len, 0, ec);
-  if (addr == 0)
-    return std::string();
-  return addr;
-}
-
-address_v4 address_v4::from_string(const char* str)
-{
-  asio::error_code ec;
-  address_v4 addr = from_string(str, ec);
-  asio::detail::throw_error(ec);
-  return addr;
-}
-
-address_v4 address_v4::from_string(
-    const char* str, asio::error_code& ec)
-{
-  address_v4 tmp;
-  if (asio::detail::socket_ops::inet_pton(
-        ASIO_OS_DEF(AF_INET), str, &tmp.addr_, 0, ec) <= 0)
-    return address_v4();
-  return tmp;
-}
-
-address_v4 address_v4::from_string(const std::string& str)
-{
-  return from_string(str.c_str());
-}
-
-address_v4 address_v4::from_string(
-    const std::string& str, asio::error_code& ec)
-{
-  return from_string(str.c_str(), ec);
-}
-
-bool address_v4::is_loopback() const
-{
-  return (to_ulong() & 0xFF000000) == 0x7F000000;
-}
-
-bool address_v4::is_unspecified() const
-{
-  return to_ulong() == 0;
-}
-
-bool address_v4::is_class_a() const
-{
-  return (to_ulong() & 0x80000000) == 0;
-}
-
-bool address_v4::is_class_b() const
-{
-  return (to_ulong() & 0xC0000000) == 0x80000000;
-}
-
-bool address_v4::is_class_c() const
-{
-  return (to_ulong() & 0xE0000000) == 0xC0000000;
-}
-
-bool address_v4::is_multicast() const
-{
-  return (to_ulong() & 0xF0000000) == 0xE0000000;
-}
-
-address_v4 address_v4::broadcast(const address_v4& addr, const address_v4& mask)
-{
-  return address_v4(addr.to_ulong() | (mask.to_ulong() ^ 0xFFFFFFFF));
-}
-
-address_v4 address_v4::netmask(const address_v4& addr)
-{
-  if (addr.is_class_a())
-    return address_v4(0xFF000000);
-  if (addr.is_class_b())
-    return address_v4(0xFFFF0000);
-  if (addr.is_class_c())
-    return address_v4(0xFFFFFF00);
-  return address_v4(0xFFFFFFFF);
-}
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IP_IMPL_ADDRESS_V4_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/impl/address_v6.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/impl/address_v6.hpp
deleted file mode 100644
index 326de7a..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/impl/address_v6.hpp
+++ /dev/null
@@ -1,53 +0,0 @@
-//
-// ip/impl/address_v6.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IP_IMPL_ADDRESS_V6_HPP
-#define ASIO_IP_IMPL_ADDRESS_V6_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-#include "asio/detail/throw_error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-template <typename Elem, typename Traits>
-std::basic_ostream<Elem, Traits>& operator<<(
-    std::basic_ostream<Elem, Traits>& os, const address_v6& addr)
-{
-  asio::error_code ec;
-  std::string s = addr.to_string(ec);
-  if (ec)
-  {
-    if (os.exceptions() & std::basic_ostream<Elem, Traits>::failbit)
-      asio::detail::throw_error(ec);
-    else
-      os.setstate(std::basic_ostream<Elem, Traits>::failbit);
-  }
-  else
-    for (std::string::iterator i = s.begin(); i != s.end(); ++i)
-      os << os.widen(*i);
-  return os;
-}
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-#endif // ASIO_IP_IMPL_ADDRESS_V6_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/impl/address_v6.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/impl/address_v6.ipp
deleted file mode 100644
index bf4103b..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/impl/address_v6.ipp
+++ /dev/null
@@ -1,298 +0,0 @@
-//
-// ip/impl/address_v6.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IP_IMPL_ADDRESS_V6_IPP
-#define ASIO_IP_IMPL_ADDRESS_V6_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cstring>
-#include <stdexcept>
-#include <typeinfo>
-#include "asio/detail/socket_ops.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/detail/throw_exception.hpp"
-#include "asio/error.hpp"
-#include "asio/ip/address_v6.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-address_v6::address_v6()
-  : addr_(),
-    scope_id_(0)
-{
-}
-
-address_v6::address_v6(const address_v6::bytes_type& bytes,
-    unsigned long scope)
-  : scope_id_(scope)
-{
-#if UCHAR_MAX > 0xFF
-  for (std::size_t i = 0; i < bytes.size(); ++i)
-  {
-    if (bytes[i] > 0xFF)
-    {
-      std::out_of_range ex("address_v6 from bytes_type");
-      asio::detail::throw_exception(ex);
-    }
-  }
-#endif // UCHAR_MAX > 0xFF
-
-  using namespace std; // For memcpy.
-  memcpy(addr_.s6_addr, bytes.data(), 16);
-}
-
-address_v6::address_v6(const address_v6& other)
-  : addr_(other.addr_),
-    scope_id_(other.scope_id_)
-{
-}
-
-#if defined(ASIO_HAS_MOVE)
-address_v6::address_v6(address_v6&& other)
-  : addr_(other.addr_),
-    scope_id_(other.scope_id_)
-{
-}
-#endif // defined(ASIO_HAS_MOVE)
-
-address_v6& address_v6::operator=(const address_v6& other)
-{
-  addr_ = other.addr_;
-  scope_id_ = other.scope_id_;
-  return *this;
-}
-
-#if defined(ASIO_HAS_MOVE)
-address_v6& address_v6::operator=(address_v6&& other)
-{
-  addr_ = other.addr_;
-  scope_id_ = other.scope_id_;
-  return *this;
-}
-#endif // defined(ASIO_HAS_MOVE)
-
-address_v6::bytes_type address_v6::to_bytes() const
-{
-  using namespace std; // For memcpy.
-  bytes_type bytes;
-#if defined(ASIO_HAS_STD_ARRAY)
-  memcpy(bytes.data(), addr_.s6_addr, 16);
-#else // defined(ASIO_HAS_STD_ARRAY)
-  memcpy(bytes.elems, addr_.s6_addr, 16);
-#endif // defined(ASIO_HAS_STD_ARRAY)
-  return bytes;
-}
-
-std::string address_v6::to_string() const
-{
-  asio::error_code ec;
-  std::string addr = to_string(ec);
-  asio::detail::throw_error(ec);
-  return addr;
-}
-
-std::string address_v6::to_string(asio::error_code& ec) const
-{
-  char addr_str[asio::detail::max_addr_v6_str_len];
-  const char* addr =
-    asio::detail::socket_ops::inet_ntop(
-        ASIO_OS_DEF(AF_INET6), &addr_, addr_str,
-        asio::detail::max_addr_v6_str_len, scope_id_, ec);
-  if (addr == 0)
-    return std::string();
-  return addr;
-}
-
-address_v6 address_v6::from_string(const char* str)
-{
-  asio::error_code ec;
-  address_v6 addr = from_string(str, ec);
-  asio::detail::throw_error(ec);
-  return addr;
-}
-
-address_v6 address_v6::from_string(
-    const char* str, asio::error_code& ec)
-{
-  address_v6 tmp;
-  if (asio::detail::socket_ops::inet_pton(
-        ASIO_OS_DEF(AF_INET6), str, &tmp.addr_, &tmp.scope_id_, ec) <= 0)
-    return address_v6();
-  return tmp;
-}
-
-address_v6 address_v6::from_string(const std::string& str)
-{
-  return from_string(str.c_str());
-}
-
-address_v6 address_v6::from_string(
-    const std::string& str, asio::error_code& ec)
-{
-  return from_string(str.c_str(), ec);
-}
-
-address_v4 address_v6::to_v4() const
-{
-  if (!is_v4_mapped() && !is_v4_compatible())
-  {
-    std::bad_cast ex;
-    asio::detail::throw_exception(ex);
-  }
-
-  address_v4::bytes_type v4_bytes = { { addr_.s6_addr[12],
-    addr_.s6_addr[13], addr_.s6_addr[14], addr_.s6_addr[15] } };
-  return address_v4(v4_bytes);
-}
-
-bool address_v6::is_loopback() const
-{
-  return ((addr_.s6_addr[0] == 0) && (addr_.s6_addr[1] == 0)
-      && (addr_.s6_addr[2] == 0) && (addr_.s6_addr[3] == 0)
-      && (addr_.s6_addr[4] == 0) && (addr_.s6_addr[5] == 0)
-      && (addr_.s6_addr[6] == 0) && (addr_.s6_addr[7] == 0)
-      && (addr_.s6_addr[8] == 0) && (addr_.s6_addr[9] == 0)
-      && (addr_.s6_addr[10] == 0) && (addr_.s6_addr[11] == 0)
-      && (addr_.s6_addr[12] == 0) && (addr_.s6_addr[13] == 0)
-      && (addr_.s6_addr[14] == 0) && (addr_.s6_addr[15] == 1));
-}
-
-bool address_v6::is_unspecified() const
-{
-  return ((addr_.s6_addr[0] == 0) && (addr_.s6_addr[1] == 0)
-      && (addr_.s6_addr[2] == 0) && (addr_.s6_addr[3] == 0)
-      && (addr_.s6_addr[4] == 0) && (addr_.s6_addr[5] == 0)
-      && (addr_.s6_addr[6] == 0) && (addr_.s6_addr[7] == 0)
-      && (addr_.s6_addr[8] == 0) && (addr_.s6_addr[9] == 0)
-      && (addr_.s6_addr[10] == 0) && (addr_.s6_addr[11] == 0)
-      && (addr_.s6_addr[12] == 0) && (addr_.s6_addr[13] == 0)
-      && (addr_.s6_addr[14] == 0) && (addr_.s6_addr[15] == 0));
-}
-
-bool address_v6::is_link_local() const
-{
-  return ((addr_.s6_addr[0] == 0xfe) && ((addr_.s6_addr[1] & 0xc0) == 0x80));
-}
-
-bool address_v6::is_site_local() const
-{
-  return ((addr_.s6_addr[0] == 0xfe) && ((addr_.s6_addr[1] & 0xc0) == 0xc0));
-}
-
-bool address_v6::is_v4_mapped() const
-{
-  return ((addr_.s6_addr[0] == 0) && (addr_.s6_addr[1] == 0)
-      && (addr_.s6_addr[2] == 0) && (addr_.s6_addr[3] == 0)
-      && (addr_.s6_addr[4] == 0) && (addr_.s6_addr[5] == 0)
-      && (addr_.s6_addr[6] == 0) && (addr_.s6_addr[7] == 0)
-      && (addr_.s6_addr[8] == 0) && (addr_.s6_addr[9] == 0)
-      && (addr_.s6_addr[10] == 0xff) && (addr_.s6_addr[11] == 0xff));
-}
-
-bool address_v6::is_v4_compatible() const
-{
-  return ((addr_.s6_addr[0] == 0) && (addr_.s6_addr[1] == 0)
-      && (addr_.s6_addr[2] == 0) && (addr_.s6_addr[3] == 0)
-      && (addr_.s6_addr[4] == 0) && (addr_.s6_addr[5] == 0)
-      && (addr_.s6_addr[6] == 0) && (addr_.s6_addr[7] == 0)
-      && (addr_.s6_addr[8] == 0) && (addr_.s6_addr[9] == 0)
-      && (addr_.s6_addr[10] == 0) && (addr_.s6_addr[11] == 0)
-      && !((addr_.s6_addr[12] == 0)
-        && (addr_.s6_addr[13] == 0)
-        && (addr_.s6_addr[14] == 0)
-        && ((addr_.s6_addr[15] == 0) || (addr_.s6_addr[15] == 1))));
-}
-
-bool address_v6::is_multicast() const
-{
-  return (addr_.s6_addr[0] == 0xff);
-}
-
-bool address_v6::is_multicast_global() const
-{
-  return ((addr_.s6_addr[0] == 0xff) && ((addr_.s6_addr[1] & 0x0f) == 0x0e));
-}
-
-bool address_v6::is_multicast_link_local() const
-{
-  return ((addr_.s6_addr[0] == 0xff) && ((addr_.s6_addr[1] & 0x0f) == 0x02));
-}
-
-bool address_v6::is_multicast_node_local() const
-{
-  return ((addr_.s6_addr[0] == 0xff) && ((addr_.s6_addr[1] & 0x0f) == 0x01));
-}
-
-bool address_v6::is_multicast_org_local() const
-{
-  return ((addr_.s6_addr[0] == 0xff) && ((addr_.s6_addr[1] & 0x0f) == 0x08));
-}
-
-bool address_v6::is_multicast_site_local() const
-{
-  return ((addr_.s6_addr[0] == 0xff) && ((addr_.s6_addr[1] & 0x0f) == 0x05));
-}
-
-bool operator==(const address_v6& a1, const address_v6& a2)
-{
-  using namespace std; // For memcmp.
-  return memcmp(&a1.addr_, &a2.addr_,
-      sizeof(asio::detail::in6_addr_type)) == 0
-    && a1.scope_id_ == a2.scope_id_;
-}
-
-bool operator<(const address_v6& a1, const address_v6& a2)
-{
-  using namespace std; // For memcmp.
-  int memcmp_result = memcmp(&a1.addr_, &a2.addr_,
-      sizeof(asio::detail::in6_addr_type));
-  if (memcmp_result < 0)
-    return true;
-  if (memcmp_result > 0)
-    return false;
-  return a1.scope_id_ < a2.scope_id_;
-}
-
-address_v6 address_v6::loopback()
-{
-  address_v6 tmp;
-  tmp.addr_.s6_addr[15] = 1;
-  return tmp;
-}
-
-address_v6 address_v6::v4_mapped(const address_v4& addr)
-{
-  address_v4::bytes_type v4_bytes = addr.to_bytes();
-  bytes_type v6_bytes = { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xFF, 0xFF,
-    v4_bytes[0], v4_bytes[1], v4_bytes[2], v4_bytes[3] } };
-  return address_v6(v6_bytes);
-}
-
-address_v6 address_v6::v4_compatible(const address_v4& addr)
-{
-  address_v4::bytes_type v4_bytes = addr.to_bytes();
-  bytes_type v6_bytes = { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    v4_bytes[0], v4_bytes[1], v4_bytes[2], v4_bytes[3] } };
-  return address_v6(v6_bytes);
-}
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IP_IMPL_ADDRESS_V6_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/impl/basic_endpoint.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/impl/basic_endpoint.hpp
deleted file mode 100644
index 2f15c4f..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/impl/basic_endpoint.hpp
+++ /dev/null
@@ -1,55 +0,0 @@
-//
-// ip/impl/basic_endpoint.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IP_IMPL_BASIC_ENDPOINT_HPP
-#define ASIO_IP_IMPL_BASIC_ENDPOINT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-#include "asio/detail/throw_error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-template <typename Elem, typename Traits, typename InternetProtocol>
-std::basic_ostream<Elem, Traits>& operator<<(
-    std::basic_ostream<Elem, Traits>& os,
-    const basic_endpoint<InternetProtocol>& endpoint)
-{
-  asio::ip::detail::endpoint tmp_ep(endpoint.address(), endpoint.port());
-  asio::error_code ec;
-  std::string s = tmp_ep.to_string(ec);
-  if (ec)
-  {
-    if (os.exceptions() & std::basic_ostream<Elem, Traits>::failbit)
-      asio::detail::throw_error(ec);
-    else
-      os.setstate(std::basic_ostream<Elem, Traits>::failbit);
-  }
-  else
-    for (std::string::iterator i = s.begin(); i != s.end(); ++i)
-      os << os.widen(*i);
-  return os;
-}
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-#endif // ASIO_IP_IMPL_BASIC_ENDPOINT_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/impl/host_name.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/impl/host_name.ipp
deleted file mode 100644
index b1dc38e..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/impl/host_name.ipp
+++ /dev/null
@@ -1,54 +0,0 @@
-//
-// ip/impl/host_name.ipp
-// ~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IP_IMPL_HOST_NAME_IPP
-#define ASIO_IP_IMPL_HOST_NAME_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/detail/winsock_init.hpp"
-#include "asio/ip/host_name.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-std::string host_name()
-{
-  char name[1024];
-  asio::error_code ec;
-  if (asio::detail::socket_ops::gethostname(name, sizeof(name), ec) != 0)
-  {
-    asio::detail::throw_error(ec);
-    return std::string();
-  }
-  return std::string(name);
-}
-
-std::string host_name(asio::error_code& ec)
-{
-  char name[1024];
-  if (asio::detail::socket_ops::gethostname(name, sizeof(name), ec) != 0)
-    return std::string();
-  return std::string(name);
-}
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IP_IMPL_HOST_NAME_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/multicast.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/multicast.hpp
deleted file mode 100644
index 4af2c3a..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/multicast.hpp
+++ /dev/null
@@ -1,191 +0,0 @@
-//
-// ip/multicast.hpp
-// ~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IP_MULTICAST_HPP
-#define ASIO_IP_MULTICAST_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cstddef>
-#include "asio/ip/detail/socket_option.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-namespace multicast {
-
-/// Socket option to join a multicast group on a specified interface.
-/**
- * Implements the IPPROTO_IP/IP_ADD_MEMBERSHIP socket option.
- *
- * @par Examples
- * Setting the option to join a multicast group:
- * @code
- * asio::ip::udp::socket socket(io_service); 
- * ...
- * asio::ip::address multicast_address =
- *   asio::ip::address::from_string("225.0.0.1");
- * asio::ip::multicast::join_group option(multicast_address);
- * socket.set_option(option);
- * @endcode
- *
- * @par Concepts:
- * SettableSocketOption.
- */
-#if defined(GENERATING_DOCUMENTATION)
-typedef implementation_defined join_group;
-#else
-typedef asio::ip::detail::socket_option::multicast_request<
-  ASIO_OS_DEF(IPPROTO_IP),
-  ASIO_OS_DEF(IP_ADD_MEMBERSHIP),
-  ASIO_OS_DEF(IPPROTO_IPV6),
-  ASIO_OS_DEF(IPV6_JOIN_GROUP)> join_group;
-#endif
-
-/// Socket option to leave a multicast group on a specified interface.
-/**
- * Implements the IPPROTO_IP/IP_DROP_MEMBERSHIP socket option.
- *
- * @par Examples
- * Setting the option to leave a multicast group:
- * @code
- * asio::ip::udp::socket socket(io_service); 
- * ...
- * asio::ip::address multicast_address =
- *   asio::ip::address::from_string("225.0.0.1");
- * asio::ip::multicast::leave_group option(multicast_address);
- * socket.set_option(option);
- * @endcode
- *
- * @par Concepts:
- * SettableSocketOption.
- */
-#if defined(GENERATING_DOCUMENTATION)
-typedef implementation_defined leave_group;
-#else
-typedef asio::ip::detail::socket_option::multicast_request<
-  ASIO_OS_DEF(IPPROTO_IP),
-  ASIO_OS_DEF(IP_DROP_MEMBERSHIP),
-  ASIO_OS_DEF(IPPROTO_IPV6),
-  ASIO_OS_DEF(IPV6_LEAVE_GROUP)> leave_group;
-#endif
-
-/// Socket option for local interface to use for outgoing multicast packets.
-/**
- * Implements the IPPROTO_IP/IP_MULTICAST_IF socket option.
- *
- * @par Examples
- * Setting the option:
- * @code
- * asio::ip::udp::socket socket(io_service); 
- * ...
- * asio::ip::address_v4 local_interface =
- *   asio::ip::address_v4::from_string("1.2.3.4");
- * asio::ip::multicast::outbound_interface option(local_interface);
- * socket.set_option(option);
- * @endcode
- *
- * @par Concepts:
- * SettableSocketOption.
- */
-#if defined(GENERATING_DOCUMENTATION)
-typedef implementation_defined outbound_interface;
-#else
-typedef asio::ip::detail::socket_option::network_interface<
-  ASIO_OS_DEF(IPPROTO_IP),
-  ASIO_OS_DEF(IP_MULTICAST_IF),
-  ASIO_OS_DEF(IPPROTO_IPV6),
-  ASIO_OS_DEF(IPV6_MULTICAST_IF)> outbound_interface;
-#endif
-
-/// Socket option for time-to-live associated with outgoing multicast packets.
-/**
- * Implements the IPPROTO_IP/IP_MULTICAST_TTL socket option.
- *
- * @par Examples
- * Setting the option:
- * @code
- * asio::ip::udp::socket socket(io_service); 
- * ...
- * asio::ip::multicast::hops option(4);
- * socket.set_option(option);
- * @endcode
- *
- * @par
- * Getting the current option value:
- * @code
- * asio::ip::udp::socket socket(io_service); 
- * ...
- * asio::ip::multicast::hops option;
- * socket.get_option(option);
- * int ttl = option.value();
- * @endcode
- *
- * @par Concepts:
- * GettableSocketOption, SettableSocketOption.
- */
-#if defined(GENERATING_DOCUMENTATION)
-typedef implementation_defined hops;
-#else
-typedef asio::ip::detail::socket_option::multicast_hops<
-  ASIO_OS_DEF(IPPROTO_IP),
-  ASIO_OS_DEF(IP_MULTICAST_TTL),
-  ASIO_OS_DEF(IPPROTO_IPV6),
-  ASIO_OS_DEF(IPV6_MULTICAST_HOPS)> hops;
-#endif
-
-/// Socket option determining whether outgoing multicast packets will be
-/// received on the same socket if it is a member of the multicast group.
-/**
- * Implements the IPPROTO_IP/IP_MULTICAST_LOOP socket option.
- *
- * @par Examples
- * Setting the option:
- * @code
- * asio::ip::udp::socket socket(io_service); 
- * ...
- * asio::ip::multicast::enable_loopback option(true);
- * socket.set_option(option);
- * @endcode
- *
- * @par
- * Getting the current option value:
- * @code
- * asio::ip::udp::socket socket(io_service); 
- * ...
- * asio::ip::multicast::enable_loopback option;
- * socket.get_option(option);
- * bool is_set = option.value();
- * @endcode
- *
- * @par Concepts:
- * GettableSocketOption, SettableSocketOption.
- */
-#if defined(GENERATING_DOCUMENTATION)
-typedef implementation_defined enable_loopback;
-#else
-typedef asio::ip::detail::socket_option::multicast_enable_loopback<
-  ASIO_OS_DEF(IPPROTO_IP),
-  ASIO_OS_DEF(IP_MULTICAST_LOOP),
-  ASIO_OS_DEF(IPPROTO_IPV6),
-  ASIO_OS_DEF(IPV6_MULTICAST_LOOP)> enable_loopback;
-#endif
-
-} // namespace multicast
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IP_MULTICAST_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/resolver_query_base.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/resolver_query_base.hpp
deleted file mode 100644
index bd1bde5..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/resolver_query_base.hpp
+++ /dev/null
@@ -1,130 +0,0 @@
-//
-// ip/resolver_query_base.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IP_RESOLVER_QUERY_BASE_HPP
-#define ASIO_IP_RESOLVER_QUERY_BASE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/socket_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-/// The resolver_query_base class is used as a base for the
-/// basic_resolver_query class templates to provide a common place to define
-/// the flag constants.
-class resolver_query_base
-{
-public:
-#if defined(GENERATING_DOCUMENTATION)
-  /// A bitmask type (C++ Std [lib.bitmask.types]).
-  typedef unspecified flags;
-
-  /// Determine the canonical name of the host specified in the query.
-  static const flags canonical_name = implementation_defined;
-
-  /// Indicate that returned endpoint is intended for use as a locally bound
-  /// socket endpoint.
-  static const flags passive = implementation_defined;
-
-  /// Host name should be treated as a numeric string defining an IPv4 or IPv6
-  /// address and no name resolution should be attempted.
-  static const flags numeric_host = implementation_defined;
-
-  /// Service name should be treated as a numeric string defining a port number
-  /// and no name resolution should be attempted.
-  static const flags numeric_service = implementation_defined;
-
-  /// If the query protocol family is specified as IPv6, return IPv4-mapped
-  /// IPv6 addresses on finding no IPv6 addresses.
-  static const flags v4_mapped = implementation_defined;
-
-  /// If used with v4_mapped, return all matching IPv6 and IPv4 addresses.
-  static const flags all_matching = implementation_defined;
-
-  /// Only return IPv4 addresses if a non-loopback IPv4 address is configured
-  /// for the system. Only return IPv6 addresses if a non-loopback IPv6 address
-  /// is configured for the system.
-  static const flags address_configured = implementation_defined;
-#else
-  enum flags
-  {
-    canonical_name = ASIO_OS_DEF(AI_CANONNAME),
-    passive = ASIO_OS_DEF(AI_PASSIVE),
-    numeric_host = ASIO_OS_DEF(AI_NUMERICHOST),
-    numeric_service = ASIO_OS_DEF(AI_NUMERICSERV),
-    v4_mapped = ASIO_OS_DEF(AI_V4MAPPED),
-    all_matching = ASIO_OS_DEF(AI_ALL),
-    address_configured = ASIO_OS_DEF(AI_ADDRCONFIG)
-  };
-
-  // Implement bitmask operations as shown in C++ Std [lib.bitmask.types].
-
-  friend flags operator&(flags x, flags y)
-  {
-    return static_cast<flags>(
-        static_cast<unsigned int>(x) & static_cast<unsigned int>(y));
-  }
-
-  friend flags operator|(flags x, flags y)
-  {
-    return static_cast<flags>(
-        static_cast<unsigned int>(x) | static_cast<unsigned int>(y));
-  }
-
-  friend flags operator^(flags x, flags y)
-  {
-    return static_cast<flags>(
-        static_cast<unsigned int>(x) ^ static_cast<unsigned int>(y));
-  }
-
-  friend flags operator~(flags x)
-  {
-    return static_cast<flags>(~static_cast<unsigned int>(x));
-  }
-
-  friend flags& operator&=(flags& x, flags y)
-  {
-    x = x & y;
-    return x;
-  }
-
-  friend flags& operator|=(flags& x, flags y)
-  {
-    x = x | y;
-    return x;
-  }
-
-  friend flags& operator^=(flags& x, flags y)
-  {
-    x = x ^ y;
-    return x;
-  }
-#endif
-
-protected:
-  /// Protected destructor to prevent deletion through this type.
-  ~resolver_query_base()
-  {
-  }
-};
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IP_RESOLVER_QUERY_BASE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/resolver_service.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/resolver_service.hpp
deleted file mode 100644
index 7f0b6aa..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/resolver_service.hpp
+++ /dev/null
@@ -1,176 +0,0 @@
-//
-// ip/resolver_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IP_RESOLVER_SERVICE_HPP
-#define ASIO_IP_RESOLVER_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/async_result.hpp"
-#include "asio/error_code.hpp"
-#include "asio/io_service.hpp"
-#include "asio/ip/basic_resolver_iterator.hpp"
-#include "asio/ip/basic_resolver_query.hpp"
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-# include "asio/detail/winrt_resolver_service.hpp"
-#else
-# include "asio/detail/resolver_service.hpp"
-#endif
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-/// Default service implementation for a resolver.
-template <typename InternetProtocol>
-class resolver_service
-#if defined(GENERATING_DOCUMENTATION)
-  : public asio::io_service::service
-#else
-  : public asio::detail::service_base<
-      resolver_service<InternetProtocol> >
-#endif
-{
-public:
-#if defined(GENERATING_DOCUMENTATION)
-  /// The unique service identifier.
-  static asio::io_service::id id;
-#endif
-
-  /// The protocol type.
-  typedef InternetProtocol protocol_type;
-
-  /// The endpoint type.
-  typedef typename InternetProtocol::endpoint endpoint_type;
-
-  /// The query type.
-  typedef basic_resolver_query<InternetProtocol> query_type;
-
-  /// The iterator type.
-  typedef basic_resolver_iterator<InternetProtocol> iterator_type;
-
-private:
-  // The type of the platform-specific implementation.
-#if defined(ASIO_WINDOWS_RUNTIME)
-  typedef asio::detail::winrt_resolver_service<InternetProtocol>
-    service_impl_type;
-#else
-  typedef asio::detail::resolver_service<InternetProtocol>
-    service_impl_type;
-#endif
-
-public:
-  /// The type of a resolver implementation.
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined implementation_type;
-#else
-  typedef typename service_impl_type::implementation_type implementation_type;
-#endif
-
-  /// Construct a new resolver service for the specified io_service.
-  explicit resolver_service(asio::io_service& io_service)
-    : asio::detail::service_base<
-        resolver_service<InternetProtocol> >(io_service),
-      service_impl_(io_service)
-  {
-  }
-
-  /// Construct a new resolver implementation.
-  void construct(implementation_type& impl)
-  {
-    service_impl_.construct(impl);
-  }
-
-  /// Destroy a resolver implementation.
-  void destroy(implementation_type& impl)
-  {
-    service_impl_.destroy(impl);
-  }
-
-  /// Cancel pending asynchronous operations.
-  void cancel(implementation_type& impl)
-  {
-    service_impl_.cancel(impl);
-  }
-
-  /// Resolve a query to a list of entries.
-  iterator_type resolve(implementation_type& impl, const query_type& query,
-      asio::error_code& ec)
-  {
-    return service_impl_.resolve(impl, query, ec);
-  }
-
-  /// Asynchronously resolve a query to a list of entries.
-  template <typename ResolveHandler>
-  ASIO_INITFN_RESULT_TYPE(ResolveHandler,
-      void (asio::error_code, iterator_type))
-  async_resolve(implementation_type& impl, const query_type& query,
-      ASIO_MOVE_ARG(ResolveHandler) handler)
-  {
-    asio::detail::async_result_init<
-      ResolveHandler, void (asio::error_code, iterator_type)> init(
-        ASIO_MOVE_CAST(ResolveHandler)(handler));
-
-    service_impl_.async_resolve(impl, query, init.handler);
-
-    return init.result.get();
-  }
-
-  /// Resolve an endpoint to a list of entries.
-  iterator_type resolve(implementation_type& impl,
-      const endpoint_type& endpoint, asio::error_code& ec)
-  {
-    return service_impl_.resolve(impl, endpoint, ec);
-  }
-
-  /// Asynchronously resolve an endpoint to a list of entries.
-  template <typename ResolveHandler>
-  ASIO_INITFN_RESULT_TYPE(ResolveHandler,
-      void (asio::error_code, iterator_type))
-  async_resolve(implementation_type& impl, const endpoint_type& endpoint,
-      ASIO_MOVE_ARG(ResolveHandler) handler)
-  {
-    asio::detail::async_result_init<
-      ResolveHandler, void (asio::error_code, iterator_type)> init(
-        ASIO_MOVE_CAST(ResolveHandler)(handler));
-
-    service_impl_.async_resolve(impl, endpoint, init.handler);
-
-    return init.result.get();
-  }
-
-private:
-  // Destroy all user-defined handler objects owned by the service.
-  void shutdown_service()
-  {
-    service_impl_.shutdown_service();
-  }
-
-  // Perform any fork-related housekeeping.
-  void fork_service(asio::io_service::fork_event event)
-  {
-    service_impl_.fork_service(event);
-  }
-
-  // The platform-specific implementation.
-  service_impl_type service_impl_;
-};
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IP_RESOLVER_SERVICE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/tcp.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/tcp.hpp
deleted file mode 100644
index 90009f4..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/tcp.hpp
+++ /dev/null
@@ -1,155 +0,0 @@
-//
-// ip/tcp.hpp
-// ~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IP_TCP_HPP
-#define ASIO_IP_TCP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/basic_socket_acceptor.hpp"
-#include "asio/basic_socket_iostream.hpp"
-#include "asio/basic_stream_socket.hpp"
-#include "asio/detail/socket_option.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/ip/basic_endpoint.hpp"
-#include "asio/ip/basic_resolver.hpp"
-#include "asio/ip/basic_resolver_iterator.hpp"
-#include "asio/ip/basic_resolver_query.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-/// Encapsulates the flags needed for TCP.
-/**
- * The asio::ip::tcp class contains flags necessary for TCP sockets.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Safe.
- *
- * @par Concepts:
- * Protocol, InternetProtocol.
- */
-class tcp
-{
-public:
-  /// The type of a TCP endpoint.
-  typedef basic_endpoint<tcp> endpoint;
-
-  /// Construct to represent the IPv4 TCP protocol.
-  static tcp v4()
-  {
-    return tcp(ASIO_OS_DEF(AF_INET));
-  }
-
-  /// Construct to represent the IPv6 TCP protocol.
-  static tcp v6()
-  {
-    return tcp(ASIO_OS_DEF(AF_INET6));
-  }
-
-  /// Obtain an identifier for the type of the protocol.
-  int type() const
-  {
-    return ASIO_OS_DEF(SOCK_STREAM);
-  }
-
-  /// Obtain an identifier for the protocol.
-  int protocol() const
-  {
-    return ASIO_OS_DEF(IPPROTO_TCP);
-  }
-
-  /// Obtain an identifier for the protocol family.
-  int family() const
-  {
-    return family_;
-  }
-
-  /// The TCP socket type.
-  typedef basic_stream_socket<tcp> socket;
-
-  /// The TCP acceptor type.
-  typedef basic_socket_acceptor<tcp> acceptor;
-
-  /// The TCP resolver type.
-  typedef basic_resolver<tcp> resolver;
-
-#if !defined(ASIO_NO_IOSTREAM)
-  /// The TCP iostream type.
-  typedef basic_socket_iostream<tcp> iostream;
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-  /// Socket option for disabling the Nagle algorithm.
-  /**
-   * Implements the IPPROTO_TCP/TCP_NODELAY socket option.
-   *
-   * @par Examples
-   * Setting the option:
-   * @code
-   * asio::ip::tcp::socket socket(io_service); 
-   * ...
-   * asio::ip::tcp::no_delay option(true);
-   * socket.set_option(option);
-   * @endcode
-   *
-   * @par
-   * Getting the current option value:
-   * @code
-   * asio::ip::tcp::socket socket(io_service); 
-   * ...
-   * asio::ip::tcp::no_delay option;
-   * socket.get_option(option);
-   * bool is_set = option.value();
-   * @endcode
-   *
-   * @par Concepts:
-   * Socket_Option, Boolean_Socket_Option.
-   */
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined no_delay;
-#else
-  typedef asio::detail::socket_option::boolean<
-    ASIO_OS_DEF(IPPROTO_TCP), ASIO_OS_DEF(TCP_NODELAY)> no_delay;
-#endif
-
-  /// Compare two protocols for equality.
-  friend bool operator==(const tcp& p1, const tcp& p2)
-  {
-    return p1.family_ == p2.family_;
-  }
-
-  /// Compare two protocols for inequality.
-  friend bool operator!=(const tcp& p1, const tcp& p2)
-  {
-    return p1.family_ != p2.family_;
-  }
-
-private:
-  // Construct with a specific family.
-  explicit tcp(int protocol_family)
-    : family_(protocol_family)
-  {
-  }
-
-  int family_;
-};
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IP_TCP_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/udp.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/udp.hpp
deleted file mode 100644
index 35c3f95..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/udp.hpp
+++ /dev/null
@@ -1,111 +0,0 @@
-//
-// ip/udp.hpp
-// ~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IP_UDP_HPP
-#define ASIO_IP_UDP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/basic_datagram_socket.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/ip/basic_endpoint.hpp"
-#include "asio/ip/basic_resolver.hpp"
-#include "asio/ip/basic_resolver_iterator.hpp"
-#include "asio/ip/basic_resolver_query.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-/// Encapsulates the flags needed for UDP.
-/**
- * The asio::ip::udp class contains flags necessary for UDP sockets.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Safe.
- *
- * @par Concepts:
- * Protocol, InternetProtocol.
- */
-class udp
-{
-public:
-  /// The type of a UDP endpoint.
-  typedef basic_endpoint<udp> endpoint;
-
-  /// Construct to represent the IPv4 UDP protocol.
-  static udp v4()
-  {
-    return udp(ASIO_OS_DEF(AF_INET));
-  }
-
-  /// Construct to represent the IPv6 UDP protocol.
-  static udp v6()
-  {
-    return udp(ASIO_OS_DEF(AF_INET6));
-  }
-
-  /// Obtain an identifier for the type of the protocol.
-  int type() const
-  {
-    return ASIO_OS_DEF(SOCK_DGRAM);
-  }
-
-  /// Obtain an identifier for the protocol.
-  int protocol() const
-  {
-    return ASIO_OS_DEF(IPPROTO_UDP);
-  }
-
-  /// Obtain an identifier for the protocol family.
-  int family() const
-  {
-    return family_;
-  }
-
-  /// The UDP socket type.
-  typedef basic_datagram_socket<udp> socket;
-
-  /// The UDP resolver type.
-  typedef basic_resolver<udp> resolver;
-
-  /// Compare two protocols for equality.
-  friend bool operator==(const udp& p1, const udp& p2)
-  {
-    return p1.family_ == p2.family_;
-  }
-
-  /// Compare two protocols for inequality.
-  friend bool operator!=(const udp& p1, const udp& p2)
-  {
-    return p1.family_ != p2.family_;
-  }
-
-private:
-  // Construct with a specific family.
-  explicit udp(int protocol_family)
-    : family_(protocol_family)
-  {
-  }
-
-  int family_;
-};
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IP_UDP_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/unicast.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/unicast.hpp
deleted file mode 100644
index b07d10b..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/unicast.hpp
+++ /dev/null
@@ -1,70 +0,0 @@
-//
-// ip/unicast.hpp
-// ~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IP_UNICAST_HPP
-#define ASIO_IP_UNICAST_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cstddef>
-#include "asio/ip/detail/socket_option.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-namespace unicast {
-
-/// Socket option for time-to-live associated with outgoing unicast packets.
-/**
- * Implements the IPPROTO_IP/IP_UNICAST_TTL socket option.
- *
- * @par Examples
- * Setting the option:
- * @code
- * asio::ip::udp::socket socket(io_service); 
- * ...
- * asio::ip::unicast::hops option(4);
- * socket.set_option(option);
- * @endcode
- *
- * @par
- * Getting the current option value:
- * @code
- * asio::ip::udp::socket socket(io_service); 
- * ...
- * asio::ip::unicast::hops option;
- * socket.get_option(option);
- * int ttl = option.value();
- * @endcode
- *
- * @par Concepts:
- * GettableSocketOption, SettableSocketOption.
- */
-#if defined(GENERATING_DOCUMENTATION)
-typedef implementation_defined hops;
-#else
-typedef asio::ip::detail::socket_option::unicast_hops<
-  ASIO_OS_DEF(IPPROTO_IP),
-  ASIO_OS_DEF(IP_TTL),
-  ASIO_OS_DEF(IPPROTO_IPV6),
-  ASIO_OS_DEF(IPV6_UNICAST_HOPS)> hops;
-#endif
-
-} // namespace unicast
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IP_UNICAST_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/v6_only.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/v6_only.hpp
deleted file mode 100644
index 9b51097..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ip/v6_only.hpp
+++ /dev/null
@@ -1,69 +0,0 @@
-//
-// ip/v6_only.hpp
-// ~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IP_V6_ONLY_HPP
-#define ASIO_IP_V6_ONLY_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/socket_option.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ip {
-
-/// Socket option for determining whether an IPv6 socket supports IPv6
-/// communication only.
-/**
- * Implements the IPPROTO_IPV6/IP_V6ONLY socket option.
- *
- * @par Examples
- * Setting the option:
- * @code
- * asio::ip::tcp::socket socket(io_service); 
- * ...
- * asio::ip::v6_only option(true);
- * socket.set_option(option);
- * @endcode
- *
- * @par
- * Getting the current option value:
- * @code
- * asio::ip::tcp::socket socket(io_service); 
- * ...
- * asio::ip::v6_only option;
- * socket.get_option(option);
- * bool v6_only = option.value();
- * @endcode
- *
- * @par Concepts:
- * GettableSocketOption, SettableSocketOption.
- */
-#if defined(GENERATING_DOCUMENTATION)
-typedef implementation_defined v6_only;
-#elif defined(IPV6_V6ONLY)
-typedef asio::detail::socket_option::boolean<
-    IPPROTO_IPV6, IPV6_V6ONLY> v6_only;
-#else
-typedef asio::detail::socket_option::boolean<
-    asio::detail::custom_socket_option_level,
-    asio::detail::always_fail_option> v6_only;
-#endif
-
-} // namespace ip
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IP_V6_ONLY_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/is_read_buffered.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/is_read_buffered.hpp
deleted file mode 100644
index 5fcfa94..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/is_read_buffered.hpp
+++ /dev/null
@@ -1,59 +0,0 @@
-//
-// is_read_buffered.hpp
-// ~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IS_READ_BUFFERED_HPP
-#define ASIO_IS_READ_BUFFERED_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/buffered_read_stream_fwd.hpp"
-#include "asio/buffered_stream_fwd.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-namespace detail {
-
-template <typename Stream>
-char is_read_buffered_helper(buffered_stream<Stream>* s);
-
-template <typename Stream>
-char is_read_buffered_helper(buffered_read_stream<Stream>* s);
-
-struct is_read_buffered_big_type { char data[10]; };
-is_read_buffered_big_type is_read_buffered_helper(...);
-
-} // namespace detail
-
-/// The is_read_buffered class is a traits class that may be used to determine
-/// whether a stream type supports buffering of read data.
-template <typename Stream>
-class is_read_buffered
-{
-public:
-#if defined(GENERATING_DOCUMENTATION)
-  /// The value member is true only if the Stream type supports buffering of
-  /// read data.
-  static const bool value;
-#else
-  ASIO_STATIC_CONSTANT(bool,
-      value = sizeof(detail::is_read_buffered_helper((Stream*)0)) == 1);
-#endif
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IS_READ_BUFFERED_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/is_write_buffered.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/is_write_buffered.hpp
deleted file mode 100644
index 2f71b1d..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/is_write_buffered.hpp
+++ /dev/null
@@ -1,59 +0,0 @@
-//
-// is_write_buffered.hpp
-// ~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_IS_WRITE_BUFFERED_HPP
-#define ASIO_IS_WRITE_BUFFERED_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/buffered_stream_fwd.hpp"
-#include "asio/buffered_write_stream_fwd.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-namespace detail {
-
-template <typename Stream>
-char is_write_buffered_helper(buffered_stream<Stream>* s);
-
-template <typename Stream>
-char is_write_buffered_helper(buffered_write_stream<Stream>* s);
-
-struct is_write_buffered_big_type { char data[10]; };
-is_write_buffered_big_type is_write_buffered_helper(...);
-
-} // namespace detail
-
-/// The is_write_buffered class is a traits class that may be used to determine
-/// whether a stream type supports buffering of written data.
-template <typename Stream>
-class is_write_buffered
-{
-public:
-#if defined(GENERATING_DOCUMENTATION)
-  /// The value member is true only if the Stream type supports buffering of
-  /// written data.
-  static const bool value;
-#else
-  ASIO_STATIC_CONSTANT(bool,
-      value = sizeof(detail::is_write_buffered_helper((Stream*)0)) == 1);
-#endif
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_IS_WRITE_BUFFERED_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/local/basic_endpoint.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/local/basic_endpoint.hpp
deleted file mode 100644
index 9a19ab0..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/local/basic_endpoint.hpp
+++ /dev/null
@@ -1,239 +0,0 @@
-//
-// local/basic_endpoint.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Derived from a public domain implementation written by Daniel Casimiro.
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_LOCAL_BASIC_ENDPOINT_HPP
-#define ASIO_LOCAL_BASIC_ENDPOINT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_LOCAL_SOCKETS) \
-  || defined(GENERATING_DOCUMENTATION)
-
-#include "asio/local/detail/endpoint.hpp"
-
-#if !defined(ASIO_NO_IOSTREAM)
-# include <iosfwd>
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace local {
-
-/// Describes an endpoint for a UNIX socket.
-/**
- * The asio::local::basic_endpoint class template describes an endpoint
- * that may be associated with a particular UNIX socket.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- *
- * @par Concepts:
- * Endpoint.
- */
-template <typename Protocol>
-class basic_endpoint
-{
-public:
-  /// The protocol type associated with the endpoint.
-  typedef Protocol protocol_type;
-
-  /// The type of the endpoint structure. This type is dependent on the
-  /// underlying implementation of the socket layer.
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined data_type;
-#else
-  typedef asio::detail::socket_addr_type data_type;
-#endif
-
-  /// Default constructor.
-  basic_endpoint()
-  {
-  }
-
-  /// Construct an endpoint using the specified path name.
-  basic_endpoint(const char* path_name)
-    : impl_(path_name)
-  {
-  }
-
-  /// Construct an endpoint using the specified path name.
-  basic_endpoint(const std::string& path_name)
-    : impl_(path_name)
-  {
-  }
-
-  /// Copy constructor.
-  basic_endpoint(const basic_endpoint& other)
-    : impl_(other.impl_)
-  {
-  }
-
-#if defined(ASIO_HAS_MOVE)
-  /// Move constructor.
-  basic_endpoint(basic_endpoint&& other)
-    : impl_(other.impl_)
-  {
-  }
-#endif // defined(ASIO_HAS_MOVE)
-
-  /// Assign from another endpoint.
-  basic_endpoint& operator=(const basic_endpoint& other)
-  {
-    impl_ = other.impl_;
-    return *this;
-  }
-
-#if defined(ASIO_HAS_MOVE)
-  /// Move-assign from another endpoint.
-  basic_endpoint& operator=(basic_endpoint&& other)
-  {
-    impl_ = other.impl_;
-    return *this;
-  }
-#endif // defined(ASIO_HAS_MOVE)
-
-  /// The protocol associated with the endpoint.
-  protocol_type protocol() const
-  {
-    return protocol_type();
-  }
-
-  /// Get the underlying endpoint in the native type.
-  data_type* data()
-  {
-    return impl_.data();
-  }
-
-  /// Get the underlying endpoint in the native type.
-  const data_type* data() const
-  {
-    return impl_.data();
-  }
-
-  /// Get the underlying size of the endpoint in the native type.
-  std::size_t size() const
-  {
-    return impl_.size();
-  }
-
-  /// Set the underlying size of the endpoint in the native type.
-  void resize(std::size_t new_size)
-  {
-    impl_.resize(new_size);
-  }
-
-  /// Get the capacity of the endpoint in the native type.
-  std::size_t capacity() const
-  {
-    return impl_.capacity();
-  }
-
-  /// Get the path associated with the endpoint.
-  std::string path() const
-  {
-    return impl_.path();
-  }
-
-  /// Set the path associated with the endpoint.
-  void path(const char* p)
-  {
-    impl_.path(p);
-  }
-
-  /// Set the path associated with the endpoint.
-  void path(const std::string& p)
-  {
-    impl_.path(p);
-  }
-
-  /// Compare two endpoints for equality.
-  friend bool operator==(const basic_endpoint<Protocol>& e1,
-      const basic_endpoint<Protocol>& e2)
-  {
-    return e1.impl_ == e2.impl_;
-  }
-
-  /// Compare two endpoints for inequality.
-  friend bool operator!=(const basic_endpoint<Protocol>& e1,
-      const basic_endpoint<Protocol>& e2)
-  {
-    return !(e1.impl_ == e2.impl_);
-  }
-
-  /// Compare endpoints for ordering.
-  friend bool operator<(const basic_endpoint<Protocol>& e1,
-      const basic_endpoint<Protocol>& e2)
-  {
-    return e1.impl_ < e2.impl_;
-  }
-
-  /// Compare endpoints for ordering.
-  friend bool operator>(const basic_endpoint<Protocol>& e1,
-      const basic_endpoint<Protocol>& e2)
-  {
-    return e2.impl_ < e1.impl_;
-  }
-
-  /// Compare endpoints for ordering.
-  friend bool operator<=(const basic_endpoint<Protocol>& e1,
-      const basic_endpoint<Protocol>& e2)
-  {
-    return !(e2 < e1);
-  }
-
-  /// Compare endpoints for ordering.
-  friend bool operator>=(const basic_endpoint<Protocol>& e1,
-      const basic_endpoint<Protocol>& e2)
-  {
-    return !(e1 < e2);
-  }
-
-private:
-  // The underlying UNIX domain endpoint.
-  asio::local::detail::endpoint impl_;
-};
-
-/// Output an endpoint as a string.
-/**
- * Used to output a human-readable string for a specified endpoint.
- *
- * @param os The output stream to which the string will be written.
- *
- * @param endpoint The endpoint to be written.
- *
- * @return The output stream.
- *
- * @relates asio::local::basic_endpoint
- */
-template <typename Elem, typename Traits, typename Protocol>
-std::basic_ostream<Elem, Traits>& operator<<(
-    std::basic_ostream<Elem, Traits>& os,
-    const basic_endpoint<Protocol>& endpoint)
-{
-  os << endpoint.path();
-  return os;
-}
-
-} // namespace local
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_LOCAL_SOCKETS)
-       //   || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_LOCAL_BASIC_ENDPOINT_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/local/connect_pair.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/local/connect_pair.hpp
deleted file mode 100644
index 2d785d5..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/local/connect_pair.hpp
+++ /dev/null
@@ -1,104 +0,0 @@
-//
-// local/connect_pair.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_LOCAL_CONNECT_PAIR_HPP
-#define ASIO_LOCAL_CONNECT_PAIR_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_LOCAL_SOCKETS) \
-  || defined(GENERATING_DOCUMENTATION)
-
-#include "asio/basic_socket.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-#include "asio/local/basic_endpoint.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace local {
-
-/// Create a pair of connected sockets.
-template <typename Protocol, typename SocketService1, typename SocketService2>
-void connect_pair(
-    basic_socket<Protocol, SocketService1>& socket1,
-    basic_socket<Protocol, SocketService2>& socket2);
-
-/// Create a pair of connected sockets.
-template <typename Protocol, typename SocketService1, typename SocketService2>
-asio::error_code connect_pair(
-    basic_socket<Protocol, SocketService1>& socket1,
-    basic_socket<Protocol, SocketService2>& socket2,
-    asio::error_code& ec);
-
-template <typename Protocol, typename SocketService1, typename SocketService2>
-inline void connect_pair(
-    basic_socket<Protocol, SocketService1>& socket1,
-    basic_socket<Protocol, SocketService2>& socket2)
-{
-  asio::error_code ec;
-  connect_pair(socket1, socket2, ec);
-  asio::detail::throw_error(ec, "connect_pair");
-}
-
-template <typename Protocol, typename SocketService1, typename SocketService2>
-inline asio::error_code connect_pair(
-    basic_socket<Protocol, SocketService1>& socket1,
-    basic_socket<Protocol, SocketService2>& socket2,
-    asio::error_code& ec)
-{
-  // Check that this function is only being used with a UNIX domain socket.
-  asio::local::basic_endpoint<Protocol>* tmp
-    = static_cast<typename Protocol::endpoint*>(0);
-  (void)tmp;
-
-  Protocol protocol;
-  asio::detail::socket_type sv[2];
-  if (asio::detail::socket_ops::socketpair(protocol.family(),
-        protocol.type(), protocol.protocol(), sv, ec)
-      == asio::detail::socket_error_retval)
-    return ec;
-
-  if (socket1.assign(protocol, sv[0], ec))
-  {
-    asio::error_code temp_ec;
-    asio::detail::socket_ops::state_type state[2] = { 0, 0 };
-    asio::detail::socket_ops::close(sv[0], state[0], true, temp_ec);
-    asio::detail::socket_ops::close(sv[1], state[1], true, temp_ec);
-    return ec;
-  }
-
-  if (socket2.assign(protocol, sv[1], ec))
-  {
-    asio::error_code temp_ec;
-    socket1.close(temp_ec);
-    asio::detail::socket_ops::state_type state = 0;
-    asio::detail::socket_ops::close(sv[1], state, true, temp_ec);
-    return ec;
-  }
-
-  return ec;
-}
-
-} // namespace local
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_LOCAL_SOCKETS)
-       //   || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_LOCAL_CONNECT_PAIR_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/local/datagram_protocol.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/local/datagram_protocol.hpp
deleted file mode 100644
index 3fa062c..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/local/datagram_protocol.hpp
+++ /dev/null
@@ -1,80 +0,0 @@
-//
-// local/datagram_protocol.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_LOCAL_DATAGRAM_PROTOCOL_HPP
-#define ASIO_LOCAL_DATAGRAM_PROTOCOL_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_LOCAL_SOCKETS) \
-  || defined(GENERATING_DOCUMENTATION)
-
-#include "asio/basic_datagram_socket.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/local/basic_endpoint.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace local {
-
-/// Encapsulates the flags needed for datagram-oriented UNIX sockets.
-/**
- * The asio::local::datagram_protocol class contains flags necessary for
- * datagram-oriented UNIX domain sockets.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Safe.
- *
- * @par Concepts:
- * Protocol.
- */
-class datagram_protocol
-{
-public:
-  /// Obtain an identifier for the type of the protocol.
-  int type() const
-  {
-    return SOCK_DGRAM;
-  }
-
-  /// Obtain an identifier for the protocol.
-  int protocol() const
-  {
-    return 0;
-  }
-
-  /// Obtain an identifier for the protocol family.
-  int family() const
-  {
-    return AF_UNIX;
-  }
-
-  /// The type of a UNIX domain endpoint.
-  typedef basic_endpoint<datagram_protocol> endpoint;
-
-  /// The UNIX domain socket type.
-  typedef basic_datagram_socket<datagram_protocol> socket;
-};
-
-} // namespace local
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_LOCAL_SOCKETS)
-       //   || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_LOCAL_DATAGRAM_PROTOCOL_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/local/detail/endpoint.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/local/detail/endpoint.hpp
deleted file mode 100644
index 43c6673..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/local/detail/endpoint.hpp
+++ /dev/null
@@ -1,133 +0,0 @@
-//
-// local/detail/endpoint.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Derived from a public domain implementation written by Daniel Casimiro.
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_LOCAL_DETAIL_ENDPOINT_HPP
-#define ASIO_LOCAL_DETAIL_ENDPOINT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_LOCAL_SOCKETS)
-
-#include <cstddef>
-#include <string>
-#include "asio/detail/socket_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace local {
-namespace detail {
-
-// Helper class for implementing a UNIX domain endpoint.
-class endpoint
-{
-public:
-  // Default constructor.
-  ASIO_DECL endpoint();
-
-  // Construct an endpoint using the specified path name.
-  ASIO_DECL endpoint(const char* path_name);
-
-  // Construct an endpoint using the specified path name.
-  ASIO_DECL endpoint(const std::string& path_name);
-
-  // Copy constructor.
-  endpoint(const endpoint& other)
-    : data_(other.data_),
-      path_length_(other.path_length_)
-  {
-  }
-
-  // Assign from another endpoint.
-  endpoint& operator=(const endpoint& other)
-  {
-    data_ = other.data_;
-    path_length_ = other.path_length_;
-    return *this;
-  }
-
-  // Get the underlying endpoint in the native type.
-  asio::detail::socket_addr_type* data()
-  {
-    return &data_.base;
-  }
-
-  // Get the underlying endpoint in the native type.
-  const asio::detail::socket_addr_type* data() const
-  {
-    return &data_.base;
-  }
-
-  // Get the underlying size of the endpoint in the native type.
-  std::size_t size() const
-  {
-    return path_length_
-      + offsetof(asio::detail::sockaddr_un_type, sun_path);
-  }
-
-  // Set the underlying size of the endpoint in the native type.
-  ASIO_DECL void resize(std::size_t size);
-
-  // Get the capacity of the endpoint in the native type.
-  std::size_t capacity() const
-  {
-    return sizeof(asio::detail::sockaddr_un_type);
-  }
-
-  // Get the path associated with the endpoint.
-  ASIO_DECL std::string path() const;
-
-  // Set the path associated with the endpoint.
-  ASIO_DECL void path(const char* p);
-
-  // Set the path associated with the endpoint.
-  ASIO_DECL void path(const std::string& p);
-
-  // Compare two endpoints for equality.
-  ASIO_DECL friend bool operator==(
-      const endpoint& e1, const endpoint& e2);
-
-  // Compare endpoints for ordering.
-  ASIO_DECL friend bool operator<(
-      const endpoint& e1, const endpoint& e2);
-
-private:
-  // The underlying UNIX socket address.
-  union data_union
-  {
-    asio::detail::socket_addr_type base;
-    asio::detail::sockaddr_un_type local;
-  } data_;
-
-  // The length of the path associated with the endpoint.
-  std::size_t path_length_;
-
-  // Initialise with a specified path.
-  ASIO_DECL void init(const char* path, std::size_t path_length);
-};
-
-} // namespace detail
-} // namespace local
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/local/detail/impl/endpoint.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_HAS_LOCAL_SOCKETS)
-
-#endif // ASIO_LOCAL_DETAIL_ENDPOINT_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/local/detail/impl/endpoint.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/local/detail/impl/endpoint.ipp
deleted file mode 100644
index aad7556..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/local/detail/impl/endpoint.ipp
+++ /dev/null
@@ -1,128 +0,0 @@
-//
-// local/detail/impl/endpoint.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Derived from a public domain implementation written by Daniel Casimiro.
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_LOCAL_DETAIL_IMPL_ENDPOINT_IPP
-#define ASIO_LOCAL_DETAIL_IMPL_ENDPOINT_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_LOCAL_SOCKETS)
-
-#include <cstring>
-#include "asio/detail/socket_ops.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-#include "asio/local/detail/endpoint.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace local {
-namespace detail {
-
-endpoint::endpoint()
-{
-  init("", 0);
-}
-
-endpoint::endpoint(const char* path_name)
-{
-  using namespace std; // For strlen.
-  init(path_name, strlen(path_name));
-}
-
-endpoint::endpoint(const std::string& path_name)
-{
-  init(path_name.data(), path_name.length());
-}
-
-void endpoint::resize(std::size_t new_size)
-{
-  if (new_size > sizeof(asio::detail::sockaddr_un_type))
-  {
-    asio::error_code ec(asio::error::invalid_argument);
-    asio::detail::throw_error(ec);
-  }
-  else if (new_size == 0)
-  {
-    path_length_ = 0;
-  }
-  else
-  {
-    path_length_ = new_size
-      - offsetof(asio::detail::sockaddr_un_type, sun_path);
-
-    // The path returned by the operating system may be NUL-terminated.
-    if (path_length_ > 0 && data_.local.sun_path[path_length_ - 1] == 0)
-      --path_length_;
-  }
-}
-
-std::string endpoint::path() const
-{
-  return std::string(data_.local.sun_path, path_length_);
-}
-
-void endpoint::path(const char* p)
-{
-  using namespace std; // For strlen.
-  init(p, strlen(p));
-}
-
-void endpoint::path(const std::string& p)
-{
-  init(p.data(), p.length());
-}
-
-bool operator==(const endpoint& e1, const endpoint& e2)
-{
-  return e1.path() == e2.path();
-}
-
-bool operator<(const endpoint& e1, const endpoint& e2)
-{
-  return e1.path() < e2.path();
-}
-
-void endpoint::init(const char* path_name, std::size_t path_length)
-{
-  if (path_length > sizeof(data_.local.sun_path) - 1)
-  {
-    // The buffer is not large enough to store this address.
-    asio::error_code ec(asio::error::name_too_long);
-    asio::detail::throw_error(ec);
-  }
-
-  using namespace std; // For memcpy.
-  data_.local = asio::detail::sockaddr_un_type();
-  data_.local.sun_family = AF_UNIX;
-  memcpy(data_.local.sun_path, path_name, path_length);
-  path_length_ = path_length;
-
-  // NUL-terminate normal path names. Names that start with a NUL are in the
-  // UNIX domain protocol's "abstract namespace" and are not NUL-terminated.
-  if (path_length > 0 && data_.local.sun_path[0] == 0)
-    data_.local.sun_path[path_length] = 0;
-}
-
-} // namespace detail
-} // namespace local
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_LOCAL_SOCKETS)
-
-#endif // ASIO_LOCAL_DETAIL_IMPL_ENDPOINT_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/local/stream_protocol.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/local/stream_protocol.hpp
deleted file mode 100644
index 7fe9772..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/local/stream_protocol.hpp
+++ /dev/null
@@ -1,90 +0,0 @@
-//
-// local/stream_protocol.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_LOCAL_STREAM_PROTOCOL_HPP
-#define ASIO_LOCAL_STREAM_PROTOCOL_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_LOCAL_SOCKETS) \
-  || defined(GENERATING_DOCUMENTATION)
-
-#include "asio/basic_socket_acceptor.hpp"
-#include "asio/basic_socket_iostream.hpp"
-#include "asio/basic_stream_socket.hpp"
-#include "asio/detail/socket_types.hpp"
-#include "asio/local/basic_endpoint.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace local {
-
-/// Encapsulates the flags needed for stream-oriented UNIX sockets.
-/**
- * The asio::local::stream_protocol class contains flags necessary for
- * stream-oriented UNIX domain sockets.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Safe.
- *
- * @par Concepts:
- * Protocol.
- */
-class stream_protocol
-{
-public:
-  /// Obtain an identifier for the type of the protocol.
-  int type() const
-  {
-    return SOCK_STREAM;
-  }
-
-  /// Obtain an identifier for the protocol.
-  int protocol() const
-  {
-    return 0;
-  }
-
-  /// Obtain an identifier for the protocol family.
-  int family() const
-  {
-    return AF_UNIX;
-  }
-
-  /// The type of a UNIX domain endpoint.
-  typedef basic_endpoint<stream_protocol> endpoint;
-
-  /// The UNIX domain socket type.
-  typedef basic_stream_socket<stream_protocol> socket;
-
-  /// The UNIX domain acceptor type.
-  typedef basic_socket_acceptor<stream_protocol> acceptor;
-
-#if !defined(ASIO_NO_IOSTREAM)
-  /// The UNIX domain iostream type.
-  typedef basic_socket_iostream<stream_protocol> iostream;
-#endif // !defined(ASIO_NO_IOSTREAM)
-};
-
-} // namespace local
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_LOCAL_SOCKETS)
-       //   || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_LOCAL_STREAM_PROTOCOL_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/placeholders.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/placeholders.hpp
deleted file mode 100644
index 011cf26..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/placeholders.hpp
+++ /dev/null
@@ -1,123 +0,0 @@
-//
-// placeholders.hpp
-// ~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_PLACEHOLDERS_HPP
-#define ASIO_PLACEHOLDERS_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_BOOST_BIND)
-# include <boost/bind/arg.hpp>
-#endif // defined(ASIO_HAS_BOOST_BIND)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace placeholders {
-
-#if defined(GENERATING_DOCUMENTATION)
-
-/// An argument placeholder, for use with boost::bind(), that corresponds to
-/// the error argument of a handler for any of the asynchronous functions.
-unspecified error;
-
-/// An argument placeholder, for use with boost::bind(), that corresponds to
-/// the bytes_transferred argument of a handler for asynchronous functions such
-/// as asio::basic_stream_socket::async_write_some or
-/// asio::async_write.
-unspecified bytes_transferred;
-
-/// An argument placeholder, for use with boost::bind(), that corresponds to
-/// the iterator argument of a handler for asynchronous functions such as
-/// asio::basic_resolver::async_resolve.
-unspecified iterator;
-
-/// An argument placeholder, for use with boost::bind(), that corresponds to
-/// the signal_number argument of a handler for asynchronous functions such as
-/// asio::signal_set::async_wait.
-unspecified signal_number;
-
-#elif defined(ASIO_HAS_BOOST_BIND)
-# if defined(__BORLANDC__) || defined(__GNUC__)
-
-inline boost::arg<1> error()
-{
-  return boost::arg<1>();
-}
-
-inline boost::arg<2> bytes_transferred()
-{
-  return boost::arg<2>();
-}
-
-inline boost::arg<2> iterator()
-{
-  return boost::arg<2>();
-}
-
-inline boost::arg<2> signal_number()
-{
-  return boost::arg<2>();
-}
-
-# else
-
-namespace detail
-{
-  template <int Number>
-  struct placeholder
-  {
-    static boost::arg<Number>& get()
-    {
-      static boost::arg<Number> result;
-      return result;
-    }
-  };
-}
-
-#  if defined(ASIO_MSVC) && (ASIO_MSVC < 1400)
-
-static boost::arg<1>& error
-  = asio::placeholders::detail::placeholder<1>::get();
-static boost::arg<2>& bytes_transferred
-  = asio::placeholders::detail::placeholder<2>::get();
-static boost::arg<2>& iterator
-  = asio::placeholders::detail::placeholder<2>::get();
-static boost::arg<2>& signal_number
-  = asio::placeholders::detail::placeholder<2>::get();
-
-#  else
-
-namespace
-{
-  boost::arg<1>& error
-    = asio::placeholders::detail::placeholder<1>::get();
-  boost::arg<2>& bytes_transferred
-    = asio::placeholders::detail::placeholder<2>::get();
-  boost::arg<2>& iterator
-    = asio::placeholders::detail::placeholder<2>::get();
-  boost::arg<2>& signal_number
-    = asio::placeholders::detail::placeholder<2>::get();
-} // namespace
-
-#  endif
-# endif
-#endif
-
-} // namespace placeholders
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_PLACEHOLDERS_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/posix/basic_descriptor.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/posix/basic_descriptor.hpp
deleted file mode 100644
index f3da28e..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/posix/basic_descriptor.hpp
+++ /dev/null
@@ -1,490 +0,0 @@
-//
-// posix/basic_descriptor.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_POSIX_BASIC_DESCRIPTOR_HPP
-#define ASIO_POSIX_BASIC_DESCRIPTOR_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_POSIX_STREAM_DESCRIPTOR) \
-  || defined(GENERATING_DOCUMENTATION)
-
-#include "asio/basic_io_object.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-#include "asio/posix/descriptor_base.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace posix {
-
-/// Provides POSIX descriptor functionality.
-/**
- * The posix::basic_descriptor class template provides the ability to wrap a
- * POSIX descriptor.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- */
-template <typename DescriptorService>
-class basic_descriptor
-  : public basic_io_object<DescriptorService>,
-    public descriptor_base
-{
-public:
-  /// (Deprecated: Use native_handle_type.) The native representation of a
-  /// descriptor.
-  typedef typename DescriptorService::native_handle_type native_type;
-
-  /// The native representation of a descriptor.
-  typedef typename DescriptorService::native_handle_type native_handle_type;
-
-  /// A basic_descriptor is always the lowest layer.
-  typedef basic_descriptor<DescriptorService> lowest_layer_type;
-
-  /// Construct a basic_descriptor without opening it.
-  /**
-   * This constructor creates a descriptor without opening it.
-   *
-   * @param io_service The io_service object that the descriptor will use to
-   * dispatch handlers for any asynchronous operations performed on the
-   * descriptor.
-   */
-  explicit basic_descriptor(asio::io_service& io_service)
-    : basic_io_object<DescriptorService>(io_service)
-  {
-  }
-
-  /// Construct a basic_descriptor on an existing native descriptor.
-  /**
-   * This constructor creates a descriptor object to hold an existing native
-   * descriptor.
-   *
-   * @param io_service The io_service object that the descriptor will use to
-   * dispatch handlers for any asynchronous operations performed on the
-   * descriptor.
-   *
-   * @param native_descriptor A native descriptor.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  basic_descriptor(asio::io_service& io_service,
-      const native_handle_type& native_descriptor)
-    : basic_io_object<DescriptorService>(io_service)
-  {
-    asio::error_code ec;
-    this->get_service().assign(this->get_implementation(),
-        native_descriptor, ec);
-    asio::detail::throw_error(ec, "assign");
-  }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-  /// Move-construct a basic_descriptor from another.
-  /**
-   * This constructor moves a descriptor from one object to another.
-   *
-   * @param other The other basic_descriptor object from which the move will
-   * occur.
-   *
-   * @note Following the move, the moved-from object is in the same state as if
-   * constructed using the @c basic_descriptor(io_service&) constructor.
-   */
-  basic_descriptor(basic_descriptor&& other)
-    : basic_io_object<DescriptorService>(
-        ASIO_MOVE_CAST(basic_descriptor)(other))
-  {
-  }
-
-  /// Move-assign a basic_descriptor from another.
-  /**
-   * This assignment operator moves a descriptor from one object to another.
-   *
-   * @param other The other basic_descriptor object from which the move will
-   * occur.
-   *
-   * @note Following the move, the moved-from object is in the same state as if
-   * constructed using the @c basic_descriptor(io_service&) constructor.
-   */
-  basic_descriptor& operator=(basic_descriptor&& other)
-  {
-    basic_io_object<DescriptorService>::operator=(
-        ASIO_MOVE_CAST(basic_descriptor)(other));
-    return *this;
-  }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
-  /// Get a reference to the lowest layer.
-  /**
-   * This function returns a reference to the lowest layer in a stack of
-   * layers. Since a basic_descriptor cannot contain any further layers, it
-   * simply returns a reference to itself.
-   *
-   * @return A reference to the lowest layer in the stack of layers. Ownership
-   * is not transferred to the caller.
-   */
-  lowest_layer_type& lowest_layer()
-  {
-    return *this;
-  }
-
-  /// Get a const reference to the lowest layer.
-  /**
-   * This function returns a const reference to the lowest layer in a stack of
-   * layers. Since a basic_descriptor cannot contain any further layers, it
-   * simply returns a reference to itself.
-   *
-   * @return A const reference to the lowest layer in the stack of layers.
-   * Ownership is not transferred to the caller.
-   */
-  const lowest_layer_type& lowest_layer() const
-  {
-    return *this;
-  }
-
-  /// Assign an existing native descriptor to the descriptor.
-  /*
-   * This function opens the descriptor to hold an existing native descriptor.
-   *
-   * @param native_descriptor A native descriptor.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  void assign(const native_handle_type& native_descriptor)
-  {
-    asio::error_code ec;
-    this->get_service().assign(this->get_implementation(),
-        native_descriptor, ec);
-    asio::detail::throw_error(ec, "assign");
-  }
-
-  /// Assign an existing native descriptor to the descriptor.
-  /*
-   * This function opens the descriptor to hold an existing native descriptor.
-   *
-   * @param native_descriptor A native descriptor.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   */
-  asio::error_code assign(const native_handle_type& native_descriptor,
-      asio::error_code& ec)
-  {
-    return this->get_service().assign(
-        this->get_implementation(), native_descriptor, ec);
-  }
-
-  /// Determine whether the descriptor is open.
-  bool is_open() const
-  {
-    return this->get_service().is_open(this->implementation);
-  }
-
-  /// Close the descriptor.
-  /**
-   * This function is used to close the descriptor. Any asynchronous read or
-   * write operations will be cancelled immediately, and will complete with the
-   * asio::error::operation_aborted error.
-   *
-   * @throws asio::system_error Thrown on failure. Note that, even if
-   * the function indicates an error, the underlying descriptor is closed.
-   */
-  void close()
-  {
-    asio::error_code ec;
-    this->get_service().close(this->get_implementation(), ec);
-    asio::detail::throw_error(ec, "close");
-  }
-
-  /// Close the descriptor.
-  /**
-   * This function is used to close the descriptor. Any asynchronous read or
-   * write operations will be cancelled immediately, and will complete with the
-   * asio::error::operation_aborted error.
-   *
-   * @param ec Set to indicate what error occurred, if any. Note that, even if
-   * the function indicates an error, the underlying descriptor is closed.
-   */
-  asio::error_code close(asio::error_code& ec)
-  {
-    return this->get_service().close(this->get_implementation(), ec);
-  }
-
-  /// (Deprecated: Use native_handle().) Get the native descriptor
-  /// representation.
-  /**
-   * This function may be used to obtain the underlying representation of the
-   * descriptor. This is intended to allow access to native descriptor
-   * functionality that is not otherwise provided.
-   */
-  native_type native()
-  {
-    return this->get_service().native_handle(this->implementation);
-  }
-
-  /// Get the native descriptor representation.
-  /**
-   * This function may be used to obtain the underlying representation of the
-   * descriptor. This is intended to allow access to native descriptor
-   * functionality that is not otherwise provided.
-   */
-  native_handle_type native_handle()
-  {
-    return this->get_service().native_handle(this->implementation);
-  }
-
-  /// Release ownership of the native descriptor implementation.
-  /**
-   * This function may be used to obtain the underlying representation of the
-   * descriptor. After calling this function, @c is_open() returns false. The
-   * caller is responsible for closing the descriptor.
-   *
-   * All outstanding asynchronous read or write operations will finish
-   * immediately, and the handlers for cancelled operations will be passed the
-   * asio::error::operation_aborted error.
-   */
-  native_handle_type release()
-  {
-    return this->get_service().release(this->implementation);
-  }
-
-  /// Cancel all asynchronous operations associated with the descriptor.
-  /**
-   * This function causes all outstanding asynchronous read or write operations
-   * to finish immediately, and the handlers for cancelled operations will be
-   * passed the asio::error::operation_aborted error.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  void cancel()
-  {
-    asio::error_code ec;
-    this->get_service().cancel(this->get_implementation(), ec);
-    asio::detail::throw_error(ec, "cancel");
-  }
-
-  /// Cancel all asynchronous operations associated with the descriptor.
-  /**
-   * This function causes all outstanding asynchronous read or write operations
-   * to finish immediately, and the handlers for cancelled operations will be
-   * passed the asio::error::operation_aborted error.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   */
-  asio::error_code cancel(asio::error_code& ec)
-  {
-    return this->get_service().cancel(this->get_implementation(), ec);
-  }
-
-  /// Perform an IO control command on the descriptor.
-  /**
-   * This function is used to execute an IO control command on the descriptor.
-   *
-   * @param command The IO control command to be performed on the descriptor.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @sa IoControlCommand @n
-   * asio::posix::descriptor_base::bytes_readable @n
-   * asio::posix::descriptor_base::non_blocking_io
-   *
-   * @par Example
-   * Getting the number of bytes ready to read:
-   * @code
-   * asio::posix::stream_descriptor descriptor(io_service);
-   * ...
-   * asio::posix::stream_descriptor::bytes_readable command;
-   * descriptor.io_control(command);
-   * std::size_t bytes_readable = command.get();
-   * @endcode
-   */
-  template <typename IoControlCommand>
-  void io_control(IoControlCommand& command)
-  {
-    asio::error_code ec;
-    this->get_service().io_control(this->get_implementation(), command, ec);
-    asio::detail::throw_error(ec, "io_control");
-  }
-
-  /// Perform an IO control command on the descriptor.
-  /**
-   * This function is used to execute an IO control command on the descriptor.
-   *
-   * @param command The IO control command to be performed on the descriptor.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @sa IoControlCommand @n
-   * asio::posix::descriptor_base::bytes_readable @n
-   * asio::posix::descriptor_base::non_blocking_io
-   *
-   * @par Example
-   * Getting the number of bytes ready to read:
-   * @code
-   * asio::posix::stream_descriptor descriptor(io_service);
-   * ...
-   * asio::posix::stream_descriptor::bytes_readable command;
-   * asio::error_code ec;
-   * descriptor.io_control(command, ec);
-   * if (ec)
-   * {
-   *   // An error occurred.
-   * }
-   * std::size_t bytes_readable = command.get();
-   * @endcode
-   */
-  template <typename IoControlCommand>
-  asio::error_code io_control(IoControlCommand& command,
-      asio::error_code& ec)
-  {
-    return this->get_service().io_control(
-        this->get_implementation(), command, ec);
-  }
-
-  /// Gets the non-blocking mode of the descriptor.
-  /**
-   * @returns @c true if the descriptor's synchronous operations will fail with
-   * asio::error::would_block if they are unable to perform the requested
-   * operation immediately. If @c false, synchronous operations will block
-   * until complete.
-   *
-   * @note The non-blocking mode has no effect on the behaviour of asynchronous
-   * operations. Asynchronous operations will never fail with the error
-   * asio::error::would_block.
-   */
-  bool non_blocking() const
-  {
-    return this->get_service().non_blocking(this->implementation);
-  }
-
-  /// Sets the non-blocking mode of the descriptor.
-  /**
-   * @param mode If @c true, the descriptor's synchronous operations will fail
-   * with asio::error::would_block if they are unable to perform the
-   * requested operation immediately. If @c false, synchronous operations will
-   * block until complete.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note The non-blocking mode has no effect on the behaviour of asynchronous
-   * operations. Asynchronous operations will never fail with the error
-   * asio::error::would_block.
-   */
-  void non_blocking(bool mode)
-  {
-    asio::error_code ec;
-    this->get_service().non_blocking(this->get_implementation(), mode, ec);
-    asio::detail::throw_error(ec, "non_blocking");
-  }
-
-  /// Sets the non-blocking mode of the descriptor.
-  /**
-   * @param mode If @c true, the descriptor's synchronous operations will fail
-   * with asio::error::would_block if they are unable to perform the
-   * requested operation immediately. If @c false, synchronous operations will
-   * block until complete.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @note The non-blocking mode has no effect on the behaviour of asynchronous
-   * operations. Asynchronous operations will never fail with the error
-   * asio::error::would_block.
-   */
-  asio::error_code non_blocking(
-      bool mode, asio::error_code& ec)
-  {
-    return this->get_service().non_blocking(
-        this->get_implementation(), mode, ec);
-  }
-
-  /// Gets the non-blocking mode of the native descriptor implementation.
-  /**
-   * This function is used to retrieve the non-blocking mode of the underlying
-   * native descriptor. This mode has no effect on the behaviour of the
-   * descriptor object's synchronous operations.
-   *
-   * @returns @c true if the underlying descriptor is in non-blocking mode and
-   * direct system calls may fail with asio::error::would_block (or the
-   * equivalent system error).
-   *
-   * @note The current non-blocking mode is cached by the descriptor object.
-   * Consequently, the return value may be incorrect if the non-blocking mode
-   * was set directly on the native descriptor.
-   */
-  bool native_non_blocking() const
-  {
-    return this->get_service().native_non_blocking(this->implementation);
-  }
-
-  /// Sets the non-blocking mode of the native descriptor implementation.
-  /**
-   * This function is used to modify the non-blocking mode of the underlying
-   * native descriptor. It has no effect on the behaviour of the descriptor
-   * object's synchronous operations.
-   *
-   * @param mode If @c true, the underlying descriptor is put into non-blocking
-   * mode and direct system calls may fail with asio::error::would_block
-   * (or the equivalent system error).
-   *
-   * @throws asio::system_error Thrown on failure. If the @c mode is
-   * @c false, but the current value of @c non_blocking() is @c true, this
-   * function fails with asio::error::invalid_argument, as the
-   * combination does not make sense.
-   */
-  void native_non_blocking(bool mode)
-  {
-    asio::error_code ec;
-    this->get_service().native_non_blocking(
-        this->get_implementation(), mode, ec);
-    asio::detail::throw_error(ec, "native_non_blocking");
-  }
-
-  /// Sets the non-blocking mode of the native descriptor implementation.
-  /**
-   * This function is used to modify the non-blocking mode of the underlying
-   * native descriptor. It has no effect on the behaviour of the descriptor
-   * object's synchronous operations.
-   *
-   * @param mode If @c true, the underlying descriptor is put into non-blocking
-   * mode and direct system calls may fail with asio::error::would_block
-   * (or the equivalent system error).
-   *
-   * @param ec Set to indicate what error occurred, if any. If the @c mode is
-   * @c false, but the current value of @c non_blocking() is @c true, this
-   * function fails with asio::error::invalid_argument, as the
-   * combination does not make sense.
-   */
-  asio::error_code native_non_blocking(
-      bool mode, asio::error_code& ec)
-  {
-    return this->get_service().native_non_blocking(
-        this->get_implementation(), mode, ec);
-  }
-
-protected:
-  /// Protected destructor to prevent deletion through this type.
-  ~basic_descriptor()
-  {
-  }
-};
-
-} // namespace posix
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_POSIX_STREAM_DESCRIPTOR)
-       //   || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_POSIX_BASIC_DESCRIPTOR_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/posix/basic_stream_descriptor.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/posix/basic_stream_descriptor.hpp
deleted file mode 100644
index de19ce6..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/posix/basic_stream_descriptor.hpp
+++ /dev/null
@@ -1,362 +0,0 @@
-//
-// posix/basic_stream_descriptor.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_POSIX_BASIC_STREAM_DESCRIPTOR_HPP
-#define ASIO_POSIX_BASIC_STREAM_DESCRIPTOR_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_POSIX_STREAM_DESCRIPTOR) \
-  || defined(GENERATING_DOCUMENTATION)
-
-#include <cstddef>
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-#include "asio/posix/basic_descriptor.hpp"
-#include "asio/posix/stream_descriptor_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace posix {
-
-/// Provides stream-oriented descriptor functionality.
-/**
- * The posix::basic_stream_descriptor class template provides asynchronous and
- * blocking stream-oriented descriptor functionality.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- *
- * @par Concepts:
- * AsyncReadStream, AsyncWriteStream, Stream, SyncReadStream, SyncWriteStream.
- */
-template <typename StreamDescriptorService = stream_descriptor_service>
-class basic_stream_descriptor
-  : public basic_descriptor<StreamDescriptorService>
-{
-public:
-  /// (Deprecated: Use native_handle_type.) The native representation of a
-  /// descriptor.
-  typedef typename StreamDescriptorService::native_handle_type native_type;
-
-  /// The native representation of a descriptor.
-  typedef typename StreamDescriptorService::native_handle_type
-    native_handle_type;
-
-  /// Construct a basic_stream_descriptor without opening it.
-  /**
-   * This constructor creates a stream descriptor without opening it. The
-   * descriptor needs to be opened and then connected or accepted before data
-   * can be sent or received on it.
-   *
-   * @param io_service The io_service object that the stream descriptor will
-   * use to dispatch handlers for any asynchronous operations performed on the
-   * descriptor.
-   */
-  explicit basic_stream_descriptor(asio::io_service& io_service)
-    : basic_descriptor<StreamDescriptorService>(io_service)
-  {
-  }
-
-  /// Construct a basic_stream_descriptor on an existing native descriptor.
-  /**
-   * This constructor creates a stream descriptor object to hold an existing
-   * native descriptor.
-   *
-   * @param io_service The io_service object that the stream descriptor will
-   * use to dispatch handlers for any asynchronous operations performed on the
-   * descriptor.
-   *
-   * @param native_descriptor The new underlying descriptor implementation.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  basic_stream_descriptor(asio::io_service& io_service,
-      const native_handle_type& native_descriptor)
-    : basic_descriptor<StreamDescriptorService>(io_service, native_descriptor)
-  {
-  }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-  /// Move-construct a basic_stream_descriptor from another.
-  /**
-   * This constructor moves a stream descriptor from one object to another.
-   *
-   * @param other The other basic_stream_descriptor object from which the move
-   * will occur.
-   *
-   * @note Following the move, the moved-from object is in the same state as if
-   * constructed using the @c basic_stream_descriptor(io_service&) constructor.
-   */
-  basic_stream_descriptor(basic_stream_descriptor&& other)
-    : basic_descriptor<StreamDescriptorService>(
-        ASIO_MOVE_CAST(basic_stream_descriptor)(other))
-  {
-  }
-
-  /// Move-assign a basic_stream_descriptor from another.
-  /**
-   * This assignment operator moves a stream descriptor from one object to
-   * another.
-   *
-   * @param other The other basic_stream_descriptor object from which the move
-   * will occur.
-   *
-   * @note Following the move, the moved-from object is in the same state as if
-   * constructed using the @c basic_stream_descriptor(io_service&) constructor.
-   */
-  basic_stream_descriptor& operator=(basic_stream_descriptor&& other)
-  {
-    basic_descriptor<StreamDescriptorService>::operator=(
-        ASIO_MOVE_CAST(basic_stream_descriptor)(other));
-    return *this;
-  }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
-  /// Write some data to the descriptor.
-  /**
-   * This function is used to write data to the stream descriptor. The function
-   * call will block until one or more bytes of the data has been written
-   * successfully, or until an error occurs.
-   *
-   * @param buffers One or more data buffers to be written to the descriptor.
-   *
-   * @returns The number of bytes written.
-   *
-   * @throws asio::system_error Thrown on failure. An error code of
-   * asio::error::eof indicates that the connection was closed by the
-   * peer.
-   *
-   * @note The write_some operation may not transmit all of the data to the
-   * peer. Consider using the @ref write function if you need to ensure that
-   * all data is written before the blocking operation completes.
-   *
-   * @par Example
-   * To write a single data buffer use the @ref buffer function as follows:
-   * @code
-   * descriptor.write_some(asio::buffer(data, size));
-   * @endcode
-   * See the @ref buffer documentation for information on writing multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t write_some(const ConstBufferSequence& buffers)
-  {
-    asio::error_code ec;
-    std::size_t s = this->get_service().write_some(
-        this->get_implementation(), buffers, ec);
-    asio::detail::throw_error(ec, "write_some");
-    return s;
-  }
-
-  /// Write some data to the descriptor.
-  /**
-   * This function is used to write data to the stream descriptor. The function
-   * call will block until one or more bytes of the data has been written
-   * successfully, or until an error occurs.
-   *
-   * @param buffers One or more data buffers to be written to the descriptor.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes written. Returns 0 if an error occurred.
-   *
-   * @note The write_some operation may not transmit all of the data to the
-   * peer. Consider using the @ref write function if you need to ensure that
-   * all data is written before the blocking operation completes.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t write_some(const ConstBufferSequence& buffers,
-      asio::error_code& ec)
-  {
-    return this->get_service().write_some(
-        this->get_implementation(), buffers, ec);
-  }
-
-  /// Start an asynchronous write.
-  /**
-   * This function is used to asynchronously write data to the stream
-   * descriptor. The function call always returns immediately.
-   *
-   * @param buffers One or more data buffers to be written to the descriptor.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param handler The handler to be called when the write operation completes.
-   * Copies will be made of the handler as required. The function signature of
-   * the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes written.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   *
-   * @note The write operation may not transmit all of the data to the peer.
-   * Consider using the @ref async_write function if you need to ensure that all
-   * data is written before the asynchronous operation completes.
-   *
-   * @par Example
-   * To write a single data buffer use the @ref buffer function as follows:
-   * @code
-   * descriptor.async_write_some(asio::buffer(data, size), handler);
-   * @endcode
-   * See the @ref buffer documentation for information on writing multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename ConstBufferSequence, typename WriteHandler>
-  ASIO_INITFN_RESULT_TYPE(WriteHandler,
-      void (asio::error_code, std::size_t))
-  async_write_some(const ConstBufferSequence& buffers,
-      ASIO_MOVE_ARG(WriteHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a WriteHandler.
-    ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
-    return this->get_service().async_write_some(this->get_implementation(),
-        buffers, ASIO_MOVE_CAST(WriteHandler)(handler));
-  }
-
-  /// Read some data from the descriptor.
-  /**
-   * This function is used to read data from the stream descriptor. The function
-   * call will block until one or more bytes of data has been read successfully,
-   * or until an error occurs.
-   *
-   * @param buffers One or more buffers into which the data will be read.
-   *
-   * @returns The number of bytes read.
-   *
-   * @throws asio::system_error Thrown on failure. An error code of
-   * asio::error::eof indicates that the connection was closed by the
-   * peer.
-   *
-   * @note The read_some operation may not read all of the requested number of
-   * bytes. Consider using the @ref read function if you need to ensure that
-   * the requested amount of data is read before the blocking operation
-   * completes.
-   *
-   * @par Example
-   * To read into a single data buffer use the @ref buffer function as follows:
-   * @code
-   * descriptor.read_some(asio::buffer(data, size));
-   * @endcode
-   * See the @ref buffer documentation for information on reading into multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t read_some(const MutableBufferSequence& buffers)
-  {
-    asio::error_code ec;
-    std::size_t s = this->get_service().read_some(
-        this->get_implementation(), buffers, ec);
-    asio::detail::throw_error(ec, "read_some");
-    return s;
-  }
-
-  /// Read some data from the descriptor.
-  /**
-   * This function is used to read data from the stream descriptor. The function
-   * call will block until one or more bytes of data has been read successfully,
-   * or until an error occurs.
-   *
-   * @param buffers One or more buffers into which the data will be read.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes read. Returns 0 if an error occurred.
-   *
-   * @note The read_some operation may not read all of the requested number of
-   * bytes. Consider using the @ref read function if you need to ensure that
-   * the requested amount of data is read before the blocking operation
-   * completes.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t read_some(const MutableBufferSequence& buffers,
-      asio::error_code& ec)
-  {
-    return this->get_service().read_some(
-        this->get_implementation(), buffers, ec);
-  }
-
-  /// Start an asynchronous read.
-  /**
-   * This function is used to asynchronously read data from the stream
-   * descriptor. The function call always returns immediately.
-   *
-   * @param buffers One or more buffers into which the data will be read.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param handler The handler to be called when the read operation completes.
-   * Copies will be made of the handler as required. The function signature of
-   * the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes read.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   *
-   * @note The read operation may not read all of the requested number of bytes.
-   * Consider using the @ref async_read function if you need to ensure that the
-   * requested amount of data is read before the asynchronous operation
-   * completes.
-   *
-   * @par Example
-   * To read into a single data buffer use the @ref buffer function as follows:
-   * @code
-   * descriptor.async_read_some(asio::buffer(data, size), handler);
-   * @endcode
-   * See the @ref buffer documentation for information on reading into multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence, typename ReadHandler>
-  ASIO_INITFN_RESULT_TYPE(ReadHandler,
-      void (asio::error_code, std::size_t))
-  async_read_some(const MutableBufferSequence& buffers,
-      ASIO_MOVE_ARG(ReadHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a ReadHandler.
-    ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
-    return this->get_service().async_read_some(this->get_implementation(),
-        buffers, ASIO_MOVE_CAST(ReadHandler)(handler));
-  }
-};
-
-} // namespace posix
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_POSIX_STREAM_DESCRIPTOR)
-       //   || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_POSIX_BASIC_STREAM_DESCRIPTOR_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/posix/descriptor_base.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/posix/descriptor_base.hpp
deleted file mode 100644
index 0b3a5ae..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/posix/descriptor_base.hpp
+++ /dev/null
@@ -1,97 +0,0 @@
-//
-// posix/descriptor_base.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_POSIX_DESCRIPTOR_BASE_HPP
-#define ASIO_POSIX_DESCRIPTOR_BASE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_POSIX_STREAM_DESCRIPTOR) \
-  || defined(GENERATING_DOCUMENTATION)
-
-#include "asio/detail/io_control.hpp"
-#include "asio/detail/socket_option.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace posix {
-
-/// The descriptor_base class is used as a base for the basic_stream_descriptor
-/// class template so that we have a common place to define the associated
-/// IO control commands.
-class descriptor_base
-{
-public:
-  /// (Deprecated: Use non_blocking().) IO control command to set the blocking
-  /// mode of the descriptor.
-  /**
-   * Implements the FIONBIO IO control command.
-   *
-   * @par Example
-   * @code
-   * asio::posix::stream_descriptor descriptor(io_service); 
-   * ...
-   * asio::descriptor_base::non_blocking_io command(true);
-   * descriptor.io_control(command);
-   * @endcode
-   *
-   * @par Concepts:
-   * IoControlCommand.
-   */
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined non_blocking_io;
-#else
-  typedef asio::detail::io_control::non_blocking_io non_blocking_io;
-#endif
-
-  /// IO control command to get the amount of data that can be read without
-  /// blocking.
-  /**
-   * Implements the FIONREAD IO control command.
-   *
-   * @par Example
-   * @code
-   * asio::posix::stream_descriptor descriptor(io_service); 
-   * ...
-   * asio::descriptor_base::bytes_readable command(true);
-   * descriptor.io_control(command);
-   * std::size_t bytes_readable = command.get();
-   * @endcode
-   *
-   * @par Concepts:
-   * IoControlCommand.
-   */
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined bytes_readable;
-#else
-  typedef asio::detail::io_control::bytes_readable bytes_readable;
-#endif
-
-protected:
-  /// Protected destructor to prevent deletion through this type.
-  ~descriptor_base()
-  {
-  }
-};
-
-} // namespace posix
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_POSIX_STREAM_DESCRIPTOR)
-       //   || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_POSIX_DESCRIPTOR_BASE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/posix/stream_descriptor.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/posix/stream_descriptor.hpp
deleted file mode 100644
index 25c62e8..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/posix/stream_descriptor.hpp
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// posix/stream_descriptor.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_POSIX_STREAM_DESCRIPTOR_HPP
-#define ASIO_POSIX_STREAM_DESCRIPTOR_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_POSIX_STREAM_DESCRIPTOR) \
-  || defined(GENERATING_DOCUMENTATION)
-
-#include "asio/posix/basic_stream_descriptor.hpp"
-
-namespace asio {
-namespace posix {
-
-/// Typedef for the typical usage of a stream-oriented descriptor.
-typedef basic_stream_descriptor<> stream_descriptor;
-
-} // namespace posix
-} // namespace asio
-
-#endif // defined(ASIO_HAS_POSIX_STREAM_DESCRIPTOR)
-       //   || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_POSIX_STREAM_DESCRIPTOR_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/posix/stream_descriptor_service.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/posix/stream_descriptor_service.hpp
deleted file mode 100644
index 56cd1c3..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/posix/stream_descriptor_service.hpp
+++ /dev/null
@@ -1,260 +0,0 @@
-//
-// posix/stream_descriptor_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_POSIX_STREAM_DESCRIPTOR_SERVICE_HPP
-#define ASIO_POSIX_STREAM_DESCRIPTOR_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_POSIX_STREAM_DESCRIPTOR) \
-  || defined(GENERATING_DOCUMENTATION)
-
-#include <cstddef>
-#include "asio/async_result.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/detail/reactive_descriptor_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace posix {
-
-/// Default service implementation for a stream descriptor.
-class stream_descriptor_service
-#if defined(GENERATING_DOCUMENTATION)
-  : public asio::io_service::service
-#else
-  : public asio::detail::service_base<stream_descriptor_service>
-#endif
-{
-public:
-#if defined(GENERATING_DOCUMENTATION)
-  /// The unique service identifier.
-  static asio::io_service::id id;
-#endif
-
-private:
-  // The type of the platform-specific implementation.
-  typedef detail::reactive_descriptor_service service_impl_type;
-
-public:
-  /// The type of a stream descriptor implementation.
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined implementation_type;
-#else
-  typedef service_impl_type::implementation_type implementation_type;
-#endif
-
-  /// (Deprecated: Use native_handle_type.) The native descriptor type.
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined native_type;
-#else
-  typedef service_impl_type::native_handle_type native_type;
-#endif
-
-  /// The native descriptor type.
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined native_handle_type;
-#else
-  typedef service_impl_type::native_handle_type native_handle_type;
-#endif
-
-  /// Construct a new stream descriptor service for the specified io_service.
-  explicit stream_descriptor_service(asio::io_service& io_service)
-    : asio::detail::service_base<stream_descriptor_service>(io_service),
-      service_impl_(io_service)
-  {
-  }
-
-  /// Construct a new stream descriptor implementation.
-  void construct(implementation_type& impl)
-  {
-    service_impl_.construct(impl);
-  }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-  /// Move-construct a new stream descriptor implementation.
-  void move_construct(implementation_type& impl,
-      implementation_type& other_impl)
-  {
-    service_impl_.move_construct(impl, other_impl);
-  }
-
-  /// Move-assign from another stream descriptor implementation.
-  void move_assign(implementation_type& impl,
-      stream_descriptor_service& other_service,
-      implementation_type& other_impl)
-  {
-    service_impl_.move_assign(impl, other_service.service_impl_, other_impl);
-  }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
-  /// Destroy a stream descriptor implementation.
-  void destroy(implementation_type& impl)
-  {
-    service_impl_.destroy(impl);
-  }
-
-  /// Assign an existing native descriptor to a stream descriptor.
-  asio::error_code assign(implementation_type& impl,
-      const native_handle_type& native_descriptor,
-      asio::error_code& ec)
-  {
-    return service_impl_.assign(impl, native_descriptor, ec);
-  }
-
-  /// Determine whether the descriptor is open.
-  bool is_open(const implementation_type& impl) const
-  {
-    return service_impl_.is_open(impl);
-  }
-
-  /// Close a stream descriptor implementation.
-  asio::error_code close(implementation_type& impl,
-      asio::error_code& ec)
-  {
-    return service_impl_.close(impl, ec);
-  }
-
-  /// (Deprecated: Use native_handle().) Get the native descriptor
-  /// implementation.
-  native_type native(implementation_type& impl)
-  {
-    return service_impl_.native_handle(impl);
-  }
-
-  /// Get the native descriptor implementation.
-  native_handle_type native_handle(implementation_type& impl)
-  {
-    return service_impl_.native_handle(impl);
-  }
-
-  /// Release ownership of the native descriptor implementation.
-  native_handle_type release(implementation_type& impl)
-  {
-    return service_impl_.release(impl);
-  }
-
-  /// Cancel all asynchronous operations associated with the descriptor.
-  asio::error_code cancel(implementation_type& impl,
-      asio::error_code& ec)
-  {
-    return service_impl_.cancel(impl, ec);
-  }
-
-  /// Perform an IO control command on the descriptor.
-  template <typename IoControlCommand>
-  asio::error_code io_control(implementation_type& impl,
-      IoControlCommand& command, asio::error_code& ec)
-  {
-    return service_impl_.io_control(impl, command, ec);
-  }
-
-  /// Gets the non-blocking mode of the descriptor.
-  bool non_blocking(const implementation_type& impl) const
-  {
-    return service_impl_.non_blocking(impl);
-  }
-
-  /// Sets the non-blocking mode of the descriptor.
-  asio::error_code non_blocking(implementation_type& impl,
-      bool mode, asio::error_code& ec)
-  {
-    return service_impl_.non_blocking(impl, mode, ec);
-  }
-
-  /// Gets the non-blocking mode of the native descriptor implementation.
-  bool native_non_blocking(const implementation_type& impl) const
-  {
-    return service_impl_.native_non_blocking(impl);
-  }
-
-  /// Sets the non-blocking mode of the native descriptor implementation.
-  asio::error_code native_non_blocking(implementation_type& impl,
-      bool mode, asio::error_code& ec)
-  {
-    return service_impl_.native_non_blocking(impl, mode, ec);
-  }
-
-  /// Write the given data to the stream.
-  template <typename ConstBufferSequence>
-  std::size_t write_some(implementation_type& impl,
-      const ConstBufferSequence& buffers, asio::error_code& ec)
-  {
-    return service_impl_.write_some(impl, buffers, ec);
-  }
-
-  /// Start an asynchronous write.
-  template <typename ConstBufferSequence, typename WriteHandler>
-  ASIO_INITFN_RESULT_TYPE(WriteHandler,
-      void (asio::error_code, std::size_t))
-  async_write_some(implementation_type& impl,
-      const ConstBufferSequence& buffers,
-      ASIO_MOVE_ARG(WriteHandler) handler)
-  {
-    asio::detail::async_result_init<
-      WriteHandler, void (asio::error_code, std::size_t)> init(
-        ASIO_MOVE_CAST(WriteHandler)(handler));
-
-    service_impl_.async_write_some(impl, buffers, init.handler);
-
-    return init.result.get();
-  }
-
-  /// Read some data from the stream.
-  template <typename MutableBufferSequence>
-  std::size_t read_some(implementation_type& impl,
-      const MutableBufferSequence& buffers, asio::error_code& ec)
-  {
-    return service_impl_.read_some(impl, buffers, ec);
-  }
-
-  /// Start an asynchronous read.
-  template <typename MutableBufferSequence, typename ReadHandler>
-  ASIO_INITFN_RESULT_TYPE(ReadHandler,
-      void (asio::error_code, std::size_t))
-  async_read_some(implementation_type& impl,
-      const MutableBufferSequence& buffers,
-      ASIO_MOVE_ARG(ReadHandler) handler)
-  {
-    asio::detail::async_result_init<
-      ReadHandler, void (asio::error_code, std::size_t)> init(
-        ASIO_MOVE_CAST(ReadHandler)(handler));
-
-    service_impl_.async_read_some(impl, buffers, init.handler);
-
-    return init.result.get();
-  }
-
-private:
-  // Destroy all user-defined handler objects owned by the service.
-  void shutdown_service()
-  {
-    service_impl_.shutdown_service();
-  }
-
-  // The platform-specific implementation.
-  service_impl_type service_impl_;
-};
-
-} // namespace posix
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_POSIX_STREAM_DESCRIPTOR)
-       //   || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_POSIX_STREAM_DESCRIPTOR_SERVICE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/raw_socket_service.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/raw_socket_service.hpp
deleted file mode 100644
index fcc1316..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/raw_socket_service.hpp
+++ /dev/null
@@ -1,432 +0,0 @@
-//
-// raw_socket_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_RAW_SOCKET_SERVICE_HPP
-#define ASIO_RAW_SOCKET_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cstddef>
-#include "asio/async_result.hpp"
-#include "asio/detail/type_traits.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-# include "asio/detail/null_socket_service.hpp"
-#elif defined(ASIO_HAS_IOCP)
-# include "asio/detail/win_iocp_socket_service.hpp"
-#else
-# include "asio/detail/reactive_socket_service.hpp"
-#endif
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Default service implementation for a raw socket.
-template <typename Protocol>
-class raw_socket_service
-#if defined(GENERATING_DOCUMENTATION)
-  : public asio::io_service::service
-#else
-  : public asio::detail::service_base<raw_socket_service<Protocol> >
-#endif
-{
-public:
-#if defined(GENERATING_DOCUMENTATION)
-  /// The unique service identifier.
-  static asio::io_service::id id;
-#endif
-
-  /// The protocol type.
-  typedef Protocol protocol_type;
-
-  /// The endpoint type.
-  typedef typename Protocol::endpoint endpoint_type;
-
-private:
-  // The type of the platform-specific implementation.
-#if defined(ASIO_WINDOWS_RUNTIME)
-  typedef detail::null_socket_service<Protocol> service_impl_type;
-#elif defined(ASIO_HAS_IOCP)
-  typedef detail::win_iocp_socket_service<Protocol> service_impl_type;
-#else
-  typedef detail::reactive_socket_service<Protocol> service_impl_type;
-#endif
-
-public:
-  /// The type of a raw socket.
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined implementation_type;
-#else
-  typedef typename service_impl_type::implementation_type implementation_type;
-#endif
-
-  /// (Deprecated: Use native_handle_type.) The native socket type.
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined native_type;
-#else
-  typedef typename service_impl_type::native_handle_type native_type;
-#endif
-
-  /// The native socket type.
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined native_handle_type;
-#else
-  typedef typename service_impl_type::native_handle_type native_handle_type;
-#endif
-
-  /// Construct a new raw socket service for the specified io_service.
-  explicit raw_socket_service(asio::io_service& io_service)
-    : asio::detail::service_base<
-        raw_socket_service<Protocol> >(io_service),
-      service_impl_(io_service)
-  {
-  }
-
-  /// Construct a new raw socket implementation.
-  void construct(implementation_type& impl)
-  {
-    service_impl_.construct(impl);
-  }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-  /// Move-construct a new raw socket implementation.
-  void move_construct(implementation_type& impl,
-      implementation_type& other_impl)
-  {
-    service_impl_.move_construct(impl, other_impl);
-  }
-
-  /// Move-assign from another raw socket implementation.
-  void move_assign(implementation_type& impl,
-      raw_socket_service& other_service,
-      implementation_type& other_impl)
-  {
-    service_impl_.move_assign(impl, other_service.service_impl_, other_impl);
-  }
-
-  /// Move-construct a new raw socket implementation from another protocol
-  /// type.
-  template <typename Protocol1>
-  void converting_move_construct(implementation_type& impl,
-      typename raw_socket_service<
-        Protocol1>::implementation_type& other_impl,
-      typename enable_if<is_convertible<
-        Protocol1, Protocol>::value>::type* = 0)
-  {
-    service_impl_.template converting_move_construct<Protocol1>(
-        impl, other_impl);
-  }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
-  /// Destroy a raw socket implementation.
-  void destroy(implementation_type& impl)
-  {
-    service_impl_.destroy(impl);
-  }
-
-  // Open a new raw socket implementation.
-  asio::error_code open(implementation_type& impl,
-      const protocol_type& protocol, asio::error_code& ec)
-  {
-    if (protocol.type() == ASIO_OS_DEF(SOCK_RAW))
-      service_impl_.open(impl, protocol, ec);
-    else
-      ec = asio::error::invalid_argument;
-    return ec;
-  }
-
-  /// Assign an existing native socket to a raw socket.
-  asio::error_code assign(implementation_type& impl,
-      const protocol_type& protocol, const native_handle_type& native_socket,
-      asio::error_code& ec)
-  {
-    return service_impl_.assign(impl, protocol, native_socket, ec);
-  }
-
-  /// Determine whether the socket is open.
-  bool is_open(const implementation_type& impl) const
-  {
-    return service_impl_.is_open(impl);
-  }
-
-  /// Close a raw socket implementation.
-  asio::error_code close(implementation_type& impl,
-      asio::error_code& ec)
-  {
-    return service_impl_.close(impl, ec);
-  }
-
-  /// (Deprecated: Use native_handle().) Get the native socket implementation.
-  native_type native(implementation_type& impl)
-  {
-    return service_impl_.native_handle(impl);
-  }
-
-  /// Get the native socket implementation.
-  native_handle_type native_handle(implementation_type& impl)
-  {
-    return service_impl_.native_handle(impl);
-  }
-
-  /// Cancel all asynchronous operations associated with the socket.
-  asio::error_code cancel(implementation_type& impl,
-      asio::error_code& ec)
-  {
-    return service_impl_.cancel(impl, ec);
-  }
-
-  /// Determine whether the socket is at the out-of-band data mark.
-  bool at_mark(const implementation_type& impl,
-      asio::error_code& ec) const
-  {
-    return service_impl_.at_mark(impl, ec);
-  }
-
-  /// Determine the number of bytes available for reading.
-  std::size_t available(const implementation_type& impl,
-      asio::error_code& ec) const
-  {
-    return service_impl_.available(impl, ec);
-  }
-
-  // Bind the raw socket to the specified local endpoint.
-  asio::error_code bind(implementation_type& impl,
-      const endpoint_type& endpoint, asio::error_code& ec)
-  {
-    return service_impl_.bind(impl, endpoint, ec);
-  }
-
-  /// Connect the raw socket to the specified endpoint.
-  asio::error_code connect(implementation_type& impl,
-      const endpoint_type& peer_endpoint, asio::error_code& ec)
-  {
-    return service_impl_.connect(impl, peer_endpoint, ec);
-  }
-
-  /// Start an asynchronous connect.
-  template <typename ConnectHandler>
-  ASIO_INITFN_RESULT_TYPE(ConnectHandler,
-      void (asio::error_code))
-  async_connect(implementation_type& impl,
-      const endpoint_type& peer_endpoint,
-      ASIO_MOVE_ARG(ConnectHandler) handler)
-  {
-    detail::async_result_init<
-      ConnectHandler, void (asio::error_code)> init(
-        ASIO_MOVE_CAST(ConnectHandler)(handler));
-
-    service_impl_.async_connect(impl, peer_endpoint, init.handler);
-
-    return init.result.get();
-  }
-
-  /// Set a socket option.
-  template <typename SettableSocketOption>
-  asio::error_code set_option(implementation_type& impl,
-      const SettableSocketOption& option, asio::error_code& ec)
-  {
-    return service_impl_.set_option(impl, option, ec);
-  }
-
-  /// Get a socket option.
-  template <typename GettableSocketOption>
-  asio::error_code get_option(const implementation_type& impl,
-      GettableSocketOption& option, asio::error_code& ec) const
-  {
-    return service_impl_.get_option(impl, option, ec);
-  }
-
-  /// Perform an IO control command on the socket.
-  template <typename IoControlCommand>
-  asio::error_code io_control(implementation_type& impl,
-      IoControlCommand& command, asio::error_code& ec)
-  {
-    return service_impl_.io_control(impl, command, ec);
-  }
-
-  /// Gets the non-blocking mode of the socket.
-  bool non_blocking(const implementation_type& impl) const
-  {
-    return service_impl_.non_blocking(impl);
-  }
-
-  /// Sets the non-blocking mode of the socket.
-  asio::error_code non_blocking(implementation_type& impl,
-      bool mode, asio::error_code& ec)
-  {
-    return service_impl_.non_blocking(impl, mode, ec);
-  }
-
-  /// Gets the non-blocking mode of the native socket implementation.
-  bool native_non_blocking(const implementation_type& impl) const
-  {
-    return service_impl_.native_non_blocking(impl);
-  }
-
-  /// Sets the non-blocking mode of the native socket implementation.
-  asio::error_code native_non_blocking(implementation_type& impl,
-      bool mode, asio::error_code& ec)
-  {
-    return service_impl_.native_non_blocking(impl, mode, ec);
-  }
-
-  /// Get the local endpoint.
-  endpoint_type local_endpoint(const implementation_type& impl,
-      asio::error_code& ec) const
-  {
-    return service_impl_.local_endpoint(impl, ec);
-  }
-
-  /// Get the remote endpoint.
-  endpoint_type remote_endpoint(const implementation_type& impl,
-      asio::error_code& ec) const
-  {
-    return service_impl_.remote_endpoint(impl, ec);
-  }
-
-  /// Disable sends or receives on the socket.
-  asio::error_code shutdown(implementation_type& impl,
-      socket_base::shutdown_type what, asio::error_code& ec)
-  {
-    return service_impl_.shutdown(impl, what, ec);
-  }
-
-  /// Send the given data to the peer.
-  template <typename ConstBufferSequence>
-  std::size_t send(implementation_type& impl,
-      const ConstBufferSequence& buffers,
-      socket_base::message_flags flags, asio::error_code& ec)
-  {
-    return service_impl_.send(impl, buffers, flags, ec);
-  }
-
-  /// Start an asynchronous send.
-  template <typename ConstBufferSequence, typename WriteHandler>
-  ASIO_INITFN_RESULT_TYPE(WriteHandler,
-      void (asio::error_code, std::size_t))
-  async_send(implementation_type& impl, const ConstBufferSequence& buffers,
-      socket_base::message_flags flags,
-      ASIO_MOVE_ARG(WriteHandler) handler)
-  {
-    detail::async_result_init<
-      WriteHandler, void (asio::error_code, std::size_t)> init(
-        ASIO_MOVE_CAST(WriteHandler)(handler));
-
-    service_impl_.async_send(impl, buffers, flags, init.handler);
-
-    return init.result.get();
-  }
-
-  /// Send raw data to the specified endpoint.
-  template <typename ConstBufferSequence>
-  std::size_t send_to(implementation_type& impl,
-      const ConstBufferSequence& buffers, const endpoint_type& destination,
-      socket_base::message_flags flags, asio::error_code& ec)
-  {
-    return service_impl_.send_to(impl, buffers, destination, flags, ec);
-  }
-
-  /// Start an asynchronous send.
-  template <typename ConstBufferSequence, typename WriteHandler>
-  ASIO_INITFN_RESULT_TYPE(WriteHandler,
-      void (asio::error_code, std::size_t))
-  async_send_to(implementation_type& impl,
-      const ConstBufferSequence& buffers, const endpoint_type& destination,
-      socket_base::message_flags flags,
-      ASIO_MOVE_ARG(WriteHandler) handler)
-  {
-    detail::async_result_init<
-      WriteHandler, void (asio::error_code, std::size_t)> init(
-        ASIO_MOVE_CAST(WriteHandler)(handler));
-
-    service_impl_.async_send_to(impl, buffers,
-        destination, flags, init.handler);
-
-    return init.result.get();
-  }
-
-  /// Receive some data from the peer.
-  template <typename MutableBufferSequence>
-  std::size_t receive(implementation_type& impl,
-      const MutableBufferSequence& buffers,
-      socket_base::message_flags flags, asio::error_code& ec)
-  {
-    return service_impl_.receive(impl, buffers, flags, ec);
-  }
-
-  /// Start an asynchronous receive.
-  template <typename MutableBufferSequence, typename ReadHandler>
-  ASIO_INITFN_RESULT_TYPE(ReadHandler,
-      void (asio::error_code, std::size_t))
-  async_receive(implementation_type& impl,
-      const MutableBufferSequence& buffers,
-      socket_base::message_flags flags,
-      ASIO_MOVE_ARG(ReadHandler) handler)
-  {
-    detail::async_result_init<
-      ReadHandler, void (asio::error_code, std::size_t)> init(
-        ASIO_MOVE_CAST(ReadHandler)(handler));
-
-    service_impl_.async_receive(impl, buffers, flags, init.handler);
-
-    return init.result.get();
-  }
-
-  /// Receive raw data with the endpoint of the sender.
-  template <typename MutableBufferSequence>
-  std::size_t receive_from(implementation_type& impl,
-      const MutableBufferSequence& buffers, endpoint_type& sender_endpoint,
-      socket_base::message_flags flags, asio::error_code& ec)
-  {
-    return service_impl_.receive_from(impl, buffers, sender_endpoint, flags,
-        ec);
-  }
-
-  /// Start an asynchronous receive that will get the endpoint of the sender.
-  template <typename MutableBufferSequence, typename ReadHandler>
-  ASIO_INITFN_RESULT_TYPE(ReadHandler,
-      void (asio::error_code, std::size_t))
-  async_receive_from(implementation_type& impl,
-      const MutableBufferSequence& buffers, endpoint_type& sender_endpoint,
-      socket_base::message_flags flags,
-      ASIO_MOVE_ARG(ReadHandler) handler)
-  {
-    detail::async_result_init<
-      ReadHandler, void (asio::error_code, std::size_t)> init(
-        ASIO_MOVE_CAST(ReadHandler)(handler));
-
-    service_impl_.async_receive_from(impl, buffers,
-        sender_endpoint, flags, init.handler);
-
-    return init.result.get();
-  }
-
-private:
-  // Destroy all user-defined handler objects owned by the service.
-  void shutdown_service()
-  {
-    service_impl_.shutdown_service();
-  }
-
-  // The platform-specific implementation.
-  service_impl_type service_impl_;
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_RAW_SOCKET_SERVICE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/read.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/read.hpp
deleted file mode 100644
index a68b6c0..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/read.hpp
+++ /dev/null
@@ -1,631 +0,0 @@
-//
-// read.hpp
-// ~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_READ_HPP
-#define ASIO_READ_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cstddef>
-#include "asio/async_result.hpp"
-#include "asio/basic_streambuf_fwd.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/**
- * @defgroup read asio::read
- *
- * @brief Attempt to read a certain amount of data from a stream before
- * returning.
- */
-/*@{*/
-
-/// Attempt to read a certain amount of data from a stream before returning.
-/**
- * This function is used to read a certain number of bytes of data from a
- * stream. The call will block until one of the following conditions is true:
- *
- * @li The supplied buffers are full. That is, the bytes transferred is equal to
- * the sum of the buffer sizes.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * read_some function.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the SyncReadStream concept.
- *
- * @param buffers One or more buffers into which the data will be read. The sum
- * of the buffer sizes indicates the maximum number of bytes to read from the
- * stream.
- *
- * @returns The number of bytes transferred.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @par Example
- * To read into a single data buffer use the @ref buffer function as follows:
- * @code asio::read(s, asio::buffer(data, size)); @endcode
- * See the @ref buffer documentation for information on reading into multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- *
- * @note This overload is equivalent to calling:
- * @code asio::read(
- *     s, buffers,
- *     asio::transfer_all()); @endcode
- */
-template <typename SyncReadStream, typename MutableBufferSequence>
-std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers);
-
-/// Attempt to read a certain amount of data from a stream before returning.
-/**
- * This function is used to read a certain number of bytes of data from a
- * stream. The call will block until one of the following conditions is true:
- *
- * @li The supplied buffers are full. That is, the bytes transferred is equal to
- * the sum of the buffer sizes.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * read_some function.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the SyncReadStream concept.
- *
- * @param buffers One or more buffers into which the data will be read. The sum
- * of the buffer sizes indicates the maximum number of bytes to read from the
- * stream.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes transferred.
- *
- * @par Example
- * To read into a single data buffer use the @ref buffer function as follows:
- * @code asio::read(s, asio::buffer(data, size), ec); @endcode
- * See the @ref buffer documentation for information on reading into multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- *
- * @note This overload is equivalent to calling:
- * @code asio::read(
- *     s, buffers,
- *     asio::transfer_all(), ec); @endcode
- */
-template <typename SyncReadStream, typename MutableBufferSequence>
-std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers,
-    asio::error_code& ec);
-
-/// Attempt to read a certain amount of data from a stream before returning.
-/**
- * This function is used to read a certain number of bytes of data from a
- * stream. The call will block until one of the following conditions is true:
- *
- * @li The supplied buffers are full. That is, the bytes transferred is equal to
- * the sum of the buffer sizes.
- *
- * @li The completion_condition function object returns 0.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * read_some function.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the SyncReadStream concept.
- *
- * @param buffers One or more buffers into which the data will be read. The sum
- * of the buffer sizes indicates the maximum number of bytes to read from the
- * stream.
- *
- * @param completion_condition The function object to be called to determine
- * whether the read operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- *   // Result of latest read_some operation.
- *   const asio::error_code& error,
- *
- *   // Number of bytes transferred so far.
- *   std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the read operation is complete. A non-zero
- * return value indicates the maximum number of bytes to be read on the next
- * call to the stream's read_some function.
- *
- * @returns The number of bytes transferred.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @par Example
- * To read into a single data buffer use the @ref buffer function as follows:
- * @code asio::read(s, asio::buffer(data, size),
- *     asio::transfer_at_least(32)); @endcode
- * See the @ref buffer documentation for information on reading into multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
-template <typename SyncReadStream, typename MutableBufferSequence,
-  typename CompletionCondition>
-std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers,
-    CompletionCondition completion_condition);
-
-/// Attempt to read a certain amount of data from a stream before returning.
-/**
- * This function is used to read a certain number of bytes of data from a
- * stream. The call will block until one of the following conditions is true:
- *
- * @li The supplied buffers are full. That is, the bytes transferred is equal to
- * the sum of the buffer sizes.
- *
- * @li The completion_condition function object returns 0.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * read_some function.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the SyncReadStream concept.
- *
- * @param buffers One or more buffers into which the data will be read. The sum
- * of the buffer sizes indicates the maximum number of bytes to read from the
- * stream.
- *
- * @param completion_condition The function object to be called to determine
- * whether the read operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- *   // Result of latest read_some operation.
- *   const asio::error_code& error,
- *
- *   // Number of bytes transferred so far.
- *   std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the read operation is complete. A non-zero
- * return value indicates the maximum number of bytes to be read on the next
- * call to the stream's read_some function.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes read. If an error occurs, returns the total
- * number of bytes successfully transferred prior to the error.
- */
-template <typename SyncReadStream, typename MutableBufferSequence,
-    typename CompletionCondition>
-std::size_t read(SyncReadStream& s, const MutableBufferSequence& buffers,
-    CompletionCondition completion_condition, asio::error_code& ec);
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-/// Attempt to read a certain amount of data from a stream before returning.
-/**
- * This function is used to read a certain number of bytes of data from a
- * stream. The call will block until one of the following conditions is true:
- *
- * @li The supplied buffer is full (that is, it has reached maximum size).
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * read_some function.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the SyncReadStream concept.
- *
- * @param b The basic_streambuf object into which the data will be read.
- *
- * @returns The number of bytes transferred.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note This overload is equivalent to calling:
- * @code asio::read(
- *     s, b,
- *     asio::transfer_all()); @endcode
- */
-template <typename SyncReadStream, typename Allocator>
-std::size_t read(SyncReadStream& s, basic_streambuf<Allocator>& b);
-
-/// Attempt to read a certain amount of data from a stream before returning.
-/**
- * This function is used to read a certain number of bytes of data from a
- * stream. The call will block until one of the following conditions is true:
- *
- * @li The supplied buffer is full (that is, it has reached maximum size).
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * read_some function.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the SyncReadStream concept.
- *
- * @param b The basic_streambuf object into which the data will be read.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes transferred.
- *
- * @note This overload is equivalent to calling:
- * @code asio::read(
- *     s, b,
- *     asio::transfer_all(), ec); @endcode
- */
-template <typename SyncReadStream, typename Allocator>
-std::size_t read(SyncReadStream& s, basic_streambuf<Allocator>& b,
-    asio::error_code& ec);
-
-/// Attempt to read a certain amount of data from a stream before returning.
-/**
- * This function is used to read a certain number of bytes of data from a
- * stream. The call will block until one of the following conditions is true:
- *
- * @li The supplied buffer is full (that is, it has reached maximum size).
- *
- * @li The completion_condition function object returns 0.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * read_some function.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the SyncReadStream concept.
- *
- * @param b The basic_streambuf object into which the data will be read.
- *
- * @param completion_condition The function object to be called to determine
- * whether the read operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- *   // Result of latest read_some operation.
- *   const asio::error_code& error,
- *
- *   // Number of bytes transferred so far.
- *   std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the read operation is complete. A non-zero
- * return value indicates the maximum number of bytes to be read on the next
- * call to the stream's read_some function.
- *
- * @returns The number of bytes transferred.
- *
- * @throws asio::system_error Thrown on failure.
- */
-template <typename SyncReadStream, typename Allocator,
-    typename CompletionCondition>
-std::size_t read(SyncReadStream& s, basic_streambuf<Allocator>& b,
-    CompletionCondition completion_condition);
-
-/// Attempt to read a certain amount of data from a stream before returning.
-/**
- * This function is used to read a certain number of bytes of data from a
- * stream. The call will block until one of the following conditions is true:
- *
- * @li The supplied buffer is full (that is, it has reached maximum size).
- *
- * @li The completion_condition function object returns 0.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * read_some function.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the SyncReadStream concept.
- *
- * @param b The basic_streambuf object into which the data will be read.
- *
- * @param completion_condition The function object to be called to determine
- * whether the read operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- *   // Result of latest read_some operation.
- *   const asio::error_code& error,
- *
- *   // Number of bytes transferred so far.
- *   std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the read operation is complete. A non-zero
- * return value indicates the maximum number of bytes to be read on the next
- * call to the stream's read_some function.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes read. If an error occurs, returns the total
- * number of bytes successfully transferred prior to the error.
- */
-template <typename SyncReadStream, typename Allocator,
-    typename CompletionCondition>
-std::size_t read(SyncReadStream& s, basic_streambuf<Allocator>& b,
-    CompletionCondition completion_condition, asio::error_code& ec);
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-/*@}*/
-/**
- * @defgroup async_read asio::async_read
- *
- * @brief Start an asynchronous operation to read a certain amount of data from
- * a stream.
- */
-/*@{*/
-
-/// Start an asynchronous operation to read a certain amount of data from a
-/// stream.
-/**
- * This function is used to asynchronously read a certain number of bytes of
- * data from a stream. The function call always returns immediately. The
- * asynchronous operation will continue until one of the following conditions is
- * true:
- *
- * @li The supplied buffers are full. That is, the bytes transferred is equal to
- * the sum of the buffer sizes.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * async_read_some function, and is known as a <em>composed operation</em>. The
- * program must ensure that the stream performs no other read operations (such
- * as async_read, the stream's async_read_some function, or any other composed
- * operations that perform reads) until this operation completes.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the AsyncReadStream concept.
- *
- * @param buffers One or more buffers into which the data will be read. The sum
- * of the buffer sizes indicates the maximum number of bytes to read from the
- * stream. Although the buffers object may be copied as necessary, ownership of
- * the underlying memory blocks is retained by the caller, which must guarantee
- * that they remain valid until the handler is called.
- *
- * @param handler The handler to be called when the read operation completes.
- * Copies will be made of the handler as required. The function signature of the
- * handler must be:
- * @code void handler(
- *   const asio::error_code& error, // Result of operation.
- *
- *   std::size_t bytes_transferred           // Number of bytes copied into the
- *                                           // buffers. If an error occurred,
- *                                           // this will be the  number of
- *                                           // bytes successfully transferred
- *                                           // prior to the error.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation of
- * the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @par Example
- * To read into a single data buffer use the @ref buffer function as follows:
- * @code
- * asio::async_read(s, asio::buffer(data, size), handler);
- * @endcode
- * See the @ref buffer documentation for information on reading into multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- *
- * @note This overload is equivalent to calling:
- * @code asio::async_read(
- *     s, buffers,
- *     asio::transfer_all(),
- *     handler); @endcode
- */
-template <typename AsyncReadStream, typename MutableBufferSequence,
-    typename ReadHandler>
-ASIO_INITFN_RESULT_TYPE(ReadHandler,
-    void (asio::error_code, std::size_t))
-async_read(AsyncReadStream& s, const MutableBufferSequence& buffers,
-    ASIO_MOVE_ARG(ReadHandler) handler);
-
-/// Start an asynchronous operation to read a certain amount of data from a
-/// stream.
-/**
- * This function is used to asynchronously read a certain number of bytes of
- * data from a stream. The function call always returns immediately. The
- * asynchronous operation will continue until one of the following conditions is
- * true:
- *
- * @li The supplied buffers are full. That is, the bytes transferred is equal to
- * the sum of the buffer sizes.
- *
- * @li The completion_condition function object returns 0.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the AsyncReadStream concept.
- *
- * @param buffers One or more buffers into which the data will be read. The sum
- * of the buffer sizes indicates the maximum number of bytes to read from the
- * stream. Although the buffers object may be copied as necessary, ownership of
- * the underlying memory blocks is retained by the caller, which must guarantee
- * that they remain valid until the handler is called.
- *
- * @param completion_condition The function object to be called to determine
- * whether the read operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- *   // Result of latest async_read_some operation.
- *   const asio::error_code& error,
- *
- *   // Number of bytes transferred so far.
- *   std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the read operation is complete. A non-zero
- * return value indicates the maximum number of bytes to be read on the next
- * call to the stream's async_read_some function.
- *
- * @param handler The handler to be called when the read operation completes.
- * Copies will be made of the handler as required. The function signature of the
- * handler must be:
- * @code void handler(
- *   const asio::error_code& error, // Result of operation.
- *
- *   std::size_t bytes_transferred           // Number of bytes copied into the
- *                                           // buffers. If an error occurred,
- *                                           // this will be the  number of
- *                                           // bytes successfully transferred
- *                                           // prior to the error.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation of
- * the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @par Example
- * To read into a single data buffer use the @ref buffer function as follows:
- * @code asio::async_read(s,
- *     asio::buffer(data, size),
- *     asio::transfer_at_least(32),
- *     handler); @endcode
- * See the @ref buffer documentation for information on reading into multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
-template <typename AsyncReadStream, typename MutableBufferSequence,
-    typename CompletionCondition, typename ReadHandler>
-ASIO_INITFN_RESULT_TYPE(ReadHandler,
-    void (asio::error_code, std::size_t))
-async_read(AsyncReadStream& s, const MutableBufferSequence& buffers,
-    CompletionCondition completion_condition,
-    ASIO_MOVE_ARG(ReadHandler) handler);
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-/// Start an asynchronous operation to read a certain amount of data from a
-/// stream.
-/**
- * This function is used to asynchronously read a certain number of bytes of
- * data from a stream. The function call always returns immediately. The
- * asynchronous operation will continue until one of the following conditions is
- * true:
- *
- * @li The supplied buffer is full (that is, it has reached maximum size).
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * async_read_some function, and is known as a <em>composed operation</em>. The
- * program must ensure that the stream performs no other read operations (such
- * as async_read, the stream's async_read_some function, or any other composed
- * operations that perform reads) until this operation completes.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the AsyncReadStream concept.
- *
- * @param b A basic_streambuf object into which the data will be read. Ownership
- * of the streambuf is retained by the caller, which must guarantee that it
- * remains valid until the handler is called.
- *
- * @param handler The handler to be called when the read operation completes.
- * Copies will be made of the handler as required. The function signature of the
- * handler must be:
- * @code void handler(
- *   const asio::error_code& error, // Result of operation.
- *
- *   std::size_t bytes_transferred           // Number of bytes copied into the
- *                                           // buffers. If an error occurred,
- *                                           // this will be the  number of
- *                                           // bytes successfully transferred
- *                                           // prior to the error.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation of
- * the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @note This overload is equivalent to calling:
- * @code asio::async_read(
- *     s, b,
- *     asio::transfer_all(),
- *     handler); @endcode
- */
-template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
-ASIO_INITFN_RESULT_TYPE(ReadHandler,
-    void (asio::error_code, std::size_t))
-async_read(AsyncReadStream& s, basic_streambuf<Allocator>& b,
-    ASIO_MOVE_ARG(ReadHandler) handler);
-
-/// Start an asynchronous operation to read a certain amount of data from a
-/// stream.
-/**
- * This function is used to asynchronously read a certain number of bytes of
- * data from a stream. The function call always returns immediately. The
- * asynchronous operation will continue until one of the following conditions is
- * true:
- *
- * @li The supplied buffer is full (that is, it has reached maximum size).
- *
- * @li The completion_condition function object returns 0.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * async_read_some function, and is known as a <em>composed operation</em>. The
- * program must ensure that the stream performs no other read operations (such
- * as async_read, the stream's async_read_some function, or any other composed
- * operations that perform reads) until this operation completes.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the AsyncReadStream concept.
- *
- * @param b A basic_streambuf object into which the data will be read. Ownership
- * of the streambuf is retained by the caller, which must guarantee that it
- * remains valid until the handler is called.
- *
- * @param completion_condition The function object to be called to determine
- * whether the read operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- *   // Result of latest async_read_some operation.
- *   const asio::error_code& error,
- *
- *   // Number of bytes transferred so far.
- *   std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the read operation is complete. A non-zero
- * return value indicates the maximum number of bytes to be read on the next
- * call to the stream's async_read_some function.
- *
- * @param handler The handler to be called when the read operation completes.
- * Copies will be made of the handler as required. The function signature of the
- * handler must be:
- * @code void handler(
- *   const asio::error_code& error, // Result of operation.
- *
- *   std::size_t bytes_transferred           // Number of bytes copied into the
- *                                           // buffers. If an error occurred,
- *                                           // this will be the  number of
- *                                           // bytes successfully transferred
- *                                           // prior to the error.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation of
- * the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- */
-template <typename AsyncReadStream, typename Allocator,
-    typename CompletionCondition, typename ReadHandler>
-ASIO_INITFN_RESULT_TYPE(ReadHandler,
-    void (asio::error_code, std::size_t))
-async_read(AsyncReadStream& s, basic_streambuf<Allocator>& b,
-    CompletionCondition completion_condition,
-    ASIO_MOVE_ARG(ReadHandler) handler);
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-/*@}*/
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/impl/read.hpp"
-
-#endif // ASIO_READ_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/read_at.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/read_at.hpp
deleted file mode 100644
index 15291fc..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/read_at.hpp
+++ /dev/null
@@ -1,664 +0,0 @@
-//
-// read_at.hpp
-// ~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_READ_AT_HPP
-#define ASIO_READ_AT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cstddef>
-#include "asio/async_result.hpp"
-#include "asio/basic_streambuf_fwd.hpp"
-#include "asio/detail/cstdint.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/**
- * @defgroup read_at asio::read_at
- *
- * @brief Attempt to read a certain amount of data at the specified offset
- * before returning.
- */
-/*@{*/
-
-/// Attempt to read a certain amount of data at the specified offset before
-/// returning.
-/**
- * This function is used to read a certain number of bytes of data from a
- * random access device at the specified offset. The call will block until one
- * of the following conditions is true:
- *
- * @li The supplied buffers are full. That is, the bytes transferred is equal to
- * the sum of the buffer sizes.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the device's
- * read_some_at function.
- *
- * @param d The device from which the data is to be read. The type must support
- * the SyncRandomAccessReadDevice concept.
- *
- * @param offset The offset at which the data will be read.
- *
- * @param buffers One or more buffers into which the data will be read. The sum
- * of the buffer sizes indicates the maximum number of bytes to read from the
- * device.
- *
- * @returns The number of bytes transferred.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @par Example
- * To read into a single data buffer use the @ref buffer function as follows:
- * @code asio::read_at(d, 42, asio::buffer(data, size)); @endcode
- * See the @ref buffer documentation for information on reading into multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- *
- * @note This overload is equivalent to calling:
- * @code asio::read_at(
- *     d, 42, buffers,
- *     asio::transfer_all()); @endcode
- */
-template <typename SyncRandomAccessReadDevice, typename MutableBufferSequence>
-std::size_t read_at(SyncRandomAccessReadDevice& d,
-    uint64_t offset, const MutableBufferSequence& buffers);
-
-/// Attempt to read a certain amount of data at the specified offset before
-/// returning.
-/**
- * This function is used to read a certain number of bytes of data from a
- * random access device at the specified offset. The call will block until one
- * of the following conditions is true:
- *
- * @li The supplied buffers are full. That is, the bytes transferred is equal to
- * the sum of the buffer sizes.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the device's
- * read_some_at function.
- *
- * @param d The device from which the data is to be read. The type must support
- * the SyncRandomAccessReadDevice concept.
- *
- * @param offset The offset at which the data will be read.
- *
- * @param buffers One or more buffers into which the data will be read. The sum
- * of the buffer sizes indicates the maximum number of bytes to read from the
- * device.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes transferred.
- *
- * @par Example
- * To read into a single data buffer use the @ref buffer function as follows:
- * @code asio::read_at(d, 42,
- *     asio::buffer(data, size), ec); @endcode
- * See the @ref buffer documentation for information on reading into multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- *
- * @note This overload is equivalent to calling:
- * @code asio::read_at(
- *     d, 42, buffers,
- *     asio::transfer_all(), ec); @endcode
- */
-template <typename SyncRandomAccessReadDevice, typename MutableBufferSequence>
-std::size_t read_at(SyncRandomAccessReadDevice& d,
-    uint64_t offset, const MutableBufferSequence& buffers,
-    asio::error_code& ec);
-
-/// Attempt to read a certain amount of data at the specified offset before
-/// returning.
-/**
- * This function is used to read a certain number of bytes of data from a
- * random access device at the specified offset. The call will block until one
- * of the following conditions is true:
- *
- * @li The supplied buffers are full. That is, the bytes transferred is equal to
- * the sum of the buffer sizes.
- *
- * @li The completion_condition function object returns 0.
- *
- * This operation is implemented in terms of zero or more calls to the device's
- * read_some_at function.
- *
- * @param d The device from which the data is to be read. The type must support
- * the SyncRandomAccessReadDevice concept.
- *
- * @param offset The offset at which the data will be read.
- *
- * @param buffers One or more buffers into which the data will be read. The sum
- * of the buffer sizes indicates the maximum number of bytes to read from the
- * device.
- *
- * @param completion_condition The function object to be called to determine
- * whether the read operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- *   // Result of latest read_some_at operation.
- *   const asio::error_code& error,
- *
- *   // Number of bytes transferred so far.
- *   std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the read operation is complete. A non-zero
- * return value indicates the maximum number of bytes to be read on the next
- * call to the device's read_some_at function.
- *
- * @returns The number of bytes transferred.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @par Example
- * To read into a single data buffer use the @ref buffer function as follows:
- * @code asio::read_at(d, 42, asio::buffer(data, size),
- *     asio::transfer_at_least(32)); @endcode
- * See the @ref buffer documentation for information on reading into multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
-template <typename SyncRandomAccessReadDevice, typename MutableBufferSequence,
-    typename CompletionCondition>
-std::size_t read_at(SyncRandomAccessReadDevice& d,
-    uint64_t offset, const MutableBufferSequence& buffers,
-    CompletionCondition completion_condition);
-
-/// Attempt to read a certain amount of data at the specified offset before
-/// returning.
-/**
- * This function is used to read a certain number of bytes of data from a
- * random access device at the specified offset. The call will block until one
- * of the following conditions is true:
- *
- * @li The supplied buffers are full. That is, the bytes transferred is equal to
- * the sum of the buffer sizes.
- *
- * @li The completion_condition function object returns 0.
- *
- * This operation is implemented in terms of zero or more calls to the device's
- * read_some_at function.
- *
- * @param d The device from which the data is to be read. The type must support
- * the SyncRandomAccessReadDevice concept.
- *
- * @param offset The offset at which the data will be read.
- *
- * @param buffers One or more buffers into which the data will be read. The sum
- * of the buffer sizes indicates the maximum number of bytes to read from the
- * device.
- *
- * @param completion_condition The function object to be called to determine
- * whether the read operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- *   // Result of latest read_some_at operation.
- *   const asio::error_code& error,
- *
- *   // Number of bytes transferred so far.
- *   std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the read operation is complete. A non-zero
- * return value indicates the maximum number of bytes to be read on the next
- * call to the device's read_some_at function.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes read. If an error occurs, returns the total
- * number of bytes successfully transferred prior to the error.
- */
-template <typename SyncRandomAccessReadDevice, typename MutableBufferSequence,
-    typename CompletionCondition>
-std::size_t read_at(SyncRandomAccessReadDevice& d,
-    uint64_t offset, const MutableBufferSequence& buffers,
-    CompletionCondition completion_condition, asio::error_code& ec);
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-/// Attempt to read a certain amount of data at the specified offset before
-/// returning.
-/**
- * This function is used to read a certain number of bytes of data from a
- * random access device at the specified offset. The call will block until one
- * of the following conditions is true:
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the device's
- * read_some_at function.
- *
- * @param d The device from which the data is to be read. The type must support
- * the SyncRandomAccessReadDevice concept.
- *
- * @param offset The offset at which the data will be read.
- *
- * @param b The basic_streambuf object into which the data will be read.
- *
- * @returns The number of bytes transferred.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note This overload is equivalent to calling:
- * @code asio::read_at(
- *     d, 42, b,
- *     asio::transfer_all()); @endcode
- */
-template <typename SyncRandomAccessReadDevice, typename Allocator>
-std::size_t read_at(SyncRandomAccessReadDevice& d,
-    uint64_t offset, basic_streambuf<Allocator>& b);
-
-/// Attempt to read a certain amount of data at the specified offset before
-/// returning.
-/**
- * This function is used to read a certain number of bytes of data from a
- * random access device at the specified offset. The call will block until one
- * of the following conditions is true:
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the device's
- * read_some_at function.
- *
- * @param d The device from which the data is to be read. The type must support
- * the SyncRandomAccessReadDevice concept.
- *
- * @param offset The offset at which the data will be read.
- *
- * @param b The basic_streambuf object into which the data will be read.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes transferred.
- *
- * @note This overload is equivalent to calling:
- * @code asio::read_at(
- *     d, 42, b,
- *     asio::transfer_all(), ec); @endcode
- */
-template <typename SyncRandomAccessReadDevice, typename Allocator>
-std::size_t read_at(SyncRandomAccessReadDevice& d,
-    uint64_t offset, basic_streambuf<Allocator>& b,
-    asio::error_code& ec);
-
-/// Attempt to read a certain amount of data at the specified offset before
-/// returning.
-/**
- * This function is used to read a certain number of bytes of data from a
- * random access device at the specified offset. The call will block until one
- * of the following conditions is true:
- *
- * @li The completion_condition function object returns 0.
- *
- * This operation is implemented in terms of zero or more calls to the device's
- * read_some_at function.
- *
- * @param d The device from which the data is to be read. The type must support
- * the SyncRandomAccessReadDevice concept.
- *
- * @param offset The offset at which the data will be read.
- *
- * @param b The basic_streambuf object into which the data will be read.
- *
- * @param completion_condition The function object to be called to determine
- * whether the read operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- *   // Result of latest read_some_at operation.
- *   const asio::error_code& error,
- *
- *   // Number of bytes transferred so far.
- *   std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the read operation is complete. A non-zero
- * return value indicates the maximum number of bytes to be read on the next
- * call to the device's read_some_at function.
- *
- * @returns The number of bytes transferred.
- *
- * @throws asio::system_error Thrown on failure.
- */
-template <typename SyncRandomAccessReadDevice, typename Allocator,
-    typename CompletionCondition>
-std::size_t read_at(SyncRandomAccessReadDevice& d,
-    uint64_t offset, basic_streambuf<Allocator>& b,
-    CompletionCondition completion_condition);
-
-/// Attempt to read a certain amount of data at the specified offset before
-/// returning.
-/**
- * This function is used to read a certain number of bytes of data from a
- * random access device at the specified offset. The call will block until one
- * of the following conditions is true:
- *
- * @li The completion_condition function object returns 0.
- *
- * This operation is implemented in terms of zero or more calls to the device's
- * read_some_at function.
- *
- * @param d The device from which the data is to be read. The type must support
- * the SyncRandomAccessReadDevice concept.
- *
- * @param offset The offset at which the data will be read.
- *
- * @param b The basic_streambuf object into which the data will be read.
- *
- * @param completion_condition The function object to be called to determine
- * whether the read operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- *   // Result of latest read_some_at operation.
- *   const asio::error_code& error,
- *
- *   // Number of bytes transferred so far.
- *   std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the read operation is complete. A non-zero
- * return value indicates the maximum number of bytes to be read on the next
- * call to the device's read_some_at function.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes read. If an error occurs, returns the total
- * number of bytes successfully transferred prior to the error.
- */
-template <typename SyncRandomAccessReadDevice, typename Allocator,
-    typename CompletionCondition>
-std::size_t read_at(SyncRandomAccessReadDevice& d,
-    uint64_t offset, basic_streambuf<Allocator>& b,
-    CompletionCondition completion_condition, asio::error_code& ec);
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-/*@}*/
-/**
- * @defgroup async_read_at asio::async_read_at
- *
- * @brief Start an asynchronous operation to read a certain amount of data at
- * the specified offset.
- */
-/*@{*/
-
-/// Start an asynchronous operation to read a certain amount of data at the
-/// specified offset.
-/**
- * This function is used to asynchronously read a certain number of bytes of
- * data from a random access device at the specified offset. The function call
- * always returns immediately. The asynchronous operation will continue until
- * one of the following conditions is true:
- *
- * @li The supplied buffers are full. That is, the bytes transferred is equal to
- * the sum of the buffer sizes.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the device's
- * async_read_some_at function.
- *
- * @param d The device from which the data is to be read. The type must support
- * the AsyncRandomAccessReadDevice concept.
- *
- * @param offset The offset at which the data will be read.
- *
- * @param buffers One or more buffers into which the data will be read. The sum
- * of the buffer sizes indicates the maximum number of bytes to read from the
- * device. Although the buffers object may be copied as necessary, ownership of
- * the underlying memory blocks is retained by the caller, which must guarantee
- * that they remain valid until the handler is called.
- *
- * @param handler The handler to be called when the read operation completes.
- * Copies will be made of the handler as required. The function signature of the
- * handler must be:
- * @code void handler(
- *   // Result of operation.
- *   const asio::error_code& error,
- *
- *   // Number of bytes copied into the buffers. If an error
- *   // occurred, this will be the number of bytes successfully
- *   // transferred prior to the error.
- *   std::size_t bytes_transferred
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation of
- * the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @par Example
- * To read into a single data buffer use the @ref buffer function as follows:
- * @code
- * asio::async_read_at(d, 42, asio::buffer(data, size), handler);
- * @endcode
- * See the @ref buffer documentation for information on reading into multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- *
- * @note This overload is equivalent to calling:
- * @code asio::async_read_at(
- *     d, 42, buffers,
- *     asio::transfer_all(),
- *     handler); @endcode
- */
-template <typename AsyncRandomAccessReadDevice, typename MutableBufferSequence,
-    typename ReadHandler>
-ASIO_INITFN_RESULT_TYPE(ReadHandler,
-    void (asio::error_code, std::size_t))
-async_read_at(AsyncRandomAccessReadDevice& d, uint64_t offset,
-    const MutableBufferSequence& buffers,
-    ASIO_MOVE_ARG(ReadHandler) handler);
-
-/// Start an asynchronous operation to read a certain amount of data at the
-/// specified offset.
-/**
- * This function is used to asynchronously read a certain number of bytes of
- * data from a random access device at the specified offset. The function call
- * always returns immediately. The asynchronous operation will continue until
- * one of the following conditions is true:
- *
- * @li The supplied buffers are full. That is, the bytes transferred is equal to
- * the sum of the buffer sizes.
- *
- * @li The completion_condition function object returns 0.
- *
- * @param d The device from which the data is to be read. The type must support
- * the AsyncRandomAccessReadDevice concept.
- *
- * @param offset The offset at which the data will be read.
- *
- * @param buffers One or more buffers into which the data will be read. The sum
- * of the buffer sizes indicates the maximum number of bytes to read from the
- * device. Although the buffers object may be copied as necessary, ownership of
- * the underlying memory blocks is retained by the caller, which must guarantee
- * that they remain valid until the handler is called.
- *
- * @param completion_condition The function object to be called to determine
- * whether the read operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- *   // Result of latest async_read_some_at operation.
- *   const asio::error_code& error,
- *
- *   // Number of bytes transferred so far.
- *   std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the read operation is complete. A non-zero
- * return value indicates the maximum number of bytes to be read on the next
- * call to the device's async_read_some_at function.
- *
- * @param handler The handler to be called when the read operation completes.
- * Copies will be made of the handler as required. The function signature of the
- * handler must be:
- * @code void handler(
- *   // Result of operation.
- *   const asio::error_code& error,
- *
- *   // Number of bytes copied into the buffers. If an error
- *   // occurred, this will be the number of bytes successfully
- *   // transferred prior to the error.
- *   std::size_t bytes_transferred
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation of
- * the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @par Example
- * To read into a single data buffer use the @ref buffer function as follows:
- * @code asio::async_read_at(d, 42,
- *     asio::buffer(data, size),
- *     asio::transfer_at_least(32),
- *     handler); @endcode
- * See the @ref buffer documentation for information on reading into multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
-template <typename AsyncRandomAccessReadDevice, typename MutableBufferSequence,
-    typename CompletionCondition, typename ReadHandler>
-ASIO_INITFN_RESULT_TYPE(ReadHandler,
-    void (asio::error_code, std::size_t))
-async_read_at(AsyncRandomAccessReadDevice& d,
-    uint64_t offset, const MutableBufferSequence& buffers,
-    CompletionCondition completion_condition,
-    ASIO_MOVE_ARG(ReadHandler) handler);
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-/// Start an asynchronous operation to read a certain amount of data at the
-/// specified offset.
-/**
- * This function is used to asynchronously read a certain number of bytes of
- * data from a random access device at the specified offset. The function call
- * always returns immediately. The asynchronous operation will continue until
- * one of the following conditions is true:
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the device's
- * async_read_some_at function.
- *
- * @param d The device from which the data is to be read. The type must support
- * the AsyncRandomAccessReadDevice concept.
- *
- * @param offset The offset at which the data will be read.
- *
- * @param b A basic_streambuf object into which the data will be read. Ownership
- * of the streambuf is retained by the caller, which must guarantee that it
- * remains valid until the handler is called.
- *
- * @param handler The handler to be called when the read operation completes.
- * Copies will be made of the handler as required. The function signature of the
- * handler must be:
- * @code void handler(
- *   // Result of operation.
- *   const asio::error_code& error,
- *
- *   // Number of bytes copied into the buffers. If an error
- *   // occurred, this will be the number of bytes successfully
- *   // transferred prior to the error.
- *   std::size_t bytes_transferred
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation of
- * the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @note This overload is equivalent to calling:
- * @code asio::async_read_at(
- *     d, 42, b,
- *     asio::transfer_all(),
- *     handler); @endcode
- */
-template <typename AsyncRandomAccessReadDevice, typename Allocator,
-    typename ReadHandler>
-ASIO_INITFN_RESULT_TYPE(ReadHandler,
-    void (asio::error_code, std::size_t))
-async_read_at(AsyncRandomAccessReadDevice& d, uint64_t offset,
-    basic_streambuf<Allocator>& b, ASIO_MOVE_ARG(ReadHandler) handler);
-
-/// Start an asynchronous operation to read a certain amount of data at the
-/// specified offset.
-/**
- * This function is used to asynchronously read a certain number of bytes of
- * data from a random access device at the specified offset. The function call
- * always returns immediately. The asynchronous operation will continue until
- * one of the following conditions is true:
- *
- * @li The completion_condition function object returns 0.
- *
- * This operation is implemented in terms of zero or more calls to the device's
- * async_read_some_at function.
- *
- * @param d The device from which the data is to be read. The type must support
- * the AsyncRandomAccessReadDevice concept.
- *
- * @param offset The offset at which the data will be read.
- *
- * @param b A basic_streambuf object into which the data will be read. Ownership
- * of the streambuf is retained by the caller, which must guarantee that it
- * remains valid until the handler is called.
- *
- * @param completion_condition The function object to be called to determine
- * whether the read operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- *   // Result of latest async_read_some_at operation.
- *   const asio::error_code& error,
- *
- *   // Number of bytes transferred so far.
- *   std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the read operation is complete. A non-zero
- * return value indicates the maximum number of bytes to be read on the next
- * call to the device's async_read_some_at function.
- *
- * @param handler The handler to be called when the read operation completes.
- * Copies will be made of the handler as required. The function signature of the
- * handler must be:
- * @code void handler(
- *   // Result of operation.
- *   const asio::error_code& error,
- *
- *   // Number of bytes copied into the buffers. If an error
- *   // occurred, this will be the number of bytes successfully
- *   // transferred prior to the error.
- *   std::size_t bytes_transferred
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation of
- * the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- */
-template <typename AsyncRandomAccessReadDevice, typename Allocator,
-    typename CompletionCondition, typename ReadHandler>
-ASIO_INITFN_RESULT_TYPE(ReadHandler,
-    void (asio::error_code, std::size_t))
-async_read_at(AsyncRandomAccessReadDevice& d,
-    uint64_t offset, basic_streambuf<Allocator>& b,
-    CompletionCondition completion_condition,
-    ASIO_MOVE_ARG(ReadHandler) handler);
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-/*@}*/
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/impl/read_at.hpp"
-
-#endif // ASIO_READ_AT_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/read_until.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/read_until.hpp
deleted file mode 100644
index b1af67f..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/read_until.hpp
+++ /dev/null
@@ -1,923 +0,0 @@
-//
-// read_until.hpp
-// ~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_READ_UNTIL_HPP
-#define ASIO_READ_UNTIL_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-#include <cstddef>
-#include <string>
-#include "asio/async_result.hpp"
-#include "asio/basic_streambuf.hpp"
-#include "asio/detail/regex_fwd.hpp"
-#include "asio/detail/type_traits.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-namespace detail
-{
-  char (&has_result_type_helper(...))[2];
-
-  template <typename T>
-  char has_result_type_helper(T*, typename T::result_type* = 0);
-
-  template <typename T>
-  struct has_result_type
-  {
-    enum { value = (sizeof((has_result_type_helper)((T*)(0))) == 1) };
-  };
-} // namespace detail
-
-/// Type trait used to determine whether a type can be used as a match condition
-/// function with read_until and async_read_until.
-template <typename T>
-struct is_match_condition
-{
-#if defined(GENERATING_DOCUMENTATION)
-  /// The value member is true if the type may be used as a match condition.
-  static const bool value;
-#else
-  enum
-  {
-    value = asio::is_function<
-        typename asio::remove_pointer<T>::type>::value
-      || detail::has_result_type<T>::value
-  };
-#endif
-};
-
-/**
- * @defgroup read_until asio::read_until
- *
- * @brief Read data into a streambuf until it contains a delimiter, matches a
- * regular expression, or a function object indicates a match.
- */
-/*@{*/
-
-/// Read data into a streambuf until it contains a specified delimiter.
-/**
- * This function is used to read data into the specified streambuf until the
- * streambuf's get area contains the specified delimiter. The call will block
- * until one of the following conditions is true:
- *
- * @li The get area of the streambuf contains the specified delimiter.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * read_some function. If the streambuf's get area already contains the
- * delimiter, the function returns immediately.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the SyncReadStream concept.
- *
- * @param b A streambuf object into which the data will be read.
- *
- * @param delim The delimiter character.
- *
- * @returns The number of bytes in the streambuf's get area up to and including
- * the delimiter.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note After a successful read_until operation, the streambuf may contain
- * additional data beyond the delimiter. An application will typically leave
- * that data in the streambuf for a subsequent read_until operation to examine.
- *
- * @par Example
- * To read data into a streambuf until a newline is encountered:
- * @code asio::streambuf b;
- * asio::read_until(s, b, '\n');
- * std::istream is(&b);
- * std::string line;
- * std::getline(is, line); @endcode
- * After the @c read_until operation completes successfully, the buffer @c b
- * contains the delimiter:
- * @code { 'a', 'b', ..., 'c', '\n', 'd', 'e', ... } @endcode
- * The call to @c std::getline then extracts the data up to and including the
- * delimiter, so that the string @c line contains:
- * @code { 'a', 'b', ..., 'c', '\n' } @endcode
- * The remaining data is left in the buffer @c b as follows:
- * @code { 'd', 'e', ... } @endcode
- * This data may be the start of a new line, to be extracted by a subsequent
- * @c read_until operation.
- */
-template <typename SyncReadStream, typename Allocator>
-std::size_t read_until(SyncReadStream& s,
-    asio::basic_streambuf<Allocator>& b, char delim);
-
-/// Read data into a streambuf until it contains a specified delimiter.
-/**
- * This function is used to read data into the specified streambuf until the
- * streambuf's get area contains the specified delimiter. The call will block
- * until one of the following conditions is true:
- *
- * @li The get area of the streambuf contains the specified delimiter.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * read_some function. If the streambuf's get area already contains the
- * delimiter, the function returns immediately.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the SyncReadStream concept.
- *
- * @param b A streambuf object into which the data will be read.
- *
- * @param delim The delimiter character.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes in the streambuf's get area up to and including
- * the delimiter. Returns 0 if an error occurred.
- *
- * @note After a successful read_until operation, the streambuf may contain
- * additional data beyond the delimiter. An application will typically leave
- * that data in the streambuf for a subsequent read_until operation to examine.
- */
-template <typename SyncReadStream, typename Allocator>
-std::size_t read_until(SyncReadStream& s,
-    asio::basic_streambuf<Allocator>& b, char delim,
-    asio::error_code& ec);
-
-/// Read data into a streambuf until it contains a specified delimiter.
-/**
- * This function is used to read data into the specified streambuf until the
- * streambuf's get area contains the specified delimiter. The call will block
- * until one of the following conditions is true:
- *
- * @li The get area of the streambuf contains the specified delimiter.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * read_some function. If the streambuf's get area already contains the
- * delimiter, the function returns immediately.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the SyncReadStream concept.
- *
- * @param b A streambuf object into which the data will be read.
- *
- * @param delim The delimiter string.
- *
- * @returns The number of bytes in the streambuf's get area up to and including
- * the delimiter.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note After a successful read_until operation, the streambuf may contain
- * additional data beyond the delimiter. An application will typically leave
- * that data in the streambuf for a subsequent read_until operation to examine.
- *
- * @par Example
- * To read data into a streambuf until a newline is encountered:
- * @code asio::streambuf b;
- * asio::read_until(s, b, "\r\n");
- * std::istream is(&b);
- * std::string line;
- * std::getline(is, line); @endcode
- * After the @c read_until operation completes successfully, the buffer @c b
- * contains the delimiter:
- * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
- * The call to @c std::getline then extracts the data up to and including the
- * delimiter, so that the string @c line contains:
- * @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
- * The remaining data is left in the buffer @c b as follows:
- * @code { 'd', 'e', ... } @endcode
- * This data may be the start of a new line, to be extracted by a subsequent
- * @c read_until operation.
- */
-template <typename SyncReadStream, typename Allocator>
-std::size_t read_until(SyncReadStream& s,
-    asio::basic_streambuf<Allocator>& b, const std::string& delim);
-
-/// Read data into a streambuf until it contains a specified delimiter.
-/**
- * This function is used to read data into the specified streambuf until the
- * streambuf's get area contains the specified delimiter. The call will block
- * until one of the following conditions is true:
- *
- * @li The get area of the streambuf contains the specified delimiter.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * read_some function. If the streambuf's get area already contains the
- * delimiter, the function returns immediately.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the SyncReadStream concept.
- *
- * @param b A streambuf object into which the data will be read.
- *
- * @param delim The delimiter string.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes in the streambuf's get area up to and including
- * the delimiter. Returns 0 if an error occurred.
- *
- * @note After a successful read_until operation, the streambuf may contain
- * additional data beyond the delimiter. An application will typically leave
- * that data in the streambuf for a subsequent read_until operation to examine.
- */
-template <typename SyncReadStream, typename Allocator>
-std::size_t read_until(SyncReadStream& s,
-    asio::basic_streambuf<Allocator>& b, const std::string& delim,
-    asio::error_code& ec);
-
-#if defined(ASIO_HAS_BOOST_REGEX) \
-  || defined(GENERATING_DOCUMENTATION)
-
-/// Read data into a streambuf until some part of the data it contains matches
-/// a regular expression.
-/**
- * This function is used to read data into the specified streambuf until the
- * streambuf's get area contains some data that matches a regular expression.
- * The call will block until one of the following conditions is true:
- *
- * @li A substring of the streambuf's get area matches the regular expression.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * read_some function. If the streambuf's get area already contains data that
- * matches the regular expression, the function returns immediately.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the SyncReadStream concept.
- *
- * @param b A streambuf object into which the data will be read.
- *
- * @param expr The regular expression.
- *
- * @returns The number of bytes in the streambuf's get area up to and including
- * the substring that matches the regular expression.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note After a successful read_until operation, the streambuf may contain
- * additional data beyond that which matched the regular expression. An
- * application will typically leave that data in the streambuf for a subsequent
- * read_until operation to examine.
- *
- * @par Example
- * To read data into a streambuf until a CR-LF sequence is encountered:
- * @code asio::streambuf b;
- * asio::read_until(s, b, boost::regex("\r\n"));
- * std::istream is(&b);
- * std::string line;
- * std::getline(is, line); @endcode
- * After the @c read_until operation completes successfully, the buffer @c b
- * contains the data which matched the regular expression:
- * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
- * The call to @c std::getline then extracts the data up to and including the
- * match, so that the string @c line contains:
- * @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
- * The remaining data is left in the buffer @c b as follows:
- * @code { 'd', 'e', ... } @endcode
- * This data may be the start of a new line, to be extracted by a subsequent
- * @c read_until operation.
- */
-template <typename SyncReadStream, typename Allocator>
-std::size_t read_until(SyncReadStream& s,
-    asio::basic_streambuf<Allocator>& b, const boost::regex& expr);
-
-/// Read data into a streambuf until some part of the data it contains matches
-/// a regular expression.
-/**
- * This function is used to read data into the specified streambuf until the
- * streambuf's get area contains some data that matches a regular expression.
- * The call will block until one of the following conditions is true:
- *
- * @li A substring of the streambuf's get area matches the regular expression.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * read_some function. If the streambuf's get area already contains data that
- * matches the regular expression, the function returns immediately.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the SyncReadStream concept.
- *
- * @param b A streambuf object into which the data will be read.
- *
- * @param expr The regular expression.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes in the streambuf's get area up to and including
- * the substring that matches the regular expression. Returns 0 if an error
- * occurred.
- *
- * @note After a successful read_until operation, the streambuf may contain
- * additional data beyond that which matched the regular expression. An
- * application will typically leave that data in the streambuf for a subsequent
- * read_until operation to examine.
- */
-template <typename SyncReadStream, typename Allocator>
-std::size_t read_until(SyncReadStream& s,
-    asio::basic_streambuf<Allocator>& b, const boost::regex& expr,
-    asio::error_code& ec);
-
-#endif // defined(ASIO_HAS_BOOST_REGEX)
-       // || defined(GENERATING_DOCUMENTATION)
-
-/// Read data into a streambuf until a function object indicates a match.
-/**
- * This function is used to read data into the specified streambuf until a
- * user-defined match condition function object, when applied to the data
- * contained in the streambuf, indicates a successful match. The call will
- * block until one of the following conditions is true:
- *
- * @li The match condition function object returns a std::pair where the second
- * element evaluates to true.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * read_some function. If the match condition function object already indicates
- * a match, the function returns immediately.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the SyncReadStream concept.
- *
- * @param b A streambuf object into which the data will be read.
- *
- * @param match_condition The function object to be called to determine whether
- * a match exists. The signature of the function object must be:
- * @code pair<iterator, bool> match_condition(iterator begin, iterator end);
- * @endcode
- * where @c iterator represents the type:
- * @code buffers_iterator<basic_streambuf<Allocator>::const_buffers_type>
- * @endcode
- * The iterator parameters @c begin and @c end define the range of bytes to be
- * scanned to determine whether there is a match. The @c first member of the
- * return value is an iterator marking one-past-the-end of the bytes that have
- * been consumed by the match function. This iterator is used to calculate the
- * @c begin parameter for any subsequent invocation of the match condition. The
- * @c second member of the return value is true if a match has been found, false
- * otherwise.
- *
- * @returns The number of bytes in the streambuf's get area that have been fully
- * consumed by the match function.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note After a successful read_until operation, the streambuf may contain
- * additional data beyond that which matched the function object. An application
- * will typically leave that data in the streambuf for a subsequent
- *
- * @note The default implementation of the @c is_match_condition type trait
- * evaluates to true for function pointers and function objects with a
- * @c result_type typedef. It must be specialised for other user-defined
- * function objects.
- *
- * @par Examples
- * To read data into a streambuf until whitespace is encountered:
- * @code typedef asio::buffers_iterator<
- *     asio::streambuf::const_buffers_type> iterator;
- *
- * std::pair<iterator, bool>
- * match_whitespace(iterator begin, iterator end)
- * {
- *   iterator i = begin;
- *   while (i != end)
- *     if (std::isspace(*i++))
- *       return std::make_pair(i, true);
- *   return std::make_pair(i, false);
- * }
- * ...
- * asio::streambuf b;
- * asio::read_until(s, b, match_whitespace);
- * @endcode
- *
- * To read data into a streambuf until a matching character is found:
- * @code class match_char
- * {
- * public:
- *   explicit match_char(char c) : c_(c) {}
- *
- *   template <typename Iterator>
- *   std::pair<Iterator, bool> operator()(
- *       Iterator begin, Iterator end) const
- *   {
- *     Iterator i = begin;
- *     while (i != end)
- *       if (c_ == *i++)
- *         return std::make_pair(i, true);
- *     return std::make_pair(i, false);
- *   }
- *
- * private:
- *   char c_;
- * };
- *
- * namespace asio {
- *   template <> struct is_match_condition<match_char>
- *     : public boost::true_type {};
- * } // namespace asio
- * ...
- * asio::streambuf b;
- * asio::read_until(s, b, match_char('a'));
- * @endcode
- */
-template <typename SyncReadStream, typename Allocator, typename MatchCondition>
-std::size_t read_until(SyncReadStream& s,
-    asio::basic_streambuf<Allocator>& b, MatchCondition match_condition,
-    typename enable_if<is_match_condition<MatchCondition>::value>::type* = 0);
-
-/// Read data into a streambuf until a function object indicates a match.
-/**
- * This function is used to read data into the specified streambuf until a
- * user-defined match condition function object, when applied to the data
- * contained in the streambuf, indicates a successful match. The call will
- * block until one of the following conditions is true:
- *
- * @li The match condition function object returns a std::pair where the second
- * element evaluates to true.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * read_some function. If the match condition function object already indicates
- * a match, the function returns immediately.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the SyncReadStream concept.
- *
- * @param b A streambuf object into which the data will be read.
- *
- * @param match_condition The function object to be called to determine whether
- * a match exists. The signature of the function object must be:
- * @code pair<iterator, bool> match_condition(iterator begin, iterator end);
- * @endcode
- * where @c iterator represents the type:
- * @code buffers_iterator<basic_streambuf<Allocator>::const_buffers_type>
- * @endcode
- * The iterator parameters @c begin and @c end define the range of bytes to be
- * scanned to determine whether there is a match. The @c first member of the
- * return value is an iterator marking one-past-the-end of the bytes that have
- * been consumed by the match function. This iterator is used to calculate the
- * @c begin parameter for any subsequent invocation of the match condition. The
- * @c second member of the return value is true if a match has been found, false
- * otherwise.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes in the streambuf's get area that have been fully
- * consumed by the match function. Returns 0 if an error occurred.
- *
- * @note After a successful read_until operation, the streambuf may contain
- * additional data beyond that which matched the function object. An application
- * will typically leave that data in the streambuf for a subsequent
- *
- * @note The default implementation of the @c is_match_condition type trait
- * evaluates to true for function pointers and function objects with a
- * @c result_type typedef. It must be specialised for other user-defined
- * function objects.
- */
-template <typename SyncReadStream, typename Allocator, typename MatchCondition>
-std::size_t read_until(SyncReadStream& s,
-    asio::basic_streambuf<Allocator>& b,
-    MatchCondition match_condition, asio::error_code& ec,
-    typename enable_if<is_match_condition<MatchCondition>::value>::type* = 0);
-
-/*@}*/
-/**
- * @defgroup async_read_until asio::async_read_until
- *
- * @brief Start an asynchronous operation to read data into a streambuf until it
- * contains a delimiter, matches a regular expression, or a function object
- * indicates a match.
- */
-/*@{*/
-
-/// Start an asynchronous operation to read data into a streambuf until it
-/// contains a specified delimiter.
-/**
- * This function is used to asynchronously read data into the specified
- * streambuf until the streambuf's get area contains the specified delimiter.
- * The function call always returns immediately. The asynchronous operation
- * will continue until one of the following conditions is true:
- *
- * @li The get area of the streambuf contains the specified delimiter.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * async_read_some function, and is known as a <em>composed operation</em>. If
- * the streambuf's get area already contains the delimiter, this asynchronous
- * operation completes immediately. The program must ensure that the stream
- * performs no other read operations (such as async_read, async_read_until, the
- * stream's async_read_some function, or any other composed operations that
- * perform reads) until this operation completes.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the AsyncReadStream concept.
- *
- * @param b A streambuf object into which the data will be read. Ownership of
- * the streambuf is retained by the caller, which must guarantee that it remains
- * valid until the handler is called.
- *
- * @param delim The delimiter character.
- *
- * @param handler The handler to be called when the read operation completes.
- * Copies will be made of the handler as required. The function signature of the
- * handler must be:
- * @code void handler(
- *   // Result of operation.
- *   const asio::error_code& error,
- *
- *   // The number of bytes in the streambuf's get
- *   // area up to and including the delimiter.
- *   // 0 if an error occurred.
- *   std::size_t bytes_transferred
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation of
- * the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @note After a successful async_read_until operation, the streambuf may
- * contain additional data beyond the delimiter. An application will typically
- * leave that data in the streambuf for a subsequent async_read_until operation
- * to examine.
- *
- * @par Example
- * To asynchronously read data into a streambuf until a newline is encountered:
- * @code asio::streambuf b;
- * ...
- * void handler(const asio::error_code& e, std::size_t size)
- * {
- *   if (!e)
- *   {
- *     std::istream is(&b);
- *     std::string line;
- *     std::getline(is, line);
- *     ...
- *   }
- * }
- * ...
- * asio::async_read_until(s, b, '\n', handler); @endcode
- * After the @c async_read_until operation completes successfully, the buffer
- * @c b contains the delimiter:
- * @code { 'a', 'b', ..., 'c', '\n', 'd', 'e', ... } @endcode
- * The call to @c std::getline then extracts the data up to and including the
- * delimiter, so that the string @c line contains:
- * @code { 'a', 'b', ..., 'c', '\n' } @endcode
- * The remaining data is left in the buffer @c b as follows:
- * @code { 'd', 'e', ... } @endcode
- * This data may be the start of a new line, to be extracted by a subsequent
- * @c async_read_until operation.
- */
-template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
-ASIO_INITFN_RESULT_TYPE(ReadHandler,
-    void (asio::error_code, std::size_t))
-async_read_until(AsyncReadStream& s,
-    asio::basic_streambuf<Allocator>& b,
-    char delim, ASIO_MOVE_ARG(ReadHandler) handler);
-
-/// Start an asynchronous operation to read data into a streambuf until it
-/// contains a specified delimiter.
-/**
- * This function is used to asynchronously read data into the specified
- * streambuf until the streambuf's get area contains the specified delimiter.
- * The function call always returns immediately. The asynchronous operation
- * will continue until one of the following conditions is true:
- *
- * @li The get area of the streambuf contains the specified delimiter.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * async_read_some function, and is known as a <em>composed operation</em>. If
- * the streambuf's get area already contains the delimiter, this asynchronous
- * operation completes immediately. The program must ensure that the stream
- * performs no other read operations (such as async_read, async_read_until, the
- * stream's async_read_some function, or any other composed operations that
- * perform reads) until this operation completes.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the AsyncReadStream concept.
- *
- * @param b A streambuf object into which the data will be read. Ownership of
- * the streambuf is retained by the caller, which must guarantee that it remains
- * valid until the handler is called.
- *
- * @param delim The delimiter string.
- *
- * @param handler The handler to be called when the read operation completes.
- * Copies will be made of the handler as required. The function signature of the
- * handler must be:
- * @code void handler(
- *   // Result of operation.
- *   const asio::error_code& error,
- *
- *   // The number of bytes in the streambuf's get
- *   // area up to and including the delimiter.
- *   // 0 if an error occurred.
- *   std::size_t bytes_transferred
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation of
- * the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @note After a successful async_read_until operation, the streambuf may
- * contain additional data beyond the delimiter. An application will typically
- * leave that data in the streambuf for a subsequent async_read_until operation
- * to examine.
- *
- * @par Example
- * To asynchronously read data into a streambuf until a newline is encountered:
- * @code asio::streambuf b;
- * ...
- * void handler(const asio::error_code& e, std::size_t size)
- * {
- *   if (!e)
- *   {
- *     std::istream is(&b);
- *     std::string line;
- *     std::getline(is, line);
- *     ...
- *   }
- * }
- * ...
- * asio::async_read_until(s, b, "\r\n", handler); @endcode
- * After the @c async_read_until operation completes successfully, the buffer
- * @c b contains the delimiter:
- * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
- * The call to @c std::getline then extracts the data up to and including the
- * delimiter, so that the string @c line contains:
- * @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
- * The remaining data is left in the buffer @c b as follows:
- * @code { 'd', 'e', ... } @endcode
- * This data may be the start of a new line, to be extracted by a subsequent
- * @c async_read_until operation.
- */
-template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
-ASIO_INITFN_RESULT_TYPE(ReadHandler,
-    void (asio::error_code, std::size_t))
-async_read_until(AsyncReadStream& s,
-    asio::basic_streambuf<Allocator>& b, const std::string& delim,
-    ASIO_MOVE_ARG(ReadHandler) handler);
-
-#if defined(ASIO_HAS_BOOST_REGEX) \
-  || defined(GENERATING_DOCUMENTATION)
-
-/// Start an asynchronous operation to read data into a streambuf until some
-/// part of its data matches a regular expression.
-/**
- * This function is used to asynchronously read data into the specified
- * streambuf until the streambuf's get area contains some data that matches a
- * regular expression. The function call always returns immediately. The
- * asynchronous operation will continue until one of the following conditions
- * is true:
- *
- * @li A substring of the streambuf's get area matches the regular expression.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * async_read_some function, and is known as a <em>composed operation</em>. If
- * the streambuf's get area already contains data that matches the regular
- * expression, this asynchronous operation completes immediately. The program
- * must ensure that the stream performs no other read operations (such as
- * async_read, async_read_until, the stream's async_read_some function, or any
- * other composed operations that perform reads) until this operation
- * completes.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the AsyncReadStream concept.
- *
- * @param b A streambuf object into which the data will be read. Ownership of
- * the streambuf is retained by the caller, which must guarantee that it remains
- * valid until the handler is called.
- *
- * @param expr The regular expression.
- *
- * @param handler The handler to be called when the read operation completes.
- * Copies will be made of the handler as required. The function signature of the
- * handler must be:
- * @code void handler(
- *   // Result of operation.
- *   const asio::error_code& error,
- *
- *   // The number of bytes in the streambuf's get
- *   // area up to and including the substring
- *   // that matches the regular. expression.
- *   // 0 if an error occurred.
- *   std::size_t bytes_transferred
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation of
- * the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @note After a successful async_read_until operation, the streambuf may
- * contain additional data beyond that which matched the regular expression. An
- * application will typically leave that data in the streambuf for a subsequent
- * async_read_until operation to examine.
- *
- * @par Example
- * To asynchronously read data into a streambuf until a CR-LF sequence is
- * encountered:
- * @code asio::streambuf b;
- * ...
- * void handler(const asio::error_code& e, std::size_t size)
- * {
- *   if (!e)
- *   {
- *     std::istream is(&b);
- *     std::string line;
- *     std::getline(is, line);
- *     ...
- *   }
- * }
- * ...
- * asio::async_read_until(s, b, boost::regex("\r\n"), handler); @endcode
- * After the @c async_read_until operation completes successfully, the buffer
- * @c b contains the data which matched the regular expression:
- * @code { 'a', 'b', ..., 'c', '\r', '\n', 'd', 'e', ... } @endcode
- * The call to @c std::getline then extracts the data up to and including the
- * match, so that the string @c line contains:
- * @code { 'a', 'b', ..., 'c', '\r', '\n' } @endcode
- * The remaining data is left in the buffer @c b as follows:
- * @code { 'd', 'e', ... } @endcode
- * This data may be the start of a new line, to be extracted by a subsequent
- * @c async_read_until operation.
- */
-template <typename AsyncReadStream, typename Allocator, typename ReadHandler>
-ASIO_INITFN_RESULT_TYPE(ReadHandler,
-    void (asio::error_code, std::size_t))
-async_read_until(AsyncReadStream& s,
-    asio::basic_streambuf<Allocator>& b, const boost::regex& expr,
-    ASIO_MOVE_ARG(ReadHandler) handler);
-
-#endif // defined(ASIO_HAS_BOOST_REGEX)
-       // || defined(GENERATING_DOCUMENTATION)
-
-/// Start an asynchronous operation to read data into a streambuf until a
-/// function object indicates a match.
-/**
- * This function is used to asynchronously read data into the specified
- * streambuf until a user-defined match condition function object, when applied
- * to the data contained in the streambuf, indicates a successful match. The
- * function call always returns immediately. The asynchronous operation will
- * continue until one of the following conditions is true:
- *
- * @li The match condition function object returns a std::pair where the second
- * element evaluates to true.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * async_read_some function, and is known as a <em>composed operation</em>. If
- * the match condition function object already indicates a match, this
- * asynchronous operation completes immediately. The program must ensure that
- * the stream performs no other read operations (such as async_read,
- * async_read_until, the stream's async_read_some function, or any other
- * composed operations that perform reads) until this operation completes.
- *
- * @param s The stream from which the data is to be read. The type must support
- * the AsyncReadStream concept.
- *
- * @param b A streambuf object into which the data will be read.
- *
- * @param match_condition The function object to be called to determine whether
- * a match exists. The signature of the function object must be:
- * @code pair<iterator, bool> match_condition(iterator begin, iterator end);
- * @endcode
- * where @c iterator represents the type:
- * @code buffers_iterator<basic_streambuf<Allocator>::const_buffers_type>
- * @endcode
- * The iterator parameters @c begin and @c end define the range of bytes to be
- * scanned to determine whether there is a match. The @c first member of the
- * return value is an iterator marking one-past-the-end of the bytes that have
- * been consumed by the match function. This iterator is used to calculate the
- * @c begin parameter for any subsequent invocation of the match condition. The
- * @c second member of the return value is true if a match has been found, false
- * otherwise.
- *
- * @param handler The handler to be called when the read operation completes.
- * Copies will be made of the handler as required. The function signature of the
- * handler must be:
- * @code void handler(
- *   // Result of operation.
- *   const asio::error_code& error,
- *
- *   // The number of bytes in the streambuf's get
- *   // area that have been fully consumed by the
- *   // match function. O if an error occurred.
- *   std::size_t bytes_transferred
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation of
- * the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @note After a successful async_read_until operation, the streambuf may
- * contain additional data beyond that which matched the function object. An
- * application will typically leave that data in the streambuf for a subsequent
- * async_read_until operation to examine.
- *
- * @note The default implementation of the @c is_match_condition type trait
- * evaluates to true for function pointers and function objects with a
- * @c result_type typedef. It must be specialised for other user-defined
- * function objects.
- *
- * @par Examples
- * To asynchronously read data into a streambuf until whitespace is encountered:
- * @code typedef asio::buffers_iterator<
- *     asio::streambuf::const_buffers_type> iterator;
- *
- * std::pair<iterator, bool>
- * match_whitespace(iterator begin, iterator end)
- * {
- *   iterator i = begin;
- *   while (i != end)
- *     if (std::isspace(*i++))
- *       return std::make_pair(i, true);
- *   return std::make_pair(i, false);
- * }
- * ...
- * void handler(const asio::error_code& e, std::size_t size);
- * ...
- * asio::streambuf b;
- * asio::async_read_until(s, b, match_whitespace, handler);
- * @endcode
- *
- * To asynchronously read data into a streambuf until a matching character is
- * found:
- * @code class match_char
- * {
- * public:
- *   explicit match_char(char c) : c_(c) {}
- *
- *   template <typename Iterator>
- *   std::pair<Iterator, bool> operator()(
- *       Iterator begin, Iterator end) const
- *   {
- *     Iterator i = begin;
- *     while (i != end)
- *       if (c_ == *i++)
- *         return std::make_pair(i, true);
- *     return std::make_pair(i, false);
- *   }
- *
- * private:
- *   char c_;
- * };
- *
- * namespace asio {
- *   template <> struct is_match_condition<match_char>
- *     : public boost::true_type {};
- * } // namespace asio
- * ...
- * void handler(const asio::error_code& e, std::size_t size);
- * ...
- * asio::streambuf b;
- * asio::async_read_until(s, b, match_char('a'), handler);
- * @endcode
- */
-template <typename AsyncReadStream, typename Allocator,
-    typename MatchCondition, typename ReadHandler>
-ASIO_INITFN_RESULT_TYPE(ReadHandler,
-    void (asio::error_code, std::size_t))
-async_read_until(AsyncReadStream& s,
-    asio::basic_streambuf<Allocator>& b,
-    MatchCondition match_condition, ASIO_MOVE_ARG(ReadHandler) handler,
-    typename enable_if<is_match_condition<MatchCondition>::value>::type* = 0);
-
-/*@}*/
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/impl/read_until.hpp"
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-#endif // ASIO_READ_UNTIL_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/seq_packet_socket_service.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/seq_packet_socket_service.hpp
deleted file mode 100644
index e25ee5c..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/seq_packet_socket_service.hpp
+++ /dev/null
@@ -1,380 +0,0 @@
-//
-// seq_packet_socket_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SEQ_PACKET_SOCKET_SERVICE_HPP
-#define ASIO_SEQ_PACKET_SOCKET_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cstddef>
-#include "asio/async_result.hpp"
-#include "asio/detail/type_traits.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-# include "asio/detail/null_socket_service.hpp"
-#elif defined(ASIO_HAS_IOCP)
-# include "asio/detail/win_iocp_socket_service.hpp"
-#else
-# include "asio/detail/reactive_socket_service.hpp"
-#endif
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Default service implementation for a sequenced packet socket.
-template <typename Protocol>
-class seq_packet_socket_service
-#if defined(GENERATING_DOCUMENTATION)
-  : public asio::io_service::service
-#else
-  : public asio::detail::service_base<
-      seq_packet_socket_service<Protocol> >
-#endif
-{
-public:
-#if defined(GENERATING_DOCUMENTATION)
-  /// The unique service identifier.
-  static asio::io_service::id id;
-#endif
-
-  /// The protocol type.
-  typedef Protocol protocol_type;
-
-  /// The endpoint type.
-  typedef typename Protocol::endpoint endpoint_type;
-
-private:
-  // The type of the platform-specific implementation.
-#if defined(ASIO_WINDOWS_RUNTIME)
-  typedef detail::null_socket_service<Protocol> service_impl_type;
-#elif defined(ASIO_HAS_IOCP)
-  typedef detail::win_iocp_socket_service<Protocol> service_impl_type;
-#else
-  typedef detail::reactive_socket_service<Protocol> service_impl_type;
-#endif
-
-public:
-  /// The type of a sequenced packet socket implementation.
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined implementation_type;
-#else
-  typedef typename service_impl_type::implementation_type implementation_type;
-#endif
-
-  /// (Deprecated: Use native_handle_type.) The native socket type.
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined native_type;
-#else
-  typedef typename service_impl_type::native_handle_type native_type;
-#endif
-
-  /// The native socket type.
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined native_handle_type;
-#else
-  typedef typename service_impl_type::native_handle_type native_handle_type;
-#endif
-
-  /// Construct a new sequenced packet socket service for the specified
-  /// io_service.
-  explicit seq_packet_socket_service(asio::io_service& io_service)
-    : asio::detail::service_base<
-        seq_packet_socket_service<Protocol> >(io_service),
-      service_impl_(io_service)
-  {
-  }
-
-  /// Construct a new sequenced packet socket implementation.
-  void construct(implementation_type& impl)
-  {
-    service_impl_.construct(impl);
-  }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-  /// Move-construct a new sequenced packet socket implementation.
-  void move_construct(implementation_type& impl,
-      implementation_type& other_impl)
-  {
-    service_impl_.move_construct(impl, other_impl);
-  }
-
-  /// Move-assign from another sequenced packet socket implementation.
-  void move_assign(implementation_type& impl,
-      seq_packet_socket_service& other_service,
-      implementation_type& other_impl)
-  {
-    service_impl_.move_assign(impl, other_service.service_impl_, other_impl);
-  }
-
-  /// Move-construct a new sequenced packet socket implementation from another
-  /// protocol type.
-  template <typename Protocol1>
-  void converting_move_construct(implementation_type& impl,
-      typename seq_packet_socket_service<
-        Protocol1>::implementation_type& other_impl,
-      typename enable_if<is_convertible<
-        Protocol1, Protocol>::value>::type* = 0)
-  {
-    service_impl_.template converting_move_construct<Protocol1>(
-        impl, other_impl);
-  }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
-  /// Destroy a sequenced packet socket implementation.
-  void destroy(implementation_type& impl)
-  {
-    service_impl_.destroy(impl);
-  }
-
-  /// Open a sequenced packet socket.
-  asio::error_code open(implementation_type& impl,
-      const protocol_type& protocol, asio::error_code& ec)
-  {
-    if (protocol.type() == ASIO_OS_DEF(SOCK_SEQPACKET))
-      service_impl_.open(impl, protocol, ec);
-    else
-      ec = asio::error::invalid_argument;
-    return ec;
-  }
-
-  /// Assign an existing native socket to a sequenced packet socket.
-  asio::error_code assign(implementation_type& impl,
-      const protocol_type& protocol, const native_handle_type& native_socket,
-      asio::error_code& ec)
-  {
-    return service_impl_.assign(impl, protocol, native_socket, ec);
-  }
-
-  /// Determine whether the socket is open.
-  bool is_open(const implementation_type& impl) const
-  {
-    return service_impl_.is_open(impl);
-  }
-
-  /// Close a sequenced packet socket implementation.
-  asio::error_code close(implementation_type& impl,
-      asio::error_code& ec)
-  {
-    return service_impl_.close(impl, ec);
-  }
-
-  /// (Deprecated: Use native_handle().) Get the native socket implementation.
-  native_type native(implementation_type& impl)
-  {
-    return service_impl_.native_handle(impl);
-  }
-
-  /// Get the native socket implementation.
-  native_handle_type native_handle(implementation_type& impl)
-  {
-    return service_impl_.native_handle(impl);
-  }
-
-  /// Cancel all asynchronous operations associated with the socket.
-  asio::error_code cancel(implementation_type& impl,
-      asio::error_code& ec)
-  {
-    return service_impl_.cancel(impl, ec);
-  }
-
-  /// Determine whether the socket is at the out-of-band data mark.
-  bool at_mark(const implementation_type& impl,
-      asio::error_code& ec) const
-  {
-    return service_impl_.at_mark(impl, ec);
-  }
-
-  /// Determine the number of bytes available for reading.
-  std::size_t available(const implementation_type& impl,
-      asio::error_code& ec) const
-  {
-    return service_impl_.available(impl, ec);
-  }
-
-  /// Bind the sequenced packet socket to the specified local endpoint.
-  asio::error_code bind(implementation_type& impl,
-      const endpoint_type& endpoint, asio::error_code& ec)
-  {
-    return service_impl_.bind(impl, endpoint, ec);
-  }
-
-  /// Connect the sequenced packet socket to the specified endpoint.
-  asio::error_code connect(implementation_type& impl,
-      const endpoint_type& peer_endpoint, asio::error_code& ec)
-  {
-    return service_impl_.connect(impl, peer_endpoint, ec);
-  }
-
-  /// Start an asynchronous connect.
-  template <typename ConnectHandler>
-  ASIO_INITFN_RESULT_TYPE(ConnectHandler,
-      void (asio::error_code))
-  async_connect(implementation_type& impl,
-      const endpoint_type& peer_endpoint,
-      ASIO_MOVE_ARG(ConnectHandler) handler)
-  {
-    detail::async_result_init<
-      ConnectHandler, void (asio::error_code)> init(
-        ASIO_MOVE_CAST(ConnectHandler)(handler));
-
-    service_impl_.async_connect(impl, peer_endpoint, init.handler);
-
-    return init.result.get();
-  }
-
-  /// Set a socket option.
-  template <typename SettableSocketOption>
-  asio::error_code set_option(implementation_type& impl,
-      const SettableSocketOption& option, asio::error_code& ec)
-  {
-    return service_impl_.set_option(impl, option, ec);
-  }
-
-  /// Get a socket option.
-  template <typename GettableSocketOption>
-  asio::error_code get_option(const implementation_type& impl,
-      GettableSocketOption& option, asio::error_code& ec) const
-  {
-    return service_impl_.get_option(impl, option, ec);
-  }
-
-  /// Perform an IO control command on the socket.
-  template <typename IoControlCommand>
-  asio::error_code io_control(implementation_type& impl,
-      IoControlCommand& command, asio::error_code& ec)
-  {
-    return service_impl_.io_control(impl, command, ec);
-  }
-
-  /// Gets the non-blocking mode of the socket.
-  bool non_blocking(const implementation_type& impl) const
-  {
-    return service_impl_.non_blocking(impl);
-  }
-
-  /// Sets the non-blocking mode of the socket.
-  asio::error_code non_blocking(implementation_type& impl,
-      bool mode, asio::error_code& ec)
-  {
-    return service_impl_.non_blocking(impl, mode, ec);
-  }
-
-  /// Gets the non-blocking mode of the native socket implementation.
-  bool native_non_blocking(const implementation_type& impl) const
-  {
-    return service_impl_.native_non_blocking(impl);
-  }
-
-  /// Sets the non-blocking mode of the native socket implementation.
-  asio::error_code native_non_blocking(implementation_type& impl,
-      bool mode, asio::error_code& ec)
-  {
-    return service_impl_.native_non_blocking(impl, mode, ec);
-  }
-
-  /// Get the local endpoint.
-  endpoint_type local_endpoint(const implementation_type& impl,
-      asio::error_code& ec) const
-  {
-    return service_impl_.local_endpoint(impl, ec);
-  }
-
-  /// Get the remote endpoint.
-  endpoint_type remote_endpoint(const implementation_type& impl,
-      asio::error_code& ec) const
-  {
-    return service_impl_.remote_endpoint(impl, ec);
-  }
-
-  /// Disable sends or receives on the socket.
-  asio::error_code shutdown(implementation_type& impl,
-      socket_base::shutdown_type what, asio::error_code& ec)
-  {
-    return service_impl_.shutdown(impl, what, ec);
-  }
-
-  /// Send the given data to the peer.
-  template <typename ConstBufferSequence>
-  std::size_t send(implementation_type& impl,
-      const ConstBufferSequence& buffers,
-      socket_base::message_flags flags, asio::error_code& ec)
-  {
-    return service_impl_.send(impl, buffers, flags, ec);
-  }
-
-  /// Start an asynchronous send.
-  template <typename ConstBufferSequence, typename WriteHandler>
-  ASIO_INITFN_RESULT_TYPE(WriteHandler,
-      void (asio::error_code, std::size_t))
-  async_send(implementation_type& impl,
-      const ConstBufferSequence& buffers,
-      socket_base::message_flags flags,
-      ASIO_MOVE_ARG(WriteHandler) handler)
-  {
-    detail::async_result_init<
-      WriteHandler, void (asio::error_code, std::size_t)> init(
-        ASIO_MOVE_CAST(WriteHandler)(handler));
-
-    service_impl_.async_send(impl, buffers, flags, init.handler);
-
-    return init.result.get();
-  }
-
-  /// Receive some data from the peer.
-  template <typename MutableBufferSequence>
-  std::size_t receive(implementation_type& impl,
-      const MutableBufferSequence& buffers, socket_base::message_flags in_flags,
-      socket_base::message_flags& out_flags, asio::error_code& ec)
-  {
-    return service_impl_.receive_with_flags(impl,
-        buffers, in_flags, out_flags, ec);
-  }
-
-  /// Start an asynchronous receive.
-  template <typename MutableBufferSequence, typename ReadHandler>
-  ASIO_INITFN_RESULT_TYPE(ReadHandler,
-      void (asio::error_code, std::size_t))
-  async_receive(implementation_type& impl,
-      const MutableBufferSequence& buffers, socket_base::message_flags in_flags,
-      socket_base::message_flags& out_flags,
-      ASIO_MOVE_ARG(ReadHandler) handler)
-  {
-    detail::async_result_init<
-      ReadHandler, void (asio::error_code, std::size_t)> init(
-        ASIO_MOVE_CAST(ReadHandler)(handler));
-
-    service_impl_.async_receive_with_flags(impl,
-        buffers, in_flags, out_flags, init.handler);
-
-    return init.result.get();
-  }
-
-private:
-  // Destroy all user-defined handler objects owned by the service.
-  void shutdown_service()
-  {
-    service_impl_.shutdown_service();
-  }
-
-  // The platform-specific implementation.
-  service_impl_type service_impl_;
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SEQ_PACKET_SOCKET_SERVICE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/serial_port.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/serial_port.hpp
deleted file mode 100644
index f5ac715..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/serial_port.hpp
+++ /dev/null
@@ -1,36 +0,0 @@
-//
-// serial_port.hpp
-// ~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SERIAL_PORT_HPP
-#define ASIO_SERIAL_PORT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_SERIAL_PORT) \
-  || defined(GENERATING_DOCUMENTATION)
-
-#include "asio/basic_serial_port.hpp"
-
-namespace asio {
-
-/// Typedef for the typical usage of a serial port.
-typedef basic_serial_port<> serial_port;
-
-} // namespace asio
-
-#endif // defined(ASIO_HAS_SERIAL_PORT)
-       //   || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_SERIAL_PORT_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/serial_port_base.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/serial_port_base.hpp
deleted file mode 100644
index a6d8652..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/serial_port_base.hpp
+++ /dev/null
@@ -1,167 +0,0 @@
-//
-// serial_port_base.hpp
-// ~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2008 Rep Invariant Systems, Inc. (info@repinvariant.com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SERIAL_PORT_BASE_HPP
-#define ASIO_SERIAL_PORT_BASE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_SERIAL_PORT) \
-  || defined(GENERATING_DOCUMENTATION)
-
-#if !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-# include <termios.h>
-#endif // !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-
-#include "asio/detail/socket_types.hpp"
-#include "asio/error_code.hpp"
-
-#if defined(GENERATING_DOCUMENTATION)
-# define ASIO_OPTION_STORAGE implementation_defined
-#elif defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-# define ASIO_OPTION_STORAGE DCB
-#else
-# define ASIO_OPTION_STORAGE termios
-#endif
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// The serial_port_base class is used as a base for the basic_serial_port class
-/// template so that we have a common place to define the serial port options.
-class serial_port_base
-{
-public:
-  /// Serial port option to permit changing the baud rate.
-  /**
-   * Implements changing the baud rate for a given serial port.
-   */
-  class baud_rate
-  {
-  public:
-    explicit baud_rate(unsigned int rate = 0);
-    unsigned int value() const;
-    ASIO_DECL asio::error_code store(
-        ASIO_OPTION_STORAGE& storage,
-        asio::error_code& ec) const;
-    ASIO_DECL asio::error_code load(
-        const ASIO_OPTION_STORAGE& storage,
-        asio::error_code& ec);
-  private:
-    unsigned int value_;
-  };
-
-  /// Serial port option to permit changing the flow control.
-  /**
-   * Implements changing the flow control for a given serial port.
-   */
-  class flow_control
-  {
-  public:
-    enum type { none, software, hardware };
-    ASIO_DECL explicit flow_control(type t = none);
-    type value() const;
-    ASIO_DECL asio::error_code store(
-        ASIO_OPTION_STORAGE& storage,
-        asio::error_code& ec) const;
-    ASIO_DECL asio::error_code load(
-        const ASIO_OPTION_STORAGE& storage,
-        asio::error_code& ec);
-  private:
-    type value_;
-  };
-
-  /// Serial port option to permit changing the parity.
-  /**
-   * Implements changing the parity for a given serial port.
-   */
-  class parity
-  {
-  public:
-    enum type { none, odd, even };
-    ASIO_DECL explicit parity(type t = none);
-    type value() const;
-    ASIO_DECL asio::error_code store(
-        ASIO_OPTION_STORAGE& storage,
-        asio::error_code& ec) const;
-    ASIO_DECL asio::error_code load(
-        const ASIO_OPTION_STORAGE& storage,
-        asio::error_code& ec);
-  private:
-    type value_;
-  };
-
-  /// Serial port option to permit changing the number of stop bits.
-  /**
-   * Implements changing the number of stop bits for a given serial port.
-   */
-  class stop_bits
-  {
-  public:
-    enum type { one, onepointfive, two };
-    ASIO_DECL explicit stop_bits(type t = one);
-    type value() const;
-    ASIO_DECL asio::error_code store(
-        ASIO_OPTION_STORAGE& storage,
-        asio::error_code& ec) const;
-    ASIO_DECL asio::error_code load(
-        const ASIO_OPTION_STORAGE& storage,
-        asio::error_code& ec);
-  private:
-    type value_;
-  };
-
-  /// Serial port option to permit changing the character size.
-  /**
-   * Implements changing the character size for a given serial port.
-   */
-  class character_size
-  {
-  public:
-    ASIO_DECL explicit character_size(unsigned int t = 8);
-    unsigned int value() const;
-    ASIO_DECL asio::error_code store(
-        ASIO_OPTION_STORAGE& storage,
-        asio::error_code& ec) const;
-    ASIO_DECL asio::error_code load(
-        const ASIO_OPTION_STORAGE& storage,
-        asio::error_code& ec);
-  private:
-    unsigned int value_;
-  };
-
-protected:
-  /// Protected destructor to prevent deletion through this type.
-  ~serial_port_base()
-  {
-  }
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#undef ASIO_OPTION_STORAGE
-
-#include "asio/impl/serial_port_base.hpp"
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/impl/serial_port_base.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // defined(ASIO_HAS_SERIAL_PORT)
-       //   || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_SERIAL_PORT_BASE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/serial_port_service.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/serial_port_service.hpp
deleted file mode 100644
index c13a2b6..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/serial_port_service.hpp
+++ /dev/null
@@ -1,253 +0,0 @@
-//
-// serial_port_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SERIAL_PORT_SERVICE_HPP
-#define ASIO_SERIAL_PORT_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_SERIAL_PORT) \
-  || defined(GENERATING_DOCUMENTATION)
-
-#include <cstddef>
-#include <string>
-#include "asio/async_result.hpp"
-#include "asio/detail/reactive_serial_port_service.hpp"
-#include "asio/detail/win_iocp_serial_port_service.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/serial_port_base.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Default service implementation for a serial port.
-class serial_port_service
-#if defined(GENERATING_DOCUMENTATION)
-  : public asio::io_service::service
-#else
-  : public asio::detail::service_base<serial_port_service>
-#endif
-{
-public:
-#if defined(GENERATING_DOCUMENTATION)
-  /// The unique service identifier.
-  static asio::io_service::id id;
-#endif
-
-private:
-  // The type of the platform-specific implementation.
-#if defined(ASIO_HAS_IOCP)
-  typedef detail::win_iocp_serial_port_service service_impl_type;
-#else
-  typedef detail::reactive_serial_port_service service_impl_type;
-#endif
-
-public:
-  /// The type of a serial port implementation.
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined implementation_type;
-#else
-  typedef service_impl_type::implementation_type implementation_type;
-#endif
-
-  /// (Deprecated: Use native_handle_type.) The native handle type.
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined native_type;
-#else
-  typedef service_impl_type::native_handle_type native_type;
-#endif
-
-  /// The native handle type.
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined native_handle_type;
-#else
-  typedef service_impl_type::native_handle_type native_handle_type;
-#endif
-
-  /// Construct a new serial port service for the specified io_service.
-  explicit serial_port_service(asio::io_service& io_service)
-    : asio::detail::service_base<serial_port_service>(io_service),
-      service_impl_(io_service)
-  {
-  }
-
-  /// Construct a new serial port implementation.
-  void construct(implementation_type& impl)
-  {
-    service_impl_.construct(impl);
-  }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-  /// Move-construct a new serial port implementation.
-  void move_construct(implementation_type& impl,
-      implementation_type& other_impl)
-  {
-    service_impl_.move_construct(impl, other_impl);
-  }
-
-  /// Move-assign from another serial port implementation.
-  void move_assign(implementation_type& impl,
-      serial_port_service& other_service,
-      implementation_type& other_impl)
-  {
-    service_impl_.move_assign(impl, other_service.service_impl_, other_impl);
-  }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
-  /// Destroy a serial port implementation.
-  void destroy(implementation_type& impl)
-  {
-    service_impl_.destroy(impl);
-  }
-
-  /// Open a serial port.
-  asio::error_code open(implementation_type& impl,
-      const std::string& device, asio::error_code& ec)
-  {
-    return service_impl_.open(impl, device, ec);
-  }
-
-  /// Assign an existing native handle to a serial port.
-  asio::error_code assign(implementation_type& impl,
-      const native_handle_type& handle, asio::error_code& ec)
-  {
-    return service_impl_.assign(impl, handle, ec);
-  }
-
-  /// Determine whether the handle is open.
-  bool is_open(const implementation_type& impl) const
-  {
-    return service_impl_.is_open(impl);
-  }
-
-  /// Close a serial port implementation.
-  asio::error_code close(implementation_type& impl,
-      asio::error_code& ec)
-  {
-    return service_impl_.close(impl, ec);
-  }
-
-  /// (Deprecated: Use native_handle().) Get the native handle implementation.
-  native_type native(implementation_type& impl)
-  {
-    return service_impl_.native_handle(impl);
-  }
-
-  /// Get the native handle implementation.
-  native_handle_type native_handle(implementation_type& impl)
-  {
-    return service_impl_.native_handle(impl);
-  }
-
-  /// Cancel all asynchronous operations associated with the handle.
-  asio::error_code cancel(implementation_type& impl,
-      asio::error_code& ec)
-  {
-    return service_impl_.cancel(impl, ec);
-  }
-
-  /// Set a serial port option.
-  template <typename SettableSerialPortOption>
-  asio::error_code set_option(implementation_type& impl,
-      const SettableSerialPortOption& option, asio::error_code& ec)
-  {
-    return service_impl_.set_option(impl, option, ec);
-  }
-
-  /// Get a serial port option.
-  template <typename GettableSerialPortOption>
-  asio::error_code get_option(const implementation_type& impl,
-      GettableSerialPortOption& option, asio::error_code& ec) const
-  {
-    return service_impl_.get_option(impl, option, ec);
-  }
-
-  /// Send a break sequence to the serial port.
-  asio::error_code send_break(implementation_type& impl,
-      asio::error_code& ec)
-  {
-    return service_impl_.send_break(impl, ec);
-  }
-
-  /// Write the given data to the stream.
-  template <typename ConstBufferSequence>
-  std::size_t write_some(implementation_type& impl,
-      const ConstBufferSequence& buffers, asio::error_code& ec)
-  {
-    return service_impl_.write_some(impl, buffers, ec);
-  }
-
-  /// Start an asynchronous write.
-  template <typename ConstBufferSequence, typename WriteHandler>
-  ASIO_INITFN_RESULT_TYPE(WriteHandler,
-      void (asio::error_code, std::size_t))
-  async_write_some(implementation_type& impl,
-      const ConstBufferSequence& buffers,
-      ASIO_MOVE_ARG(WriteHandler) handler)
-  {
-    detail::async_result_init<
-      WriteHandler, void (asio::error_code, std::size_t)> init(
-        ASIO_MOVE_CAST(WriteHandler)(handler));
-
-    service_impl_.async_write_some(impl, buffers, init.handler);
-
-    return init.result.get();
-  }
-
-  /// Read some data from the stream.
-  template <typename MutableBufferSequence>
-  std::size_t read_some(implementation_type& impl,
-      const MutableBufferSequence& buffers, asio::error_code& ec)
-  {
-    return service_impl_.read_some(impl, buffers, ec);
-  }
-
-  /// Start an asynchronous read.
-  template <typename MutableBufferSequence, typename ReadHandler>
-  ASIO_INITFN_RESULT_TYPE(ReadHandler,
-      void (asio::error_code, std::size_t))
-  async_read_some(implementation_type& impl,
-      const MutableBufferSequence& buffers,
-      ASIO_MOVE_ARG(ReadHandler) handler)
-  {
-    detail::async_result_init<
-      ReadHandler, void (asio::error_code, std::size_t)> init(
-        ASIO_MOVE_CAST(ReadHandler)(handler));
-
-    service_impl_.async_read_some(impl, buffers, init.handler);
-
-    return init.result.get();
-  }
-
-private:
-  // Destroy all user-defined handler objects owned by the service.
-  void shutdown_service()
-  {
-    service_impl_.shutdown_service();
-  }
-
-  // The platform-specific implementation.
-  service_impl_type service_impl_;
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_SERIAL_PORT)
-       //   || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_SERIAL_PORT_SERVICE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/signal_set.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/signal_set.hpp
deleted file mode 100644
index 985b6fa..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/signal_set.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-//
-// signal_set.hpp
-// ~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SIGNAL_SET_HPP
-#define ASIO_SIGNAL_SET_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/basic_signal_set.hpp"
-
-namespace asio {
-
-/// Typedef for the typical usage of a signal set.
-typedef basic_signal_set<> signal_set;
-
-} // namespace asio
-
-#endif // ASIO_SIGNAL_SET_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/signal_set_service.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/signal_set_service.hpp
deleted file mode 100644
index 1d25af7..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/signal_set_service.hpp
+++ /dev/null
@@ -1,134 +0,0 @@
-//
-// signal_set_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SIGNAL_SET_SERVICE_HPP
-#define ASIO_SIGNAL_SET_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/async_result.hpp"
-#include "asio/detail/signal_set_service.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Default service implementation for a signal set.
-class signal_set_service
-#if defined(GENERATING_DOCUMENTATION)
-  : public asio::io_service::service
-#else
-  : public asio::detail::service_base<signal_set_service>
-#endif
-{
-public:
-#if defined(GENERATING_DOCUMENTATION)
-  /// The unique service identifier.
-  static asio::io_service::id id;
-#endif
-
-public:
-  /// The type of a signal set implementation.
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined implementation_type;
-#else
-  typedef detail::signal_set_service::implementation_type implementation_type;
-#endif
-
-  /// Construct a new signal set service for the specified io_service.
-  explicit signal_set_service(asio::io_service& io_service)
-    : asio::detail::service_base<signal_set_service>(io_service),
-      service_impl_(io_service)
-  {
-  }
-
-  /// Construct a new signal set implementation.
-  void construct(implementation_type& impl)
-  {
-    service_impl_.construct(impl);
-  }
-
-  /// Destroy a signal set implementation.
-  void destroy(implementation_type& impl)
-  {
-    service_impl_.destroy(impl);
-  }
-
-  /// Add a signal to a signal_set.
-  asio::error_code add(implementation_type& impl,
-      int signal_number, asio::error_code& ec)
-  {
-    return service_impl_.add(impl, signal_number, ec);
-  }
-
-  /// Remove a signal to a signal_set.
-  asio::error_code remove(implementation_type& impl,
-      int signal_number, asio::error_code& ec)
-  {
-    return service_impl_.remove(impl, signal_number, ec);
-  }
-
-  /// Remove all signals from a signal_set.
-  asio::error_code clear(implementation_type& impl,
-      asio::error_code& ec)
-  {
-    return service_impl_.clear(impl, ec);
-  }
-
-  /// Cancel all operations associated with the signal set.
-  asio::error_code cancel(implementation_type& impl,
-      asio::error_code& ec)
-  {
-    return service_impl_.cancel(impl, ec);
-  }
-
-  // Start an asynchronous operation to wait for a signal to be delivered.
-  template <typename SignalHandler>
-  ASIO_INITFN_RESULT_TYPE(SignalHandler,
-      void (asio::error_code, int))
-  async_wait(implementation_type& impl,
-      ASIO_MOVE_ARG(SignalHandler) handler)
-  {
-    detail::async_result_init<
-      SignalHandler, void (asio::error_code, int)> init(
-        ASIO_MOVE_CAST(SignalHandler)(handler));
-
-    service_impl_.async_wait(impl, init.handler);
-
-    return init.result.get();
-  }
-
-private:
-  // Destroy all user-defined handler objects owned by the service.
-  void shutdown_service()
-  {
-    service_impl_.shutdown_service();
-  }
-
-  // Perform any fork-related housekeeping.
-  void fork_service(asio::io_service::fork_event event)
-  {
-    service_impl_.fork_service(event);
-  }
-
-  // The platform-specific implementation.
-  detail::signal_set_service service_impl_;
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SIGNAL_SET_SERVICE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/socket_acceptor_service.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/socket_acceptor_service.hpp
deleted file mode 100644
index 73d91f3..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/socket_acceptor_service.hpp
+++ /dev/null
@@ -1,302 +0,0 @@
-//
-// socket_acceptor_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SOCKET_ACCEPTOR_SERVICE_HPP
-#define ASIO_SOCKET_ACCEPTOR_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/basic_socket.hpp"
-#include "asio/detail/type_traits.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-# include "asio/detail/null_socket_service.hpp"
-#elif defined(ASIO_HAS_IOCP)
-# include "asio/detail/win_iocp_socket_service.hpp"
-#else
-# include "asio/detail/reactive_socket_service.hpp"
-#endif
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Default service implementation for a socket acceptor.
-template <typename Protocol>
-class socket_acceptor_service
-#if defined(GENERATING_DOCUMENTATION)
-  : public asio::io_service::service
-#else
-  : public asio::detail::service_base<socket_acceptor_service<Protocol> >
-#endif
-{
-public:
-#if defined(GENERATING_DOCUMENTATION)
-  /// The unique service identifier.
-  static asio::io_service::id id;
-#endif
-
-  /// The protocol type.
-  typedef Protocol protocol_type;
-
-  /// The endpoint type.
-  typedef typename protocol_type::endpoint endpoint_type;
-
-private:
-  // The type of the platform-specific implementation.
-#if defined(ASIO_WINDOWS_RUNTIME)
-  typedef detail::null_socket_service<Protocol> service_impl_type;
-#elif defined(ASIO_HAS_IOCP)
-  typedef detail::win_iocp_socket_service<Protocol> service_impl_type;
-#else
-  typedef detail::reactive_socket_service<Protocol> service_impl_type;
-#endif
-
-public:
-  /// The native type of the socket acceptor.
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined implementation_type;
-#else
-  typedef typename service_impl_type::implementation_type implementation_type;
-#endif
-
-  /// (Deprecated: Use native_handle_type.) The native acceptor type.
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined native_type;
-#else
-  typedef typename service_impl_type::native_handle_type native_type;
-#endif
-
-  /// The native acceptor type.
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined native_handle_type;
-#else
-  typedef typename service_impl_type::native_handle_type native_handle_type;
-#endif
-
-  /// Construct a new socket acceptor service for the specified io_service.
-  explicit socket_acceptor_service(asio::io_service& io_service)
-    : asio::detail::service_base<
-        socket_acceptor_service<Protocol> >(io_service),
-      service_impl_(io_service)
-  {
-  }
-
-  /// Construct a new socket acceptor implementation.
-  void construct(implementation_type& impl)
-  {
-    service_impl_.construct(impl);
-  }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-  /// Move-construct a new socket acceptor implementation.
-  void move_construct(implementation_type& impl,
-      implementation_type& other_impl)
-  {
-    service_impl_.move_construct(impl, other_impl);
-  }
-
-  /// Move-assign from another socket acceptor implementation.
-  void move_assign(implementation_type& impl,
-      socket_acceptor_service& other_service,
-      implementation_type& other_impl)
-  {
-    service_impl_.move_assign(impl, other_service.service_impl_, other_impl);
-  }
-
-  /// Move-construct a new socket acceptor implementation from another protocol
-  /// type.
-  template <typename Protocol1>
-  void converting_move_construct(implementation_type& impl,
-      typename socket_acceptor_service<
-        Protocol1>::implementation_type& other_impl,
-      typename enable_if<is_convertible<
-        Protocol1, Protocol>::value>::type* = 0)
-  {
-    service_impl_.template converting_move_construct<Protocol1>(
-        impl, other_impl);
-  }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
-  /// Destroy a socket acceptor implementation.
-  void destroy(implementation_type& impl)
-  {
-    service_impl_.destroy(impl);
-  }
-
-  /// Open a new socket acceptor implementation.
-  asio::error_code open(implementation_type& impl,
-      const protocol_type& protocol, asio::error_code& ec)
-  {
-    return service_impl_.open(impl, protocol, ec);
-  }
-
-  /// Assign an existing native acceptor to a socket acceptor.
-  asio::error_code assign(implementation_type& impl,
-      const protocol_type& protocol, const native_handle_type& native_acceptor,
-      asio::error_code& ec)
-  {
-    return service_impl_.assign(impl, protocol, native_acceptor, ec);
-  }
-
-  /// Determine whether the acceptor is open.
-  bool is_open(const implementation_type& impl) const
-  {
-    return service_impl_.is_open(impl);
-  }
-
-  /// Cancel all asynchronous operations associated with the acceptor.
-  asio::error_code cancel(implementation_type& impl,
-      asio::error_code& ec)
-  {
-    return service_impl_.cancel(impl, ec);
-  }
-
-  /// Bind the socket acceptor to the specified local endpoint.
-  asio::error_code bind(implementation_type& impl,
-      const endpoint_type& endpoint, asio::error_code& ec)
-  {
-    return service_impl_.bind(impl, endpoint, ec);
-  }
-
-  /// Place the socket acceptor into the state where it will listen for new
-  /// connections.
-  asio::error_code listen(implementation_type& impl, int backlog,
-      asio::error_code& ec)
-  {
-    return service_impl_.listen(impl, backlog, ec);
-  }
-
-  /// Close a socket acceptor implementation.
-  asio::error_code close(implementation_type& impl,
-      asio::error_code& ec)
-  {
-    return service_impl_.close(impl, ec);
-  }
-
-  /// (Deprecated: Use native_handle().) Get the native acceptor implementation.
-  native_type native(implementation_type& impl)
-  {
-    return service_impl_.native_handle(impl);
-  }
-
-  /// Get the native acceptor implementation.
-  native_handle_type native_handle(implementation_type& impl)
-  {
-    return service_impl_.native_handle(impl);
-  }
-
-  /// Set a socket option.
-  template <typename SettableSocketOption>
-  asio::error_code set_option(implementation_type& impl,
-      const SettableSocketOption& option, asio::error_code& ec)
-  {
-    return service_impl_.set_option(impl, option, ec);
-  }
-
-  /// Get a socket option.
-  template <typename GettableSocketOption>
-  asio::error_code get_option(const implementation_type& impl,
-      GettableSocketOption& option, asio::error_code& ec) const
-  {
-    return service_impl_.get_option(impl, option, ec);
-  }
-
-  /// Perform an IO control command on the socket.
-  template <typename IoControlCommand>
-  asio::error_code io_control(implementation_type& impl,
-      IoControlCommand& command, asio::error_code& ec)
-  {
-    return service_impl_.io_control(impl, command, ec);
-  }
-
-  /// Gets the non-blocking mode of the acceptor.
-  bool non_blocking(const implementation_type& impl) const
-  {
-    return service_impl_.non_blocking(impl);
-  }
-
-  /// Sets the non-blocking mode of the acceptor.
-  asio::error_code non_blocking(implementation_type& impl,
-      bool mode, asio::error_code& ec)
-  {
-    return service_impl_.non_blocking(impl, mode, ec);
-  }
-
-  /// Gets the non-blocking mode of the native acceptor implementation.
-  bool native_non_blocking(const implementation_type& impl) const
-  {
-    return service_impl_.native_non_blocking(impl);
-  }
-
-  /// Sets the non-blocking mode of the native acceptor implementation.
-  asio::error_code native_non_blocking(implementation_type& impl,
-      bool mode, asio::error_code& ec)
-  {
-    return service_impl_.native_non_blocking(impl, mode, ec);
-  }
-
-  /// Get the local endpoint.
-  endpoint_type local_endpoint(const implementation_type& impl,
-      asio::error_code& ec) const
-  {
-    return service_impl_.local_endpoint(impl, ec);
-  }
-
-  /// Accept a new connection.
-  template <typename Protocol1, typename SocketService>
-  asio::error_code accept(implementation_type& impl,
-      basic_socket<Protocol1, SocketService>& peer,
-      endpoint_type* peer_endpoint, asio::error_code& ec,
-      typename enable_if<is_convertible<Protocol, Protocol1>::value>::type* = 0)
-  {
-    return service_impl_.accept(impl, peer, peer_endpoint, ec);
-  }
-
-  /// Start an asynchronous accept.
-  template <typename Protocol1, typename SocketService, typename AcceptHandler>
-  ASIO_INITFN_RESULT_TYPE(AcceptHandler,
-      void (asio::error_code))
-  async_accept(implementation_type& impl,
-      basic_socket<Protocol1, SocketService>& peer,
-      endpoint_type* peer_endpoint,
-      ASIO_MOVE_ARG(AcceptHandler) handler,
-      typename enable_if<is_convertible<Protocol, Protocol1>::value>::type* = 0)
-  {
-    detail::async_result_init<
-      AcceptHandler, void (asio::error_code)> init(
-        ASIO_MOVE_CAST(AcceptHandler)(handler));
-
-    service_impl_.async_accept(impl, peer, peer_endpoint, init.handler);
-
-    return init.result.get();
-  }
-
-private:
-  // Destroy all user-defined handler objects owned by the service.
-  void shutdown_service()
-  {
-    service_impl_.shutdown_service();
-  }
-
-  // The platform-specific implementation.
-  service_impl_type service_impl_;
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SOCKET_ACCEPTOR_SERVICE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/socket_base.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/socket_base.hpp
deleted file mode 100644
index f8bf9bd..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/socket_base.hpp
+++ /dev/null
@@ -1,520 +0,0 @@
-//
-// socket_base.hpp
-// ~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SOCKET_BASE_HPP
-#define ASIO_SOCKET_BASE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/io_control.hpp"
-#include "asio/detail/socket_option.hpp"
-#include "asio/detail/socket_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// The socket_base class is used as a base for the basic_stream_socket and
-/// basic_datagram_socket class templates so that we have a common place to
-/// define the shutdown_type and enum.
-class socket_base
-{
-public:
-  /// Different ways a socket may be shutdown.
-  enum shutdown_type
-  {
-#if defined(GENERATING_DOCUMENTATION)
-    /// Shutdown the receive side of the socket.
-    shutdown_receive = implementation_defined,
-
-    /// Shutdown the send side of the socket.
-    shutdown_send = implementation_defined,
-
-    /// Shutdown both send and receive on the socket.
-    shutdown_both = implementation_defined
-#else
-    shutdown_receive = ASIO_OS_DEF(SHUT_RD),
-    shutdown_send = ASIO_OS_DEF(SHUT_WR),
-    shutdown_both = ASIO_OS_DEF(SHUT_RDWR)
-#endif
-  };
-
-  /// Bitmask type for flags that can be passed to send and receive operations.
-  typedef int message_flags;
-
-#if defined(GENERATING_DOCUMENTATION)
-  /// Peek at incoming data without removing it from the input queue.
-  static const int message_peek = implementation_defined;
-
-  /// Process out-of-band data.
-  static const int message_out_of_band = implementation_defined;
-
-  /// Specify that the data should not be subject to routing.
-  static const int message_do_not_route = implementation_defined;
-
-  /// Specifies that the data marks the end of a record.
-  static const int message_end_of_record = implementation_defined;
-#else
-  ASIO_STATIC_CONSTANT(int,
-      message_peek = ASIO_OS_DEF(MSG_PEEK));
-  ASIO_STATIC_CONSTANT(int,
-      message_out_of_band = ASIO_OS_DEF(MSG_OOB));
-  ASIO_STATIC_CONSTANT(int,
-      message_do_not_route = ASIO_OS_DEF(MSG_DONTROUTE));
-  ASIO_STATIC_CONSTANT(int,
-      message_end_of_record = ASIO_OS_DEF(MSG_EOR));
-#endif
-
-  /// Socket option to permit sending of broadcast messages.
-  /**
-   * Implements the SOL_SOCKET/SO_BROADCAST socket option.
-   *
-   * @par Examples
-   * Setting the option:
-   * @code
-   * asio::ip::udp::socket socket(io_service); 
-   * ...
-   * asio::socket_base::broadcast option(true);
-   * socket.set_option(option);
-   * @endcode
-   *
-   * @par
-   * Getting the current option value:
-   * @code
-   * asio::ip::udp::socket socket(io_service); 
-   * ...
-   * asio::socket_base::broadcast option;
-   * socket.get_option(option);
-   * bool is_set = option.value();
-   * @endcode
-   *
-   * @par Concepts:
-   * Socket_Option, Boolean_Socket_Option.
-   */
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined broadcast;
-#else
-  typedef asio::detail::socket_option::boolean<
-    ASIO_OS_DEF(SOL_SOCKET), ASIO_OS_DEF(SO_BROADCAST)>
-      broadcast;
-#endif
-
-  /// Socket option to enable socket-level debugging.
-  /**
-   * Implements the SOL_SOCKET/SO_DEBUG socket option.
-   *
-   * @par Examples
-   * Setting the option:
-   * @code
-   * asio::ip::tcp::socket socket(io_service); 
-   * ...
-   * asio::socket_base::debug option(true);
-   * socket.set_option(option);
-   * @endcode
-   *
-   * @par
-   * Getting the current option value:
-   * @code
-   * asio::ip::tcp::socket socket(io_service); 
-   * ...
-   * asio::socket_base::debug option;
-   * socket.get_option(option);
-   * bool is_set = option.value();
-   * @endcode
-   *
-   * @par Concepts:
-   * Socket_Option, Boolean_Socket_Option.
-   */
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined debug;
-#else
-  typedef asio::detail::socket_option::boolean<
-    ASIO_OS_DEF(SOL_SOCKET), ASIO_OS_DEF(SO_DEBUG)> debug;
-#endif
-
-  /// Socket option to prevent routing, use local interfaces only.
-  /**
-   * Implements the SOL_SOCKET/SO_DONTROUTE socket option.
-   *
-   * @par Examples
-   * Setting the option:
-   * @code
-   * asio::ip::udp::socket socket(io_service); 
-   * ...
-   * asio::socket_base::do_not_route option(true);
-   * socket.set_option(option);
-   * @endcode
-   *
-   * @par
-   * Getting the current option value:
-   * @code
-   * asio::ip::udp::socket socket(io_service); 
-   * ...
-   * asio::socket_base::do_not_route option;
-   * socket.get_option(option);
-   * bool is_set = option.value();
-   * @endcode
-   *
-   * @par Concepts:
-   * Socket_Option, Boolean_Socket_Option.
-   */
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined do_not_route;
-#else
-  typedef asio::detail::socket_option::boolean<
-    ASIO_OS_DEF(SOL_SOCKET), ASIO_OS_DEF(SO_DONTROUTE)>
-      do_not_route;
-#endif
-
-  /// Socket option to send keep-alives.
-  /**
-   * Implements the SOL_SOCKET/SO_KEEPALIVE socket option.
-   *
-   * @par Examples
-   * Setting the option:
-   * @code
-   * asio::ip::tcp::socket socket(io_service); 
-   * ...
-   * asio::socket_base::keep_alive option(true);
-   * socket.set_option(option);
-   * @endcode
-   *
-   * @par
-   * Getting the current option value:
-   * @code
-   * asio::ip::tcp::socket socket(io_service); 
-   * ...
-   * asio::socket_base::keep_alive option;
-   * socket.get_option(option);
-   * bool is_set = option.value();
-   * @endcode
-   *
-   * @par Concepts:
-   * Socket_Option, Boolean_Socket_Option.
-   */
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined keep_alive;
-#else
-  typedef asio::detail::socket_option::boolean<
-    ASIO_OS_DEF(SOL_SOCKET), ASIO_OS_DEF(SO_KEEPALIVE)> keep_alive;
-#endif
-
-  /// Socket option for the send buffer size of a socket.
-  /**
-   * Implements the SOL_SOCKET/SO_SNDBUF socket option.
-   *
-   * @par Examples
-   * Setting the option:
-   * @code
-   * asio::ip::tcp::socket socket(io_service); 
-   * ...
-   * asio::socket_base::send_buffer_size option(8192);
-   * socket.set_option(option);
-   * @endcode
-   *
-   * @par
-   * Getting the current option value:
-   * @code
-   * asio::ip::tcp::socket socket(io_service); 
-   * ...
-   * asio::socket_base::send_buffer_size option;
-   * socket.get_option(option);
-   * int size = option.value();
-   * @endcode
-   *
-   * @par Concepts:
-   * Socket_Option, Integer_Socket_Option.
-   */
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined send_buffer_size;
-#else
-  typedef asio::detail::socket_option::integer<
-    ASIO_OS_DEF(SOL_SOCKET), ASIO_OS_DEF(SO_SNDBUF)>
-      send_buffer_size;
-#endif
-
-  /// Socket option for the send low watermark.
-  /**
-   * Implements the SOL_SOCKET/SO_SNDLOWAT socket option.
-   *
-   * @par Examples
-   * Setting the option:
-   * @code
-   * asio::ip::tcp::socket socket(io_service); 
-   * ...
-   * asio::socket_base::send_low_watermark option(1024);
-   * socket.set_option(option);
-   * @endcode
-   *
-   * @par
-   * Getting the current option value:
-   * @code
-   * asio::ip::tcp::socket socket(io_service); 
-   * ...
-   * asio::socket_base::send_low_watermark option;
-   * socket.get_option(option);
-   * int size = option.value();
-   * @endcode
-   *
-   * @par Concepts:
-   * Socket_Option, Integer_Socket_Option.
-   */
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined send_low_watermark;
-#else
-  typedef asio::detail::socket_option::integer<
-    ASIO_OS_DEF(SOL_SOCKET), ASIO_OS_DEF(SO_SNDLOWAT)>
-      send_low_watermark;
-#endif
-
-  /// Socket option for the receive buffer size of a socket.
-  /**
-   * Implements the SOL_SOCKET/SO_RCVBUF socket option.
-   *
-   * @par Examples
-   * Setting the option:
-   * @code
-   * asio::ip::tcp::socket socket(io_service); 
-   * ...
-   * asio::socket_base::receive_buffer_size option(8192);
-   * socket.set_option(option);
-   * @endcode
-   *
-   * @par
-   * Getting the current option value:
-   * @code
-   * asio::ip::tcp::socket socket(io_service); 
-   * ...
-   * asio::socket_base::receive_buffer_size option;
-   * socket.get_option(option);
-   * int size = option.value();
-   * @endcode
-   *
-   * @par Concepts:
-   * Socket_Option, Integer_Socket_Option.
-   */
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined receive_buffer_size;
-#else
-  typedef asio::detail::socket_option::integer<
-    ASIO_OS_DEF(SOL_SOCKET), ASIO_OS_DEF(SO_RCVBUF)>
-      receive_buffer_size;
-#endif
-
-  /// Socket option for the receive low watermark.
-  /**
-   * Implements the SOL_SOCKET/SO_RCVLOWAT socket option.
-   *
-   * @par Examples
-   * Setting the option:
-   * @code
-   * asio::ip::tcp::socket socket(io_service); 
-   * ...
-   * asio::socket_base::receive_low_watermark option(1024);
-   * socket.set_option(option);
-   * @endcode
-   *
-   * @par
-   * Getting the current option value:
-   * @code
-   * asio::ip::tcp::socket socket(io_service); 
-   * ...
-   * asio::socket_base::receive_low_watermark option;
-   * socket.get_option(option);
-   * int size = option.value();
-   * @endcode
-   *
-   * @par Concepts:
-   * Socket_Option, Integer_Socket_Option.
-   */
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined receive_low_watermark;
-#else
-  typedef asio::detail::socket_option::integer<
-    ASIO_OS_DEF(SOL_SOCKET), ASIO_OS_DEF(SO_RCVLOWAT)>
-      receive_low_watermark;
-#endif
-
-  /// Socket option to allow the socket to be bound to an address that is
-  /// already in use.
-  /**
-   * Implements the SOL_SOCKET/SO_REUSEADDR socket option.
-   *
-   * @par Examples
-   * Setting the option:
-   * @code
-   * asio::ip::tcp::acceptor acceptor(io_service); 
-   * ...
-   * asio::socket_base::reuse_address option(true);
-   * acceptor.set_option(option);
-   * @endcode
-   *
-   * @par
-   * Getting the current option value:
-   * @code
-   * asio::ip::tcp::acceptor acceptor(io_service); 
-   * ...
-   * asio::socket_base::reuse_address option;
-   * acceptor.get_option(option);
-   * bool is_set = option.value();
-   * @endcode
-   *
-   * @par Concepts:
-   * Socket_Option, Boolean_Socket_Option.
-   */
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined reuse_address;
-#else
-  typedef asio::detail::socket_option::boolean<
-    ASIO_OS_DEF(SOL_SOCKET), ASIO_OS_DEF(SO_REUSEADDR)>
-      reuse_address;
-#endif
-
-  /// Socket option to specify whether the socket lingers on close if unsent
-  /// data is present.
-  /**
-   * Implements the SOL_SOCKET/SO_LINGER socket option.
-   *
-   * @par Examples
-   * Setting the option:
-   * @code
-   * asio::ip::tcp::socket socket(io_service); 
-   * ...
-   * asio::socket_base::linger option(true, 30);
-   * socket.set_option(option);
-   * @endcode
-   *
-   * @par
-   * Getting the current option value:
-   * @code
-   * asio::ip::tcp::socket socket(io_service); 
-   * ...
-   * asio::socket_base::linger option;
-   * socket.get_option(option);
-   * bool is_set = option.enabled();
-   * unsigned short timeout = option.timeout();
-   * @endcode
-   *
-   * @par Concepts:
-   * Socket_Option, Linger_Socket_Option.
-   */
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined linger;
-#else
-  typedef asio::detail::socket_option::linger<
-    ASIO_OS_DEF(SOL_SOCKET), ASIO_OS_DEF(SO_LINGER)>
-      linger;
-#endif
-
-  /// Socket option to report aborted connections on accept.
-  /**
-   * Implements a custom socket option that determines whether or not an accept
-   * operation is permitted to fail with asio::error::connection_aborted.
-   * By default the option is false.
-   *
-   * @par Examples
-   * Setting the option:
-   * @code
-   * asio::ip::tcp::acceptor acceptor(io_service); 
-   * ...
-   * asio::socket_base::enable_connection_aborted option(true);
-   * acceptor.set_option(option);
-   * @endcode
-   *
-   * @par
-   * Getting the current option value:
-   * @code
-   * asio::ip::tcp::acceptor acceptor(io_service); 
-   * ...
-   * asio::socket_base::enable_connection_aborted option;
-   * acceptor.get_option(option);
-   * bool is_set = option.value();
-   * @endcode
-   *
-   * @par Concepts:
-   * Socket_Option, Boolean_Socket_Option.
-   */
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined enable_connection_aborted;
-#else
-  typedef asio::detail::socket_option::boolean<
-    asio::detail::custom_socket_option_level,
-    asio::detail::enable_connection_aborted_option>
-    enable_connection_aborted;
-#endif
-
-  /// (Deprecated: Use non_blocking().) IO control command to
-  /// set the blocking mode of the socket.
-  /**
-   * Implements the FIONBIO IO control command.
-   *
-   * @par Example
-   * @code
-   * asio::ip::tcp::socket socket(io_service); 
-   * ...
-   * asio::socket_base::non_blocking_io command(true);
-   * socket.io_control(command);
-   * @endcode
-   *
-   * @par Concepts:
-   * IO_Control_Command, Boolean_IO_Control_Command.
-   */
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined non_blocking_io;
-#else
-  typedef asio::detail::io_control::non_blocking_io non_blocking_io;
-#endif
-
-  /// IO control command to get the amount of data that can be read without
-  /// blocking.
-  /**
-   * Implements the FIONREAD IO control command.
-   *
-   * @par Example
-   * @code
-   * asio::ip::tcp::socket socket(io_service); 
-   * ...
-   * asio::socket_base::bytes_readable command(true);
-   * socket.io_control(command);
-   * std::size_t bytes_readable = command.get();
-   * @endcode
-   *
-   * @par Concepts:
-   * IO_Control_Command, Size_IO_Control_Command.
-   */
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined bytes_readable;
-#else
-  typedef asio::detail::io_control::bytes_readable bytes_readable;
-#endif
-
-  /// The maximum length of the queue of pending incoming connections.
-#if defined(GENERATING_DOCUMENTATION)
-  static const int max_connections = implementation_defined;
-#else
-  ASIO_STATIC_CONSTANT(int, max_connections
-      = ASIO_OS_DEF(SOMAXCONN));
-#endif
-
-protected:
-  /// Protected destructor to prevent deletion through this type.
-  ~socket_base()
-  {
-  }
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SOCKET_BASE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/spawn.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/spawn.hpp
deleted file mode 100644
index a9cbbf7..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/spawn.hpp
+++ /dev/null
@@ -1,265 +0,0 @@
-//
-// spawn.hpp
-// ~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SPAWN_HPP
-#define ASIO_SPAWN_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <boost/coroutine/all.hpp>
-#include "asio/detail/weak_ptr.hpp"
-#include "asio/detail/wrapped_handler.hpp"
-#include "asio/io_service.hpp"
-#include "asio/strand.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Context object the represents the currently executing coroutine.
-/**
- * The basic_yield_context class is used to represent the currently executing
- * stackful coroutine. A basic_yield_context may be passed as a handler to an
- * asynchronous operation. For example:
- *
- * @code template <typename Handler>
- * void my_coroutine(basic_yield_context<Handler> yield)
- * {
- *   ...
- *   std::size_t n = my_socket.async_read_some(buffer, yield);
- *   ...
- * } @endcode
- *
- * The initiating function (async_read_some in the above example) suspends the
- * current coroutine. The coroutine is resumed when the asynchronous operation
- * completes, and the result of the operation is returned.
- */
-template <typename Handler>
-class basic_yield_context
-{
-public:
-  /// The coroutine callee type, used by the implementation.
-  /**
-   * When using Boost.Coroutine v1, this type is:
-   * @code typename coroutine<void()> @endcode
-   * When using Boost.Coroutine v2 (unidirectional coroutines), this type is:
-   * @code push_coroutine<void> @endcode
-   */
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined callee_type;
-#elif defined(BOOST_COROUTINES_UNIDIRECT) || defined(BOOST_COROUTINES_V2)
-  typedef boost::coroutines::push_coroutine<void> callee_type;
-#else
-  typedef boost::coroutines::coroutine<void()> callee_type;
-#endif
-  
-  /// The coroutine caller type, used by the implementation.
-  /**
-   * When using Boost.Coroutine v1, this type is:
-   * @code typename coroutine<void()>::caller_type @endcode
-   * When using Boost.Coroutine v2 (unidirectional coroutines), this type is:
-   * @code pull_coroutine<void> @endcode
-   */
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined caller_type;
-#elif defined(BOOST_COROUTINES_UNIDIRECT) || defined(BOOST_COROUTINES_V2)
-  typedef boost::coroutines::pull_coroutine<void> caller_type;
-#else
-  typedef boost::coroutines::coroutine<void()>::caller_type caller_type;
-#endif
-
-  /// Construct a yield context to represent the specified coroutine.
-  /**
-   * Most applications do not need to use this constructor. Instead, the
-   * spawn() function passes a yield context as an argument to the coroutine
-   * function.
-   */
-  basic_yield_context(
-      const detail::weak_ptr<callee_type>& coro,
-      caller_type& ca, Handler& handler)
-    : coro_(coro),
-      ca_(ca),
-      handler_(handler),
-      ec_(0)
-  {
-  }
-
-  /// Return a yield context that sets the specified error_code.
-  /**
-   * By default, when a yield context is used with an asynchronous operation, a
-   * non-success error_code is converted to system_error and thrown. This
-   * operator may be used to specify an error_code object that should instead be
-   * set with the asynchronous operation's result. For example:
-   *
-   * @code template <typename Handler>
-   * void my_coroutine(basic_yield_context<Handler> yield)
-   * {
-   *   ...
-   *   std::size_t n = my_socket.async_read_some(buffer, yield[ec]);
-   *   if (ec)
-   *   {
-   *     // An error occurred.
-   *   }
-   *   ...
-   * } @endcode
-   */
-  basic_yield_context operator[](asio::error_code& ec) const
-  {
-    basic_yield_context tmp(*this);
-    tmp.ec_ = &ec;
-    return tmp;
-  }
-
-#if defined(GENERATING_DOCUMENTATION)
-private:
-#endif // defined(GENERATING_DOCUMENTATION)
-  detail::weak_ptr<callee_type> coro_;
-  caller_type& ca_;
-  Handler& handler_;
-  asio::error_code* ec_;
-};
-
-#if defined(GENERATING_DOCUMENTATION)
-/// Context object that represents the currently executing coroutine.
-typedef basic_yield_context<unspecified> yield_context;
-#else // defined(GENERATING_DOCUMENTATION)
-typedef basic_yield_context<
-  detail::wrapped_handler<
-    io_service::strand, void(*)(),
-    detail::is_continuation_if_running> > yield_context;
-#endif // defined(GENERATING_DOCUMENTATION)
-
-/**
- * @defgroup spawn asio::spawn
- *
- * @brief Start a new stackful coroutine.
- *
- * The spawn() function is a high-level wrapper over the Boost.Coroutine
- * library. This function enables programs to implement asynchronous logic in a
- * synchronous manner, as illustrated by the following example:
- *
- * @code asio::spawn(my_strand, do_echo);
- *
- * // ...
- *
- * void do_echo(asio::yield_context yield)
- * {
- *   try
- *   {
- *     char data[128];
- *     for (;;)
- *     {
- *       std::size_t length =
- *         my_socket.async_read_some(
- *           asio::buffer(data), yield);
- *
- *       asio::async_write(my_socket,
- *           asio::buffer(data, length), yield);
- *     }
- *   }
- *   catch (std::exception& e)
- *   {
- *     // ...
- *   }
- * } @endcode
- */
-/*@{*/
-
-/// Start a new stackful coroutine, calling the specified handler when it
-/// completes.
-/**
- * This function is used to launch a new coroutine.
- *
- * @param handler A handler to be called when the coroutine exits. More
- * importantly, the handler provides an execution context (via the the handler
- * invocation hook) for the coroutine. The handler must have the signature:
- * @code void handler(); @endcode
- *
- * @param function The coroutine function. The function must have the signature:
- * @code void function(basic_yield_context<Handler> yield); @endcode
- *
- * @param attributes Boost.Coroutine attributes used to customise the coroutine.
- */
-template <typename Handler, typename Function>
-void spawn(ASIO_MOVE_ARG(Handler) handler,
-    ASIO_MOVE_ARG(Function) function,
-    const boost::coroutines::attributes& attributes
-      = boost::coroutines::attributes());
-
-/// Start a new stackful coroutine, inheriting the execution context of another.
-/**
- * This function is used to launch a new coroutine.
- *
- * @param ctx Identifies the current coroutine as a parent of the new
- * coroutine. This specifies that the new coroutine should inherit the
- * execution context of the parent. For example, if the parent coroutine is
- * executing in a particular strand, then the new coroutine will execute in the
- * same strand.
- *
- * @param function The coroutine function. The function must have the signature:
- * @code void function(basic_yield_context<Handler> yield); @endcode
- *
- * @param attributes Boost.Coroutine attributes used to customise the coroutine.
- */
-template <typename Handler, typename Function>
-void spawn(basic_yield_context<Handler> ctx,
-    ASIO_MOVE_ARG(Function) function,
-    const boost::coroutines::attributes& attributes
-      = boost::coroutines::attributes());
-
-/// Start a new stackful coroutine that executes in the context of a strand.
-/**
- * This function is used to launch a new coroutine.
- *
- * @param strand Identifies a strand. By starting multiple coroutines on the
- * same strand, the implementation ensures that none of those coroutines can
- * execute simultaneously.
- *
- * @param function The coroutine function. The function must have the signature:
- * @code void function(yield_context yield); @endcode
- *
- * @param attributes Boost.Coroutine attributes used to customise the coroutine.
- */
-template <typename Function>
-void spawn(asio::io_service::strand strand,
-    ASIO_MOVE_ARG(Function) function,
-    const boost::coroutines::attributes& attributes
-      = boost::coroutines::attributes());
-
-/// Start a new stackful coroutine that executes on a given io_service.
-/**
- * This function is used to launch a new coroutine.
- *
- * @param io_service Identifies the io_service that will run the coroutine. The
- * new coroutine is implicitly given its own strand within this io_service.
- *
- * @param function The coroutine function. The function must have the signature:
- * @code void function(yield_context yield); @endcode
- *
- * @param attributes Boost.Coroutine attributes used to customise the coroutine.
- */
-template <typename Function>
-void spawn(asio::io_service& io_service,
-    ASIO_MOVE_ARG(Function) function,
-    const boost::coroutines::attributes& attributes
-      = boost::coroutines::attributes());
-
-/*@}*/
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/impl/spawn.hpp"
-
-#endif // ASIO_SPAWN_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl.hpp
deleted file mode 100644
index 6221461..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-//
-// ssl.hpp
-// ~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SSL_HPP
-#define ASIO_SSL_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/ssl/basic_context.hpp"
-#include "asio/ssl/context.hpp"
-#include "asio/ssl/context_base.hpp"
-#include "asio/ssl/context_service.hpp"
-#include "asio/ssl/error.hpp"
-#include "asio/ssl/rfc2818_verification.hpp"
-#include "asio/ssl/stream.hpp"
-#include "asio/ssl/stream_base.hpp"
-#include "asio/ssl/stream_service.hpp"
-#include "asio/ssl/verify_context.hpp"
-#include "asio/ssl/verify_mode.hpp"
-
-#endif // ASIO_SSL_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/basic_context.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/basic_context.hpp
deleted file mode 100644
index cd41b18..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/basic_context.hpp
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// ssl/basic_context.hpp
-// ~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SSL_BASIC_CONTEXT_HPP
-#define ASIO_SSL_BASIC_CONTEXT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_ENABLE_OLD_SSL)
-# include "asio/ssl/old/basic_context.hpp"
-#endif // defined(ASIO_ENABLE_OLD_SSL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-
-#if defined(ASIO_ENABLE_OLD_SSL)
-
-using asio::ssl::old::basic_context;
-
-#endif // defined(ASIO_ENABLE_OLD_SSL)
-
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_BASIC_CONTEXT_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/context.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/context.hpp
deleted file mode 100644
index 936e5ee..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/context.hpp
+++ /dev/null
@@ -1,787 +0,0 @@
-//
-// ssl/context.hpp
-// ~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SSL_CONTEXT_HPP
-#define ASIO_SSL_CONTEXT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_ENABLE_OLD_SSL)
-# include "asio/ssl/basic_context.hpp"
-# include "asio/ssl/context_service.hpp"
-#else // defined(ASIO_ENABLE_OLD_SSL)
-# include <string>
-# include "asio/buffer.hpp"
-# include "asio/io_service.hpp"
-# include "asio/ssl/context_base.hpp"
-# include "asio/ssl/detail/openssl_types.hpp"
-# include "asio/ssl/detail/openssl_init.hpp"
-# include "asio/ssl/detail/password_callback.hpp"
-# include "asio/ssl/detail/verify_callback.hpp"
-# include "asio/ssl/verify_mode.hpp"
-#endif // defined(ASIO_ENABLE_OLD_SSL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-
-#if defined(ASIO_ENABLE_OLD_SSL)
-
-/// Typedef for the typical usage of context.
-typedef basic_context<context_service> context;
-
-#else // defined(ASIO_ENABLE_OLD_SSL)
-
-class context
-  : public context_base,
-    private noncopyable
-{
-public:
-  /// The native handle type of the SSL context.
-  typedef SSL_CTX* native_handle_type;
-
-  /// (Deprecated: Use native_handle_type.) The native type of the SSL context.
-  typedef SSL_CTX* impl_type;
-
-  /// Constructor.
-  ASIO_DECL explicit context(method m);
-
-  /// Deprecated constructor taking a reference to an io_service object.
-  ASIO_DECL context(asio::io_service&, method m);
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-  /// Move-construct a context from another.
-  /**
-   * This constructor moves an SSL context from one object to another.
-   *
-   * @param other The other context object from which the move will occur.
-   *
-   * @note Following the move, the following operations only are valid for the
-   * moved-from object:
-   * @li Destruction.
-   * @li As a target for move-assignment.
-   */
-  ASIO_DECL context(context&& other);
-
-  /// Move-assign a context from another.
-  /**
-   * This assignment operator moves an SSL context from one object to another.
-   *
-   * @param other The other context object from which the move will occur.
-   *
-   * @note Following the move, the following operations only are valid for the
-   * moved-from object:
-   * @li Destruction.
-   * @li As a target for move-assignment.
-   */
-  ASIO_DECL context& operator=(context&& other);
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
-  /// Destructor.
-  ASIO_DECL ~context();
-
-  /// Get the underlying implementation in the native type.
-  /**
-   * This function may be used to obtain the underlying implementation of the
-   * context. This is intended to allow access to context functionality that is
-   * not otherwise provided.
-   */
-  ASIO_DECL native_handle_type native_handle();
-
-  /// (Deprecated: Use native_handle().) Get the underlying implementation in
-  /// the native type.
-  /**
-   * This function may be used to obtain the underlying implementation of the
-   * context. This is intended to allow access to context functionality that is
-   * not otherwise provided.
-   */
-  ASIO_DECL impl_type impl();
-
-  /// Clear options on the context.
-  /**
-   * This function may be used to configure the SSL options used by the context.
-   *
-   * @param o A bitmask of options. The available option values are defined in
-   * the context_base class. The specified options, if currently enabled on the
-   * context, are cleared.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note Calls @c SSL_CTX_clear_options.
-   */
-  ASIO_DECL void clear_options(options o);
-
-  /// Clear options on the context.
-  /**
-   * This function may be used to configure the SSL options used by the context.
-   *
-   * @param o A bitmask of options. The available option values are defined in
-   * the context_base class. The specified options, if currently enabled on the
-   * context, are cleared.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @note Calls @c SSL_CTX_clear_options.
-   */
-  ASIO_DECL asio::error_code clear_options(options o,
-      asio::error_code& ec);
-
-  /// Set options on the context.
-  /**
-   * This function may be used to configure the SSL options used by the context.
-   *
-   * @param o A bitmask of options. The available option values are defined in
-   * the context_base class. The options are bitwise-ored with any existing
-   * value for the options.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note Calls @c SSL_CTX_set_options.
-   */
-  ASIO_DECL void set_options(options o);
-
-  /// Set options on the context.
-  /**
-   * This function may be used to configure the SSL options used by the context.
-   *
-   * @param o A bitmask of options. The available option values are defined in
-   * the context_base class. The options are bitwise-ored with any existing
-   * value for the options.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @note Calls @c SSL_CTX_set_options.
-   */
-  ASIO_DECL asio::error_code set_options(options o,
-      asio::error_code& ec);
-
-  /// Set the peer verification mode.
-  /**
-   * This function may be used to configure the peer verification mode used by
-   * the context.
-   *
-   * @param v A bitmask of peer verification modes. See @ref verify_mode for
-   * available values.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note Calls @c SSL_CTX_set_verify.
-   */
-  ASIO_DECL void set_verify_mode(verify_mode v);
-
-  /// Set the peer verification mode.
-  /**
-   * This function may be used to configure the peer verification mode used by
-   * the context.
-   *
-   * @param v A bitmask of peer verification modes. See @ref verify_mode for
-   * available values.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @note Calls @c SSL_CTX_set_verify.
-   */
-  ASIO_DECL asio::error_code set_verify_mode(
-      verify_mode v, asio::error_code& ec);
-
-  /// Set the peer verification depth.
-  /**
-   * This function may be used to configure the maximum verification depth
-   * allowed by the context.
-   *
-   * @param depth Maximum depth for the certificate chain verification that
-   * shall be allowed.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note Calls @c SSL_CTX_set_verify_depth.
-   */
-  ASIO_DECL void set_verify_depth(int depth);
-
-  /// Set the peer verification depth.
-  /**
-   * This function may be used to configure the maximum verification depth
-   * allowed by the context.
-   *
-   * @param depth Maximum depth for the certificate chain verification that
-   * shall be allowed.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @note Calls @c SSL_CTX_set_verify_depth.
-   */
-  ASIO_DECL asio::error_code set_verify_depth(
-      int depth, asio::error_code& ec);
-
-  /// Set the callback used to verify peer certificates.
-  /**
-   * This function is used to specify a callback function that will be called
-   * by the implementation when it needs to verify a peer certificate.
-   *
-   * @param callback The function object to be used for verifying a certificate.
-   * The function signature of the handler must be:
-   * @code bool verify_callback(
-   *   bool preverified, // True if the certificate passed pre-verification.
-   *   verify_context& ctx // The peer certificate and other context.
-   * ); @endcode
-   * The return value of the callback is true if the certificate has passed
-   * verification, false otherwise.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note Calls @c SSL_CTX_set_verify.
-   */
-  template <typename VerifyCallback>
-  void set_verify_callback(VerifyCallback callback);
-
-  /// Set the callback used to verify peer certificates.
-  /**
-   * This function is used to specify a callback function that will be called
-   * by the implementation when it needs to verify a peer certificate.
-   *
-   * @param callback The function object to be used for verifying a certificate.
-   * The function signature of the handler must be:
-   * @code bool verify_callback(
-   *   bool preverified, // True if the certificate passed pre-verification.
-   *   verify_context& ctx // The peer certificate and other context.
-   * ); @endcode
-   * The return value of the callback is true if the certificate has passed
-   * verification, false otherwise.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @note Calls @c SSL_CTX_set_verify.
-   */
-  template <typename VerifyCallback>
-  asio::error_code set_verify_callback(VerifyCallback callback,
-      asio::error_code& ec);
-
-  /// Load a certification authority file for performing verification.
-  /**
-   * This function is used to load one or more trusted certification authorities
-   * from a file.
-   *
-   * @param filename The name of a file containing certification authority
-   * certificates in PEM format.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note Calls @c SSL_CTX_load_verify_locations.
-   */
-  ASIO_DECL void load_verify_file(const std::string& filename);
-
-  /// Load a certification authority file for performing verification.
-  /**
-   * This function is used to load the certificates for one or more trusted
-   * certification authorities from a file.
-   *
-   * @param filename The name of a file containing certification authority
-   * certificates in PEM format.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @note Calls @c SSL_CTX_load_verify_locations.
-   */
-  ASIO_DECL asio::error_code load_verify_file(
-      const std::string& filename, asio::error_code& ec);
-
-  /// Add certification authority for performing verification.
-  /**
-   * This function is used to add one trusted certification authority
-   * from a memory buffer.
-   *
-   * @param ca The buffer containing the certification authority certificate.
-   * The certificate must use the PEM format.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note Calls @c SSL_CTX_get_cert_store and @c X509_STORE_add_cert.
-   */
-  ASIO_DECL void add_certificate_authority(const const_buffer& ca);
-
-  /// Add certification authority for performing verification.
-  /**
-   * This function is used to add one trusted certification authority
-   * from a memory buffer.
-   *
-   * @param ca The buffer containing the certification authority certificate.
-   * The certificate must use the PEM format.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @note Calls @c SSL_CTX_get_cert_store and @c X509_STORE_add_cert.
-   */
-  ASIO_DECL asio::error_code add_certificate_authority(
-      const const_buffer& ca, asio::error_code& ec);
-
-  /// Configures the context to use the default directories for finding
-  /// certification authority certificates.
-  /**
-   * This function specifies that the context should use the default,
-   * system-dependent directories for locating certification authority
-   * certificates.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note Calls @c SSL_CTX_set_default_verify_paths.
-   */
-  ASIO_DECL void set_default_verify_paths();
-
-  /// Configures the context to use the default directories for finding
-  /// certification authority certificates.
-  /**
-   * This function specifies that the context should use the default,
-   * system-dependent directories for locating certification authority
-   * certificates.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @note Calls @c SSL_CTX_set_default_verify_paths.
-   */
-  ASIO_DECL asio::error_code set_default_verify_paths(
-      asio::error_code& ec);
-
-  /// Add a directory containing certificate authority files to be used for
-  /// performing verification.
-  /**
-   * This function is used to specify the name of a directory containing
-   * certification authority certificates. Each file in the directory must
-   * contain a single certificate. The files must be named using the subject
-   * name's hash and an extension of ".0".
-   *
-   * @param path The name of a directory containing the certificates.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note Calls @c SSL_CTX_load_verify_locations.
-   */
-  ASIO_DECL void add_verify_path(const std::string& path);
-
-  /// Add a directory containing certificate authority files to be used for
-  /// performing verification.
-  /**
-   * This function is used to specify the name of a directory containing
-   * certification authority certificates. Each file in the directory must
-   * contain a single certificate. The files must be named using the subject
-   * name's hash and an extension of ".0".
-   *
-   * @param path The name of a directory containing the certificates.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @note Calls @c SSL_CTX_load_verify_locations.
-   */
-  ASIO_DECL asio::error_code add_verify_path(
-      const std::string& path, asio::error_code& ec);
-
-  /// Use a certificate from a memory buffer.
-  /**
-   * This function is used to load a certificate into the context from a buffer.
-   *
-   * @param certificate The buffer containing the certificate.
-   *
-   * @param format The certificate format (ASN.1 or PEM).
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note Calls @c SSL_CTX_use_certificate or SSL_CTX_use_certificate_ASN1.
-   */
-  ASIO_DECL void use_certificate(
-      const const_buffer& certificate, file_format format);
-
-  /// Use a certificate from a memory buffer.
-  /**
-   * This function is used to load a certificate into the context from a buffer.
-   *
-   * @param certificate The buffer containing the certificate.
-   *
-   * @param format The certificate format (ASN.1 or PEM).
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @note Calls @c SSL_CTX_use_certificate or SSL_CTX_use_certificate_ASN1.
-   */
-  ASIO_DECL asio::error_code use_certificate(
-      const const_buffer& certificate, file_format format,
-      asio::error_code& ec);
-
-  /// Use a certificate from a file.
-  /**
-   * This function is used to load a certificate into the context from a file.
-   *
-   * @param filename The name of the file containing the certificate.
-   *
-   * @param format The file format (ASN.1 or PEM).
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note Calls @c SSL_CTX_use_certificate_file.
-   */
-  ASIO_DECL void use_certificate_file(
-      const std::string& filename, file_format format);
-
-  /// Use a certificate from a file.
-  /**
-   * This function is used to load a certificate into the context from a file.
-   *
-   * @param filename The name of the file containing the certificate.
-   *
-   * @param format The file format (ASN.1 or PEM).
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @note Calls @c SSL_CTX_use_certificate_file.
-   */
-  ASIO_DECL asio::error_code use_certificate_file(
-      const std::string& filename, file_format format,
-      asio::error_code& ec);
-
-  /// Use a certificate chain from a memory buffer.
-  /**
-   * This function is used to load a certificate chain into the context from a
-   * buffer.
-   *
-   * @param chain The buffer containing the certificate chain. The certificate
-   * chain must use the PEM format.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note Calls @c SSL_CTX_use_certificate and SSL_CTX_add_extra_chain_cert.
-   */
-  ASIO_DECL void use_certificate_chain(const const_buffer& chain);
-
-  /// Use a certificate chain from a memory buffer.
-  /**
-   * This function is used to load a certificate chain into the context from a
-   * buffer.
-   *
-   * @param chain The buffer containing the certificate chain. The certificate
-   * chain must use the PEM format.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @note Calls @c SSL_CTX_use_certificate and SSL_CTX_add_extra_chain_cert.
-   */
-  ASIO_DECL asio::error_code use_certificate_chain(
-      const const_buffer& chain, asio::error_code& ec);
-
-  /// Use a certificate chain from a file.
-  /**
-   * This function is used to load a certificate chain into the context from a
-   * file.
-   *
-   * @param filename The name of the file containing the certificate. The file
-   * must use the PEM format.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note Calls @c SSL_CTX_use_certificate_chain_file.
-   */
-  ASIO_DECL void use_certificate_chain_file(const std::string& filename);
-
-  /// Use a certificate chain from a file.
-  /**
-   * This function is used to load a certificate chain into the context from a
-   * file.
-   *
-   * @param filename The name of the file containing the certificate. The file
-   * must use the PEM format.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @note Calls @c SSL_CTX_use_certificate_chain_file.
-   */
-  ASIO_DECL asio::error_code use_certificate_chain_file(
-      const std::string& filename, asio::error_code& ec);
-
-  /// Use a private key from a memory buffer.
-  /**
-   * This function is used to load a private key into the context from a buffer.
-   *
-   * @param private_key The buffer containing the private key.
-   *
-   * @param format The private key format (ASN.1 or PEM).
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note Calls @c SSL_CTX_use_PrivateKey or SSL_CTX_use_PrivateKey_ASN1.
-   */
-  ASIO_DECL void use_private_key(
-      const const_buffer& private_key, file_format format);
-
-  /// Use a private key from a memory buffer.
-  /**
-   * This function is used to load a private key into the context from a buffer.
-   *
-   * @param private_key The buffer containing the private key.
-   *
-   * @param format The private key format (ASN.1 or PEM).
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @note Calls @c SSL_CTX_use_PrivateKey or SSL_CTX_use_PrivateKey_ASN1.
-   */
-  ASIO_DECL asio::error_code use_private_key(
-      const const_buffer& private_key, file_format format,
-      asio::error_code& ec);
-
-  /// Use a private key from a file.
-  /**
-   * This function is used to load a private key into the context from a file.
-   *
-   * @param filename The name of the file containing the private key.
-   *
-   * @param format The file format (ASN.1 or PEM).
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note Calls @c SSL_CTX_use_PrivateKey_file.
-   */
-  ASIO_DECL void use_private_key_file(
-      const std::string& filename, file_format format);
-
-  /// Use a private key from a file.
-  /**
-   * This function is used to load a private key into the context from a file.
-   *
-   * @param filename The name of the file containing the private key.
-   *
-   * @param format The file format (ASN.1 or PEM).
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @note Calls @c SSL_CTX_use_PrivateKey_file.
-   */
-  ASIO_DECL asio::error_code use_private_key_file(
-      const std::string& filename, file_format format,
-      asio::error_code& ec);
-
-  /// Use an RSA private key from a memory buffer.
-  /**
-   * This function is used to load an RSA private key into the context from a
-   * buffer.
-   *
-   * @param private_key The buffer containing the RSA private key.
-   *
-   * @param format The private key format (ASN.1 or PEM).
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note Calls @c SSL_CTX_use_RSAPrivateKey or SSL_CTX_use_RSAPrivateKey_ASN1.
-   */
-  ASIO_DECL void use_rsa_private_key(
-      const const_buffer& private_key, file_format format);
-
-  /// Use an RSA private key from a memory buffer.
-  /**
-   * This function is used to load an RSA private key into the context from a
-   * buffer.
-   *
-   * @param private_key The buffer containing the RSA private key.
-   *
-   * @param format The private key format (ASN.1 or PEM).
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @note Calls @c SSL_CTX_use_RSAPrivateKey or SSL_CTX_use_RSAPrivateKey_ASN1.
-   */
-  ASIO_DECL asio::error_code use_rsa_private_key(
-      const const_buffer& private_key, file_format format,
-      asio::error_code& ec);
-
-  /// Use an RSA private key from a file.
-  /**
-   * This function is used to load an RSA private key into the context from a
-   * file.
-   *
-   * @param filename The name of the file containing the RSA private key.
-   *
-   * @param format The file format (ASN.1 or PEM).
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note Calls @c SSL_CTX_use_RSAPrivateKey_file.
-   */
-  ASIO_DECL void use_rsa_private_key_file(
-      const std::string& filename, file_format format);
-
-  /// Use an RSA private key from a file.
-  /**
-   * This function is used to load an RSA private key into the context from a
-   * file.
-   *
-   * @param filename The name of the file containing the RSA private key.
-   *
-   * @param format The file format (ASN.1 or PEM).
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @note Calls @c SSL_CTX_use_RSAPrivateKey_file.
-   */
-  ASIO_DECL asio::error_code use_rsa_private_key_file(
-      const std::string& filename, file_format format,
-      asio::error_code& ec);
-
-  /// Use the specified memory buffer to obtain the temporary Diffie-Hellman
-  /// parameters.
-  /**
-   * This function is used to load Diffie-Hellman parameters into the context
-   * from a buffer.
-   *
-   * @param dh The memory buffer containing the Diffie-Hellman parameters. The
-   * buffer must use the PEM format.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note Calls @c SSL_CTX_set_tmp_dh.
-   */
-  ASIO_DECL void use_tmp_dh(const const_buffer& dh);
-
-  /// Use the specified memory buffer to obtain the temporary Diffie-Hellman
-  /// parameters.
-  /**
-   * This function is used to load Diffie-Hellman parameters into the context
-   * from a buffer.
-   *
-   * @param dh The memory buffer containing the Diffie-Hellman parameters. The
-   * buffer must use the PEM format.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @note Calls @c SSL_CTX_set_tmp_dh.
-   */
-  ASIO_DECL asio::error_code use_tmp_dh(
-      const const_buffer& dh, asio::error_code& ec);
-
-  /// Use the specified file to obtain the temporary Diffie-Hellman parameters.
-  /**
-   * This function is used to load Diffie-Hellman parameters into the context
-   * from a file.
-   *
-   * @param filename The name of the file containing the Diffie-Hellman
-   * parameters. The file must use the PEM format.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note Calls @c SSL_CTX_set_tmp_dh.
-   */
-  ASIO_DECL void use_tmp_dh_file(const std::string& filename);
-
-  /// Use the specified file to obtain the temporary Diffie-Hellman parameters.
-  /**
-   * This function is used to load Diffie-Hellman parameters into the context
-   * from a file.
-   *
-   * @param filename The name of the file containing the Diffie-Hellman
-   * parameters. The file must use the PEM format.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @note Calls @c SSL_CTX_set_tmp_dh.
-   */
-  ASIO_DECL asio::error_code use_tmp_dh_file(
-      const std::string& filename, asio::error_code& ec);
-
-  /// Set the password callback.
-  /**
-   * This function is used to specify a callback function to obtain password
-   * information about an encrypted key in PEM format.
-   *
-   * @param callback The function object to be used for obtaining the password.
-   * The function signature of the handler must be:
-   * @code std::string password_callback(
-   *   std::size_t max_length,  // The maximum size for a password.
-   *   password_purpose purpose // Whether password is for reading or writing.
-   * ); @endcode
-   * The return value of the callback is a string containing the password.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note Calls @c SSL_CTX_set_default_passwd_cb.
-   */
-  template <typename PasswordCallback>
-  void set_password_callback(PasswordCallback callback);
-
-  /// Set the password callback.
-  /**
-   * This function is used to specify a callback function to obtain password
-   * information about an encrypted key in PEM format.
-   *
-   * @param callback The function object to be used for obtaining the password.
-   * The function signature of the handler must be:
-   * @code std::string password_callback(
-   *   std::size_t max_length,  // The maximum size for a password.
-   *   password_purpose purpose // Whether password is for reading or writing.
-   * ); @endcode
-   * The return value of the callback is a string containing the password.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @note Calls @c SSL_CTX_set_default_passwd_cb.
-   */
-  template <typename PasswordCallback>
-  asio::error_code set_password_callback(PasswordCallback callback,
-      asio::error_code& ec);
-
-private:
-  struct bio_cleanup;
-  struct x509_cleanup;
-  struct evp_pkey_cleanup;
-  struct rsa_cleanup;
-  struct dh_cleanup;
-
-  // Helper function used to set a peer certificate verification callback.
-  ASIO_DECL asio::error_code do_set_verify_callback(
-      detail::verify_callback_base* callback, asio::error_code& ec);
-
-  // Callback used when the SSL implementation wants to verify a certificate.
-  ASIO_DECL static int verify_callback_function(
-      int preverified, X509_STORE_CTX* ctx);
-
-  // Helper function used to set a password callback.
-  ASIO_DECL asio::error_code do_set_password_callback(
-      detail::password_callback_base* callback, asio::error_code& ec);
-
-  // Callback used when the SSL implementation wants a password.
-  ASIO_DECL static int password_callback_function(
-      char* buf, int size, int purpose, void* data);
-
-  // Helper function to set the temporary Diffie-Hellman parameters from a BIO.
-  ASIO_DECL asio::error_code do_use_tmp_dh(
-      BIO* bio, asio::error_code& ec);
-
-  // Helper function to make a BIO from a memory buffer.
-  ASIO_DECL BIO* make_buffer_bio(const const_buffer& b);
-
-  // The underlying native implementation.
-  native_handle_type handle_;
-
-  // Ensure openssl is initialised.
-  asio::ssl::detail::openssl_init<> init_;
-};
-
-#endif // defined(ASIO_ENABLE_OLD_SSL)
-
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/ssl/impl/context.hpp"
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/ssl/impl/context.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_SSL_CONTEXT_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/context_base.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/context_base.hpp
deleted file mode 100644
index cfa2f42..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/context_base.hpp
+++ /dev/null
@@ -1,183 +0,0 @@
-//
-// ssl/context_base.hpp
-// ~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SSL_CONTEXT_BASE_HPP
-#define ASIO_SSL_CONTEXT_BASE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/ssl/detail/openssl_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-
-/// The context_base class is used as a base for the basic_context class
-/// template so that we have a common place to define various enums.
-class context_base
-{
-public:
-  /// Different methods supported by a context.
-  enum method
-  {
-    /// Generic SSL version 2.
-    sslv2,
-
-    /// SSL version 2 client.
-    sslv2_client,
-
-    /// SSL version 2 server.
-    sslv2_server,
-
-    /// Generic SSL version 3.
-    sslv3,
-
-    /// SSL version 3 client.
-    sslv3_client,
-
-    /// SSL version 3 server.
-    sslv3_server,
-
-    /// Generic TLS version 1.
-    tlsv1,
-
-    /// TLS version 1 client.
-    tlsv1_client,
-
-    /// TLS version 1 server.
-    tlsv1_server,
-
-    /// Generic SSL/TLS.
-    sslv23,
-
-    /// SSL/TLS client.
-    sslv23_client,
-
-    /// SSL/TLS server.
-    sslv23_server,
-
-    /// Generic TLS version 1.1.
-    tlsv11,
-
-    /// TLS version 1.1 client.
-    tlsv11_client,
-
-    /// TLS version 1.1 server.
-    tlsv11_server,
-
-    /// Generic TLS version 1.2.
-    tlsv12,
-
-    /// TLS version 1.2 client.
-    tlsv12_client,
-
-    /// TLS version 1.2 server.
-    tlsv12_server
-  };
-
-  /// Bitmask type for SSL options.
-  typedef long options;
-
-#if defined(GENERATING_DOCUMENTATION)
-  /// Implement various bug workarounds.
-  static const long default_workarounds = implementation_defined;
-
-  /// Always create a new key when using tmp_dh parameters.
-  static const long single_dh_use = implementation_defined;
-
-  /// Disable SSL v2.
-  static const long no_sslv2 = implementation_defined;
-
-  /// Disable SSL v3.
-  static const long no_sslv3 = implementation_defined;
-
-  /// Disable TLS v1.
-  static const long no_tlsv1 = implementation_defined;
-
-  /// Disable TLS v1.1.
-  static const long no_tlsv1_1 = implementation_defined;
-
-  /// Disable TLS v1.2.
-  static const long no_tlsv1_2 = implementation_defined;
-
-  /// Disable compression. Compression is disabled by default.
-  static const long no_compression = implementation_defined;
-#else
-  ASIO_STATIC_CONSTANT(long, default_workarounds = SSL_OP_ALL);
-  ASIO_STATIC_CONSTANT(long, single_dh_use = SSL_OP_SINGLE_DH_USE);
-  ASIO_STATIC_CONSTANT(long, no_sslv2 = SSL_OP_NO_SSLv2);
-  ASIO_STATIC_CONSTANT(long, no_sslv3 = SSL_OP_NO_SSLv3);
-  ASIO_STATIC_CONSTANT(long, no_tlsv1 = SSL_OP_NO_TLSv1);
-# if defined(SSL_OP_NO_TLSv1_1)
-  ASIO_STATIC_CONSTANT(long, no_tlsv1_1 = SSL_OP_NO_TLSv1_1);
-# else // defined(SSL_OP_NO_TLSv1_1)
-  ASIO_STATIC_CONSTANT(long, no_tlsv1_1 = 0x10000000L);
-# endif // defined(SSL_OP_NO_TLSv1_1)
-# if defined(SSL_OP_NO_TLSv1_2)
-  ASIO_STATIC_CONSTANT(long, no_tlsv1_2 = SSL_OP_NO_TLSv1_2);
-# else // defined(SSL_OP_NO_TLSv1_2)
-  ASIO_STATIC_CONSTANT(long, no_tlsv1_2 = 0x08000000L);
-# endif // defined(SSL_OP_NO_TLSv1_2)
-# if defined(SSL_OP_NO_COMPRESSION)
-  ASIO_STATIC_CONSTANT(long, no_compression = SSL_OP_NO_COMPRESSION);
-# else // defined(SSL_OP_NO_COMPRESSION)
-  ASIO_STATIC_CONSTANT(long, no_compression = 0x20000L);
-# endif // defined(SSL_OP_NO_COMPRESSION)
-#endif
-
-  /// File format types.
-  enum file_format
-  {
-    /// ASN.1 file.
-    asn1,
-
-    /// PEM file.
-    pem
-  };
-
-#if !defined(GENERATING_DOCUMENTATION)
-  // The following types and constants are preserved for backward compatibility.
-  // New programs should use the equivalents of the same names that are defined
-  // in the asio::ssl namespace.
-  typedef int verify_mode;
-  ASIO_STATIC_CONSTANT(int, verify_none = SSL_VERIFY_NONE);
-  ASIO_STATIC_CONSTANT(int, verify_peer = SSL_VERIFY_PEER);
-  ASIO_STATIC_CONSTANT(int,
-      verify_fail_if_no_peer_cert = SSL_VERIFY_FAIL_IF_NO_PEER_CERT);
-  ASIO_STATIC_CONSTANT(int, verify_client_once = SSL_VERIFY_CLIENT_ONCE);
-#endif
-
-  /// Purpose of PEM password.
-  enum password_purpose
-  {
-    /// The password is needed for reading/decryption.
-    for_reading,
-
-    /// The password is needed for writing/encryption.
-    for_writing
-  };
-
-protected:
-  /// Protected destructor to prevent deletion through this type.
-  ~context_base()
-  {
-  }
-};
-
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_CONTEXT_BASE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/context_service.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/context_service.hpp
deleted file mode 100644
index a4ffe9b..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/context_service.hpp
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// ssl/context_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SSL_CONTEXT_SERVICE_HPP
-#define ASIO_SSL_CONTEXT_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-  
-#if defined(ASIO_ENABLE_OLD_SSL)
-# include "asio/ssl/old/context_service.hpp"
-#endif // defined(ASIO_ENABLE_OLD_SSL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-
-#if defined(ASIO_ENABLE_OLD_SSL)
-
-using asio::ssl::old::context_service;
-
-#endif // defined(ASIO_ENABLE_OLD_SSL)
-
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_CONTEXT_SERVICE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/buffered_handshake_op.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/buffered_handshake_op.hpp
deleted file mode 100644
index c93e787..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/buffered_handshake_op.hpp
+++ /dev/null
@@ -1,110 +0,0 @@
-//
-// ssl/detail/buffered_handshake_op.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SSL_DETAIL_BUFFERED_HANDSHAKE_OP_HPP
-#define ASIO_SSL_DETAIL_BUFFERED_HANDSHAKE_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-# include "asio/ssl/detail/engine.hpp"
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-namespace detail {
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-
-template <typename ConstBufferSequence>
-class buffered_handshake_op
-{
-public:
-  buffered_handshake_op(stream_base::handshake_type type,
-      const ConstBufferSequence& buffers)
-    : type_(type),
-      buffers_(buffers),
-      total_buffer_size_(asio::buffer_size(buffers_))
-  {
-  }
-
-  engine::want operator()(engine& eng,
-      asio::error_code& ec,
-      std::size_t& bytes_transferred) const
-  {
-    typename ConstBufferSequence::const_iterator iter = buffers_.begin();
-    typename ConstBufferSequence::const_iterator end = buffers_.end();
-    std::size_t accumulated_size = 0;
-
-    for (;;)
-    {
-      engine::want want = eng.handshake(type_, ec);
-      if (want != engine::want_input_and_retry
-          || bytes_transferred == total_buffer_size_)
-        return want;
-
-      // Find the next buffer piece to be fed to the engine.
-      while (iter != end)
-      {
-        const_buffer buffer(*iter);
-
-        // Skip over any buffers which have already been consumed by the engine.
-        if (bytes_transferred >= accumulated_size + buffer_size(buffer))
-        {
-          accumulated_size += buffer_size(buffer);
-          ++iter;
-          continue;
-        }
-
-        // The current buffer may have been partially consumed by the engine on
-        // a previous iteration. If so, adjust the buffer to point to the
-        // unused portion.
-        if (bytes_transferred > accumulated_size)
-          buffer = buffer + (bytes_transferred - accumulated_size);
-
-        // Pass the buffer to the engine, and update the bytes transferred to
-        // reflect the total number of bytes consumed so far.
-        bytes_transferred += buffer_size(buffer);
-        buffer = eng.put_input(buffer);
-        bytes_transferred -= buffer_size(buffer);
-        break;
-      }
-    }
-  }
-
-  template <typename Handler>
-  void call_handler(Handler& handler,
-      const asio::error_code& ec,
-      const std::size_t& bytes_transferred) const
-  {
-    handler(ec, bytes_transferred);
-  }
-
-private:
-  stream_base::handshake_type type_;
-  ConstBufferSequence buffers_;
-  std::size_t total_buffer_size_;
-};
-
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-} // namespace detail
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_DETAIL_BUFFERED_HANDSHAKE_OP_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/engine.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/engine.hpp
deleted file mode 100644
index e56ed1b..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/engine.hpp
+++ /dev/null
@@ -1,164 +0,0 @@
-//
-// ssl/detail/engine.hpp
-// ~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SSL_DETAIL_ENGINE_HPP
-#define ASIO_SSL_DETAIL_ENGINE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-# include "asio/buffer.hpp"
-# include "asio/detail/static_mutex.hpp"
-# include "asio/ssl/detail/openssl_types.hpp"
-# include "asio/ssl/detail/verify_callback.hpp"
-# include "asio/ssl/stream_base.hpp"
-# include "asio/ssl/verify_mode.hpp"
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-namespace detail {
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-
-class engine
-{
-public:
-  enum want
-  {
-    // Returned by functions to indicate that the engine wants input. The input
-    // buffer should be updated to point to the data. The engine then needs to
-    // be called again to retry the operation.
-    want_input_and_retry = -2,
-
-    // Returned by functions to indicate that the engine wants to write output.
-    // The output buffer points to the data to be written. The engine then
-    // needs to be called again to retry the operation.
-    want_output_and_retry = -1,
-
-    // Returned by functions to indicate that the engine doesn't need input or
-    // output.
-    want_nothing = 0,
-
-    // Returned by functions to indicate that the engine wants to write output.
-    // The output buffer points to the data to be written. After that the
-    // operation is complete, and the engine does not need to be called again.
-    want_output = 1
-  };
-
-  // Construct a new engine for the specified context.
-  ASIO_DECL explicit engine(SSL_CTX* context);
-
-  // Destructor.
-  ASIO_DECL ~engine();
-
-  // Get the underlying implementation in the native type.
-  ASIO_DECL SSL* native_handle();
-
-  // Set the peer verification mode.
-  ASIO_DECL asio::error_code set_verify_mode(
-      verify_mode v, asio::error_code& ec);
-
-  // Set the peer verification depth.
-  ASIO_DECL asio::error_code set_verify_depth(
-      int depth, asio::error_code& ec);
-
-  // Set a peer certificate verification callback.
-  ASIO_DECL asio::error_code set_verify_callback(
-      verify_callback_base* callback, asio::error_code& ec);
-
-  // Perform an SSL handshake using either SSL_connect (client-side) or
-  // SSL_accept (server-side).
-  ASIO_DECL want handshake(
-      stream_base::handshake_type type, asio::error_code& ec);
-
-  // Perform a graceful shutdown of the SSL session.
-  ASIO_DECL want shutdown(asio::error_code& ec);
-
-  // Write bytes to the SSL session.
-  ASIO_DECL want write(const asio::const_buffer& data,
-      asio::error_code& ec, std::size_t& bytes_transferred);
-
-  // Read bytes from the SSL session.
-  ASIO_DECL want read(const asio::mutable_buffer& data,
-      asio::error_code& ec, std::size_t& bytes_transferred);
-
-  // Get output data to be written to the transport.
-  ASIO_DECL asio::mutable_buffers_1 get_output(
-      const asio::mutable_buffer& data);
-
-  // Put input data that was read from the transport.
-  ASIO_DECL asio::const_buffer put_input(
-      const asio::const_buffer& data);
-
-  // Map an error::eof code returned by the underlying transport according to
-  // the type and state of the SSL session. Returns a const reference to the
-  // error code object, suitable for passing to a completion handler.
-  ASIO_DECL const asio::error_code& map_error_code(
-      asio::error_code& ec) const;
-
-private:
-  // Disallow copying and assignment.
-  engine(const engine&);
-  engine& operator=(const engine&);
-
-  // Callback used when the SSL implementation wants to verify a certificate.
-  ASIO_DECL static int verify_callback_function(
-      int preverified, X509_STORE_CTX* ctx);
-
-  // The SSL_accept function may not be thread safe. This mutex is used to
-  // protect all calls to the SSL_accept function.
-  ASIO_DECL static asio::detail::static_mutex& accept_mutex();
-
-  // Perform one operation. Returns >= 0 on success or error, want_read if the
-  // operation needs more input, or want_write if it needs to write some output
-  // before the operation can complete.
-  ASIO_DECL want perform(int (engine::* op)(void*, std::size_t),
-      void* data, std::size_t length, asio::error_code& ec,
-      std::size_t* bytes_transferred);
-
-  // Adapt the SSL_accept function to the signature needed for perform().
-  ASIO_DECL int do_accept(void*, std::size_t);
-
-  // Adapt the SSL_connect function to the signature needed for perform().
-  ASIO_DECL int do_connect(void*, std::size_t);
-
-  // Adapt the SSL_shutdown function to the signature needed for perform().
-  ASIO_DECL int do_shutdown(void*, std::size_t);
-
-  // Adapt the SSL_read function to the signature needed for perform().
-  ASIO_DECL int do_read(void* data, std::size_t length);
-
-  // Adapt the SSL_write function to the signature needed for perform().
-  ASIO_DECL int do_write(void* data, std::size_t length);
-
-  SSL* ssl_;
-  BIO* ext_bio_;
-};
-
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-} // namespace detail
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/ssl/detail/impl/engine.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_SSL_DETAIL_ENGINE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/handshake_op.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/handshake_op.hpp
deleted file mode 100644
index 066e030..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/handshake_op.hpp
+++ /dev/null
@@ -1,68 +0,0 @@
-//
-// ssl/detail/handshake_op.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SSL_DETAIL_HANDSHAKE_OP_HPP
-#define ASIO_SSL_DETAIL_HANDSHAKE_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-# include "asio/ssl/detail/engine.hpp"
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-namespace detail {
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-
-class handshake_op
-{
-public:
-  handshake_op(stream_base::handshake_type type)
-    : type_(type)
-  {
-  }
-
-  engine::want operator()(engine& eng,
-      asio::error_code& ec,
-      std::size_t& bytes_transferred) const
-  {
-    bytes_transferred = 0;
-    return eng.handshake(type_, ec);
-  }
-
-  template <typename Handler>
-  void call_handler(Handler& handler,
-      const asio::error_code& ec,
-      const std::size_t&) const
-  {
-    handler(ec);
-  }
-
-private:
-  stream_base::handshake_type type_;
-};
-
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-} // namespace detail
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_DETAIL_HANDSHAKE_OP_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/impl/engine.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/impl/engine.ipp
deleted file mode 100644
index 139d739..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/impl/engine.ipp
+++ /dev/null
@@ -1,327 +0,0 @@
-//
-// ssl/detail/impl/engine.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SSL_DETAIL_IMPL_ENGINE_IPP
-#define ASIO_SSL_DETAIL_IMPL_ENGINE_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-# include "asio/detail/throw_error.hpp"
-# include "asio/error.hpp"
-# include "asio/ssl/detail/engine.hpp"
-# include "asio/ssl/error.hpp"
-# include "asio/ssl/verify_context.hpp"
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-namespace detail {
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-
-engine::engine(SSL_CTX* context)
-  : ssl_(::SSL_new(context))
-{
-  if (!ssl_)
-  {
-    asio::error_code ec(
-        static_cast<int>(::ERR_get_error()),
-        asio::error::get_ssl_category());
-    asio::detail::throw_error(ec, "engine");
-  }
-
-  accept_mutex().init();
-
-  ::SSL_set_mode(ssl_, SSL_MODE_ENABLE_PARTIAL_WRITE);
-  ::SSL_set_mode(ssl_, SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER);
-#if defined(SSL_MODE_RELEASE_BUFFERS)
-  ::SSL_set_mode(ssl_, SSL_MODE_RELEASE_BUFFERS);
-#endif // defined(SSL_MODE_RELEASE_BUFFERS)
-
-  ::BIO* int_bio = 0;
-  ::BIO_new_bio_pair(&int_bio, 0, &ext_bio_, 0);
-  ::SSL_set_bio(ssl_, int_bio, int_bio);
-}
-
-engine::~engine()
-{
-  if (SSL_get_app_data(ssl_))
-  {
-    delete static_cast<verify_callback_base*>(SSL_get_app_data(ssl_));
-    SSL_set_app_data(ssl_, 0);
-  }
-
-  ::BIO_free(ext_bio_);
-  ::SSL_free(ssl_);
-}
-
-SSL* engine::native_handle()
-{
-  return ssl_;
-}
-
-asio::error_code engine::set_verify_mode(
-    verify_mode v, asio::error_code& ec)
-{
-  ::SSL_set_verify(ssl_, v, ::SSL_get_verify_callback(ssl_));
-
-  ec = asio::error_code();
-  return ec;
-}
-
-asio::error_code engine::set_verify_depth(
-    int depth, asio::error_code& ec)
-{
-  ::SSL_set_verify_depth(ssl_, depth);
-
-  ec = asio::error_code();
-  return ec;
-}
-
-asio::error_code engine::set_verify_callback(
-    verify_callback_base* callback, asio::error_code& ec)
-{
-  if (SSL_get_app_data(ssl_))
-    delete static_cast<verify_callback_base*>(SSL_get_app_data(ssl_));
-
-  SSL_set_app_data(ssl_, callback);
-
-  ::SSL_set_verify(ssl_, ::SSL_get_verify_mode(ssl_),
-      &engine::verify_callback_function);
-
-  ec = asio::error_code();
-  return ec;
-}
-
-int engine::verify_callback_function(int preverified, X509_STORE_CTX* ctx)
-{
-  if (ctx)
-  {
-    if (SSL* ssl = static_cast<SSL*>(
-          ::X509_STORE_CTX_get_ex_data(
-            ctx, ::SSL_get_ex_data_X509_STORE_CTX_idx())))
-    {
-      if (SSL_get_app_data(ssl))
-      {
-        verify_callback_base* callback =
-          static_cast<verify_callback_base*>(
-              SSL_get_app_data(ssl));
-
-        verify_context verify_ctx(ctx);
-        return callback->call(preverified != 0, verify_ctx) ? 1 : 0;
-      }
-    }
-  }
-
-  return 0;
-}
-
-engine::want engine::handshake(
-    stream_base::handshake_type type, asio::error_code& ec)
-{
-  return perform((type == asio::ssl::stream_base::client)
-      ? &engine::do_connect : &engine::do_accept, 0, 0, ec, 0);
-}
-
-engine::want engine::shutdown(asio::error_code& ec)
-{
-  return perform(&engine::do_shutdown, 0, 0, ec, 0);
-}
-
-engine::want engine::write(const asio::const_buffer& data,
-    asio::error_code& ec, std::size_t& bytes_transferred)
-{
-  if (asio::buffer_size(data) == 0)
-  {
-    ec = asio::error_code();
-    return engine::want_nothing;
-  }
-
-  return perform(&engine::do_write,
-      const_cast<void*>(asio::buffer_cast<const void*>(data)),
-      asio::buffer_size(data), ec, &bytes_transferred);
-}
-
-engine::want engine::read(const asio::mutable_buffer& data,
-    asio::error_code& ec, std::size_t& bytes_transferred)
-{
-  if (asio::buffer_size(data) == 0)
-  {
-    ec = asio::error_code();
-    return engine::want_nothing;
-  }
-
-  return perform(&engine::do_read,
-      asio::buffer_cast<void*>(data),
-      asio::buffer_size(data), ec, &bytes_transferred);
-}
-
-asio::mutable_buffers_1 engine::get_output(
-    const asio::mutable_buffer& data)
-{
-  int length = ::BIO_read(ext_bio_,
-      asio::buffer_cast<void*>(data),
-      static_cast<int>(asio::buffer_size(data)));
-
-  return asio::buffer(data,
-      length > 0 ? static_cast<std::size_t>(length) : 0);
-}
-
-asio::const_buffer engine::put_input(
-    const asio::const_buffer& data)
-{
-  int length = ::BIO_write(ext_bio_,
-      asio::buffer_cast<const void*>(data),
-      static_cast<int>(asio::buffer_size(data)));
-
-  return asio::buffer(data +
-      (length > 0 ? static_cast<std::size_t>(length) : 0));
-}
-
-const asio::error_code& engine::map_error_code(
-    asio::error_code& ec) const
-{
-  // We only want to map the error::eof code.
-  if (ec != asio::error::eof)
-    return ec;
-
-  // If there's data yet to be read, it's an error.
-  if (BIO_wpending(ext_bio_))
-  {
-    ec = asio::error_code(
-        ERR_PACK(ERR_LIB_SSL, 0, SSL_R_SHORT_READ),
-        asio::error::get_ssl_category());
-    return ec;
-  }
-
-  // SSL v2 doesn't provide a protocol-level shutdown, so an eof on the
-  // underlying transport is passed through.
-  if (ssl_->version == SSL2_VERSION)
-    return ec;
-
-  // Otherwise, the peer should have negotiated a proper shutdown.
-  if ((::SSL_get_shutdown(ssl_) & SSL_RECEIVED_SHUTDOWN) == 0)
-  {
-    ec = asio::error_code(
-        ERR_PACK(ERR_LIB_SSL, 0, SSL_R_SHORT_READ),
-        asio::error::get_ssl_category());
-  }
-
-  return ec;
-}
-
-asio::detail::static_mutex& engine::accept_mutex()
-{
-  static asio::detail::static_mutex mutex = ASIO_STATIC_MUTEX_INIT;
-  return mutex;
-}
-
-engine::want engine::perform(int (engine::* op)(void*, std::size_t),
-    void* data, std::size_t length, asio::error_code& ec,
-    std::size_t* bytes_transferred)
-{
-  std::size_t pending_output_before = ::BIO_ctrl_pending(ext_bio_);
-  ::ERR_clear_error();
-  int result = (this->*op)(data, length);
-  int ssl_error = ::SSL_get_error(ssl_, result);
-  int sys_error = static_cast<int>(::ERR_get_error());
-  std::size_t pending_output_after = ::BIO_ctrl_pending(ext_bio_);
-
-  if (ssl_error == SSL_ERROR_SSL)
-  {
-    ec = asio::error_code(sys_error,
-        asio::error::get_ssl_category());
-    return want_nothing;
-  }
-
-  if (ssl_error == SSL_ERROR_SYSCALL)
-  {
-    ec = asio::error_code(sys_error,
-        asio::error::get_system_category());
-    return want_nothing;
-  }
-
-  if (result > 0 && bytes_transferred)
-    *bytes_transferred = static_cast<std::size_t>(result);
-
-  if (ssl_error == SSL_ERROR_WANT_WRITE)
-  {
-    ec = asio::error_code();
-    return want_output_and_retry;
-  }
-  else if (pending_output_after > pending_output_before)
-  {
-    ec = asio::error_code();
-    return result > 0 ? want_output : want_output_and_retry;
-  }
-  else if (ssl_error == SSL_ERROR_WANT_READ)
-  {
-    ec = asio::error_code();
-    return want_input_and_retry;
-  }
-  else if (::SSL_get_shutdown(ssl_) & SSL_RECEIVED_SHUTDOWN)
-  {
-    ec = asio::error::eof;
-    return want_nothing;
-  }
-  else
-  {
-    ec = asio::error_code();
-    return want_nothing;
-  }
-}
-
-int engine::do_accept(void*, std::size_t)
-{
-  asio::detail::static_mutex::scoped_lock lock(accept_mutex());
-  return ::SSL_accept(ssl_);
-}
-
-int engine::do_connect(void*, std::size_t)
-{
-  return ::SSL_connect(ssl_);
-}
-
-int engine::do_shutdown(void*, std::size_t)
-{
-  int result = ::SSL_shutdown(ssl_);
-  if (result == 0)
-    result = ::SSL_shutdown(ssl_);
-  return result;
-}
-
-int engine::do_read(void* data, std::size_t length)
-{
-  return ::SSL_read(ssl_, data,
-      length < INT_MAX ? static_cast<int>(length) : INT_MAX);
-}
-
-int engine::do_write(void* data, std::size_t length)
-{
-  return ::SSL_write(ssl_, data,
-      length < INT_MAX ? static_cast<int>(length) : INT_MAX);
-}
-
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-} // namespace detail
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_DETAIL_IMPL_ENGINE_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/impl/openssl_init.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/impl/openssl_init.ipp
deleted file mode 100644
index da66fc1..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/impl/openssl_init.ipp
+++ /dev/null
@@ -1,149 +0,0 @@
-//
-// ssl/detail/impl/openssl_init.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2005 Voipster / Indrek dot Juhani at voipster dot com
-// Copyright (c) 2005-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SSL_DETAIL_IMPL_OPENSSL_INIT_IPP
-#define ASIO_SSL_DETAIL_IMPL_OPENSSL_INIT_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <vector>
-#include "asio/detail/assert.hpp"
-#include "asio/detail/mutex.hpp"
-#include "asio/detail/tss_ptr.hpp"
-#include "asio/ssl/detail/openssl_init.hpp"
-#include "asio/ssl/detail/openssl_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-namespace detail {
-
-class openssl_init_base::do_init
-{
-public:
-  do_init()
-  {
-    ::SSL_library_init();
-    ::SSL_load_error_strings();        
-    ::OpenSSL_add_all_algorithms();
-
-    mutexes_.resize(::CRYPTO_num_locks());
-    for (size_t i = 0; i < mutexes_.size(); ++i)
-      mutexes_[i].reset(new asio::detail::mutex);
-    ::CRYPTO_set_locking_callback(&do_init::openssl_locking_func);
-    ::CRYPTO_set_id_callback(&do_init::openssl_id_func);
-
-#if !defined(SSL_OP_NO_COMPRESSION) \
-  && (OPENSSL_VERSION_NUMBER >= 0x00908000L)
-    null_compression_methods_ = sk_SSL_COMP_new_null();
-#endif // !defined(SSL_OP_NO_COMPRESSION)
-       // && (OPENSSL_VERSION_NUMBER >= 0x00908000L)
-  }
-
-  ~do_init()
-  {
-#if !defined(SSL_OP_NO_COMPRESSION) \
-  && (OPENSSL_VERSION_NUMBER >= 0x00908000L)
-    sk_SSL_COMP_free(null_compression_methods_);
-#endif // !defined(SSL_OP_NO_COMPRESSION)
-       // && (OPENSSL_VERSION_NUMBER >= 0x00908000L)
-
-    ::CRYPTO_set_id_callback(0);
-    ::CRYPTO_set_locking_callback(0);
-    ::ERR_free_strings();
-#if (OPENSSL_VERSION_NUMBER >= 0x10000000L)
-    ::ERR_remove_thread_state(NULL);
-#else // (OPENSSL_VERSION_NUMBER >= 0x10000000L)
-    ::ERR_remove_state(0);
-#endif // (OPENSSL_VERSION_NUMBER >= 0x10000000L)
-    ::EVP_cleanup();
-    ::CRYPTO_cleanup_all_ex_data();
-    ::CONF_modules_unload(1);
-#if !defined(OPENSSL_NO_ENGINE)
-    ::ENGINE_cleanup();
-#endif // !defined(OPENSSL_NO_ENGINE)
-  }
-
-#if !defined(SSL_OP_NO_COMPRESSION) \
-  && (OPENSSL_VERSION_NUMBER >= 0x00908000L)
-  STACK_OF(SSL_COMP)* get_null_compression_methods() const
-  {
-    return null_compression_methods_;
-  }
-#endif // !defined(SSL_OP_NO_COMPRESSION)
-       // && (OPENSSL_VERSION_NUMBER >= 0x00908000L)
-
-private:
-  static unsigned long openssl_id_func()
-  {
-#if defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-    return ::GetCurrentThreadId();
-#else // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-    void* id = instance()->thread_id_;
-    if (id == 0)
-      instance()->thread_id_ = id = &id; // Ugh.
-    ASIO_ASSERT(sizeof(unsigned long) >= sizeof(void*));
-    return reinterpret_cast<unsigned long>(id);
-#endif // defined(ASIO_WINDOWS) || defined(__CYGWIN__)
-  }
-
-  static void openssl_locking_func(int mode, int n, 
-    const char* /*file*/, int /*line*/)
-  {
-    if (mode & CRYPTO_LOCK)
-      instance()->mutexes_[n]->lock();
-    else
-      instance()->mutexes_[n]->unlock();
-  }
-
-  // Mutexes to be used in locking callbacks.
-  std::vector<asio::detail::shared_ptr<
-        asio::detail::mutex> > mutexes_;
-
-#if !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-  // The thread identifiers to be used by openssl.
-  asio::detail::tss_ptr<void> thread_id_;
-#endif // !defined(ASIO_WINDOWS) && !defined(__CYGWIN__)
-
-#if !defined(SSL_OP_NO_COMPRESSION) \
-  && (OPENSSL_VERSION_NUMBER >= 0x00908000L)
-  STACK_OF(SSL_COMP)* null_compression_methods_;
-#endif // !defined(SSL_OP_NO_COMPRESSION)
-       // && (OPENSSL_VERSION_NUMBER >= 0x00908000L)
-};
-
-asio::detail::shared_ptr<openssl_init_base::do_init>
-openssl_init_base::instance()
-{
-  static asio::detail::shared_ptr<do_init> init(new do_init);
-  return init;
-}
-
-#if !defined(SSL_OP_NO_COMPRESSION) \
-  && (OPENSSL_VERSION_NUMBER >= 0x00908000L)
-STACK_OF(SSL_COMP)* openssl_init_base::get_null_compression_methods()
-{
-  return instance()->get_null_compression_methods();
-}
-#endif // !defined(SSL_OP_NO_COMPRESSION)
-       // && (OPENSSL_VERSION_NUMBER >= 0x00908000L)
-
-} // namespace detail
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_DETAIL_IMPL_OPENSSL_INIT_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/io.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/io.hpp
deleted file mode 100644
index 115531b..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/io.hpp
+++ /dev/null
@@ -1,349 +0,0 @@
-//
-// ssl/detail/io.hpp
-// ~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SSL_DETAIL_IO_HPP
-#define ASIO_SSL_DETAIL_IO_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-# include "asio/ssl/detail/engine.hpp"
-# include "asio/ssl/detail/stream_core.hpp"
-# include "asio/write.hpp"
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-namespace detail {
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-
-template <typename Stream, typename Operation>
-std::size_t io(Stream& next_layer, stream_core& core,
-    const Operation& op, asio::error_code& ec)
-{
-  std::size_t bytes_transferred = 0;
-  do switch (op(core.engine_, ec, bytes_transferred))
-  {
-  case engine::want_input_and_retry:
-
-    // If the input buffer is empty then we need to read some more data from
-    // the underlying transport.
-    if (asio::buffer_size(core.input_) == 0)
-      core.input_ = asio::buffer(core.input_buffer_,
-          next_layer.read_some(core.input_buffer_, ec));
-
-    // Pass the new input data to the engine.
-    core.input_ = core.engine_.put_input(core.input_);
-
-    // Try the operation again.
-    continue;
-
-  case engine::want_output_and_retry:
-
-    // Get output data from the engine and write it to the underlying
-    // transport.
-    asio::write(next_layer,
-        core.engine_.get_output(core.output_buffer_), ec);
-
-    // Try the operation again.
-    continue;
-
-  case engine::want_output:
-
-    // Get output data from the engine and write it to the underlying
-    // transport.
-    asio::write(next_layer,
-        core.engine_.get_output(core.output_buffer_), ec);
-
-    // Operation is complete. Return result to caller.
-    core.engine_.map_error_code(ec);
-    return bytes_transferred;
-
-  default:
-
-    // Operation is complete. Return result to caller.
-    core.engine_.map_error_code(ec);
-    return bytes_transferred;
-
-  } while (!ec);
-
-  // Operation failed. Return result to caller.
-  core.engine_.map_error_code(ec);
-  return 0;
-}
-
-template <typename Stream, typename Operation, typename Handler>
-class io_op
-{
-public:
-  io_op(Stream& next_layer, stream_core& core,
-      const Operation& op, Handler& handler)
-    : next_layer_(next_layer),
-      core_(core),
-      op_(op),
-      start_(0),
-      want_(engine::want_nothing),
-      bytes_transferred_(0),
-      handler_(ASIO_MOVE_CAST(Handler)(handler))
-  {
-  }
-
-#if defined(ASIO_HAS_MOVE)
-  io_op(const io_op& other)
-    : next_layer_(other.next_layer_),
-      core_(other.core_),
-      op_(other.op_),
-      start_(other.start_),
-      want_(other.want_),
-      ec_(other.ec_),
-      bytes_transferred_(other.bytes_transferred_),
-      handler_(other.handler_)
-  {
-  }
-
-  io_op(io_op&& other)
-    : next_layer_(other.next_layer_),
-      core_(other.core_),
-      op_(other.op_),
-      start_(other.start_),
-      want_(other.want_),
-      ec_(other.ec_),
-      bytes_transferred_(other.bytes_transferred_),
-      handler_(ASIO_MOVE_CAST(Handler)(other.handler_))
-  {
-  }
-#endif // defined(ASIO_HAS_MOVE)
-
-  void operator()(asio::error_code ec,
-      std::size_t bytes_transferred = ~std::size_t(0), int start = 0)
-  {
-    switch (start_ = start)
-    {
-    case 1: // Called after at least one async operation.
-      do
-      {
-        switch (want_ = op_(core_.engine_, ec_, bytes_transferred_))
-        {
-        case engine::want_input_and_retry:
-
-          // If the input buffer already has data in it we can pass it to the
-          // engine and then retry the operation immediately.
-          if (asio::buffer_size(core_.input_) != 0)
-          {
-            core_.input_ = core_.engine_.put_input(core_.input_);
-            continue;
-          }
-
-          // The engine wants more data to be read from input. However, we
-          // cannot allow more than one read operation at a time on the
-          // underlying transport. The pending_read_ timer's expiry is set to
-          // pos_infin if a read is in progress, and neg_infin otherwise.
-          if (core_.pending_read_.expires_at() == core_.neg_infin())
-          {
-            // Prevent other read operations from being started.
-            core_.pending_read_.expires_at(core_.pos_infin());
-
-            // Start reading some data from the underlying transport.
-            next_layer_.async_read_some(
-                asio::buffer(core_.input_buffer_),
-                ASIO_MOVE_CAST(io_op)(*this));
-          }
-          else
-          {
-            // Wait until the current read operation completes.
-            core_.pending_read_.async_wait(ASIO_MOVE_CAST(io_op)(*this));
-          }
-
-          // Yield control until asynchronous operation completes. Control
-          // resumes at the "default:" label below.
-          return;
-
-        case engine::want_output_and_retry:
-        case engine::want_output:
-
-          // The engine wants some data to be written to the output. However, we
-          // cannot allow more than one write operation at a time on the
-          // underlying transport. The pending_write_ timer's expiry is set to
-          // pos_infin if a write is in progress, and neg_infin otherwise.
-          if (core_.pending_write_.expires_at() == core_.neg_infin())
-          {
-            // Prevent other write operations from being started.
-            core_.pending_write_.expires_at(core_.pos_infin());
-
-            // Start writing all the data to the underlying transport.
-            asio::async_write(next_layer_,
-                core_.engine_.get_output(core_.output_buffer_),
-                ASIO_MOVE_CAST(io_op)(*this));
-          }
-          else
-          {
-            // Wait until the current write operation completes.
-            core_.pending_write_.async_wait(ASIO_MOVE_CAST(io_op)(*this));
-          }
-
-          // Yield control until asynchronous operation completes. Control
-          // resumes at the "default:" label below.
-          return;
-
-        default:
-
-          // The SSL operation is done and we can invoke the handler, but we
-          // have to keep in mind that this function might be being called from
-          // the async operation's initiating function. In this case we're not
-          // allowed to call the handler directly. Instead, issue a zero-sized
-          // read so the handler runs "as-if" posted using io_service::post().
-          if (start)
-          {
-            next_layer_.async_read_some(
-                asio::buffer(core_.input_buffer_, 0),
-                ASIO_MOVE_CAST(io_op)(*this));
-
-            // Yield control until asynchronous operation completes. Control
-            // resumes at the "default:" label below.
-            return;
-          }
-          else
-          {
-            // Continue on to run handler directly.
-            break;
-          }
-        }
-
-        default:
-        if (bytes_transferred == ~std::size_t(0))
-          bytes_transferred = 0; // Timer cancellation, no data transferred.
-        else if (!ec_)
-          ec_ = ec;
-
-        switch (want_)
-        {
-        case engine::want_input_and_retry:
-
-          // Add received data to the engine's input.
-          core_.input_ = asio::buffer(
-              core_.input_buffer_, bytes_transferred);
-          core_.input_ = core_.engine_.put_input(core_.input_);
-
-          // Release any waiting read operations.
-          core_.pending_read_.expires_at(core_.neg_infin());
-
-          // Try the operation again.
-          continue;
-
-        case engine::want_output_and_retry:
-
-          // Release any waiting write operations.
-          core_.pending_write_.expires_at(core_.neg_infin());
-
-          // Try the operation again.
-          continue;
-
-        case engine::want_output:
-
-          // Release any waiting write operations.
-          core_.pending_write_.expires_at(core_.neg_infin());
-
-          // Fall through to call handler.
-
-        default:
-
-          // Pass the result to the handler.
-          op_.call_handler(handler_,
-              core_.engine_.map_error_code(ec_),
-              ec_ ? 0 : bytes_transferred_);
-
-          // Our work here is done.
-          return;
-        }
-      } while (!ec_);
-
-      // Operation failed. Pass the result to the handler.
-      op_.call_handler(handler_, core_.engine_.map_error_code(ec_), 0);
-    }
-  }
-
-//private:
-  Stream& next_layer_;
-  stream_core& core_;
-  Operation op_;
-  int start_;
-  engine::want want_;
-  asio::error_code ec_;
-  std::size_t bytes_transferred_;
-  Handler handler_;
-};
-
-template <typename Stream, typename Operation,  typename Handler>
-inline void* asio_handler_allocate(std::size_t size,
-    io_op<Stream, Operation, Handler>* this_handler)
-{
-  return asio_handler_alloc_helpers::allocate(
-      size, this_handler->handler_);
-}
-
-template <typename Stream, typename Operation, typename Handler>
-inline void asio_handler_deallocate(void* pointer, std::size_t size,
-    io_op<Stream, Operation, Handler>* this_handler)
-{
-  asio_handler_alloc_helpers::deallocate(
-      pointer, size, this_handler->handler_);
-}
-
-template <typename Stream, typename Operation, typename Handler>
-inline bool asio_handler_is_continuation(
-    io_op<Stream, Operation, Handler>* this_handler)
-{
-  return this_handler->start_ == 0 ? true
-    : asio_handler_cont_helpers::is_continuation(this_handler->handler_);
-}
-
-template <typename Function, typename Stream,
-    typename Operation, typename Handler>
-inline void asio_handler_invoke(Function& function,
-    io_op<Stream, Operation, Handler>* this_handler)
-{
-  asio_handler_invoke_helpers::invoke(
-      function, this_handler->handler_);
-}
-
-template <typename Function, typename Stream,
-    typename Operation, typename Handler>
-inline void asio_handler_invoke(const Function& function,
-    io_op<Stream, Operation, Handler>* this_handler)
-{
-  asio_handler_invoke_helpers::invoke(
-      function, this_handler->handler_);
-}
-
-template <typename Stream, typename Operation, typename Handler>
-inline void async_io(Stream& next_layer, stream_core& core,
-    const Operation& op, Handler& handler)
-{
-  io_op<Stream, Operation, Handler>(
-    next_layer, core, op, handler)(
-      asio::error_code(), 0, 1);
-}
-
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-} // namespace detail
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_DETAIL_IO_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/openssl_init.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/openssl_init.hpp
deleted file mode 100644
index 7bc9297..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/openssl_init.hpp
+++ /dev/null
@@ -1,101 +0,0 @@
-//
-// ssl/detail/openssl_init.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SSL_DETAIL_OPENSSL_INIT_HPP
-#define ASIO_SSL_DETAIL_OPENSSL_INIT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cstring>
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/shared_ptr.hpp"
-#include "asio/ssl/detail/openssl_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-namespace detail {
-
-class openssl_init_base
-  : private noncopyable
-{
-protected:
-  // Class that performs the actual initialisation.
-  class do_init;
-
-  // Helper function to manage a do_init singleton. The static instance of the
-  // openssl_init object ensures that this function is always called before
-  // main, and therefore before any other threads can get started. The do_init
-  // instance must be static in this function to ensure that it gets
-  // initialised before any other global objects try to use it.
-  ASIO_DECL static asio::detail::shared_ptr<do_init> instance();
-
-#if !defined(SSL_OP_NO_COMPRESSION) \
-  && (OPENSSL_VERSION_NUMBER >= 0x00908000L)
-  // Get an empty stack of compression methods, to be used when disabling
-  // compression.
-  ASIO_DECL static STACK_OF(SSL_COMP)* get_null_compression_methods();
-#endif // !defined(SSL_OP_NO_COMPRESSION)
-       // && (OPENSSL_VERSION_NUMBER >= 0x00908000L)
-};
-
-template <bool Do_Init = true>
-class openssl_init : private openssl_init_base
-{
-public:
-  // Constructor.
-  openssl_init()
-    : ref_(instance())
-  {
-    using namespace std; // For memmove.
-
-    // Ensure openssl_init::instance_ is linked in.
-    openssl_init* tmp = &instance_;
-    memmove(&tmp, &tmp, sizeof(openssl_init*));
-  }
-
-  // Destructor.
-  ~openssl_init()
-  {
-  }
-
-#if !defined(SSL_OP_NO_COMPRESSION) \
-  && (OPENSSL_VERSION_NUMBER >= 0x00908000L)
-  using openssl_init_base::get_null_compression_methods;
-#endif // !defined(SSL_OP_NO_COMPRESSION)
-       // && (OPENSSL_VERSION_NUMBER >= 0x00908000L)
-
-private:
-  // Instance to force initialisation of openssl at global scope.
-  static openssl_init instance_;
-
-  // Reference to singleton do_init object to ensure that openssl does not get
-  // cleaned up until the last user has finished with it.
-  asio::detail::shared_ptr<do_init> ref_;
-};
-
-template <bool Do_Init>
-openssl_init<Do_Init> openssl_init<Do_Init>::instance_;
-
-} // namespace detail
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/ssl/detail/impl/openssl_init.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_SSL_DETAIL_OPENSSL_INIT_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/openssl_types.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/openssl_types.hpp
deleted file mode 100644
index 5a14148..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/openssl_types.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-//
-// ssl/detail/openssl_types.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SSL_DETAIL_OPENSSL_TYPES_HPP
-#define ASIO_SSL_DETAIL_OPENSSL_TYPES_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <openssl/conf.h>
-#include <openssl/ssl.h>
-#if !defined(OPENSSL_NO_ENGINE)
-# include <openssl/engine.h>
-#endif // !defined(OPENSSL_NO_ENGINE)
-#include <openssl/err.h>
-#include <openssl/x509v3.h>
-#include "asio/detail/socket_types.hpp"
-
-#endif // ASIO_SSL_DETAIL_OPENSSL_TYPES_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/password_callback.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/password_callback.hpp
deleted file mode 100644
index 479420e..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/password_callback.hpp
+++ /dev/null
@@ -1,72 +0,0 @@
-//
-// ssl/detail/password_callback.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SSL_DETAIL_PASSWORD_CALLBACK_HPP
-#define ASIO_SSL_DETAIL_PASSWORD_CALLBACK_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-# include <cstddef>
-# include <string>
-# include "asio/ssl/context_base.hpp"
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-namespace detail {
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-
-class password_callback_base
-{
-public:
-  virtual ~password_callback_base()
-  {
-  }
-
-  virtual std::string call(std::size_t size,
-      context_base::password_purpose purpose) = 0;
-};
-
-template <typename PasswordCallback>
-class password_callback : public password_callback_base
-{
-public:
-  explicit password_callback(PasswordCallback callback)
-    : callback_(callback)
-  {
-  }
-
-  virtual std::string call(std::size_t size,
-      context_base::password_purpose purpose)
-  {
-    return callback_(size, purpose);
-  }
-
-private:
-  PasswordCallback callback_;
-};
-
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-} // namespace detail
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_DETAIL_PASSWORD_CALLBACK_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/read_op.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/read_op.hpp
deleted file mode 100644
index 8d949ef..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/read_op.hpp
+++ /dev/null
@@ -1,73 +0,0 @@
-//
-// ssl/detail/read_op.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SSL_DETAIL_READ_OP_HPP
-#define ASIO_SSL_DETAIL_READ_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-# include "asio/detail/buffer_sequence_adapter.hpp"
-# include "asio/ssl/detail/engine.hpp"
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-namespace detail {
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-
-template <typename MutableBufferSequence>
-class read_op
-{
-public:
-  read_op(const MutableBufferSequence& buffers)
-    : buffers_(buffers)
-  {
-  }
-
-  engine::want operator()(engine& eng,
-      asio::error_code& ec,
-      std::size_t& bytes_transferred) const
-  {
-    asio::mutable_buffer buffer =
-      asio::detail::buffer_sequence_adapter<asio::mutable_buffer,
-        MutableBufferSequence>::first(buffers_);
-
-    return eng.read(buffer, ec, bytes_transferred);
-  }
-
-  template <typename Handler>
-  void call_handler(Handler& handler,
-      const asio::error_code& ec,
-      const std::size_t& bytes_transferred) const
-  {
-    handler(ec, bytes_transferred);
-  }
-
-private:
-  MutableBufferSequence buffers_;
-};
-
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-} // namespace detail
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_DETAIL_READ_OP_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/shutdown_op.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/shutdown_op.hpp
deleted file mode 100644
index d7f7de7..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/shutdown_op.hpp
+++ /dev/null
@@ -1,60 +0,0 @@
-//
-// ssl/detail/shutdown_op.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SSL_DETAIL_SHUTDOWN_OP_HPP
-#define ASIO_SSL_DETAIL_SHUTDOWN_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-# include "asio/ssl/detail/engine.hpp"
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-namespace detail {
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-
-class shutdown_op
-{
-public:
-  engine::want operator()(engine& eng,
-      asio::error_code& ec,
-      std::size_t& bytes_transferred) const
-  {
-    bytes_transferred = 0;
-    return eng.shutdown(ec);
-  }
-
-  template <typename Handler>
-  void call_handler(Handler& handler,
-      const asio::error_code& ec,
-      const std::size_t&) const
-  {
-    handler(ec);
-  }
-};
-
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-} // namespace detail
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_DETAIL_SHUTDOWN_OP_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/stream_core.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/stream_core.hpp
deleted file mode 100644
index 4c5c85a..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/stream_core.hpp
+++ /dev/null
@@ -1,126 +0,0 @@
-//
-// ssl/detail/stream_core.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SSL_DETAIL_STREAM_CORE_HPP
-#define ASIO_SSL_DETAIL_STREAM_CORE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-# if defined(ASIO_HAS_BOOST_DATE_TIME)
-#  include "asio/deadline_timer.hpp"
-# else // defined(ASIO_HAS_BOOST_DATE_TIME)
-#  include "asio/steady_timer.hpp"
-# endif // defined(ASIO_HAS_BOOST_DATE_TIME)
-# include "asio/ssl/detail/engine.hpp"
-# include "asio/buffer.hpp"
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-namespace detail {
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-
-struct stream_core
-{
-  // According to the OpenSSL documentation, this is the buffer size that is
-  // sufficient to hold the largest possible TLS record.
-  enum { max_tls_record_size = 17 * 1024 };
-
-  stream_core(SSL_CTX* context, asio::io_service& io_service)
-    : engine_(context),
-      pending_read_(io_service),
-      pending_write_(io_service),
-      output_buffer_space_(max_tls_record_size),
-      output_buffer_(asio::buffer(output_buffer_space_)),
-      input_buffer_space_(max_tls_record_size),
-      input_buffer_(asio::buffer(input_buffer_space_))
-  {
-    pending_read_.expires_at(neg_infin());
-    pending_write_.expires_at(neg_infin());
-  }
-
-  ~stream_core()
-  {
-  }
-
-  // The SSL engine.
-  engine engine_;
-
-#if defined(ASIO_HAS_BOOST_DATE_TIME)
-  // Timer used for storing queued read operations.
-  asio::deadline_timer pending_read_;
-
-  // Timer used for storing queued write operations.
-  asio::deadline_timer pending_write_;
-
-  // Helper function for obtaining a time value that always fires.
-  static asio::deadline_timer::time_type neg_infin()
-  {
-    return boost::posix_time::neg_infin;
-  }
-
-  // Helper function for obtaining a time value that never fires.
-  static asio::deadline_timer::time_type pos_infin()
-  {
-    return boost::posix_time::pos_infin;
-  }
-#else // defined(ASIO_HAS_BOOST_DATE_TIME)
-  // Timer used for storing queued read operations.
-  asio::steady_timer pending_read_;
-
-  // Timer used for storing queued write operations.
-  asio::steady_timer pending_write_;
-
-  // Helper function for obtaining a time value that always fires.
-  static asio::steady_timer::time_point neg_infin()
-  {
-    return (asio::steady_timer::time_point::min)();
-  }
-
-  // Helper function for obtaining a time value that never fires.
-  static asio::steady_timer::time_point pos_infin()
-  {
-    return (asio::steady_timer::time_point::max)();
-  }
-#endif // defined(ASIO_HAS_BOOST_DATE_TIME)
-
-  // Buffer space used to prepare output intended for the transport.
-  std::vector<unsigned char> output_buffer_space_;
-
-  // A buffer that may be used to prepare output intended for the transport.
-  const asio::mutable_buffers_1 output_buffer_;
-
-  // Buffer space used to read input intended for the engine.
-  std::vector<unsigned char> input_buffer_space_;
-
-  // A buffer that may be used to read input intended for the engine.
-  const asio::mutable_buffers_1 input_buffer_;
-
-  // The buffer pointing to the engine's unconsumed input.
-  asio::const_buffer input_;
-};
-
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-} // namespace detail
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_DETAIL_STREAM_CORE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/verify_callback.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/verify_callback.hpp
deleted file mode 100644
index 5a46b53..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/verify_callback.hpp
+++ /dev/null
@@ -1,68 +0,0 @@
-//
-// ssl/detail/verify_callback.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SSL_DETAIL_VERIFY_CALLBACK_HPP
-#define ASIO_SSL_DETAIL_VERIFY_CALLBACK_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-# include "asio/ssl/verify_context.hpp"
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-namespace detail {
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-
-class verify_callback_base
-{
-public:
-  virtual ~verify_callback_base()
-  {
-  }
-
-  virtual bool call(bool preverified, verify_context& ctx) = 0;
-};
-
-template <typename VerifyCallback>
-class verify_callback : public verify_callback_base
-{
-public:
-  explicit verify_callback(VerifyCallback callback)
-    : callback_(callback)
-  {
-  }
-
-  virtual bool call(bool preverified, verify_context& ctx)
-  {
-    return callback_(preverified, ctx);
-  }
-
-private:
-  VerifyCallback callback_;
-};
-
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-} // namespace detail
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_DETAIL_VERIFY_CALLBACK_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/write_op.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/write_op.hpp
deleted file mode 100644
index e6feb1d..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/detail/write_op.hpp
+++ /dev/null
@@ -1,73 +0,0 @@
-//
-// ssl/detail/write_op.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SSL_DETAIL_WRITE_OP_HPP
-#define ASIO_SSL_DETAIL_WRITE_OP_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-# include "asio/detail/buffer_sequence_adapter.hpp"
-# include "asio/ssl/detail/engine.hpp"
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-namespace detail {
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-
-template <typename ConstBufferSequence>
-class write_op
-{
-public:
-  write_op(const ConstBufferSequence& buffers)
-    : buffers_(buffers)
-  {
-  }
-
-  engine::want operator()(engine& eng,
-      asio::error_code& ec,
-      std::size_t& bytes_transferred) const
-  {
-    asio::const_buffer buffer =
-      asio::detail::buffer_sequence_adapter<asio::const_buffer,
-        ConstBufferSequence>::first(buffers_);
-
-    return eng.write(buffer, ec, bytes_transferred);
-  }
-
-  template <typename Handler>
-  void call_handler(Handler& handler,
-      const asio::error_code& ec,
-      const std::size_t& bytes_transferred) const
-  {
-    handler(ec, bytes_transferred);
-  }
-
-private:
-  ConstBufferSequence buffers_;
-};
-
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-} // namespace detail
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_DETAIL_WRITE_OP_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/error.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/error.hpp
deleted file mode 100644
index 1385d2a..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/error.hpp
+++ /dev/null
@@ -1,68 +0,0 @@
-//
-// ssl/error.hpp
-// ~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SSL_ERROR_HPP
-#define ASIO_SSL_ERROR_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/error_code.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace error {
-
-enum ssl_errors
-{
-};
-
-extern ASIO_DECL
-const asio::error_category& get_ssl_category();
-
-static const asio::error_category& ssl_category
-  = asio::error::get_ssl_category();
-
-} // namespace error
-} // namespace asio
-
-#if defined(ASIO_HAS_STD_SYSTEM_ERROR)
-namespace std {
-
-template<> struct is_error_code_enum<asio::error::ssl_errors>
-{
-  static const bool value = true;
-};
-
-} // namespace std
-#endif // defined(ASIO_HAS_STD_SYSTEM_ERROR)
-
-namespace asio {
-namespace error {
-
-inline asio::error_code make_error_code(ssl_errors e)
-{
-  return asio::error_code(
-      static_cast<int>(e), get_ssl_category());
-}
-
-} // namespace error
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/ssl/impl/error.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_SSL_ERROR_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/impl/context.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/impl/context.hpp
deleted file mode 100644
index 34f23d3..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/impl/context.hpp
+++ /dev/null
@@ -1,71 +0,0 @@
-//
-// ssl/impl/context.hpp
-// ~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2005 Voipster / Indrek dot Juhani at voipster dot com
-// Copyright (c) 2005-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SSL_IMPL_CONTEXT_HPP
-#define ASIO_SSL_IMPL_CONTEXT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-# include "asio/detail/throw_error.hpp"
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-
-template <typename VerifyCallback>
-void context::set_verify_callback(VerifyCallback callback)
-{
-  asio::error_code ec;
-  this->set_verify_callback(callback, ec);
-  asio::detail::throw_error(ec, "set_verify_callback");
-}
-
-template <typename VerifyCallback>
-asio::error_code context::set_verify_callback(
-    VerifyCallback callback, asio::error_code& ec)
-{
-  return do_set_verify_callback(
-      new detail::verify_callback<VerifyCallback>(callback), ec);
-}
-
-template <typename PasswordCallback>
-void context::set_password_callback(PasswordCallback callback)
-{
-  asio::error_code ec;
-  this->set_password_callback(callback, ec);
-  asio::detail::throw_error(ec, "set_password_callback");
-}
-
-template <typename PasswordCallback>
-asio::error_code context::set_password_callback(
-    PasswordCallback callback, asio::error_code& ec)
-{
-  return do_set_password_callback(
-      new detail::password_callback<PasswordCallback>(callback), ec);
-}
-
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_IMPL_CONTEXT_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/impl/context.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/impl/context.ipp
deleted file mode 100644
index 4a66a0a..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/impl/context.ipp
+++ /dev/null
@@ -1,974 +0,0 @@
-//
-// ssl/impl/context.ipp
-// ~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2005 Voipster / Indrek dot Juhani at voipster dot com
-// Copyright (c) 2005-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SSL_IMPL_CONTEXT_IPP
-#define ASIO_SSL_IMPL_CONTEXT_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-# include <cstring>
-# include "asio/detail/throw_error.hpp"
-# include "asio/error.hpp"
-# include "asio/ssl/context.hpp"
-# include "asio/ssl/error.hpp"
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-
-struct context::bio_cleanup
-{
-  BIO* p;
-  ~bio_cleanup() { if (p) ::BIO_free(p); }
-};
-
-struct context::x509_cleanup
-{
-  X509* p;
-  ~x509_cleanup() { if (p) ::X509_free(p); }
-};
-
-struct context::evp_pkey_cleanup
-{
-  EVP_PKEY* p;
-  ~evp_pkey_cleanup() { if (p) ::EVP_PKEY_free(p); }
-};
-
-struct context::rsa_cleanup
-{
-  RSA* p;
-  ~rsa_cleanup() { if (p) ::RSA_free(p); }
-};
-
-struct context::dh_cleanup
-{
-  DH* p;
-  ~dh_cleanup() { if (p) ::DH_free(p); }
-};
-
-context::context(context::method m)
-  : handle_(0)
-{
-  ::ERR_clear_error();
-
-  switch (m)
-  {
-#if defined(OPENSSL_NO_SSL2)
-  case context::sslv2:
-  case context::sslv2_client:
-  case context::sslv2_server:
-    asio::detail::throw_error(
-        asio::error::invalid_argument, "context");
-    break;
-#else // defined(OPENSSL_NO_SSL2)
-  case context::sslv2:
-    handle_ = ::SSL_CTX_new(::SSLv2_method());
-    break;
-  case context::sslv2_client:
-    handle_ = ::SSL_CTX_new(::SSLv2_client_method());
-    break;
-  case context::sslv2_server:
-    handle_ = ::SSL_CTX_new(::SSLv2_server_method());
-    break;
-#endif // defined(OPENSSL_NO_SSL2)
-  case context::sslv3:
-    handle_ = ::SSL_CTX_new(::SSLv3_method());
-    break;
-  case context::sslv3_client:
-    handle_ = ::SSL_CTX_new(::SSLv3_client_method());
-    break;
-  case context::sslv3_server:
-    handle_ = ::SSL_CTX_new(::SSLv3_server_method());
-    break;
-  case context::tlsv1:
-    handle_ = ::SSL_CTX_new(::TLSv1_method());
-    break;
-  case context::tlsv1_client:
-    handle_ = ::SSL_CTX_new(::TLSv1_client_method());
-    break;
-  case context::tlsv1_server:
-    handle_ = ::SSL_CTX_new(::TLSv1_server_method());
-    break;
-  case context::sslv23:
-    handle_ = ::SSL_CTX_new(::SSLv23_method());
-    break;
-  case context::sslv23_client:
-    handle_ = ::SSL_CTX_new(::SSLv23_client_method());
-    break;
-  case context::sslv23_server:
-    handle_ = ::SSL_CTX_new(::SSLv23_server_method());
-    break;
-#if defined(SSL_TXT_TLSV1_1)
-  case context::tlsv11:
-    handle_ = ::SSL_CTX_new(::TLSv1_1_method());
-    break;
-  case context::tlsv11_client:
-    handle_ = ::SSL_CTX_new(::TLSv1_1_client_method());
-    break;
-  case context::tlsv11_server:
-    handle_ = ::SSL_CTX_new(::TLSv1_1_server_method());
-    break;
-#else // defined(SSL_TXT_TLSV1_1)
-  case context::tlsv11:
-  case context::tlsv11_client:
-  case context::tlsv11_server:
-    asio::detail::throw_error(
-        asio::error::invalid_argument, "context");
-    break;
-#endif // defined(SSL_TXT_TLSV1_1)
-#if defined(SSL_TXT_TLSV1_2)
-  case context::tlsv12:
-    handle_ = ::SSL_CTX_new(::TLSv1_2_method());
-    break;
-  case context::tlsv12_client:
-    handle_ = ::SSL_CTX_new(::TLSv1_2_client_method());
-    break;
-  case context::tlsv12_server:
-    handle_ = ::SSL_CTX_new(::TLSv1_2_server_method());
-    break;
-#else // defined(SSL_TXT_TLSV1_2) 
-  case context::tlsv12:
-  case context::tlsv12_client:
-  case context::tlsv12_server:
-    asio::detail::throw_error(
-        asio::error::invalid_argument, "context");
-    break;
-#endif // defined(SSL_TXT_TLSV1_2) 
-  default:
-    handle_ = ::SSL_CTX_new(0);
-    break;
-  }
-
-  if (handle_ == 0)
-  {
-    asio::error_code ec(
-        static_cast<int>(::ERR_get_error()),
-        asio::error::get_ssl_category());
-    asio::detail::throw_error(ec, "context");
-  }
-
-  set_options(no_compression);
-}
-
-context::context(asio::io_service&, context::method m)
-  : handle_(0)
-{
-  context tmp(m);
-  handle_ = tmp.handle_;
-  tmp.handle_ = 0;
-}
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-context::context(context&& other)
-{
-  handle_ = other.handle_;
-  other.handle_ = 0;
-}
-
-context& context::operator=(context&& other)
-{
-  context tmp(ASIO_MOVE_CAST(context)(*this));
-  handle_ = other.handle_;
-  other.handle_ = 0;
-  return *this;
-}
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
-context::~context()
-{
-  if (handle_)
-  {
-    if (handle_->default_passwd_callback_userdata)
-    {
-      detail::password_callback_base* callback =
-        static_cast<detail::password_callback_base*>(
-            handle_->default_passwd_callback_userdata);
-      delete callback;
-      handle_->default_passwd_callback_userdata = 0;
-    }
-
-    if (SSL_CTX_get_app_data(handle_))
-    {
-      detail::verify_callback_base* callback =
-        static_cast<detail::verify_callback_base*>(
-            SSL_CTX_get_app_data(handle_));
-      delete callback;
-      SSL_CTX_set_app_data(handle_, 0);
-    }
-
-    ::SSL_CTX_free(handle_);
-  }
-}
-
-context::native_handle_type context::native_handle()
-{
-  return handle_;
-}
-
-context::impl_type context::impl()
-{
-  return handle_;
-}
-
-void context::clear_options(context::options o)
-{
-  asio::error_code ec;
-  clear_options(o, ec);
-  asio::detail::throw_error(ec, "clear_options");
-}
-
-asio::error_code context::clear_options(
-    context::options o, asio::error_code& ec)
-{
-#if (OPENSSL_VERSION_NUMBER >= 0x009080DFL) \
-  && (OPENSSL_VERSION_NUMBER != 0x00909000L)
-# if !defined(SSL_OP_NO_COMPRESSION)
-  if ((o & context::no_compression) != 0)
-  {
-# if (OPENSSL_VERSION_NUMBER >= 0x00908000L)
-    handle_->comp_methods = SSL_COMP_get_compression_methods();
-# endif // (OPENSSL_VERSION_NUMBER >= 0x00908000L)
-    o ^= context::no_compression;
-  }
-# endif // !defined(SSL_OP_NO_COMPRESSION)
-
-  ::SSL_CTX_clear_options(handle_, o);
-
-  ec = asio::error_code();
-#else // (OPENSSL_VERSION_NUMBER >= 0x009080DFL)
-      //   && (OPENSSL_VERSION_NUMBER != 0x00909000L)
-  (void)o;
-  ec = asio::error::operation_not_supported;
-#endif // (OPENSSL_VERSION_NUMBER >= 0x009080DFL)
-       //   && (OPENSSL_VERSION_NUMBER != 0x00909000L)
-  return ec;
-}
-
-void context::set_options(context::options o)
-{
-  asio::error_code ec;
-  set_options(o, ec);
-  asio::detail::throw_error(ec, "set_options");
-}
-
-asio::error_code context::set_options(
-    context::options o, asio::error_code& ec)
-{
-#if !defined(SSL_OP_NO_COMPRESSION)
-  if ((o & context::no_compression) != 0)
-  {
-#if (OPENSSL_VERSION_NUMBER >= 0x00908000L)
-    handle_->comp_methods =
-      asio::ssl::detail::openssl_init<>::get_null_compression_methods();
-#endif // (OPENSSL_VERSION_NUMBER >= 0x00908000L)
-    o ^= context::no_compression;
-  }
-#endif // !defined(SSL_OP_NO_COMPRESSION)
-
-  ::SSL_CTX_set_options(handle_, o);
-
-  ec = asio::error_code();
-  return ec;
-}
-
-void context::set_verify_mode(verify_mode v)
-{
-  asio::error_code ec;
-  set_verify_mode(v, ec);
-  asio::detail::throw_error(ec, "set_verify_mode");
-}
-
-asio::error_code context::set_verify_mode(
-    verify_mode v, asio::error_code& ec)
-{
-  ::SSL_CTX_set_verify(handle_, v, ::SSL_CTX_get_verify_callback(handle_));
-
-  ec = asio::error_code();
-  return ec;
-}
-
-void context::set_verify_depth(int depth)
-{
-  asio::error_code ec;
-  set_verify_depth(depth, ec);
-  asio::detail::throw_error(ec, "set_verify_depth");
-}
-
-asio::error_code context::set_verify_depth(
-    int depth, asio::error_code& ec)
-{
-  ::SSL_CTX_set_verify_depth(handle_, depth);
-
-  ec = asio::error_code();
-  return ec;
-}
-
-void context::load_verify_file(const std::string& filename)
-{
-  asio::error_code ec;
-  load_verify_file(filename, ec);
-  asio::detail::throw_error(ec, "load_verify_file");
-}
-
-asio::error_code context::load_verify_file(
-    const std::string& filename, asio::error_code& ec)
-{
-  ::ERR_clear_error();
-
-  if (::SSL_CTX_load_verify_locations(handle_, filename.c_str(), 0) != 1)
-  {
-    ec = asio::error_code(
-        static_cast<int>(::ERR_get_error()),
-        asio::error::get_ssl_category());
-    return ec;
-  }
-
-  ec = asio::error_code();
-  return ec;
-}
-
-void context::add_certificate_authority(const const_buffer& ca)
-{
-  asio::error_code ec;
-  add_certificate_authority(ca, ec);
-  asio::detail::throw_error(ec, "add_certificate_authority");
-}
-
-asio::error_code context::add_certificate_authority(
-    const const_buffer& ca, asio::error_code& ec)
-{
-  ::ERR_clear_error();
-
-  bio_cleanup bio = { make_buffer_bio(ca) };
-  if (bio.p)
-  {
-    x509_cleanup cert = { ::PEM_read_bio_X509(bio.p, 0, 0, 0) };
-    if (cert.p)
-    {
-      if (X509_STORE* store = ::SSL_CTX_get_cert_store(handle_))
-      {
-        if (::X509_STORE_add_cert(store, cert.p) == 1)
-        {
-          ec = asio::error_code();
-          return ec;
-        }
-      }
-    }
-  }
-
-  ec = asio::error_code(
-      static_cast<int>(::ERR_get_error()),
-      asio::error::get_ssl_category());
-  return ec;
-}
-
-void context::set_default_verify_paths()
-{
-  asio::error_code ec;
-  set_default_verify_paths(ec);
-  asio::detail::throw_error(ec, "set_default_verify_paths");
-}
-
-asio::error_code context::set_default_verify_paths(
-    asio::error_code& ec)
-{
-  ::ERR_clear_error();
-
-  if (::SSL_CTX_set_default_verify_paths(handle_) != 1)
-  {
-    ec = asio::error_code(
-        static_cast<int>(::ERR_get_error()),
-        asio::error::get_ssl_category());
-    return ec;
-  }
-
-  ec = asio::error_code();
-  return ec;
-}
-
-void context::add_verify_path(const std::string& path)
-{
-  asio::error_code ec;
-  add_verify_path(path, ec);
-  asio::detail::throw_error(ec, "add_verify_path");
-}
-
-asio::error_code context::add_verify_path(
-    const std::string& path, asio::error_code& ec)
-{
-  ::ERR_clear_error();
-
-  if (::SSL_CTX_load_verify_locations(handle_, 0, path.c_str()) != 1)
-  {
-    ec = asio::error_code(
-        static_cast<int>(::ERR_get_error()),
-        asio::error::get_ssl_category());
-    return ec;
-  }
-
-  ec = asio::error_code();
-  return ec;
-}
-
-void context::use_certificate(
-    const const_buffer& certificate, file_format format)
-{
-  asio::error_code ec;
-  use_certificate(certificate, format, ec);
-  asio::detail::throw_error(ec, "use_certificate");
-}
-
-asio::error_code context::use_certificate(
-    const const_buffer& certificate, file_format format,
-    asio::error_code& ec)
-{
-  ::ERR_clear_error();
-
-  if (format == context_base::asn1)
-  {
-    if (::SSL_CTX_use_certificate_ASN1(handle_,
-          static_cast<int>(buffer_size(certificate)),
-          buffer_cast<const unsigned char*>(certificate)) == 1)
-    {
-      ec = asio::error_code();
-      return ec;
-    }
-  }
-  else if (format == context_base::pem)
-  {
-    bio_cleanup bio = { make_buffer_bio(certificate) };
-    if (bio.p)
-    {
-      x509_cleanup cert = { ::PEM_read_bio_X509(bio.p, 0, 0, 0) };
-      if (cert.p)
-      {
-        if (::SSL_CTX_use_certificate(handle_, cert.p) == 1)
-        {
-          ec = asio::error_code();
-          return ec;
-        }
-      }
-    }
-  }
-  else
-  {
-    ec = asio::error::invalid_argument;
-    return ec;
-  }
-
-  ec = asio::error_code(
-      static_cast<int>(::ERR_get_error()),
-      asio::error::get_ssl_category());
-  return ec;
-}
-
-void context::use_certificate_file(
-    const std::string& filename, file_format format)
-{
-  asio::error_code ec;
-  use_certificate_file(filename, format, ec);
-  asio::detail::throw_error(ec, "use_certificate_file");
-}
-
-asio::error_code context::use_certificate_file(
-    const std::string& filename, file_format format,
-    asio::error_code& ec)
-{
-  int file_type;
-  switch (format)
-  {
-  case context_base::asn1:
-    file_type = SSL_FILETYPE_ASN1;
-    break;
-  case context_base::pem:
-    file_type = SSL_FILETYPE_PEM;
-    break;
-  default:
-    {
-      ec = asio::error::invalid_argument;
-      return ec;
-    }
-  }
-
-  ::ERR_clear_error();
-
-  if (::SSL_CTX_use_certificate_file(handle_, filename.c_str(), file_type) != 1)
-  {
-    ec = asio::error_code(
-        static_cast<int>(::ERR_get_error()),
-        asio::error::get_ssl_category());
-    return ec;
-  }
-
-  ec = asio::error_code();
-  return ec;
-}
-
-void context::use_certificate_chain(const const_buffer& chain)
-{
-  asio::error_code ec;
-  use_certificate_chain(chain, ec);
-  asio::detail::throw_error(ec, "use_certificate_chain");
-}
-
-asio::error_code context::use_certificate_chain(
-    const const_buffer& chain, asio::error_code& ec)
-{
-  ::ERR_clear_error();
-
-  bio_cleanup bio = { make_buffer_bio(chain) };
-  if (bio.p)
-  {
-    x509_cleanup cert = {
-      ::PEM_read_bio_X509_AUX(bio.p, 0,
-          handle_->default_passwd_callback,
-          handle_->default_passwd_callback_userdata) };
-    if (!cert.p)
-    {
-      ec = asio::error_code(ERR_R_PEM_LIB,
-          asio::error::get_ssl_category());
-      return ec;
-    }
-
-    int result = ::SSL_CTX_use_certificate(handle_, cert.p);
-    if (result == 0 || ::ERR_peek_error() != 0)
-    {
-      ec = asio::error_code(
-          static_cast<int>(::ERR_get_error()),
-          asio::error::get_ssl_category());
-      return ec;
-    }
-
-    if (handle_->extra_certs)
-    {
-      ::sk_X509_pop_free(handle_->extra_certs, X509_free);
-      handle_->extra_certs = 0;
-    }
-
-    while (X509* cacert = ::PEM_read_bio_X509(bio.p, 0,
-          handle_->default_passwd_callback,
-          handle_->default_passwd_callback_userdata))
-    {
-      if (!::SSL_CTX_add_extra_chain_cert(handle_, cacert))
-      {
-        ec = asio::error_code(
-            static_cast<int>(::ERR_get_error()),
-            asio::error::get_ssl_category());
-        return ec;
-      }
-    }
-  
-    result = ::ERR_peek_last_error();
-    if ((ERR_GET_LIB(result) == ERR_LIB_PEM)
-        && (ERR_GET_REASON(result) == PEM_R_NO_START_LINE))
-    {
-      ::ERR_clear_error();
-      ec = asio::error_code();
-      return ec;
-    }
-  }
-
-  ec = asio::error_code(
-      static_cast<int>(::ERR_get_error()),
-      asio::error::get_ssl_category());
-  return ec;
-}
-
-void context::use_certificate_chain_file(const std::string& filename)
-{
-  asio::error_code ec;
-  use_certificate_chain_file(filename, ec);
-  asio::detail::throw_error(ec, "use_certificate_chain_file");
-}
-
-asio::error_code context::use_certificate_chain_file(
-    const std::string& filename, asio::error_code& ec)
-{
-  ::ERR_clear_error();
-
-  if (::SSL_CTX_use_certificate_chain_file(handle_, filename.c_str()) != 1)
-  {
-    ec = asio::error_code(
-        static_cast<int>(::ERR_get_error()),
-        asio::error::get_ssl_category());
-    return ec;
-  }
-
-  ec = asio::error_code();
-  return ec;
-}
-
-void context::use_private_key(
-    const const_buffer& private_key, context::file_format format)
-{
-  asio::error_code ec;
-  use_private_key(private_key, format, ec);
-  asio::detail::throw_error(ec, "use_private_key");
-}
-
-asio::error_code context::use_private_key(
-    const const_buffer& private_key, context::file_format format,
-    asio::error_code& ec)
-{
-  ::ERR_clear_error();
-
-  bio_cleanup bio = { make_buffer_bio(private_key) };
-  if (bio.p)
-  {
-    evp_pkey_cleanup evp_private_key = { 0 };
-    switch (format)
-    {
-    case context_base::asn1:
-      evp_private_key.p = ::d2i_PrivateKey_bio(bio.p, 0);
-      break;
-    case context_base::pem:
-      evp_private_key.p = ::PEM_read_bio_PrivateKey(
-          bio.p, 0, handle_->default_passwd_callback,
-          handle_->default_passwd_callback_userdata);
-      break;
-    default:
-      {
-        ec = asio::error::invalid_argument;
-        return ec;
-      }
-    }
-
-    if (evp_private_key.p)
-    {
-      if (::SSL_CTX_use_PrivateKey(handle_, evp_private_key.p) == 1)
-      {
-        ec = asio::error_code();
-        return ec;
-      }
-    }
-  }
-
-  ec = asio::error_code(
-      static_cast<int>(::ERR_get_error()),
-      asio::error::get_ssl_category());
-  return ec;
-}
-
-void context::use_private_key_file(
-    const std::string& filename, context::file_format format)
-{
-  asio::error_code ec;
-  use_private_key_file(filename, format, ec);
-  asio::detail::throw_error(ec, "use_private_key_file");
-}
-
-void context::use_rsa_private_key(
-    const const_buffer& private_key, context::file_format format)
-{
-  asio::error_code ec;
-  use_rsa_private_key(private_key, format, ec);
-  asio::detail::throw_error(ec, "use_rsa_private_key");
-}
-
-asio::error_code context::use_rsa_private_key(
-    const const_buffer& private_key, context::file_format format,
-    asio::error_code& ec)
-{
-  ::ERR_clear_error();
-
-  bio_cleanup bio = { make_buffer_bio(private_key) };
-  if (bio.p)
-  {
-    rsa_cleanup rsa_private_key = { 0 };
-    switch (format)
-    {
-    case context_base::asn1:
-      rsa_private_key.p = ::d2i_RSAPrivateKey_bio(bio.p, 0);
-      break;
-    case context_base::pem:
-      rsa_private_key.p = ::PEM_read_bio_RSAPrivateKey(
-          bio.p, 0, handle_->default_passwd_callback,
-          handle_->default_passwd_callback_userdata);
-      break;
-    default:
-      {
-        ec = asio::error::invalid_argument;
-        return ec;
-      }
-    }
-
-    if (rsa_private_key.p)
-    {
-      if (::SSL_CTX_use_RSAPrivateKey(handle_, rsa_private_key.p) == 1)
-      {
-        ec = asio::error_code();
-        return ec;
-      }
-    }
-  }
-
-  ec = asio::error_code(
-      static_cast<int>(::ERR_get_error()),
-      asio::error::get_ssl_category());
-  return ec;
-}
-
-asio::error_code context::use_private_key_file(
-    const std::string& filename, context::file_format format,
-    asio::error_code& ec)
-{
-  int file_type;
-  switch (format)
-  {
-  case context_base::asn1:
-    file_type = SSL_FILETYPE_ASN1;
-    break;
-  case context_base::pem:
-    file_type = SSL_FILETYPE_PEM;
-    break;
-  default:
-    {
-      ec = asio::error::invalid_argument;
-      return ec;
-    }
-  }
-
-  ::ERR_clear_error();
-
-  if (::SSL_CTX_use_PrivateKey_file(handle_, filename.c_str(), file_type) != 1)
-  {
-    ec = asio::error_code(
-        static_cast<int>(::ERR_get_error()),
-        asio::error::get_ssl_category());
-    return ec;
-  }
-
-  ec = asio::error_code();
-  return ec;
-}
-
-void context::use_rsa_private_key_file(
-    const std::string& filename, context::file_format format)
-{
-  asio::error_code ec;
-  use_rsa_private_key_file(filename, format, ec);
-  asio::detail::throw_error(ec, "use_rsa_private_key_file");
-}
-
-asio::error_code context::use_rsa_private_key_file(
-    const std::string& filename, context::file_format format,
-    asio::error_code& ec)
-{
-  int file_type;
-  switch (format)
-  {
-  case context_base::asn1:
-    file_type = SSL_FILETYPE_ASN1;
-    break;
-  case context_base::pem:
-    file_type = SSL_FILETYPE_PEM;
-    break;
-  default:
-    {
-      ec = asio::error::invalid_argument;
-      return ec;
-    }
-  }
-
-  ::ERR_clear_error();
-
-  if (::SSL_CTX_use_RSAPrivateKey_file(
-        handle_, filename.c_str(), file_type) != 1)
-  {
-    ec = asio::error_code(
-        static_cast<int>(::ERR_get_error()),
-        asio::error::get_ssl_category());
-    return ec;
-  }
-
-  ec = asio::error_code();
-  return ec;
-}
-
-void context::use_tmp_dh(const const_buffer& dh)
-{
-  asio::error_code ec;
-  use_tmp_dh(dh, ec);
-  asio::detail::throw_error(ec, "use_tmp_dh");
-}
-
-asio::error_code context::use_tmp_dh(
-    const const_buffer& dh, asio::error_code& ec)
-{
-  ::ERR_clear_error();
-
-  bio_cleanup bio = { make_buffer_bio(dh) };
-  if (bio.p)
-  {
-    return do_use_tmp_dh(bio.p, ec);
-  }
-
-  ec = asio::error_code(
-      static_cast<int>(::ERR_get_error()),
-      asio::error::get_ssl_category());
-  return ec;
-}
-
-void context::use_tmp_dh_file(const std::string& filename)
-{
-  asio::error_code ec;
-  use_tmp_dh_file(filename, ec);
-  asio::detail::throw_error(ec, "use_tmp_dh_file");
-}
-
-asio::error_code context::use_tmp_dh_file(
-    const std::string& filename, asio::error_code& ec)
-{
-  ::ERR_clear_error();
-
-  bio_cleanup bio = { ::BIO_new_file(filename.c_str(), "r") };
-  if (bio.p)
-  {
-    return do_use_tmp_dh(bio.p, ec);
-  }
-
-  ec = asio::error_code(
-      static_cast<int>(::ERR_get_error()),
-      asio::error::get_ssl_category());
-  return ec;
-}
-
-asio::error_code context::do_use_tmp_dh(
-    BIO* bio, asio::error_code& ec)
-{
-  ::ERR_clear_error();
-
-  dh_cleanup dh = { ::PEM_read_bio_DHparams(bio, 0, 0, 0) };
-  if (dh.p)
-  {
-    if (::SSL_CTX_set_tmp_dh(handle_, dh.p) == 1)
-    {
-      ec = asio::error_code();
-      return ec;
-    }
-  }
-
-  ec = asio::error_code(
-      static_cast<int>(::ERR_get_error()),
-      asio::error::get_ssl_category());
-  return ec;
-}
-
-asio::error_code context::do_set_verify_callback(
-    detail::verify_callback_base* callback, asio::error_code& ec)
-{
-  if (SSL_CTX_get_app_data(handle_))
-  {
-    delete static_cast<detail::verify_callback_base*>(
-        SSL_CTX_get_app_data(handle_));
-  }
-
-  SSL_CTX_set_app_data(handle_, callback);
-
-  ::SSL_CTX_set_verify(handle_,
-      ::SSL_CTX_get_verify_mode(handle_),
-      &context::verify_callback_function);
-
-  ec = asio::error_code();
-  return ec;
-}
-
-int context::verify_callback_function(int preverified, X509_STORE_CTX* ctx)
-{
-  if (ctx)
-  {
-    if (SSL* ssl = static_cast<SSL*>(
-          ::X509_STORE_CTX_get_ex_data(
-            ctx, ::SSL_get_ex_data_X509_STORE_CTX_idx())))
-    {
-      if (SSL_CTX* handle = ::SSL_get_SSL_CTX(ssl))
-      {
-        if (SSL_CTX_get_app_data(handle))
-        {
-          detail::verify_callback_base* callback =
-            static_cast<detail::verify_callback_base*>(
-                SSL_CTX_get_app_data(handle));
-
-          verify_context verify_ctx(ctx);
-          return callback->call(preverified != 0, verify_ctx) ? 1 : 0;
-        }
-      }
-    }
-  }
-
-  return 0;
-}
-
-asio::error_code context::do_set_password_callback(
-    detail::password_callback_base* callback, asio::error_code& ec)
-{
-  if (handle_->default_passwd_callback_userdata)
-    delete static_cast<detail::password_callback_base*>(
-        handle_->default_passwd_callback_userdata);
-
-  handle_->default_passwd_callback_userdata = callback;
-
-  SSL_CTX_set_default_passwd_cb(handle_, &context::password_callback_function);
-
-  ec = asio::error_code();
-  return ec;
-}
-
-int context::password_callback_function(
-    char* buf, int size, int purpose, void* data)
-{
-  using namespace std; // For strncat and strlen.
-
-  if (data)
-  {
-    detail::password_callback_base* callback =
-      static_cast<detail::password_callback_base*>(data);
-
-    std::string passwd = callback->call(static_cast<std::size_t>(size),
-        purpose ? context_base::for_writing : context_base::for_reading);
-
-#if defined(ASIO_HAS_SECURE_RTL)
-    strcpy_s(buf, size, passwd.c_str());
-#else // defined(ASIO_HAS_SECURE_RTL)
-    *buf = '\0';
-    strncat(buf, passwd.c_str(), size);
-#endif // defined(ASIO_HAS_SECURE_RTL)
-
-    return static_cast<int>(strlen(buf));
-  }
-
-  return 0;
-}
-
-BIO* context::make_buffer_bio(const const_buffer& b)
-{
-  return ::BIO_new_mem_buf(
-      const_cast<void*>(buffer_cast<const void*>(b)),
-      static_cast<int>(buffer_size(b)));
-}
-
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_IMPL_CONTEXT_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/impl/error.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/impl/error.ipp
deleted file mode 100644
index 9e76039..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/impl/error.ipp
+++ /dev/null
@@ -1,57 +0,0 @@
-//
-// ssl/impl/error.ipp
-// ~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SSL_IMPL_ERROR_IPP
-#define ASIO_SSL_IMPL_ERROR_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/ssl/error.hpp"
-#include "asio/ssl/detail/openssl_init.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace error {
-
-namespace detail {
-
-class ssl_category : public asio::error_category
-{
-public:
-  const char* name() const ASIO_ERROR_CATEGORY_NOEXCEPT
-  {
-    return "asio.ssl";
-  }
-
-  std::string message(int value) const
-  {
-    const char* s = ::ERR_reason_error_string(value);
-    return s ? s : "asio.ssl error";
-  }
-};
-
-} // namespace detail
-
-const asio::error_category& get_ssl_category()
-{
-  static detail::ssl_category instance;
-  return instance;
-}
-
-} // namespace error
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_IMPL_ERROR_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/impl/rfc2818_verification.ipp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/impl/rfc2818_verification.ipp
deleted file mode 100644
index 81866df..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/impl/rfc2818_verification.ipp
+++ /dev/null
@@ -1,166 +0,0 @@
-//
-// ssl/impl/rfc2818_verification.ipp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SSL_IMPL_RFC2818_VERIFICATION_IPP
-#define ASIO_SSL_IMPL_RFC2818_VERIFICATION_IPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-# include <cctype>
-# include <cstring>
-# include "asio/ip/address.hpp"
-# include "asio/ssl/rfc2818_verification.hpp"
-# include "asio/ssl/detail/openssl_types.hpp"
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-
-bool rfc2818_verification::operator()(
-    bool preverified, verify_context& ctx) const
-{
-  using namespace std; // For memcmp.
-
-  // Don't bother looking at certificates that have failed pre-verification.
-  if (!preverified)
-    return false;
-
-  // We're only interested in checking the certificate at the end of the chain.
-  int depth = X509_STORE_CTX_get_error_depth(ctx.native_handle());
-  if (depth > 0)
-    return true;
-
-  // Try converting the host name to an address. If it is an address then we
-  // need to look for an IP address in the certificate rather than a host name.
-  asio::error_code ec;
-  ip::address address = ip::address::from_string(host_, ec);
-  bool is_address = !ec;
-
-  X509* cert = X509_STORE_CTX_get_current_cert(ctx.native_handle());
-
-  // Go through the alternate names in the certificate looking for matching DNS
-  // or IP address entries.
-  GENERAL_NAMES* gens = static_cast<GENERAL_NAMES*>(
-      X509_get_ext_d2i(cert, NID_subject_alt_name, 0, 0));
-  for (int i = 0; i < sk_GENERAL_NAME_num(gens); ++i)
-  {
-    GENERAL_NAME* gen = sk_GENERAL_NAME_value(gens, i);
-    if (gen->type == GEN_DNS && !is_address)
-    {
-      ASN1_IA5STRING* domain = gen->d.dNSName;
-      if (domain->type == V_ASN1_IA5STRING && domain->data && domain->length)
-      {
-        const char* pattern = reinterpret_cast<const char*>(domain->data);
-        std::size_t pattern_length = domain->length;
-        if (match_pattern(pattern, pattern_length, host_.c_str()))
-        {
-          GENERAL_NAMES_free(gens);
-          return true;
-        }
-      }
-    }
-    else if (gen->type == GEN_IPADD && is_address)
-    {
-      ASN1_OCTET_STRING* ip_address = gen->d.iPAddress;
-      if (ip_address->type == V_ASN1_OCTET_STRING && ip_address->data)
-      {
-        if (address.is_v4() && ip_address->length == 4)
-        {
-          ip::address_v4::bytes_type bytes = address.to_v4().to_bytes();
-          if (memcmp(bytes.data(), ip_address->data, 4) == 0)
-          {
-            GENERAL_NAMES_free(gens);
-            return true;
-          }
-        }
-        else if (address.is_v6() && ip_address->length == 16)
-        {
-          ip::address_v6::bytes_type bytes = address.to_v6().to_bytes();
-          if (memcmp(bytes.data(), ip_address->data, 16) == 0)
-          {
-            GENERAL_NAMES_free(gens);
-            return true;
-          }
-        }
-      }
-    }
-  }
-  GENERAL_NAMES_free(gens);
-
-  // No match in the alternate names, so try the common names. We should only
-  // use the "most specific" common name, which is the last one in the list.
-  X509_NAME* name = X509_get_subject_name(cert);
-  int i = -1;
-  ASN1_STRING* common_name = 0;
-  while ((i = X509_NAME_get_index_by_NID(name, NID_commonName, i)) >= 0)
-  {
-    X509_NAME_ENTRY* name_entry = X509_NAME_get_entry(name, i);
-    common_name = X509_NAME_ENTRY_get_data(name_entry);
-  }
-  if (common_name && common_name->data && common_name->length)
-  {
-    const char* pattern = reinterpret_cast<const char*>(common_name->data);
-    std::size_t pattern_length = common_name->length;
-    if (match_pattern(pattern, pattern_length, host_.c_str()))
-      return true;
-  }
-
-  return false;
-}
-
-bool rfc2818_verification::match_pattern(const char* pattern,
-    std::size_t pattern_length, const char* host)
-{
-  using namespace std; // For tolower.
-
-  const char* p = pattern;
-  const char* p_end = p + pattern_length;
-  const char* h = host;
-
-  while (p != p_end && *h)
-  {
-    if (*p == '*')
-    {
-      ++p;
-      while (*h && *h != '.')
-        if (match_pattern(p, p_end - p, h++))
-          return true;
-    }
-    else if (tolower(*p) == tolower(*h))
-    {
-      ++p;
-      ++h;
-    }
-    else
-    {
-      return false;
-    }
-  }
-
-  return p == p_end && !*h;
-}
-
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_IMPL_RFC2818_VERIFICATION_IPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/impl/src.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/impl/src.hpp
deleted file mode 100644
index 8db35ce..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/impl/src.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-//
-// impl/ssl/src.hpp
-// ~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SSL_IMPL_SRC_HPP
-#define ASIO_SSL_IMPL_SRC_HPP
-
-#define ASIO_SOURCE
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# error Do not compile Asio library source with ASIO_HEADER_ONLY defined
-#endif
-
-#include "asio/ssl/impl/context.ipp"
-#include "asio/ssl/impl/error.ipp"
-#include "asio/ssl/detail/impl/engine.ipp"
-#include "asio/ssl/detail/impl/openssl_init.ipp"
-#include "asio/ssl/impl/rfc2818_verification.ipp"
-
-#endif // ASIO_SSL_IMPL_SRC_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/old/basic_context.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/old/basic_context.hpp
deleted file mode 100644
index 60feca9..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/old/basic_context.hpp
+++ /dev/null
@@ -1,434 +0,0 @@
-//
-// ssl/old/basic_context.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2005 Voipster / Indrek dot Juhani at voipster dot com
-// Copyright (c) 2005-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SSL_OLD_BASIC_CONTEXT_HPP
-#define ASIO_SSL_OLD_BASIC_CONTEXT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <string>
-#include <boost/noncopyable.hpp>
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/ssl/context_base.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-namespace old {
-
-/// SSL context.
-template <typename Service>
-class basic_context
-  : public context_base,
-    private boost::noncopyable
-{
-public:
-  /// The type of the service that will be used to provide context operations.
-  typedef Service service_type;
-
-  /// The native implementation type of the SSL context.
-  typedef typename service_type::impl_type impl_type;
-
-  /// Constructor.
-  basic_context(asio::io_service& io_service, method m)
-    : service_(asio::use_service<Service>(io_service)),
-      impl_(service_.null())
-  {
-    service_.create(impl_, m);
-  }
-
-  /// Destructor.
-  ~basic_context()
-  {
-    service_.destroy(impl_);
-  }
-
-  /// Get the underlying implementation in the native type.
-  /**
-   * This function may be used to obtain the underlying implementation of the
-   * context. This is intended to allow access to context functionality that is
-   * not otherwise provided.
-   */
-  impl_type impl()
-  {
-    return impl_;
-  }
-
-  /// Set options on the context.
-  /**
-   * This function may be used to configure the SSL options used by the context.
-   *
-   * @param o A bitmask of options. The available option values are defined in
-   * the context_base class. The options are bitwise-ored with any existing
-   * value for the options.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  void set_options(options o)
-  {
-    asio::error_code ec;
-    service_.set_options(impl_, o, ec);
-    asio::detail::throw_error(ec);
-  }
-
-  /// Set options on the context.
-  /**
-   * This function may be used to configure the SSL options used by the context.
-   *
-   * @param o A bitmask of options. The available option values are defined in
-   * the context_base class. The options are bitwise-ored with any existing
-   * value for the options.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   */
-  asio::error_code set_options(options o,
-      asio::error_code& ec)
-  {
-    return service_.set_options(impl_, o, ec);
-  }
-
-  /// Set the peer verification mode.
-  /**
-   * This function may be used to configure the peer verification mode used by
-   * the context.
-   *
-   * @param v A bitmask of peer verification modes. The available verify_mode
-   * values are defined in the context_base class.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  void set_verify_mode(verify_mode v)
-  {
-    asio::error_code ec;
-    service_.set_verify_mode(impl_, v, ec);
-    asio::detail::throw_error(ec);
-  }
-
-  /// Set the peer verification mode.
-  /**
-   * This function may be used to configure the peer verification mode used by
-   * the context.
-   *
-   * @param v A bitmask of peer verification modes. The available verify_mode
-   * values are defined in the context_base class.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   */
-  asio::error_code set_verify_mode(verify_mode v,
-      asio::error_code& ec)
-  {
-    return service_.set_verify_mode(impl_, v, ec);
-  }
-
-  /// Load a certification authority file for performing verification.
-  /**
-   * This function is used to load one or more trusted certification authorities
-   * from a file.
-   *
-   * @param filename The name of a file containing certification authority
-   * certificates in PEM format.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  void load_verify_file(const std::string& filename)
-  {
-    asio::error_code ec;
-    service_.load_verify_file(impl_, filename, ec);
-    asio::detail::throw_error(ec);
-  }
-
-  /// Load a certification authority file for performing verification.
-  /**
-   * This function is used to load the certificates for one or more trusted
-   * certification authorities from a file.
-   *
-   * @param filename The name of a file containing certification authority
-   * certificates in PEM format.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   */
-  asio::error_code load_verify_file(const std::string& filename,
-      asio::error_code& ec)
-  {
-    return service_.load_verify_file(impl_, filename, ec);
-  }
-
-  /// Add a directory containing certificate authority files to be used for
-  /// performing verification.
-  /**
-   * This function is used to specify the name of a directory containing
-   * certification authority certificates. Each file in the directory must
-   * contain a single certificate. The files must be named using the subject
-   * name's hash and an extension of ".0".
-   *
-   * @param path The name of a directory containing the certificates.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  void add_verify_path(const std::string& path)
-  {
-    asio::error_code ec;
-    service_.add_verify_path(impl_, path, ec);
-    asio::detail::throw_error(ec);
-  }
-
-  /// Add a directory containing certificate authority files to be used for
-  /// performing verification.
-  /**
-   * This function is used to specify the name of a directory containing
-   * certification authority certificates. Each file in the directory must
-   * contain a single certificate. The files must be named using the subject
-   * name's hash and an extension of ".0".
-   *
-   * @param path The name of a directory containing the certificates.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   */
-  asio::error_code add_verify_path(const std::string& path,
-      asio::error_code& ec)
-  {
-    return service_.add_verify_path(impl_, path, ec);
-  }
-
-  /// Use a certificate from a file.
-  /**
-   * This function is used to load a certificate into the context from a file.
-   *
-   * @param filename The name of the file containing the certificate.
-   *
-   * @param format The file format (ASN.1 or PEM).
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  void use_certificate_file(const std::string& filename, file_format format)
-  {
-    asio::error_code ec;
-    service_.use_certificate_file(impl_, filename, format, ec);
-    asio::detail::throw_error(ec);
-  }
-
-  /// Use a certificate from a file.
-  /**
-   * This function is used to load a certificate into the context from a file.
-   *
-   * @param filename The name of the file containing the certificate.
-   *
-   * @param format The file format (ASN.1 or PEM).
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   */
-  asio::error_code use_certificate_file(const std::string& filename,
-      file_format format, asio::error_code& ec)
-  {
-    return service_.use_certificate_file(impl_, filename, format, ec);
-  }
-
-  /// Use a certificate chain from a file.
-  /**
-   * This function is used to load a certificate chain into the context from a
-   * file.
-   *
-   * @param filename The name of the file containing the certificate. The file
-   * must use the PEM format.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  void use_certificate_chain_file(const std::string& filename)
-  {
-    asio::error_code ec;
-    service_.use_certificate_chain_file(impl_, filename, ec);
-    asio::detail::throw_error(ec);
-  }
-
-  /// Use a certificate chain from a file.
-  /**
-   * This function is used to load a certificate chain into the context from a
-   * file.
-   *
-   * @param filename The name of the file containing the certificate. The file
-   * must use the PEM format.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   */
-  asio::error_code use_certificate_chain_file(
-      const std::string& filename, asio::error_code& ec)
-  {
-    return service_.use_certificate_chain_file(impl_, filename, ec);
-  }
-
-  /// Use a private key from a file.
-  /**
-   * This function is used to load a private key into the context from a file.
-   *
-   * @param filename The name of the file containing the private key.
-   *
-   * @param format The file format (ASN.1 or PEM).
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  void use_private_key_file(const std::string& filename, file_format format)
-  {
-    asio::error_code ec;
-    service_.use_private_key_file(impl_, filename, format, ec);
-    asio::detail::throw_error(ec);
-  }
-
-  /// Use a private key from a file.
-  /**
-   * This function is used to load a private key into the context from a file.
-   *
-   * @param filename The name of the file containing the private key.
-   *
-   * @param format The file format (ASN.1 or PEM).
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   */
-  asio::error_code use_private_key_file(const std::string& filename,
-      file_format format, asio::error_code& ec)
-  {
-    return service_.use_private_key_file(impl_, filename, format, ec);
-  }
-
-  /// Use an RSA private key from a file.
-  /**
-   * This function is used to load an RSA private key into the context from a
-   * file.
-   *
-   * @param filename The name of the file containing the RSA private key.
-   *
-   * @param format The file format (ASN.1 or PEM).
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  void use_rsa_private_key_file(const std::string& filename, file_format format)
-  {
-    asio::error_code ec;
-    service_.use_rsa_private_key_file(impl_, filename, format, ec);
-    asio::detail::throw_error(ec);
-  }
-
-  /// Use an RSA private key from a file.
-  /**
-   * This function is used to load an RSA private key into the context from a
-   * file.
-   *
-   * @param filename The name of the file containing the RSA private key.
-   *
-   * @param format The file format (ASN.1 or PEM).
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   */
-  asio::error_code use_rsa_private_key_file(
-      const std::string& filename, file_format format,
-      asio::error_code& ec)
-  {
-    return service_.use_rsa_private_key_file(impl_, filename, format, ec);
-  }
-
-  /// Use the specified file to obtain the temporary Diffie-Hellman parameters.
-  /**
-   * This function is used to load Diffie-Hellman parameters into the context
-   * from a file.
-   *
-   * @param filename The name of the file containing the Diffie-Hellman
-   * parameters. The file must use the PEM format.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  void use_tmp_dh_file(const std::string& filename)
-  {
-    asio::error_code ec;
-    service_.use_tmp_dh_file(impl_, filename, ec);
-    asio::detail::throw_error(ec);
-  }
-
-  /// Use the specified file to obtain the temporary Diffie-Hellman parameters.
-  /**
-   * This function is used to load Diffie-Hellman parameters into the context
-   * from a file.
-   *
-   * @param filename The name of the file containing the Diffie-Hellman
-   * parameters. The file must use the PEM format.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   */
-  asio::error_code use_tmp_dh_file(const std::string& filename,
-      asio::error_code& ec)
-  {
-    return service_.use_tmp_dh_file(impl_, filename, ec);
-  }
-
-  /// Set the password callback.
-  /**
-   * This function is used to specify a callback function to obtain password
-   * information about an encrypted key in PEM format.
-   *
-   * @param callback The function object to be used for obtaining the password.
-   * The function signature of the handler must be:
-   * @code std::string password_callback(
-   *   std::size_t max_length,  // The maximum size for a password.
-   *   password_purpose purpose // Whether password is for reading or writing.
-   * ); @endcode
-   * The return value of the callback is a string containing the password.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  template <typename PasswordCallback>
-  void set_password_callback(PasswordCallback callback)
-  {
-    asio::error_code ec;
-    service_.set_password_callback(impl_, callback, ec);
-    asio::detail::throw_error(ec);
-  }
-
-  /// Set the password callback.
-  /**
-   * This function is used to specify a callback function to obtain password
-   * information about an encrypted key in PEM format.
-   *
-   * @param callback The function object to be used for obtaining the password.
-   * The function signature of the handler must be:
-   * @code std::string password_callback(
-   *   std::size_t max_length,  // The maximum size for a password.
-   *   password_purpose purpose // Whether password is for reading or writing.
-   * ); @endcode
-   * The return value of the callback is a string containing the password.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   */
-  template <typename PasswordCallback>
-  asio::error_code set_password_callback(PasswordCallback callback,
-      asio::error_code& ec)
-  {
-    return service_.set_password_callback(impl_, callback, ec);
-  }
-
-private:
-  /// The backend service implementation.
-  service_type& service_;
-
-  /// The underlying native implementation.
-  impl_type impl_;
-};
-
-} // namespace old
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_OLD_BASIC_CONTEXT_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/old/context_service.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/old/context_service.hpp
deleted file mode 100644
index 9b60aeb..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/old/context_service.hpp
+++ /dev/null
@@ -1,174 +0,0 @@
-//
-// ssl/old/context_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2005 Voipster / Indrek dot Juhani at voipster dot com
-// Copyright (c) 2005-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SSL_OLD_CONTEXT_SERVICE_HPP
-#define ASIO_SSL_OLD_CONTEXT_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <string>
-#include <boost/noncopyable.hpp>
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/ssl/context_base.hpp"
-#include "asio/ssl/old/detail/openssl_context_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-namespace old {
-
-/// Default service implementation for a context.
-class context_service
-#if defined(GENERATING_DOCUMENTATION)
-  : public asio::io_service::service
-#else
-  : public asio::detail::service_base<context_service>
-#endif
-{
-private:
-  // The type of the platform-specific implementation.
-  typedef old::detail::openssl_context_service service_impl_type;
-
-public:
-#if defined(GENERATING_DOCUMENTATION)
-  /// The unique service identifier.
-  static asio::io_service::id id;
-#endif
-
-  /// The type of the context.
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined impl_type;
-#else
-  typedef service_impl_type::impl_type impl_type;
-#endif
-
-  /// Constructor.
-  explicit context_service(asio::io_service& io_service)
-    : asio::detail::service_base<context_service>(io_service),
-      service_impl_(asio::use_service<service_impl_type>(io_service))
-  {
-  }
-
-  /// Return a null context implementation.
-  impl_type null() const
-  {
-    return service_impl_.null();
-  }
-
-  /// Create a new context implementation.
-  void create(impl_type& impl, context_base::method m)
-  {
-    service_impl_.create(impl, m);
-  }
-
-  /// Destroy a context implementation.
-  void destroy(impl_type& impl)
-  {
-    service_impl_.destroy(impl);
-  }
-
-  /// Set options on the context.
-  asio::error_code set_options(impl_type& impl,
-      context_base::options o, asio::error_code& ec)
-  {
-    return service_impl_.set_options(impl, o, ec);
-  }
-
-  /// Set peer verification mode.
-  asio::error_code set_verify_mode(impl_type& impl,
-      context_base::verify_mode v, asio::error_code& ec)
-  {
-    return service_impl_.set_verify_mode(impl, v, ec);
-  }
-
-  /// Load a certification authority file for performing verification.
-  asio::error_code load_verify_file(impl_type& impl,
-      const std::string& filename, asio::error_code& ec)
-  {
-    return service_impl_.load_verify_file(impl, filename, ec);
-  }
-
-  /// Add a directory containing certification authority files to be used for
-  /// performing verification.
-  asio::error_code add_verify_path(impl_type& impl,
-      const std::string& path, asio::error_code& ec)
-  {
-    return service_impl_.add_verify_path(impl, path, ec);
-  }
-
-  /// Use a certificate from a file.
-  asio::error_code use_certificate_file(impl_type& impl,
-      const std::string& filename, context_base::file_format format,
-      asio::error_code& ec)
-  {
-    return service_impl_.use_certificate_file(impl, filename, format, ec);
-  }
-
-  /// Use a certificate chain from a file.
-  asio::error_code use_certificate_chain_file(impl_type& impl,
-      const std::string& filename, asio::error_code& ec)
-  {
-    return service_impl_.use_certificate_chain_file(impl, filename, ec);
-  }
-
-  /// Use a private key from a file.
-  asio::error_code use_private_key_file(impl_type& impl,
-      const std::string& filename, context_base::file_format format,
-      asio::error_code& ec)
-  {
-    return service_impl_.use_private_key_file(impl, filename, format, ec);
-  }
-
-  /// Use an RSA private key from a file.
-  asio::error_code use_rsa_private_key_file(impl_type& impl,
-      const std::string& filename, context_base::file_format format,
-      asio::error_code& ec)
-  {
-    return service_impl_.use_rsa_private_key_file(impl, filename, format, ec);
-  }
-
-  /// Use the specified file to obtain the temporary Diffie-Hellman parameters.
-  asio::error_code use_tmp_dh_file(impl_type& impl,
-      const std::string& filename, asio::error_code& ec)
-  {
-    return service_impl_.use_tmp_dh_file(impl, filename, ec);
-  }
-
-  /// Set the password callback.
-  template <typename PasswordCallback>
-  asio::error_code set_password_callback(impl_type& impl,
-      PasswordCallback callback, asio::error_code& ec)
-  {
-    return service_impl_.set_password_callback(impl, callback, ec);
-  }
-
-private:
-  // Destroy all user-defined handler objects owned by the service.
-  void shutdown_service()
-  {
-  }
-
-  // The service that provides the platform-specific implementation.
-  service_impl_type& service_impl_;
-};
-
-} // namespace old
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_OLD_CONTEXT_SERVICE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/old/detail/openssl_context_service.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/old/detail/openssl_context_service.hpp
deleted file mode 100644
index 02abd0c..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/old/detail/openssl_context_service.hpp
+++ /dev/null
@@ -1,386 +0,0 @@
-//
-// ssl/old/detail/openssl_context_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2005 Voipster / Indrek dot Juhani at voipster dot com
-// Copyright (c) 2005-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SSL_OLD_DETAIL_OPENSSL_CONTEXT_SERVICE_HPP
-#define ASIO_SSL_OLD_DETAIL_OPENSSL_CONTEXT_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cstring>
-#include <string>
-#include <boost/function.hpp>
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/ssl/context_base.hpp"
-#include "asio/ssl/detail/openssl_init.hpp"
-#include "asio/ssl/detail/openssl_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-namespace old {
-namespace detail {
-
-class openssl_context_service
-  : public asio::detail::service_base<openssl_context_service>
-{
-public:
-  // The native type of the context.
-  typedef ::SSL_CTX* impl_type;
-
-  // The type for the password callback function object.
-  typedef boost::function<std::string(std::size_t,
-      context_base::password_purpose)> password_callback_type;
-
-  // Constructor.
-  openssl_context_service(asio::io_service& io_service)
-    : asio::detail::service_base<openssl_context_service>(io_service)
-  {
-  }
-
-  // Destroy all user-defined handler objects owned by the service.
-  void shutdown_service()
-  {
-  }
-
-  // Return a null context implementation.
-  static impl_type null()
-  {
-    return 0;
-  }
-
-  // Create a new context implementation.
-  void create(impl_type& impl, context_base::method m)
-  {
-    switch (m)
-    {
-#if defined(OPENSSL_NO_SSL2)
-    case context_base::sslv2:
-    case context_base::sslv2_client:
-    case context_base::sslv2_server:
-      asio::detail::throw_error(asio::error::invalid_argument);
-      break;
-#else // defined(OPENSSL_NO_SSL2)
-    case context_base::sslv2:
-      impl = ::SSL_CTX_new(::SSLv2_method());
-      break;
-    case context_base::sslv2_client:
-      impl = ::SSL_CTX_new(::SSLv2_client_method());
-      break;
-    case context_base::sslv2_server:
-      impl = ::SSL_CTX_new(::SSLv2_server_method());
-      break;
-#endif // defined(OPENSSL_NO_SSL2)
-    case context_base::sslv3:
-      impl = ::SSL_CTX_new(::SSLv3_method());
-      break;
-    case context_base::sslv3_client:
-      impl = ::SSL_CTX_new(::SSLv3_client_method());
-      break;
-    case context_base::sslv3_server:
-      impl = ::SSL_CTX_new(::SSLv3_server_method());
-      break;
-    case context_base::tlsv1:
-      impl = ::SSL_CTX_new(::TLSv1_method());
-      break;
-    case context_base::tlsv1_client:
-      impl = ::SSL_CTX_new(::TLSv1_client_method());
-      break;
-    case context_base::tlsv1_server:
-      impl = ::SSL_CTX_new(::TLSv1_server_method());
-      break;
-    case context_base::sslv23:
-      impl = ::SSL_CTX_new(::SSLv23_method());
-      break;
-    case context_base::sslv23_client:
-      impl = ::SSL_CTX_new(::SSLv23_client_method());
-      break;
-    case context_base::sslv23_server:
-      impl = ::SSL_CTX_new(::SSLv23_server_method());
-      break;
-    default:
-      impl = ::SSL_CTX_new(0);
-      break;
-    }
-  }
-
-  // Destroy a context implementation.
-  void destroy(impl_type& impl)
-  {
-    if (impl != null())
-    {
-      if (impl->default_passwd_callback_userdata)
-      {
-        password_callback_type* callback =
-          static_cast<password_callback_type*>(
-              impl->default_passwd_callback_userdata);
-        delete callback;
-        impl->default_passwd_callback_userdata = 0;
-      }
-
-      ::SSL_CTX_free(impl);
-      impl = null();
-    }
-  }
-
-  // Set options on the context.
-  asio::error_code set_options(impl_type& impl,
-      context_base::options o, asio::error_code& ec)
-  {
-    ::SSL_CTX_set_options(impl, o);
-
-    ec = asio::error_code();
-    return ec;
-  }
-
-  // Set peer verification mode.
-  asio::error_code set_verify_mode(impl_type& impl,
-      context_base::verify_mode v, asio::error_code& ec)
-  {
-    ::SSL_CTX_set_verify(impl, v, 0);
-
-    ec = asio::error_code();
-    return ec;
-  }
-
-  // Load a certification authority file for performing verification.
-  asio::error_code load_verify_file(impl_type& impl,
-      const std::string& filename, asio::error_code& ec)
-  {
-    if (::SSL_CTX_load_verify_locations(impl, filename.c_str(), 0) != 1)
-    {
-      ec = asio::error::invalid_argument;
-      return ec;
-    }
-
-    ec = asio::error_code();
-    return ec;
-  }
-
-  // Add a directory containing certification authority files to be used for
-  // performing verification.
-  asio::error_code add_verify_path(impl_type& impl,
-      const std::string& path, asio::error_code& ec)
-  {
-    if (::SSL_CTX_load_verify_locations(impl, 0, path.c_str()) != 1)
-    {
-      ec = asio::error::invalid_argument;
-      return ec;
-    }
-
-    ec = asio::error_code();
-    return ec;
-  }
-
-  // Use a certificate from a file.
-  asio::error_code use_certificate_file(impl_type& impl,
-      const std::string& filename, context_base::file_format format,
-      asio::error_code& ec)
-  {
-    int file_type;
-    switch (format)
-    {
-    case context_base::asn1:
-      file_type = SSL_FILETYPE_ASN1;
-      break;
-    case context_base::pem:
-      file_type = SSL_FILETYPE_PEM;
-      break;
-    default:
-      {
-        ec = asio::error::invalid_argument;
-        return ec;
-      }
-    }
-
-    if (::SSL_CTX_use_certificate_file(impl, filename.c_str(), file_type) != 1)
-    {
-      ec = asio::error::invalid_argument;
-      return ec;
-    }
-
-    ec = asio::error_code();
-    return ec;
-  }
-
-  // Use a certificate chain from a file.
-  asio::error_code use_certificate_chain_file(impl_type& impl,
-      const std::string& filename, asio::error_code& ec)
-  {
-    if (::SSL_CTX_use_certificate_chain_file(impl, filename.c_str()) != 1)
-    {
-      ec = asio::error::invalid_argument;
-      return ec;
-    }
-
-    ec = asio::error_code();
-    return ec;
-  }
-
-  // Use a private key from a file.
-  asio::error_code use_private_key_file(impl_type& impl,
-      const std::string& filename, context_base::file_format format,
-      asio::error_code& ec)
-  {
-    int file_type;
-    switch (format)
-    {
-    case context_base::asn1:
-      file_type = SSL_FILETYPE_ASN1;
-      break;
-    case context_base::pem:
-      file_type = SSL_FILETYPE_PEM;
-      break;
-    default:
-      {
-        ec = asio::error::invalid_argument;
-        return ec;
-      }
-    }
-
-    if (::SSL_CTX_use_PrivateKey_file(impl, filename.c_str(), file_type) != 1)
-    {
-      ec = asio::error::invalid_argument;
-      return ec;
-    }
-
-    ec = asio::error_code();
-    return ec;
-  }
-
-  // Use an RSA private key from a file.
-  asio::error_code use_rsa_private_key_file(impl_type& impl,
-      const std::string& filename, context_base::file_format format,
-      asio::error_code& ec)
-  {
-    int file_type;
-    switch (format)
-    {
-    case context_base::asn1:
-      file_type = SSL_FILETYPE_ASN1;
-      break;
-    case context_base::pem:
-      file_type = SSL_FILETYPE_PEM;
-      break;
-    default:
-      {
-        ec = asio::error::invalid_argument;
-        return ec;
-      }
-    }
-
-    if (::SSL_CTX_use_RSAPrivateKey_file(
-          impl, filename.c_str(), file_type) != 1)
-    {
-      ec = asio::error::invalid_argument;
-      return ec;
-    }
-
-    ec = asio::error_code();
-    return ec;
-  }
-
-  // Use the specified file to obtain the temporary Diffie-Hellman parameters.
-  asio::error_code use_tmp_dh_file(impl_type& impl,
-      const std::string& filename, asio::error_code& ec)
-  {
-    ::BIO* bio = ::BIO_new_file(filename.c_str(), "r");
-    if (!bio)
-    {
-      ec = asio::error::invalid_argument;
-      return ec;
-    }
-
-    ::DH* dh = ::PEM_read_bio_DHparams(bio, 0, 0, 0);
-    if (!dh)
-    {
-      ::BIO_free(bio);
-      ec = asio::error::invalid_argument;
-      return ec;
-    }
-
-    ::BIO_free(bio);
-    int result = ::SSL_CTX_set_tmp_dh(impl, dh);
-    ::DH_free(dh);
-    if (result != 1)
-    {
-      ec = asio::error::invalid_argument;
-      return ec;
-    }
-
-    ec = asio::error_code();
-    return ec;
-  }
-
-  static int password_callback(char* buf, int size, int purpose, void* data)
-  {
-    using namespace std; // For strncat and strlen.
-
-    if (data)
-    {
-      password_callback_type* callback =
-        static_cast<password_callback_type*>(data);
-      std::string passwd = (*callback)(static_cast<std::size_t>(size),
-          purpose ? context_base::for_writing : context_base::for_reading);
-      *buf = '\0';
-      strncat(buf, passwd.c_str(), size);
-      return strlen(buf);
-    }
-
-    return 0;
-  }
-
-  // Set the password callback.
-  template <typename Password_Callback>
-  asio::error_code set_password_callback(impl_type& impl,
-      Password_Callback callback, asio::error_code& ec)
-  {
-    // Allocate callback function object if not already present.
-    if (impl->default_passwd_callback_userdata)
-    {
-      password_callback_type* callback_function =
-        static_cast<password_callback_type*>(
-            impl->default_passwd_callback_userdata);
-      *callback_function = callback;
-    }
-    else
-    {
-      password_callback_type* callback_function =
-        new password_callback_type(callback);
-      impl->default_passwd_callback_userdata = callback_function;
-    }
-
-    // Set the password callback.
-    SSL_CTX_set_default_passwd_cb(impl,
-        &openssl_context_service::password_callback);
-
-    ec = asio::error_code();
-    return ec;
-  }
-
-private:
-  // Ensure openssl is initialised.
-  asio::ssl::detail::openssl_init<> init_;
-};
-
-} // namespace detail
-} // namespace old
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_OLD_DETAIL_OPENSSL_CONTEXT_SERVICE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/old/detail/openssl_operation.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/old/detail/openssl_operation.hpp
deleted file mode 100644
index 9ea9c94..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/old/detail/openssl_operation.hpp
+++ /dev/null
@@ -1,524 +0,0 @@
-//
-// ssl/old/detail/openssl_operation.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2005 Voipster / Indrek dot Juhani at voipster dot com
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SSL_OLD_DETAIL_OPENSSL_OPERATION_HPP
-#define ASIO_SSL_OLD_DETAIL_OPENSSL_OPERATION_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <boost/function.hpp>
-#include <boost/bind.hpp>
-#include "asio/buffer.hpp"
-#include "asio/detail/assert.hpp"
-#include "asio/detail/socket_ops.hpp"
-#include "asio/placeholders.hpp"
-#include "asio/ssl/detail/openssl_types.hpp"
-#include "asio/ssl/error.hpp"
-#include "asio/strand.hpp"
-#include "asio/system_error.hpp"
-#include "asio/write.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-namespace old {
-namespace detail {
-
-typedef boost::function<int (::SSL*)> ssl_primitive_func; 
-typedef boost::function<void (const asio::error_code&, int)>
-  user_handler_func;
-
-// Network send_/recv buffer implementation
-//
-//
-class net_buffer
-{
-  static const int  NET_BUF_SIZE = 16*1024 + 256; // SSL record size + spare
-
-  unsigned char buf_[NET_BUF_SIZE];
-  unsigned char* data_start_;
-  unsigned char* data_end_;
-
-public:
-  net_buffer()
-  {
-    data_start_ = data_end_ = buf_;
-  }
-  unsigned char* get_unused_start() { return data_end_; }
-  unsigned char* get_data_start() { return data_start_; }
-  size_t get_unused_len() { return (NET_BUF_SIZE - (data_end_ - buf_)); }    
-  size_t get_data_len() { return (data_end_ - data_start_); }    
-  void data_added(size_t count)
-  { 
-    data_end_ += count; 
-    data_end_ = data_end_ > (buf_ + NET_BUF_SIZE)? 
-      (buf_ + NET_BUF_SIZE):
-      data_end_; 
-  }
-  void data_removed(size_t count) 
-  { 
-    data_start_ += count; 
-    if (data_start_ >= data_end_) reset(); 
-  }
-  void reset() { data_start_ = buf_; data_end_ = buf_; }               
-  bool has_data() { return (data_start_ < data_end_); }
-}; // class net_buffer
-
-//
-// Operation class
-//
-//
-template <typename Stream>
-class openssl_operation
-{
-public:
-
-  // Constructor for asynchronous operations
-  openssl_operation(ssl_primitive_func primitive,
-                    Stream& socket,
-                    net_buffer& recv_buf,
-                    SSL* session,
-                    BIO* ssl_bio,
-                    user_handler_func  handler,
-                    asio::io_service::strand& strand
-                    )
-    : primitive_(primitive)
-    , user_handler_(handler)
-    , strand_(&strand)
-    , recv_buf_(recv_buf)
-    , socket_(socket)
-    , ssl_bio_(ssl_bio)
-    , session_(session)
-  {
-    write_ = boost::bind(
-      &openssl_operation::do_async_write, 
-      this, boost::arg<1>(), boost::arg<2>()
-    );
-    read_ = boost::bind(
-      &openssl_operation::do_async_read, 
-      this
-    );
-    handler_= boost::bind(
-      &openssl_operation::async_user_handler, 
-      this, boost::arg<1>(), boost::arg<2>()
-    );
-  }
-
-  // Constructor for synchronous operations
-  openssl_operation(ssl_primitive_func primitive,
-                    Stream& socket,
-                    net_buffer& recv_buf,
-                    SSL* session,
-                    BIO* ssl_bio)
-    : primitive_(primitive)
-    , strand_(0)
-    , recv_buf_(recv_buf)
-    , socket_(socket)
-    , ssl_bio_(ssl_bio)
-    , session_(session)
-  {      
-    write_ = boost::bind(
-      &openssl_operation::do_sync_write, 
-      this, boost::arg<1>(), boost::arg<2>()
-    );
-    read_ = boost::bind(
-      &openssl_operation::do_sync_read, 
-      this
-    );
-    handler_ = boost::bind(
-      &openssl_operation::sync_user_handler, 
-      this, boost::arg<1>(), boost::arg<2>()
-      );
-  }
-
-  // Start operation
-  // In case of asynchronous it returns 0, in sync mode returns success code
-  // or throws an error...
-  int start()
-  {
-    int rc = primitive_( session_ );
-
-    bool is_operation_done = (rc > 0);  
-                // For connect/accept/shutdown, the operation
-                // is done, when return code is 1
-                // for write, it is done, when is retcode > 0
-                // for read, it is done when retcode > 0
-
-    int error_code =  !is_operation_done ?
-          ::SSL_get_error( session_, rc ) :
-          0;        
-    int sys_error_code = ERR_get_error();
-
-    if (error_code == SSL_ERROR_SSL)
-      return handler_(asio::error_code(
-            sys_error_code, asio::error::get_ssl_category()), rc);
-
-    bool is_read_needed = (error_code == SSL_ERROR_WANT_READ);
-    bool is_write_needed = (error_code == SSL_ERROR_WANT_WRITE ||
-                              ::BIO_ctrl_pending( ssl_bio_ ));
-    bool is_shut_down_received = 
-      ((::SSL_get_shutdown( session_ ) & SSL_RECEIVED_SHUTDOWN) == 
-          SSL_RECEIVED_SHUTDOWN);
-    bool is_shut_down_sent = 
-      ((::SSL_get_shutdown( session_ ) & SSL_SENT_SHUTDOWN) ==
-            SSL_SENT_SHUTDOWN);
-
-    if (is_shut_down_sent && is_shut_down_received
-        && is_operation_done && !is_write_needed)
-      // SSL connection is shut down cleanly
-      return handler_(asio::error_code(), 1);
-
-    if (is_shut_down_received && !is_operation_done)
-      // Shutdown has been requested, while we were reading or writing...
-      // abort our action...
-      return handler_(asio::error::shut_down, 0);
-
-    if (!is_operation_done && !is_read_needed && !is_write_needed 
-      && !is_shut_down_sent)
-    {
-      // The operation has failed... It is not completed and does 
-      // not want network communication nor does want to send shutdown out...
-      if (error_code == SSL_ERROR_SYSCALL)
-      {
-        return handler_(asio::error_code(
-              sys_error_code, asio::error::system_category), rc); 
-      }
-      else
-      {
-        return handler_(asio::error_code(
-              sys_error_code, asio::error::get_ssl_category()), rc); 
-      }
-    }
-
-    if (!is_operation_done && !is_write_needed)
-    {
-      // We may have left over data that we can pass to SSL immediately
-      if (recv_buf_.get_data_len() > 0)
-      {
-        // Pass the buffered data to SSL
-        int written = ::BIO_write
-        ( 
-          ssl_bio_, 
-          recv_buf_.get_data_start(), 
-          recv_buf_.get_data_len() 
-        );
-
-        if (written > 0)
-        {
-          recv_buf_.data_removed(written);
-        }
-        else if (written < 0)
-        {
-          if (!BIO_should_retry(ssl_bio_))
-          {
-            // Some serios error with BIO....
-            return handler_(asio::error::no_recovery, 0);
-          }
-        }
-
-        return start();
-      }
-      else if (is_read_needed || (is_shut_down_sent && !is_shut_down_received))
-      {
-        return read_();
-      }
-    }
-
-    // Continue with operation, flush any SSL data out to network...
-    return write_(is_operation_done, rc); 
-  }
-
-// Private implementation
-private:
-  typedef boost::function<int (const asio::error_code&, int)>
-    int_handler_func;
-  typedef boost::function<int (bool, int)> write_func;
-  typedef boost::function<int ()> read_func;
-
-  ssl_primitive_func  primitive_;
-  user_handler_func  user_handler_;
-  asio::io_service::strand* strand_;
-  write_func  write_;
-  read_func  read_;
-  int_handler_func handler_;
-    
-  net_buffer send_buf_; // buffers for network IO
-
-  // The recv buffer is owned by the stream, not the operation, since there can
-  // be left over bytes after passing the data up to the application, and these
-  // bytes need to be kept around for the next read operation issued by the
-  // application.
-  net_buffer& recv_buf_;
-
-  Stream& socket_;
-  BIO*    ssl_bio_;
-  SSL*    session_;
-
-  //
-  int sync_user_handler(const asio::error_code& error, int rc)
-  {
-    if (!error)
-      return rc;
-
-    throw asio::system_error(error);
-  }
-    
-  int async_user_handler(asio::error_code error, int rc)
-  {
-    if (rc < 0)
-    {
-      if (!error)
-        error = asio::error::no_recovery;
-      rc = 0;
-    }
-
-    user_handler_(error, rc);
-    return 0;
-  }
-
-  // Writes bytes asynchronously from SSL to NET
-  int  do_async_write(bool is_operation_done, int rc) 
-  {
-    int len = ::BIO_ctrl_pending( ssl_bio_ );
-    if ( len )
-    { 
-      // There is something to write into net, do it...
-      len = (int)send_buf_.get_unused_len() > len? 
-        len: 
-        send_buf_.get_unused_len();
-        
-      if (len == 0)
-      {
-        // In case our send buffer is full, we have just to wait until 
-        // previous send to complete...
-        return 0;
-      }
-
-      // Read outgoing data from bio
-      len = ::BIO_read( ssl_bio_, send_buf_.get_unused_start(), len); 
-         
-      if (len > 0)
-      {
-        unsigned char *data_start = send_buf_.get_unused_start();
-        send_buf_.data_added(len);
- 
-        ASIO_ASSERT(strand_);
-        asio::async_write
-        ( 
-          socket_, 
-          asio::buffer(data_start, len),
-          strand_->wrap
-          (
-            boost::bind
-            (
-              &openssl_operation::async_write_handler, 
-              this, 
-              is_operation_done,
-              rc, 
-              asio::placeholders::error, 
-              asio::placeholders::bytes_transferred
-            )
-          )
-        );
-                  
-        return 0;
-      }
-      else if (!BIO_should_retry(ssl_bio_))
-      {
-        // Seems like fatal error
-        // reading from SSL BIO has failed...
-        handler_(asio::error::no_recovery, 0);
-        return 0;
-      }
-    }
-    
-    if (is_operation_done)
-    {
-      // Finish the operation, with success
-      handler_(asio::error_code(), rc);
-      return 0;
-    }
-    
-    // OPeration is not done and writing to net has been made...
-    // start operation again
-    start();
-          
-    return 0;
-  }
-
-  void async_write_handler(bool is_operation_done, int rc, 
-    const asio::error_code& error, size_t bytes_sent)
-  {
-    if (!error)
-    {
-      // Remove data from send buffer
-      send_buf_.data_removed(bytes_sent);
-
-      if (is_operation_done)
-        handler_(asio::error_code(), rc);
-      else
-        // Since the operation was not completed, try it again...
-        start();
-    }
-    else 
-      handler_(error, rc);
-  }
-
-  int do_async_read()
-  {
-    // Wait for new data
-    ASIO_ASSERT(strand_);
-    socket_.async_read_some
-    ( 
-      asio::buffer(recv_buf_.get_unused_start(),
-        recv_buf_.get_unused_len()),
-      strand_->wrap
-      (
-        boost::bind
-        (
-          &openssl_operation::async_read_handler, 
-          this, 
-          asio::placeholders::error, 
-          asio::placeholders::bytes_transferred
-        )
-      )
-    );
-    return 0;
-  }
-
-  void async_read_handler(const asio::error_code& error,
-      size_t bytes_recvd)
-  {
-    if (!error)
-    {
-      recv_buf_.data_added(bytes_recvd);
-
-      // Pass the received data to SSL
-      int written = ::BIO_write
-      ( 
-        ssl_bio_, 
-        recv_buf_.get_data_start(), 
-        recv_buf_.get_data_len() 
-      );
-
-      if (written > 0)
-      {
-        recv_buf_.data_removed(written);
-      }
-      else if (written < 0)
-      {
-        if (!BIO_should_retry(ssl_bio_))
-        {
-          // Some serios error with BIO....
-          handler_(asio::error::no_recovery, 0);
-          return;
-        }
-      }
-
-      // and try the SSL primitive again
-      start();
-    }
-    else
-    {
-      // Error in network level...
-      // SSL can't continue either...
-      handler_(error, 0);
-    }
-  }
-
-  // Syncronous functions...
-  int do_sync_write(bool is_operation_done, int rc)
-  {
-    int len = ::BIO_ctrl_pending( ssl_bio_ );
-    if ( len )
-    { 
-      // There is something to write into net, do it...
-      len = (int)send_buf_.get_unused_len() > len? 
-        len: 
-        send_buf_.get_unused_len();
-        
-      // Read outgoing data from bio
-      len = ::BIO_read( ssl_bio_, send_buf_.get_unused_start(), len); 
-         
-      if (len > 0)
-      {
-        size_t sent_len = asio::write( 
-                  socket_, 
-                  asio::buffer(send_buf_.get_unused_start(), len)
-                  );
-
-        send_buf_.data_added(len);
-        send_buf_.data_removed(sent_len);
-      }          
-      else if (!BIO_should_retry(ssl_bio_))
-      {
-        // Seems like fatal error
-        // reading from SSL BIO has failed...
-        throw asio::system_error(asio::error::no_recovery);
-      }
-    }
-    
-    if (is_operation_done)
-      // Finish the operation, with success
-      return rc;
-                
-    // Operation is not finished, start again.
-    return start();
-  }
-
-  int do_sync_read()
-  {
-    size_t len = socket_.read_some
-      ( 
-        asio::buffer(recv_buf_.get_unused_start(),
-          recv_buf_.get_unused_len())
-      );
-
-    // Write data to ssl
-    recv_buf_.data_added(len);
-
-    // Pass the received data to SSL
-    int written = ::BIO_write
-    ( 
-      ssl_bio_, 
-      recv_buf_.get_data_start(), 
-      recv_buf_.get_data_len() 
-    );
-
-    if (written > 0)
-    {
-      recv_buf_.data_removed(written);
-    }
-    else if (written < 0)
-    {
-      if (!BIO_should_retry(ssl_bio_))
-      {
-        // Some serios error with BIO....
-        throw asio::system_error(asio::error::no_recovery);
-      }
-    }
-
-    // Try the operation again
-    return start();
-  }
-}; // class openssl_operation
-
-} // namespace detail
-} // namespace old
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_OLD_DETAIL_OPENSSL_OPERATION_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/old/detail/openssl_stream_service.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/old/detail/openssl_stream_service.hpp
deleted file mode 100644
index 9b5c9cf..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/old/detail/openssl_stream_service.hpp
+++ /dev/null
@@ -1,571 +0,0 @@
-//
-// ssl/old/detail/stream_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2005 Voipster / Indrek dot Juhani at voipster dot com
-// Copyright (c) 2005-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SSL_OLD_DETAIL_OPENSSL_STREAM_SERVICE_HPP
-#define ASIO_SSL_OLD_DETAIL_OPENSSL_STREAM_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cstddef>
-#include <climits>
-#include <memory>
-#include <boost/config.hpp>
-#include <boost/noncopyable.hpp>
-#include <boost/function.hpp>
-#include <boost/bind.hpp>
-#include "asio/detail/buffer_sequence_adapter.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-#include "asio/ssl/basic_context.hpp"
-#include "asio/ssl/stream_base.hpp"
-#include "asio/ssl/old/detail/openssl_operation.hpp"
-#include "asio/ssl/detail/openssl_types.hpp"
-#include "asio/strand.hpp"
-#include "asio/system_error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-namespace old {
-namespace detail {
-
-class openssl_stream_service
-  : public asio::detail::service_base<openssl_stream_service>
-{
-private:
-  enum { max_buffer_size = INT_MAX };
-
-  //Base handler for asyncrhonous operations
-  template <typename Stream>
-  class base_handler
-  {
-  public:
-    typedef boost::function<
-      void (const asio::error_code&, size_t)> func_t;
-
-    base_handler(asio::io_service& io_service)
-      : op_(NULL)
-      , io_service_(io_service)
-      , work_(io_service)
-    {}
-    
-    void do_func(const asio::error_code& error, size_t size)
-    {
-      func_(error, size);
-    }
-        
-    void set_operation(openssl_operation<Stream>* op) { op_ = op; }
-    void set_func(func_t func) { func_ = func; }
-
-    ~base_handler()
-    {
-      delete op_;
-    }
-
-  private:
-    func_t func_;
-    openssl_operation<Stream>* op_;
-    asio::io_service& io_service_;
-    asio::io_service::work work_;
-  };  // class base_handler
-
-  // Handler for asynchronous IO (write/read) operations
-  template<typename Stream, typename Handler>
-  class io_handler 
-    : public base_handler<Stream>
-  {
-  public:
-    io_handler(Handler handler, asio::io_service& io_service)
-      : base_handler<Stream>(io_service)
-      , handler_(handler)
-    {
-      this->set_func(boost::bind(
-        &io_handler<Stream, Handler>::handler_impl, 
-        this, boost::arg<1>(), boost::arg<2>() ));
-    }
-
-  private:
-    Handler handler_;
-    void handler_impl(const asio::error_code& error, size_t size)
-    {
-      std::auto_ptr<io_handler<Stream, Handler> > this_ptr(this);
-      handler_(error, size);
-    }
-  };  // class io_handler 
-
-  // Handler for asyncrhonous handshake (connect, accept) functions
-  template <typename Stream, typename Handler>
-  class handshake_handler
-    : public base_handler<Stream>
-  {
-  public:
-    handshake_handler(Handler handler, asio::io_service& io_service)
-      : base_handler<Stream>(io_service)
-      , handler_(handler)
-    {
-      this->set_func(boost::bind(
-        &handshake_handler<Stream, Handler>::handler_impl, 
-        this, boost::arg<1>(), boost::arg<2>() ));
-    }
-
-  private:
-    Handler handler_;
-    void handler_impl(const asio::error_code& error, size_t)
-    {
-      std::auto_ptr<handshake_handler<Stream, Handler> > this_ptr(this);
-      handler_(error);
-    }
-
-  };  // class handshake_handler
-
-  // Handler for asyncrhonous shutdown
-  template <typename Stream, typename Handler>
-  class shutdown_handler
-    : public base_handler<Stream>
-  {
-  public:
-    shutdown_handler(Handler handler, asio::io_service& io_service)
-      : base_handler<Stream>(io_service),
-        handler_(handler)
-    { 
-      this->set_func(boost::bind(
-        &shutdown_handler<Stream, Handler>::handler_impl, 
-        this, boost::arg<1>(), boost::arg<2>() ));
-    }
-
-  private:
-    Handler handler_;
-    void handler_impl(const asio::error_code& error, size_t)
-    {
-      std::auto_ptr<shutdown_handler<Stream, Handler> > this_ptr(this);
-      handler_(error);
-    }
-  };  // class shutdown_handler
-
-public:
-  // The implementation type.
-  typedef struct impl_struct
-  {
-    ::SSL* ssl;
-    ::BIO* ext_bio;
-    net_buffer recv_buf;
-  } * impl_type;
-
-  // Construct a new stream socket service for the specified io_service.
-  explicit openssl_stream_service(asio::io_service& io_service)
-    : asio::detail::service_base<openssl_stream_service>(io_service),
-      strand_(io_service)
-  {
-  }
-
-  // Destroy all user-defined handler objects owned by the service.
-  void shutdown_service()
-  {
-  }
-
-  // Return a null stream implementation.
-  impl_type null() const
-  {
-    return 0;
-  }
-
-  // Create a new stream implementation.
-  template <typename Stream, typename Context_Service>
-  void create(impl_type& impl, Stream& /*next_layer*/,
-      basic_context<Context_Service>& context)
-  {
-    impl = new impl_struct;
-    impl->ssl = ::SSL_new(context.impl());
-    ::SSL_set_mode(impl->ssl, SSL_MODE_ENABLE_PARTIAL_WRITE);
-    ::SSL_set_mode(impl->ssl, SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER);
-    ::BIO* int_bio = 0;
-    impl->ext_bio = 0;
-    ::BIO_new_bio_pair(&int_bio, 8192, &impl->ext_bio, 8192);
-    ::SSL_set_bio(impl->ssl, int_bio, int_bio);
-  }
-
-  // Destroy a stream implementation.
-  template <typename Stream>
-  void destroy(impl_type& impl, Stream& /*next_layer*/)
-  {
-    if (impl != 0)
-    {
-      ::BIO_free(impl->ext_bio);
-      ::SSL_free(impl->ssl);
-      delete impl;
-      impl = 0;
-    }
-  }
-
-  // Perform SSL handshaking.
-  template <typename Stream>
-  asio::error_code handshake(impl_type& impl, Stream& next_layer,
-      stream_base::handshake_type type, asio::error_code& ec)
-  {
-    try
-    {
-      openssl_operation<Stream> op(
-        type == stream_base::client ?
-          &ssl_wrap<mutex_type>::SSL_connect:
-          &ssl_wrap<mutex_type>::SSL_accept,
-        next_layer,
-        impl->recv_buf,
-        impl->ssl,
-        impl->ext_bio);
-      op.start();
-    }
-    catch (asio::system_error& e)
-    {
-      ec = e.code();
-      return ec;
-    }
-
-    ec = asio::error_code();
-    return ec;
-  }
-
-  // Start an asynchronous SSL handshake.
-  template <typename Stream, typename Handler>
-  void async_handshake(impl_type& impl, Stream& next_layer,
-      stream_base::handshake_type type, Handler handler)
-  {
-    typedef handshake_handler<Stream, Handler> connect_handler;
-
-    connect_handler* local_handler = 
-      new connect_handler(handler, get_io_service());
-
-    openssl_operation<Stream>* op = new openssl_operation<Stream>
-    (
-      type == stream_base::client ?
-        &ssl_wrap<mutex_type>::SSL_connect:
-        &ssl_wrap<mutex_type>::SSL_accept,
-      next_layer,
-      impl->recv_buf,
-      impl->ssl,
-      impl->ext_bio,
-      boost::bind
-      (
-        &base_handler<Stream>::do_func, 
-        local_handler,
-        boost::arg<1>(),
-        boost::arg<2>()
-      ),
-      strand_
-    );
-    local_handler->set_operation(op);
-
-    strand_.post(boost::bind(&openssl_operation<Stream>::start, op));
-  }
-
-  // Shut down SSL on the stream.
-  template <typename Stream>
-  asio::error_code shutdown(impl_type& impl, Stream& next_layer,
-      asio::error_code& ec)
-  {
-    try
-    {
-      openssl_operation<Stream> op(
-        &ssl_wrap<mutex_type>::SSL_shutdown,
-        next_layer,
-        impl->recv_buf,
-        impl->ssl,
-        impl->ext_bio);
-      op.start();
-    }
-    catch (asio::system_error& e)
-    {
-      ec = e.code();
-      return ec;
-    }
-
-    ec = asio::error_code();
-    return ec;
-  }
-
-  // Asynchronously shut down SSL on the stream.
-  template <typename Stream, typename Handler>
-  void async_shutdown(impl_type& impl, Stream& next_layer, Handler handler)
-  {
-    typedef shutdown_handler<Stream, Handler> disconnect_handler;
-
-    disconnect_handler* local_handler = 
-      new disconnect_handler(handler, get_io_service());
-
-    openssl_operation<Stream>* op = new openssl_operation<Stream>
-    (
-      &ssl_wrap<mutex_type>::SSL_shutdown,
-      next_layer,
-      impl->recv_buf,
-      impl->ssl,
-      impl->ext_bio,
-      boost::bind
-      (
-        &base_handler<Stream>::do_func, 
-        local_handler, 
-        boost::arg<1>(),
-        boost::arg<2>()
-      ),
-      strand_
-    );
-    local_handler->set_operation(op);
-
-    strand_.post(boost::bind(&openssl_operation<Stream>::start, op));        
-  }
-
-  // Write some data to the stream.
-  template <typename Stream, typename Const_Buffers>
-  std::size_t write_some(impl_type& impl, Stream& next_layer,
-      const Const_Buffers& buffers, asio::error_code& ec)
-  {
-    size_t bytes_transferred = 0;
-    try
-    {
-      asio::const_buffer buffer =
-        asio::detail::buffer_sequence_adapter<
-          asio::const_buffer, Const_Buffers>::first(buffers);
-
-      std::size_t buffer_size = asio::buffer_size(buffer);
-      if (buffer_size > max_buffer_size)
-        buffer_size = max_buffer_size;
-      else if (buffer_size == 0)
-      {
-        ec = asio::error_code();
-        return 0;
-      }
-
-      boost::function<int (SSL*)> send_func =
-        boost::bind(boost::type<int>(), &::SSL_write, boost::arg<1>(),  
-            asio::buffer_cast<const void*>(buffer),
-            static_cast<int>(buffer_size));
-      openssl_operation<Stream> op(
-        send_func,
-        next_layer,
-        impl->recv_buf,
-        impl->ssl,
-        impl->ext_bio
-      );
-      bytes_transferred = static_cast<size_t>(op.start());
-    }
-    catch (asio::system_error& e)
-    {
-      ec = e.code();
-      return 0;
-    }
-
-    ec = asio::error_code();
-    return bytes_transferred;
-  }
-
-  // Start an asynchronous write.
-  template <typename Stream, typename Const_Buffers, typename Handler>
-  void async_write_some(impl_type& impl, Stream& next_layer,
-      const Const_Buffers& buffers, Handler handler)
-  {
-    typedef io_handler<Stream, Handler> send_handler;
-
-    asio::const_buffer buffer =
-      asio::detail::buffer_sequence_adapter<
-        asio::const_buffer, Const_Buffers>::first(buffers);
-
-    std::size_t buffer_size = asio::buffer_size(buffer);
-    if (buffer_size > max_buffer_size)
-      buffer_size = max_buffer_size;
-    else if (buffer_size == 0)
-    {
-      get_io_service().post(asio::detail::bind_handler(
-            handler, asio::error_code(), 0));
-      return;
-    }
-
-    send_handler* local_handler = new send_handler(handler, get_io_service());
-
-    boost::function<int (SSL*)> send_func =
-      boost::bind(boost::type<int>(), &::SSL_write, boost::arg<1>(),
-          asio::buffer_cast<const void*>(buffer),
-          static_cast<int>(buffer_size));
-
-    openssl_operation<Stream>* op = new openssl_operation<Stream>
-    (
-      send_func,
-      next_layer,
-      impl->recv_buf,
-      impl->ssl,
-      impl->ext_bio,
-      boost::bind
-      (
-        &base_handler<Stream>::do_func, 
-        local_handler, 
-        boost::arg<1>(),
-        boost::arg<2>()
-      ),
-      strand_
-    );
-    local_handler->set_operation(op);
-
-    strand_.post(boost::bind(&openssl_operation<Stream>::start, op));        
-  }
-
-  // Read some data from the stream.
-  template <typename Stream, typename Mutable_Buffers>
-  std::size_t read_some(impl_type& impl, Stream& next_layer,
-      const Mutable_Buffers& buffers, asio::error_code& ec)
-  {
-    size_t bytes_transferred = 0;
-    try
-    {
-      asio::mutable_buffer buffer =
-        asio::detail::buffer_sequence_adapter<
-          asio::mutable_buffer, Mutable_Buffers>::first(buffers);
-
-      std::size_t buffer_size = asio::buffer_size(buffer);
-      if (buffer_size > max_buffer_size)
-        buffer_size = max_buffer_size;
-      else if (buffer_size == 0)
-      {
-        ec = asio::error_code();
-        return 0;
-      }
-
-      boost::function<int (SSL*)> recv_func =
-        boost::bind(boost::type<int>(), &::SSL_read, boost::arg<1>(),
-            asio::buffer_cast<void*>(buffer),
-            static_cast<int>(buffer_size));
-      openssl_operation<Stream> op(recv_func,
-        next_layer,
-        impl->recv_buf,
-        impl->ssl,
-        impl->ext_bio
-      );
-
-      bytes_transferred = static_cast<size_t>(op.start());
-    }
-    catch (asio::system_error& e)
-    {
-      ec = e.code();
-      return 0;
-    }
-
-    ec = asio::error_code();
-    return bytes_transferred;
-  }
-
-  // Start an asynchronous read.
-  template <typename Stream, typename Mutable_Buffers, typename Handler>
-  void async_read_some(impl_type& impl, Stream& next_layer,
-      const Mutable_Buffers& buffers, Handler handler)
-  {
-    typedef io_handler<Stream, Handler> recv_handler;
-
-    asio::mutable_buffer buffer =
-      asio::detail::buffer_sequence_adapter<
-        asio::mutable_buffer, Mutable_Buffers>::first(buffers);
-
-    std::size_t buffer_size = asio::buffer_size(buffer);
-    if (buffer_size > max_buffer_size)
-      buffer_size = max_buffer_size;
-    else if (buffer_size == 0)
-    {
-      get_io_service().post(asio::detail::bind_handler(
-            handler, asio::error_code(), 0));
-      return;
-    }
-
-    recv_handler* local_handler = new recv_handler(handler, get_io_service());
-
-    boost::function<int (SSL*)> recv_func =
-      boost::bind(boost::type<int>(), &::SSL_read, boost::arg<1>(),
-          asio::buffer_cast<void*>(buffer),
-          static_cast<int>(buffer_size));
-
-    openssl_operation<Stream>* op = new openssl_operation<Stream>
-    (
-      recv_func,
-      next_layer,
-      impl->recv_buf,
-      impl->ssl,
-      impl->ext_bio,
-      boost::bind
-      (
-        &base_handler<Stream>::do_func, 
-        local_handler, 
-        boost::arg<1>(),
-        boost::arg<2>()
-      ),
-      strand_
-    );
-    local_handler->set_operation(op);
-
-    strand_.post(boost::bind(&openssl_operation<Stream>::start, op));        
-  }
-
-  // Peek at the incoming data on the stream.
-  template <typename Stream, typename Mutable_Buffers>
-  std::size_t peek(impl_type& /*impl*/, Stream& /*next_layer*/,
-      const Mutable_Buffers& /*buffers*/, asio::error_code& ec)
-  {
-    ec = asio::error_code();
-    return 0;
-  }
-
-  // Determine the amount of data that may be read without blocking.
-  template <typename Stream>
-  std::size_t in_avail(impl_type& /*impl*/, Stream& /*next_layer*/,
-      asio::error_code& ec)
-  {
-    ec = asio::error_code();
-    return 0;
-  }
-
-private:  
-  asio::io_service::strand strand_;
-
-  typedef asio::detail::mutex mutex_type;
-  
-  template<typename Mutex>
-  struct ssl_wrap
-  {
-    static Mutex ssl_mutex_;
-
-    static int SSL_accept(SSL *ssl)
-    {
-      typename Mutex::scoped_lock lock(ssl_mutex_);
-      return ::SSL_accept(ssl);
-    }
-  
-    static int SSL_connect(SSL *ssl)
-    {
-      typename Mutex::scoped_lock lock(ssl_mutex_);
-      return ::SSL_connect(ssl);
-    }
-  
-    static int SSL_shutdown(SSL *ssl)
-    {
-      typename Mutex::scoped_lock lock(ssl_mutex_);
-      return ::SSL_shutdown(ssl);  
-    }    
-  };  
-};
-
-template<typename Mutex>
-Mutex openssl_stream_service::ssl_wrap<Mutex>::ssl_mutex_;
-
-} // namespace detail
-} // namespace old
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_OLD_DETAIL_OPENSSL_STREAM_SERVICE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/old/stream.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/old/stream.hpp
deleted file mode 100644
index 9430053..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/old/stream.hpp
+++ /dev/null
@@ -1,501 +0,0 @@
-//
-// ssl/old/stream.hpp
-// ~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2005 Voipster / Indrek dot Juhani at voipster dot com
-// Copyright (c) 2005-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SSL_OLD_STREAM_HPP
-#define ASIO_SSL_OLD_STREAM_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cstddef>
-#include <boost/noncopyable.hpp>
-#include "asio/detail/throw_error.hpp"
-#include "asio/detail/type_traits.hpp"
-#include "asio/error.hpp"
-#include "asio/ssl/basic_context.hpp"
-#include "asio/ssl/stream_base.hpp"
-#include "asio/ssl/stream_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-namespace old {
-
-/// Provides stream-oriented functionality using SSL.
-/**
- * The stream class template provides asynchronous and blocking stream-oriented
- * functionality using SSL.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- *
- * @par Example
- * To use the SSL stream template with an ip::tcp::socket, you would write:
- * @code
- * asio::io_service io_service;
- * asio::ssl::context context(io_service, asio::ssl::context::sslv23);
- * asio::ssl::stream<asio::ip::tcp::socket> sock(io_service, context);
- * @endcode
- *
- * @par Concepts:
- * AsyncReadStream, AsyncWriteStream, Stream, SyncRead_Stream, SyncWriteStream.
- */
-template <typename Stream, typename Service = old::stream_service>
-class stream
-  : public stream_base,
-    private boost::noncopyable
-{
-public:
-  /// The type of the next layer.
-  typedef typename remove_reference<Stream>::type next_layer_type;
-
-  /// The type of the lowest layer.
-  typedef typename next_layer_type::lowest_layer_type lowest_layer_type;
-
-  /// The type of the service that will be used to provide stream operations.
-  typedef Service service_type;
-
-  /// The native implementation type of the stream.
-  typedef typename service_type::impl_type impl_type;
-
-  /// Construct a stream.
-  /**
-   * This constructor creates a stream and initialises the underlying stream
-   * object.
-   *
-   * @param arg The argument to be passed to initialise the underlying stream.
-   *
-   * @param context The SSL context to be used for the stream.
-   */
-  template <typename Arg, typename Context_Service>
-  explicit stream(Arg& arg, basic_context<Context_Service>& context)
-    : next_layer_(arg),
-      service_(asio::use_service<Service>(next_layer_.get_io_service())),
-      impl_(service_.null())
-  {
-    service_.create(impl_, next_layer_, context);
-  }
-
-  /// Destructor.
-  ~stream()
-  {
-    service_.destroy(impl_, next_layer_);
-  }
-
-  /// Get the io_service associated with the object.
-  /**
-   * This function may be used to obtain the io_service object that the stream
-   * uses to dispatch handlers for asynchronous operations.
-   *
-   * @return A reference to the io_service object that stream will use to
-   * dispatch handlers. Ownership is not transferred to the caller.
-   */
-  asio::io_service& get_io_service()
-  {
-    return next_layer_.get_io_service();
-  }
-
-  /// Get a reference to the next layer.
-  /**
-   * This function returns a reference to the next layer in a stack of stream
-   * layers.
-   *
-   * @return A reference to the next layer in the stack of stream layers.
-   * Ownership is not transferred to the caller.
-   */
-  next_layer_type& next_layer()
-  {
-    return next_layer_;
-  }
-
-  /// Get a reference to the lowest layer.
-  /**
-   * This function returns a reference to the lowest layer in a stack of
-   * stream layers.
-   *
-   * @return A reference to the lowest layer in the stack of stream layers.
-   * Ownership is not transferred to the caller.
-   */
-  lowest_layer_type& lowest_layer()
-  {
-    return next_layer_.lowest_layer();
-  }
-
-  /// Get a const reference to the lowest layer.
-  /**
-   * This function returns a const reference to the lowest layer in a stack of
-   * stream layers.
-   *
-   * @return A const reference to the lowest layer in the stack of stream
-   * layers. Ownership is not transferred to the caller.
-   */
-  const lowest_layer_type& lowest_layer() const
-  {
-    return next_layer_.lowest_layer();
-  }
-
-  /// Get the underlying implementation in the native type.
-  /**
-   * This function may be used to obtain the underlying implementation of the
-   * context. This is intended to allow access to stream functionality that is
-   * not otherwise provided.
-   */
-  impl_type impl()
-  {
-    return impl_;
-  }
-
-  /// Perform SSL handshaking.
-  /**
-   * This function is used to perform SSL handshaking on the stream. The
-   * function call will block until handshaking is complete or an error occurs.
-   *
-   * @param type The type of handshaking to be performed, i.e. as a client or as
-   * a server.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  void handshake(handshake_type type)
-  {
-    asio::error_code ec;
-    service_.handshake(impl_, next_layer_, type, ec);
-    asio::detail::throw_error(ec);
-  }
-
-  /// Perform SSL handshaking.
-  /**
-   * This function is used to perform SSL handshaking on the stream. The
-   * function call will block until handshaking is complete or an error occurs.
-   *
-   * @param type The type of handshaking to be performed, i.e. as a client or as
-   * a server.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   */
-  asio::error_code handshake(handshake_type type,
-      asio::error_code& ec)
-  {
-    return service_.handshake(impl_, next_layer_, type, ec);
-  }
-
-  /// Start an asynchronous SSL handshake.
-  /**
-   * This function is used to asynchronously perform an SSL handshake on the
-   * stream. This function call always returns immediately.
-   *
-   * @param type The type of handshaking to be performed, i.e. as a client or as
-   * a server.
-   *
-   * @param handler The handler to be called when the handshake operation
-   * completes. Copies will be made of the handler as required. The equivalent
-   * function signature of the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error // Result of operation.
-   * ); @endcode
-   */
-  template <typename HandshakeHandler>
-  void async_handshake(handshake_type type, HandshakeHandler handler)
-  {
-    service_.async_handshake(impl_, next_layer_, type, handler);
-  }
-
-  /// Shut down SSL on the stream.
-  /**
-   * This function is used to shut down SSL on the stream. The function call
-   * will block until SSL has been shut down or an error occurs.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  void shutdown()
-  {
-    asio::error_code ec;
-    service_.shutdown(impl_, next_layer_, ec);
-    asio::detail::throw_error(ec);
-  }
-
-  /// Shut down SSL on the stream.
-  /**
-   * This function is used to shut down SSL on the stream. The function call
-   * will block until SSL has been shut down or an error occurs.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   */
-  asio::error_code shutdown(asio::error_code& ec)
-  {
-    return service_.shutdown(impl_, next_layer_, ec);
-  }
-
-  /// Asynchronously shut down SSL on the stream.
-  /**
-   * This function is used to asynchronously shut down SSL on the stream. This
-   * function call always returns immediately.
-   *
-   * @param handler The handler to be called when the handshake operation
-   * completes. Copies will be made of the handler as required. The equivalent
-   * function signature of the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error // Result of operation.
-   * ); @endcode
-   */
-  template <typename ShutdownHandler>
-  void async_shutdown(ShutdownHandler handler)
-  {
-    service_.async_shutdown(impl_, next_layer_, handler);
-  }
-
-  /// Write some data to the stream.
-  /**
-   * This function is used to write data on the stream. The function call will
-   * block until one or more bytes of data has been written successfully, or
-   * until an error occurs.
-   *
-   * @param buffers The data to be written.
-   *
-   * @returns The number of bytes written.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note The write_some operation may not transmit all of the data to the
-   * peer. Consider using the @ref write function if you need to ensure that all
-   * data is written before the blocking operation completes.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t write_some(const ConstBufferSequence& buffers)
-  {
-    asio::error_code ec;
-    std::size_t s = service_.write_some(impl_, next_layer_, buffers, ec);
-    asio::detail::throw_error(ec);
-    return s;
-  }
-
-  /// Write some data to the stream.
-  /**
-   * This function is used to write data on the stream. The function call will
-   * block until one or more bytes of data has been written successfully, or
-   * until an error occurs.
-   *
-   * @param buffers The data to be written to the stream.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes written. Returns 0 if an error occurred.
-   *
-   * @note The write_some operation may not transmit all of the data to the
-   * peer. Consider using the @ref write function if you need to ensure that all
-   * data is written before the blocking operation completes.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t write_some(const ConstBufferSequence& buffers,
-      asio::error_code& ec)
-  {
-    return service_.write_some(impl_, next_layer_, buffers, ec);
-  }
-
-  /// Start an asynchronous write.
-  /**
-   * This function is used to asynchronously write one or more bytes of data to
-   * the stream. The function call always returns immediately.
-   *
-   * @param buffers The data to be written to the stream. Although the buffers
-   * object may be copied as necessary, ownership of the underlying buffers is
-   * retained by the caller, which must guarantee that they remain valid until
-   * the handler is called.
-   *
-   * @param handler The handler to be called when the write operation completes.
-   * Copies will be made of the handler as required. The equivalent function
-   * signature of the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes written.
-   * ); @endcode
-   *
-   * @note The async_write_some operation may not transmit all of the data to
-   * the peer. Consider using the @ref async_write function if you need to
-   * ensure that all data is written before the blocking operation completes.
-   */
-  template <typename ConstBufferSequence, typename WriteHandler>
-  void async_write_some(const ConstBufferSequence& buffers,
-      WriteHandler handler)
-  {
-    service_.async_write_some(impl_, next_layer_, buffers, handler);
-  }
-
-  /// Read some data from the stream.
-  /**
-   * This function is used to read data from the stream. The function call will
-   * block until one or more bytes of data has been read successfully, or until
-   * an error occurs.
-   *
-   * @param buffers The buffers into which the data will be read.
-   *
-   * @returns The number of bytes read.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note The read_some operation may not read all of the requested number of
-   * bytes. Consider using the @ref read function if you need to ensure that the
-   * requested amount of data is read before the blocking operation completes.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t read_some(const MutableBufferSequence& buffers)
-  {
-    asio::error_code ec;
-    std::size_t s = service_.read_some(impl_, next_layer_, buffers, ec);
-    asio::detail::throw_error(ec);
-    return s;
-  }
-
-  /// Read some data from the stream.
-  /**
-   * This function is used to read data from the stream. The function call will
-   * block until one or more bytes of data has been read successfully, or until
-   * an error occurs.
-   *
-   * @param buffers The buffers into which the data will be read.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes read. Returns 0 if an error occurred.
-   *
-   * @note The read_some operation may not read all of the requested number of
-   * bytes. Consider using the @ref read function if you need to ensure that the
-   * requested amount of data is read before the blocking operation completes.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t read_some(const MutableBufferSequence& buffers,
-      asio::error_code& ec)
-  {
-    return service_.read_some(impl_, next_layer_, buffers, ec);
-  }
-
-  /// Start an asynchronous read.
-  /**
-   * This function is used to asynchronously read one or more bytes of data from
-   * the stream. The function call always returns immediately.
-   *
-   * @param buffers The buffers into which the data will be read. Although the
-   * buffers object may be copied as necessary, ownership of the underlying
-   * buffers is retained by the caller, which must guarantee that they remain
-   * valid until the handler is called.
-   *
-   * @param handler The handler to be called when the read operation completes.
-   * Copies will be made of the handler as required. The equivalent function
-   * signature of the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes read.
-   * ); @endcode
-   *
-   * @note The async_read_some operation may not read all of the requested
-   * number of bytes. Consider using the @ref async_read function if you need to
-   * ensure that the requested amount of data is read before the asynchronous
-   * operation completes.
-   */
-  template <typename MutableBufferSequence, typename ReadHandler>
-  void async_read_some(const MutableBufferSequence& buffers,
-      ReadHandler handler)
-  {
-    service_.async_read_some(impl_, next_layer_, buffers, handler);
-  }
-
-  /// Peek at the incoming data on the stream.
-  /**
-   * This function is used to peek at the incoming data on the stream, without
-   * removing it from the input queue. The function call will block until data
-   * has been read successfully or an error occurs.
-   *
-   * @param buffers The buffers into which the data will be read.
-   *
-   * @returns The number of bytes read.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t peek(const MutableBufferSequence& buffers)
-  {
-    asio::error_code ec;
-    std::size_t s = service_.peek(impl_, next_layer_, buffers, ec);
-    asio::detail::throw_error(ec);
-    return s;
-  }
-
-  /// Peek at the incoming data on the stream.
-  /**
-   * This function is used to peek at the incoming data on the stream, withoutxi
-   * removing it from the input queue. The function call will block until data
-   * has been read successfully or an error occurs.
-   *
-   * @param buffers The buffers into which the data will be read.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes read. Returns 0 if an error occurred.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t peek(const MutableBufferSequence& buffers,
-      asio::error_code& ec)
-  {
-    return service_.peek(impl_, next_layer_, buffers, ec);
-  }
-
-  /// Determine the amount of data that may be read without blocking.
-  /**
-   * This function is used to determine the amount of data, in bytes, that may
-   * be read from the stream without blocking.
-   *
-   * @returns The number of bytes of data that can be read without blocking.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  std::size_t in_avail()
-  {
-    asio::error_code ec;
-    std::size_t s = service_.in_avail(impl_, next_layer_, ec);
-    asio::detail::throw_error(ec);
-    return s;
-  }
-
-  /// Determine the amount of data that may be read without blocking.
-  /**
-   * This function is used to determine the amount of data, in bytes, that may
-   * be read from the stream without blocking.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes of data that can be read without blocking.
-   */
-  std::size_t in_avail(asio::error_code& ec)
-  {
-    return service_.in_avail(impl_, next_layer_, ec);
-  }
-
-private:
-  /// The next layer.
-  Stream next_layer_;
-
-  /// The backend service implementation.
-  service_type& service_;
-
-  /// The underlying native implementation.
-  impl_type impl_;
-};
-
-} // namespace old
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_OLD_STREAM_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/old/stream_service.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/old/stream_service.hpp
deleted file mode 100644
index fc9d798..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/old/stream_service.hpp
+++ /dev/null
@@ -1,184 +0,0 @@
-//
-// ssl/old/stream_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2005 Voipster / Indrek dot Juhani at voipster dot com
-// Copyright (c) 2005-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SSL_OLD_STREAM_SERVICE_HPP
-#define ASIO_SSL_OLD_STREAM_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cstddef>
-#include <boost/noncopyable.hpp>
-#include "asio/io_service.hpp"
-#include "asio/ssl/basic_context.hpp"
-#include "asio/ssl/old/detail/openssl_stream_service.hpp"
-#include "asio/ssl/stream_base.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-namespace old {
-
-/// Default service implementation for an SSL stream.
-class stream_service
-#if defined(GENERATING_DOCUMENTATION)
-  : public asio::io_service::service
-#else
-  : public asio::detail::service_base<stream_service>
-#endif
-{
-private:
-  // The type of the platform-specific implementation.
-  typedef old::detail::openssl_stream_service service_impl_type;
-
-public:
-#if defined(GENERATING_DOCUMENTATION)
-  /// The unique service identifier.
-  static asio::io_service::id id;
-#endif
-
-  /// The type of a stream implementation.
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined impl_type;
-#else
-  typedef service_impl_type::impl_type impl_type;
-#endif
-
-  /// Construct a new stream service for the specified io_service.
-  explicit stream_service(asio::io_service& io_service)
-    : asio::detail::service_base<stream_service>(io_service),
-      service_impl_(asio::use_service<service_impl_type>(io_service))
-  {
-  }
-
-  /// Return a null stream implementation.
-  impl_type null() const
-  {
-    return service_impl_.null();
-  }
-
-  /// Create a new stream implementation.
-  template <typename Stream, typename Context_Service>
-  void create(impl_type& impl, Stream& next_layer,
-      basic_context<Context_Service>& context)
-  {
-    service_impl_.create(impl, next_layer, context);
-  }
-
-  /// Destroy a stream implementation.
-  template <typename Stream>
-  void destroy(impl_type& impl, Stream& next_layer)
-  {
-    service_impl_.destroy(impl, next_layer);
-  }
-
-  /// Perform SSL handshaking.
-  template <typename Stream>
-  asio::error_code handshake(impl_type& impl, Stream& next_layer,
-      stream_base::handshake_type type, asio::error_code& ec)
-  {
-    return service_impl_.handshake(impl, next_layer, type, ec);
-  }
-
-  /// Start an asynchronous SSL handshake.
-  template <typename Stream, typename HandshakeHandler>
-  void async_handshake(impl_type& impl, Stream& next_layer,
-      stream_base::handshake_type type, HandshakeHandler handler)
-  {
-    service_impl_.async_handshake(impl, next_layer, type, handler);
-  }
-
-  /// Shut down SSL on the stream.
-  template <typename Stream>
-  asio::error_code shutdown(impl_type& impl, Stream& next_layer,
-      asio::error_code& ec)
-  {
-    return service_impl_.shutdown(impl, next_layer, ec);
-  }
-
-  /// Asynchronously shut down SSL on the stream.
-  template <typename Stream, typename ShutdownHandler>
-  void async_shutdown(impl_type& impl, Stream& next_layer,
-      ShutdownHandler handler)
-  {
-    service_impl_.async_shutdown(impl, next_layer, handler);
-  }
-
-  /// Write some data to the stream.
-  template <typename Stream, typename ConstBufferSequence>
-  std::size_t write_some(impl_type& impl, Stream& next_layer,
-      const ConstBufferSequence& buffers, asio::error_code& ec)
-  {
-    return service_impl_.write_some(impl, next_layer, buffers, ec);
-  }
-
-  /// Start an asynchronous write.
-  template <typename Stream, typename ConstBufferSequence,
-      typename WriteHandler>
-  void async_write_some(impl_type& impl, Stream& next_layer,
-      const ConstBufferSequence& buffers, WriteHandler handler)
-  {
-    service_impl_.async_write_some(impl, next_layer, buffers, handler);
-  }
-
-  /// Read some data from the stream.
-  template <typename Stream, typename MutableBufferSequence>
-  std::size_t read_some(impl_type& impl, Stream& next_layer,
-      const MutableBufferSequence& buffers, asio::error_code& ec)
-  {
-    return service_impl_.read_some(impl, next_layer, buffers, ec);
-  }
-
-  /// Start an asynchronous read.
-  template <typename Stream, typename MutableBufferSequence,
-      typename ReadHandler>
-  void async_read_some(impl_type& impl, Stream& next_layer,
-      const MutableBufferSequence& buffers, ReadHandler handler)
-  {
-    service_impl_.async_read_some(impl, next_layer, buffers, handler);
-  }
-
-  /// Peek at the incoming data on the stream.
-  template <typename Stream, typename MutableBufferSequence>
-  std::size_t peek(impl_type& impl, Stream& next_layer,
-      const MutableBufferSequence& buffers, asio::error_code& ec)
-  {
-    return service_impl_.peek(impl, next_layer, buffers, ec);
-  }
-
-  /// Determine the amount of data that may be read without blocking.
-  template <typename Stream>
-  std::size_t in_avail(impl_type& impl, Stream& next_layer,
-      asio::error_code& ec)
-  {
-    return service_impl_.in_avail(impl, next_layer, ec);
-  }
-
-private:
-  // Destroy all user-defined handler objects owned by the service.
-  void shutdown_service()
-  {
-  }
-
-  // The service that provides the platform-specific implementation.
-  service_impl_type& service_impl_;
-};
-
-} // namespace old
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_OLD_STREAM_SERVICE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/rfc2818_verification.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/rfc2818_verification.hpp
deleted file mode 100644
index d1a32eb..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/rfc2818_verification.hpp
+++ /dev/null
@@ -1,100 +0,0 @@
-//
-// ssl/rfc2818_verification.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SSL_RFC2818_VERIFICATION_HPP
-#define ASIO_SSL_RFC2818_VERIFICATION_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-# include <string>
-# include "asio/ssl/detail/openssl_types.hpp"
-# include "asio/ssl/verify_context.hpp"
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-
-/// Verifies a certificate against a hostname according to the rules described
-/// in RFC 2818.
-/**
- * @par Example
- * The following example shows how to synchronously open a secure connection to
- * a given host name:
- * @code
- * using asio::ip::tcp;
- * namespace ssl = asio::ssl;
- * typedef ssl::stream<tcp::socket> ssl_socket;
- *
- * // Create a context that uses the default paths for finding CA certificates.
- * ssl::context ctx(ssl::context::sslv23);
- * ctx.set_default_verify_paths();
- *
- * // Open a socket and connect it to the remote host.
- * asio::io_service io_service;
- * ssl_socket sock(io_service, ctx);
- * tcp::resolver resolver(io_service);
- * tcp::resolver::query query("host.name", "https");
- * asio::connect(sock.lowest_layer(), resolver.resolve(query));
- * sock.lowest_layer().set_option(tcp::no_delay(true));
- *
- * // Perform SSL handshake and verify the remote host's certificate.
- * sock.set_verify_mode(ssl::verify_peer);
- * sock.set_verify_callback(ssl::rfc2818_verification("host.name"));
- * sock.handshake(ssl_socket::client);
- *
- * // ... read and write as normal ...
- * @endcode
- */
-class rfc2818_verification
-{
-public:
-  /// The type of the function object's result.
-  typedef bool result_type;
-
-  /// Constructor.
-  explicit rfc2818_verification(const std::string& host)
-    : host_(host)
-  {
-  }
-
-  /// Perform certificate verification.
-  ASIO_DECL bool operator()(bool preverified, verify_context& ctx) const;
-
-private:
-  // Helper function to check a host name against a pattern.
-  ASIO_DECL static bool match_pattern(const char* pattern,
-      std::size_t pattern_length, const char* host);
-
-  // Helper function to check a host name against an IPv4 address
-  // The host name to be checked.
-  std::string host_;
-};
-
-#endif // defined(ASIO_ENABLE_OLD_SSL)
-
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#if defined(ASIO_HEADER_ONLY)
-# include "asio/ssl/impl/rfc2818_verification.ipp"
-#endif // defined(ASIO_HEADER_ONLY)
-
-#endif // ASIO_SSL_RFC2818_VERIFICATION_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/stream.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/stream.hpp
deleted file mode 100644
index 1bbc025..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/stream.hpp
+++ /dev/null
@@ -1,756 +0,0 @@
-//
-// ssl/stream.hpp
-// ~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SSL_STREAM_HPP
-#define ASIO_SSL_STREAM_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_ENABLE_OLD_SSL)
-# include "asio/ssl/old/stream.hpp"
-#else // defined(ASIO_ENABLE_OLD_SSL)
-# include "asio/async_result.hpp"
-# include "asio/detail/buffer_sequence_adapter.hpp"
-# include "asio/detail/handler_type_requirements.hpp"
-# include "asio/detail/noncopyable.hpp"
-# include "asio/detail/type_traits.hpp"
-# include "asio/ssl/context.hpp"
-# include "asio/ssl/detail/buffered_handshake_op.hpp"
-# include "asio/ssl/detail/handshake_op.hpp"
-# include "asio/ssl/detail/io.hpp"
-# include "asio/ssl/detail/read_op.hpp"
-# include "asio/ssl/detail/shutdown_op.hpp"
-# include "asio/ssl/detail/stream_core.hpp"
-# include "asio/ssl/detail/write_op.hpp"
-# include "asio/ssl/stream_base.hpp"
-#endif // defined(ASIO_ENABLE_OLD_SSL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-
-#if defined(ASIO_ENABLE_OLD_SSL)
-
-using asio::ssl::old::stream;
-
-#else // defined(ASIO_ENABLE_OLD_SSL)
-
-/// Provides stream-oriented functionality using SSL.
-/**
- * The stream class template provides asynchronous and blocking stream-oriented
- * functionality using SSL.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe. The application must also ensure that all
- * asynchronous operations are performed within the same implicit or explicit
- * strand.
- *
- * @par Example
- * To use the SSL stream template with an ip::tcp::socket, you would write:
- * @code
- * asio::io_service io_service;
- * asio::ssl::context ctx(asio::ssl::context::sslv23);
- * asio::ssl::stream<asio:ip::tcp::socket> sock(io_service, ctx);
- * @endcode
- *
- * @par Concepts:
- * AsyncReadStream, AsyncWriteStream, Stream, SyncReadStream, SyncWriteStream.
- */
-template <typename Stream>
-class stream :
-  public stream_base,
-  private noncopyable
-{
-public:
-  /// The native handle type of the SSL stream.
-  typedef SSL* native_handle_type;
-
-  /// Structure for use with deprecated impl_type.
-  struct impl_struct
-  {
-    SSL* ssl;
-  };
-
-  /// (Deprecated: Use native_handle_type.) The underlying implementation type.
-  typedef impl_struct* impl_type;
-
-  /// The type of the next layer.
-  typedef typename remove_reference<Stream>::type next_layer_type;
-
-  /// The type of the lowest layer.
-  typedef typename next_layer_type::lowest_layer_type lowest_layer_type;
-
-  /// Construct a stream.
-  /**
-   * This constructor creates a stream and initialises the underlying stream
-   * object.
-   *
-   * @param arg The argument to be passed to initialise the underlying stream.
-   *
-   * @param ctx The SSL context to be used for the stream.
-   */
-  template <typename Arg>
-  stream(Arg& arg, context& ctx)
-    : next_layer_(arg),
-      core_(ctx.native_handle(), next_layer_.lowest_layer().get_io_service())
-  {
-    backwards_compatible_impl_.ssl = core_.engine_.native_handle();
-  }
-
-  /// Destructor.
-  ~stream()
-  {
-  }
-
-  /// Get the io_service associated with the object.
-  /**
-   * This function may be used to obtain the io_service object that the stream
-   * uses to dispatch handlers for asynchronous operations.
-   *
-   * @return A reference to the io_service object that stream will use to
-   * dispatch handlers. Ownership is not transferred to the caller.
-   */
-  asio::io_service& get_io_service()
-  {
-    return next_layer_.lowest_layer().get_io_service();
-  }
-
-  /// Get the underlying implementation in the native type.
-  /**
-   * This function may be used to obtain the underlying implementation of the
-   * context. This is intended to allow access to context functionality that is
-   * not otherwise provided.
-   *
-   * @par Example
-   * The native_handle() function returns a pointer of type @c SSL* that is
-   * suitable for passing to functions such as @c SSL_get_verify_result and
-   * @c SSL_get_peer_certificate:
-   * @code
-   * asio::ssl::stream<asio:ip::tcp::socket> sock(io_service, ctx);
-   *
-   * // ... establish connection and perform handshake ...
-   *
-   * if (X509* cert = SSL_get_peer_certificate(sock.native_handle()))
-   * {
-   *   if (SSL_get_verify_result(sock.native_handle()) == X509_V_OK)
-   *   {
-   *     // ...
-   *   }
-   * }
-   * @endcode
-   */
-  native_handle_type native_handle()
-  {
-    return core_.engine_.native_handle();
-  }
-
-  /// (Deprecated: Use native_handle().) Get the underlying implementation in
-  /// the native type.
-  /**
-   * This function may be used to obtain the underlying implementation of the
-   * context. This is intended to allow access to stream functionality that is
-   * not otherwise provided.
-   */
-  impl_type impl()
-  {
-    return &backwards_compatible_impl_;
-  }
-
-  /// Get a reference to the next layer.
-  /**
-   * This function returns a reference to the next layer in a stack of stream
-   * layers.
-   *
-   * @return A reference to the next layer in the stack of stream layers.
-   * Ownership is not transferred to the caller.
-   */
-  const next_layer_type& next_layer() const
-  {
-    return next_layer_;
-  }
-
-  /// Get a reference to the next layer.
-  /**
-   * This function returns a reference to the next layer in a stack of stream
-   * layers.
-   *
-   * @return A reference to the next layer in the stack of stream layers.
-   * Ownership is not transferred to the caller.
-   */
-  next_layer_type& next_layer()
-  {
-    return next_layer_;
-  }
-
-  /// Get a reference to the lowest layer.
-  /**
-   * This function returns a reference to the lowest layer in a stack of
-   * stream layers.
-   *
-   * @return A reference to the lowest layer in the stack of stream layers.
-   * Ownership is not transferred to the caller.
-   */
-  lowest_layer_type& lowest_layer()
-  {
-    return next_layer_.lowest_layer();
-  }
-
-  /// Get a reference to the lowest layer.
-  /**
-   * This function returns a reference to the lowest layer in a stack of
-   * stream layers.
-   *
-   * @return A reference to the lowest layer in the stack of stream layers.
-   * Ownership is not transferred to the caller.
-   */
-  const lowest_layer_type& lowest_layer() const
-  {
-    return next_layer_.lowest_layer();
-  }
-
-  /// Set the peer verification mode.
-  /**
-   * This function may be used to configure the peer verification mode used by
-   * the stream. The new mode will override the mode inherited from the context.
-   *
-   * @param v A bitmask of peer verification modes. See @ref verify_mode for
-   * available values.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note Calls @c SSL_set_verify.
-   */
-  void set_verify_mode(verify_mode v)
-  {
-    asio::error_code ec;
-    set_verify_mode(v, ec);
-    asio::detail::throw_error(ec, "set_verify_mode");
-  }
-
-  /// Set the peer verification mode.
-  /**
-   * This function may be used to configure the peer verification mode used by
-   * the stream. The new mode will override the mode inherited from the context.
-   *
-   * @param v A bitmask of peer verification modes. See @ref verify_mode for
-   * available values.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @note Calls @c SSL_set_verify.
-   */
-  asio::error_code set_verify_mode(
-      verify_mode v, asio::error_code& ec)
-  {
-    return core_.engine_.set_verify_mode(v, ec);
-  }
-
-  /// Set the peer verification depth.
-  /**
-   * This function may be used to configure the maximum verification depth
-   * allowed by the stream.
-   *
-   * @param depth Maximum depth for the certificate chain verification that
-   * shall be allowed.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note Calls @c SSL_set_verify_depth.
-   */
-  void set_verify_depth(int depth)
-  {
-    asio::error_code ec;
-    set_verify_depth(depth, ec);
-    asio::detail::throw_error(ec, "set_verify_depth");
-  }
-
-  /// Set the peer verification depth.
-  /**
-   * This function may be used to configure the maximum verification depth
-   * allowed by the stream.
-   *
-   * @param depth Maximum depth for the certificate chain verification that
-   * shall be allowed.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @note Calls @c SSL_set_verify_depth.
-   */
-  asio::error_code set_verify_depth(
-      int depth, asio::error_code& ec)
-  {
-    return core_.engine_.set_verify_depth(depth, ec);
-  }
-
-  /// Set the callback used to verify peer certificates.
-  /**
-   * This function is used to specify a callback function that will be called
-   * by the implementation when it needs to verify a peer certificate.
-   *
-   * @param callback The function object to be used for verifying a certificate.
-   * The function signature of the handler must be:
-   * @code bool verify_callback(
-   *   bool preverified, // True if the certificate passed pre-verification.
-   *   verify_context& ctx // The peer certificate and other context.
-   * ); @endcode
-   * The return value of the callback is true if the certificate has passed
-   * verification, false otherwise.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note Calls @c SSL_set_verify.
-   */
-  template <typename VerifyCallback>
-  void set_verify_callback(VerifyCallback callback)
-  {
-    asio::error_code ec;
-    this->set_verify_callback(callback, ec);
-    asio::detail::throw_error(ec, "set_verify_callback");
-  }
-
-  /// Set the callback used to verify peer certificates.
-  /**
-   * This function is used to specify a callback function that will be called
-   * by the implementation when it needs to verify a peer certificate.
-   *
-   * @param callback The function object to be used for verifying a certificate.
-   * The function signature of the handler must be:
-   * @code bool verify_callback(
-   *   bool preverified, // True if the certificate passed pre-verification.
-   *   verify_context& ctx // The peer certificate and other context.
-   * ); @endcode
-   * The return value of the callback is true if the certificate has passed
-   * verification, false otherwise.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @note Calls @c SSL_set_verify.
-   */
-  template <typename VerifyCallback>
-  asio::error_code set_verify_callback(VerifyCallback callback,
-      asio::error_code& ec)
-  {
-    return core_.engine_.set_verify_callback(
-        new detail::verify_callback<VerifyCallback>(callback), ec);
-  }
-
-  /// Perform SSL handshaking.
-  /**
-   * This function is used to perform SSL handshaking on the stream. The
-   * function call will block until handshaking is complete or an error occurs.
-   *
-   * @param type The type of handshaking to be performed, i.e. as a client or as
-   * a server.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  void handshake(handshake_type type)
-  {
-    asio::error_code ec;
-    handshake(type, ec);
-    asio::detail::throw_error(ec, "handshake");
-  }
-
-  /// Perform SSL handshaking.
-  /**
-   * This function is used to perform SSL handshaking on the stream. The
-   * function call will block until handshaking is complete or an error occurs.
-   *
-   * @param type The type of handshaking to be performed, i.e. as a client or as
-   * a server.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   */
-  asio::error_code handshake(handshake_type type,
-      asio::error_code& ec)
-  {
-    detail::io(next_layer_, core_, detail::handshake_op(type), ec);
-    return ec;
-  }
-
-  /// Perform SSL handshaking.
-  /**
-   * This function is used to perform SSL handshaking on the stream. The
-   * function call will block until handshaking is complete or an error occurs.
-   *
-   * @param type The type of handshaking to be performed, i.e. as a client or as
-   * a server.
-   *
-   * @param buffers The buffered data to be reused for the handshake.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  template <typename ConstBufferSequence>
-  void handshake(handshake_type type, const ConstBufferSequence& buffers)
-  {
-    asio::error_code ec;
-    handshake(type, buffers, ec);
-    asio::detail::throw_error(ec, "handshake");
-  }
-
-  /// Perform SSL handshaking.
-  /**
-   * This function is used to perform SSL handshaking on the stream. The
-   * function call will block until handshaking is complete or an error occurs.
-   *
-   * @param type The type of handshaking to be performed, i.e. as a client or as
-   * a server.
-   *
-   * @param buffers The buffered data to be reused for the handshake.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   */
-  template <typename ConstBufferSequence>
-  asio::error_code handshake(handshake_type type,
-      const ConstBufferSequence& buffers, asio::error_code& ec)
-  {
-    detail::io(next_layer_, core_,
-        detail::buffered_handshake_op<ConstBufferSequence>(type, buffers), ec);
-    return ec;
-  }
-
-  /// Start an asynchronous SSL handshake.
-  /**
-   * This function is used to asynchronously perform an SSL handshake on the
-   * stream. This function call always returns immediately.
-   *
-   * @param type The type of handshaking to be performed, i.e. as a client or as
-   * a server.
-   *
-   * @param handler The handler to be called when the handshake operation
-   * completes. Copies will be made of the handler as required. The equivalent
-   * function signature of the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error // Result of operation.
-   * ); @endcode
-   */
-  template <typename HandshakeHandler>
-  ASIO_INITFN_RESULT_TYPE(HandshakeHandler,
-      void (asio::error_code))
-  async_handshake(handshake_type type,
-      ASIO_MOVE_ARG(HandshakeHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a HandshakeHandler.
-    ASIO_HANDSHAKE_HANDLER_CHECK(HandshakeHandler, handler) type_check;
-
-    asio::detail::async_result_init<
-      HandshakeHandler, void (asio::error_code)> init(
-        ASIO_MOVE_CAST(HandshakeHandler)(handler));
-
-    detail::async_io(next_layer_, core_,
-        detail::handshake_op(type), init.handler);
-
-    return init.result.get();
-  }
-
-  /// Start an asynchronous SSL handshake.
-  /**
-   * This function is used to asynchronously perform an SSL handshake on the
-   * stream. This function call always returns immediately.
-   *
-   * @param type The type of handshaking to be performed, i.e. as a client or as
-   * a server.
-   *
-   * @param buffers The buffered data to be reused for the handshake. Although
-   * the buffers object may be copied as necessary, ownership of the underlying
-   * buffers is retained by the caller, which must guarantee that they remain
-   * valid until the handler is called.
-   *
-   * @param handler The handler to be called when the handshake operation
-   * completes. Copies will be made of the handler as required. The equivalent
-   * function signature of the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred // Amount of buffers used in handshake.
-   * ); @endcode
-   */
-  template <typename ConstBufferSequence, typename BufferedHandshakeHandler>
-  ASIO_INITFN_RESULT_TYPE(BufferedHandshakeHandler,
-      void (asio::error_code, std::size_t))
-  async_handshake(handshake_type type, const ConstBufferSequence& buffers,
-      ASIO_MOVE_ARG(BufferedHandshakeHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a BufferedHandshakeHandler.
-    ASIO_BUFFERED_HANDSHAKE_HANDLER_CHECK(
-        BufferedHandshakeHandler, handler) type_check;
-
-    asio::detail::async_result_init<BufferedHandshakeHandler,
-      void (asio::error_code, std::size_t)> init(
-        ASIO_MOVE_CAST(BufferedHandshakeHandler)(handler));
-
-    detail::async_io(next_layer_, core_,
-        detail::buffered_handshake_op<ConstBufferSequence>(type, buffers),
-        init.handler);
-
-    return init.result.get();
-  }
-
-  /// Shut down SSL on the stream.
-  /**
-   * This function is used to shut down SSL on the stream. The function call
-   * will block until SSL has been shut down or an error occurs.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  void shutdown()
-  {
-    asio::error_code ec;
-    shutdown(ec);
-    asio::detail::throw_error(ec, "shutdown");
-  }
-
-  /// Shut down SSL on the stream.
-  /**
-   * This function is used to shut down SSL on the stream. The function call
-   * will block until SSL has been shut down or an error occurs.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   */
-  asio::error_code shutdown(asio::error_code& ec)
-  {
-    detail::io(next_layer_, core_, detail::shutdown_op(), ec);
-    return ec;
-  }
-
-  /// Asynchronously shut down SSL on the stream.
-  /**
-   * This function is used to asynchronously shut down SSL on the stream. This
-   * function call always returns immediately.
-   *
-   * @param handler The handler to be called when the handshake operation
-   * completes. Copies will be made of the handler as required. The equivalent
-   * function signature of the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error // Result of operation.
-   * ); @endcode
-   */
-  template <typename ShutdownHandler>
-  ASIO_INITFN_RESULT_TYPE(ShutdownHandler,
-      void (asio::error_code))
-  async_shutdown(ASIO_MOVE_ARG(ShutdownHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a ShutdownHandler.
-    ASIO_SHUTDOWN_HANDLER_CHECK(ShutdownHandler, handler) type_check;
-
-    asio::detail::async_result_init<
-      ShutdownHandler, void (asio::error_code)> init(
-        ASIO_MOVE_CAST(ShutdownHandler)(handler));
-
-    detail::async_io(next_layer_, core_, detail::shutdown_op(), init.handler);
-
-    return init.result.get();
-  }
-
-  /// Write some data to the stream.
-  /**
-   * This function is used to write data on the stream. The function call will
-   * block until one or more bytes of data has been written successfully, or
-   * until an error occurs.
-   *
-   * @param buffers The data to be written.
-   *
-   * @returns The number of bytes written.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note The write_some operation may not transmit all of the data to the
-   * peer. Consider using the @ref write function if you need to ensure that all
-   * data is written before the blocking operation completes.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t write_some(const ConstBufferSequence& buffers)
-  {
-    asio::error_code ec;
-    std::size_t n = write_some(buffers, ec);
-    asio::detail::throw_error(ec, "write_some");
-    return n;
-  }
-
-  /// Write some data to the stream.
-  /**
-   * This function is used to write data on the stream. The function call will
-   * block until one or more bytes of data has been written successfully, or
-   * until an error occurs.
-   *
-   * @param buffers The data to be written to the stream.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes written. Returns 0 if an error occurred.
-   *
-   * @note The write_some operation may not transmit all of the data to the
-   * peer. Consider using the @ref write function if you need to ensure that all
-   * data is written before the blocking operation completes.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t write_some(const ConstBufferSequence& buffers,
-      asio::error_code& ec)
-  {
-    return detail::io(next_layer_, core_,
-        detail::write_op<ConstBufferSequence>(buffers), ec);
-  }
-
-  /// Start an asynchronous write.
-  /**
-   * This function is used to asynchronously write one or more bytes of data to
-   * the stream. The function call always returns immediately.
-   *
-   * @param buffers The data to be written to the stream. Although the buffers
-   * object may be copied as necessary, ownership of the underlying buffers is
-   * retained by the caller, which must guarantee that they remain valid until
-   * the handler is called.
-   *
-   * @param handler The handler to be called when the write operation completes.
-   * Copies will be made of the handler as required. The equivalent function
-   * signature of the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes written.
-   * ); @endcode
-   *
-   * @note The async_write_some operation may not transmit all of the data to
-   * the peer. Consider using the @ref async_write function if you need to
-   * ensure that all data is written before the blocking operation completes.
-   */
-  template <typename ConstBufferSequence, typename WriteHandler>
-  ASIO_INITFN_RESULT_TYPE(WriteHandler,
-      void (asio::error_code, std::size_t))
-  async_write_some(const ConstBufferSequence& buffers,
-      ASIO_MOVE_ARG(WriteHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a WriteHandler.
-    ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
-    asio::detail::async_result_init<
-      WriteHandler, void (asio::error_code, std::size_t)> init(
-        ASIO_MOVE_CAST(WriteHandler)(handler));
-
-    detail::async_io(next_layer_, core_,
-        detail::write_op<ConstBufferSequence>(buffers), init.handler);
-
-    return init.result.get();
-  }
-
-  /// Read some data from the stream.
-  /**
-   * This function is used to read data from the stream. The function call will
-   * block until one or more bytes of data has been read successfully, or until
-   * an error occurs.
-   *
-   * @param buffers The buffers into which the data will be read.
-   *
-   * @returns The number of bytes read.
-   *
-   * @throws asio::system_error Thrown on failure.
-   *
-   * @note The read_some operation may not read all of the requested number of
-   * bytes. Consider using the @ref read function if you need to ensure that the
-   * requested amount of data is read before the blocking operation completes.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t read_some(const MutableBufferSequence& buffers)
-  {
-    asio::error_code ec;
-    std::size_t n = read_some(buffers, ec);
-    asio::detail::throw_error(ec, "read_some");
-    return n;
-  }
-
-  /// Read some data from the stream.
-  /**
-   * This function is used to read data from the stream. The function call will
-   * block until one or more bytes of data has been read successfully, or until
-   * an error occurs.
-   *
-   * @param buffers The buffers into which the data will be read.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes read. Returns 0 if an error occurred.
-   *
-   * @note The read_some operation may not read all of the requested number of
-   * bytes. Consider using the @ref read function if you need to ensure that the
-   * requested amount of data is read before the blocking operation completes.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t read_some(const MutableBufferSequence& buffers,
-      asio::error_code& ec)
-  {
-    return detail::io(next_layer_, core_,
-        detail::read_op<MutableBufferSequence>(buffers), ec);
-  }
-
-  /// Start an asynchronous read.
-  /**
-   * This function is used to asynchronously read one or more bytes of data from
-   * the stream. The function call always returns immediately.
-   *
-   * @param buffers The buffers into which the data will be read. Although the
-   * buffers object may be copied as necessary, ownership of the underlying
-   * buffers is retained by the caller, which must guarantee that they remain
-   * valid until the handler is called.
-   *
-   * @param handler The handler to be called when the read operation completes.
-   * Copies will be made of the handler as required. The equivalent function
-   * signature of the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes read.
-   * ); @endcode
-   *
-   * @note The async_read_some operation may not read all of the requested
-   * number of bytes. Consider using the @ref async_read function if you need to
-   * ensure that the requested amount of data is read before the asynchronous
-   * operation completes.
-   */
-  template <typename MutableBufferSequence, typename ReadHandler>
-  ASIO_INITFN_RESULT_TYPE(ReadHandler,
-      void (asio::error_code, std::size_t))
-  async_read_some(const MutableBufferSequence& buffers,
-      ASIO_MOVE_ARG(ReadHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a ReadHandler.
-    ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
-    asio::detail::async_result_init<
-      ReadHandler, void (asio::error_code, std::size_t)> init(
-        ASIO_MOVE_CAST(ReadHandler)(handler));
-
-    detail::async_io(next_layer_, core_,
-        detail::read_op<MutableBufferSequence>(buffers), init.handler);
-
-    return init.result.get();
-  }
-
-private:
-  Stream next_layer_;
-  detail::stream_core core_;
-  impl_struct backwards_compatible_impl_;
-};
-
-#endif // defined(ASIO_ENABLE_OLD_SSL)
-
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_STREAM_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/stream_base.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/stream_base.hpp
deleted file mode 100644
index ed74134..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/stream_base.hpp
+++ /dev/null
@@ -1,52 +0,0 @@
-//
-// ssl/stream_base.hpp
-// ~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SSL_STREAM_BASE_HPP
-#define ASIO_SSL_STREAM_BASE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-
-/// The stream_base class is used as a base for the asio::ssl::stream
-/// class template so that we have a common place to define various enums.
-class stream_base
-{
-public:
-  /// Different handshake types.
-  enum handshake_type
-  {
-    /// Perform handshaking as a client.
-    client,
-
-    /// Perform handshaking as a server.
-    server
-  };
-
-protected:
-  /// Protected destructor to prevent deletion through this type.
-  ~stream_base()
-  {
-  }
-};
-
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_STREAM_BASE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/stream_service.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/stream_service.hpp
deleted file mode 100644
index fe9ff46..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/stream_service.hpp
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// ssl/stream_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SSL_STREAM_SERVICE_HPP
-#define ASIO_SSL_STREAM_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_ENABLE_OLD_SSL)
-# include "asio/ssl/old/stream_service.hpp"
-#endif // defined(ASIO_ENABLE_OLD_SSL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-
-#if defined(ASIO_ENABLE_OLD_SSL)
-
-using asio::ssl::old::stream_service;
-
-#endif // defined(ASIO_ENABLE_OLD_SSL)
-
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_STREAM_SERVICE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/verify_context.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/verify_context.hpp
deleted file mode 100644
index c527aa9..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/verify_context.hpp
+++ /dev/null
@@ -1,73 +0,0 @@
-//
-// ssl/verify_context.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SSL_VERIFY_CONTEXT_HPP
-#define ASIO_SSL_VERIFY_CONTEXT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-# include "asio/detail/noncopyable.hpp"
-# include "asio/ssl/detail/openssl_types.hpp"
-#endif // !defined(ASIO_ENABLE_OLD_SSL)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-
-#if !defined(ASIO_ENABLE_OLD_SSL)
-
-/// A simple wrapper around the X509_STORE_CTX type, used during verification of
-/// a peer certificate.
-/**
- * @note The verify_context does not own the underlying X509_STORE_CTX object.
- */
-class verify_context
-  : private noncopyable
-{
-public:
-  /// The native handle type of the verification context.
-  typedef X509_STORE_CTX* native_handle_type;
-
-  /// Constructor.
-  explicit verify_context(native_handle_type handle)
-    : handle_(handle)
-  {
-  }
-
-  /// Get the underlying implementation in the native type.
-  /**
-   * This function may be used to obtain the underlying implementation of the
-   * context. This is intended to allow access to context functionality that is
-   * not otherwise provided.
-   */
-  native_handle_type native_handle()
-  {
-    return handle_;
-  }
-
-private:
-  // The underlying native implementation.
-  native_handle_type handle_;
-};
-
-#endif // defined(ASIO_ENABLE_OLD_SSL)
-
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_VERIFY_CONTEXT_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/verify_mode.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/verify_mode.hpp
deleted file mode 100644
index adea0f0..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/ssl/verify_mode.hpp
+++ /dev/null
@@ -1,63 +0,0 @@
-//
-// ssl/verify_mode.hpp
-// ~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SSL_VERIFY_MODE_HPP
-#define ASIO_SSL_VERIFY_MODE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/ssl/detail/openssl_types.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace ssl {
-
-/// Bitmask type for peer verification.
-/**
- * Possible values are:
- *
- * @li @ref verify_none
- * @li @ref verify_peer
- * @li @ref verify_fail_if_no_peer_cert
- * @li @ref verify_client_once
- */
-typedef int verify_mode;
-
-#if defined(GENERATING_DOCUMENTATION)
-/// No verification.
-const int verify_none = implementation_defined;
-
-/// Verify the peer.
-const int verify_peer = implementation_defined;
-
-/// Fail verification if the peer has no certificate. Ignored unless
-/// @ref verify_peer is set.
-const int verify_fail_if_no_peer_cert = implementation_defined;
-
-/// Do not request client certificate on renegotiation. Ignored unless
-/// @ref verify_peer is set.
-const int verify_client_once = implementation_defined;
-#else
-const int verify_none = SSL_VERIFY_NONE;
-const int verify_peer = SSL_VERIFY_PEER;
-const int verify_fail_if_no_peer_cert = SSL_VERIFY_FAIL_IF_NO_PEER_CERT;
-const int verify_client_once = SSL_VERIFY_CLIENT_ONCE;
-#endif
-
-} // namespace ssl
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SSL_VERIFY_MODE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/steady_timer.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/steady_timer.hpp
deleted file mode 100644
index 8e7ca68..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/steady_timer.hpp
+++ /dev/null
@@ -1,61 +0,0 @@
-//
-// steady_timer.hpp
-// ~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_STEADY_TIMER_HPP
-#define ASIO_STEADY_TIMER_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_STD_CHRONO) \
-  || defined(ASIO_HAS_BOOST_CHRONO) \
-  || defined(GENERATING_DOCUMENTATION)
-
-#if defined(ASIO_HAS_STD_CHRONO)
-# include <chrono>
-#elif defined(ASIO_HAS_BOOST_CHRONO)
-# include <boost/chrono/system_clocks.hpp>
-#endif
-
-#include "asio/basic_waitable_timer.hpp"
-
-namespace asio {
-
-#if defined(GENERATING_DOCUMENTATION)
-/// Typedef for a timer based on the steady clock.
-/**
- * This typedef uses the C++11 @c &lt;chrono&gt; standard library facility, if
- * available. Otherwise, it may use the Boost.Chrono library. To explicitly
- * utilise Boost.Chrono, use the basic_waitable_timer template directly:
- * @code
- * typedef basic_waitable_timer<boost::chrono::steady_clock> timer;
- * @endcode
- */
-typedef basic_waitable_timer<chrono::steady_clock> steady_timer;
-#elif defined(ASIO_HAS_STD_CHRONO)
-# if defined(ASIO_HAS_STD_CHRONO_MONOTONIC_CLOCK)
-typedef basic_waitable_timer<std::chrono::monotonic_clock> steady_timer;
-# else // defined(ASIO_HAS_STD_CHRONO_MONOTONIC_CLOCK)
-typedef basic_waitable_timer<std::chrono::steady_clock> steady_timer;
-# endif // defined(ASIO_HAS_STD_CHRONO_MONOTONIC_CLOCK)
-#elif defined(ASIO_HAS_BOOST_CHRONO)
-typedef basic_waitable_timer<boost::chrono::steady_clock> steady_timer;
-#endif
-
-} // namespace asio
-
-#endif // defined(ASIO_HAS_STD_CHRONO) 
-       //   || defined(ASIO_HAS_BOOST_CHRONO)
-       //   || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_STEADY_TIMER_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/strand.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/strand.hpp
deleted file mode 100644
index c98c39c..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/strand.hpp
+++ /dev/null
@@ -1,252 +0,0 @@
-//
-// strand.hpp
-// ~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_STRAND_HPP
-#define ASIO_STRAND_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/async_result.hpp"
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/strand_service.hpp"
-#include "asio/detail/wrapped_handler.hpp"
-#include "asio/io_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Provides serialised handler execution.
-/**
- * The io_service::strand class provides the ability to post and dispatch
- * handlers with the guarantee that none of those handlers will execute
- * concurrently.
- *
- * @par Order of handler invocation
- * Given:
- *
- * @li a strand object @c s
- *
- * @li an object @c a meeting completion handler requirements
- *
- * @li an object @c a1 which is an arbitrary copy of @c a made by the
- * implementation
- *
- * @li an object @c b meeting completion handler requirements
- *
- * @li an object @c b1 which is an arbitrary copy of @c b made by the
- * implementation
- *
- * if any of the following conditions are true:
- *
- * @li @c s.post(a) happens-before @c s.post(b)
- * 
- * @li @c s.post(a) happens-before @c s.dispatch(b), where the latter is
- * performed outside the strand
- * 
- * @li @c s.dispatch(a) happens-before @c s.post(b), where the former is
- * performed outside the strand
- * 
- * @li @c s.dispatch(a) happens-before @c s.dispatch(b), where both are
- * performed outside the strand
- *   
- * then @c asio_handler_invoke(a1, &a1) happens-before
- * @c asio_handler_invoke(b1, &b1).
- * 
- * Note that in the following case:
- * @code async_op_1(..., s.wrap(a));
- * async_op_2(..., s.wrap(b)); @endcode
- * the completion of the first async operation will perform @c s.dispatch(a),
- * and the second will perform @c s.dispatch(b), but the order in which those
- * are performed is unspecified. That is, you cannot state whether one
- * happens-before the other. Therefore none of the above conditions are met and
- * no ordering guarantee is made.
- *
- * @note The implementation makes no guarantee that handlers posted or
- * dispatched through different @c strand objects will be invoked concurrently.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Safe.
- *
- * @par Concepts:
- * Dispatcher.
- */
-class io_service::strand
-{
-public:
-  /// Constructor.
-  /**
-   * Constructs the strand.
-   *
-   * @param io_service The io_service object that the strand will use to
-   * dispatch handlers that are ready to be run.
-   */
-  explicit strand(asio::io_service& io_service)
-    : service_(asio::use_service<
-        asio::detail::strand_service>(io_service))
-  {
-    service_.construct(impl_);
-  }
-
-  /// Destructor.
-  /**
-   * Destroys a strand.
-   *
-   * Handlers posted through the strand that have not yet been invoked will
-   * still be dispatched in a way that meets the guarantee of non-concurrency.
-   */
-  ~strand()
-  {
-  }
-
-  /// Get the io_service associated with the strand.
-  /**
-   * This function may be used to obtain the io_service object that the strand
-   * uses to dispatch handlers for asynchronous operations.
-   *
-   * @return A reference to the io_service object that the strand will use to
-   * dispatch handlers. Ownership is not transferred to the caller.
-   */
-  asio::io_service& get_io_service()
-  {
-    return service_.get_io_service();
-  }
-
-  /// Request the strand to invoke the given handler.
-  /**
-   * This function is used to ask the strand to execute the given handler.
-   *
-   * The strand object guarantees that handlers posted or dispatched through
-   * the strand will not be executed concurrently. The handler may be executed
-   * inside this function if the guarantee can be met. If this function is
-   * called from within a handler that was posted or dispatched through the same
-   * strand, then the new handler will be executed immediately.
-   *
-   * The strand's guarantee is in addition to the guarantee provided by the
-   * underlying io_service. The io_service guarantees that the handler will only
-   * be called in a thread in which the io_service's run member function is
-   * currently being invoked.
-   *
-   * @param handler The handler to be called. The strand will make a copy of the
-   * handler object as required. The function signature of the handler must be:
-   * @code void handler(); @endcode
-   */
-  template <typename CompletionHandler>
-  ASIO_INITFN_RESULT_TYPE(CompletionHandler, void ())
-  dispatch(ASIO_MOVE_ARG(CompletionHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a CompletionHandler.
-    ASIO_COMPLETION_HANDLER_CHECK(CompletionHandler, handler) type_check;
-
-    detail::async_result_init<
-      CompletionHandler, void ()> init(
-        ASIO_MOVE_CAST(CompletionHandler)(handler));
-
-    service_.dispatch(impl_, init.handler);
-
-    return init.result.get();
-  }
-
-  /// Request the strand to invoke the given handler and return
-  /// immediately.
-  /**
-   * This function is used to ask the strand to execute the given handler, but
-   * without allowing the strand to call the handler from inside this function.
-   *
-   * The strand object guarantees that handlers posted or dispatched through
-   * the strand will not be executed concurrently. The strand's guarantee is in
-   * addition to the guarantee provided by the underlying io_service. The
-   * io_service guarantees that the handler will only be called in a thread in
-   * which the io_service's run member function is currently being invoked.
-   *
-   * @param handler The handler to be called. The strand will make a copy of the
-   * handler object as required. The function signature of the handler must be:
-   * @code void handler(); @endcode
-   */
-  template <typename CompletionHandler>
-  ASIO_INITFN_RESULT_TYPE(CompletionHandler, void ())
-  post(ASIO_MOVE_ARG(CompletionHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a CompletionHandler.
-    ASIO_COMPLETION_HANDLER_CHECK(CompletionHandler, handler) type_check;
-
-    detail::async_result_init<
-      CompletionHandler, void ()> init(
-        ASIO_MOVE_CAST(CompletionHandler)(handler));
-
-    service_.post(impl_, init.handler);
-
-    return init.result.get();
-  }
-
-  /// Create a new handler that automatically dispatches the wrapped handler
-  /// on the strand.
-  /**
-   * This function is used to create a new handler function object that, when
-   * invoked, will automatically pass the wrapped handler to the strand's
-   * dispatch function.
-   *
-   * @param handler The handler to be wrapped. The strand will make a copy of
-   * the handler object as required. The function signature of the handler must
-   * be: @code void handler(A1 a1, ... An an); @endcode
-   *
-   * @return A function object that, when invoked, passes the wrapped handler to
-   * the strand's dispatch function. Given a function object with the signature:
-   * @code R f(A1 a1, ... An an); @endcode
-   * If this function object is passed to the wrap function like so:
-   * @code strand.wrap(f); @endcode
-   * then the return value is a function object with the signature
-   * @code void g(A1 a1, ... An an); @endcode
-   * that, when invoked, executes code equivalent to:
-   * @code strand.dispatch(boost::bind(f, a1, ... an)); @endcode
-   */
-  template <typename Handler>
-#if defined(GENERATING_DOCUMENTATION)
-  unspecified
-#else
-  detail::wrapped_handler<strand, Handler, detail::is_continuation_if_running>
-#endif
-  wrap(Handler handler)
-  {
-    return detail::wrapped_handler<io_service::strand, Handler,
-        detail::is_continuation_if_running>(*this, handler);
-  }
-
-  /// Determine whether the strand is running in the current thread.
-  /**
-   * @return @c true if the current thread is executing a handler that was
-   * submitted to the strand using post(), dispatch() or wrap(). Otherwise
-   * returns @c false.
-   */
-  bool running_in_this_thread() const
-  {
-    return service_.running_in_this_thread(impl_);
-  }
-
-private:
-  asio::detail::strand_service& service_;
-  asio::detail::strand_service::implementation_type impl_;
-};
-
-/// (Deprecated: Use asio::io_service::strand.) Typedef for backwards
-/// compatibility.
-typedef asio::io_service::strand strand;
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_STRAND_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/stream_socket_service.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/stream_socket_service.hpp
deleted file mode 100644
index 56a0320..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/stream_socket_service.hpp
+++ /dev/null
@@ -1,376 +0,0 @@
-//
-// stream_socket_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_STREAM_SOCKET_SERVICE_HPP
-#define ASIO_STREAM_SOCKET_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cstddef>
-#include "asio/async_result.hpp"
-#include "asio/detail/type_traits.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-
-#if defined(ASIO_WINDOWS_RUNTIME)
-# include "asio/detail/winrt_ssocket_service.hpp"
-#elif defined(ASIO_HAS_IOCP)
-# include "asio/detail/win_iocp_socket_service.hpp"
-#else
-# include "asio/detail/reactive_socket_service.hpp"
-#endif
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Default service implementation for a stream socket.
-template <typename Protocol>
-class stream_socket_service
-#if defined(GENERATING_DOCUMENTATION)
-  : public asio::io_service::service
-#else
-  : public asio::detail::service_base<stream_socket_service<Protocol> >
-#endif
-{
-public:
-#if defined(GENERATING_DOCUMENTATION)
-  /// The unique service identifier.
-  static asio::io_service::id id;
-#endif
-
-  /// The protocol type.
-  typedef Protocol protocol_type;
-
-  /// The endpoint type.
-  typedef typename Protocol::endpoint endpoint_type;
-
-private:
-  // The type of the platform-specific implementation.
-#if defined(ASIO_WINDOWS_RUNTIME)
-  typedef detail::winrt_ssocket_service<Protocol> service_impl_type;
-#elif defined(ASIO_HAS_IOCP)
-  typedef detail::win_iocp_socket_service<Protocol> service_impl_type;
-#else
-  typedef detail::reactive_socket_service<Protocol> service_impl_type;
-#endif
-
-public:
-  /// The type of a stream socket implementation.
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined implementation_type;
-#else
-  typedef typename service_impl_type::implementation_type implementation_type;
-#endif
-
-  /// (Deprecated: Use native_handle_type.) The native socket type.
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined native_type;
-#else
-  typedef typename service_impl_type::native_handle_type native_type;
-#endif
-
-  /// The native socket type.
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined native_handle_type;
-#else
-  typedef typename service_impl_type::native_handle_type native_handle_type;
-#endif
-
-  /// Construct a new stream socket service for the specified io_service.
-  explicit stream_socket_service(asio::io_service& io_service)
-    : asio::detail::service_base<
-        stream_socket_service<Protocol> >(io_service),
-      service_impl_(io_service)
-  {
-  }
-
-  /// Construct a new stream socket implementation.
-  void construct(implementation_type& impl)
-  {
-    service_impl_.construct(impl);
-  }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-  /// Move-construct a new stream socket implementation.
-  void move_construct(implementation_type& impl,
-      implementation_type& other_impl)
-  {
-    service_impl_.move_construct(impl, other_impl);
-  }
-
-  /// Move-assign from another stream socket implementation.
-  void move_assign(implementation_type& impl,
-      stream_socket_service& other_service,
-      implementation_type& other_impl)
-  {
-    service_impl_.move_assign(impl, other_service.service_impl_, other_impl);
-  }
-
-  /// Move-construct a new stream socket implementation from another protocol
-  /// type.
-  template <typename Protocol1>
-  void converting_move_construct(implementation_type& impl,
-      typename stream_socket_service<
-        Protocol1>::implementation_type& other_impl,
-      typename enable_if<is_convertible<
-        Protocol1, Protocol>::value>::type* = 0)
-  {
-    service_impl_.template converting_move_construct<Protocol1>(
-        impl, other_impl);
-  }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
-  /// Destroy a stream socket implementation.
-  void destroy(implementation_type& impl)
-  {
-    service_impl_.destroy(impl);
-  }
-
-  /// Open a stream socket.
-  asio::error_code open(implementation_type& impl,
-      const protocol_type& protocol, asio::error_code& ec)
-  {
-    if (protocol.type() == ASIO_OS_DEF(SOCK_STREAM))
-      service_impl_.open(impl, protocol, ec);
-    else
-      ec = asio::error::invalid_argument;
-    return ec;
-  }
-
-  /// Assign an existing native socket to a stream socket.
-  asio::error_code assign(implementation_type& impl,
-      const protocol_type& protocol, const native_handle_type& native_socket,
-      asio::error_code& ec)
-  {
-    return service_impl_.assign(impl, protocol, native_socket, ec);
-  }
-
-  /// Determine whether the socket is open.
-  bool is_open(const implementation_type& impl) const
-  {
-    return service_impl_.is_open(impl);
-  }
-
-  /// Close a stream socket implementation.
-  asio::error_code close(implementation_type& impl,
-      asio::error_code& ec)
-  {
-    return service_impl_.close(impl, ec);
-  }
-
-  /// (Deprecated: Use native_handle().) Get the native socket implementation.
-  native_type native(implementation_type& impl)
-  {
-    return service_impl_.native_handle(impl);
-  }
-
-  /// Get the native socket implementation.
-  native_handle_type native_handle(implementation_type& impl)
-  {
-    return service_impl_.native_handle(impl);
-  }
-
-  /// Cancel all asynchronous operations associated with the socket.
-  asio::error_code cancel(implementation_type& impl,
-      asio::error_code& ec)
-  {
-    return service_impl_.cancel(impl, ec);
-  }
-
-  /// Determine whether the socket is at the out-of-band data mark.
-  bool at_mark(const implementation_type& impl,
-      asio::error_code& ec) const
-  {
-    return service_impl_.at_mark(impl, ec);
-  }
-
-  /// Determine the number of bytes available for reading.
-  std::size_t available(const implementation_type& impl,
-      asio::error_code& ec) const
-  {
-    return service_impl_.available(impl, ec);
-  }
-
-  /// Bind the stream socket to the specified local endpoint.
-  asio::error_code bind(implementation_type& impl,
-      const endpoint_type& endpoint, asio::error_code& ec)
-  {
-    return service_impl_.bind(impl, endpoint, ec);
-  }
-
-  /// Connect the stream socket to the specified endpoint.
-  asio::error_code connect(implementation_type& impl,
-      const endpoint_type& peer_endpoint, asio::error_code& ec)
-  {
-    return service_impl_.connect(impl, peer_endpoint, ec);
-  }
-
-  /// Start an asynchronous connect.
-  template <typename ConnectHandler>
-  ASIO_INITFN_RESULT_TYPE(ConnectHandler,
-      void (asio::error_code))
-  async_connect(implementation_type& impl,
-      const endpoint_type& peer_endpoint,
-      ASIO_MOVE_ARG(ConnectHandler) handler)
-  {
-    detail::async_result_init<
-      ConnectHandler, void (asio::error_code)> init(
-        ASIO_MOVE_CAST(ConnectHandler)(handler));
-
-    service_impl_.async_connect(impl, peer_endpoint, init.handler);
-
-    return init.result.get();
-  }
-
-  /// Set a socket option.
-  template <typename SettableSocketOption>
-  asio::error_code set_option(implementation_type& impl,
-      const SettableSocketOption& option, asio::error_code& ec)
-  {
-    return service_impl_.set_option(impl, option, ec);
-  }
-
-  /// Get a socket option.
-  template <typename GettableSocketOption>
-  asio::error_code get_option(const implementation_type& impl,
-      GettableSocketOption& option, asio::error_code& ec) const
-  {
-    return service_impl_.get_option(impl, option, ec);
-  }
-
-  /// Perform an IO control command on the socket.
-  template <typename IoControlCommand>
-  asio::error_code io_control(implementation_type& impl,
-      IoControlCommand& command, asio::error_code& ec)
-  {
-    return service_impl_.io_control(impl, command, ec);
-  }
-
-  /// Gets the non-blocking mode of the socket.
-  bool non_blocking(const implementation_type& impl) const
-  {
-    return service_impl_.non_blocking(impl);
-  }
-
-  /// Sets the non-blocking mode of the socket.
-  asio::error_code non_blocking(implementation_type& impl,
-      bool mode, asio::error_code& ec)
-  {
-    return service_impl_.non_blocking(impl, mode, ec);
-  }
-
-  /// Gets the non-blocking mode of the native socket implementation.
-  bool native_non_blocking(const implementation_type& impl) const
-  {
-    return service_impl_.native_non_blocking(impl);
-  }
-
-  /// Sets the non-blocking mode of the native socket implementation.
-  asio::error_code native_non_blocking(implementation_type& impl,
-      bool mode, asio::error_code& ec)
-  {
-    return service_impl_.native_non_blocking(impl, mode, ec);
-  }
-
-  /// Get the local endpoint.
-  endpoint_type local_endpoint(const implementation_type& impl,
-      asio::error_code& ec) const
-  {
-    return service_impl_.local_endpoint(impl, ec);
-  }
-
-  /// Get the remote endpoint.
-  endpoint_type remote_endpoint(const implementation_type& impl,
-      asio::error_code& ec) const
-  {
-    return service_impl_.remote_endpoint(impl, ec);
-  }
-
-  /// Disable sends or receives on the socket.
-  asio::error_code shutdown(implementation_type& impl,
-      socket_base::shutdown_type what, asio::error_code& ec)
-  {
-    return service_impl_.shutdown(impl, what, ec);
-  }
-
-  /// Send the given data to the peer.
-  template <typename ConstBufferSequence>
-  std::size_t send(implementation_type& impl,
-      const ConstBufferSequence& buffers,
-      socket_base::message_flags flags, asio::error_code& ec)
-  {
-    return service_impl_.send(impl, buffers, flags, ec);
-  }
-
-  /// Start an asynchronous send.
-  template <typename ConstBufferSequence, typename WriteHandler>
-  ASIO_INITFN_RESULT_TYPE(WriteHandler,
-      void (asio::error_code, std::size_t))
-  async_send(implementation_type& impl,
-      const ConstBufferSequence& buffers,
-      socket_base::message_flags flags,
-      ASIO_MOVE_ARG(WriteHandler) handler)
-  {
-    detail::async_result_init<
-      WriteHandler, void (asio::error_code, std::size_t)> init(
-        ASIO_MOVE_CAST(WriteHandler)(handler));
-
-    service_impl_.async_send(impl, buffers, flags, init.handler);
-
-    return init.result.get();
-  }
-
-  /// Receive some data from the peer.
-  template <typename MutableBufferSequence>
-  std::size_t receive(implementation_type& impl,
-      const MutableBufferSequence& buffers,
-      socket_base::message_flags flags, asio::error_code& ec)
-  {
-    return service_impl_.receive(impl, buffers, flags, ec);
-  }
-
-  /// Start an asynchronous receive.
-  template <typename MutableBufferSequence, typename ReadHandler>
-  ASIO_INITFN_RESULT_TYPE(ReadHandler,
-      void (asio::error_code, std::size_t))
-  async_receive(implementation_type& impl,
-      const MutableBufferSequence& buffers,
-      socket_base::message_flags flags,
-      ASIO_MOVE_ARG(ReadHandler) handler)
-  {
-    detail::async_result_init<
-      ReadHandler, void (asio::error_code, std::size_t)> init(
-        ASIO_MOVE_CAST(ReadHandler)(handler));
-
-    service_impl_.async_receive(impl, buffers, flags, init.handler);
-
-    return init.result.get();
-  }
-
-private:
-  // Destroy all user-defined handler objects owned by the service.
-  void shutdown_service()
-  {
-    service_impl_.shutdown_service();
-  }
-
-  // The platform-specific implementation.
-  service_impl_type service_impl_;
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_STREAM_SOCKET_SERVICE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/streambuf.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/streambuf.hpp
deleted file mode 100644
index 75cee1b..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/streambuf.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-//
-// streambuf.hpp
-// ~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_STREAMBUF_HPP
-#define ASIO_STREAMBUF_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-#include "asio/basic_streambuf.hpp"
-
-namespace asio {
-
-/// Typedef for the typical usage of basic_streambuf.
-typedef basic_streambuf<> streambuf;
-
-} // namespace asio
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-#endif // ASIO_STREAMBUF_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/system_error.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/system_error.hpp
deleted file mode 100644
index 4ec121e..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/system_error.hpp
+++ /dev/null
@@ -1,131 +0,0 @@
-//
-// system_error.hpp
-// ~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SYSTEM_ERROR_HPP
-#define ASIO_SYSTEM_ERROR_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_STD_SYSTEM_ERROR)
-# include <system_error>
-#else // defined(ASIO_HAS_STD_SYSTEM_ERROR)
-# include <cerrno>
-# include <exception>
-# include <string>
-# include "asio/error_code.hpp"
-# include "asio/detail/scoped_ptr.hpp"
-#endif // defined(ASIO_HAS_STD_SYSTEM_ERROR)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-#if defined(ASIO_HAS_STD_SYSTEM_ERROR)
-
-typedef std::system_error system_error;
-
-#else // defined(ASIO_HAS_STD_SYSTEM_ERROR)
-
-/// The system_error class is used to represent system conditions that
-/// prevent the library from operating correctly.
-class system_error
-  : public std::exception
-{
-public:
-  /// Construct with an error code.
-  system_error(const error_code& ec)
-    : code_(ec),
-      context_()
-  {
-  }
-
-  /// Construct with an error code and context.
-  system_error(const error_code& ec, const std::string& context)
-    : code_(ec),
-      context_(context)
-  {
-  }
-
-  /// Copy constructor.
-  system_error(const system_error& other)
-    : std::exception(other),
-      code_(other.code_),
-      context_(other.context_),
-      what_()
-  {
-  }
-
-  /// Destructor.
-  virtual ~system_error() throw ()
-  {
-  }
-
-  /// Assignment operator.
-  system_error& operator=(const system_error& e)
-  {
-    context_ = e.context_;
-    code_ = e.code_;
-    what_.reset();
-    return *this;
-  }
-
-  /// Get a string representation of the exception.
-  virtual const char* what() const throw ()
-  {
-#if !defined(ASIO_NO_EXCEPTIONS)
-    try
-#endif // !defined(ASIO_NO_EXCEPTIONS)
-    {
-      if (!what_.get())
-      {
-        std::string tmp(context_);
-        if (tmp.length())
-          tmp += ": ";
-        tmp += code_.message();
-        what_.reset(new std::string(tmp));
-      }
-      return what_->c_str();
-    }
-#if !defined(ASIO_NO_EXCEPTIONS)
-    catch (std::exception&)
-    {
-      return "system_error";
-    }
-#endif // !defined(ASIO_NO_EXCEPTIONS)
-  }
-
-  /// Get the error code associated with the exception.
-  error_code code() const
-  {
-    return code_;
-  }
-
-private:
-  // The code associated with the error.
-  error_code code_;
-
-  // The context associated with the error.
-  std::string context_;
-
-  // The string representation of the error.
-  mutable asio::detail::scoped_ptr<std::string> what_;
-};
-
-#endif // defined(ASIO_HAS_STD_SYSTEM_ERROR)
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_SYSTEM_ERROR_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/system_timer.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/system_timer.hpp
deleted file mode 100644
index 143056e..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/system_timer.hpp
+++ /dev/null
@@ -1,57 +0,0 @@
-//
-// system_timer.hpp
-// ~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_SYSTEM_TIMER_HPP
-#define ASIO_SYSTEM_TIMER_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_STD_CHRONO) \
-  || defined(ASIO_HAS_BOOST_CHRONO) \
-  || defined(GENERATING_DOCUMENTATION)
-
-#if defined(ASIO_HAS_STD_CHRONO)
-# include <chrono>
-#elif defined(ASIO_HAS_BOOST_CHRONO)
-# include <boost/chrono/system_clocks.hpp>
-#endif
-
-#include "asio/basic_waitable_timer.hpp"
-
-namespace asio {
-
-#if defined(GENERATING_DOCUMENTATION)
-/// Typedef for a timer based on the system clock.
-/**
- * This typedef uses the C++11 @c &lt;chrono&gt; standard library facility, if
- * available. Otherwise, it may use the Boost.Chrono library. To explicitly
- * utilise Boost.Chrono, use the basic_waitable_timer template directly:
- * @code
- * typedef basic_waitable_timer<boost::chrono::system_clock> timer;
- * @endcode
- */
-typedef basic_waitable_timer<chrono::system_clock> system_timer;
-#elif defined(ASIO_HAS_STD_CHRONO)
-typedef basic_waitable_timer<std::chrono::system_clock> system_timer;
-#elif defined(ASIO_HAS_BOOST_CHRONO)
-typedef basic_waitable_timer<boost::chrono::system_clock> system_timer;
-#endif
-
-} // namespace asio
-
-#endif // defined(ASIO_HAS_STD_CHRONO) 
-       //   || defined(ASIO_HAS_BOOST_CHRONO)
-       //   || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_SYSTEM_TIMER_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/thread.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/thread.hpp
deleted file mode 100644
index 6468130..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/thread.hpp
+++ /dev/null
@@ -1,92 +0,0 @@
-//
-// thread.hpp
-// ~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_THREAD_HPP
-#define ASIO_THREAD_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/thread.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// A simple abstraction for starting threads.
-/**
- * The asio::thread class implements the smallest possible subset of the
- * functionality of boost::thread. It is intended to be used only for starting
- * a thread and waiting for it to exit. If more extensive threading
- * capabilities are required, you are strongly advised to use something else.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- *
- * @par Example
- * A typical use of asio::thread would be to launch a thread to run an
- * io_service's event processing loop:
- *
- * @par
- * @code asio::io_service io_service;
- * // ...
- * asio::thread t(boost::bind(&asio::io_service::run, &io_service));
- * // ...
- * t.join(); @endcode
- */
-class thread
-  : private noncopyable
-{
-public:
-  /// Start a new thread that executes the supplied function.
-  /**
-   * This constructor creates a new thread that will execute the given function
-   * or function object.
-   *
-   * @param f The function or function object to be run in the thread. The
-   * function signature must be: @code void f(); @endcode
-   */
-  template <typename Function>
-  explicit thread(Function f)
-    : impl_(f)
-  {
-  }
-
-  /// Destructor.
-  ~thread()
-  {
-  }
-
-  /// Wait for the thread to exit.
-  /**
-   * This function will block until the thread has exited.
-   *
-   * If this function is not called before the thread object is destroyed, the
-   * thread itself will continue to run until completion. You will, however,
-   * no longer have the ability to wait for it to exit.
-   */
-  void join()
-  {
-    impl_.join();
-  }
-
-private:
-  detail::thread impl_;
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_THREAD_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/time_traits.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/time_traits.hpp
deleted file mode 100644
index 4cc4e24..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/time_traits.hpp
+++ /dev/null
@@ -1,86 +0,0 @@
-//
-// time_traits.hpp
-// ~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_TIME_TRAITS_HPP
-#define ASIO_TIME_TRAITS_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/socket_types.hpp" // Must come before posix_time.
-
-#if defined(ASIO_HAS_BOOST_DATE_TIME) \
-  || defined(GENERATING_DOCUMENTATION)
-
-#include <boost/date_time/posix_time/posix_time_types.hpp>
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Time traits suitable for use with the deadline timer.
-template <typename Time>
-struct time_traits;
-
-/// Time traits specialised for posix_time.
-template <>
-struct time_traits<boost::posix_time::ptime>
-{
-  /// The time type.
-  typedef boost::posix_time::ptime time_type;
-
-  /// The duration type.
-  typedef boost::posix_time::time_duration duration_type;
-
-  /// Get the current time.
-  static time_type now()
-  {
-#if defined(BOOST_DATE_TIME_HAS_HIGH_PRECISION_CLOCK)
-    return boost::posix_time::microsec_clock::universal_time();
-#else // defined(BOOST_DATE_TIME_HAS_HIGH_PRECISION_CLOCK)
-    return boost::posix_time::second_clock::universal_time();
-#endif // defined(BOOST_DATE_TIME_HAS_HIGH_PRECISION_CLOCK)
-  }
-
-  /// Add a duration to a time.
-  static time_type add(const time_type& t, const duration_type& d)
-  {
-    return t + d;
-  }
-
-  /// Subtract one time from another.
-  static duration_type subtract(const time_type& t1, const time_type& t2)
-  {
-    return t1 - t2;
-  }
-
-  /// Test whether one time is less than another.
-  static bool less_than(const time_type& t1, const time_type& t2)
-  {
-    return t1 < t2;
-  }
-
-  /// Convert to POSIX duration type.
-  static boost::posix_time::time_duration to_posix_duration(
-      const duration_type& d)
-  {
-    return d;
-  }
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_BOOST_DATE_TIME)
-       // || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_TIME_TRAITS_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/unyield.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/unyield.hpp
deleted file mode 100644
index 50ff8cf..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/unyield.hpp
+++ /dev/null
@@ -1,21 +0,0 @@
-//
-// unyield.hpp
-// ~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifdef reenter
-# undef reenter
-#endif
-
-#ifdef yield
-# undef yield
-#endif
-
-#ifdef fork
-# undef fork
-#endif
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/use_future.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/use_future.hpp
deleted file mode 100644
index 1428bcc..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/use_future.hpp
+++ /dev/null
@@ -1,92 +0,0 @@
-//
-// use_future.hpp
-// ~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_USE_FUTURE_HPP
-#define ASIO_USE_FUTURE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <memory>
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Class used to specify that an asynchronous operation should return a future.
-/**
- * The use_future_t class is used to indicate that an asynchronous operation
- * should return a std::future object. A use_future_t object may be passed as a
- * handler to an asynchronous operation, typically using the special value @c
- * asio::use_future. For example:
- *
- * @code std::future<std::size_t> my_future
- *   = my_socket.async_read_some(my_buffer, asio::use_future); @endcode
- *
- * The initiating function (async_read_some in the above example) returns a
- * future that will receive the result of the operation. If the operation
- * completes with an error_code indicating failure, it is converted into a
- * system_error and passed back to the caller via the future.
- */
-template <typename Allocator = std::allocator<void> >
-class use_future_t
-{
-public:
-  /// The allocator type. The allocator is used when constructing the
-  /// @c std::promise object for a given asynchronous operation.
-  typedef Allocator allocator_type;
-
-  /// Construct using default-constructed allocator.
-  ASIO_CONSTEXPR use_future_t()
-  {
-  }
-
-  /// Construct using specified allocator.
-  explicit use_future_t(const Allocator& allocator)
-    : allocator_(allocator)
-  {
-  }
-
-  /// Specify an alternate allocator.
-  template <typename OtherAllocator>
-  use_future_t<OtherAllocator> operator[](const OtherAllocator& allocator) const
-  {
-    return use_future_t<OtherAllocator>(allocator);
-  }
-
-  /// Obtain allocator.
-  allocator_type get_allocator() const
-  {
-    return allocator_;
-  }
-
-private:
-  Allocator allocator_;
-};
-
-/// A special value, similar to std::nothrow.
-/**
- * See the documentation for asio::use_future_t for a usage example.
- */
-#if defined(ASIO_HAS_CONSTEXPR) || defined(GENERATING_DOCUMENTATION)
-constexpr use_future_t<> use_future;
-#elif defined(ASIO_MSVC)
-__declspec(selectany) use_future_t<> use_future;
-#endif
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/impl/use_future.hpp"
-
-#endif // ASIO_USE_FUTURE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/version.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/version.hpp
deleted file mode 100644
index b03da6b..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/version.hpp
+++ /dev/null
@@ -1,23 +0,0 @@
-//
-// version.hpp
-// ~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_VERSION_HPP
-#define ASIO_VERSION_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-// ASIO_VERSION % 100 is the sub-minor version
-// ASIO_VERSION / 100 % 1000 is the minor version
-// ASIO_VERSION / 100000 is the major version
-#define ASIO_VERSION 101006 // 1.10.6
-
-#endif // ASIO_VERSION_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/wait_traits.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/wait_traits.hpp
deleted file mode 100644
index de2c10d..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/wait_traits.hpp
+++ /dev/null
@@ -1,41 +0,0 @@
-//
-// wait_traits.hpp
-// ~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_WAIT_TRAITS_HPP
-#define ASIO_WAIT_TRAITS_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Wait traits suitable for use with the basic_waitable_timer class template.
-template <typename Clock>
-struct wait_traits
-{
-  /// Convert a clock duration into a duration used for waiting.
-  /** 
-   * @returns @c d.
-   */
-  static typename Clock::duration to_wait_duration(
-      const typename Clock::duration& d)
-  {
-    return d;
-  }
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_WAIT_TRAITS_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/waitable_timer_service.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/waitable_timer_service.hpp
deleted file mode 100644
index 92d971e..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/waitable_timer_service.hpp
+++ /dev/null
@@ -1,168 +0,0 @@
-//
-// waitable_timer_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_WAITABLE_TIMER_SERVICE_HPP
-#define ASIO_WAITABLE_TIMER_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cstddef>
-#include "asio/async_result.hpp"
-#include "asio/detail/chrono_time_traits.hpp"
-#include "asio/detail/deadline_timer_service.hpp"
-#include "asio/io_service.hpp"
-#include "asio/wait_traits.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/// Default service implementation for a timer.
-template <typename Clock,
-    typename WaitTraits = asio::wait_traits<Clock> >
-class waitable_timer_service
-#if defined(GENERATING_DOCUMENTATION)
-  : public asio::io_service::service
-#else
-  : public asio::detail::service_base<
-      waitable_timer_service<Clock, WaitTraits> >
-#endif
-{
-public:
-#if defined(GENERATING_DOCUMENTATION)
-  /// The unique service identifier.
-  static asio::io_service::id id;
-#endif
-
-  /// The clock type.
-  typedef Clock clock_type;
-
-  /// The duration type of the clock.
-  typedef typename clock_type::duration duration;
-
-  /// The time point type of the clock.
-  typedef typename clock_type::time_point time_point;
-
-  /// The wait traits type.
-  typedef WaitTraits traits_type;
-
-private:
-  // The type of the platform-specific implementation.
-  typedef detail::deadline_timer_service<
-    detail::chrono_time_traits<Clock, WaitTraits> > service_impl_type;
-
-public:
-  /// The implementation type of the waitable timer.
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined implementation_type;
-#else
-  typedef typename service_impl_type::implementation_type implementation_type;
-#endif
-
-  /// Construct a new timer service for the specified io_service.
-  explicit waitable_timer_service(asio::io_service& io_service)
-    : asio::detail::service_base<
-        waitable_timer_service<Clock, WaitTraits> >(io_service),
-      service_impl_(io_service)
-  {
-  }
-
-  /// Construct a new timer implementation.
-  void construct(implementation_type& impl)
-  {
-    service_impl_.construct(impl);
-  }
-
-  /// Destroy a timer implementation.
-  void destroy(implementation_type& impl)
-  {
-    service_impl_.destroy(impl);
-  }
-
-  /// Cancel any asynchronous wait operations associated with the timer.
-  std::size_t cancel(implementation_type& impl, asio::error_code& ec)
-  {
-    return service_impl_.cancel(impl, ec);
-  }
-
-  /// Cancels one asynchronous wait operation associated with the timer.
-  std::size_t cancel_one(implementation_type& impl,
-      asio::error_code& ec)
-  {
-    return service_impl_.cancel_one(impl, ec);
-  }
-
-  /// Get the expiry time for the timer as an absolute time.
-  time_point expires_at(const implementation_type& impl) const
-  {
-    return service_impl_.expires_at(impl);
-  }
-
-  /// Set the expiry time for the timer as an absolute time.
-  std::size_t expires_at(implementation_type& impl,
-      const time_point& expiry_time, asio::error_code& ec)
-  {
-    return service_impl_.expires_at(impl, expiry_time, ec);
-  }
-
-  /// Get the expiry time for the timer relative to now.
-  duration expires_from_now(const implementation_type& impl) const
-  {
-    return service_impl_.expires_from_now(impl);
-  }
-
-  /// Set the expiry time for the timer relative to now.
-  std::size_t expires_from_now(implementation_type& impl,
-      const duration& expiry_time, asio::error_code& ec)
-  {
-    return service_impl_.expires_from_now(impl, expiry_time, ec);
-  }
-
-  // Perform a blocking wait on the timer.
-  void wait(implementation_type& impl, asio::error_code& ec)
-  {
-    service_impl_.wait(impl, ec);
-  }
-
-  // Start an asynchronous wait on the timer.
-  template <typename WaitHandler>
-  ASIO_INITFN_RESULT_TYPE(WaitHandler,
-      void (asio::error_code))
-  async_wait(implementation_type& impl,
-      ASIO_MOVE_ARG(WaitHandler) handler)
-  {
-    detail::async_result_init<
-      WaitHandler, void (asio::error_code)> init(
-        ASIO_MOVE_CAST(WaitHandler)(handler));
-
-    service_impl_.async_wait(impl, init.handler);
-
-    return init.result.get();
-  }
-
-private:
-  // Destroy all user-defined handler objects owned by the service.
-  void shutdown_service()
-  {
-    service_impl_.shutdown_service();
-  }
-
-  // The platform-specific implementation.
-  service_impl_type service_impl_;
-};
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // ASIO_WAITABLE_TIMER_SERVICE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/windows/basic_handle.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/windows/basic_handle.hpp
deleted file mode 100644
index 2278fc7..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/windows/basic_handle.hpp
+++ /dev/null
@@ -1,281 +0,0 @@
-//
-// windows/basic_handle.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_WINDOWS_BASIC_HANDLE_HPP
-#define ASIO_WINDOWS_BASIC_HANDLE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_WINDOWS_RANDOM_ACCESS_HANDLE) \
-  || defined(ASIO_HAS_WINDOWS_STREAM_HANDLE) \
-  || defined(ASIO_HAS_WINDOWS_OBJECT_HANDLE) \
-  || defined(GENERATING_DOCUMENTATION)
-
-#include "asio/basic_io_object.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace windows {
-
-/// Provides Windows handle functionality.
-/**
- * The windows::basic_handle class template provides the ability to wrap a
- * Windows handle.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- */
-template <typename HandleService>
-class basic_handle
-  : public basic_io_object<HandleService>
-{
-public:
-  /// (Deprecated: Use native_handle_type.) The native representation of a
-  /// handle.
-  typedef typename HandleService::native_handle_type native_type;
-
-  /// The native representation of a handle.
-  typedef typename HandleService::native_handle_type native_handle_type;
-
-  /// A basic_handle is always the lowest layer.
-  typedef basic_handle<HandleService> lowest_layer_type;
-
-  /// Construct a basic_handle without opening it.
-  /**
-   * This constructor creates a handle without opening it.
-   *
-   * @param io_service The io_service object that the handle will use to
-   * dispatch handlers for any asynchronous operations performed on the handle.
-   */
-  explicit basic_handle(asio::io_service& io_service)
-    : basic_io_object<HandleService>(io_service)
-  {
-  }
-
-  /// Construct a basic_handle on an existing native handle.
-  /**
-   * This constructor creates a handle object to hold an existing native handle.
-   *
-   * @param io_service The io_service object that the handle will use to
-   * dispatch handlers for any asynchronous operations performed on the handle.
-   *
-   * @param handle A native handle.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  basic_handle(asio::io_service& io_service,
-      const native_handle_type& handle)
-    : basic_io_object<HandleService>(io_service)
-  {
-    asio::error_code ec;
-    this->get_service().assign(this->get_implementation(), handle, ec);
-    asio::detail::throw_error(ec, "assign");
-  }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-  /// Move-construct a basic_handle from another.
-  /**
-   * This constructor moves a handle from one object to another.
-   *
-   * @param other The other basic_handle object from which the move will occur.
-   *
-   * @note Following the move, the moved-from object is in the same state as if
-   * constructed using the @c basic_handle(io_service&) constructor.
-   */
-  basic_handle(basic_handle&& other)
-    : basic_io_object<HandleService>(
-        ASIO_MOVE_CAST(basic_handle)(other))
-  {
-  }
-
-  /// Move-assign a basic_handle from another.
-  /**
-   * This assignment operator moves a handle from one object to another.
-   *
-   * @param other The other basic_handle object from which the move will occur.
-   *
-   * @note Following the move, the moved-from object is in the same state as if
-   * constructed using the @c basic_handle(io_service&) constructor.
-   */
-  basic_handle& operator=(basic_handle&& other)
-  {
-    basic_io_object<HandleService>::operator=(
-        ASIO_MOVE_CAST(basic_handle)(other));
-    return *this;
-  }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
-  /// Get a reference to the lowest layer.
-  /**
-   * This function returns a reference to the lowest layer in a stack of
-   * layers. Since a basic_handle cannot contain any further layers, it simply
-   * returns a reference to itself.
-   *
-   * @return A reference to the lowest layer in the stack of layers. Ownership
-   * is not transferred to the caller.
-   */
-  lowest_layer_type& lowest_layer()
-  {
-    return *this;
-  }
-
-  /// Get a const reference to the lowest layer.
-  /**
-   * This function returns a const reference to the lowest layer in a stack of
-   * layers. Since a basic_handle cannot contain any further layers, it simply
-   * returns a reference to itself.
-   *
-   * @return A const reference to the lowest layer in the stack of layers.
-   * Ownership is not transferred to the caller.
-   */
-  const lowest_layer_type& lowest_layer() const
-  {
-    return *this;
-  }
-
-  /// Assign an existing native handle to the handle.
-  /*
-   * This function opens the handle to hold an existing native handle.
-   *
-   * @param handle A native handle.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  void assign(const native_handle_type& handle)
-  {
-    asio::error_code ec;
-    this->get_service().assign(this->get_implementation(), handle, ec);
-    asio::detail::throw_error(ec, "assign");
-  }
-
-  /// Assign an existing native handle to the handle.
-  /*
-   * This function opens the handle to hold an existing native handle.
-   *
-   * @param handle A native handle.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   */
-  asio::error_code assign(const native_handle_type& handle,
-      asio::error_code& ec)
-  {
-    return this->get_service().assign(this->get_implementation(), handle, ec);
-  }
-
-  /// Determine whether the handle is open.
-  bool is_open() const
-  {
-    return this->get_service().is_open(this->get_implementation());
-  }
-
-  /// Close the handle.
-  /**
-   * This function is used to close the handle. Any asynchronous read or write
-   * operations will be cancelled immediately, and will complete with the
-   * asio::error::operation_aborted error.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  void close()
-  {
-    asio::error_code ec;
-    this->get_service().close(this->get_implementation(), ec);
-    asio::detail::throw_error(ec, "close");
-  }
-
-  /// Close the handle.
-  /**
-   * This function is used to close the handle. Any asynchronous read or write
-   * operations will be cancelled immediately, and will complete with the
-   * asio::error::operation_aborted error.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   */
-  asio::error_code close(asio::error_code& ec)
-  {
-    return this->get_service().close(this->get_implementation(), ec);
-  }
-
-  /// (Deprecated: Use native_handle().) Get the native handle representation.
-  /**
-   * This function may be used to obtain the underlying representation of the
-   * handle. This is intended to allow access to native handle functionality
-   * that is not otherwise provided.
-   */
-  native_type native()
-  {
-    return this->get_service().native_handle(this->get_implementation());
-  }
-
-  /// Get the native handle representation.
-  /**
-   * This function may be used to obtain the underlying representation of the
-   * handle. This is intended to allow access to native handle functionality
-   * that is not otherwise provided.
-   */
-  native_handle_type native_handle()
-  {
-    return this->get_service().native_handle(this->get_implementation());
-  }
-
-  /// Cancel all asynchronous operations associated with the handle.
-  /**
-   * This function causes all outstanding asynchronous read or write operations
-   * to finish immediately, and the handlers for cancelled operations will be
-   * passed the asio::error::operation_aborted error.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  void cancel()
-  {
-    asio::error_code ec;
-    this->get_service().cancel(this->get_implementation(), ec);
-    asio::detail::throw_error(ec, "cancel");
-  }
-
-  /// Cancel all asynchronous operations associated with the handle.
-  /**
-   * This function causes all outstanding asynchronous read or write operations
-   * to finish immediately, and the handlers for cancelled operations will be
-   * passed the asio::error::operation_aborted error.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   */
-  asio::error_code cancel(asio::error_code& ec)
-  {
-    return this->get_service().cancel(this->get_implementation(), ec);
-  }
-
-protected:
-  /// Protected destructor to prevent deletion through this type.
-  ~basic_handle()
-  {
-  }
-};
-
-} // namespace windows
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_WINDOWS_RANDOM_ACCESS_HANDLE)
-       //   || defined(ASIO_HAS_WINDOWS_STREAM_HANDLE)
-       //   || defined(ASIO_HAS_WINDOWS_OBJECT_HANDLE)
-       //   || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_WINDOWS_BASIC_HANDLE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/windows/basic_object_handle.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/windows/basic_object_handle.hpp
deleted file mode 100644
index 314badc..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/windows/basic_object_handle.hpp
+++ /dev/null
@@ -1,178 +0,0 @@
-//
-// windows/basic_object_handle.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2011 Boris Schaeling (boris@highscore.de)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_WINDOWS_BASIC_OBJECT_HANDLE_HPP
-#define ASIO_WINDOWS_BASIC_OBJECT_HANDLE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_WINDOWS_OBJECT_HANDLE) \
-  || defined(GENERATING_DOCUMENTATION)
-
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-#include "asio/windows/basic_handle.hpp"
-#include "asio/windows/object_handle_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace windows {
-
-/// Provides object-oriented handle functionality.
-/**
- * The windows::basic_object_handle class template provides asynchronous and
- * blocking object-oriented handle functionality.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- */
-template <typename ObjectHandleService = object_handle_service>
-class basic_object_handle
-  : public basic_handle<ObjectHandleService>
-{
-public:
-  /// The native representation of a handle.
-  typedef typename ObjectHandleService::native_handle_type native_handle_type;
-
-  /// Construct a basic_object_handle without opening it.
-  /**
-   * This constructor creates an object handle without opening it.
-   *
-   * @param io_service The io_service object that the object handle will use to
-   * dispatch handlers for any asynchronous operations performed on the handle.
-   */
-  explicit basic_object_handle(asio::io_service& io_service)
-    : basic_handle<ObjectHandleService>(io_service)
-  {
-  }
-
-  /// Construct a basic_object_handle on an existing native handle.
-  /**
-   * This constructor creates an object handle object to hold an existing native
-   * handle.
-   *
-   * @param io_service The io_service object that the object handle will use to
-   * dispatch handlers for any asynchronous operations performed on the handle.
-   *
-   * @param native_handle The new underlying handle implementation.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  basic_object_handle(asio::io_service& io_service,
-      const native_handle_type& native_handle)
-    : basic_handle<ObjectHandleService>(io_service, native_handle)
-  {
-  }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-  /// Move-construct a basic_object_handle from another.
-  /**
-   * This constructor moves an object handle from one object to another.
-   *
-   * @param other The other basic_object_handle object from which the move will
-   * occur.
-   *
-   * @note Following the move, the moved-from object is in the same state as if
-   * constructed using the @c basic_object_handle(io_service&) constructor.
-   */
-  basic_object_handle(basic_object_handle&& other)
-    : basic_handle<ObjectHandleService>(
-        ASIO_MOVE_CAST(basic_object_handle)(other))
-  {
-  }
-
-  /// Move-assign a basic_object_handle from another.
-  /**
-   * This assignment operator moves an object handle from one object to another.
-   *
-   * @param other The other basic_object_handle object from which the move will
-   * occur.
-   *
-   * @note Following the move, the moved-from object is in the same state as if
-   * constructed using the @c basic_object_handle(io_service&) constructor.
-   */
-  basic_object_handle& operator=(basic_object_handle&& other)
-  {
-    basic_handle<ObjectHandleService>::operator=(
-        ASIO_MOVE_CAST(basic_object_handle)(other));
-    return *this;
-  }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
-  /// Perform a blocking wait on the object handle.
-  /**
-   * This function is used to wait for the object handle to be set to the
-   * signalled state. This function blocks and does not return until the object
-   * handle has been set to the signalled state.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  void wait()
-  {
-    asio::error_code ec;
-    this->get_service().wait(this->get_implementation(), ec);
-    asio::detail::throw_error(ec, "wait");
-  }
-
-  /// Perform a blocking wait on the object handle.
-  /**
-   * This function is used to wait for the object handle to be set to the
-   * signalled state. This function blocks and does not return until the object
-   * handle has been set to the signalled state.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   */
-  void wait(asio::error_code& ec)
-  {
-    this->get_service().wait(this->get_implementation(), ec);
-  }
-
-  /// Start an asynchronous wait on the object handle.
-  /**
-   * This function is be used to initiate an asynchronous wait against the
-   * object handle. It always returns immediately.
-   *
-   * @param handler The handler to be called when the object handle is set to
-   * the signalled state. Copies will be made of the handler as required. The
-   * function signature of the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error // Result of operation.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   */
-  template <typename WaitHandler>
-  ASIO_INITFN_RESULT_TYPE(WaitHandler,
-      void (asio::error_code))
-  async_wait(ASIO_MOVE_ARG(WaitHandler) handler)
-  {
-    return this->get_service().async_wait(this->get_implementation(),
-        ASIO_MOVE_CAST(WaitHandler)(handler));
-  }
-};
-
-} // namespace windows
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_WINDOWS_OBJECT_HANDLE)
-       //   || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_WINDOWS_BASIC_OBJECT_HANDLE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/windows/basic_random_access_handle.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/windows/basic_random_access_handle.hpp
deleted file mode 100644
index 6b7f4fc..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/windows/basic_random_access_handle.hpp
+++ /dev/null
@@ -1,376 +0,0 @@
-//
-// windows/basic_random_access_handle.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_WINDOWS_BASIC_RANDOM_ACCESS_HANDLE_HPP
-#define ASIO_WINDOWS_BASIC_RANDOM_ACCESS_HANDLE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_WINDOWS_RANDOM_ACCESS_HANDLE) \
-  || defined(GENERATING_DOCUMENTATION)
-
-#include <cstddef>
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-#include "asio/windows/basic_handle.hpp"
-#include "asio/windows/random_access_handle_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace windows {
-
-/// Provides random-access handle functionality.
-/**
- * The windows::basic_random_access_handle class template provides asynchronous
- * and blocking random-access handle functionality.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- */
-template <typename RandomAccessHandleService = random_access_handle_service>
-class basic_random_access_handle
-  : public basic_handle<RandomAccessHandleService>
-{
-public:
-  /// (Deprecated: Use native_handle_type.) The native representation of a
-  /// handle.
-  typedef typename RandomAccessHandleService::native_handle_type native_type;
-
-  /// The native representation of a handle.
-  typedef typename RandomAccessHandleService::native_handle_type
-    native_handle_type;
-
-  /// Construct a basic_random_access_handle without opening it.
-  /**
-   * This constructor creates a random-access handle without opening it. The
-   * handle needs to be opened before data can be written to or read from it.
-   *
-   * @param io_service The io_service object that the random-access handle will
-   * use to dispatch handlers for any asynchronous operations performed on the
-   * handle.
-   */
-  explicit basic_random_access_handle(asio::io_service& io_service)
-    : basic_handle<RandomAccessHandleService>(io_service)
-  {
-  }
-
-  /// Construct a basic_random_access_handle on an existing native handle.
-  /**
-   * This constructor creates a random-access handle object to hold an existing
-   * native handle.
-   *
-   * @param io_service The io_service object that the random-access handle will
-   * use to dispatch handlers for any asynchronous operations performed on the
-   * handle.
-   *
-   * @param handle The new underlying handle implementation.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  basic_random_access_handle(asio::io_service& io_service,
-      const native_handle_type& handle)
-    : basic_handle<RandomAccessHandleService>(io_service, handle)
-  {
-  }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-  /// Move-construct a basic_random_access_handle from another.
-  /**
-   * This constructor moves a random-access handle from one object to another.
-   *
-   * @param other The other basic_random_access_handle object from which the
-   * move will occur.
-   *
-   * @note Following the move, the moved-from object is in the same state as if
-   * constructed using the @c basic_random_access_handle(io_service&)
-   * constructor.
-   */
-  basic_random_access_handle(basic_random_access_handle&& other)
-    : basic_handle<RandomAccessHandleService>(
-        ASIO_MOVE_CAST(basic_random_access_handle)(other))
-  {
-  }
-
-  /// Move-assign a basic_random_access_handle from another.
-  /**
-   * This assignment operator moves a random-access handle from one object to
-   * another.
-   *
-   * @param other The other basic_random_access_handle object from which the
-   * move will occur.
-   *
-   * @note Following the move, the moved-from object is in the same state as if
-   * constructed using the @c basic_random_access_handle(io_service&)
-   * constructor.
-   */
-  basic_random_access_handle& operator=(basic_random_access_handle&& other)
-  {
-    basic_handle<RandomAccessHandleService>::operator=(
-        ASIO_MOVE_CAST(basic_random_access_handle)(other));
-    return *this;
-  }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
-  /// Write some data to the handle at the specified offset.
-  /**
-   * This function is used to write data to the random-access handle. The
-   * function call will block until one or more bytes of the data has been
-   * written successfully, or until an error occurs.
-   *
-   * @param offset The offset at which the data will be written.
-   *
-   * @param buffers One or more data buffers to be written to the handle.
-   *
-   * @returns The number of bytes written.
-   *
-   * @throws asio::system_error Thrown on failure. An error code of
-   * asio::error::eof indicates that the connection was closed by the
-   * peer.
-   *
-   * @note The write_some_at operation may not write all of the data. Consider
-   * using the @ref write_at function if you need to ensure that all data is
-   * written before the blocking operation completes.
-   *
-   * @par Example
-   * To write a single data buffer use the @ref buffer function as follows:
-   * @code
-   * handle.write_some_at(42, asio::buffer(data, size));
-   * @endcode
-   * See the @ref buffer documentation for information on writing multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t write_some_at(uint64_t offset,
-      const ConstBufferSequence& buffers)
-  {
-    asio::error_code ec;
-    std::size_t s = this->get_service().write_some_at(
-        this->get_implementation(), offset, buffers, ec);
-    asio::detail::throw_error(ec, "write_some_at");
-    return s;
-  }
-
-  /// Write some data to the handle at the specified offset.
-  /**
-   * This function is used to write data to the random-access handle. The
-   * function call will block until one or more bytes of the data has been
-   * written successfully, or until an error occurs.
-   *
-   * @param offset The offset at which the data will be written.
-   *
-   * @param buffers One or more data buffers to be written to the handle.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes written. Returns 0 if an error occurred.
-   *
-   * @note The write_some operation may not transmit all of the data to the
-   * peer. Consider using the @ref write_at function if you need to ensure that
-   * all data is written before the blocking operation completes.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t write_some_at(uint64_t offset,
-      const ConstBufferSequence& buffers, asio::error_code& ec)
-  {
-    return this->get_service().write_some_at(
-        this->get_implementation(), offset, buffers, ec);
-  }
-
-  /// Start an asynchronous write at the specified offset.
-  /**
-   * This function is used to asynchronously write data to the random-access
-   * handle. The function call always returns immediately.
-   *
-   * @param offset The offset at which the data will be written.
-   *
-   * @param buffers One or more data buffers to be written to the handle.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param handler The handler to be called when the write operation completes.
-   * Copies will be made of the handler as required. The function signature of
-   * the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes written.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   *
-   * @note The write operation may not transmit all of the data to the peer.
-   * Consider using the @ref async_write_at function if you need to ensure that
-   * all data is written before the asynchronous operation completes.
-   *
-   * @par Example
-   * To write a single data buffer use the @ref buffer function as follows:
-   * @code
-   * handle.async_write_some_at(42, asio::buffer(data, size), handler);
-   * @endcode
-   * See the @ref buffer documentation for information on writing multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename ConstBufferSequence, typename WriteHandler>
-  ASIO_INITFN_RESULT_TYPE(WriteHandler,
-      void (asio::error_code, std::size_t))
-  async_write_some_at(uint64_t offset,
-      const ConstBufferSequence& buffers,
-      ASIO_MOVE_ARG(WriteHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a WriteHandler.
-    ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
-    return this->get_service().async_write_some_at(this->get_implementation(),
-        offset, buffers, ASIO_MOVE_CAST(WriteHandler)(handler));
-  }
-
-  /// Read some data from the handle at the specified offset.
-  /**
-   * This function is used to read data from the random-access handle. The
-   * function call will block until one or more bytes of data has been read
-   * successfully, or until an error occurs.
-   *
-   * @param offset The offset at which the data will be read.
-   *
-   * @param buffers One or more buffers into which the data will be read.
-   *
-   * @returns The number of bytes read.
-   *
-   * @throws asio::system_error Thrown on failure. An error code of
-   * asio::error::eof indicates that the connection was closed by the
-   * peer.
-   *
-   * @note The read_some operation may not read all of the requested number of
-   * bytes. Consider using the @ref read_at function if you need to ensure that
-   * the requested amount of data is read before the blocking operation
-   * completes.
-   *
-   * @par Example
-   * To read into a single data buffer use the @ref buffer function as follows:
-   * @code
-   * handle.read_some_at(42, asio::buffer(data, size));
-   * @endcode
-   * See the @ref buffer documentation for information on reading into multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t read_some_at(uint64_t offset,
-      const MutableBufferSequence& buffers)
-  {
-    asio::error_code ec;
-    std::size_t s = this->get_service().read_some_at(
-        this->get_implementation(), offset, buffers, ec);
-    asio::detail::throw_error(ec, "read_some_at");
-    return s;
-  }
-
-  /// Read some data from the handle at the specified offset.
-  /**
-   * This function is used to read data from the random-access handle. The
-   * function call will block until one or more bytes of data has been read
-   * successfully, or until an error occurs.
-   *
-   * @param offset The offset at which the data will be read.
-   *
-   * @param buffers One or more buffers into which the data will be read.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes read. Returns 0 if an error occurred.
-   *
-   * @note The read_some operation may not read all of the requested number of
-   * bytes. Consider using the @ref read_at function if you need to ensure that
-   * the requested amount of data is read before the blocking operation
-   * completes.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t read_some_at(uint64_t offset,
-      const MutableBufferSequence& buffers, asio::error_code& ec)
-  {
-    return this->get_service().read_some_at(
-        this->get_implementation(), offset, buffers, ec);
-  }
-
-  /// Start an asynchronous read at the specified offset.
-  /**
-   * This function is used to asynchronously read data from the random-access
-   * handle. The function call always returns immediately.
-   *
-   * @param offset The offset at which the data will be read.
-   *
-   * @param buffers One or more buffers into which the data will be read.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param handler The handler to be called when the read operation completes.
-   * Copies will be made of the handler as required. The function signature of
-   * the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes read.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   *
-   * @note The read operation may not read all of the requested number of bytes.
-   * Consider using the @ref async_read_at function if you need to ensure that
-   * the requested amount of data is read before the asynchronous operation
-   * completes.
-   *
-   * @par Example
-   * To read into a single data buffer use the @ref buffer function as follows:
-   * @code
-   * handle.async_read_some_at(42, asio::buffer(data, size), handler);
-   * @endcode
-   * See the @ref buffer documentation for information on reading into multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence, typename ReadHandler>
-  ASIO_INITFN_RESULT_TYPE(ReadHandler,
-      void (asio::error_code, std::size_t))
-  async_read_some_at(uint64_t offset,
-      const MutableBufferSequence& buffers,
-      ASIO_MOVE_ARG(ReadHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a ReadHandler.
-    ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
-    return this->get_service().async_read_some_at(this->get_implementation(),
-        offset, buffers, ASIO_MOVE_CAST(ReadHandler)(handler));
-  }
-};
-
-} // namespace windows
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_WINDOWS_RANDOM_ACCESS_HANDLE)
-       //   || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_WINDOWS_BASIC_RANDOM_ACCESS_HANDLE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/windows/basic_stream_handle.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/windows/basic_stream_handle.hpp
deleted file mode 100644
index 388b1e5..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/windows/basic_stream_handle.hpp
+++ /dev/null
@@ -1,359 +0,0 @@
-//
-// windows/basic_stream_handle.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_WINDOWS_BASIC_STREAM_HANDLE_HPP
-#define ASIO_WINDOWS_BASIC_STREAM_HANDLE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_WINDOWS_STREAM_HANDLE) \
-  || defined(GENERATING_DOCUMENTATION)
-
-#include <cstddef>
-#include "asio/detail/handler_type_requirements.hpp"
-#include "asio/detail/throw_error.hpp"
-#include "asio/error.hpp"
-#include "asio/windows/basic_handle.hpp"
-#include "asio/windows/stream_handle_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace windows {
-
-/// Provides stream-oriented handle functionality.
-/**
- * The windows::basic_stream_handle class template provides asynchronous and
- * blocking stream-oriented handle functionality.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- *
- * @par Concepts:
- * AsyncReadStream, AsyncWriteStream, Stream, SyncReadStream, SyncWriteStream.
- */
-template <typename StreamHandleService = stream_handle_service>
-class basic_stream_handle
-  : public basic_handle<StreamHandleService>
-{
-public:
-  /// (Deprecated: Use native_handle_type.) The native representation of a
-  /// handle.
-  typedef typename StreamHandleService::native_handle_type native_type;
-
-  /// The native representation of a handle.
-  typedef typename StreamHandleService::native_handle_type native_handle_type;
-
-  /// Construct a basic_stream_handle without opening it.
-  /**
-   * This constructor creates a stream handle without opening it. The handle
-   * needs to be opened and then connected or accepted before data can be sent
-   * or received on it.
-   *
-   * @param io_service The io_service object that the stream handle will use to
-   * dispatch handlers for any asynchronous operations performed on the handle.
-   */
-  explicit basic_stream_handle(asio::io_service& io_service)
-    : basic_handle<StreamHandleService>(io_service)
-  {
-  }
-
-  /// Construct a basic_stream_handle on an existing native handle.
-  /**
-   * This constructor creates a stream handle object to hold an existing native
-   * handle.
-   *
-   * @param io_service The io_service object that the stream handle will use to
-   * dispatch handlers for any asynchronous operations performed on the handle.
-   *
-   * @param handle The new underlying handle implementation.
-   *
-   * @throws asio::system_error Thrown on failure.
-   */
-  basic_stream_handle(asio::io_service& io_service,
-      const native_handle_type& handle)
-    : basic_handle<StreamHandleService>(io_service, handle)
-  {
-  }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-  /// Move-construct a basic_stream_handle from another.
-  /**
-   * This constructor moves a stream handle from one object to another.
-   *
-   * @param other The other basic_stream_handle object from which the move
-   * will occur.
-   *
-   * @note Following the move, the moved-from object is in the same state as if
-   * constructed using the @c basic_stream_handle(io_service&) constructor.
-   */
-  basic_stream_handle(basic_stream_handle&& other)
-    : basic_handle<StreamHandleService>(
-        ASIO_MOVE_CAST(basic_stream_handle)(other))
-  {
-  }
-
-  /// Move-assign a basic_stream_handle from another.
-  /**
-   * This assignment operator moves a stream handle from one object to
-   * another.
-   *
-   * @param other The other basic_stream_handle object from which the move
-   * will occur.
-   *
-   * @note Following the move, the moved-from object is in the same state as if
-   * constructed using the @c basic_stream_handle(io_service&) constructor.
-   */
-  basic_stream_handle& operator=(basic_stream_handle&& other)
-  {
-    basic_handle<StreamHandleService>::operator=(
-        ASIO_MOVE_CAST(basic_stream_handle)(other));
-    return *this;
-  }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
-  /// Write some data to the handle.
-  /**
-   * This function is used to write data to the stream handle. The function call
-   * will block until one or more bytes of the data has been written
-   * successfully, or until an error occurs.
-   *
-   * @param buffers One or more data buffers to be written to the handle.
-   *
-   * @returns The number of bytes written.
-   *
-   * @throws asio::system_error Thrown on failure. An error code of
-   * asio::error::eof indicates that the connection was closed by the
-   * peer.
-   *
-   * @note The write_some operation may not transmit all of the data to the
-   * peer. Consider using the @ref write function if you need to ensure that
-   * all data is written before the blocking operation completes.
-   *
-   * @par Example
-   * To write a single data buffer use the @ref buffer function as follows:
-   * @code
-   * handle.write_some(asio::buffer(data, size));
-   * @endcode
-   * See the @ref buffer documentation for information on writing multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t write_some(const ConstBufferSequence& buffers)
-  {
-    asio::error_code ec;
-    std::size_t s = this->get_service().write_some(
-        this->get_implementation(), buffers, ec);
-    asio::detail::throw_error(ec, "write_some");
-    return s;
-  }
-
-  /// Write some data to the handle.
-  /**
-   * This function is used to write data to the stream handle. The function call
-   * will block until one or more bytes of the data has been written
-   * successfully, or until an error occurs.
-   *
-   * @param buffers One or more data buffers to be written to the handle.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes written. Returns 0 if an error occurred.
-   *
-   * @note The write_some operation may not transmit all of the data to the
-   * peer. Consider using the @ref write function if you need to ensure that
-   * all data is written before the blocking operation completes.
-   */
-  template <typename ConstBufferSequence>
-  std::size_t write_some(const ConstBufferSequence& buffers,
-      asio::error_code& ec)
-  {
-    return this->get_service().write_some(
-        this->get_implementation(), buffers, ec);
-  }
-
-  /// Start an asynchronous write.
-  /**
-   * This function is used to asynchronously write data to the stream handle.
-   * The function call always returns immediately.
-   *
-   * @param buffers One or more data buffers to be written to the handle.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param handler The handler to be called when the write operation completes.
-   * Copies will be made of the handler as required. The function signature of
-   * the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes written.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   *
-   * @note The write operation may not transmit all of the data to the peer.
-   * Consider using the @ref async_write function if you need to ensure that all
-   * data is written before the asynchronous operation completes.
-   *
-   * @par Example
-   * To write a single data buffer use the @ref buffer function as follows:
-   * @code
-   * handle.async_write_some(asio::buffer(data, size), handler);
-   * @endcode
-   * See the @ref buffer documentation for information on writing multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename ConstBufferSequence, typename WriteHandler>
-  ASIO_INITFN_RESULT_TYPE(WriteHandler,
-      void (asio::error_code, std::size_t))
-  async_write_some(const ConstBufferSequence& buffers,
-      ASIO_MOVE_ARG(WriteHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a WriteHandler.
-    ASIO_WRITE_HANDLER_CHECK(WriteHandler, handler) type_check;
-
-    return this->get_service().async_write_some(this->get_implementation(),
-        buffers, ASIO_MOVE_CAST(WriteHandler)(handler));
-  }
-
-  /// Read some data from the handle.
-  /**
-   * This function is used to read data from the stream handle. The function
-   * call will block until one or more bytes of data has been read successfully,
-   * or until an error occurs.
-   *
-   * @param buffers One or more buffers into which the data will be read.
-   *
-   * @returns The number of bytes read.
-   *
-   * @throws asio::system_error Thrown on failure. An error code of
-   * asio::error::eof indicates that the connection was closed by the
-   * peer.
-   *
-   * @note The read_some operation may not read all of the requested number of
-   * bytes. Consider using the @ref read function if you need to ensure that
-   * the requested amount of data is read before the blocking operation
-   * completes.
-   *
-   * @par Example
-   * To read into a single data buffer use the @ref buffer function as follows:
-   * @code
-   * handle.read_some(asio::buffer(data, size));
-   * @endcode
-   * See the @ref buffer documentation for information on reading into multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t read_some(const MutableBufferSequence& buffers)
-  {
-    asio::error_code ec;
-    std::size_t s = this->get_service().read_some(
-        this->get_implementation(), buffers, ec);
-    asio::detail::throw_error(ec, "read_some");
-    return s;
-  }
-
-  /// Read some data from the handle.
-  /**
-   * This function is used to read data from the stream handle. The function
-   * call will block until one or more bytes of data has been read successfully,
-   * or until an error occurs.
-   *
-   * @param buffers One or more buffers into which the data will be read.
-   *
-   * @param ec Set to indicate what error occurred, if any.
-   *
-   * @returns The number of bytes read. Returns 0 if an error occurred.
-   *
-   * @note The read_some operation may not read all of the requested number of
-   * bytes. Consider using the @ref read function if you need to ensure that
-   * the requested amount of data is read before the blocking operation
-   * completes.
-   */
-  template <typename MutableBufferSequence>
-  std::size_t read_some(const MutableBufferSequence& buffers,
-      asio::error_code& ec)
-  {
-    return this->get_service().read_some(
-        this->get_implementation(), buffers, ec);
-  }
-
-  /// Start an asynchronous read.
-  /**
-   * This function is used to asynchronously read data from the stream handle.
-   * The function call always returns immediately.
-   *
-   * @param buffers One or more buffers into which the data will be read.
-   * Although the buffers object may be copied as necessary, ownership of the
-   * underlying memory blocks is retained by the caller, which must guarantee
-   * that they remain valid until the handler is called.
-   *
-   * @param handler The handler to be called when the read operation completes.
-   * Copies will be made of the handler as required. The function signature of
-   * the handler must be:
-   * @code void handler(
-   *   const asio::error_code& error, // Result of operation.
-   *   std::size_t bytes_transferred           // Number of bytes read.
-   * ); @endcode
-   * Regardless of whether the asynchronous operation completes immediately or
-   * not, the handler will not be invoked from within this function. Invocation
-   * of the handler will be performed in a manner equivalent to using
-   * asio::io_service::post().
-   *
-   * @note The read operation may not read all of the requested number of bytes.
-   * Consider using the @ref async_read function if you need to ensure that the
-   * requested amount of data is read before the asynchronous operation
-   * completes.
-   *
-   * @par Example
-   * To read into a single data buffer use the @ref buffer function as follows:
-   * @code
-   * handle.async_read_some(asio::buffer(data, size), handler);
-   * @endcode
-   * See the @ref buffer documentation for information on reading into multiple
-   * buffers in one go, and how to use it with arrays, boost::array or
-   * std::vector.
-   */
-  template <typename MutableBufferSequence, typename ReadHandler>
-  ASIO_INITFN_RESULT_TYPE(ReadHandler,
-      void (asio::error_code, std::size_t))
-  async_read_some(const MutableBufferSequence& buffers,
-      ASIO_MOVE_ARG(ReadHandler) handler)
-  {
-    // If you get an error on the following line it means that your handler does
-    // not meet the documented type requirements for a ReadHandler.
-    ASIO_READ_HANDLER_CHECK(ReadHandler, handler) type_check;
-
-    return this->get_service().async_read_some(this->get_implementation(),
-        buffers, ASIO_MOVE_CAST(ReadHandler)(handler));
-  }
-};
-
-} // namespace windows
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_WINDOWS_STREAM_HANDLE)
-       //   || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_WINDOWS_BASIC_STREAM_HANDLE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/windows/object_handle.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/windows/object_handle.hpp
deleted file mode 100644
index f4162e1..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/windows/object_handle.hpp
+++ /dev/null
@@ -1,38 +0,0 @@
-//
-// windows/object_handle.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2011 Boris Schaeling (boris@highscore.de)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_WINDOWS_OBJECT_HANDLE_HPP
-#define ASIO_WINDOWS_OBJECT_HANDLE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_WINDOWS_OBJECT_HANDLE) \
-  || defined(GENERATING_DOCUMENTATION)
-
-#include "asio/windows/basic_object_handle.hpp"
-
-namespace asio {
-namespace windows {
-
-/// Typedef for the typical usage of an object handle.
-typedef basic_object_handle<> object_handle;
-
-} // namespace windows
-} // namespace asio
-
-#endif // defined(ASIO_HAS_WINDOWS_OBJECT_HANDLE)
-       //   || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_WINDOWS_OBJECT_HANDLE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/windows/object_handle_service.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/windows/object_handle_service.hpp
deleted file mode 100644
index d066b17..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/windows/object_handle_service.hpp
+++ /dev/null
@@ -1,177 +0,0 @@
-//
-// windows/object_handle_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-// Copyright (c) 2011 Boris Schaeling (boris@highscore.de)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_WINDOWS_OBJECT_HANDLE_SERVICE_HPP
-#define ASIO_WINDOWS_OBJECT_HANDLE_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_WINDOWS_OBJECT_HANDLE) \
-  || defined(GENERATING_DOCUMENTATION)
-
-#include "asio/async_result.hpp"
-#include "asio/detail/win_object_handle_service.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace windows {
-
-/// Default service implementation for an object handle.
-class object_handle_service
-#if defined(GENERATING_DOCUMENTATION)
-  : public asio::io_service::service
-#else
-  : public asio::detail::service_base<object_handle_service>
-#endif
-{
-public:
-#if defined(GENERATING_DOCUMENTATION)
-  /// The unique service identifier.
-  static asio::io_service::id id;
-#endif
-
-private:
-  // The type of the platform-specific implementation.
-  typedef detail::win_object_handle_service service_impl_type;
-
-public:
-  /// The type of an object handle implementation.
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined implementation_type;
-#else
-  typedef service_impl_type::implementation_type implementation_type;
-#endif
-
-  /// The native handle type.
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined native_handle_type;
-#else
-  typedef service_impl_type::native_handle_type native_handle_type;
-#endif
-
-  /// Construct a new object handle service for the specified io_service.
-  explicit object_handle_service(asio::io_service& io_service)
-    : asio::detail::service_base<object_handle_service>(io_service),
-      service_impl_(io_service)
-  {
-  }
-
-  /// Construct a new object handle implementation.
-  void construct(implementation_type& impl)
-  {
-    service_impl_.construct(impl);
-  }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-  /// Move-construct a new object handle implementation.
-  void move_construct(implementation_type& impl,
-      implementation_type& other_impl)
-  {
-    service_impl_.move_construct(impl, other_impl);
-  }
-
-  /// Move-assign from another object handle implementation.
-  void move_assign(implementation_type& impl,
-      object_handle_service& other_service,
-      implementation_type& other_impl)
-  {
-    service_impl_.move_assign(impl, other_service.service_impl_, other_impl);
-  }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
-  /// Destroy an object handle implementation.
-  void destroy(implementation_type& impl)
-  {
-    service_impl_.destroy(impl);
-  }
-
-  /// Assign an existing native handle to an object handle.
-  asio::error_code assign(implementation_type& impl,
-      const native_handle_type& handle, asio::error_code& ec)
-  {
-    return service_impl_.assign(impl, handle, ec);
-  }
-
-  /// Determine whether the handle is open.
-  bool is_open(const implementation_type& impl) const
-  {
-    return service_impl_.is_open(impl);
-  }
-
-  /// Close an object handle implementation.
-  asio::error_code close(implementation_type& impl,
-      asio::error_code& ec)
-  {
-    return service_impl_.close(impl, ec);
-  }
-
-  /// Get the native handle implementation.
-  native_handle_type native_handle(implementation_type& impl)
-  {
-    return service_impl_.native_handle(impl);
-  }
-
-  /// Cancel all asynchronous operations associated with the handle.
-  asio::error_code cancel(implementation_type& impl,
-      asio::error_code& ec)
-  {
-    return service_impl_.cancel(impl, ec);
-  }
-
-  // Wait for a signaled state.
-  void wait(implementation_type& impl, asio::error_code& ec)
-  {
-    service_impl_.wait(impl, ec);
-  }
-
-  /// Start an asynchronous wait.
-  template <typename WaitHandler>
-  ASIO_INITFN_RESULT_TYPE(WaitHandler,
-      void (asio::error_code))
-  async_wait(implementation_type& impl,
-      ASIO_MOVE_ARG(WaitHandler) handler)
-  {
-    asio::detail::async_result_init<
-      WaitHandler, void (asio::error_code)> init(
-        ASIO_MOVE_CAST(WaitHandler)(handler));
-
-    service_impl_.async_wait(impl, init.handler);
-
-    return init.result.get();
-  }
-
-private:
-  // Destroy all user-defined handler objects owned by the service.
-  void shutdown_service()
-  {
-    service_impl_.shutdown_service();
-  }
-
-  // The platform-specific implementation.
-  service_impl_type service_impl_;
-};
-
-} // namespace windows
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_WINDOWS_OBJECT_HANDLE)
-       //   || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_WINDOWS_OBJECT_HANDLE_SERVICE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/windows/overlapped_ptr.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/windows/overlapped_ptr.hpp
deleted file mode 100644
index 284b740..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/windows/overlapped_ptr.hpp
+++ /dev/null
@@ -1,116 +0,0 @@
-//
-// windows/overlapped_ptr.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_WINDOWS_OVERLAPPED_PTR_HPP
-#define ASIO_WINDOWS_OVERLAPPED_PTR_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_WINDOWS_OVERLAPPED_PTR) \
-  || defined(GENERATING_DOCUMENTATION)
-
-#include "asio/detail/noncopyable.hpp"
-#include "asio/detail/win_iocp_overlapped_ptr.hpp"
-#include "asio/io_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace windows {
-
-/// Wraps a handler to create an OVERLAPPED object for use with overlapped I/O.
-/**
- * A special-purpose smart pointer used to wrap an application handler so that
- * it can be passed as the LPOVERLAPPED argument to overlapped I/O functions.
- *
- * @par Thread Safety
- * @e Distinct @e objects: Safe.@n
- * @e Shared @e objects: Unsafe.
- */
-class overlapped_ptr
-  : private noncopyable
-{
-public:
-  /// Construct an empty overlapped_ptr.
-  overlapped_ptr()
-    : impl_()
-  {
-  }
-
-  /// Construct an overlapped_ptr to contain the specified handler.
-  template <typename Handler>
-  explicit overlapped_ptr(asio::io_service& io_service,
-      ASIO_MOVE_ARG(Handler) handler)
-    : impl_(io_service, ASIO_MOVE_CAST(Handler)(handler))
-  {
-  }
-
-  /// Destructor automatically frees the OVERLAPPED object unless released.
-  ~overlapped_ptr()
-  {
-  }
-
-  /// Reset to empty.
-  void reset()
-  {
-    impl_.reset();
-  }
-
-  /// Reset to contain the specified handler, freeing any current OVERLAPPED
-  /// object.
-  template <typename Handler>
-  void reset(asio::io_service& io_service,
-      ASIO_MOVE_ARG(Handler) handler)
-  {
-    impl_.reset(io_service, ASIO_MOVE_CAST(Handler)(handler));
-  }
-
-  /// Get the contained OVERLAPPED object.
-  OVERLAPPED* get()
-  {
-    return impl_.get();
-  }
-
-  /// Get the contained OVERLAPPED object.
-  const OVERLAPPED* get() const
-  {
-    return impl_.get();
-  }
-
-  /// Release ownership of the OVERLAPPED object.
-  OVERLAPPED* release()
-  {
-    return impl_.release();
-  }
-
-  /// Post completion notification for overlapped operation. Releases ownership.
-  void complete(const asio::error_code& ec,
-      std::size_t bytes_transferred)
-  {
-    impl_.complete(ec, bytes_transferred);
-  }
-
-private:
-  detail::win_iocp_overlapped_ptr impl_;
-};
-
-} // namespace windows
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_WINDOWS_OVERLAPPED_PTR)
-       //   || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_WINDOWS_OVERLAPPED_PTR_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/windows/random_access_handle.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/windows/random_access_handle.hpp
deleted file mode 100644
index 9677723..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/windows/random_access_handle.hpp
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// windows/random_access_handle.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_WINDOWS_RANDOM_ACCESS_HANDLE_HPP
-#define ASIO_WINDOWS_RANDOM_ACCESS_HANDLE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_WINDOWS_RANDOM_ACCESS_HANDLE) \
-  || defined(GENERATING_DOCUMENTATION)
-
-#include "asio/windows/basic_random_access_handle.hpp"
-
-namespace asio {
-namespace windows {
-
-/// Typedef for the typical usage of a random-access handle.
-typedef basic_random_access_handle<> random_access_handle;
-
-} // namespace windows
-} // namespace asio
-
-#endif // defined(ASIO_HAS_WINDOWS_RANDOM_ACCESS_HANDLE)
-       //   || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_WINDOWS_RANDOM_ACCESS_HANDLE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/windows/random_access_handle_service.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/windows/random_access_handle_service.hpp
deleted file mode 100644
index 1ae35be..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/windows/random_access_handle_service.hpp
+++ /dev/null
@@ -1,220 +0,0 @@
-//
-// windows/random_access_handle_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_WINDOWS_RANDOM_ACCESS_HANDLE_SERVICE_HPP
-#define ASIO_WINDOWS_RANDOM_ACCESS_HANDLE_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_WINDOWS_RANDOM_ACCESS_HANDLE) \
-  || defined(GENERATING_DOCUMENTATION)
-
-#include <cstddef>
-#include "asio/async_result.hpp"
-#include "asio/detail/cstdint.hpp"
-#include "asio/detail/win_iocp_handle_service.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace windows {
-
-/// Default service implementation for a random-access handle.
-class random_access_handle_service
-#if defined(GENERATING_DOCUMENTATION)
-  : public asio::io_service::service
-#else
-  : public asio::detail::service_base<random_access_handle_service>
-#endif
-{
-public:
-#if defined(GENERATING_DOCUMENTATION)
-  /// The unique service identifier.
-  static asio::io_service::id id;
-#endif
-
-private:
-  // The type of the platform-specific implementation.
-  typedef detail::win_iocp_handle_service service_impl_type;
-
-public:
-  /// The type of a random-access handle implementation.
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined implementation_type;
-#else
-  typedef service_impl_type::implementation_type implementation_type;
-#endif
-
-  /// (Deprecated: Use native_handle_type.) The native handle type.
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined native_type;
-#else
-  typedef service_impl_type::native_handle_type native_type;
-#endif
-
-  /// The native handle type.
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined native_handle_type;
-#else
-  typedef service_impl_type::native_handle_type native_handle_type;
-#endif
-
-  /// Construct a new random-access handle service for the specified io_service.
-  explicit random_access_handle_service(asio::io_service& io_service)
-    : asio::detail::service_base<
-        random_access_handle_service>(io_service),
-      service_impl_(io_service)
-  {
-  }
-
-  /// Construct a new random-access handle implementation.
-  void construct(implementation_type& impl)
-  {
-    service_impl_.construct(impl);
-  }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-  /// Move-construct a new random-access handle implementation.
-  void move_construct(implementation_type& impl,
-      implementation_type& other_impl)
-  {
-    service_impl_.move_construct(impl, other_impl);
-  }
-
-  /// Move-assign from another random-access handle implementation.
-  void move_assign(implementation_type& impl,
-      random_access_handle_service& other_service,
-      implementation_type& other_impl)
-  {
-    service_impl_.move_assign(impl, other_service.service_impl_, other_impl);
-  }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
-  /// Destroy a random-access handle implementation.
-  void destroy(implementation_type& impl)
-  {
-    service_impl_.destroy(impl);
-  }
-
-  /// Assign an existing native handle to a random-access handle.
-  asio::error_code assign(implementation_type& impl,
-      const native_handle_type& handle, asio::error_code& ec)
-  {
-    return service_impl_.assign(impl, handle, ec);
-  }
-
-  /// Determine whether the handle is open.
-  bool is_open(const implementation_type& impl) const
-  {
-    return service_impl_.is_open(impl);
-  }
-
-  /// Close a random-access handle implementation.
-  asio::error_code close(implementation_type& impl,
-      asio::error_code& ec)
-  {
-    return service_impl_.close(impl, ec);
-  }
-
-  /// (Deprecated: Use native_handle().) Get the native handle implementation.
-  native_type native(implementation_type& impl)
-  {
-    return service_impl_.native_handle(impl);
-  }
-
-  /// Get the native handle implementation.
-  native_handle_type native_handle(implementation_type& impl)
-  {
-    return service_impl_.native_handle(impl);
-  }
-
-  /// Cancel all asynchronous operations associated with the handle.
-  asio::error_code cancel(implementation_type& impl,
-      asio::error_code& ec)
-  {
-    return service_impl_.cancel(impl, ec);
-  }
-
-  /// Write the given data at the specified offset.
-  template <typename ConstBufferSequence>
-  std::size_t write_some_at(implementation_type& impl, uint64_t offset,
-      const ConstBufferSequence& buffers, asio::error_code& ec)
-  {
-    return service_impl_.write_some_at(impl, offset, buffers, ec);
-  }
-
-  /// Start an asynchronous write at the specified offset.
-  template <typename ConstBufferSequence, typename WriteHandler>
-  ASIO_INITFN_RESULT_TYPE(WriteHandler,
-      void (asio::error_code, std::size_t))
-  async_write_some_at(implementation_type& impl,
-      uint64_t offset, const ConstBufferSequence& buffers,
-      ASIO_MOVE_ARG(WriteHandler) handler)
-  {
-    asio::detail::async_result_init<
-      WriteHandler, void (asio::error_code, std::size_t)> init(
-        ASIO_MOVE_CAST(WriteHandler)(handler));
-
-    service_impl_.async_write_some_at(impl, offset, buffers, init.handler);
-
-    return init.result.get();
-  }
-
-  /// Read some data from the specified offset.
-  template <typename MutableBufferSequence>
-  std::size_t read_some_at(implementation_type& impl, uint64_t offset,
-      const MutableBufferSequence& buffers, asio::error_code& ec)
-  {
-    return service_impl_.read_some_at(impl, offset, buffers, ec);
-  }
-
-  /// Start an asynchronous read at the specified offset.
-  template <typename MutableBufferSequence, typename ReadHandler>
-  ASIO_INITFN_RESULT_TYPE(ReadHandler,
-      void (asio::error_code, std::size_t))
-  async_read_some_at(implementation_type& impl,
-      uint64_t offset, const MutableBufferSequence& buffers,
-      ASIO_MOVE_ARG(ReadHandler) handler)
-  {
-    asio::detail::async_result_init<
-      ReadHandler, void (asio::error_code, std::size_t)> init(
-        ASIO_MOVE_CAST(ReadHandler)(handler));
-
-    service_impl_.async_read_some_at(impl, offset, buffers, init.handler);
-
-    return init.result.get();
-  }
-
-private:
-  // Destroy all user-defined handler objects owned by the service.
-  void shutdown_service()
-  {
-    service_impl_.shutdown_service();
-  }
-
-  // The platform-specific implementation.
-  service_impl_type service_impl_;
-};
-
-} // namespace windows
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_WINDOWS_RANDOM_ACCESS_HANDLE)
-       //   || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_WINDOWS_RANDOM_ACCESS_HANDLE_SERVICE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/windows/stream_handle.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/windows/stream_handle.hpp
deleted file mode 100644
index b35dd75..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/windows/stream_handle.hpp
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// windows/stream_handle.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_WINDOWS_STREAM_HANDLE_HPP
-#define ASIO_WINDOWS_STREAM_HANDLE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_WINDOWS_STREAM_HANDLE) \
-  || defined(GENERATING_DOCUMENTATION)
-
-#include "asio/windows/basic_stream_handle.hpp"
-
-namespace asio {
-namespace windows {
-
-/// Typedef for the typical usage of a stream-oriented handle.
-typedef basic_stream_handle<> stream_handle;
-
-} // namespace windows
-} // namespace asio
-
-#endif // defined(ASIO_HAS_WINDOWS_STREAM_HANDLE)
-       //   || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_WINDOWS_STREAM_HANDLE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/windows/stream_handle_service.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/windows/stream_handle_service.hpp
deleted file mode 100644
index 32ec49f..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/windows/stream_handle_service.hpp
+++ /dev/null
@@ -1,218 +0,0 @@
-//
-// windows/stream_handle_service.hpp
-// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_WINDOWS_STREAM_HANDLE_SERVICE_HPP
-#define ASIO_WINDOWS_STREAM_HANDLE_SERVICE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-
-#if defined(ASIO_HAS_WINDOWS_STREAM_HANDLE) \
-  || defined(GENERATING_DOCUMENTATION)
-
-#include <cstddef>
-#include "asio/async_result.hpp"
-#include "asio/detail/win_iocp_handle_service.hpp"
-#include "asio/error.hpp"
-#include "asio/io_service.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-namespace windows {
-
-/// Default service implementation for a stream handle.
-class stream_handle_service
-#if defined(GENERATING_DOCUMENTATION)
-  : public asio::io_service::service
-#else
-  : public asio::detail::service_base<stream_handle_service>
-#endif
-{
-public:
-#if defined(GENERATING_DOCUMENTATION)
-  /// The unique service identifier.
-  static asio::io_service::id id;
-#endif
-
-private:
-  // The type of the platform-specific implementation.
-  typedef detail::win_iocp_handle_service service_impl_type;
-
-public:
-  /// The type of a stream handle implementation.
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined implementation_type;
-#else
-  typedef service_impl_type::implementation_type implementation_type;
-#endif
-
-  /// (Deprecated: Use native_handle_type.) The native handle type.
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined native_type;
-#else
-  typedef service_impl_type::native_handle_type native_type;
-#endif
-
-  /// The native handle type.
-#if defined(GENERATING_DOCUMENTATION)
-  typedef implementation_defined native_handle_type;
-#else
-  typedef service_impl_type::native_handle_type native_handle_type;
-#endif
-
-  /// Construct a new stream handle service for the specified io_service.
-  explicit stream_handle_service(asio::io_service& io_service)
-    : asio::detail::service_base<stream_handle_service>(io_service),
-      service_impl_(io_service)
-  {
-  }
-
-  /// Construct a new stream handle implementation.
-  void construct(implementation_type& impl)
-  {
-    service_impl_.construct(impl);
-  }
-
-#if defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-  /// Move-construct a new stream handle implementation.
-  void move_construct(implementation_type& impl,
-      implementation_type& other_impl)
-  {
-    service_impl_.move_construct(impl, other_impl);
-  }
-
-  /// Move-assign from another stream handle implementation.
-  void move_assign(implementation_type& impl,
-      stream_handle_service& other_service,
-      implementation_type& other_impl)
-  {
-    service_impl_.move_assign(impl, other_service.service_impl_, other_impl);
-  }
-#endif // defined(ASIO_HAS_MOVE) || defined(GENERATING_DOCUMENTATION)
-
-  /// Destroy a stream handle implementation.
-  void destroy(implementation_type& impl)
-  {
-    service_impl_.destroy(impl);
-  }
-
-  /// Assign an existing native handle to a stream handle.
-  asio::error_code assign(implementation_type& impl,
-      const native_handle_type& handle, asio::error_code& ec)
-  {
-    return service_impl_.assign(impl, handle, ec);
-  }
-
-  /// Determine whether the handle is open.
-  bool is_open(const implementation_type& impl) const
-  {
-    return service_impl_.is_open(impl);
-  }
-
-  /// Close a stream handle implementation.
-  asio::error_code close(implementation_type& impl,
-      asio::error_code& ec)
-  {
-    return service_impl_.close(impl, ec);
-  }
-
-  /// (Deprecated: Use native_handle().) Get the native handle implementation.
-  native_type native(implementation_type& impl)
-  {
-    return service_impl_.native_handle(impl);
-  }
-
-  /// Get the native handle implementation.
-  native_handle_type native_handle(implementation_type& impl)
-  {
-    return service_impl_.native_handle(impl);
-  }
-
-  /// Cancel all asynchronous operations associated with the handle.
-  asio::error_code cancel(implementation_type& impl,
-      asio::error_code& ec)
-  {
-    return service_impl_.cancel(impl, ec);
-  }
-
-  /// Write the given data to the stream.
-  template <typename ConstBufferSequence>
-  std::size_t write_some(implementation_type& impl,
-      const ConstBufferSequence& buffers, asio::error_code& ec)
-  {
-    return service_impl_.write_some(impl, buffers, ec);
-  }
-
-  /// Start an asynchronous write.
-  template <typename ConstBufferSequence, typename WriteHandler>
-  ASIO_INITFN_RESULT_TYPE(WriteHandler,
-      void (asio::error_code, std::size_t))
-  async_write_some(implementation_type& impl,
-      const ConstBufferSequence& buffers,
-      ASIO_MOVE_ARG(WriteHandler) handler)
-  {
-    asio::detail::async_result_init<
-      WriteHandler, void (asio::error_code, std::size_t)> init(
-        ASIO_MOVE_CAST(WriteHandler)(handler));
-
-    service_impl_.async_write_some(impl, buffers, init.handler);
-
-    return init.result.get();
-  }
-
-  /// Read some data from the stream.
-  template <typename MutableBufferSequence>
-  std::size_t read_some(implementation_type& impl,
-      const MutableBufferSequence& buffers, asio::error_code& ec)
-  {
-    return service_impl_.read_some(impl, buffers, ec);
-  }
-
-  /// Start an asynchronous read.
-  template <typename MutableBufferSequence, typename ReadHandler>
-  ASIO_INITFN_RESULT_TYPE(ReadHandler,
-      void (asio::error_code, std::size_t))
-  async_read_some(implementation_type& impl,
-      const MutableBufferSequence& buffers,
-      ASIO_MOVE_ARG(ReadHandler) handler)
-  {
-    asio::detail::async_result_init<
-      ReadHandler, void (asio::error_code, std::size_t)> init(
-        ASIO_MOVE_CAST(ReadHandler)(handler));
-
-    service_impl_.async_read_some(impl, buffers, init.handler);
-
-    return init.result.get();
-  }
-
-private:
-  // Destroy all user-defined handler objects owned by the service.
-  void shutdown_service()
-  {
-    service_impl_.shutdown_service();
-  }
-
-  // The platform-specific implementation.
-  service_impl_type service_impl_;
-};
-
-} // namespace windows
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#endif // defined(ASIO_HAS_WINDOWS_STREAM_HANDLE)
-       //   || defined(GENERATING_DOCUMENTATION)
-
-#endif // ASIO_WINDOWS_STREAM_HANDLE_SERVICE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/write.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/write.hpp
deleted file mode 100644
index 15445e4..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/write.hpp
+++ /dev/null
@@ -1,618 +0,0 @@
-//
-// write.hpp
-// ~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_WRITE_HPP
-#define ASIO_WRITE_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cstddef>
-#include "asio/async_result.hpp"
-#include "asio/basic_streambuf_fwd.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/**
- * @defgroup write asio::write
- *
- * @brief Write a certain amount of data to a stream before returning.
- */
-/*@{*/
-
-/// Write all of the supplied data to a stream before returning.
-/**
- * This function is used to write a certain number of bytes of data to a stream.
- * The call will block until one of the following conditions is true:
- *
- * @li All of the data in the supplied buffers has been written. That is, the
- * bytes transferred is equal to the sum of the buffer sizes.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * write_some function.
- *
- * @param s The stream to which the data is to be written. The type must support
- * the SyncWriteStream concept.
- *
- * @param buffers One or more buffers containing the data to be written. The sum
- * of the buffer sizes indicates the maximum number of bytes to write to the
- * stream.
- *
- * @returns The number of bytes transferred.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @par Example
- * To write a single data buffer use the @ref buffer function as follows:
- * @code asio::write(s, asio::buffer(data, size)); @endcode
- * See the @ref buffer documentation for information on writing multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- *
- * @note This overload is equivalent to calling:
- * @code asio::write(
- *     s, buffers,
- *     asio::transfer_all()); @endcode
- */
-template <typename SyncWriteStream, typename ConstBufferSequence>
-std::size_t write(SyncWriteStream& s, const ConstBufferSequence& buffers);
-
-/// Write all of the supplied data to a stream before returning.
-/**
- * This function is used to write a certain number of bytes of data to a stream.
- * The call will block until one of the following conditions is true:
- *
- * @li All of the data in the supplied buffers has been written. That is, the
- * bytes transferred is equal to the sum of the buffer sizes.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * write_some function.
- *
- * @param s The stream to which the data is to be written. The type must support
- * the SyncWriteStream concept.
- *
- * @param buffers One or more buffers containing the data to be written. The sum
- * of the buffer sizes indicates the maximum number of bytes to write to the
- * stream.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes transferred.
- *
- * @par Example
- * To write a single data buffer use the @ref buffer function as follows:
- * @code asio::write(s, asio::buffer(data, size), ec); @endcode
- * See the @ref buffer documentation for information on writing multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- *
- * @note This overload is equivalent to calling:
- * @code asio::write(
- *     s, buffers,
- *     asio::transfer_all(), ec); @endcode
- */
-template <typename SyncWriteStream, typename ConstBufferSequence>
-std::size_t write(SyncWriteStream& s, const ConstBufferSequence& buffers,
-    asio::error_code& ec);
-
-/// Write a certain amount of data to a stream before returning.
-/**
- * This function is used to write a certain number of bytes of data to a stream.
- * The call will block until one of the following conditions is true:
- *
- * @li All of the data in the supplied buffers has been written. That is, the
- * bytes transferred is equal to the sum of the buffer sizes.
- *
- * @li The completion_condition function object returns 0.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * write_some function.
- *
- * @param s The stream to which the data is to be written. The type must support
- * the SyncWriteStream concept.
- *
- * @param buffers One or more buffers containing the data to be written. The sum
- * of the buffer sizes indicates the maximum number of bytes to write to the
- * stream.
- *
- * @param completion_condition The function object to be called to determine
- * whether the write operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- *   // Result of latest write_some operation.
- *   const asio::error_code& error,
- *
- *   // Number of bytes transferred so far.
- *   std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the write operation is complete. A
- * non-zero return value indicates the maximum number of bytes to be written on
- * the next call to the stream's write_some function.
- *
- * @returns The number of bytes transferred.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @par Example
- * To write a single data buffer use the @ref buffer function as follows:
- * @code asio::write(s, asio::buffer(data, size),
- *     asio::transfer_at_least(32)); @endcode
- * See the @ref buffer documentation for information on writing multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
-template <typename SyncWriteStream, typename ConstBufferSequence,
-    typename CompletionCondition>
-std::size_t write(SyncWriteStream& s, const ConstBufferSequence& buffers,
-    CompletionCondition completion_condition);
-
-/// Write a certain amount of data to a stream before returning.
-/**
- * This function is used to write a certain number of bytes of data to a stream.
- * The call will block until one of the following conditions is true:
- *
- * @li All of the data in the supplied buffers has been written. That is, the
- * bytes transferred is equal to the sum of the buffer sizes.
- *
- * @li The completion_condition function object returns 0.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * write_some function.
- *
- * @param s The stream to which the data is to be written. The type must support
- * the SyncWriteStream concept.
- *
- * @param buffers One or more buffers containing the data to be written. The sum
- * of the buffer sizes indicates the maximum number of bytes to write to the
- * stream.
- *
- * @param completion_condition The function object to be called to determine
- * whether the write operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- *   // Result of latest write_some operation.
- *   const asio::error_code& error,
- *
- *   // Number of bytes transferred so far.
- *   std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the write operation is complete. A
- * non-zero return value indicates the maximum number of bytes to be written on
- * the next call to the stream's write_some function.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes written. If an error occurs, returns the total
- * number of bytes successfully transferred prior to the error.
- */
-template <typename SyncWriteStream, typename ConstBufferSequence,
-    typename CompletionCondition>
-std::size_t write(SyncWriteStream& s, const ConstBufferSequence& buffers,
-    CompletionCondition completion_condition, asio::error_code& ec);
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-/// Write all of the supplied data to a stream before returning.
-/**
- * This function is used to write a certain number of bytes of data to a stream.
- * The call will block until one of the following conditions is true:
- *
- * @li All of the data in the supplied basic_streambuf has been written.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * write_some function.
- *
- * @param s The stream to which the data is to be written. The type must support
- * the SyncWriteStream concept.
- *
- * @param b The basic_streambuf object from which data will be written.
- *
- * @returns The number of bytes transferred.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note This overload is equivalent to calling:
- * @code asio::write(
- *     s, b,
- *     asio::transfer_all()); @endcode
- */
-template <typename SyncWriteStream, typename Allocator>
-std::size_t write(SyncWriteStream& s, basic_streambuf<Allocator>& b);
-
-/// Write all of the supplied data to a stream before returning.
-/**
- * This function is used to write a certain number of bytes of data to a stream.
- * The call will block until one of the following conditions is true:
- *
- * @li All of the data in the supplied basic_streambuf has been written.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * write_some function.
- *
- * @param s The stream to which the data is to be written. The type must support
- * the SyncWriteStream concept.
- *
- * @param b The basic_streambuf object from which data will be written.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes transferred.
- *
- * @note This overload is equivalent to calling:
- * @code asio::write(
- *     s, b,
- *     asio::transfer_all(), ec); @endcode
- */
-template <typename SyncWriteStream, typename Allocator>
-std::size_t write(SyncWriteStream& s, basic_streambuf<Allocator>& b,
-    asio::error_code& ec);
-
-/// Write a certain amount of data to a stream before returning.
-/**
- * This function is used to write a certain number of bytes of data to a stream.
- * The call will block until one of the following conditions is true:
- *
- * @li All of the data in the supplied basic_streambuf has been written.
- *
- * @li The completion_condition function object returns 0.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * write_some function.
- *
- * @param s The stream to which the data is to be written. The type must support
- * the SyncWriteStream concept.
- *
- * @param b The basic_streambuf object from which data will be written.
- *
- * @param completion_condition The function object to be called to determine
- * whether the write operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- *   // Result of latest write_some operation.
- *   const asio::error_code& error,
- *
- *   // Number of bytes transferred so far.
- *   std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the write operation is complete. A
- * non-zero return value indicates the maximum number of bytes to be written on
- * the next call to the stream's write_some function.
- *
- * @returns The number of bytes transferred.
- *
- * @throws asio::system_error Thrown on failure.
- */
-template <typename SyncWriteStream, typename Allocator,
-    typename CompletionCondition>
-std::size_t write(SyncWriteStream& s, basic_streambuf<Allocator>& b,
-    CompletionCondition completion_condition);
-
-/// Write a certain amount of data to a stream before returning.
-/**
- * This function is used to write a certain number of bytes of data to a stream.
- * The call will block until one of the following conditions is true:
- *
- * @li All of the data in the supplied basic_streambuf has been written.
- *
- * @li The completion_condition function object returns 0.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * write_some function.
- *
- * @param s The stream to which the data is to be written. The type must support
- * the SyncWriteStream concept.
- *
- * @param b The basic_streambuf object from which data will be written.
- *
- * @param completion_condition The function object to be called to determine
- * whether the write operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- *   // Result of latest write_some operation.
- *   const asio::error_code& error,
- *
- *   // Number of bytes transferred so far.
- *   std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the write operation is complete. A
- * non-zero return value indicates the maximum number of bytes to be written on
- * the next call to the stream's write_some function.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes written. If an error occurs, returns the total
- * number of bytes successfully transferred prior to the error.
- */
-template <typename SyncWriteStream, typename Allocator,
-    typename CompletionCondition>
-std::size_t write(SyncWriteStream& s, basic_streambuf<Allocator>& b,
-    CompletionCondition completion_condition, asio::error_code& ec);
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-/*@}*/
-/**
- * @defgroup async_write asio::async_write
- *
- * @brief Start an asynchronous operation to write a certain amount of data to a
- * stream.
- */
-/*@{*/
-
-/// Start an asynchronous operation to write all of the supplied data to a
-/// stream.
-/**
- * This function is used to asynchronously write a certain number of bytes of
- * data to a stream. The function call always returns immediately. The
- * asynchronous operation will continue until one of the following conditions
- * is true:
- *
- * @li All of the data in the supplied buffers has been written. That is, the
- * bytes transferred is equal to the sum of the buffer sizes.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * async_write_some function, and is known as a <em>composed operation</em>. The
- * program must ensure that the stream performs no other write operations (such
- * as async_write, the stream's async_write_some function, or any other composed
- * operations that perform writes) until this operation completes.
- *
- * @param s The stream to which the data is to be written. The type must support
- * the AsyncWriteStream concept.
- *
- * @param buffers One or more buffers containing the data to be written.
- * Although the buffers object may be copied as necessary, ownership of the
- * underlying memory blocks is retained by the caller, which must guarantee
- * that they remain valid until the handler is called.
- *
- * @param handler The handler to be called when the write operation completes.
- * Copies will be made of the handler as required. The function signature of
- * the handler must be:
- * @code void handler(
- *   const asio::error_code& error, // Result of operation.
- *
- *   std::size_t bytes_transferred           // Number of bytes written from the
- *                                           // buffers. If an error occurred,
- *                                           // this will be less than the sum
- *                                           // of the buffer sizes.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation of
- * the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @par Example
- * To write a single data buffer use the @ref buffer function as follows:
- * @code
- * asio::async_write(s, asio::buffer(data, size), handler);
- * @endcode
- * See the @ref buffer documentation for information on writing multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
-template <typename AsyncWriteStream, typename ConstBufferSequence,
-    typename WriteHandler>
-ASIO_INITFN_RESULT_TYPE(WriteHandler,
-    void (asio::error_code, std::size_t))
-async_write(AsyncWriteStream& s, const ConstBufferSequence& buffers,
-    ASIO_MOVE_ARG(WriteHandler) handler);
-
-/// Start an asynchronous operation to write a certain amount of data to a
-/// stream.
-/**
- * This function is used to asynchronously write a certain number of bytes of
- * data to a stream. The function call always returns immediately. The
- * asynchronous operation will continue until one of the following conditions
- * is true:
- *
- * @li All of the data in the supplied buffers has been written. That is, the
- * bytes transferred is equal to the sum of the buffer sizes.
- *
- * @li The completion_condition function object returns 0.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * async_write_some function, and is known as a <em>composed operation</em>. The
- * program must ensure that the stream performs no other write operations (such
- * as async_write, the stream's async_write_some function, or any other composed
- * operations that perform writes) until this operation completes.
- *
- * @param s The stream to which the data is to be written. The type must support
- * the AsyncWriteStream concept.
- *
- * @param buffers One or more buffers containing the data to be written.
- * Although the buffers object may be copied as necessary, ownership of the
- * underlying memory blocks is retained by the caller, which must guarantee
- * that they remain valid until the handler is called.
- *
- * @param completion_condition The function object to be called to determine
- * whether the write operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- *   // Result of latest async_write_some operation.
- *   const asio::error_code& error,
- *
- *   // Number of bytes transferred so far.
- *   std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the write operation is complete. A
- * non-zero return value indicates the maximum number of bytes to be written on
- * the next call to the stream's async_write_some function.
- *
- * @param handler The handler to be called when the write operation completes.
- * Copies will be made of the handler as required. The function signature of the
- * handler must be:
- * @code void handler(
- *   const asio::error_code& error, // Result of operation.
- *
- *   std::size_t bytes_transferred           // Number of bytes written from the
- *                                           // buffers. If an error occurred,
- *                                           // this will be less than the sum
- *                                           // of the buffer sizes.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation of
- * the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @par Example
- * To write a single data buffer use the @ref buffer function as follows:
- * @code asio::async_write(s,
- *     asio::buffer(data, size),
- *     asio::transfer_at_least(32),
- *     handler); @endcode
- * See the @ref buffer documentation for information on writing multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
-template <typename AsyncWriteStream, typename ConstBufferSequence,
-    typename CompletionCondition, typename WriteHandler>
-ASIO_INITFN_RESULT_TYPE(WriteHandler,
-    void (asio::error_code, std::size_t))
-async_write(AsyncWriteStream& s, const ConstBufferSequence& buffers,
-    CompletionCondition completion_condition,
-    ASIO_MOVE_ARG(WriteHandler) handler);
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-/// Start an asynchronous operation to write all of the supplied data to a
-/// stream.
-/**
- * This function is used to asynchronously write a certain number of bytes of
- * data to a stream. The function call always returns immediately. The
- * asynchronous operation will continue until one of the following conditions
- * is true:
- *
- * @li All of the data in the supplied basic_streambuf has been written.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * async_write_some function, and is known as a <em>composed operation</em>. The
- * program must ensure that the stream performs no other write operations (such
- * as async_write, the stream's async_write_some function, or any other composed
- * operations that perform writes) until this operation completes.
- *
- * @param s The stream to which the data is to be written. The type must support
- * the AsyncWriteStream concept.
- *
- * @param b A basic_streambuf object from which data will be written. Ownership
- * of the streambuf is retained by the caller, which must guarantee that it
- * remains valid until the handler is called.
- *
- * @param handler The handler to be called when the write operation completes.
- * Copies will be made of the handler as required. The function signature of the
- * handler must be:
- * @code void handler(
- *   const asio::error_code& error, // Result of operation.
- *
- *   std::size_t bytes_transferred           // Number of bytes written from the
- *                                           // buffers. If an error occurred,
- *                                           // this will be less than the sum
- *                                           // of the buffer sizes.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation of
- * the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- */
-template <typename AsyncWriteStream, typename Allocator, typename WriteHandler>
-ASIO_INITFN_RESULT_TYPE(WriteHandler,
-    void (asio::error_code, std::size_t))
-async_write(AsyncWriteStream& s, basic_streambuf<Allocator>& b,
-    ASIO_MOVE_ARG(WriteHandler) handler);
-
-/// Start an asynchronous operation to write a certain amount of data to a
-/// stream.
-/**
- * This function is used to asynchronously write a certain number of bytes of
- * data to a stream. The function call always returns immediately. The
- * asynchronous operation will continue until one of the following conditions
- * is true:
- *
- * @li All of the data in the supplied basic_streambuf has been written.
- *
- * @li The completion_condition function object returns 0.
- *
- * This operation is implemented in terms of zero or more calls to the stream's
- * async_write_some function, and is known as a <em>composed operation</em>. The
- * program must ensure that the stream performs no other write operations (such
- * as async_write, the stream's async_write_some function, or any other composed
- * operations that perform writes) until this operation completes.
- *
- * @param s The stream to which the data is to be written. The type must support
- * the AsyncWriteStream concept.
- *
- * @param b A basic_streambuf object from which data will be written. Ownership
- * of the streambuf is retained by the caller, which must guarantee that it
- * remains valid until the handler is called.
- *
- * @param completion_condition The function object to be called to determine
- * whether the write operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- *   // Result of latest async_write_some operation.
- *   const asio::error_code& error,
- *
- *   // Number of bytes transferred so far.
- *   std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the write operation is complete. A
- * non-zero return value indicates the maximum number of bytes to be written on
- * the next call to the stream's async_write_some function.
- *
- * @param handler The handler to be called when the write operation completes.
- * Copies will be made of the handler as required. The function signature of the
- * handler must be:
- * @code void handler(
- *   const asio::error_code& error, // Result of operation.
- *
- *   std::size_t bytes_transferred           // Number of bytes written from the
- *                                           // buffers. If an error occurred,
- *                                           // this will be less than the sum
- *                                           // of the buffer sizes.
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation of
- * the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- */
-template <typename AsyncWriteStream, typename Allocator,
-    typename CompletionCondition, typename WriteHandler>
-ASIO_INITFN_RESULT_TYPE(WriteHandler,
-    void (asio::error_code, std::size_t))
-async_write(AsyncWriteStream& s, basic_streambuf<Allocator>& b,
-    CompletionCondition completion_condition,
-    ASIO_MOVE_ARG(WriteHandler) handler);
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-/*@}*/
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/impl/write.hpp"
-
-#endif // ASIO_WRITE_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/write_at.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/write_at.hpp
deleted file mode 100644
index 45edd08..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/write_at.hpp
+++ /dev/null
@@ -1,670 +0,0 @@
-//
-// write_at.hpp
-// ~~~~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#ifndef ASIO_WRITE_AT_HPP
-#define ASIO_WRITE_AT_HPP
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1200)
-# pragma once
-#endif // defined(_MSC_VER) && (_MSC_VER >= 1200)
-
-#include "asio/detail/config.hpp"
-#include <cstddef>
-#include "asio/async_result.hpp"
-#include "asio/basic_streambuf_fwd.hpp"
-#include "asio/detail/cstdint.hpp"
-#include "asio/error.hpp"
-
-#include "asio/detail/push_options.hpp"
-
-namespace asio {
-
-/**
- * @defgroup write_at asio::write_at
- *
- * @brief Write a certain amount of data at a specified offset before returning.
- */
-/*@{*/
-
-/// Write all of the supplied data at the specified offset before returning.
-/**
- * This function is used to write a certain number of bytes of data to a random
- * access device at a specified offset. The call will block until one of the
- * following conditions is true:
- *
- * @li All of the data in the supplied buffers has been written. That is, the
- * bytes transferred is equal to the sum of the buffer sizes.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the device's
- * write_some_at function.
- *
- * @param d The device to which the data is to be written. The type must support
- * the SyncRandomAccessWriteDevice concept.
- *
- * @param offset The offset at which the data will be written.
- *
- * @param buffers One or more buffers containing the data to be written. The sum
- * of the buffer sizes indicates the maximum number of bytes to write to the
- * device.
- *
- * @returns The number of bytes transferred.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @par Example
- * To write a single data buffer use the @ref buffer function as follows:
- * @code asio::write_at(d, 42, asio::buffer(data, size)); @endcode
- * See the @ref buffer documentation for information on writing multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- *
- * @note This overload is equivalent to calling:
- * @code asio::write_at(
- *     d, offset, buffers,
- *     asio::transfer_all()); @endcode
- */
-template <typename SyncRandomAccessWriteDevice, typename ConstBufferSequence>
-std::size_t write_at(SyncRandomAccessWriteDevice& d,
-    uint64_t offset, const ConstBufferSequence& buffers);
-
-/// Write all of the supplied data at the specified offset before returning.
-/**
- * This function is used to write a certain number of bytes of data to a random
- * access device at a specified offset. The call will block until one of the
- * following conditions is true:
- *
- * @li All of the data in the supplied buffers has been written. That is, the
- * bytes transferred is equal to the sum of the buffer sizes.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the device's
- * write_some_at function.
- *
- * @param d The device to which the data is to be written. The type must support
- * the SyncRandomAccessWriteDevice concept.
- *
- * @param offset The offset at which the data will be written.
- *
- * @param buffers One or more buffers containing the data to be written. The sum
- * of the buffer sizes indicates the maximum number of bytes to write to the
- * device.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes transferred.
- *
- * @par Example
- * To write a single data buffer use the @ref buffer function as follows:
- * @code asio::write_at(d, 42,
- *     asio::buffer(data, size), ec); @endcode
- * See the @ref buffer documentation for information on writing multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- *
- * @note This overload is equivalent to calling:
- * @code asio::write_at(
- *     d, offset, buffers,
- *     asio::transfer_all(), ec); @endcode
- */
-template <typename SyncRandomAccessWriteDevice, typename ConstBufferSequence>
-std::size_t write_at(SyncRandomAccessWriteDevice& d,
-    uint64_t offset, const ConstBufferSequence& buffers,
-    asio::error_code& ec);
-
-/// Write a certain amount of data at a specified offset before returning.
-/**
- * This function is used to write a certain number of bytes of data to a random
- * access device at a specified offset. The call will block until one of the
- * following conditions is true:
- *
- * @li All of the data in the supplied buffers has been written. That is, the
- * bytes transferred is equal to the sum of the buffer sizes.
- *
- * @li The completion_condition function object returns 0.
- *
- * This operation is implemented in terms of zero or more calls to the device's
- * write_some_at function.
- *
- * @param d The device to which the data is to be written. The type must support
- * the SyncRandomAccessWriteDevice concept.
- *
- * @param offset The offset at which the data will be written.
- *
- * @param buffers One or more buffers containing the data to be written. The sum
- * of the buffer sizes indicates the maximum number of bytes to write to the
- * device.
- *
- * @param completion_condition The function object to be called to determine
- * whether the write operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- *   // Result of latest write_some_at operation.
- *   const asio::error_code& error,
- *
- *   // Number of bytes transferred so far.
- *   std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the write operation is complete. A
- * non-zero return value indicates the maximum number of bytes to be written on
- * the next call to the device's write_some_at function.
- *
- * @returns The number of bytes transferred.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @par Example
- * To write a single data buffer use the @ref buffer function as follows:
- * @code asio::write_at(d, 42, asio::buffer(data, size),
- *     asio::transfer_at_least(32)); @endcode
- * See the @ref buffer documentation for information on writing multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
-template <typename SyncRandomAccessWriteDevice, typename ConstBufferSequence,
-    typename CompletionCondition>
-std::size_t write_at(SyncRandomAccessWriteDevice& d,
-    uint64_t offset, const ConstBufferSequence& buffers,
-    CompletionCondition completion_condition);
-
-/// Write a certain amount of data at a specified offset before returning.
-/**
- * This function is used to write a certain number of bytes of data to a random
- * access device at a specified offset. The call will block until one of the
- * following conditions is true:
- *
- * @li All of the data in the supplied buffers has been written. That is, the
- * bytes transferred is equal to the sum of the buffer sizes.
- *
- * @li The completion_condition function object returns 0.
- *
- * This operation is implemented in terms of zero or more calls to the device's
- * write_some_at function.
- *
- * @param d The device to which the data is to be written. The type must support
- * the SyncRandomAccessWriteDevice concept.
- *
- * @param offset The offset at which the data will be written.
- *
- * @param buffers One or more buffers containing the data to be written. The sum
- * of the buffer sizes indicates the maximum number of bytes to write to the
- * device.
- *
- * @param completion_condition The function object to be called to determine
- * whether the write operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- *   // Result of latest write_some_at operation.
- *   const asio::error_code& error,
- *
- *   // Number of bytes transferred so far.
- *   std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the write operation is complete. A
- * non-zero return value indicates the maximum number of bytes to be written on
- * the next call to the device's write_some_at function.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes written. If an error occurs, returns the total
- * number of bytes successfully transferred prior to the error.
- */
-template <typename SyncRandomAccessWriteDevice, typename ConstBufferSequence,
-    typename CompletionCondition>
-std::size_t write_at(SyncRandomAccessWriteDevice& d,
-    uint64_t offset, const ConstBufferSequence& buffers,
-    CompletionCondition completion_condition, asio::error_code& ec);
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-/// Write all of the supplied data at the specified offset before returning.
-/**
- * This function is used to write a certain number of bytes of data to a random
- * access device at a specified offset. The call will block until one of the
- * following conditions is true:
- *
- * @li All of the data in the supplied basic_streambuf has been written.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the device's
- * write_some_at function.
- *
- * @param d The device to which the data is to be written. The type must support
- * the SyncRandomAccessWriteDevice concept.
- *
- * @param offset The offset at which the data will be written.
- *
- * @param b The basic_streambuf object from which data will be written.
- *
- * @returns The number of bytes transferred.
- *
- * @throws asio::system_error Thrown on failure.
- *
- * @note This overload is equivalent to calling:
- * @code asio::write_at(
- *     d, 42, b,
- *     asio::transfer_all()); @endcode
- */
-template <typename SyncRandomAccessWriteDevice, typename Allocator>
-std::size_t write_at(SyncRandomAccessWriteDevice& d,
-    uint64_t offset, basic_streambuf<Allocator>& b);
-
-/// Write all of the supplied data at the specified offset before returning.
-/**
- * This function is used to write a certain number of bytes of data to a random
- * access device at a specified offset. The call will block until one of the
- * following conditions is true:
- *
- * @li All of the data in the supplied basic_streambuf has been written.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the device's
- * write_some_at function.
- *
- * @param d The device to which the data is to be written. The type must support
- * the SyncRandomAccessWriteDevice concept.
- *
- * @param offset The offset at which the data will be written.
- *
- * @param b The basic_streambuf object from which data will be written.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes transferred.
- *
- * @note This overload is equivalent to calling:
- * @code asio::write_at(
- *     d, 42, b,
- *     asio::transfer_all(), ec); @endcode
- */
-template <typename SyncRandomAccessWriteDevice, typename Allocator>
-std::size_t write_at(SyncRandomAccessWriteDevice& d,
-    uint64_t offset, basic_streambuf<Allocator>& b,
-    asio::error_code& ec);
-
-/// Write a certain amount of data at a specified offset before returning.
-/**
- * This function is used to write a certain number of bytes of data to a random
- * access device at a specified offset. The call will block until one of the
- * following conditions is true:
- *
- * @li All of the data in the supplied basic_streambuf has been written.
- *
- * @li The completion_condition function object returns 0.
- *
- * This operation is implemented in terms of zero or more calls to the device's
- * write_some_at function.
- *
- * @param d The device to which the data is to be written. The type must support
- * the SyncRandomAccessWriteDevice concept.
- *
- * @param offset The offset at which the data will be written.
- *
- * @param b The basic_streambuf object from which data will be written.
- *
- * @param completion_condition The function object to be called to determine
- * whether the write operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- *   // Result of latest write_some_at operation.
- *   const asio::error_code& error,
- *
- *   // Number of bytes transferred so far.
- *   std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the write operation is complete. A
- * non-zero return value indicates the maximum number of bytes to be written on
- * the next call to the device's write_some_at function.
- *
- * @returns The number of bytes transferred.
- *
- * @throws asio::system_error Thrown on failure.
- */
-template <typename SyncRandomAccessWriteDevice, typename Allocator,
-    typename CompletionCondition>
-std::size_t write_at(SyncRandomAccessWriteDevice& d, uint64_t offset,
-    basic_streambuf<Allocator>& b, CompletionCondition completion_condition);
-
-/// Write a certain amount of data at a specified offset before returning.
-/**
- * This function is used to write a certain number of bytes of data to a random
- * access device at a specified offset. The call will block until one of the
- * following conditions is true:
- *
- * @li All of the data in the supplied basic_streambuf has been written.
- *
- * @li The completion_condition function object returns 0.
- *
- * This operation is implemented in terms of zero or more calls to the device's
- * write_some_at function.
- *
- * @param d The device to which the data is to be written. The type must support
- * the SyncRandomAccessWriteDevice concept.
- *
- * @param offset The offset at which the data will be written.
- *
- * @param b The basic_streambuf object from which data will be written.
- *
- * @param completion_condition The function object to be called to determine
- * whether the write operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- *   // Result of latest write_some_at operation.
- *   const asio::error_code& error,
- *
- *   // Number of bytes transferred so far.
- *   std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the write operation is complete. A
- * non-zero return value indicates the maximum number of bytes to be written on
- * the next call to the device's write_some_at function.
- *
- * @param ec Set to indicate what error occurred, if any.
- *
- * @returns The number of bytes written. If an error occurs, returns the total
- * number of bytes successfully transferred prior to the error.
- */
-template <typename SyncRandomAccessWriteDevice, typename Allocator,
-    typename CompletionCondition>
-std::size_t write_at(SyncRandomAccessWriteDevice& d, uint64_t offset,
-    basic_streambuf<Allocator>& b, CompletionCondition completion_condition,
-    asio::error_code& ec);
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-/*@}*/
-/**
- * @defgroup async_write_at asio::async_write_at
- *
- * @brief Start an asynchronous operation to write a certain amount of data at
- * the specified offset.
- */
-/*@{*/
-
-/// Start an asynchronous operation to write all of the supplied data at the
-/// specified offset.
-/**
- * This function is used to asynchronously write a certain number of bytes of
- * data to a random access device at a specified offset. The function call
- * always returns immediately. The asynchronous operation will continue until
- * one of the following conditions is true:
- *
- * @li All of the data in the supplied buffers has been written. That is, the
- * bytes transferred is equal to the sum of the buffer sizes.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the device's
- * async_write_some_at function, and is known as a <em>composed operation</em>.
- * The program must ensure that the device performs no <em>overlapping</em>
- * write operations (such as async_write_at, the device's async_write_some_at
- * function, or any other composed operations that perform writes) until this
- * operation completes. Operations are overlapping if the regions defined by
- * their offsets, and the numbers of bytes to write, intersect.
- *
- * @param d The device to which the data is to be written. The type must support
- * the AsyncRandomAccessWriteDevice concept.
- *
- * @param offset The offset at which the data will be written.
- *
- * @param buffers One or more buffers containing the data to be written.
- * Although the buffers object may be copied as necessary, ownership of the
- * underlying memory blocks is retained by the caller, which must guarantee
- * that they remain valid until the handler is called.
- *
- * @param handler The handler to be called when the write operation completes.
- * Copies will be made of the handler as required. The function signature of
- * the handler must be:
- * @code void handler(
- *   // Result of operation.
- *   const asio::error_code& error,
- *
- *   // Number of bytes written from the buffers. If an error
- *   // occurred, this will be less than the sum of the buffer sizes.
- *   std::size_t bytes_transferred
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation of
- * the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @par Example
- * To write a single data buffer use the @ref buffer function as follows:
- * @code
- * asio::async_write_at(d, 42, asio::buffer(data, size), handler);
- * @endcode
- * See the @ref buffer documentation for information on writing multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
-template <typename AsyncRandomAccessWriteDevice, typename ConstBufferSequence,
-    typename WriteHandler>
-ASIO_INITFN_RESULT_TYPE(WriteHandler,
-    void (asio::error_code, std::size_t))
-async_write_at(AsyncRandomAccessWriteDevice& d, uint64_t offset,
-    const ConstBufferSequence& buffers,
-    ASIO_MOVE_ARG(WriteHandler) handler);
-
-/// Start an asynchronous operation to write a certain amount of data at the
-/// specified offset.
-/**
- * This function is used to asynchronously write a certain number of bytes of
- * data to a random access device at a specified offset. The function call
- * always returns immediately. The asynchronous operation will continue until
- * one of the following conditions is true:
- *
- * @li All of the data in the supplied buffers has been written. That is, the
- * bytes transferred is equal to the sum of the buffer sizes.
- *
- * @li The completion_condition function object returns 0.
- *
- * This operation is implemented in terms of zero or more calls to the device's
- * async_write_some_at function, and is known as a <em>composed operation</em>.
- * The program must ensure that the device performs no <em>overlapping</em>
- * write operations (such as async_write_at, the device's async_write_some_at
- * function, or any other composed operations that perform writes) until this
- * operation completes. Operations are overlapping if the regions defined by
- * their offsets, and the numbers of bytes to write, intersect.
- *
- * @param d The device to which the data is to be written. The type must support
- * the AsyncRandomAccessWriteDevice concept.
- *
- * @param offset The offset at which the data will be written.
- *
- * @param buffers One or more buffers containing the data to be written.
- * Although the buffers object may be copied as necessary, ownership of the
- * underlying memory blocks is retained by the caller, which must guarantee
- * that they remain valid until the handler is called.
- *
- * @param completion_condition The function object to be called to determine
- * whether the write operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- *   // Result of latest async_write_some_at operation.
- *   const asio::error_code& error,
- *
- *   // Number of bytes transferred so far.
- *   std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the write operation is complete. A
- * non-zero return value indicates the maximum number of bytes to be written on
- * the next call to the device's async_write_some_at function.
- *
- * @param handler The handler to be called when the write operation completes.
- * Copies will be made of the handler as required. The function signature of the
- * handler must be:
- * @code void handler(
- *   // Result of operation.
- *   const asio::error_code& error,
- *
- *   // Number of bytes written from the buffers. If an error
- *   // occurred, this will be less than the sum of the buffer sizes.
- *   std::size_t bytes_transferred
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation of
- * the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- *
- * @par Example
- * To write a single data buffer use the @ref buffer function as follows:
- * @code asio::async_write_at(d, 42,
- *     asio::buffer(data, size),
- *     asio::transfer_at_least(32),
- *     handler); @endcode
- * See the @ref buffer documentation for information on writing multiple
- * buffers in one go, and how to use it with arrays, boost::array or
- * std::vector.
- */
-template <typename AsyncRandomAccessWriteDevice, typename ConstBufferSequence,
-    typename CompletionCondition, typename WriteHandler>
-ASIO_INITFN_RESULT_TYPE(WriteHandler,
-    void (asio::error_code, std::size_t))
-async_write_at(AsyncRandomAccessWriteDevice& d,
-    uint64_t offset, const ConstBufferSequence& buffers,
-    CompletionCondition completion_condition,
-    ASIO_MOVE_ARG(WriteHandler) handler);
-
-#if !defined(ASIO_NO_IOSTREAM)
-
-/// Start an asynchronous operation to write all of the supplied data at the
-/// specified offset.
-/**
- * This function is used to asynchronously write a certain number of bytes of
- * data to a random access device at a specified offset. The function call
- * always returns immediately. The asynchronous operation will continue until
- * one of the following conditions is true:
- *
- * @li All of the data in the supplied basic_streambuf has been written.
- *
- * @li An error occurred.
- *
- * This operation is implemented in terms of zero or more calls to the device's
- * async_write_some_at function, and is known as a <em>composed operation</em>.
- * The program must ensure that the device performs no <em>overlapping</em>
- * write operations (such as async_write_at, the device's async_write_some_at
- * function, or any other composed operations that perform writes) until this
- * operation completes. Operations are overlapping if the regions defined by
- * their offsets, and the numbers of bytes to write, intersect.
- *
- * @param d The device to which the data is to be written. The type must support
- * the AsyncRandomAccessWriteDevice concept.
- *
- * @param offset The offset at which the data will be written.
- *
- * @param b A basic_streambuf object from which data will be written. Ownership
- * of the streambuf is retained by the caller, which must guarantee that it
- * remains valid until the handler is called.
- *
- * @param handler The handler to be called when the write operation completes.
- * Copies will be made of the handler as required. The function signature of the
- * handler must be:
- * @code void handler(
- *   // Result of operation.
- *   const asio::error_code& error,
- *
- *   // Number of bytes written from the buffers. If an error
- *   // occurred, this will be less than the sum of the buffer sizes.
- *   std::size_t bytes_transferred
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation of
- * the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- */
-template <typename AsyncRandomAccessWriteDevice, typename Allocator,
-    typename WriteHandler>
-ASIO_INITFN_RESULT_TYPE(WriteHandler,
-    void (asio::error_code, std::size_t))
-async_write_at(AsyncRandomAccessWriteDevice& d, uint64_t offset,
-    basic_streambuf<Allocator>& b, ASIO_MOVE_ARG(WriteHandler) handler);
-
-/// Start an asynchronous operation to write a certain amount of data at the
-/// specified offset.
-/**
- * This function is used to asynchronously write a certain number of bytes of
- * data to a random access device at a specified offset. The function call
- * always returns immediately. The asynchronous operation will continue until
- * one of the following conditions is true:
- *
- * @li All of the data in the supplied basic_streambuf has been written.
- *
- * @li The completion_condition function object returns 0.
- *
- * This operation is implemented in terms of zero or more calls to the device's
- * async_write_some_at function, and is known as a <em>composed operation</em>.
- * The program must ensure that the device performs no <em>overlapping</em>
- * write operations (such as async_write_at, the device's async_write_some_at
- * function, or any other composed operations that perform writes) until this
- * operation completes. Operations are overlapping if the regions defined by
- * their offsets, and the numbers of bytes to write, intersect.
- *
- * @param d The device to which the data is to be written. The type must support
- * the AsyncRandomAccessWriteDevice concept.
- *
- * @param offset The offset at which the data will be written.
- *
- * @param b A basic_streambuf object from which data will be written. Ownership
- * of the streambuf is retained by the caller, which must guarantee that it
- * remains valid until the handler is called.
- *
- * @param completion_condition The function object to be called to determine
- * whether the write operation is complete. The signature of the function object
- * must be:
- * @code std::size_t completion_condition(
- *   // Result of latest async_write_some_at operation.
- *   const asio::error_code& error,
- *
- *   // Number of bytes transferred so far.
- *   std::size_t bytes_transferred
- * ); @endcode
- * A return value of 0 indicates that the write operation is complete. A
- * non-zero return value indicates the maximum number of bytes to be written on
- * the next call to the device's async_write_some_at function.
- *
- * @param handler The handler to be called when the write operation completes.
- * Copies will be made of the handler as required. The function signature of the
- * handler must be:
- * @code void handler(
- *   // Result of operation.
- *   const asio::error_code& error,
- *
- *   // Number of bytes written from the buffers. If an error
- *   // occurred, this will be less than the sum of the buffer sizes.
- *   std::size_t bytes_transferred
- * ); @endcode
- * Regardless of whether the asynchronous operation completes immediately or
- * not, the handler will not be invoked from within this function. Invocation of
- * the handler will be performed in a manner equivalent to using
- * asio::io_service::post().
- */
-template <typename AsyncRandomAccessWriteDevice, typename Allocator,
-    typename CompletionCondition, typename WriteHandler>
-ASIO_INITFN_RESULT_TYPE(WriteHandler,
-    void (asio::error_code, std::size_t))
-async_write_at(AsyncRandomAccessWriteDevice& d, uint64_t offset,
-    basic_streambuf<Allocator>& b, CompletionCondition completion_condition,
-    ASIO_MOVE_ARG(WriteHandler) handler);
-
-#endif // !defined(ASIO_NO_IOSTREAM)
-
-/*@}*/
-
-} // namespace asio
-
-#include "asio/detail/pop_options.hpp"
-
-#include "asio/impl/write_at.hpp"
-
-#endif // ASIO_WRITE_AT_HPP
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/yield.hpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/yield.hpp
deleted file mode 100644
index 6cf5d6b..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/asio/include/asio/yield.hpp
+++ /dev/null
@@ -1,23 +0,0 @@
-//
-// yield.hpp
-// ~~~~~~~~~
-//
-// Copyright (c) 2003-2015 Christopher M. Kohlhoff (chris at kohlhoff dot com)
-//
-// Distributed under the Boost Software License, Version 1.0. (See accompanying
-// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-//
-
-#include "coroutine.hpp"
-
-#ifndef reenter
-# define reenter(c) ASIO_CORO_REENTER(c)
-#endif
-
-#ifndef yield
-# define yield ASIO_CORO_YIELD
-#endif
-
-#ifndef fork
-# define fork ASIO_CORO_FORK
-#endif
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/build/Build ALL.launch b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/build/Build ALL.launch
deleted file mode 100644
index a005ebd..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/build/Build ALL.launch
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.ui.externaltools.ProgramLaunchConfigurationType">
-<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${working_set:&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;&#10;&lt;resources&gt;&#10;&lt;item path=&quot;/org.eclipse.papyrus.moka.fmi.exporter&quot; type=&quot;4&quot;/&gt;&#10;&lt;/resources&gt;}"/>
-<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LAUNCH_CONFIGURATION_BUILD_SCOPE" value="${none}"/>
-<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/org.eclipse.papyrus.moka.fmu.wrapper/build/build_all.sh}"/>
-<stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="${workspace_loc:/org.eclipse.papyrus.moka.fmu.wrapper} ${workspace_loc:/org.eclipse.papyrus.moka.fmi.exporter}"/>
-<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/org.eclipse.papyrus.moka.fmu.wrapper/build}"/>
-</launchConfiguration>
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/build/build_all.sh b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/build/build_all.sh
deleted file mode 100755
index e565e7a..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/build/build_all.sh
+++ /dev/null
@@ -1,111 +0,0 @@
-#!/bin/bash
-
-# ex : build_all.sh ./org.eclipse.papyrus.moka.fmu.wrapper ./org.eclipse.papyrus.moka.fmu.exporter 
-#Path can be absolute or relative
-
-
-WRAPPER_PROJ=$1
-EXPORTER_PROJ=$2
-
-if [[ !("$WRAPPER_PROJ" = /*) ]]; then
-WRAPPER_PROJ=$PWD/$WRAPPER_PROJ
-fi
-
-if [[ !("$EXPORTER_PROJ" = /*) ]]; then
-EXPORTER_PROJ=$PWD/$EXPORTER_PROJ
-fi
-
-
-TMPDIR=`mktemp -d`
-echo "compiling in temp directory = $TMPDIR"
-LIN32_TMPDIR="$TMPDIR/LIN32"
-LIN64_TMPDIR="$TMPDIR/LIN64"
-WIN64_TMPDIR="$TMPDIR/WIN64"
-
-mkdir $LIN32_TMPDIR $LIN64_TMPDIR  $WIN64_TMPDIR
-
-
-LIB_NAME="libfmuwrapper"
-COMMON_COMP_OPTS="-DASIO_STANDALONE -pthread -std=c++11 -O3 -Wall -c -fmessage-length=0"
-COMMON_LINK_OPTS="-shared -pthread -std=c++11"
-
-INCLUDE="-I$WRAPPER_PROJ/asio/include -I$WRAPPER_PROJ/fmi -I$WRAPPER_PROJ/rapidjson/include -I$WRAPPER_PROJ/fmuwrapper/include"
-
-CPP_INPUTS="$WRAPPER_PROJ/fmuwrapper/src/*.cpp"
-
-LIN64_COMP_OPTS="-fpic"
-LIN32_COMP_OPTS="-fpic -m32"
-WIN64_COMP_OPTS=" -DASIO_STANDALONE -D__NO_INLINE__ -D_WIN32_WINNT=0x0501"
-
-LIN32_LINK_OPTS="-m32"
-LIN64_LINK_OPTS=""
-WIN64_LINK_OPTS="-static-libgcc -static-libstdc++"
-WIN64_LINK_LIBS="-lws2_32 -static -lpthread"
-
-#LINUX 32 bits compilation
-printf "\n\n============Linux 32 compilation============="
-cd $LIN32_TMPDIR
-
-COMP_COMMAND_LIN32="g++ $COMMON_COMP_OPTS $LIN32_COMP_OPTS $INCLUDE  $CPP_INPUTS"
-printf "\n\n$COMP_COMMAND_LIN32 \n"
-$COMP_COMMAND_LIN32
-
-LINK_COMMAND_LIN32="g++ $COMMON_LINK_OPTS $LIN32_LINK_OPTS -o $LIB_NAME.so *.o"
-printf "\n\n$LINK_COMMAND_LIN32 \n"
-$LINK_COMMAND_LIN32
-
-if [ ! -f $LIB_NAME.so ] 
-then
-printf "ERROR : failed to compile Linux32 bits FMU Wrapper library \n" 
-exit 1
-fi
-
-cp -f $LIB_NAME.so $EXPORTER_PROJ/resources/linux32/
-
-
-#LINUX 64 bits compilation
-printf "\n\n============Linux 64 compilation============="
-
-cd $LIN64_TMPDIR
-COMP_COMMAND_LIN64="g++ $COMMON_COMP_OPTS $LIN64_COMP_OPTS $INCLUDE  $CPP_INPUTS"
-printf "\n\n$COMP_COMMAND_LIN64 \n"
-$COMP_COMMAND_LIN64
-
-LINK_COMMAND_LIN64="g++ $COMMON_LINK_OPTS $LIN64_LINK_OPTS -o $LIB_NAME.so *.o"
-printf "\n\n$LINK_COMMAND_LIN64 \n"
-$LINK_COMMAND_LIN64
-
-if [ ! -f $LIB_NAME.so ] 
-then
-printf "ERROR : failed to compile Linux64 bits FMU Wrapper library\n" 
-exit 1
-fi
-
-cp -f $LIB_NAME.so $EXPORTER_PROJ/resources/linux64/
-
-#WINDOWS 64 bits compilation
-printf "\n\n============Windows 64 compilation============="
-
-cd $WIN64_TMPDIR
-COMP_COMMAND_WIN64="x86_64-w64-mingw32-g++ $COMMON_COMP_OPTS $WIN64_COMP_OPTS $INCLUDE  $CPP_INPUTS"
-printf "\n\n$COMP_COMMAND_WIN64"
-$COMP_COMMAND_WIN64
-
-LINK_COMMAND_WIN64="x86_64-w64-mingw32-g++ $COMMON_LINK_OPTS $WIN64_LINK_OPTS -o $LIB_NAME.dll *.o $WIN64_LINK_LIBS"
-printf "\n\n$LINK_COMMAND_WIN64 \n"
-$LINK_COMMAND_WIN64
-
-if [ ! -f $LIB_NAME.dll ] 
-then
-printf "ERROR : failed to compile Windows 64 bits FMU Wrapper library \n" 
-exit 1
-fi
-
-cp -f $LIB_NAME.dll $EXPORTER_PROJ/resources/win64/
-
-
-printf "\n=========================================\n Compilation success! :) \n\n\n"
-rm -rf $TMPDIR
-
-
-
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/fmi/fmi2FunctionTypes.h b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/fmi/fmi2FunctionTypes.h
deleted file mode 100644
index fce3939..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/fmi/fmi2FunctionTypes.h
+++ /dev/null
@@ -1,243 +0,0 @@
-#ifndef fmi2FunctionTypes_h
-#define fmi2FunctionTypes_h
-
-#include "fmi2TypesPlatform.h"
-
-/* This header file must be utilized when compiling an FMU or an FMI master.
-   It declares data and function types for FMI 2.0
-
-   Revisions:
-   - Apr.  9, 2014: all prefixes "fmi" renamed to "fmi2" (decision from April 8)
-   - Apr.  3, 2014: Added #include <stddef.h> for size_t definition
-   - Mar. 27, 2014: Added #include "fmiTypesPlatform.h" (#179)
-   - Mar. 26, 2014: Introduced function argument "void" for the functions (#171)
-                      fmiGetTypesPlatformTYPE and fmiGetVersionTYPE
-   - Oct. 11, 2013: Functions of ModelExchange and CoSimulation merged:
-                      fmiInstantiateModelTYPE , fmiInstantiateSlaveTYPE  -> fmiInstantiateTYPE
-                      fmiFreeModelInstanceTYPE, fmiFreeSlaveInstanceTYPE -> fmiFreeInstanceTYPE
-                      fmiEnterModelInitializationModeTYPE, fmiEnterSlaveInitializationModeTYPE -> fmiEnterInitializationModeTYPE
-                      fmiExitModelInitializationModeTYPE , fmiExitSlaveInitializationModeTYPE  -> fmiExitInitializationModeTYPE
-                      fmiTerminateModelTYPE , fmiTerminateSlaveTYPE  -> fmiTerminate
-                      fmiResetSlave -> fmiReset (now also for ModelExchange and not only for CoSimulation)
-                    Functions renamed
-                      fmiUpdateDiscreteStatesTYPE -> fmiNewDiscreteStatesTYPE
-                    Renamed elements of the enumeration fmiEventInfo
-                      upcomingTimeEvent             -> nextEventTimeDefined // due to generic naming scheme: varDefined + var
-                      newUpdateDiscreteStatesNeeded -> newDiscreteStatesNeeded;
-   - June 13, 2013: Changed type fmiEventInfo
-                    Functions removed:
-                       fmiInitializeModelTYPE
-                       fmiEventUpdateTYPE
-                       fmiCompletedEventIterationTYPE
-                       fmiInitializeSlaveTYPE
-                    Functions added:
-                       fmiEnterModelInitializationModeTYPE
-                       fmiExitModelInitializationModeTYPE
-                       fmiEnterEventModeTYPE
-                       fmiUpdateDiscreteStatesTYPE
-                       fmiEnterContinuousTimeModeTYPE
-                       fmiEnterSlaveInitializationModeTYPE;
-                       fmiExitSlaveInitializationModeTYPE;
-   - Feb. 17, 2013: Added third argument to fmiCompletedIntegratorStepTYPE
-                    Changed function name "fmiTerminateType" to "fmiTerminateModelType" (due to #113)
-                    Changed function name "fmiGetNominalContinuousStateTYPE" to
-                                          "fmiGetNominalsOfContinuousStatesTYPE"
-                    Removed fmiGetStateValueReferencesTYPE.
-   - Nov. 14, 2011: First public Version
-
-
-   Copyright � 2011 MODELISAR consortium,
-               2012-2013 Modelica Association Project "FMI"
-               All rights reserved.
-   This file is licensed by the copyright holders under the BSD 2-Clause License
-   (http://www.opensource.org/licenses/bsd-license.html):
-
-   ----------------------------------------------------------------------------
-   Redistribution and use in source and binary forms, with or without
-   modification, are permitted provided that the following conditions are met:
-
-   - Redistributions of source code must retain the above copyright notice,
-     this list of conditions and the following disclaimer.
-   - Redistributions in binary form must reproduce the above copyright notice,
-     this list of conditions and the following disclaimer in the documentation
-     and/or other materials provided with the distribution.
-   - Neither the name of the copyright holders nor the names of its
-     contributors may be used to endorse or promote products derived
-     from this software without specific prior written permission.
-
-   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-   TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-   PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-   CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-   EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-   PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-   OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-   OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-   ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-   ----------------------------------------------------------------------------
-
-   with the extension:
-
-   You may distribute or publicly perform any modification only under the
-   terms of this license.
-   (Note, this means that if you distribute a modified file,
-    the modified file must also be provided under this license).
-*/
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* make sure all compiler use the same alignment policies for structures */
-#if defined _MSC_VER || defined __GNUC__
-#pragma pack(push,8)
-#endif
-
-/* Include stddef.h, in order that size_t etc. is defined */
-#include <stddef.h>
-
-
-/* Type definitions */
-typedef enum {
-    fmi2OK,
-    fmi2Warning,
-    fmi2Discard,
-    fmi2Error,
-    fmi2Fatal,
-    fmi2Pending
-} fmi2Status;
-
-typedef enum {
-    fmi2ModelExchange,
-    fmi2CoSimulation
-} fmi2Type;
-
-typedef enum {
-    fmi2DoStepStatus,
-    fmi2PendingStatus,
-    fmi2LastSuccessfulTime,
-    fmi2Terminated
-} fmi2StatusKind;
-
-typedef void      (*fmi2CallbackLogger)        (fmi2ComponentEnvironment, fmi2String, fmi2Status, fmi2String, fmi2String, ...);
-typedef void*     (*fmi2CallbackAllocateMemory)(size_t, size_t);
-typedef void      (*fmi2CallbackFreeMemory)    (void*);
-typedef void      (*fmi2StepFinished)          (fmi2ComponentEnvironment, fmi2Status);
-
-typedef struct {
-   const fmi2CallbackLogger         logger;
-   const fmi2CallbackAllocateMemory allocateMemory;
-   const fmi2CallbackFreeMemory     freeMemory;
-   const fmi2StepFinished           stepFinished;
-   const fmi2ComponentEnvironment   componentEnvironment;
-} fmi2CallbackFunctions;
-
-typedef struct {
-	 fmi2Boolean newDiscreteStatesNeeded;
-   fmi2Boolean terminateSimulation;
-   fmi2Boolean nominalsOfContinuousStatesChanged;
-   fmi2Boolean valuesOfContinuousStatesChanged;
-   fmi2Boolean nextEventTimeDefined;
-   fmi2Real    nextEventTime;
-} fmi2EventInfo;
-
-
-/* reset alignment policy to the one set before reading this file */
-#if defined _MSC_VER || defined __GNUC__
-#pragma pack(pop)
-#endif
-
-
-/* Define fmi2 function pointer types to simplify dynamic loading */
-
-/***************************************************
-Types for Common Functions
-****************************************************/
-
-/* Inquire version numbers of header files and setting logging status */
-   typedef const char* fmi2GetTypesPlatformTYPE(void);
-   typedef const char* fmi2GetVersionTYPE(void);
-   typedef fmi2Status  fmi2SetDebugLoggingTYPE(fmi2Component, fmi2Boolean, size_t, const fmi2String[]);
-
-/* Creation and destruction of FMU instances and setting debug status */
-   typedef fmi2Component fmi2InstantiateTYPE (fmi2String, fmi2Type, fmi2String, fmi2String, const fmi2CallbackFunctions*, fmi2Boolean, fmi2Boolean);
-   typedef void          fmi2FreeInstanceTYPE(fmi2Component);
-
-/* Enter and exit initialization mode, terminate and reset */
-   typedef fmi2Status fmi2SetupExperimentTYPE        (fmi2Component, fmi2Boolean, fmi2Real, fmi2Real, fmi2Boolean, fmi2Real);
-   typedef fmi2Status fmi2EnterInitializationModeTYPE(fmi2Component);
-   typedef fmi2Status fmi2ExitInitializationModeTYPE (fmi2Component);
-   typedef fmi2Status fmi2TerminateTYPE              (fmi2Component);
-   typedef fmi2Status fmi2ResetTYPE                  (fmi2Component);
-
-/* Getting and setting variable values */
-   typedef fmi2Status fmi2GetRealTYPE   (fmi2Component, const fmi2ValueReference[], size_t, fmi2Real   []);
-   typedef fmi2Status fmi2GetIntegerTYPE(fmi2Component, const fmi2ValueReference[], size_t, fmi2Integer[]);
-   typedef fmi2Status fmi2GetBooleanTYPE(fmi2Component, const fmi2ValueReference[], size_t, fmi2Boolean[]);
-   typedef fmi2Status fmi2GetStringTYPE (fmi2Component, const fmi2ValueReference[], size_t, fmi2String []);
-
-   typedef fmi2Status fmi2SetRealTYPE   (fmi2Component, const fmi2ValueReference[], size_t, const fmi2Real   []);
-   typedef fmi2Status fmi2SetIntegerTYPE(fmi2Component, const fmi2ValueReference[], size_t, const fmi2Integer[]);
-   typedef fmi2Status fmi2SetBooleanTYPE(fmi2Component, const fmi2ValueReference[], size_t, const fmi2Boolean[]);
-   typedef fmi2Status fmi2SetStringTYPE (fmi2Component, const fmi2ValueReference[], size_t, const fmi2String []);
-
-/* Getting and setting the internal FMU state */
-   typedef fmi2Status fmi2GetFMUstateTYPE           (fmi2Component, fmi2FMUstate*);
-   typedef fmi2Status fmi2SetFMUstateTYPE           (fmi2Component, fmi2FMUstate);
-   typedef fmi2Status fmi2FreeFMUstateTYPE          (fmi2Component, fmi2FMUstate*);
-   typedef fmi2Status fmi2SerializedFMUstateSizeTYPE(fmi2Component, fmi2FMUstate, size_t*);
-   typedef fmi2Status fmi2SerializeFMUstateTYPE     (fmi2Component, fmi2FMUstate, fmi2Byte[], size_t);
-   typedef fmi2Status fmi2DeSerializeFMUstateTYPE   (fmi2Component, const fmi2Byte[], size_t, fmi2FMUstate*);
-
-/* Getting partial derivatives */
-   typedef fmi2Status fmi2GetDirectionalDerivativeTYPE(fmi2Component, const fmi2ValueReference[], size_t,
-                                                                   const fmi2ValueReference[], size_t,
-                                                                   const fmi2Real[], fmi2Real[]);
-
-/***************************************************
-Types for Functions for FMI2 for Model Exchange
-****************************************************/
-
-/* Enter and exit the different modes */
-   typedef fmi2Status fmi2EnterEventModeTYPE         (fmi2Component);
-   typedef fmi2Status fmi2NewDiscreteStatesTYPE      (fmi2Component, fmi2EventInfo*);
-   typedef fmi2Status fmi2EnterContinuousTimeModeTYPE(fmi2Component);
-   typedef fmi2Status fmi2CompletedIntegratorStepTYPE(fmi2Component, fmi2Boolean, fmi2Boolean*, fmi2Boolean*);
-
-/* Providing independent variables and re-initialization of caching */
-   typedef fmi2Status fmi2SetTimeTYPE            (fmi2Component, fmi2Real);
-   typedef fmi2Status fmi2SetContinuousStatesTYPE(fmi2Component, const fmi2Real[], size_t);
-
-/* Evaluation of the model equations */
-   typedef fmi2Status fmi2GetDerivativesTYPE               (fmi2Component, fmi2Real[], size_t);
-   typedef fmi2Status fmi2GetEventIndicatorsTYPE           (fmi2Component, fmi2Real[], size_t);
-   typedef fmi2Status fmi2GetContinuousStatesTYPE          (fmi2Component, fmi2Real[], size_t);
-   typedef fmi2Status fmi2GetNominalsOfContinuousStatesTYPE(fmi2Component, fmi2Real[], size_t);
-
-
-/***************************************************
-Types for Functions for FMI2 for Co-Simulation
-****************************************************/
-
-/* Simulating the slave */
-   typedef fmi2Status fmi2SetRealInputDerivativesTYPE (fmi2Component, const fmi2ValueReference [], size_t, const fmi2Integer [], const fmi2Real []);
-   typedef fmi2Status fmi2GetRealOutputDerivativesTYPE(fmi2Component, const fmi2ValueReference [], size_t, const fmi2Integer [], fmi2Real []);
-
-   typedef fmi2Status fmi2DoStepTYPE     (fmi2Component, fmi2Real, fmi2Real, fmi2Boolean);
-   typedef fmi2Status fmi2CancelStepTYPE (fmi2Component);
-
-/* Inquire slave status */
-   typedef fmi2Status fmi2GetStatusTYPE       (fmi2Component, const fmi2StatusKind, fmi2Status* );
-   typedef fmi2Status fmi2GetRealStatusTYPE   (fmi2Component, const fmi2StatusKind, fmi2Real*   );
-   typedef fmi2Status fmi2GetIntegerStatusTYPE(fmi2Component, const fmi2StatusKind, fmi2Integer*);
-   typedef fmi2Status fmi2GetBooleanStatusTYPE(fmi2Component, const fmi2StatusKind, fmi2Boolean*);
-   typedef fmi2Status fmi2GetStringStatusTYPE (fmi2Component, const fmi2StatusKind, fmi2String* );
-
-
-#ifdef __cplusplus
-}  /* end of extern "C" { */
-#endif
-
-#endif /* fmi2FunctionTypes_h */
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/fmi/fmi2Functions.h b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/fmi/fmi2Functions.h
deleted file mode 100644
index 61197be..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/fmi/fmi2Functions.h
+++ /dev/null
@@ -1,333 +0,0 @@
-#ifndef fmi2Functions_h
-#define fmi2Functions_h
-
-/* This header file must be utilized when compiling a FMU.
-   It defines all functions of the
-         FMI 2.0 Model Exchange and Co-Simulation Interface.
-
-   In order to have unique function names even if several FMUs
-   are compiled together (e.g. for embedded systems), every "real" function name
-   is constructed by prepending the function name by "FMI2_FUNCTION_PREFIX".
-   Therefore, the typical usage is:
-
-      #define FMI2_FUNCTION_PREFIX MyModel_
-      #include "fmi2Functions.h"
-
-   As a result, a function that is defined as "fmi2GetDerivatives" in this header file,
-   is actually getting the name "MyModel_fmi2GetDerivatives".
-
-   This only holds if the FMU is shipped in C source code, or is compiled in a
-   static link library. For FMUs compiled in a DLL/sharedObject, the "actual" function
-   names are used and "FMI2_FUNCTION_PREFIX" must not be defined.
-
-   Revisions:
-   - Apr.  9, 2014: all prefixes "fmi" renamed to "fmi2" (decision from April 8)
-   - Mar. 26, 2014: FMI_Export set to empty value if FMI_Export and FMI_FUNCTION_PREFIX
-                    are not defined (#173)
-   - Oct. 11, 2013: Functions of ModelExchange and CoSimulation merged:
-                      fmiInstantiateModel , fmiInstantiateSlave  -> fmiInstantiate
-                      fmiFreeModelInstance, fmiFreeSlaveInstance -> fmiFreeInstance
-                      fmiEnterModelInitializationMode, fmiEnterSlaveInitializationMode -> fmiEnterInitializationMode
-                      fmiExitModelInitializationMode , fmiExitSlaveInitializationMode  -> fmiExitInitializationMode
-                      fmiTerminateModel, fmiTerminateSlave  -> fmiTerminate
-                      fmiResetSlave -> fmiReset (now also for ModelExchange and not only for CoSimulation)
-                    Functions renamed:
-                      fmiUpdateDiscreteStates -> fmiNewDiscreteStates
-   - June 13, 2013: Functions removed:
-                       fmiInitializeModel
-                       fmiEventUpdate
-                       fmiCompletedEventIteration
-                       fmiInitializeSlave
-                    Functions added:
-                       fmiEnterModelInitializationMode
-                       fmiExitModelInitializationMode
-                       fmiEnterEventMode
-                       fmiUpdateDiscreteStates
-                       fmiEnterContinuousTimeMode
-                       fmiEnterSlaveInitializationMode;
-                       fmiExitSlaveInitializationMode;
-   - Feb. 17, 2013: Portability improvements:
-                       o DllExport changed to FMI_Export
-                       o FUNCTION_PREFIX changed to FMI_FUNCTION_PREFIX
-                       o Allow undefined FMI_FUNCTION_PREFIX (meaning no prefix is used)
-                    Changed function name "fmiTerminate" to "fmiTerminateModel" (due to #113)
-                    Changed function name "fmiGetNominalContinuousState" to
-                                          "fmiGetNominalsOfContinuousStates"
-                    Removed fmiGetStateValueReferences.
-   - Nov. 14, 2011: Adapted to FMI 2.0:
-                       o Split into two files (fmiFunctions.h, fmiTypes.h) in order
-                         that code that dynamically loads an FMU can directly
-                         utilize the header files).
-                       o Added C++ encapsulation of C-part, in order that the header
-                         file can be directly utilized in C++ code.
-                       o fmiCallbackFunctions is passed as pointer to fmiInstantiateXXX
-                       o stepFinished within fmiCallbackFunctions has as first
-                         argument "fmiComponentEnvironment" and not "fmiComponent".
-                       o New functions to get and set the complete FMU state
-                         and to compute partial derivatives.
-   - Nov.  4, 2010: Adapted to specification text:
-                       o fmiGetModelTypesPlatform renamed to fmiGetTypesPlatform
-                       o fmiInstantiateSlave: Argument GUID     replaced by fmuGUID
-                                              Argument mimetype replaced by mimeType
-                       o tabs replaced by spaces
-   - Oct. 16, 2010: Functions for FMI for Co-simulation added
-   - Jan. 20, 2010: stateValueReferencesChanged added to struct fmiEventInfo (ticket #27)
-                    (by M. Otter, DLR)
-                    Added WIN32 pragma to define the struct layout (ticket #34)
-                    (by J. Mauss, QTronic)
-   - Jan.  4, 2010: Removed argument intermediateResults from fmiInitialize
-                    Renamed macro fmiGetModelFunctionsVersion to fmiGetVersion
-                    Renamed macro fmiModelFunctionsVersion to fmiVersion
-                    Replaced fmiModel by fmiComponent in decl of fmiInstantiateModel
-                    (by J. Mauss, QTronic)
-   - Dec. 17, 2009: Changed extension "me" to "fmi" (by Martin Otter, DLR).
-   - Dez. 14, 2009: Added eventInfo to meInitialize and added
-                    meGetNominalContinuousStates (by Martin Otter, DLR)
-   - Sept. 9, 2009: Added DllExport (according to Peter Nilsson's suggestion)
-                    (by A. Junghanns, QTronic)
-   - Sept. 9, 2009: Changes according to FMI-meeting on July 21:
-                    meInquireModelTypesVersion     -> meGetModelTypesPlatform
-                    meInquireModelFunctionsVersion -> meGetModelFunctionsVersion
-                    meSetStates                    -> meSetContinuousStates
-                    meGetStates                    -> meGetContinuousStates
-                    removal of meInitializeModelClass
-                    removal of meGetTime
-                    change of arguments of meInstantiateModel
-                    change of arguments of meCompletedIntegratorStep
-                    (by Martin Otter, DLR):
-   - July 19, 2009: Added "me" as prefix to file names (by Martin Otter, DLR).
-   - March 2, 2009: Changed function definitions according to the last design
-                    meeting with additional improvements (by Martin Otter, DLR).
-   - Dec. 3 , 2008: First version by Martin Otter (DLR) and Hans Olsson (Dynasim).
-
-   Copyright � 2008-2011 MODELISAR consortium,
-               2012-2013 Modelica Association Project "FMI"
-               All rights reserved.
-   This file is licensed by the copyright holders under the BSD 2-Clause License
-   (http://www.opensource.org/licenses/bsd-license.html):
-
-   ----------------------------------------------------------------------------
-   Redistribution and use in source and binary forms, with or without
-   modification, are permitted provided that the following conditions are met:
-
-   - Redistributions of source code must retain the above copyright notice,
-     this list of conditions and the following disclaimer.
-   - Redistributions in binary form must reproduce the above copyright notice,
-     this list of conditions and the following disclaimer in the documentation
-     and/or other materials provided with the distribution.
-   - Neither the name of the copyright holders nor the names of its
-     contributors may be used to endorse or promote products derived
-     from this software without specific prior written permission.
-
-   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-   TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-   PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-   CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-   EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-   PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-   OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-   OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-   ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-   ----------------------------------------------------------------------------
-
-   with the extension:
-
-   You may distribute or publicly perform any modification only under the
-   terms of this license.
-   (Note, this means that if you distribute a modified file,
-    the modified file must also be provided under this license).
-*/
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include "fmi2TypesPlatform.h"
-#include "fmi2FunctionTypes.h"
-#include <stdlib.h>
-
-
-/*
-  Export FMI2 API functions on Windows and under GCC.
-  If custom linking is desired then the FMI2_Export must be
-  defined before including this file. For instance,
-  it may be set to __declspec(dllimport).
-*/
-#if !defined(FMI2_Export)
-  #if !defined(FMI2_FUNCTION_PREFIX)
-    #if defined _WIN32 || defined __CYGWIN__
-     /* Note: both gcc & MSVC on Windows support this syntax. */
-        #define FMI2_Export __declspec(dllexport)
-    #else
-      #if __GNUC__ >= 4
-        #define FMI2_Export __attribute__ ((visibility ("default")))
-      #else
-        #define FMI2_Export
-      #endif
-    #endif
-  #else
-    #define FMI2_Export
-  #endif
-#endif
-
-/* Macros to construct the real function name
-   (prepend function name by FMI2_FUNCTION_PREFIX) */
-#if defined(FMI2_FUNCTION_PREFIX)
-  #define fmi2Paste(a,b)     a ## b
-  #define fmi2PasteB(a,b)    fmi2Paste(a,b)
-  #define fmi2FullName(name) fmi2PasteB(FMI2_FUNCTION_PREFIX, name)
-#else
-  #define fmi2FullName(name) name
-#endif
-
-/***************************************************
-Common Functions
-****************************************************/
-#define fmi2GetTypesPlatform         fmi2FullName(fmi2GetTypesPlatform)
-#define fmi2GetVersion               fmi2FullName(fmi2GetVersion)
-#define fmi2SetDebugLogging          fmi2FullName(fmi2SetDebugLogging)
-#define fmi2Instantiate              fmi2FullName(fmi2Instantiate)
-#define fmi2FreeInstance             fmi2FullName(fmi2FreeInstance)
-#define fmi2SetupExperiment          fmi2FullName(fmi2SetupExperiment)
-#define fmi2EnterInitializationMode  fmi2FullName(fmi2EnterInitializationMode)
-#define fmi2ExitInitializationMode   fmi2FullName(fmi2ExitInitializationMode)
-#define fmi2Terminate                fmi2FullName(fmi2Terminate)
-#define fmi2Reset                    fmi2FullName(fmi2Reset)
-#define fmi2GetReal                  fmi2FullName(fmi2GetReal)
-#define fmi2GetInteger               fmi2FullName(fmi2GetInteger)
-#define fmi2GetBoolean               fmi2FullName(fmi2GetBoolean)
-#define fmi2GetString                fmi2FullName(fmi2GetString)
-#define fmi2SetReal                  fmi2FullName(fmi2SetReal)
-#define fmi2SetInteger               fmi2FullName(fmi2SetInteger)
-#define fmi2SetBoolean               fmi2FullName(fmi2SetBoolean)
-#define fmi2SetString                fmi2FullName(fmi2SetString)
-#define fmi2GetFMUstate              fmi2FullName(fmi2GetFMUstate)
-#define fmi2SetFMUstate              fmi2FullName(fmi2SetFMUstate)
-#define fmi2FreeFMUstate             fmi2FullName(fmi2FreeFMUstate)
-#define fmi2SerializedFMUstateSize   fmi2FullName(fmi2SerializedFMUstateSize)
-#define fmi2SerializeFMUstate        fmi2FullName(fmi2SerializeFMUstate)
-#define fmi2DeSerializeFMUstate      fmi2FullName(fmi2DeSerializeFMUstate)
-#define fmi2GetDirectionalDerivative fmi2FullName(fmi2GetDirectionalDerivative)
-
-
-/***************************************************
-Functions for FMI2 for Model Exchange
-****************************************************/
-#define fmi2EnterEventMode                fmi2FullName(fmi2EnterEventMode)
-#define fmi2NewDiscreteStates             fmi2FullName(fmi2NewDiscreteStates)
-#define fmi2EnterContinuousTimeMode       fmi2FullName(fmi2EnterContinuousTimeMode)
-#define fmi2CompletedIntegratorStep       fmi2FullName(fmi2CompletedIntegratorStep)
-#define fmi2SetTime                       fmi2FullName(fmi2SetTime)
-#define fmi2SetContinuousStates           fmi2FullName(fmi2SetContinuousStates)
-#define fmi2GetDerivatives                fmi2FullName(fmi2GetDerivatives)
-#define fmi2GetEventIndicators            fmi2FullName(fmi2GetEventIndicators)
-#define fmi2GetContinuousStates           fmi2FullName(fmi2GetContinuousStates)
-#define fmi2GetNominalsOfContinuousStates fmi2FullName(fmi2GetNominalsOfContinuousStates)
-
-
-/***************************************************
-Functions for FMI2 for Co-Simulation
-****************************************************/
-#define fmi2SetRealInputDerivatives      fmi2FullName(fmi2SetRealInputDerivatives)
-#define fmi2GetRealOutputDerivatives     fmi2FullName(fmi2GetRealOutputDerivatives)
-#define fmi2DoStep                       fmi2FullName(fmi2DoStep)
-#define fmi2CancelStep                   fmi2FullName(fmi2CancelStep)
-#define fmi2GetStatus                    fmi2FullName(fmi2GetStatus)
-#define fmi2GetRealStatus                fmi2FullName(fmi2GetRealStatus)
-#define fmi2GetIntegerStatus             fmi2FullName(fmi2GetIntegerStatus)
-#define fmi2GetBooleanStatus             fmi2FullName(fmi2GetBooleanStatus)
-#define fmi2GetStringStatus              fmi2FullName(fmi2GetStringStatus)
-
-/* Version number */
-#define fmi2Version "2.0"
-
-
-/***************************************************
-Common Functions
-****************************************************/
-
-/* Inquire version numbers of header files */
-   FMI2_Export fmi2GetTypesPlatformTYPE fmi2GetTypesPlatform;
-   FMI2_Export fmi2GetVersionTYPE       fmi2GetVersion;
-   FMI2_Export fmi2SetDebugLoggingTYPE  fmi2SetDebugLogging;
-
-/* Creation and destruction of FMU instances */
-   FMI2_Export fmi2InstantiateTYPE  fmi2Instantiate;
-   FMI2_Export fmi2FreeInstanceTYPE fmi2FreeInstance;
-
-/* Enter and exit initialization mode, terminate and reset */
-   FMI2_Export fmi2SetupExperimentTYPE         fmi2SetupExperiment;
-   FMI2_Export fmi2EnterInitializationModeTYPE fmi2EnterInitializationMode;
-   FMI2_Export fmi2ExitInitializationModeTYPE  fmi2ExitInitializationMode;
-   FMI2_Export fmi2TerminateTYPE               fmi2Terminate;
-   FMI2_Export fmi2ResetTYPE                   fmi2Reset;
-
-/* Getting and setting variables values */
-   FMI2_Export fmi2GetRealTYPE    fmi2GetReal;
-   FMI2_Export fmi2GetIntegerTYPE fmi2GetInteger;
-   FMI2_Export fmi2GetBooleanTYPE fmi2GetBoolean;
-   FMI2_Export fmi2GetStringTYPE  fmi2GetString;
-
-   FMI2_Export fmi2SetRealTYPE    fmi2SetReal;
-   FMI2_Export fmi2SetIntegerTYPE fmi2SetInteger;
-   FMI2_Export fmi2SetBooleanTYPE fmi2SetBoolean;
-   FMI2_Export fmi2SetStringTYPE  fmi2SetString;
-
-/* Getting and setting the internal FMU state */
-   FMI2_Export fmi2GetFMUstateTYPE            fmi2GetFMUstate;
-   FMI2_Export fmi2SetFMUstateTYPE            fmi2SetFMUstate;
-   FMI2_Export fmi2FreeFMUstateTYPE           fmi2FreeFMUstate;
-   FMI2_Export fmi2SerializedFMUstateSizeTYPE fmi2SerializedFMUstateSize;
-   FMI2_Export fmi2SerializeFMUstateTYPE      fmi2SerializeFMUstate;
-   FMI2_Export fmi2DeSerializeFMUstateTYPE    fmi2DeSerializeFMUstate;
-
-/* Getting partial derivatives */
-   FMI2_Export fmi2GetDirectionalDerivativeTYPE fmi2GetDirectionalDerivative;
-
-
-/***************************************************
-Functions for FMI2 for Model Exchange
-****************************************************/
-
-/* Enter and exit the different modes */
-   FMI2_Export fmi2EnterEventModeTYPE               fmi2EnterEventMode;
-   FMI2_Export fmi2NewDiscreteStatesTYPE            fmi2NewDiscreteStates;
-   FMI2_Export fmi2EnterContinuousTimeModeTYPE      fmi2EnterContinuousTimeMode;
-   FMI2_Export fmi2CompletedIntegratorStepTYPE      fmi2CompletedIntegratorStep;
-
-/* Providing independent variables and re-initialization of caching */
-   FMI2_Export fmi2SetTimeTYPE             fmi2SetTime;
-   FMI2_Export fmi2SetContinuousStatesTYPE fmi2SetContinuousStates;
-
-/* Evaluation of the model equations */
-   FMI2_Export fmi2GetDerivativesTYPE                fmi2GetDerivatives;
-   FMI2_Export fmi2GetEventIndicatorsTYPE            fmi2GetEventIndicators;
-   FMI2_Export fmi2GetContinuousStatesTYPE           fmi2GetContinuousStates;
-   FMI2_Export fmi2GetNominalsOfContinuousStatesTYPE fmi2GetNominalsOfContinuousStates;
-
-
-/***************************************************
-Functions for FMI2 for Co-Simulation
-****************************************************/
-
-/* Simulating the slave */
-   FMI2_Export fmi2SetRealInputDerivativesTYPE  fmi2SetRealInputDerivatives;
-   FMI2_Export fmi2GetRealOutputDerivativesTYPE fmi2GetRealOutputDerivatives;
-
-   FMI2_Export fmi2DoStepTYPE     fmi2DoStep;
-   FMI2_Export fmi2CancelStepTYPE fmi2CancelStep;
-
-/* Inquire slave status */
-   FMI2_Export fmi2GetStatusTYPE        fmi2GetStatus;
-   FMI2_Export fmi2GetRealStatusTYPE    fmi2GetRealStatus;
-   FMI2_Export fmi2GetIntegerStatusTYPE fmi2GetIntegerStatus;
-   FMI2_Export fmi2GetBooleanStatusTYPE fmi2GetBooleanStatus;
-   FMI2_Export fmi2GetStringStatusTYPE  fmi2GetStringStatus;
-
-#ifdef __cplusplus
-}  /* end of extern "C" { */
-#endif
-
-#endif /* fmi2Functions_h */
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/fmi/fmi2TypesPlatform.h b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/fmi/fmi2TypesPlatform.h
deleted file mode 100644
index a8771d6..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/fmi/fmi2TypesPlatform.h
+++ /dev/null
@@ -1,115 +0,0 @@
-#ifndef fmi2TypesPlatform_h
-#define fmi2TypesPlatform_h
-
-/* Standard header file to define the argument types of the
-   functions of the Functional Mock-up Interface 2.0.
-   This header file must be utilized both by the model and
-   by the simulation engine.
-
-   Revisions:
-   - Apr.  9, 2014: all prefixes "fmi" renamed to "fmi2" (decision from April 8)
-   - Mar   31, 2014: New datatype fmiChar introduced.
-   - Feb.  17, 2013: Changed fmiTypesPlatform from "standard32" to "default".
-                     Removed fmiUndefinedValueReference since no longer needed
-                     (because every state is defined in ScalarVariables).
-   - March 20, 2012: Renamed from fmiPlatformTypes.h to fmiTypesPlatform.h
-   - Nov.  14, 2011: Use the header file "fmiPlatformTypes.h" for FMI 2.0
-                     both for "FMI for model exchange" and for "FMI for co-simulation"
-                     New types "fmiComponentEnvironment", "fmiState", and "fmiByte".
-                     The implementation of "fmiBoolean" is change from "char" to "int".
-                     The #define "fmiPlatform" changed to "fmiTypesPlatform"
-                     (in order that #define and function call are consistent)
-   - Oct.   4, 2010: Renamed header file from "fmiModelTypes.h" to fmiPlatformTypes.h"
-                     for the co-simulation interface
-   - Jan.   4, 2010: Renamed meModelTypes_h to fmiModelTypes_h (by Mauss, QTronic)
-   - Dec.  21, 2009: Changed "me" to "fmi" and "meModel" to "fmiComponent"
-                     according to meeting on Dec. 18 (by Martin Otter, DLR)
-   - Dec.   6, 2009: Added meUndefinedValueReference (by Martin Otter, DLR)
-   - Sept.  9, 2009: Changes according to FMI-meeting on July 21:
-                     Changed "version" to "platform", "standard" to "standard32",
-                     Added a precise definition of "standard32" as comment
-                     (by Martin Otter, DLR)
-   - July  19, 2009: Added "me" as prefix to file names, added meTrue/meFalse,
-                     and changed meValueReferenced from int to unsigned int
-                     (by Martin Otter, DLR).
-   - March  2, 2009: Moved enums and function pointer definitions to
-                     ModelFunctions.h (by Martin Otter, DLR).
-   - Dec.  3, 2008 : First version by Martin Otter (DLR) and
-                     Hans Olsson (Dynasim).
-
-
-   Copyright © 2008-2011 MODELISAR consortium,
-               2012-2013 Modelica Association Project "FMI"
-               All rights reserved.
-   This file is licensed by the copyright holders under the BSD 2-Clause License
-   (http://www.opensource.org/licenses/bsd-license.html):
-
-   ----------------------------------------------------------------------------
-   Redistribution and use in source and binary forms, with or without
-   modification, are permitted provided that the following conditions are met:
-
-   - Redistributions of source code must retain the above copyright notice,
-     this list of conditions and the following disclaimer.
-   - Redistributions in binary form must reproduce the above copyright notice,
-     this list of conditions and the following disclaimer in the documentation
-     and/or other materials provided with the distribution.
-   - Neither the name of the copyright holders nor the names of its
-     contributors may be used to endorse or promote products derived
-     from this software without specific prior written permission.
-
-   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
-   TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-   PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
-   CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-   EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-   PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-   OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
-   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-   OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-   ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-   ----------------------------------------------------------------------------
-
-   with the extension:
-
-   You may distribute or publicly perform any modification only under the
-   terms of this license.
-   (Note, this means that if you distribute a modified file,
-    the modified file must also be provided under this license).
-*/
-
-/* Platform (unique identification of this header file) */
-#define fmi2TypesPlatform "default"
-
-/* Type definitions of variables passed as arguments
-   Version "default" means:
-
-   fmi2Component           : an opaque object pointer
-   fmi2ComponentEnvironment: an opaque object pointer
-   fmi2FMUstate            : an opaque object pointer
-   fmi2ValueReference      : handle to the value of a variable
-   fmi2Real                : double precision floating-point data type
-   fmi2Integer             : basic signed integer data type
-   fmi2Boolean             : basic signed integer data type
-   fmi2Char                : character data type
-   fmi2String              : a pointer to a vector of fmi2Char characters
-                             ('\0' terminated, UTF8 encoded)
-   fmi2Byte                : smallest addressable unit of the machine, typically one byte.
-*/
-   typedef void*           fmi2Component;               /* Pointer to FMU instance       */
-   typedef void*           fmi2ComponentEnvironment;    /* Pointer to FMU environment    */
-   typedef void*           fmi2FMUstate;                /* Pointer to internal FMU state */
-   typedef unsigned int    fmi2ValueReference;
-   typedef double          fmi2Real   ;
-   typedef int             fmi2Integer;
-   typedef int             fmi2Boolean;
-   typedef char            fmi2Char;
-   typedef const fmi2Char* fmi2String;
-   typedef char            fmi2Byte;
-
-/* Values for fmi2Boolean  */
-#define fmi2True  1
-#define fmi2False 0
-
-
-#endif /* fmi2TypesPlatform_h */
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/fmuwrapper/include/AbstractFMIComponent.h b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/fmuwrapper/include/AbstractFMIComponent.h
deleted file mode 100644
index c84b8cc..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/fmuwrapper/include/AbstractFMIComponent.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * FMIComponent.h
- *
- *  Created on: Feb 23, 2016
- *      Author: seb
- */
-
-#ifndef INFRA_INCLUDE_ABSTRACTFMICOMPONENT_H_
-#define INFRA_INCLUDE_ABSTRACTFMICOMPONENT_H_
-
-#include <inttypes.h>
-
-#include "fmi2FunctionTypes.h"
-#include "fmi2TypesPlatform.h"
-#include <map>
-
-
-class AbstractFMIComponent {
-
-protected :
-	std::map<int32_t, double>  setRealRequests;
-	std::map<int32_t, int32_t>  setIntegerRequests;
-	std::map<int32_t, bool>  setBooleanRequests;
-	std::map<int32_t, std::string>  setStringRequests;
-
-	std::map<int32_t, double>  responseReals;
-	std::map<int32_t, int32_t>  responseIntegers;
-	std::map<int32_t, bool>  responseBooleans;
-	std::map<int32_t, std::string>  responseStrings;
-
-	double nextDate =-1;
-	bool inputChanged =false;
-
-
-public:
-
-		virtual fmi2Status doStep(fmi2Real currentCommunicationTime, fmi2Real stepSize)=0;
-		virtual void terminate()=0;
-
-		virtual void getReal(const fmi2ValueReference valueReference[], size_t numberOfValues,fmi2Real values[]);
-		virtual void getInteger(const fmi2ValueReference valueReference[], size_t numberOfValues,fmi2Integer values[]);
-		virtual void getBoolean(const fmi2ValueReference valueReference[], size_t numberOfValues,fmi2Boolean values[]);
-		virtual void getString(const fmi2ValueReference valueReference[], size_t numberOfValues,fmi2String values[]);
-
-		virtual void setReal(const fmi2ValueReference valueReference[], size_t numberOfValues,const fmi2Real values[]);
-		virtual void setInteger(const fmi2ValueReference valueReference[], size_t numberOfValues,const fmi2Integer values[]);
-		virtual void setBoolean(const fmi2ValueReference valueReference[], size_t numberOfValues,const fmi2Boolean values[]);
-		virtual void setString(const fmi2ValueReference valueReference[], size_t numberOfValues, const fmi2String values[]);
-
-		virtual ~AbstractFMIComponent();
-
-
-};
-
-
-
-
-#endif /* INFRA_INCLUDE_ABSTRACTFMICOMPONENT_H_ */
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/fmuwrapper/include/JSONClient.h b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/fmuwrapper/include/JSONClient.h
deleted file mode 100644
index 449f4d6..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/fmuwrapper/include/JSONClient.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * JSONClient.h
- *
- *  Created on: Mar 24, 2016
- *      Author: seb
- */
-
-#ifndef JSON_INCLUDE_JSONCLIENT_H_
-#define JSON_INCLUDE_JSONCLIENT_H_
-
-#include "asio.hpp"
-#include "rapidjson/rapidjson.h"
-#include "rapidjson/document.h"
-
-#include <memory>
-#include <thread>
-
-class JSONClient {
-
-private  :
-
-
-
-	std::thread * rcpThread;
-	asio::io_service io_service;
-	asio::ip::tcp::socket socket;
-
-	char  hugeStaticBuff[1048576];
-	std::string replaceAll(std::string str, const std::string& from, const std::string& to);
-
-
-
-public:
-
-
-
-
-	JSONClient();
-	virtual ~JSONClient();
-
-	int init(const char * fmuResourceLocation);
-	void sendRequest(rapidjson::Document& request, 	rapidjson::Document& response);
-	void nonBlockingSendRequest(rapidjson::Document& request,rapidjson::Document& response);
-	std::thread& getRcpThread();
-
-
-
-};
-
-#endif /* JSON_INCLUDE_JSONCLIENT_H_ */
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/fmuwrapper/include/JSONFMIComponent.h b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/fmuwrapper/include/JSONFMIComponent.h
deleted file mode 100644
index 482d9b1..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/fmuwrapper/include/JSONFMIComponent.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * JSONFMIComponent.h
- *
- *  Created on: Feb 24, 2016
- *      Author: seb
- */
-
-#ifndef JSON_INCLUDE_JSONFMICOMPONENT_H_
-#define JSON_INCLUDE_JSONFMICOMPONENT_H_
-
-
-#include <AbstractFMIComponent.h>
-#include "JSONClient.h"
-#include "rapidjson/rapidjson.h"
-#include "rapidjson/document.h"
-
-
-
-class JSONFMIComponent : AbstractFMIComponent {
-
-
-private :
-	JSONClient client;
-
-	static const char* REQ_STEP__CURRENT_TIME;
-	static const char* REQ_STEP__STEP_SIZE;
-	static const char* REQ_STEP;
-	static const char* REQ_INIT;
-	static const char* REQ_TERMINATE;
-
-	static const char* REQ_STEP__INTVRS;
-	static const char* REQ_STEP__BOOLVRS;
-	static const char* REQ_STEP__DOUBLEVRS;
-	static const char* REQ_STEP__STRINGVRS;
-
-	static const char* REQ_STEP__INT;
-	static const char* REQ_STEP__BOOL;
-	static const char* REQ_STEP__DOUBLE;
-	static const char* REQ_STEP__STRING;
-
-	static const char* RESP_STATUS;
-	static const char* RESP_NEXT_DATE;
-
-	rapidjson::Document response;
-
-public:
-	JSONFMIComponent();
-	virtual ~JSONFMIComponent();
-
-	int init(const char * fmuResourceLocation);
-	fmi2Status doStep(fmi2Real currentComunicationTime, fmi2Real stepSize);
-	void terminate();
-
-private:
-	fmi2Status  handleResponse();
-
-
-
-};
-
-#endif /*JSON_INCLUDE_JSONFMICOMPONENT_H_*/
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/fmuwrapper/src/AbstractFMIComponent.cpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/fmuwrapper/src/AbstractFMIComponent.cpp
deleted file mode 100644
index 4b5e10e..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/fmuwrapper/src/AbstractFMIComponent.cpp
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * FMIComponent.cpp
- *
- *  Created on: Feb 23, 2016
- *      Author: seb
- */
-
-#include <AbstractFMIComponent.h>
-
-
-AbstractFMIComponent::~AbstractFMIComponent(){}
-
-//fmi2Status AbstractFMIComponent::doStep(fmi2Real currentCommunicationTime, fmi2Real stepSize){
-//	return fmi2Error;
-//};
-//
-//void AbstractFMIComponent::terminate(){
-//}
-
-void AbstractFMIComponent::getReal(const fmi2ValueReference valueReference[], size_t numberOfValues,fmi2Real values[]){
-
-	for (unsigned int index = 0; index < numberOfValues; index++) {
-		if (responseReals.find(valueReference[index]) != responseReals.end()){
-			values[index] = responseReals[valueReference[index]];
-		}
-	}
-}
-void AbstractFMIComponent::getInteger(const fmi2ValueReference valueReference[], size_t numberOfValues,fmi2Integer values[]){
-	for (unsigned int index = 0; index < numberOfValues; index++) {
-		if (responseIntegers.find(valueReference[index]) != responseIntegers.end()){
-			values[index] = responseIntegers[valueReference[index]];
-		}
-	}
-}
-void AbstractFMIComponent::getBoolean(const fmi2ValueReference valueReference[], size_t numberOfValues,fmi2Boolean values[]){
-	for ( unsigned int index = 0; index < numberOfValues; index++) {
-		if (responseBooleans.find(valueReference[index]) != responseBooleans.end()){
-			values[index] = responseBooleans[valueReference[index]];
-		}
-	}
-}
-void AbstractFMIComponent::getString(const fmi2ValueReference valueReference[], size_t numberOfValues,fmi2String values[]){
-	for ( unsigned int index = 0; index < numberOfValues; index++) {
-		if (responseStrings.find(valueReference[index]) != responseStrings.end()){
-			values[index] = responseStrings[valueReference[index]].c_str();
-		}
-	}
-}
-
-void AbstractFMIComponent::setReal(const fmi2ValueReference valueReference[], size_t numberOfValues,const fmi2Real values[]){
-	for (unsigned int index = 0; index < numberOfValues; index++) {
-		setRealRequests[valueReference[index]] = values[index];
-	}
-	inputChanged = true;
-}
-void AbstractFMIComponent::setInteger(const fmi2ValueReference valueReference[], size_t numberOfValues,const fmi2Integer values[]){
-	for (unsigned int index = 0; index < numberOfValues; index++) {
-		setIntegerRequests[valueReference[index]] = values[index];
-	}
-	inputChanged = true;
-}
-void AbstractFMIComponent::setBoolean(const fmi2ValueReference valueReference[], size_t numberOfValues,const fmi2Boolean values[]){
-	for (unsigned int index = 0; index < numberOfValues; index++) {
-		setBooleanRequests[valueReference[index]] = values[index];
-	}
-	inputChanged = true;
-}
-void AbstractFMIComponent::setString(const fmi2ValueReference valueReference[], size_t numberOfValues, const fmi2String values[]){
-	for (unsigned int index = 0; index < numberOfValues; index++) {
-		setStringRequests[valueReference[index]] = values[index];
-	}
-	inputChanged = true;
-}
-
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/fmuwrapper/src/JSONClient.cpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/fmuwrapper/src/JSONClient.cpp
deleted file mode 100644
index eb1ac45..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/fmuwrapper/src/JSONClient.cpp
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * JSONClient.cpp
- *
- *  Created on: Mar 24, 2016
- *      Author: seb
- */
-
-#include "JSONClient.h"
-
-#include <iostream>
-#include "rapidjson/writer.h"
-#include "rapidjson/stringbuffer.h"
-
-#ifdef _WIN32
-#define FILE_SEPARATOR   "\\"
-#define EXE_EXTENSION ".exe"
-#else
-#define FILE_SEPARATOR   "/"
-#define EXE_EXTENSION " "
-#endif
-
-JSONClient::JSONClient() :
-
-		io_service(), socket(io_service) {
-
-}
-
-std::thread& JSONClient::getRcpThread(){
-	return *rcpThread;
-}
-
-void startRCP(std::string cmd){
-	std::cout << cmd << std::endl;
-	int result = std::system(cmd.c_str());
-	if( result != 0){
-
-	}
-}
-
-
-int JSONClient::init(const char * fmuResourceLocation) {
-	asio::ip::tcp::acceptor acceptor(io_service);
-	char* port_str = std::getenv("MOKA_PORT_NUMBER");
-	if (port_str != NULL) {
-		int port_num = std::strtol(port_str, NULL, 10);
-		std::cout << "Waiting for Moka connexion on port " << port_num
-				<< std::endl;
-		asio::ip::tcp::endpoint endpoint(
-				asio::ip::address::from_string("127.0.0.1"), port_num);
-		acceptor.open(endpoint.protocol());
-		acceptor.bind(endpoint);
-		acceptor.listen();
-		acceptor.accept(socket);
-		return 0;
-
-
-	} else {
-		asio::ip::tcp::endpoint endpoint(asio::ip::tcp::v4(), 0);
-		acceptor.open(endpoint.protocol());
-		acceptor.bind(endpoint);
-		acceptor.listen();
-		asio::ip::tcp::endpoint le = acceptor.local_endpoint();
-
-		unsigned short port = le.port();
-
-		//asio::ip::tcp::endpoint endpoint(asio::ip::address::from_string("127.0.0.1"), portNumber);
-
-		std::string locationString(fmuResourceLocation);
-
-		std::stringstream ss;
-
-#ifdef _WIN32
-		locationString = replaceAll(locationString, "file:///","");
-		locationString = replaceAll(locationString, "file://","");
-		locationString = replaceAll(locationString, "/","\\");
-		ss <<locationString <<FILE_SEPARATOR <<"rcp" << FILE_SEPARATOR<<"eclipsec.exe";
-		ss<<" -configuration @none";
-		ss <<" --launcher.ini "<< locationString << FILE_SEPARATOR<<"rcp" << FILE_SEPARATOR<< "fmu_rcp.ini";
-		ss <<" -fmu "<< locationString << FILE_SEPARATOR << ".. -port " << port;
-
-#else
-
-		locationString = replaceAll(locationString, "file://", "");
-		ss << "chmod -R a+x " << locationString << "; ";
-		ss << locationString << FILE_SEPARATOR << "rcp" << FILE_SEPARATOR<< "fmu_rcp";
-		ss << " -fmu " << locationString << FILE_SEPARATOR << ".. -port "<< port;
-#endif
-
-		std::string cmd  = ss.str();
-
-		rcpThread = new std::thread(startRCP,cmd);
-
-		acceptor.accept(socket);
-
-		return 0;
-	}
-
-}
-
-
-std::string JSONClient::replaceAll(std::string str, const std::string& from,
-		const std::string& to) {
-	size_t start_pos = 0;
-	while ((start_pos = str.find(from, start_pos)) != std::string::npos) {
-		str.replace(start_pos, from.length(), to);
-		start_pos += to.length(); // Handles case where 'to' is a substring of 'from'
-	}
-	return str;
-}
-
-JSONClient::~JSONClient() {
-	socket.close();
-
-}
-
-void JSONClient::nonBlockingSendRequest(rapidjson::Document& request,
-		rapidjson::Document& response) {
-
-	// Convert JSON document to string
-	rapidjson::StringBuffer reqbuf;
-	rapidjson::Writer<rapidjson::StringBuffer> writer(reqbuf);
-	request.Accept(writer);
-
-	socket.write_some(asio::buffer(reqbuf.GetString(), reqbuf.GetSize()));
-}
-
-void JSONClient::sendRequest(rapidjson::Document& request,
-		rapidjson::Document& response) {
-
-	nonBlockingSendRequest(request, response);
-
-
-	/* This implementation is working, but is very slow!
-	 * We should investigate why... Finally rather use a static buffer
-	 */
-//	boost::array<char,10> sizeBuff;
-//	socket.read_some(asio::buffer(sizeBuff,10));
-
-//    asio::read(socket, asio::buffer(sizeBuff,10),
-//	                  asio::transfer_at_least(1));
-//  socket.read_some(asio::buffer(sizeBuff));
-//     int messageSize = atoi( sizeBuff.data() );
-
-//	std::vector<char> messageBuff(messageSize);
-//	boost::array<char,256> messageBuff;
-//	socket.read_some(asio::buffer(messageBuff));
-//	socket.read_some(asio::buffer(messageBuff,messageSize));
-//	asio::read(socket, asio::buffer(messageBuff, messageSize),
-//	                  asio::transfer_at_least(1));
-
-
-	size_t nbBytes = socket.read_some(asio::buffer(hugeStaticBuff));
-
-	response.Parse(&hugeStaticBuff[0], nbBytes);
-
-}
-
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/fmuwrapper/src/JSONFMIComponent.cpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/fmuwrapper/src/JSONFMIComponent.cpp
deleted file mode 100644
index 23a8461..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/fmuwrapper/src/JSONFMIComponent.cpp
+++ /dev/null
@@ -1,219 +0,0 @@
-/*
- * ThriftFMIComponent.cpp
- *
- *  Created on: Feb 24, 2016
- *      Author: seb
- */
-
-#include "JSONFMIComponent.h"
-
-#include "JSONClient.h"
-#include <iostream>
-#include <stdint.h>
-
-const char* JSONFMIComponent::REQ_STEP__CURRENT_TIME= "t";
-const char* JSONFMIComponent::REQ_STEP__STEP_SIZE = "h";
-const char* JSONFMIComponent::REQ_STEP= "step";
-const char* JSONFMIComponent::REQ_INIT="ini";
-const char* JSONFMIComponent::REQ_TERMINATE= "ter";
-
-const char* JSONFMIComponent::REQ_STEP__INTVRS= "iv";
-const char* JSONFMIComponent::REQ_STEP__BOOLVRS= "bv";
-const char* JSONFMIComponent::REQ_STEP__DOUBLEVRS= "dv";
-const char* JSONFMIComponent::REQ_STEP__STRINGVRS= "sv";
-
-const char* JSONFMIComponent::REQ_STEP__INT= "i";
-const char* JSONFMIComponent::REQ_STEP__BOOL= "b";
-const char* JSONFMIComponent::REQ_STEP__DOUBLE= "d";
-const char* JSONFMIComponent::REQ_STEP__STRING= "s";
-
-
-
-const char* JSONFMIComponent::RESP_STATUS= "r";
-const char* JSONFMIComponent::RESP_NEXT_DATE= "nd";
-
-
-JSONFMIComponent::JSONFMIComponent():client(), response()
-
-{
-
-}
-
-
-int JSONFMIComponent::init(const char * fmuResourceLocation){
-	int status =  client.init(fmuResourceLocation);
-	if (status == 0){
-			rapidjson::Document request;
-			request.SetObject();
-			rapidjson::Document::AllocatorType& allocator=request.GetAllocator() ;
-
-			rapidjson::Value init(true);
-			request.AddMember(rapidjson::StringRef(REQ_INIT), init, allocator);
-			client.sendRequest(request, response);
-			handleResponse();
-	}
-	return status;
-}
-
-
-JSONFMIComponent::~JSONFMIComponent() {
-
-}
-
-fmi2Status  JSONFMIComponent::doStep(fmi2Real currentCommunicationTime, fmi2Real stepSize){
-	fmi2Status status = fmi2OK;
-	if ( inputChanged|| ((currentCommunicationTime+ stepSize)> nextDate)){
-		inputChanged = false;
-		rapidjson::Document request;
-		request.SetObject();
-		rapidjson::Document::AllocatorType& allocator=request.GetAllocator() ;
-
-
-
-		rapidjson::Value communicationTimeValue(currentCommunicationTime);
-		rapidjson::Value stepSizeValue(stepSize);
-
-
-		request.AddMember(rapidjson::StringRef(REQ_STEP__CURRENT_TIME), communicationTimeValue, allocator);
-		request.AddMember(rapidjson::StringRef(REQ_STEP__STEP_SIZE), stepSizeValue, allocator);
-
-
-		if (!setBooleanRequests.empty()){
-			rapidjson::Value boolVR(rapidjson::kArrayType);
-			rapidjson::Value bools(rapidjson::kArrayType);
-			for( std::map<int,bool>::iterator iterator = setBooleanRequests.begin(); iterator != setBooleanRequests.end(); iterator++) {
-				boolVR.PushBack(iterator->first, allocator);
-				bools.PushBack(iterator->second, allocator);
-			}
-			setBooleanRequests.clear();
-			request.AddMember(rapidjson::StringRef(REQ_STEP__BOOLVRS), boolVR, allocator);
-			request.AddMember(rapidjson::StringRef(REQ_STEP__BOOL), bools, allocator);
-		}
-
-		if (!setRealRequests.empty()){
-			rapidjson::Value realVR(rapidjson::kArrayType);
-			rapidjson::Value reals(rapidjson::kArrayType);
-			for( std::map<int,double>::iterator iterator = setRealRequests.begin(); iterator != setRealRequests.end(); iterator++) {
-				realVR.PushBack(iterator->first, allocator);
-				reals.PushBack(iterator->second, allocator);
-			}
-			setRealRequests.clear();
-			request.AddMember(rapidjson::StringRef(REQ_STEP__DOUBLEVRS), realVR, allocator);
-			request.AddMember(rapidjson::StringRef(REQ_STEP__DOUBLE), reals, allocator);
-
-		}
-		if (!setIntegerRequests.empty()){
-			rapidjson::Value intVR(rapidjson::kArrayType);
-			rapidjson::Value ints(rapidjson::kArrayType);
-			for( std::map<int,int>::iterator iterator = setIntegerRequests.begin(); iterator != setIntegerRequests.end(); iterator++) {
-				intVR.PushBack(iterator->first, allocator);
-				ints.PushBack(iterator->second, allocator);
-			}
-			setIntegerRequests.clear();
-			request.AddMember(rapidjson::StringRef(REQ_STEP__INTVRS),intVR, allocator);
-			request.AddMember(rapidjson::StringRef(REQ_STEP__INT), ints, allocator);
-		}
-		if (!setStringRequests.empty()){
-			rapidjson::Value stringVR(rapidjson::kArrayType);
-			rapidjson::Value strings(rapidjson::kArrayType);
-			for( std::map<int,std::string>::iterator iterator = setStringRequests.begin(); iterator != setStringRequests.end(); iterator++) {
-				stringVR.PushBack(iterator->first, allocator);
-				rapidjson::Value value;
-				value.SetString(iterator->second.c_str(),allocator);
-				strings.PushBack(value, allocator);
-			}
-			setStringRequests.clear();
-			request.AddMember(rapidjson::StringRef(REQ_STEP__STRINGVRS),stringVR, allocator);
-			request.AddMember(rapidjson::StringRef(REQ_STEP__STRING), strings, allocator);
-		}
-
-
-
-
-		 client.sendRequest(request, response);
-
-
-		status = handleResponse();
-	}
-	return status;
-
-}
-
-
-
-void  JSONFMIComponent::terminate(){
-	rapidjson::Document request;
-	request.SetObject();
-	rapidjson::Document::AllocatorType& allocator=request.GetAllocator() ;
-
-	rapidjson::Value terminate(true);
-	request.AddMember(rapidjson::StringRef(REQ_TERMINATE), terminate, allocator);
-	client.nonBlockingSendRequest(request,response );
-	if (client.getRcpThread().joinable()){
-		client.getRcpThread().join();
-	}
-
-}
-
-fmi2Status  JSONFMIComponent::handleResponse(){
-
-	if (response.HasMember(rapidjson::StringRef(REQ_STEP__BOOL))){
-		const rapidjson::Value& boolVRs = response[REQ_STEP__BOOLVRS];
-		const rapidjson::Value& bools = response[REQ_STEP__BOOL];
-
-		for (rapidjson::SizeType i = 0; i < boolVRs.Size(); i++) {
-			responseBooleans[boolVRs[i].GetInt()]= bools[i].GetBool();
-		}
-	}
-
-	if (response.HasMember(rapidjson::StringRef(REQ_STEP__DOUBLE))){
-		const rapidjson::Value& doubleVRs = response[REQ_STEP__DOUBLEVRS];
-		const rapidjson::Value& doubles = response[REQ_STEP__DOUBLE];
-
-		for (rapidjson::SizeType i = 0; i < doubleVRs.Size(); i++) {
-			responseReals[doubleVRs[i].GetInt()]= doubles[i].GetDouble();
-		}
-	}
-
-	if (response.HasMember(rapidjson::StringRef(REQ_STEP__INT))){
-		const rapidjson::Value& intVRs = response[REQ_STEP__INTVRS];
-		const rapidjson::Value& ints = response[REQ_STEP__INT];
-
-		for (rapidjson::SizeType i = 0; i < intVRs.Size(); i++) {
-			responseIntegers[intVRs[i].GetInt()]= ints[i].GetInt();
-		}
-	}
-
-
-	if (response.HasMember(rapidjson::StringRef(REQ_STEP__STRING))  && response.HasMember(rapidjson::StringRef(REQ_STEP__STRINGVRS)) ){
-		const rapidjson::Value& stringVRs = response[REQ_STEP__STRINGVRS];
-		const rapidjson::Value& strings = response[REQ_STEP__STRING];
-
-		//
-		if (strings.IsArray()){
-			for (rapidjson::SizeType i = 0; i < stringVRs.Size(); i++) {
-						responseStrings[stringVRs[i].GetInt()]= strings[i].GetString();
-			}
-		}
-
-	}
-
-	if (response.HasMember(rapidjson::StringRef(RESP_NEXT_DATE))) {
-		const rapidjson::Value& nextDateValue = response[RESP_NEXT_DATE];
-		if (nextDateValue.IsDouble()){
-			nextDate = nextDateValue.GetDouble();
-		}
-	}else {
-		//if we didn't receive a next date new value, if means that either  Moka simulation is finished
-		//either there are only change event. We won't need to make further do step if inputs don't change
-		 nextDate = std::numeric_limits<double>::max();
-	}
-
-	if (response.HasMember(rapidjson::StringRef(RESP_STATUS))) {
-		//TODO complete status parsing
-	}
-	return fmi2Status::fmi2OK;
-
-
-}
-
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/fmuwrapper/src/JSONFMUWrapper.cpp b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/fmuwrapper/src/JSONFMUWrapper.cpp
deleted file mode 100644
index ae7387c..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/fmuwrapper/src/JSONFMUWrapper.cpp
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * fmuWrapper.cpp
- *
- *  Created on: Feb 23, 2016
- *      Author: seb
- */
-
-
-#include <sstream>
-#include <memory>
-
-#include "fmi2Functions.h"
-#include "JSONFMIComponent.h"
-
-using std::string;
-
-
-
-fmi2Component fmi2Instantiate(fmi2String instanceName, fmi2Type fmuType, fmi2String fmuGUID,
-		fmi2String fmuResourceLocation, const fmi2CallbackFunctions* callbacks,
-		fmi2Boolean visible, fmi2Boolean loggingOn) {
-
-	JSONFMIComponent* ret = new JSONFMIComponent();
-	int result = ret->init(fmuResourceLocation);
-	if (result != 0){
-		return NULL;
-	}
-	return ret;
-}
-
-
-
-
-const char* fmi2GetTypesPlatform() {
-	return "default";
-}
-
-const char* fmi2GetVersion() {
-	return "2.0";
-}
-
-fmi2Status fmi2SetDebugLogging(fmi2Component component, fmi2Boolean loggingOn, size_t numberOfCategories,
-		const fmi2String categories[]) {
-	return fmi2OK;
-}
-
-
-
-void fmi2FreeInstance(fmi2Component component) {
-	AbstractFMIComponent* fmiCmp = reinterpret_cast<AbstractFMIComponent*>(component);
-	delete(fmiCmp);
-}
-
-
-fmi2Status fmi2SetupExperiment(fmi2Component component, fmi2Boolean toleranceDefined, fmi2Real tolerance,
-		fmi2Real startTime, fmi2Boolean stopTimeDefined, fmi2Real stopTime) {
-	return fmi2OK;
-}
-
-fmi2Status fmi2EnterInitializationMode(fmi2Component component) {
-	return fmi2OK;
-}
-
-fmi2Status fmi2ExitInitializationMode(fmi2Component component) {
-	return fmi2OK;
-}
-
-fmi2Status fmi2Terminate(fmi2Component component) {
-	AbstractFMIComponent* fmiCmp = reinterpret_cast<AbstractFMIComponent*>(component);
-		fmiCmp->terminate();
-		return fmi2OK;
-}
-
-fmi2Status fmi2Reset(fmi2Component component) {
-	return fmi2OK;
-}
-
-fmi2Status fmi2GetReal(fmi2Component component, const fmi2ValueReference valueReference[], size_t numberOfValues,
-		fmi2Real values[]) {
-	AbstractFMIComponent* fmiCmp = reinterpret_cast<AbstractFMIComponent*>(component);
-	fmiCmp->getReal(valueReference,numberOfValues, values);
-	return fmi2OK;
-}
-
-fmi2Status fmi2GetInteger(fmi2Component component, const fmi2ValueReference valueReference[], size_t numberOfValues,
-		fmi2Integer values[]) {
-	AbstractFMIComponent* fmiCmp = reinterpret_cast<AbstractFMIComponent*>(component);
-	fmiCmp->getInteger(valueReference,numberOfValues, values);
-	return fmi2OK;
-}
-
-fmi2Status fmi2GetBoolean(fmi2Component component, const fmi2ValueReference valueReference[], size_t numberOfValues,
-		fmi2Boolean values[]) {
-	AbstractFMIComponent* fmiCmp = reinterpret_cast<AbstractFMIComponent*>(component);
-	fmiCmp->getBoolean(valueReference,numberOfValues, values);
-	return fmi2OK;
-}
-
-fmi2Status fmi2GetString(fmi2Component component, const fmi2ValueReference valueReference[], size_t numberOfValues,
-		fmi2String values[]) {
-	AbstractFMIComponent* fmiCmp = reinterpret_cast<AbstractFMIComponent*>(component);
-	fmiCmp->getString(valueReference,numberOfValues, values);
-	return fmi2OK;
-}
-
-fmi2Status fmi2SetReal(fmi2Component component, const fmi2ValueReference valueReference[], size_t numberOfValues,
-		const fmi2Real values[]) {
-	AbstractFMIComponent* fmiCmp = reinterpret_cast<AbstractFMIComponent*>(component);
-	fmiCmp->setReal(valueReference,numberOfValues, values);
-	return fmi2OK;
-
-}
-
-fmi2Status fmi2SetInteger(fmi2Component component, const fmi2ValueReference valueReference[], size_t numberOfValues,
-		const fmi2Integer values[]) {
-	AbstractFMIComponent* fmiCmp = reinterpret_cast<AbstractFMIComponent*>(component);
-	fmiCmp->setInteger(valueReference,numberOfValues, values);
-	return fmi2OK;
-
-}
-
-fmi2Status fmi2SetBoolean(fmi2Component component, const fmi2ValueReference valueReference[], size_t numberOfValues,
-		const fmi2Boolean values[]) {
-	AbstractFMIComponent* fmiCmp = reinterpret_cast<AbstractFMIComponent*>(component);
-	fmiCmp->setBoolean(valueReference,numberOfValues, values);
-	return fmi2OK;
-
-}
-
-fmi2Status fmi2SetString(fmi2Component component, const fmi2ValueReference valueReference[], size_t numberOfValues,
-		const fmi2String values[]) {
-	AbstractFMIComponent* fmiCmp = reinterpret_cast<AbstractFMIComponent*>(component);
-	fmiCmp->setString(valueReference,numberOfValues, values);
-	return fmi2OK;
-
-}
-
-fmi2Status fmi2GetFMUstate(fmi2Component component, fmi2FMUstate* state) {
-	return fmi2Error;
-}
-
-fmi2Status fmi2SetFMUstate(fmi2Component component, fmi2FMUstate state) {
-	return fmi2Error;
-}
-
-fmi2Status fmi2FreeFMUstate(fmi2Component component, fmi2FMUstate* state) {
-	return fmi2Error;
-}
-
-fmi2Status fmi2SerializedFMUstateSize(fmi2Component component, fmi2FMUstate, size_t* stateSize) {
-	return fmi2Error;
-}
-
-fmi2Status fmi2SerializeFMUstate(fmi2Component component, fmi2FMUstate state, fmi2Byte serializedState[],
-		size_t serializedStateSize) {
-	return fmi2Error;
-}
-
-fmi2Status fmi2DeSerializeFMUstate(fmi2Component component, const fmi2Byte serializedState[], size_t size,
-		fmi2FMUstate* state) {
-	return fmi2Error;
-}
-
-fmi2Status fmi2GetDirectionalDerivative(fmi2Component component, const fmi2ValueReference unknownValueReferences[],
-		size_t numberOfUnknowns, const fmi2ValueReference knownValueReferences[],
-		size_t numberOfKnowns, const fmi2Real knownDifferential[],
-		fmi2Real unknownDifferential[]) {
-	return fmi2Error;
-}
-
-fmi2Status fmi2SetRealInputDerivatives(fmi2Component component, const fmi2ValueReference valueReferences[],
-		size_t numberOfValueReferences, const fmi2Integer orders[], const fmi2Real values[]) {
-	return fmi2Error;
-}
-
-fmi2Status fmi2GetRealOutputDerivatives(fmi2Component component, const fmi2ValueReference valueReference[],
-		size_t numberOfValues, const fmi2Integer order[], fmi2Real values[]) {
-	return fmi2Error;
-}
-
-fmi2Status fmi2DoStep(fmi2Component component, fmi2Real currentComunicationTime, fmi2Real stepSize,
-		fmi2Boolean noSetFmuFmuStatePriorToCurrentPoint) {
-
-	AbstractFMIComponent* fmiCmp = reinterpret_cast<AbstractFMIComponent*>(component);
-	fmiCmp->doStep(currentComunicationTime, stepSize);
-	return fmi2OK;
-}
-
-fmi2Status fmi2CancelStep(fmi2Component component) {
-
-	return fmi2OK;
-}
-
-fmi2Status fmi2GetStatus(fmi2Component component, const fmi2StatusKind kind, fmi2Status* status) {
-	return fmi2Error;
-}
-
-fmi2Status fmi2GetRealStatus(fmi2Component component, const fmi2StatusKind kind, fmi2Real* value) {
-	return fmi2Error;
-}
-
-fmi2Status fmi2GetIntegerStatus(fmi2Component component, const fmi2StatusKind kind, fmi2Integer* value) {
-	return fmi2Error;
-}
-
-fmi2Status fmi2GetBooleanStatus(fmi2Component component, const fmi2StatusKind kind, fmi2Boolean* value) {
-	return fmi2Error;
-}
-
-fmi2Status fmi2GetStringStatus(fmi2Component component, const fmi2StatusKind kind, fmi2String* value) {
-	return fmi2Error;
-}
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/allocators.h b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/allocators.h
deleted file mode 100644
index c705969..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/allocators.h
+++ /dev/null
@@ -1,263 +0,0 @@
-// Tencent is pleased to support the open source community by making RapidJSON available.
-// 
-// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
-//
-// Licensed under the MIT License (the "License"); you may not use this file except
-// in compliance with the License. You may obtain a copy of the License at
-//
-// http://opensource.org/licenses/MIT
-//
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
-// specific language governing permissions and limitations under the License.
-
-#ifndef RAPIDJSON_ALLOCATORS_H_
-#define RAPIDJSON_ALLOCATORS_H_
-
-#include "rapidjson.h"
-
-RAPIDJSON_NAMESPACE_BEGIN
-
-///////////////////////////////////////////////////////////////////////////////
-// Allocator
-
-/*! \class rapidjson::Allocator
-    \brief Concept for allocating, resizing and freeing memory block.
-    
-    Note that Malloc() and Realloc() are non-static but Free() is static.
-    
-    So if an allocator need to support Free(), it needs to put its pointer in 
-    the header of memory block.
-
-\code
-concept Allocator {
-    static const bool kNeedFree;    //!< Whether this allocator needs to call Free().
-
-    // Allocate a memory block.
-    // \param size of the memory block in bytes.
-    // \returns pointer to the memory block.
-    void* Malloc(size_t size);
-
-    // Resize a memory block.
-    // \param originalPtr The pointer to current memory block. Null pointer is permitted.
-    // \param originalSize The current size in bytes. (Design issue: since some allocator may not book-keep this, explicitly pass to it can save memory.)
-    // \param newSize the new size in bytes.
-    void* Realloc(void* originalPtr, size_t originalSize, size_t newSize);
-
-    // Free a memory block.
-    // \param pointer to the memory block. Null pointer is permitted.
-    static void Free(void *ptr);
-};
-\endcode
-*/
-
-///////////////////////////////////////////////////////////////////////////////
-// CrtAllocator
-
-//! C-runtime library allocator.
-/*! This class is just wrapper for standard C library memory routines.
-    \note implements Allocator concept
-*/
-class CrtAllocator {
-public:
-    static const bool kNeedFree = true;
-    void* Malloc(size_t size) { 
-        if (size) //  behavior of malloc(0) is implementation defined.
-            return std::malloc(size);
-        else
-            return NULL; // standardize to returning NULL.
-    }
-    void* Realloc(void* originalPtr, size_t originalSize, size_t newSize) {
-        (void)originalSize;
-        if (newSize == 0) {
-            std::free(originalPtr);
-            return NULL;
-        }
-        return std::realloc(originalPtr, newSize);
-    }
-    static void Free(void *ptr) { std::free(ptr); }
-};
-
-///////////////////////////////////////////////////////////////////////////////
-// MemoryPoolAllocator
-
-//! Default memory allocator used by the parser and DOM.
-/*! This allocator allocate memory blocks from pre-allocated memory chunks. 
-
-    It does not free memory blocks. And Realloc() only allocate new memory.
-
-    The memory chunks are allocated by BaseAllocator, which is CrtAllocator by default.
-
-    User may also supply a buffer as the first chunk.
-
-    If the user-buffer is full then additional chunks are allocated by BaseAllocator.
-
-    The user-buffer is not deallocated by this allocator.
-
-    \tparam BaseAllocator the allocator type for allocating memory chunks. Default is CrtAllocator.
-    \note implements Allocator concept
-*/
-template <typename BaseAllocator = CrtAllocator>
-class MemoryPoolAllocator {
-public:
-    static const bool kNeedFree = false;    //!< Tell users that no need to call Free() with this allocator. (concept Allocator)
-
-    //! Constructor with chunkSize.
-    /*! \param chunkSize The size of memory chunk. The default is kDefaultChunkSize.
-        \param baseAllocator The allocator for allocating memory chunks.
-    */
-    MemoryPoolAllocator(size_t chunkSize = kDefaultChunkCapacity, BaseAllocator* baseAllocator = 0) : 
-        chunkHead_(0), chunk_capacity_(chunkSize), userBuffer_(0), baseAllocator_(baseAllocator), ownBaseAllocator_(0)
-    {
-    }
-
-    //! Constructor with user-supplied buffer.
-    /*! The user buffer will be used firstly. When it is full, memory pool allocates new chunk with chunk size.
-
-        The user buffer will not be deallocated when this allocator is destructed.
-
-        \param buffer User supplied buffer.
-        \param size Size of the buffer in bytes. It must at least larger than sizeof(ChunkHeader).
-        \param chunkSize The size of memory chunk. The default is kDefaultChunkSize.
-        \param baseAllocator The allocator for allocating memory chunks.
-    */
-    MemoryPoolAllocator(void *buffer, size_t size, size_t chunkSize = kDefaultChunkCapacity, BaseAllocator* baseAllocator = 0) :
-        chunkHead_(0), chunk_capacity_(chunkSize), userBuffer_(buffer), baseAllocator_(baseAllocator), ownBaseAllocator_(0)
-    {
-        RAPIDJSON_ASSERT(buffer != 0);
-        RAPIDJSON_ASSERT(size > sizeof(ChunkHeader));
-        chunkHead_ = reinterpret_cast<ChunkHeader*>(buffer);
-        chunkHead_->capacity = size - sizeof(ChunkHeader);
-        chunkHead_->size = 0;
-        chunkHead_->next = 0;
-    }
-
-    //! Destructor.
-    /*! This deallocates all memory chunks, excluding the user-supplied buffer.
-    */
-    ~MemoryPoolAllocator() {
-        Clear();
-        RAPIDJSON_DELETE(ownBaseAllocator_);
-    }
-
-    //! Deallocates all memory chunks, excluding the user-supplied buffer.
-    void Clear() {
-        while (chunkHead_ && chunkHead_ != userBuffer_) {
-            ChunkHeader* next = chunkHead_->next;
-            baseAllocator_->Free(chunkHead_);
-            chunkHead_ = next;
-        }
-        if (chunkHead_ && chunkHead_ == userBuffer_)
-            chunkHead_->size = 0; // Clear user buffer
-    }
-
-    //! Computes the total capacity of allocated memory chunks.
-    /*! \return total capacity in bytes.
-    */
-    size_t Capacity() const {
-        size_t capacity = 0;
-        for (ChunkHeader* c = chunkHead_; c != 0; c = c->next)
-            capacity += c->capacity;
-        return capacity;
-    }
-
-    //! Computes the memory blocks allocated.
-    /*! \return total used bytes.
-    */
-    size_t Size() const {
-        size_t size = 0;
-        for (ChunkHeader* c = chunkHead_; c != 0; c = c->next)
-            size += c->size;
-        return size;
-    }
-
-    //! Allocates a memory block. (concept Allocator)
-    void* Malloc(size_t size) {
-        if (!size)
-            return NULL;
-
-        size = RAPIDJSON_ALIGN(size);
-        if (chunkHead_ == 0 || chunkHead_->size + size > chunkHead_->capacity)
-            AddChunk(chunk_capacity_ > size ? chunk_capacity_ : size);
-
-        void *buffer = reinterpret_cast<char *>(chunkHead_) + RAPIDJSON_ALIGN(sizeof(ChunkHeader)) + chunkHead_->size;
-        chunkHead_->size += size;
-        return buffer;
-    }
-
-    //! Resizes a memory block (concept Allocator)
-    void* Realloc(void* originalPtr, size_t originalSize, size_t newSize) {
-        if (originalPtr == 0)
-            return Malloc(newSize);
-
-        if (newSize == 0)
-            return NULL;
-
-        originalSize = RAPIDJSON_ALIGN(originalSize);
-        newSize = RAPIDJSON_ALIGN(newSize);
-
-        // Do not shrink if new size is smaller than original
-        if (originalSize >= newSize)
-            return originalPtr;
-
-        // Simply expand it if it is the last allocation and there is sufficient space
-        if (originalPtr == reinterpret_cast<char *>(chunkHead_) + RAPIDJSON_ALIGN(sizeof(ChunkHeader)) + chunkHead_->size - originalSize) {
-            size_t increment = static_cast<size_t>(newSize - originalSize);
-            if (chunkHead_->size + increment <= chunkHead_->capacity) {
-                chunkHead_->size += increment;
-                return originalPtr;
-            }
-        }
-
-        // Realloc process: allocate and copy memory, do not free original buffer.
-        void* newBuffer = Malloc(newSize);
-        RAPIDJSON_ASSERT(newBuffer != 0);   // Do not handle out-of-memory explicitly.
-        if (originalSize)
-            std::memcpy(newBuffer, originalPtr, originalSize);
-        return newBuffer;
-    }
-
-    //! Frees a memory block (concept Allocator)
-    static void Free(void *ptr) { (void)ptr; } // Do nothing
-
-private:
-    //! Copy constructor is not permitted.
-    MemoryPoolAllocator(const MemoryPoolAllocator& rhs) /* = delete */;
-    //! Copy assignment operator is not permitted.
-    MemoryPoolAllocator& operator=(const MemoryPoolAllocator& rhs) /* = delete */;
-
-    //! Creates a new chunk.
-    /*! \param capacity Capacity of the chunk in bytes.
-    */
-    void AddChunk(size_t capacity) {
-        if (!baseAllocator_)
-            ownBaseAllocator_ = baseAllocator_ = RAPIDJSON_NEW(BaseAllocator());
-        ChunkHeader* chunk = reinterpret_cast<ChunkHeader*>(baseAllocator_->Malloc(RAPIDJSON_ALIGN(sizeof(ChunkHeader)) + capacity));
-        chunk->capacity = capacity;
-        chunk->size = 0;
-        chunk->next = chunkHead_;
-        chunkHead_ =  chunk;
-    }
-
-    static const int kDefaultChunkCapacity = 64 * 1024; //!< Default chunk capacity.
-
-    //! Chunk header for perpending to each chunk.
-    /*! Chunks are stored as a singly linked list.
-    */
-    struct ChunkHeader {
-        size_t capacity;    //!< Capacity of the chunk in bytes (excluding the header itself).
-        size_t size;        //!< Current size of allocated memory in bytes.
-        ChunkHeader *next;  //!< Next chunk in the linked list.
-    };
-
-    ChunkHeader *chunkHead_;    //!< Head of the chunk linked-list. Only the head chunk serves allocation.
-    size_t chunk_capacity_;     //!< The minimum capacity of chunk when they are allocated.
-    void *userBuffer_;          //!< User supplied buffer.
-    BaseAllocator* baseAllocator_;  //!< base allocator for allocating memory chunks.
-    BaseAllocator* ownBaseAllocator_;   //!< base allocator created by this object.
-};
-
-RAPIDJSON_NAMESPACE_END
-
-#endif // RAPIDJSON_ENCODINGS_H_
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/document.h b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/document.h
deleted file mode 100644
index 855543e..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/document.h
+++ /dev/null
@@ -1,2572 +0,0 @@
-// Tencent is pleased to support the open source community by making RapidJSON available.
-// 
-// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
-//
-// Licensed under the MIT License (the "License"); you may not use this file except
-// in compliance with the License. You may obtain a copy of the License at
-//
-// http://opensource.org/licenses/MIT
-//
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
-// specific language governing permissions and limitations under the License.
-
-#ifndef RAPIDJSON_DOCUMENT_H_
-#define RAPIDJSON_DOCUMENT_H_
-
-/*! \file document.h */
-
-#include "reader.h"
-#include "internal/meta.h"
-#include "internal/strfunc.h"
-#include "memorystream.h"
-#include "encodedstream.h"
-#include <new>      // placement new
-
-#ifdef _MSC_VER
-RAPIDJSON_DIAG_PUSH
-RAPIDJSON_DIAG_OFF(4127) // conditional expression is constant
-#endif
-
-#ifdef __clang__
-RAPIDJSON_DIAG_PUSH
-RAPIDJSON_DIAG_OFF(padded)
-RAPIDJSON_DIAG_OFF(switch-enum)
-RAPIDJSON_DIAG_OFF(c++98-compat)
-#endif
-
-#ifdef __GNUC__
-RAPIDJSON_DIAG_PUSH
-RAPIDJSON_DIAG_OFF(effc++)
-#endif
-
-#ifndef RAPIDJSON_NOMEMBERITERATORCLASS
-#include <iterator> // std::iterator, std::random_access_iterator_tag
-#endif
-
-#if RAPIDJSON_HAS_CXX11_RVALUE_REFS
-#include <utility> // std::move
-#endif
-
-RAPIDJSON_NAMESPACE_BEGIN
-
-// Forward declaration.
-template <typename Encoding, typename Allocator>
-class GenericValue;
-
-template <typename Encoding, typename Allocator, typename StackAllocator>
-class GenericDocument;
-
-//! Name-value pair in a JSON object value.
-/*!
-    This class was internal to GenericValue. It used to be a inner struct.
-    But a compiler (IBM XL C/C++ for AIX) have reported to have problem with that so it moved as a namespace scope struct.
-    https://code.google.com/p/rapidjson/issues/detail?id=64
-*/
-template <typename Encoding, typename Allocator> 
-struct GenericMember { 
-    GenericValue<Encoding, Allocator> name;     //!< name of member (must be a string)
-    GenericValue<Encoding, Allocator> value;    //!< value of member.
-};
-
-///////////////////////////////////////////////////////////////////////////////
-// GenericMemberIterator
-
-#ifndef RAPIDJSON_NOMEMBERITERATORCLASS
-
-//! (Constant) member iterator for a JSON object value
-/*!
-    \tparam Const Is this a constant iterator?
-    \tparam Encoding    Encoding of the value. (Even non-string values need to have the same encoding in a document)
-    \tparam Allocator   Allocator type for allocating memory of object, array and string.
-
-    This class implements a Random Access Iterator for GenericMember elements
-    of a GenericValue, see ISO/IEC 14882:2003(E) C++ standard, 24.1 [lib.iterator.requirements].
-
-    \note This iterator implementation is mainly intended to avoid implicit
-        conversions from iterator values to \c NULL,
-        e.g. from GenericValue::FindMember.
-
-    \note Define \c RAPIDJSON_NOMEMBERITERATORCLASS to fall back to a
-        pointer-based implementation, if your platform doesn't provide
-        the C++ <iterator> header.
-
-    \see GenericMember, GenericValue::MemberIterator, GenericValue::ConstMemberIterator
- */
-template <bool Const, typename Encoding, typename Allocator>
-class GenericMemberIterator
-    : public std::iterator<std::random_access_iterator_tag
-        , typename internal::MaybeAddConst<Const,GenericMember<Encoding,Allocator> >::Type> {
-
-    friend class GenericValue<Encoding,Allocator>;
-    template <bool, typename, typename> friend class GenericMemberIterator;
-
-    typedef GenericMember<Encoding,Allocator> PlainType;
-    typedef typename internal::MaybeAddConst<Const,PlainType>::Type ValueType;
-    typedef std::iterator<std::random_access_iterator_tag,ValueType> BaseType;
-
-public:
-    //! Iterator type itself
-    typedef GenericMemberIterator Iterator;
-    //! Constant iterator type
-    typedef GenericMemberIterator<true,Encoding,Allocator>  ConstIterator;
-    //! Non-constant iterator type
-    typedef GenericMemberIterator<false,Encoding,Allocator> NonConstIterator;
-
-    //! Pointer to (const) GenericMember
-    typedef typename BaseType::pointer         Pointer;
-    //! Reference to (const) GenericMember
-    typedef typename BaseType::reference       Reference;
-    //! Signed integer type (e.g. \c ptrdiff_t)
-    typedef typename BaseType::difference_type DifferenceType;
-
-    //! Default constructor (singular value)
-    /*! Creates an iterator pointing to no element.
-        \note All operations, except for comparisons, are undefined on such values.
-     */
-    GenericMemberIterator() : ptr_() {}
-
-    //! Iterator conversions to more const
-    /*!
-        \param it (Non-const) iterator to copy from
-
-        Allows the creation of an iterator from another GenericMemberIterator
-        that is "less const".  Especially, creating a non-constant iterator
-        from a constant iterator are disabled:
-        \li const -> non-const (not ok)
-        \li const -> const (ok)
-        \li non-const -> const (ok)
-        \li non-const -> non-const (ok)
-
-        \note If the \c Const template parameter is already \c false, this
-            constructor effectively defines a regular copy-constructor.
-            Otherwise, the copy constructor is implicitly defined.
-    */
-    GenericMemberIterator(const NonConstIterator & it) : ptr_(it.ptr_) {}
-    Iterator& operator=(const NonConstIterator & it) { ptr_ = it.ptr_; return *this; }
-
-    //! @name stepping
-    //@{
-    Iterator& operator++(){ ++ptr_; return *this; }
-    Iterator& operator--(){ --ptr_; return *this; }
-    Iterator  operator++(int){ Iterator old(*this); ++ptr_; return old; }
-    Iterator  operator--(int){ Iterator old(*this); --ptr_; return old; }
-    //@}
-
-    //! @name increment/decrement
-    //@{
-    Iterator operator+(DifferenceType n) const { return Iterator(ptr_+n); }
-    Iterator operator-(DifferenceType n) const { return Iterator(ptr_-n); }
-
-    Iterator& operator+=(DifferenceType n) { ptr_+=n; return *this; }
-    Iterator& operator-=(DifferenceType n) { ptr_-=n; return *this; }
-    //@}
-
-    //! @name relations
-    //@{
-    bool operator==(ConstIterator that) const { return ptr_ == that.ptr_; }
-    bool operator!=(ConstIterator that) const { return ptr_ != that.ptr_; }
-    bool operator<=(ConstIterator that) const { return ptr_ <= that.ptr_; }
-    bool operator>=(ConstIterator that) const { return ptr_ >= that.ptr_; }
-    bool operator< (ConstIterator that) const { return ptr_ < that.ptr_; }
-    bool operator> (ConstIterator that) const { return ptr_ > that.ptr_; }
-    //@}
-
-    //! @name dereference
-    //@{
-    Reference operator*() const { return *ptr_; }
-    Pointer   operator->() const { return ptr_; }
-    Reference operator[](DifferenceType n) const { return ptr_[n]; }
-    //@}
-
-    //! Distance
-    DifferenceType operator-(ConstIterator that) const { return ptr_-that.ptr_; }
-
-private:
-    //! Internal constructor from plain pointer
-    explicit GenericMemberIterator(Pointer p) : ptr_(p) {}
-
-    Pointer ptr_; //!< raw pointer
-};
-
-#else // RAPIDJSON_NOMEMBERITERATORCLASS
-
-// class-based member iterator implementation disabled, use plain pointers
-
-template <bool Const, typename Encoding, typename Allocator>
-struct GenericMemberIterator;
-
-//! non-const GenericMemberIterator
-template <typename Encoding, typename Allocator>
-struct GenericMemberIterator<false,Encoding,Allocator> {
-    //! use plain pointer as iterator type
-    typedef GenericMember<Encoding,Allocator>* Iterator;
-};
-//! const GenericMemberIterator
-template <typename Encoding, typename Allocator>
-struct GenericMemberIterator<true,Encoding,Allocator> {
-    //! use plain const pointer as iterator type
-    typedef const GenericMember<Encoding,Allocator>* Iterator;
-};
-
-#endif // RAPIDJSON_NOMEMBERITERATORCLASS
-
-///////////////////////////////////////////////////////////////////////////////
-// GenericStringRef
-
-//! Reference to a constant string (not taking a copy)
-/*!
-    \tparam CharType character type of the string
-
-    This helper class is used to automatically infer constant string
-    references for string literals, especially from \c const \b (!)
-    character arrays.
-
-    The main use is for creating JSON string values without copying the
-    source string via an \ref Allocator.  This requires that the referenced
-    string pointers have a sufficient lifetime, which exceeds the lifetime
-    of the associated GenericValue.
-
-    \b Example
-    \code
-    Value v("foo");   // ok, no need to copy & calculate length
-    const char foo[] = "foo";
-    v.SetString(foo); // ok
-
-    const char* bar = foo;
-    // Value x(bar); // not ok, can't rely on bar's lifetime
-    Value x(StringRef(bar)); // lifetime explicitly guaranteed by user
-    Value y(StringRef(bar, 3));  // ok, explicitly pass length
-    \endcode
-
-    \see StringRef, GenericValue::SetString
-*/
-template<typename CharType>
-struct GenericStringRef {
-    typedef CharType Ch; //!< character type of the string
-
-    //! Create string reference from \c const character array
-#ifndef __clang__ // -Wdocumentation
-    /*!
-        This constructor implicitly creates a constant string reference from
-        a \c const character array.  It has better performance than
-        \ref StringRef(const CharType*) by inferring the string \ref length
-        from the array length, and also supports strings containing null
-        characters.
-
-        \tparam N length of the string, automatically inferred
-
-        \param str Constant character array, lifetime assumed to be longer
-            than the use of the string in e.g. a GenericValue
-
-        \post \ref s == str
-
-        \note Constant complexity.
-        \note There is a hidden, private overload to disallow references to
-            non-const character arrays to be created via this constructor.
-            By this, e.g. function-scope arrays used to be filled via
-            \c snprintf are excluded from consideration.
-            In such cases, the referenced string should be \b copied to the
-            GenericValue instead.
-     */
-#endif
-    template<SizeType N>
-    GenericStringRef(const CharType (&str)[N]) RAPIDJSON_NOEXCEPT
-        : s(str), length(N-1) {}
-
-    //! Explicitly create string reference from \c const character pointer
-#ifndef __clang__ // -Wdocumentation
-    /*!
-        This constructor can be used to \b explicitly  create a reference to
-        a constant string pointer.
-
-        \see StringRef(const CharType*)
-
-        \param str Constant character pointer, lifetime assumed to be longer
-            than the use of the string in e.g. a GenericValue
-
-        \post \ref s == str
-
-        \note There is a hidden, private overload to disallow references to
-            non-const character arrays to be created via this constructor.
-            By this, e.g. function-scope arrays used to be filled via
-            \c snprintf are excluded from consideration.
-            In such cases, the referenced string should be \b copied to the
-            GenericValue instead.
-     */
-#endif
-    explicit GenericStringRef(const CharType* str)
-        : s(str), length(internal::StrLen(str)){ RAPIDJSON_ASSERT(s != 0); }
-
-    //! Create constant string reference from pointer and length
-#ifndef __clang__ // -Wdocumentation
-    /*! \param str constant string, lifetime assumed to be longer than the use of the string in e.g. a GenericValue
-        \param len length of the string, excluding the trailing NULL terminator
-
-        \post \ref s == str && \ref length == len
-        \note Constant complexity.
-     */
-#endif
-    GenericStringRef(const CharType* str, SizeType len)
-        : s(str), length(len) { RAPIDJSON_ASSERT(s != 0); }
-
-    //! implicit conversion to plain CharType pointer
-    operator const Ch *() const { return s; }
-
-    const Ch* const s; //!< plain CharType pointer
-    const SizeType length; //!< length of the string (excluding the trailing NULL terminator)
-
-private:
-    //! Disallow construction from non-const array
-    template<SizeType N>
-    GenericStringRef(CharType (&str)[N]) /* = delete */;
-};
-
-//! Mark a character pointer as constant string
-/*! Mark a plain character pointer as a "string literal".  This function
-    can be used to avoid copying a character string to be referenced as a
-    value in a JSON GenericValue object, if the string's lifetime is known
-    to be valid long enough.
-    \tparam CharType Character type of the string
-    \param str Constant string, lifetime assumed to be longer than the use of the string in e.g. a GenericValue
-    \return GenericStringRef string reference object
-    \relatesalso GenericStringRef
-
-    \see GenericValue::GenericValue(StringRefType), GenericValue::operator=(StringRefType), GenericValue::SetString(StringRefType), GenericValue::PushBack(StringRefType, Allocator&), GenericValue::AddMember
-*/
-template<typename CharType>
-inline GenericStringRef<CharType> StringRef(const CharType* str) {
-    return GenericStringRef<CharType>(str, internal::StrLen(str));
-}
-
-//! Mark a character pointer as constant string
-/*! Mark a plain character pointer as a "string literal".  This function
-    can be used to avoid copying a character string to be referenced as a
-    value in a JSON GenericValue object, if the string's lifetime is known
-    to be valid long enough.
-
-    This version has better performance with supplied length, and also
-    supports string containing null characters.
-
-    \tparam CharType character type of the string
-    \param str Constant string, lifetime assumed to be longer than the use of the string in e.g. a GenericValue
-    \param length The length of source string.
-    \return GenericStringRef string reference object
-    \relatesalso GenericStringRef
-*/
-template<typename CharType>
-inline GenericStringRef<CharType> StringRef(const CharType* str, size_t length) {
-    return GenericStringRef<CharType>(str, SizeType(length));
-}
-
-#if RAPIDJSON_HAS_STDSTRING
-//! Mark a string object as constant string
-/*! Mark a string object (e.g. \c std::string) as a "string literal".
-    This function can be used to avoid copying a string to be referenced as a
-    value in a JSON GenericValue object, if the string's lifetime is known
-    to be valid long enough.
-
-    \tparam CharType character type of the string
-    \param str Constant string, lifetime assumed to be longer than the use of the string in e.g. a GenericValue
-    \return GenericStringRef string reference object
-    \relatesalso GenericStringRef
-    \note Requires the definition of the preprocessor symbol \ref RAPIDJSON_HAS_STDSTRING.
-*/
-template<typename CharType>
-inline GenericStringRef<CharType> StringRef(const std::basic_string<CharType>& str) {
-    return GenericStringRef<CharType>(str.data(), SizeType(str.size()));
-}
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
-// GenericValue type traits
-namespace internal {
-
-template <typename T, typename Encoding = void, typename Allocator = void>
-struct IsGenericValueImpl : FalseType {};
-
-// select candidates according to nested encoding and allocator types
-template <typename T> struct IsGenericValueImpl<T, typename Void<typename T::EncodingType>::Type, typename Void<typename T::AllocatorType>::Type>
-    : IsBaseOf<GenericValue<typename T::EncodingType, typename T::AllocatorType>, T>::Type {};
-
-// helper to match arbitrary GenericValue instantiations, including derived classes
-template <typename T> struct IsGenericValue : IsGenericValueImpl<T>::Type {};
-
-} // namespace internal
-
-///////////////////////////////////////////////////////////////////////////////
-// TypeHelper
-
-namespace internal {
-
-template <typename ValueType, typename T>
-struct TypeHelper {};
-
-template<typename ValueType> 
-struct TypeHelper<ValueType, bool> {
-    static bool Is(const ValueType& v) { return v.IsBool(); }
-    static bool Get(const ValueType& v) { return v.GetBool(); }
-    static ValueType& Set(ValueType& v, bool data) { return v.SetBool(data); }
-    static ValueType& Set(ValueType& v, bool data, typename ValueType::AllocatorType&) { return v.SetBool(data); }
-};
-
-template<typename ValueType> 
-struct TypeHelper<ValueType, int> {
-    static bool Is(const ValueType& v) { return v.IsInt(); }
-    static int Get(const ValueType& v) { return v.GetInt(); }
-    static ValueType& Set(ValueType& v, int data) { return v.SetInt(data); }
-    static ValueType& Set(ValueType& v, int data, typename ValueType::AllocatorType&) { return v.SetInt(data); }
-};
-
-template<typename ValueType> 
-struct TypeHelper<ValueType, unsigned> {
-    static bool Is(const ValueType& v) { return v.IsUint(); }
-    static unsigned Get(const ValueType& v) { return v.GetUint(); }
-    static ValueType& Set(ValueType& v, unsigned data) { return v.SetUint(data); }
-    static ValueType& Set(ValueType& v, unsigned data, typename ValueType::AllocatorType&) { return v.SetUint(data); }
-};
-
-template<typename ValueType> 
-struct TypeHelper<ValueType, int64_t> {
-    static bool Is(const ValueType& v) { return v.IsInt64(); }
-    static int64_t Get(const ValueType& v) { return v.GetInt64(); }
-    static ValueType& Set(ValueType& v, int64_t data) { return v.SetInt64(data); }
-    static ValueType& Set(ValueType& v, int64_t data, typename ValueType::AllocatorType&) { return v.SetInt64(data); }
-};
-
-template<typename ValueType> 
-struct TypeHelper<ValueType, uint64_t> {
-    static bool Is(const ValueType& v) { return v.IsUint64(); }
-    static uint64_t Get(const ValueType& v) { return v.GetUint64(); }
-    static ValueType& Set(ValueType& v, uint64_t data) { return v.SetUint64(data); }
-    static ValueType& Set(ValueType& v, uint64_t data, typename ValueType::AllocatorType&) { return v.SetUint64(data); }
-};
-
-template<typename ValueType> 
-struct TypeHelper<ValueType, double> {
-    static bool Is(const ValueType& v) { return v.IsDouble(); }
-    static double Get(const ValueType& v) { return v.GetDouble(); }
-    static ValueType& Set(ValueType& v, double data) { return v.SetDouble(data); }
-    static ValueType& Set(ValueType& v, double data, typename ValueType::AllocatorType&) { return v.SetDouble(data); }
-};
-
-template<typename ValueType> 
-struct TypeHelper<ValueType, float> {
-    static bool Is(const ValueType& v) { return v.IsFloat(); }
-    static float Get(const ValueType& v) { return v.GetFloat(); }
-    static ValueType& Set(ValueType& v, float data) { return v.SetFloat(data); }
-    static ValueType& Set(ValueType& v, float data, typename ValueType::AllocatorType&) { return v.SetFloat(data); }
-};
-
-template<typename ValueType> 
-struct TypeHelper<ValueType, const typename ValueType::Ch*> {
-    typedef const typename ValueType::Ch* StringType;
-    static bool Is(const ValueType& v) { return v.IsString(); }
-    static StringType Get(const ValueType& v) { return v.GetString(); }
-    static ValueType& Set(ValueType& v, const StringType data) { return v.SetString(typename ValueType::StringRefType(data)); }
-    static ValueType& Set(ValueType& v, const StringType data, typename ValueType::AllocatorType& a) { return v.SetString(data, a); }
-};
-
-#if RAPIDJSON_HAS_STDSTRING
-template<typename ValueType> 
-struct TypeHelper<ValueType, std::basic_string<typename ValueType::Ch> > {
-    typedef std::basic_string<typename ValueType::Ch> StringType;
-    static bool Is(const ValueType& v) { return v.IsString(); }
-    static StringType Get(const ValueType& v) { return v.GetString(); }
-    static ValueType& Set(ValueType& v, const StringType& data, typename ValueType::AllocatorType& a) { return v.SetString(data, a); }
-};
-#endif
-
-template<typename ValueType> 
-struct TypeHelper<ValueType, typename ValueType::Array> {
-    typedef typename ValueType::Array ArrayType;
-    static bool Is(const ValueType& v) { return v.IsArray(); }
-    static ArrayType Get(ValueType& v) { return v.GetArray(); }
-    static ValueType& Set(ValueType& v, ArrayType data) { return v = data; }
-    static ValueType& Set(ValueType& v, ArrayType data, typename ValueType::AllocatorType&) { return v = data; }
-};
-
-template<typename ValueType> 
-struct TypeHelper<ValueType, typename ValueType::ConstArray> {
-    typedef typename ValueType::ConstArray ArrayType;
-    static bool Is(const ValueType& v) { return v.IsArray(); }
-    static ArrayType Get(const ValueType& v) { return v.GetArray(); }
-};
-
-template<typename ValueType> 
-struct TypeHelper<ValueType, typename ValueType::Object> {
-    typedef typename ValueType::Object ObjectType;
-    static bool Is(const ValueType& v) { return v.IsObject(); }
-    static ObjectType Get(ValueType& v) { return v.GetObject(); }
-    static ValueType& Set(ValueType& v, ObjectType data) { return v = data; }
-    static ValueType& Set(ValueType& v, ObjectType data, typename ValueType::AllocatorType&) { v = data; }
-};
-
-template<typename ValueType> 
-struct TypeHelper<ValueType, typename ValueType::ConstObject> {
-    typedef typename ValueType::ConstObject ObjectType;
-    static bool Is(const ValueType& v) { return v.IsObject(); }
-    static ObjectType Get(const ValueType& v) { return v.GetObject(); }
-};
-
-} // namespace internal
-
-// Forward declarations
-template <bool, typename> class GenericArray;
-template <bool, typename> class GenericObject;
-
-///////////////////////////////////////////////////////////////////////////////
-// GenericValue
-
-//! Represents a JSON value. Use Value for UTF8 encoding and default allocator.
-/*!
-    A JSON value can be one of 7 types. This class is a variant type supporting
-    these types.
-
-    Use the Value if UTF8 and default allocator
-
-    \tparam Encoding    Encoding of the value. (Even non-string values need to have the same encoding in a document)
-    \tparam Allocator   Allocator type for allocating memory of object, array and string.
-*/
-template <typename Encoding, typename Allocator = MemoryPoolAllocator<> > 
-class GenericValue {
-public:
-    //! Name-value pair in an object.
-    typedef GenericMember<Encoding, Allocator> Member;
-    typedef Encoding EncodingType;                  //!< Encoding type from template parameter.
-    typedef Allocator AllocatorType;                //!< Allocator type from template parameter.
-    typedef typename Encoding::Ch Ch;               //!< Character type derived from Encoding.
-    typedef GenericStringRef<Ch> StringRefType;     //!< Reference to a constant string
-    typedef typename GenericMemberIterator<false,Encoding,Allocator>::Iterator MemberIterator;  //!< Member iterator for iterating in object.
-    typedef typename GenericMemberIterator<true,Encoding,Allocator>::Iterator ConstMemberIterator;  //!< Constant member iterator for iterating in object.
-    typedef GenericValue* ValueIterator;            //!< Value iterator for iterating in array.
-    typedef const GenericValue* ConstValueIterator; //!< Constant value iterator for iterating in array.
-    typedef GenericValue<Encoding, Allocator> ValueType;    //!< Value type of itself.
-    typedef GenericArray<false, ValueType> Array;
-    typedef GenericArray<true, ValueType> ConstArray;
-    typedef GenericObject<false, ValueType> Object;
-    typedef GenericObject<true, ValueType> ConstObject;
-
-    //!@name Constructors and destructor.
-    //@{
-
-    //! Default constructor creates a null value.
-    GenericValue() RAPIDJSON_NOEXCEPT : data_() { data_.f.flags = kNullFlag; }
-
-#if RAPIDJSON_HAS_CXX11_RVALUE_REFS
-    //! Move constructor in C++11
-    GenericValue(GenericValue&& rhs) RAPIDJSON_NOEXCEPT : data_(rhs.data_) {
-        rhs.data_.f.flags = kNullFlag; // give up contents
-    }
-#endif
-
-private:
-    //! Copy constructor is not permitted.
-    GenericValue(const GenericValue& rhs);
-
-#if RAPIDJSON_HAS_CXX11_RVALUE_REFS
-    //! Moving from a GenericDocument is not permitted.
-    template <typename StackAllocator>
-    GenericValue(GenericDocument<Encoding,Allocator,StackAllocator>&& rhs);
-
-    //! Move assignment from a GenericDocument is not permitted.
-    template <typename StackAllocator>
-    GenericValue& operator=(GenericDocument<Encoding,Allocator,StackAllocator>&& rhs);
-#endif
-
-public:
-
-    //! Constructor with JSON value type.
-    /*! This creates a Value of specified type with default content.
-        \param type Type of the value.
-        \note Default content for number is zero.
-    */
-    explicit GenericValue(Type type) RAPIDJSON_NOEXCEPT : data_() {
-        static const uint16_t defaultFlags[7] = {
-            kNullFlag, kFalseFlag, kTrueFlag, kObjectFlag, kArrayFlag, kShortStringFlag,
-            kNumberAnyFlag
-        };
-        RAPIDJSON_ASSERT(type <= kNumberType);
-        data_.f.flags = defaultFlags[type];
-
-        // Use ShortString to store empty string.
-        if (type == kStringType)
-            data_.ss.SetLength(0);
-    }
-
-    //! Explicit copy constructor (with allocator)
-    /*! Creates a copy of a Value by using the given Allocator
-        \tparam SourceAllocator allocator of \c rhs
-        \param rhs Value to copy from (read-only)
-        \param allocator Allocator for allocating copied elements and buffers. Commonly use GenericDocument::GetAllocator().
-        \see CopyFrom()
-    */
-    template< typename SourceAllocator >
-    GenericValue(const GenericValue<Encoding, SourceAllocator>& rhs, Allocator & allocator);
-
-    //! Constructor for boolean value.
-    /*! \param b Boolean value
-        \note This constructor is limited to \em real boolean values and rejects
-            implicitly converted types like arbitrary pointers.  Use an explicit cast
-            to \c bool, if you want to construct a boolean JSON value in such cases.
-     */
-#ifndef RAPIDJSON_DOXYGEN_RUNNING // hide SFINAE from Doxygen
-    template <typename T>
-    explicit GenericValue(T b, RAPIDJSON_ENABLEIF((internal::IsSame<bool, T>))) RAPIDJSON_NOEXCEPT  // See #472
-#else
-    explicit GenericValue(bool b) RAPIDJSON_NOEXCEPT
-#endif
-        : data_() {
-            // safe-guard against failing SFINAE
-            RAPIDJSON_STATIC_ASSERT((internal::IsSame<bool,T>::Value));
-            data_.f.flags = b ? kTrueFlag : kFalseFlag;
-    }
-
-    //! Constructor for int value.
-    explicit GenericValue(int i) RAPIDJSON_NOEXCEPT : data_() {
-        data_.n.i64 = i;
-        data_.f.flags = (i >= 0) ? (kNumberIntFlag | kUintFlag | kUint64Flag) : kNumberIntFlag;
-    }
-
-    //! Constructor for unsigned value.
-    explicit GenericValue(unsigned u) RAPIDJSON_NOEXCEPT : data_() {
-        data_.n.u64 = u; 
-        data_.f.flags = (u & 0x80000000) ? kNumberUintFlag : (kNumberUintFlag | kIntFlag | kInt64Flag);
-    }
-
-    //! Constructor for int64_t value.
-    explicit GenericValue(int64_t i64) RAPIDJSON_NOEXCEPT : data_() {
-        data_.n.i64 = i64;
-        data_.f.flags = kNumberInt64Flag;
-        if (i64 >= 0) {
-            data_.f.flags |= kNumberUint64Flag;
-            if (!(static_cast<uint64_t>(i64) & RAPIDJSON_UINT64_C2(0xFFFFFFFF, 0x00000000)))
-                data_.f.flags |= kUintFlag;
-            if (!(static_cast<uint64_t>(i64) & RAPIDJSON_UINT64_C2(0xFFFFFFFF, 0x80000000)))
-                data_.f.flags |= kIntFlag;
-        }
-        else if (i64 >= static_cast<int64_t>(RAPIDJSON_UINT64_C2(0xFFFFFFFF, 0x80000000)))
-            data_.f.flags |= kIntFlag;
-    }
-
-    //! Constructor for uint64_t value.
-    explicit GenericValue(uint64_t u64) RAPIDJSON_NOEXCEPT : data_() {
-        data_.n.u64 = u64;
-        data_.f.flags = kNumberUint64Flag;
-        if (!(u64 & RAPIDJSON_UINT64_C2(0x80000000, 0x00000000)))
-            data_.f.flags |= kInt64Flag;
-        if (!(u64 & RAPIDJSON_UINT64_C2(0xFFFFFFFF, 0x00000000)))
-            data_.f.flags |= kUintFlag;
-        if (!(u64 & RAPIDJSON_UINT64_C2(0xFFFFFFFF, 0x80000000)))
-            data_.f.flags |= kIntFlag;
-    }
-
-    //! Constructor for double value.
-    explicit GenericValue(double d) RAPIDJSON_NOEXCEPT : data_() { data_.n.d = d; data_.f.flags = kNumberDoubleFlag; }
-
-    //! Constructor for constant string (i.e. do not make a copy of string)
-    GenericValue(const Ch* s, SizeType length) RAPIDJSON_NOEXCEPT : data_() { SetStringRaw(StringRef(s, length)); }
-
-    //! Constructor for constant string (i.e. do not make a copy of string)
-    explicit GenericValue(StringRefType s) RAPIDJSON_NOEXCEPT : data_() { SetStringRaw(s); }
-
-    //! Constructor for copy-string (i.e. do make a copy of string)
-    GenericValue(const Ch* s, SizeType length, Allocator& allocator) : data_() { SetStringRaw(StringRef(s, length), allocator); }
-
-    //! Constructor for copy-string (i.e. do make a copy of string)
-    GenericValue(const Ch*s, Allocator& allocator) : data_() { SetStringRaw(StringRef(s), allocator); }
-
-#if RAPIDJSON_HAS_STDSTRING
-    //! Constructor for copy-string from a string object (i.e. do make a copy of string)
-    /*! \note Requires the definition of the preprocessor symbol \ref RAPIDJSON_HAS_STDSTRING.
-     */
-    GenericValue(const std::basic_string<Ch>& s, Allocator& allocator) : data_() { SetStringRaw(StringRef(s), allocator); }
-#endif
-
-    //! Constructor for Array.
-    /*!
-        \param a An array obtained by \c GetArray().
-        \note \c Array is always pass-by-value.
-        \note the source array is moved into this value and the sourec array becomes empty.
-    */
-    GenericValue(Array a) RAPIDJSON_NOEXCEPT : data_(a.value_.data_) {
-        a.value_.data_ = Data();
-        a.value_.data_.f.flags = kArrayFlag;
-    }
-
-    //! Constructor for Object.
-    /*!
-        \param o An object obtained by \c GetObject().
-        \note \c Object is always pass-by-value.
-        \note the source object is moved into this value and the sourec object becomes empty.
-    */
-    GenericValue(Object o) RAPIDJSON_NOEXCEPT : data_(o.value_.data_) {
-        o.value_.data_ = Data();
-        o.value_.data_.f.flags = kObjectFlag;
-    }
-
-    //! Destructor.
-    /*! Need to destruct elements of array, members of object, or copy-string.
-    */
-    ~GenericValue() {
-        if (Allocator::kNeedFree) { // Shortcut by Allocator's trait
-            switch(data_.f.flags) {
-            case kArrayFlag:
-                {
-                    GenericValue* e = GetElementsPointer();
-                    for (GenericValue* v = e; v != e + data_.a.size; ++v)
-                        v->~GenericValue();
-                    Allocator::Free(e);
-                }
-                break;
-
-            case kObjectFlag:
-                for (MemberIterator m = MemberBegin(); m != MemberEnd(); ++m)
-                    m->~Member();
-                Allocator::Free(GetMembersPointer());
-                break;
-
-            case kCopyStringFlag:
-                Allocator::Free(const_cast<Ch*>(GetStringPointer()));
-                break;
-
-            default:
-                break;  // Do nothing for other types.
-            }
-        }
-    }
-
-    //@}
-
-    //!@name Assignment operators
-    //@{
-
-    //! Assignment with move semantics.
-    /*! \param rhs Source of the assignment. It will become a null value after assignment.
-    */
-    GenericValue& operator=(GenericValue& rhs) RAPIDJSON_NOEXCEPT {
-        RAPIDJSON_ASSERT(this != &rhs);
-        this->~GenericValue();
-        RawAssign(rhs);
-        return *this;
-    }
-
-#if RAPIDJSON_HAS_CXX11_RVALUE_REFS
-    //! Move assignment in C++11
-    GenericValue& operator=(GenericValue&& rhs) RAPIDJSON_NOEXCEPT {
-        return *this = rhs.Move();
-    }
-#endif
-
-    //! Assignment of constant string reference (no copy)
-    /*! \param str Constant string reference to be assigned
-        \note This overload is needed to avoid clashes with the generic primitive type assignment overload below.
-        \see GenericStringRef, operator=(T)
-    */
-    GenericValue& operator=(StringRefType str) RAPIDJSON_NOEXCEPT {
-        GenericValue s(str);
-        return *this = s;
-    }
-
-    //! Assignment with primitive types.
-    /*! \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t
-        \param value The value to be assigned.
-
-        \note The source type \c T explicitly disallows all pointer types,
-            especially (\c const) \ref Ch*.  This helps avoiding implicitly
-            referencing character strings with insufficient lifetime, use
-            \ref SetString(const Ch*, Allocator&) (for copying) or
-            \ref StringRef() (to explicitly mark the pointer as constant) instead.
-            All other pointer types would implicitly convert to \c bool,
-            use \ref SetBool() instead.
-    */
-    template <typename T>
-    RAPIDJSON_DISABLEIF_RETURN((internal::IsPointer<T>), (GenericValue&))
-    operator=(T value) {
-        GenericValue v(value);
-        return *this = v;
-    }
-
-    //! Deep-copy assignment from Value
-    /*! Assigns a \b copy of the Value to the current Value object
-        \tparam SourceAllocator Allocator type of \c rhs
-        \param rhs Value to copy from (read-only)
-        \param allocator Allocator to use for copying
-     */
-    template <typename SourceAllocator>
-    GenericValue& CopyFrom(const GenericValue<Encoding, SourceAllocator>& rhs, Allocator& allocator) {
-        RAPIDJSON_ASSERT(static_cast<void*>(this) != static_cast<void const*>(&rhs));
-        this->~GenericValue();
-        new (this) GenericValue(rhs, allocator);
-        return *this;
-    }
-
-    //! Exchange the contents of this value with those of other.
-    /*!
-        \param other Another value.
-        \note Constant complexity.
-    */
-    GenericValue& Swap(GenericValue& other) RAPIDJSON_NOEXCEPT {
-        GenericValue temp;
-        temp.RawAssign(*this);
-        RawAssign(other);
-        other.RawAssign(temp);
-        return *this;
-    }
-
-    //! free-standing swap function helper
-    /*!
-        Helper function to enable support for common swap implementation pattern based on \c std::swap:
-        \code
-        void swap(MyClass& a, MyClass& b) {
-            using std::swap;
-            swap(a.value, b.value);
-            // ...
-        }
-        \endcode
-        \see Swap()
-     */
-    friend inline void swap(GenericValue& a, GenericValue& b) RAPIDJSON_NOEXCEPT { a.Swap(b); }
-
-    //! Prepare Value for move semantics
-    /*! \return *this */
-    GenericValue& Move() RAPIDJSON_NOEXCEPT { return *this; }
-    //@}
-
-    //!@name Equal-to and not-equal-to operators
-    //@{
-    //! Equal-to operator
-    /*!
-        \note If an object contains duplicated named member, comparing equality with any object is always \c false.
-        \note Linear time complexity (number of all values in the subtree and total lengths of all strings).
-    */
-    template <typename SourceAllocator>
-    bool operator==(const GenericValue<Encoding, SourceAllocator>& rhs) const {
-        typedef GenericValue<Encoding, SourceAllocator> RhsType;
-        if (GetType() != rhs.GetType())
-            return false;
-
-        switch (GetType()) {
-        case kObjectType: // Warning: O(n^2) inner-loop
-            if (data_.o.size != rhs.data_.o.size)
-                return false;           
-            for (ConstMemberIterator lhsMemberItr = MemberBegin(); lhsMemberItr != MemberEnd(); ++lhsMemberItr) {
-                typename RhsType::ConstMemberIterator rhsMemberItr = rhs.FindMember(lhsMemberItr->name);
-                if (rhsMemberItr == rhs.MemberEnd() || lhsMemberItr->value != rhsMemberItr->value)
-                    return false;
-            }
-            return true;
-            
-        case kArrayType:
-            if (data_.a.size != rhs.data_.a.size)
-                return false;
-            for (SizeType i = 0; i < data_.a.size; i++)
-                if ((*this)[i] != rhs[i])
-                    return false;
-            return true;
-
-        case kStringType:
-            return StringEqual(rhs);
-
-        case kNumberType:
-            if (IsDouble() || rhs.IsDouble()) {
-                double a = GetDouble();     // May convert from integer to double.
-                double b = rhs.GetDouble(); // Ditto
-                return a >= b && a <= b;    // Prevent -Wfloat-equal
-            }
-            else
-                return data_.n.u64 == rhs.data_.n.u64;
-
-        default:
-            return true;
-        }
-    }
-
-    //! Equal-to operator with const C-string pointer
-    bool operator==(const Ch* rhs) const { return *this == GenericValue(StringRef(rhs)); }
-
-#if RAPIDJSON_HAS_STDSTRING
-    //! Equal-to operator with string object
-    /*! \note Requires the definition of the preprocessor symbol \ref RAPIDJSON_HAS_STDSTRING.
-     */
-    bool operator==(const std::basic_string<Ch>& rhs) const { return *this == GenericValue(StringRef(rhs)); }
-#endif
-
-    //! Equal-to operator with primitive types
-    /*! \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t, \c double, \c true, \c false
-    */
-    template <typename T> RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr<internal::IsPointer<T>,internal::IsGenericValue<T> >), (bool)) operator==(const T& rhs) const { return *this == GenericValue(rhs); }
-
-    //! Not-equal-to operator
-    /*! \return !(*this == rhs)
-     */
-    template <typename SourceAllocator>
-    bool operator!=(const GenericValue<Encoding, SourceAllocator>& rhs) const { return !(*this == rhs); }
-
-    //! Not-equal-to operator with const C-string pointer
-    bool operator!=(const Ch* rhs) const { return !(*this == rhs); }
-
-    //! Not-equal-to operator with arbitrary types
-    /*! \return !(*this == rhs)
-     */
-    template <typename T> RAPIDJSON_DISABLEIF_RETURN((internal::IsGenericValue<T>), (bool)) operator!=(const T& rhs) const { return !(*this == rhs); }
-
-    //! Equal-to operator with arbitrary types (symmetric version)
-    /*! \return (rhs == lhs)
-     */
-    template <typename T> friend RAPIDJSON_DISABLEIF_RETURN((internal::IsGenericValue<T>), (bool)) operator==(const T& lhs, const GenericValue& rhs) { return rhs == lhs; }
-
-    //! Not-Equal-to operator with arbitrary types (symmetric version)
-    /*! \return !(rhs == lhs)
-     */
-    template <typename T> friend RAPIDJSON_DISABLEIF_RETURN((internal::IsGenericValue<T>), (bool)) operator!=(const T& lhs, const GenericValue& rhs) { return !(rhs == lhs); }
-    //@}
-
-    //!@name Type
-    //@{
-
-    Type GetType()  const { return static_cast<Type>(data_.f.flags & kTypeMask); }
-    bool IsNull()   const { return data_.f.flags == kNullFlag; }
-    bool IsFalse()  const { return data_.f.flags == kFalseFlag; }
-    bool IsTrue()   const { return data_.f.flags == kTrueFlag; }
-    bool IsBool()   const { return (data_.f.flags & kBoolFlag) != 0; }
-    bool IsObject() const { return data_.f.flags == kObjectFlag; }
-    bool IsArray()  const { return data_.f.flags == kArrayFlag; }
-    bool IsNumber() const { return (data_.f.flags & kNumberFlag) != 0; }
-    bool IsInt()    const { return (data_.f.flags & kIntFlag) != 0; }
-    bool IsUint()   const { return (data_.f.flags & kUintFlag) != 0; }
-    bool IsInt64()  const { return (data_.f.flags & kInt64Flag) != 0; }
-    bool IsUint64() const { return (data_.f.flags & kUint64Flag) != 0; }
-    bool IsDouble() const { return (data_.f.flags & kDoubleFlag) != 0; }
-    bool IsString() const { return (data_.f.flags & kStringFlag) != 0; }
-
-    // Checks whether a number can be losslessly converted to a double.
-    bool IsLosslessDouble() const {
-        if (!IsNumber()) return false;
-        if (IsUint64()) {
-            uint64_t u = GetUint64();
-            volatile double d = static_cast<double>(u);
-            return static_cast<uint64_t>(d) == u;
-        }
-        if (IsInt64()) {
-            int64_t i = GetInt64();
-            volatile double d = static_cast<double>(i);
-            return static_cast< int64_t>(d) == i;
-        }
-        return true; // double, int, uint are always lossless
-    }
-
-    // Checks whether a number is a float (possible lossy).
-    bool IsFloat() const  {
-        if ((data_.f.flags & kDoubleFlag) == 0)
-            return false;
-        double d = GetDouble();
-        return d >= -3.4028234e38 && d <= 3.4028234e38;
-    }
-    // Checks whether a number can be losslessly converted to a float.
-    bool IsLosslessFloat() const {
-        if (!IsNumber()) return false;
-        double a = GetDouble();
-        double b = static_cast<double>(static_cast<float>(a));
-        return a >= b && a <= b;    // Prevent -Wfloat-equal
-    }
-
-    //@}
-
-    //!@name Null
-    //@{
-
-    GenericValue& SetNull() { this->~GenericValue(); new (this) GenericValue(); return *this; }
-
-    //@}
-
-    //!@name Bool
-    //@{
-
-    bool GetBool() const { RAPIDJSON_ASSERT(IsBool()); return data_.f.flags == kTrueFlag; }
-    //!< Set boolean value
-    /*! \post IsBool() == true */
-    GenericValue& SetBool(bool b) { this->~GenericValue(); new (this) GenericValue(b); return *this; }
-
-    //@}
-
-    //!@name Object
-    //@{
-
-    //! Set this value as an empty object.
-    /*! \post IsObject() == true */
-    GenericValue& SetObject() { this->~GenericValue(); new (this) GenericValue(kObjectType); return *this; }
-
-    //! Get the number of members in the object.
-    SizeType MemberCount() const { RAPIDJSON_ASSERT(IsObject()); return data_.o.size; }
-
-    //! Check whether the object is empty.
-    bool ObjectEmpty() const { RAPIDJSON_ASSERT(IsObject()); return data_.o.size == 0; }
-
-    //! Get a value from an object associated with the name.
-    /*! \pre IsObject() == true
-        \tparam T Either \c Ch or \c const \c Ch (template used for disambiguation with \ref operator[](SizeType))
-        \note In version 0.1x, if the member is not found, this function returns a null value. This makes issue 7.
-        Since 0.2, if the name is not correct, it will assert.
-        If user is unsure whether a member exists, user should use HasMember() first.
-        A better approach is to use FindMember().
-        \note Linear time complexity.
-    */
-    template <typename T>
-    RAPIDJSON_DISABLEIF_RETURN((internal::NotExpr<internal::IsSame<typename internal::RemoveConst<T>::Type, Ch> >),(GenericValue&)) operator[](T* name) {
-        GenericValue n(StringRef(name));
-        return (*this)[n];
-    }
-    template <typename T>
-    RAPIDJSON_DISABLEIF_RETURN((internal::NotExpr<internal::IsSame<typename internal::RemoveConst<T>::Type, Ch> >),(const GenericValue&)) operator[](T* name) const { return const_cast<GenericValue&>(*this)[name]; }
-
-    //! Get a value from an object associated with the name.
-    /*! \pre IsObject() == true
-        \tparam SourceAllocator Allocator of the \c name value
-
-        \note Compared to \ref operator[](T*), this version is faster because it does not need a StrLen().
-        And it can also handle strings with embedded null characters.
-
-        \note Linear time complexity.
-    */
-    template <typename SourceAllocator>
-    GenericValue& operator[](const GenericValue<Encoding, SourceAllocator>& name) {
-        MemberIterator member = FindMember(name);
-        if (member != MemberEnd())
-            return member->value;
-        else {
-            RAPIDJSON_ASSERT(false);    // see above note
-
-            // This will generate -Wexit-time-destructors in clang
-            // static GenericValue NullValue;
-            // return NullValue;
-
-            // Use static buffer and placement-new to prevent destruction
-            static char buffer[sizeof(GenericValue)];
-            return *new (buffer) GenericValue();
-        }
-    }
-    template <typename SourceAllocator>
-    const GenericValue& operator[](const GenericValue<Encoding, SourceAllocator>& name) const { return const_cast<GenericValue&>(*this)[name]; }
-
-#if RAPIDJSON_HAS_STDSTRING
-    //! Get a value from an object associated with name (string object).
-    GenericValue& operator[](const std::basic_string<Ch>& name) { return (*this)[GenericValue(StringRef(name))]; }
-    const GenericValue& operator[](const std::basic_string<Ch>& name) const { return (*this)[GenericValue(StringRef(name))]; }
-#endif
-
-    //! Const member iterator
-    /*! \pre IsObject() == true */
-    ConstMemberIterator MemberBegin() const { RAPIDJSON_ASSERT(IsObject()); return ConstMemberIterator(GetMembersPointer()); }
-    //! Const \em past-the-end member iterator
-    /*! \pre IsObject() == true */
-    ConstMemberIterator MemberEnd() const   { RAPIDJSON_ASSERT(IsObject()); return ConstMemberIterator(GetMembersPointer() + data_.o.size); }
-    //! Member iterator
-    /*! \pre IsObject() == true */
-    MemberIterator MemberBegin()            { RAPIDJSON_ASSERT(IsObject()); return MemberIterator(GetMembersPointer()); }
-    //! \em Past-the-end member iterator
-    /*! \pre IsObject() == true */
-    MemberIterator MemberEnd()              { RAPIDJSON_ASSERT(IsObject()); return MemberIterator(GetMembersPointer() + data_.o.size); }
-
-    //! Check whether a member exists in the object.
-    /*!
-        \param name Member name to be searched.
-        \pre IsObject() == true
-        \return Whether a member with that name exists.
-        \note It is better to use FindMember() directly if you need the obtain the value as well.
-        \note Linear time complexity.
-    */
-    bool HasMember(const Ch* name) const { return FindMember(name) != MemberEnd(); }
-
-#if RAPIDJSON_HAS_STDSTRING
-    //! Check whether a member exists in the object with string object.
-    /*!
-        \param name Member name to be searched.
-        \pre IsObject() == true
-        \return Whether a member with that name exists.
-        \note It is better to use FindMember() directly if you need the obtain the value as well.
-        \note Linear time complexity.
-    */
-    bool HasMember(const std::basic_string<Ch>& name) const { return FindMember(name) != MemberEnd(); }
-#endif
-
-    //! Check whether a member exists in the object with GenericValue name.
-    /*!
-        This version is faster because it does not need a StrLen(). It can also handle string with null character.
-        \param name Member name to be searched.
-        \pre IsObject() == true
-        \return Whether a member with that name exists.
-        \note It is better to use FindMember() directly if you need the obtain the value as well.
-        \note Linear time complexity.
-    */
-    template <typename SourceAllocator>
-    bool HasMember(const GenericValue<Encoding, SourceAllocator>& name) const { return FindMember(name) != MemberEnd(); }
-
-    //! Find member by name.
-    /*!
-        \param name Member name to be searched.
-        \pre IsObject() == true
-        \return Iterator to member, if it exists.
-            Otherwise returns \ref MemberEnd().
-
-        \note Earlier versions of Rapidjson returned a \c NULL pointer, in case
-            the requested member doesn't exist. For consistency with e.g.
-            \c std::map, this has been changed to MemberEnd() now.
-        \note Linear time complexity.
-    */
-    MemberIterator FindMember(const Ch* name) {
-        GenericValue n(StringRef(name));
-        return FindMember(n);
-    }
-
-    ConstMemberIterator FindMember(const Ch* name) const { return const_cast<GenericValue&>(*this).FindMember(name); }
-
-    //! Find member by name.
-    /*!
-        This version is faster because it does not need a StrLen(). It can also handle string with null character.
-        \param name Member name to be searched.
-        \pre IsObject() == true
-        \return Iterator to member, if it exists.
-            Otherwise returns \ref MemberEnd().
-
-        \note Earlier versions of Rapidjson returned a \c NULL pointer, in case
-            the requested member doesn't exist. For consistency with e.g.
-            \c std::map, this has been changed to MemberEnd() now.
-        \note Linear time complexity.
-    */
-    template <typename SourceAllocator>
-    MemberIterator FindMember(const GenericValue<Encoding, SourceAllocator>& name) {
-        RAPIDJSON_ASSERT(IsObject());
-        RAPIDJSON_ASSERT(name.IsString());
-        MemberIterator member = MemberBegin();
-        for ( ; member != MemberEnd(); ++member)
-            if (name.StringEqual(member->name))
-                break;
-        return member;
-    }
-    template <typename SourceAllocator> ConstMemberIterator FindMember(const GenericValue<Encoding, SourceAllocator>& name) const { return const_cast<GenericValue&>(*this).FindMember(name); }
-
-#if RAPIDJSON_HAS_STDSTRING
-    //! Find member by string object name.
-    /*!
-        \param name Member name to be searched.
-        \pre IsObject() == true
-        \return Iterator to member, if it exists.
-            Otherwise returns \ref MemberEnd().
-    */
-    MemberIterator FindMember(const std::basic_string<Ch>& name) { return FindMember(StringRef(name)); }
-    ConstMemberIterator FindMember(const std::basic_string<Ch>& name) const { return FindMember(StringRef(name)); }
-#endif
-
-    //! Add a member (name-value pair) to the object.
-    /*! \param name A string value as name of member.
-        \param value Value of any type.
-        \param allocator    Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator().
-        \return The value itself for fluent API.
-        \note The ownership of \c name and \c value will be transferred to this object on success.
-        \pre  IsObject() && name.IsString()
-        \post name.IsNull() && value.IsNull()
-        \note Amortized Constant time complexity.
-    */
-    GenericValue& AddMember(GenericValue& name, GenericValue& value, Allocator& allocator) {
-        RAPIDJSON_ASSERT(IsObject());
-        RAPIDJSON_ASSERT(name.IsString());
-
-        ObjectData& o = data_.o;
-        if (o.size >= o.capacity) {
-            if (o.capacity == 0) {
-                o.capacity = kDefaultObjectCapacity;
-                SetMembersPointer(reinterpret_cast<Member*>(allocator.Malloc(o.capacity * sizeof(Member))));
-            }
-            else {
-                SizeType oldCapacity = o.capacity;
-                o.capacity += (oldCapacity + 1) / 2; // grow by factor 1.5
-                SetMembersPointer(reinterpret_cast<Member*>(allocator.Realloc(GetMembersPointer(), oldCapacity * sizeof(Member), o.capacity * sizeof(Member))));
-            }
-        }
-        Member* members = GetMembersPointer();
-        members[o.size].name.RawAssign(name);
-        members[o.size].value.RawAssign(value);
-        o.size++;
-        return *this;
-    }
-
-    //! Add a constant string value as member (name-value pair) to the object.
-    /*! \param name A string value as name of member.
-        \param value constant string reference as value of member.
-        \param allocator    Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator().
-        \return The value itself for fluent API.
-        \pre  IsObject()
-        \note This overload is needed to avoid clashes with the generic primitive type AddMember(GenericValue&,T,Allocator&) overload below.
-        \note Amortized Constant time complexity.
-    */
-    GenericValue& AddMember(GenericValue& name, StringRefType value, Allocator& allocator) {
-        GenericValue v(value);
-        return AddMember(name, v, allocator);
-    }
-
-#if RAPIDJSON_HAS_STDSTRING
-    //! Add a string object as member (name-value pair) to the object.
-    /*! \param name A string value as name of member.
-        \param value constant string reference as value of member.
-        \param allocator    Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator().
-        \return The value itself for fluent API.
-        \pre  IsObject()
-        \note This overload is needed to avoid clashes with the generic primitive type AddMember(GenericValue&,T,Allocator&) overload below.
-        \note Amortized Constant time complexity.
-    */
-    GenericValue& AddMember(GenericValue& name, std::basic_string<Ch>& value, Allocator& allocator) {
-        GenericValue v(value, allocator);
-        return AddMember(name, v, allocator);
-    }
-#endif
-
-    //! Add any primitive value as member (name-value pair) to the object.
-    /*! \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t
-        \param name A string value as name of member.
-        \param value Value of primitive type \c T as value of member
-        \param allocator Allocator for reallocating memory. Commonly use GenericDocument::GetAllocator().
-        \return The value itself for fluent API.
-        \pre  IsObject()
-
-        \note The source type \c T explicitly disallows all pointer types,
-            especially (\c const) \ref Ch*.  This helps avoiding implicitly
-            referencing character strings with insufficient lifetime, use
-            \ref AddMember(StringRefType, GenericValue&, Allocator&) or \ref
-            AddMember(StringRefType, StringRefType, Allocator&).
-            All other pointer types would implicitly convert to \c bool,
-            use an explicit cast instead, if needed.
-        \note Amortized Constant time complexity.
-    */
-    template <typename T>
-    RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr<internal::IsPointer<T>, internal::IsGenericValue<T> >), (GenericValue&))
-    AddMember(GenericValue& name, T value, Allocator& allocator) {
-        GenericValue v(value);
-        return AddMember(name, v, allocator);
-    }
-
-#if RAPIDJSON_HAS_CXX11_RVALUE_REFS
-    GenericValue& AddMember(GenericValue&& name, GenericValue&& value, Allocator& allocator) {
-        return AddMember(name, value, allocator);
-    }
-    GenericValue& AddMember(GenericValue&& name, GenericValue& value, Allocator& allocator) {
-        return AddMember(name, value, allocator);
-    }
-    GenericValue& AddMember(GenericValue& name, GenericValue&& value, Allocator& allocator) {
-        return AddMember(name, value, allocator);
-    }
-    GenericValue& AddMember(StringRefType name, GenericValue&& value, Allocator& allocator) {
-        GenericValue n(name);
-        return AddMember(n, value, allocator);
-    }
-#endif // RAPIDJSON_HAS_CXX11_RVALUE_REFS
-
-
-    //! Add a member (name-value pair) to the object.
-    /*! \param name A constant string reference as name of member.
-        \param value Value of any type.
-        \param allocator    Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator().
-        \return The value itself for fluent API.
-        \note The ownership of \c value will be transferred to this object on success.
-        \pre  IsObject()
-        \post value.IsNull()
-        \note Amortized Constant time complexity.
-    */
-    GenericValue& AddMember(StringRefType name, GenericValue& value, Allocator& allocator) {
-        GenericValue n(name);
-        return AddMember(n, value, allocator);
-    }
-
-    //! Add a constant string value as member (name-value pair) to the object.
-    /*! \param name A constant string reference as name of member.
-        \param value constant string reference as value of member.
-        \param allocator    Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator().
-        \return The value itself for fluent API.
-        \pre  IsObject()
-        \note This overload is needed to avoid clashes with the generic primitive type AddMember(StringRefType,T,Allocator&) overload below.
-        \note Amortized Constant time complexity.
-    */
-    GenericValue& AddMember(StringRefType name, StringRefType value, Allocator& allocator) {
-        GenericValue v(value);
-        return AddMember(name, v, allocator);
-    }
-
-    //! Add any primitive value as member (name-value pair) to the object.
-    /*! \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t
-        \param name A constant string reference as name of member.
-        \param value Value of primitive type \c T as value of member
-        \param allocator Allocator for reallocating memory. Commonly use GenericDocument::GetAllocator().
-        \return The value itself for fluent API.
-        \pre  IsObject()
-
-        \note The source type \c T explicitly disallows all pointer types,
-            especially (\c const) \ref Ch*.  This helps avoiding implicitly
-            referencing character strings with insufficient lifetime, use
-            \ref AddMember(StringRefType, GenericValue&, Allocator&) or \ref
-            AddMember(StringRefType, StringRefType, Allocator&).
-            All other pointer types would implicitly convert to \c bool,
-            use an explicit cast instead, if needed.
-        \note Amortized Constant time complexity.
-    */
-    template <typename T>
-    RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr<internal::IsPointer<T>, internal::IsGenericValue<T> >), (GenericValue&))
-    AddMember(StringRefType name, T value, Allocator& allocator) {
-        GenericValue n(name);
-        return AddMember(n, value, allocator);
-    }
-
-    //! Remove all members in the object.
-    /*! This function do not deallocate memory in the object, i.e. the capacity is unchanged.
-        \note Linear time complexity.
-    */
-    void RemoveAllMembers() {
-        RAPIDJSON_ASSERT(IsObject()); 
-        for (MemberIterator m = MemberBegin(); m != MemberEnd(); ++m)
-            m->~Member();
-        data_.o.size = 0;
-    }
-
-    //! Remove a member in object by its name.
-    /*! \param name Name of member to be removed.
-        \return Whether the member existed.
-        \note This function may reorder the object members. Use \ref
-            EraseMember(ConstMemberIterator) if you need to preserve the
-            relative order of the remaining members.
-        \note Linear time complexity.
-    */
-    bool RemoveMember(const Ch* name) {
-        GenericValue n(StringRef(name));
-        return RemoveMember(n);
-    }
-
-#if RAPIDJSON_HAS_STDSTRING
-    bool RemoveMember(const std::basic_string<Ch>& name) { return RemoveMember(GenericValue(StringRef(name))); }
-#endif
-
-    template <typename SourceAllocator>
-    bool RemoveMember(const GenericValue<Encoding, SourceAllocator>& name) {
-        MemberIterator m = FindMember(name);
-        if (m != MemberEnd()) {
-            RemoveMember(m);
-            return true;
-        }
-        else
-            return false;
-    }
-
-    //! Remove a member in object by iterator.
-    /*! \param m member iterator (obtained by FindMember() or MemberBegin()).
-        \return the new iterator after removal.
-        \note This function may reorder the object members. Use \ref
-            EraseMember(ConstMemberIterator) if you need to preserve the
-            relative order of the remaining members.
-        \note Constant time complexity.
-    */
-    MemberIterator RemoveMember(MemberIterator m) {
-        RAPIDJSON_ASSERT(IsObject());
-        RAPIDJSON_ASSERT(data_.o.size > 0);
-        RAPIDJSON_ASSERT(GetMembersPointer() != 0);
-        RAPIDJSON_ASSERT(m >= MemberBegin() && m < MemberEnd());
-
-        MemberIterator last(GetMembersPointer() + (data_.o.size - 1));
-        if (data_.o.size > 1 && m != last)
-            *m = *last; // Move the last one to this place
-        else
-            m->~Member(); // Only one left, just destroy
-        --data_.o.size;
-        return m;
-    }
-
-    //! Remove a member from an object by iterator.
-    /*! \param pos iterator to the member to remove
-        \pre IsObject() == true && \ref MemberBegin() <= \c pos < \ref MemberEnd()
-        \return Iterator following the removed element.
-            If the iterator \c pos refers to the last element, the \ref MemberEnd() iterator is returned.
-        \note This function preserves the relative order of the remaining object
-            members. If you do not need this, use the more efficient \ref RemoveMember(MemberIterator).
-        \note Linear time complexity.
-    */
-    MemberIterator EraseMember(ConstMemberIterator pos) {
-        return EraseMember(pos, pos +1);
-    }
-
-    //! Remove members in the range [first, last) from an object.
-    /*! \param first iterator to the first member to remove
-        \param last  iterator following the last member to remove
-        \pre IsObject() == true && \ref MemberBegin() <= \c first <= \c last <= \ref MemberEnd()
-        \return Iterator following the last removed element.
-        \note This function preserves the relative order of the remaining object
-            members.
-        \note Linear time complexity.
-    */
-    MemberIterator EraseMember(ConstMemberIterator first, ConstMemberIterator last) {
-        RAPIDJSON_ASSERT(IsObject());
-        RAPIDJSON_ASSERT(data_.o.size > 0);
-        RAPIDJSON_ASSERT(GetMembersPointer() != 0);
-        RAPIDJSON_ASSERT(first >= MemberBegin());
-        RAPIDJSON_ASSERT(first <= last);
-        RAPIDJSON_ASSERT(last <= MemberEnd());
-
-        MemberIterator pos = MemberBegin() + (first - MemberBegin());
-        for (MemberIterator itr = pos; itr != last; ++itr)
-            itr->~Member();
-        std::memmove(&*pos, &*last, static_cast<size_t>(MemberEnd() - last) * sizeof(Member));
-        data_.o.size -= static_cast<SizeType>(last - first);
-        return pos;
-    }
-
-    //! Erase a member in object by its name.
-    /*! \param name Name of member to be removed.
-        \return Whether the member existed.
-        \note Linear time complexity.
-    */
-    bool EraseMember(const Ch* name) {
-        GenericValue n(StringRef(name));
-        return EraseMember(n);
-    }
-
-#if RAPIDJSON_HAS_STDSTRING
-    bool EraseMember(const std::basic_string<Ch>& name) { return EraseMember(GenericValue(StringRef(name))); }
-#endif
-
-    template <typename SourceAllocator>
-    bool EraseMember(const GenericValue<Encoding, SourceAllocator>& name) {
-        MemberIterator m = FindMember(name);
-        if (m != MemberEnd()) {
-            EraseMember(m);
-            return true;
-        }
-        else
-            return false;
-    }
-
-    Object GetObject() { RAPIDJSON_ASSERT(IsObject()); return Object(*this); }
-    ConstObject GetObject() const { RAPIDJSON_ASSERT(IsObject()); return ConstObject(*this); }
-
-    //@}
-
-    //!@name Array
-    //@{
-
-    //! Set this value as an empty array.
-    /*! \post IsArray == true */
-    GenericValue& SetArray() { this->~GenericValue(); new (this) GenericValue(kArrayType); return *this; }
-
-    //! Get the number of elements in array.
-    SizeType Size() const { RAPIDJSON_ASSERT(IsArray()); return data_.a.size; }
-
-    //! Get the capacity of array.
-    SizeType Capacity() const { RAPIDJSON_ASSERT(IsArray()); return data_.a.capacity; }
-
-    //! Check whether the array is empty.
-    bool Empty() const { RAPIDJSON_ASSERT(IsArray()); return data_.a.size == 0; }
-
-    //! Remove all elements in the array.
-    /*! This function do not deallocate memory in the array, i.e. the capacity is unchanged.
-        \note Linear time complexity.
-    */
-    void Clear() {
-        RAPIDJSON_ASSERT(IsArray()); 
-        GenericValue* e = GetElementsPointer();
-        for (GenericValue* v = e; v != e + data_.a.size; ++v)
-            v->~GenericValue();
-        data_.a.size = 0;
-    }
-
-    //! Get an element from array by index.
-    /*! \pre IsArray() == true
-        \param index Zero-based index of element.
-        \see operator[](T*)
-    */
-    GenericValue& operator[](SizeType index) {
-        RAPIDJSON_ASSERT(IsArray());
-        RAPIDJSON_ASSERT(index < data_.a.size);
-        return GetElementsPointer()[index];
-    }
-    const GenericValue& operator[](SizeType index) const { return const_cast<GenericValue&>(*this)[index]; }
-
-    //! Element iterator
-    /*! \pre IsArray() == true */
-    ValueIterator Begin() { RAPIDJSON_ASSERT(IsArray()); return GetElementsPointer(); }
-    //! \em Past-the-end element iterator
-    /*! \pre IsArray() == true */
-    ValueIterator End() { RAPIDJSON_ASSERT(IsArray()); return GetElementsPointer() + data_.a.size; }
-    //! Constant element iterator
-    /*! \pre IsArray() == true */
-    ConstValueIterator Begin() const { return const_cast<GenericValue&>(*this).Begin(); }
-    //! Constant \em past-the-end element iterator
-    /*! \pre IsArray() == true */
-    ConstValueIterator End() const { return const_cast<GenericValue&>(*this).End(); }
-
-    //! Request the array to have enough capacity to store elements.
-    /*! \param newCapacity  The capacity that the array at least need to have.
-        \param allocator    Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator().
-        \return The value itself for fluent API.
-        \note Linear time complexity.
-    */
-    GenericValue& Reserve(SizeType newCapacity, Allocator &allocator) {
-        RAPIDJSON_ASSERT(IsArray());
-        if (newCapacity > data_.a.capacity) {
-            SetElementsPointer(reinterpret_cast<GenericValue*>(allocator.Realloc(GetElementsPointer(), data_.a.capacity * sizeof(GenericValue), newCapacity * sizeof(GenericValue))));
-            data_.a.capacity = newCapacity;
-        }
-        return *this;
-    }
-
-    //! Append a GenericValue at the end of the array.
-    /*! \param value        Value to be appended.
-        \param allocator    Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator().
-        \pre IsArray() == true
-        \post value.IsNull() == true
-        \return The value itself for fluent API.
-        \note The ownership of \c value will be transferred to this array on success.
-        \note If the number of elements to be appended is known, calls Reserve() once first may be more efficient.
-        \note Amortized constant time complexity.
-    */
-    GenericValue& PushBack(GenericValue& value, Allocator& allocator) {
-        RAPIDJSON_ASSERT(IsArray());
-        if (data_.a.size >= data_.a.capacity)
-            Reserve(data_.a.capacity == 0 ? kDefaultArrayCapacity : (data_.a.capacity + (data_.a.capacity + 1) / 2), allocator);
-        GetElementsPointer()[data_.a.size++].RawAssign(value);
-        return *this;
-    }
-
-#if RAPIDJSON_HAS_CXX11_RVALUE_REFS
-    GenericValue& PushBack(GenericValue&& value, Allocator& allocator) {
-        return PushBack(value, allocator);
-    }
-#endif // RAPIDJSON_HAS_CXX11_RVALUE_REFS
-
-    //! Append a constant string reference at the end of the array.
-    /*! \param value        Constant string reference to be appended.
-        \param allocator    Allocator for reallocating memory. It must be the same one used previously. Commonly use GenericDocument::GetAllocator().
-        \pre IsArray() == true
-        \return The value itself for fluent API.
-        \note If the number of elements to be appended is known, calls Reserve() once first may be more efficient.
-        \note Amortized constant time complexity.
-        \see GenericStringRef
-    */
-    GenericValue& PushBack(StringRefType value, Allocator& allocator) {
-        return (*this).template PushBack<StringRefType>(value, allocator);
-    }
-
-    //! Append a primitive value at the end of the array.
-    /*! \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t
-        \param value Value of primitive type T to be appended.
-        \param allocator    Allocator for reallocating memory. It must be the same one as used before. Commonly use GenericDocument::GetAllocator().
-        \pre IsArray() == true
-        \return The value itself for fluent API.
-        \note If the number of elements to be appended is known, calls Reserve() once first may be more efficient.
-
-        \note The source type \c T explicitly disallows all pointer types,
-            especially (\c const) \ref Ch*.  This helps avoiding implicitly
-            referencing character strings with insufficient lifetime, use
-            \ref PushBack(GenericValue&, Allocator&) or \ref
-            PushBack(StringRefType, Allocator&).
-            All other pointer types would implicitly convert to \c bool,
-            use an explicit cast instead, if needed.
-        \note Amortized constant time complexity.
-    */
-    template <typename T>
-    RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr<internal::IsPointer<T>, internal::IsGenericValue<T> >), (GenericValue&))
-    PushBack(T value, Allocator& allocator) {
-        GenericValue v(value);
-        return PushBack(v, allocator);
-    }
-
-    //! Remove the last element in the array.
-    /*!
-        \note Constant time complexity.
-    */
-    GenericValue& PopBack() {
-        RAPIDJSON_ASSERT(IsArray());
-        RAPIDJSON_ASSERT(!Empty());
-        GetElementsPointer()[--data_.a.size].~GenericValue();
-        return *this;
-    }
-
-    //! Remove an element of array by iterator.
-    /*!
-        \param pos iterator to the element to remove
-        \pre IsArray() == true && \ref Begin() <= \c pos < \ref End()
-        \return Iterator following the removed element. If the iterator pos refers to the last element, the End() iterator is returned.
-        \note Linear time complexity.
-    */
-    ValueIterator Erase(ConstValueIterator pos) {
-        return Erase(pos, pos + 1);
-    }
-
-    //! Remove elements in the range [first, last) of the array.
-    /*!
-        \param first iterator to the first element to remove
-        \param last  iterator following the last element to remove
-        \pre IsArray() == true && \ref Begin() <= \c first <= \c last <= \ref End()
-        \return Iterator following the last removed element.
-        \note Linear time complexity.
-    */
-    ValueIterator Erase(ConstValueIterator first, ConstValueIterator last) {
-        RAPIDJSON_ASSERT(IsArray());
-        RAPIDJSON_ASSERT(data_.a.size > 0);
-        RAPIDJSON_ASSERT(GetElementsPointer() != 0);
-        RAPIDJSON_ASSERT(first >= Begin());
-        RAPIDJSON_ASSERT(first <= last);
-        RAPIDJSON_ASSERT(last <= End());
-        ValueIterator pos = Begin() + (first - Begin());
-        for (ValueIterator itr = pos; itr != last; ++itr)
-            itr->~GenericValue();       
-        std::memmove(pos, last, static_cast<size_t>(End() - last) * sizeof(GenericValue));
-        data_.a.size -= static_cast<SizeType>(last - first);
-        return pos;
-    }
-
-    Array GetArray() { RAPIDJSON_ASSERT(IsArray()); return Array(*this); }
-    ConstArray GetArray() const { RAPIDJSON_ASSERT(IsArray()); return ConstArray(*this); }
-
-    //@}
-
-    //!@name Number
-    //@{
-
-    int GetInt() const          { RAPIDJSON_ASSERT(data_.f.flags & kIntFlag);   return data_.n.i.i;   }
-    unsigned GetUint() const    { RAPIDJSON_ASSERT(data_.f.flags & kUintFlag);  return data_.n.u.u;   }
-    int64_t GetInt64() const    { RAPIDJSON_ASSERT(data_.f.flags & kInt64Flag); return data_.n.i64; }
-    uint64_t GetUint64() const  { RAPIDJSON_ASSERT(data_.f.flags & kUint64Flag); return data_.n.u64; }
-
-    //! Get the value as double type.
-    /*! \note If the value is 64-bit integer type, it may lose precision. Use \c IsLosslessDouble() to check whether the converison is lossless.
-    */
-    double GetDouble() const {
-        RAPIDJSON_ASSERT(IsNumber());
-        if ((data_.f.flags & kDoubleFlag) != 0)                return data_.n.d;   // exact type, no conversion.
-        if ((data_.f.flags & kIntFlag) != 0)                   return data_.n.i.i; // int -> double
-        if ((data_.f.flags & kUintFlag) != 0)                  return data_.n.u.u; // unsigned -> double
-        if ((data_.f.flags & kInt64Flag) != 0)                 return static_cast<double>(data_.n.i64); // int64_t -> double (may lose precision)
-        RAPIDJSON_ASSERT((data_.f.flags & kUint64Flag) != 0);  return static_cast<double>(data_.n.u64); // uint64_t -> double (may lose precision)
-    }
-
-    //! Get the value as float type.
-    /*! \note If the value is 64-bit integer type, it may lose precision. Use \c IsLosslessFloat() to check whether the converison is lossless.
-    */
-    float GetFloat() const {
-        return static_cast<float>(GetDouble());
-    }
-
-    GenericValue& SetInt(int i)             { this->~GenericValue(); new (this) GenericValue(i);    return *this; }
-    GenericValue& SetUint(unsigned u)       { this->~GenericValue(); new (this) GenericValue(u);    return *this; }
-    GenericValue& SetInt64(int64_t i64)     { this->~GenericValue(); new (this) GenericValue(i64);  return *this; }
-    GenericValue& SetUint64(uint64_t u64)   { this->~GenericValue(); new (this) GenericValue(u64);  return *this; }
-    GenericValue& SetDouble(double d)       { this->~GenericValue(); new (this) GenericValue(d);    return *this; }
-    GenericValue& SetFloat(float f)         { this->~GenericValue(); new (this) GenericValue(f);    return *this; }
-
-    //@}
-
-    //!@name String
-    //@{
-
-    const Ch* GetString() const { RAPIDJSON_ASSERT(IsString()); return (data_.f.flags & kInlineStrFlag) ? data_.ss.str : GetStringPointer(); }
-
-    //! Get the length of string.
-    /*! Since rapidjson permits "\\u0000" in the json string, strlen(v.GetString()) may not equal to v.GetStringLength().
-    */
-    SizeType GetStringLength() const { RAPIDJSON_ASSERT(IsString()); return ((data_.f.flags & kInlineStrFlag) ? (data_.ss.GetLength()) : data_.s.length); }
-
-    //! Set this value as a string without copying source string.
-    /*! This version has better performance with supplied length, and also support string containing null character.
-        \param s source string pointer. 
-        \param length The length of source string, excluding the trailing null terminator.
-        \return The value itself for fluent API.
-        \post IsString() == true && GetString() == s && GetStringLength() == length
-        \see SetString(StringRefType)
-    */
-    GenericValue& SetString(const Ch* s, SizeType length) { return SetString(StringRef(s, length)); }
-
-    //! Set this value as a string without copying source string.
-    /*! \param s source string reference
-        \return The value itself for fluent API.
-        \post IsString() == true && GetString() == s && GetStringLength() == s.length
-    */
-    GenericValue& SetString(StringRefType s) { this->~GenericValue(); SetStringRaw(s); return *this; }
-
-    //! Set this value as a string by copying from source string.
-    /*! This version has better performance with supplied length, and also support string containing null character.
-        \param s source string. 
-        \param length The length of source string, excluding the trailing null terminator.
-        \param allocator Allocator for allocating copied buffer. Commonly use GenericDocument::GetAllocator().
-        \return The value itself for fluent API.
-        \post IsString() == true && GetString() != s && strcmp(GetString(),s) == 0 && GetStringLength() == length
-    */
-    GenericValue& SetString(const Ch* s, SizeType length, Allocator& allocator) { this->~GenericValue(); SetStringRaw(StringRef(s, length), allocator); return *this; }
-
-    //! Set this value as a string by copying from source string.
-    /*! \param s source string. 
-        \param allocator Allocator for allocating copied buffer. Commonly use GenericDocument::GetAllocator().
-        \return The value itself for fluent API.
-        \post IsString() == true && GetString() != s && strcmp(GetString(),s) == 0 && GetStringLength() == length
-    */
-    GenericValue& SetString(const Ch* s, Allocator& allocator) { return SetString(s, internal::StrLen(s), allocator); }
-
-#if RAPIDJSON_HAS_STDSTRING
-    //! Set this value as a string by copying from source string.
-    /*! \param s source string.
-        \param allocator Allocator for allocating copied buffer. Commonly use GenericDocument::GetAllocator().
-        \return The value itself for fluent API.
-        \post IsString() == true && GetString() != s.data() && strcmp(GetString(),s.data() == 0 && GetStringLength() == s.size()
-        \note Requires the definition of the preprocessor symbol \ref RAPIDJSON_HAS_STDSTRING.
-    */
-    GenericValue& SetString(const std::basic_string<Ch>& s, Allocator& allocator) { return SetString(s.data(), SizeType(s.size()), allocator); }
-#endif
-
-    //@}
-
-    //!@name Array
-    //@{
-
-    //! Templated version for checking whether this value is type T.
-    /*!
-        \tparam T Either \c bool, \c int, \c unsigned, \c int64_t, \c uint64_t, \c double, \c float, \c const \c char*, \c std::basic_string<Ch>
-    */
-    template <typename T>
-    bool Is() const { return internal::TypeHelper<ValueType, T>::Is(*this); }
-
-    template <typename T>
-    T Get() const { return internal::TypeHelper<ValueType, T>::Get(*this); }
-
-    template <typename T>
-    T Get() { return internal::TypeHelper<ValueType, T>::Get(*this); }
-
-    template<typename T>
-    ValueType& Set(const T& data) { return internal::TypeHelper<ValueType, T>::Set(*this, data); }
-
-    template<typename T>
-    ValueType& Set(const T& data, AllocatorType& allocator) { return internal::TypeHelper<ValueType, T>::Set(*this, data, allocator); }
-
-    //@}
-
-    //! Generate events of this value to a Handler.
-    /*! This function adopts the GoF visitor pattern.
-        Typical usage is to output this JSON value as JSON text via Writer, which is a Handler.
-        It can also be used to deep clone this value via GenericDocument, which is also a Handler.
-        \tparam Handler type of handler.
-        \param handler An object implementing concept Handler.
-    */
-    template <typename Handler>
-    bool Accept(Handler& handler) const {
-        switch(GetType()) {
-        case kNullType:     return handler.Null();
-        case kFalseType:    return handler.Bool(false);
-        case kTrueType:     return handler.Bool(true);
-
-        case kObjectType:
-            if (RAPIDJSON_UNLIKELY(!handler.StartObject()))
-                return false;
-            for (ConstMemberIterator m = MemberBegin(); m != MemberEnd(); ++m) {
-                RAPIDJSON_ASSERT(m->name.IsString()); // User may change the type of name by MemberIterator.
-                if (RAPIDJSON_UNLIKELY(!handler.Key(m->name.GetString(), m->name.GetStringLength(), (m->name.data_.f.flags & kCopyFlag) != 0)))
-                    return false;
-                if (RAPIDJSON_UNLIKELY(!m->value.Accept(handler)))
-                    return false;
-            }
-            return handler.EndObject(data_.o.size);
-
-        case kArrayType:
-            if (RAPIDJSON_UNLIKELY(!handler.StartArray()))
-                return false;
-            for (const GenericValue* v = Begin(); v != End(); ++v)
-                if (RAPIDJSON_UNLIKELY(!v->Accept(handler)))
-                    return false;
-            return handler.EndArray(data_.a.size);
-    
-        case kStringType:
-            return handler.String(GetString(), GetStringLength(), (data_.f.flags & kCopyFlag) != 0);
-    
-        default:
-            RAPIDJSON_ASSERT(GetType() == kNumberType);
-            if (IsDouble())         return handler.Double(data_.n.d);
-            else if (IsInt())       return handler.Int(data_.n.i.i);
-            else if (IsUint())      return handler.Uint(data_.n.u.u);
-            else if (IsInt64())     return handler.Int64(data_.n.i64);
-            else                    return handler.Uint64(data_.n.u64);
-        }
-    }
-
-private:
-    template <typename, typename> friend class GenericValue;
-    template <typename, typename, typename> friend class GenericDocument;
-
-    enum {
-        kBoolFlag       = 0x0008,
-        kNumberFlag     = 0x0010,
-        kIntFlag        = 0x0020,
-        kUintFlag       = 0x0040,
-        kInt64Flag      = 0x0080,
-        kUint64Flag     = 0x0100,
-        kDoubleFlag     = 0x0200,
-        kStringFlag     = 0x0400,
-        kCopyFlag       = 0x0800,
-        kInlineStrFlag  = 0x1000,
-
-        // Initial flags of different types.
-        kNullFlag = kNullType,
-        kTrueFlag = kTrueType | kBoolFlag,
-        kFalseFlag = kFalseType | kBoolFlag,
-        kNumberIntFlag = kNumberType | kNumberFlag | kIntFlag | kInt64Flag,
-        kNumberUintFlag = kNumberType | kNumberFlag | kUintFlag | kUint64Flag | kInt64Flag,
-        kNumberInt64Flag = kNumberType | kNumberFlag | kInt64Flag,
-        kNumberUint64Flag = kNumberType | kNumberFlag | kUint64Flag,
-        kNumberDoubleFlag = kNumberType | kNumberFlag | kDoubleFlag,
-        kNumberAnyFlag = kNumberType | kNumberFlag | kIntFlag | kInt64Flag | kUintFlag | kUint64Flag | kDoubleFlag,
-        kConstStringFlag = kStringType | kStringFlag,
-        kCopyStringFlag = kStringType | kStringFlag | kCopyFlag,
-        kShortStringFlag = kStringType | kStringFlag | kCopyFlag | kInlineStrFlag,
-        kObjectFlag = kObjectType,
-        kArrayFlag = kArrayType,
-
-        kTypeMask = 0x07
-    };
-
-    static const SizeType kDefaultArrayCapacity = 16;
-    static const SizeType kDefaultObjectCapacity = 16;
-
-    struct Flag {
-#if RAPIDJSON_48BITPOINTER_OPTIMIZATION
-        char payload[sizeof(SizeType) * 2 + 6];     // 2 x SizeType + lower 48-bit pointer
-#elif RAPIDJSON_64BIT
-        char payload[sizeof(SizeType) * 2 + sizeof(void*) + 6]; // 6 padding bytes
-#else
-        char payload[sizeof(SizeType) * 2 + sizeof(void*) + 2]; // 2 padding bytes
-#endif
-        uint16_t flags;
-    };
-
-    struct String {
-        SizeType length;
-        SizeType hashcode;  //!< reserved
-        const Ch* str;
-    };  // 12 bytes in 32-bit mode, 16 bytes in 64-bit mode
-
-    // implementation detail: ShortString can represent zero-terminated strings up to MaxSize chars
-    // (excluding the terminating zero) and store a value to determine the length of the contained
-    // string in the last character str[LenPos] by storing "MaxSize - length" there. If the string
-    // to store has the maximal length of MaxSize then str[LenPos] will be 0 and therefore act as
-    // the string terminator as well. For getting the string length back from that value just use
-    // "MaxSize - str[LenPos]".
-    // This allows to store 13-chars strings in 32-bit mode, 21-chars strings in 64-bit mode,
-    // 13-chars strings for RAPIDJSON_48BITPOINTER_OPTIMIZATION=1 inline (for `UTF8`-encoded strings).
-    struct ShortString {
-        enum { MaxChars = sizeof(static_cast<Flag*>(0)->payload) / sizeof(Ch), MaxSize = MaxChars - 1, LenPos = MaxSize };
-        Ch str[MaxChars];
-
-        inline static bool Usable(SizeType len) { return                       (MaxSize >= len); }
-        inline void     SetLength(SizeType len) { str[LenPos] = static_cast<Ch>(MaxSize -  len); }
-        inline SizeType GetLength() const       { return  static_cast<SizeType>(MaxSize -  str[LenPos]); }
-    };  // at most as many bytes as "String" above => 12 bytes in 32-bit mode, 16 bytes in 64-bit mode
-
-    // By using proper binary layout, retrieval of different integer types do not need conversions.
-    union Number {
-#if RAPIDJSON_ENDIAN == RAPIDJSON_LITTLEENDIAN
-        struct I {
-            int i;
-            char padding[4];
-        }i;
-        struct U {
-            unsigned u;
-            char padding2[4];
-        }u;
-#else
-        struct I {
-            char padding[4];
-            int i;
-        }i;
-        struct U {
-            char padding2[4];
-            unsigned u;
-        }u;
-#endif
-        int64_t i64;
-        uint64_t u64;
-        double d;
-    };  // 8 bytes
-
-    struct ObjectData {
-        SizeType size;
-        SizeType capacity;
-        Member* members;
-    };  // 12 bytes in 32-bit mode, 16 bytes in 64-bit mode
-
-    struct ArrayData {
-        SizeType size;
-        SizeType capacity;
-        GenericValue* elements;
-    };  // 12 bytes in 32-bit mode, 16 bytes in 64-bit mode
-
-    union Data {
-        String s;
-        ShortString ss;
-        Number n;
-        ObjectData o;
-        ArrayData a;
-        Flag f;
-    };  // 16 bytes in 32-bit mode, 24 bytes in 64-bit mode, 16 bytes in 64-bit with RAPIDJSON_48BITPOINTER_OPTIMIZATION
-
-    RAPIDJSON_FORCEINLINE const Ch* GetStringPointer() const { return RAPIDJSON_GETPOINTER(Ch, data_.s.str); }
-    RAPIDJSON_FORCEINLINE const Ch* SetStringPointer(const Ch* str) { return RAPIDJSON_SETPOINTER(Ch, data_.s.str, str); }
-    RAPIDJSON_FORCEINLINE GenericValue* GetElementsPointer() const { return RAPIDJSON_GETPOINTER(GenericValue, data_.a.elements); }
-    RAPIDJSON_FORCEINLINE GenericValue* SetElementsPointer(GenericValue* elements) { return RAPIDJSON_SETPOINTER(GenericValue, data_.a.elements, elements); }
-    RAPIDJSON_FORCEINLINE Member* GetMembersPointer() const { return RAPIDJSON_GETPOINTER(Member, data_.o.members); }
-    RAPIDJSON_FORCEINLINE Member* SetMembersPointer(Member* members) { return RAPIDJSON_SETPOINTER(Member, data_.o.members, members); }
-
-    // Initialize this value as array with initial data, without calling destructor.
-    void SetArrayRaw(GenericValue* values, SizeType count, Allocator& allocator) {
-        data_.f.flags = kArrayFlag;
-        if (count) {
-            GenericValue* e = static_cast<GenericValue*>(allocator.Malloc(count * sizeof(GenericValue)));
-            SetElementsPointer(e);
-            std::memcpy(e, values, count * sizeof(GenericValue));
-        }
-        else
-            SetElementsPointer(0);
-        data_.a.size = data_.a.capacity = count;
-    }
-
-    //! Initialize this value as object with initial data, without calling destructor.
-    void SetObjectRaw(Member* members, SizeType count, Allocator& allocator) {
-        data_.f.flags = kObjectFlag;
-        if (count) {
-            Member* m = static_cast<Member*>(allocator.Malloc(count * sizeof(Member)));
-            SetMembersPointer(m);
-            std::memcpy(m, members, count * sizeof(Member));
-        }
-        else
-            SetMembersPointer(0);
-        data_.o.size = data_.o.capacity = count;
-    }
-
-    //! Initialize this value as constant string, without calling destructor.
-    void SetStringRaw(StringRefType s) RAPIDJSON_NOEXCEPT {
-        data_.f.flags = kConstStringFlag;
-        SetStringPointer(s);
-        data_.s.length = s.length;
-    }
-
-    //! Initialize this value as copy string with initial data, without calling destructor.
-    void SetStringRaw(StringRefType s, Allocator& allocator) {
-        Ch* str = 0;
-        if (ShortString::Usable(s.length)) {
-            data_.f.flags = kShortStringFlag;
-            data_.ss.SetLength(s.length);
-            str = data_.ss.str;
-        } else {
-            data_.f.flags = kCopyStringFlag;
-            data_.s.length = s.length;
-            str = static_cast<Ch *>(allocator.Malloc((s.length + 1) * sizeof(Ch)));
-            SetStringPointer(str);
-        }
-        std::memcpy(str, s, s.length * sizeof(Ch));
-        str[s.length] = '\0';
-    }
-
-    //! Assignment without calling destructor
-    void RawAssign(GenericValue& rhs) RAPIDJSON_NOEXCEPT {
-        data_ = rhs.data_;
-        // data_.f.flags = rhs.data_.f.flags;
-        rhs.data_.f.flags = kNullFlag;
-    }
-
-    template <typename SourceAllocator>
-    bool StringEqual(const GenericValue<Encoding, SourceAllocator>& rhs) const {
-        RAPIDJSON_ASSERT(IsString());
-        RAPIDJSON_ASSERT(rhs.IsString());
-
-        const SizeType len1 = GetStringLength();
-        const SizeType len2 = rhs.GetStringLength();
-        if(len1 != len2) { return false; }
-
-        const Ch* const str1 = GetString();
-        const Ch* const str2 = rhs.GetString();
-        if(str1 == str2) { return true; } // fast path for constant string
-
-        return (std::memcmp(str1, str2, sizeof(Ch) * len1) == 0);
-    }
-
-    Data data_;
-};
-
-//! GenericValue with UTF8 encoding
-typedef GenericValue<UTF8<> > Value;
-
-///////////////////////////////////////////////////////////////////////////////
-// GenericDocument 
-
-//! A document for parsing JSON text as DOM.
-/*!
-    \note implements Handler concept
-    \tparam Encoding Encoding for both parsing and string storage.
-    \tparam Allocator Allocator for allocating memory for the DOM
-    \tparam StackAllocator Allocator for allocating memory for stack during parsing.
-    \warning Although GenericDocument inherits from GenericValue, the API does \b not provide any virtual functions, especially no virtual destructor.  To avoid memory leaks, do not \c delete a GenericDocument object via a pointer to a GenericValue.
-*/
-template <typename Encoding, typename Allocator = MemoryPoolAllocator<>, typename StackAllocator = CrtAllocator>
-class GenericDocument : public GenericValue<Encoding, Allocator> {
-public:
-    typedef typename Encoding::Ch Ch;                       //!< Character type derived from Encoding.
-    typedef GenericValue<Encoding, Allocator> ValueType;    //!< Value type of the document.
-    typedef Allocator AllocatorType;                        //!< Allocator type from template parameter.
-
-    //! Constructor
-    /*! Creates an empty document of specified type.
-        \param type             Mandatory type of object to create.
-        \param allocator        Optional allocator for allocating memory.
-        \param stackCapacity    Optional initial capacity of stack in bytes.
-        \param stackAllocator   Optional allocator for allocating memory for stack.
-    */
-    explicit GenericDocument(Type type, Allocator* allocator = 0, size_t stackCapacity = kDefaultStackCapacity, StackAllocator* stackAllocator = 0) :
-        GenericValue<Encoding, Allocator>(type),  allocator_(allocator), ownAllocator_(0), stack_(stackAllocator, stackCapacity), parseResult_()
-    {
-        if (!allocator_)
-            ownAllocator_ = allocator_ = RAPIDJSON_NEW(Allocator());
-    }
-
-    //! Constructor
-    /*! Creates an empty document which type is Null. 
-        \param allocator        Optional allocator for allocating memory.
-        \param stackCapacity    Optional initial capacity of stack in bytes.
-        \param stackAllocator   Optional allocator for allocating memory for stack.
-    */
-    GenericDocument(Allocator* allocator = 0, size_t stackCapacity = kDefaultStackCapacity, StackAllocator* stackAllocator = 0) : 
-        allocator_(allocator), ownAllocator_(0), stack_(stackAllocator, stackCapacity), parseResult_()
-    {
-        if (!allocator_)
-            ownAllocator_ = allocator_ = RAPIDJSON_NEW(Allocator());
-    }
-
-#if RAPIDJSON_HAS_CXX11_RVALUE_REFS
-    //! Move constructor in C++11
-    GenericDocument(GenericDocument&& rhs) RAPIDJSON_NOEXCEPT
-        : ValueType(std::forward<ValueType>(rhs)), // explicit cast to avoid prohibited move from Document
-          allocator_(rhs.allocator_),
-          ownAllocator_(rhs.ownAllocator_),
-          stack_(std::move(rhs.stack_)),
-          parseResult_(rhs.parseResult_)
-    {
-        rhs.allocator_ = 0;
-        rhs.ownAllocator_ = 0;
-        rhs.parseResult_ = ParseResult();
-    }
-#endif
-
-    ~GenericDocument() {
-        Destroy();
-    }
-
-#if RAPIDJSON_HAS_CXX11_RVALUE_REFS
-    //! Move assignment in C++11
-    GenericDocument& operator=(GenericDocument&& rhs) RAPIDJSON_NOEXCEPT
-    {
-        // The cast to ValueType is necessary here, because otherwise it would
-        // attempt to call GenericValue's templated assignment operator.
-        ValueType::operator=(std::forward<ValueType>(rhs));
-
-        // Calling the destructor here would prematurely call stack_'s destructor
-        Destroy();
-
-        allocator_ = rhs.allocator_;
-        ownAllocator_ = rhs.ownAllocator_;
-        stack_ = std::move(rhs.stack_);
-        parseResult_ = rhs.parseResult_;
-
-        rhs.allocator_ = 0;
-        rhs.ownAllocator_ = 0;
-        rhs.parseResult_ = ParseResult();
-
-        return *this;
-    }
-#endif
-
-    //! Exchange the contents of this document with those of another.
-    /*!
-        \param rhs Another document.
-        \note Constant complexity.
-        \see GenericValue::Swap
-    */
-    GenericDocument& Swap(GenericDocument& rhs) RAPIDJSON_NOEXCEPT {
-        ValueType::Swap(rhs);
-        stack_.Swap(rhs.stack_);
-        internal::Swap(allocator_, rhs.allocator_);
-        internal::Swap(ownAllocator_, rhs.ownAllocator_);
-        internal::Swap(parseResult_, rhs.parseResult_);
-        return *this;
-    }
-
-    //! free-standing swap function helper
-    /*!
-        Helper function to enable support for common swap implementation pattern based on \c std::swap:
-        \code
-        void swap(MyClass& a, MyClass& b) {
-            using std::swap;
-            swap(a.doc, b.doc);
-            // ...
-        }
-        \endcode
-        \see Swap()
-     */
-    friend inline void swap(GenericDocument& a, GenericDocument& b) RAPIDJSON_NOEXCEPT { a.Swap(b); }
-
-    //! Populate this document by a generator which produces SAX events.
-    /*! \tparam Generator A functor with <tt>bool f(Handler)</tt> prototype.
-        \param g Generator functor which sends SAX events to the parameter.
-        \return The document itself for fluent API.
-    */
-    template <typename Generator>
-    GenericDocument& Populate(Generator& g) {
-        ClearStackOnExit scope(*this);
-        if (g(*this)) {
-            RAPIDJSON_ASSERT(stack_.GetSize() == sizeof(ValueType)); // Got one and only one root object
-            ValueType::operator=(*stack_.template Pop<ValueType>(1));// Move value from stack to document
-        }
-        return *this;
-    }
-
-    //!@name Parse from stream
-    //!@{
-
-    //! Parse JSON text from an input stream (with Encoding conversion)
-    /*! \tparam parseFlags Combination of \ref ParseFlag.
-        \tparam SourceEncoding Encoding of input stream
-        \tparam InputStream Type of input stream, implementing Stream concept
-        \param is Input stream to be parsed.
-        \return The document itself for fluent API.
-    */
-    template <unsigned parseFlags, typename SourceEncoding, typename InputStream>
-    GenericDocument& ParseStream(InputStream& is) {
-        GenericReader<SourceEncoding, Encoding, StackAllocator> reader(
-            stack_.HasAllocator() ? &stack_.GetAllocator() : 0);
-        ClearStackOnExit scope(*this);
-        parseResult_ = reader.template Parse<parseFlags>(is, *this);
-        if (parseResult_) {
-            RAPIDJSON_ASSERT(stack_.GetSize() == sizeof(ValueType)); // Got one and only one root object
-            ValueType::operator=(*stack_.template Pop<ValueType>(1));// Move value from stack to document
-        }
-        return *this;
-    }
-
-    //! Parse JSON text from an input stream
-    /*! \tparam parseFlags Combination of \ref ParseFlag.
-        \tparam InputStream Type of input stream, implementing Stream concept
-        \param is Input stream to be parsed.
-        \return The document itself for fluent API.
-    */
-    template <unsigned parseFlags, typename InputStream>
-    GenericDocument& ParseStream(InputStream& is) {
-        return ParseStream<parseFlags, Encoding, InputStream>(is);
-    }
-
-    //! Parse JSON text from an input stream (with \ref kParseDefaultFlags)
-    /*! \tparam InputStream Type of input stream, implementing Stream concept
-        \param is Input stream to be parsed.
-        \return The document itself for fluent API.
-    */
-    template <typename InputStream>
-    GenericDocument& ParseStream(InputStream& is) {
-        return ParseStream<kParseDefaultFlags, Encoding, InputStream>(is);
-    }
-    //!@}
-
-    //!@name Parse in-place from mutable string
-    //!@{
-
-    //! Parse JSON text from a mutable string
-    /*! \tparam parseFlags Combination of \ref ParseFlag.
-        \param str Mutable zero-terminated string to be parsed.
-        \return The document itself for fluent API.
-    */
-    template <unsigned parseFlags>
-    GenericDocument& ParseInsitu(Ch* str) {
-        GenericInsituStringStream<Encoding> s(str);
-        return ParseStream<parseFlags | kParseInsituFlag>(s);
-    }
-
-    //! Parse JSON text from a mutable string (with \ref kParseDefaultFlags)
-    /*! \param str Mutable zero-terminated string to be parsed.
-        \return The document itself for fluent API.
-    */
-    GenericDocument& ParseInsitu(Ch* str) {
-        return ParseInsitu<kParseDefaultFlags>(str);
-    }
-    //!@}
-
-    //!@name Parse from read-only string
-    //!@{
-
-    //! Parse JSON text from a read-only string (with Encoding conversion)
-    /*! \tparam parseFlags Combination of \ref ParseFlag (must not contain \ref kParseInsituFlag).
-        \tparam SourceEncoding Transcoding from input Encoding
-        \param str Read-only zero-terminated string to be parsed.
-    */
-    template <unsigned parseFlags, typename SourceEncoding>
-    GenericDocument& Parse(const typename SourceEncoding::Ch* str) {
-        RAPIDJSON_ASSERT(!(parseFlags & kParseInsituFlag));
-        GenericStringStream<SourceEncoding> s(str);
-        return ParseStream<parseFlags, SourceEncoding>(s);
-    }
-
-    //! Parse JSON text from a read-only string
-    /*! \tparam parseFlags Combination of \ref ParseFlag (must not contain \ref kParseInsituFlag).
-        \param str Read-only zero-terminated string to be parsed.
-    */
-    template <unsigned parseFlags>
-    GenericDocument& Parse(const Ch* str) {
-        return Parse<parseFlags, Encoding>(str);
-    }
-
-    //! Parse JSON text from a read-only string (with \ref kParseDefaultFlags)
-    /*! \param str Read-only zero-terminated string to be parsed.
-    */
-    GenericDocument& Parse(const Ch* str) {
-        return Parse<kParseDefaultFlags>(str);
-    }
-
-    template <unsigned parseFlags, typename SourceEncoding>
-    GenericDocument& Parse(const typename SourceEncoding::Ch* str, size_t length) {
-        RAPIDJSON_ASSERT(!(parseFlags & kParseInsituFlag));
-        MemoryStream ms(static_cast<const char*>(str), length * sizeof(typename SourceEncoding::Ch));
-        EncodedInputStream<SourceEncoding, MemoryStream> is(ms);
-        ParseStream<parseFlags, SourceEncoding>(is);
-        return *this;
-    }
-
-    template <unsigned parseFlags>
-    GenericDocument& Parse(const Ch* str, size_t length) {
-        return Parse<parseFlags, Encoding>(str, length);
-    }
-    
-    GenericDocument& Parse(const Ch* str, size_t length) {
-        return Parse<kParseDefaultFlags>(str, length);
-    }
-
-#if RAPIDJSON_HAS_STDSTRING
-    template <unsigned parseFlags, typename SourceEncoding>
-    GenericDocument& Parse(const std::basic_string<typename SourceEncoding::Ch>& str) {
-        // c_str() is constant complexity according to standard. Should be faster than Parse(const char*, size_t)
-        return Parse<parseFlags, SourceEncoding>(str.c_str());
-    }
-
-    template <unsigned parseFlags>
-    GenericDocument& Parse(const std::basic_string<Ch>& str) {
-        return Parse<parseFlags, Encoding>(str.c_str());
-    }
-
-    GenericDocument& Parse(const std::basic_string<Ch>& str) {
-        return Parse<kParseDefaultFlags>(str);
-    }
-#endif // RAPIDJSON_HAS_STDSTRING    
-
-    //!@}
-
-    //!@name Handling parse errors
-    //!@{
-
-    //! Whether a parse error has occured in the last parsing.
-    bool HasParseError() const { return parseResult_.IsError(); }
-
-    //! Get the \ref ParseErrorCode of last parsing.
-    ParseErrorCode GetParseError() const { return parseResult_.Code(); }
-
-    //! Get the position of last parsing error in input, 0 otherwise.
-    size_t GetErrorOffset() const { return parseResult_.Offset(); }
-
-    //! Implicit conversion to get the last parse result
-#ifndef __clang // -Wdocumentation
-    /*! \return \ref ParseResult of the last parse operation
-
-        \code
-          Document doc;
-          ParseResult ok = doc.Parse(json);
-          if (!ok)
-            printf( "JSON parse error: %s (%u)\n", GetParseError_En(ok.Code()), ok.Offset());
-        \endcode
-     */
-#endif
-    operator ParseResult() const { return parseResult_; }
-    //!@}
-
-    //! Get the allocator of this document.
-    Allocator& GetAllocator() {
-        RAPIDJSON_ASSERT(allocator_);
-        return *allocator_;
-    }
-
-    //! Get the capacity of stack in bytes.
-    size_t GetStackCapacity() const { return stack_.GetCapacity(); }
-
-private:
-    // clear stack on any exit from ParseStream, e.g. due to exception
-    struct ClearStackOnExit {
-        explicit ClearStackOnExit(GenericDocument& d) : d_(d) {}
-        ~ClearStackOnExit() { d_.ClearStack(); }
-    private:
-        ClearStackOnExit(const ClearStackOnExit&);
-        ClearStackOnExit& operator=(const ClearStackOnExit&);
-        GenericDocument& d_;
-    };
-
-    // callers of the following private Handler functions
-    // template <typename,typename,typename> friend class GenericReader; // for parsing
-    template <typename, typename> friend class GenericValue; // for deep copying
-
-public:
-    // Implementation of Handler
-    bool Null() { new (stack_.template Push<ValueType>()) ValueType(); return true; }
-    bool Bool(bool b) { new (stack_.template Push<ValueType>()) ValueType(b); return true; }
-    bool Int(int i) { new (stack_.template Push<ValueType>()) ValueType(i); return true; }
-    bool Uint(unsigned i) { new (stack_.template Push<ValueType>()) ValueType(i); return true; }
-    bool Int64(int64_t i) { new (stack_.template Push<ValueType>()) ValueType(i); return true; }
-    bool Uint64(uint64_t i) { new (stack_.template Push<ValueType>()) ValueType(i); return true; }
-    bool Double(double d) { new (stack_.template Push<ValueType>()) ValueType(d); return true; }
-
-    bool RawNumber(const Ch* str, SizeType length, bool copy) { 
-        if (copy) 
-            new (stack_.template Push<ValueType>()) ValueType(str, length, GetAllocator());
-        else
-            new (stack_.template Push<ValueType>()) ValueType(str, length);
-        return true;
-    }
-
-    bool String(const Ch* str, SizeType length, bool copy) { 
-        if (copy) 
-            new (stack_.template Push<ValueType>()) ValueType(str, length, GetAllocator());
-        else
-            new (stack_.template Push<ValueType>()) ValueType(str, length);
-        return true;
-    }
-
-    bool StartObject() { new (stack_.template Push<ValueType>()) ValueType(kObjectType); return true; }
-    
-    bool Key(const Ch* str, SizeType length, bool copy) { return String(str, length, copy); }
-
-    bool EndObject(SizeType memberCount) {
-        typename ValueType::Member* members = stack_.template Pop<typename ValueType::Member>(memberCount);
-        stack_.template Top<ValueType>()->SetObjectRaw(members, memberCount, GetAllocator());
-        return true;
-    }
-
-    bool StartArray() { new (stack_.template Push<ValueType>()) ValueType(kArrayType); return true; }
-    
-    bool EndArray(SizeType elementCount) {
-        ValueType* elements = stack_.template Pop<ValueType>(elementCount);
-        stack_.template Top<ValueType>()->SetArrayRaw(elements, elementCount, GetAllocator());
-        return true;
-    }
-
-private:
-    //! Prohibit copying
-    GenericDocument(const GenericDocument&);
-    //! Prohibit assignment
-    GenericDocument& operator=(const GenericDocument&);
-
-    void ClearStack() {
-        if (Allocator::kNeedFree)
-            while (stack_.GetSize() > 0)    // Here assumes all elements in stack array are GenericValue (Member is actually 2 GenericValue objects)
-                (stack_.template Pop<ValueType>(1))->~ValueType();
-        else
-            stack_.Clear();
-        stack_.ShrinkToFit();
-    }
-
-    void Destroy() {
-        RAPIDJSON_DELETE(ownAllocator_);
-    }
-
-    static const size_t kDefaultStackCapacity = 1024;
-    Allocator* allocator_;
-    Allocator* ownAllocator_;
-    internal::Stack<StackAllocator> stack_;
-    ParseResult parseResult_;
-};
-
-//! GenericDocument with UTF8 encoding
-typedef GenericDocument<UTF8<> > Document;
-
-// defined here due to the dependency on GenericDocument
-template <typename Encoding, typename Allocator>
-template <typename SourceAllocator>
-inline
-GenericValue<Encoding,Allocator>::GenericValue(const GenericValue<Encoding,SourceAllocator>& rhs, Allocator& allocator)
-{
-    switch (rhs.GetType()) {
-    case kObjectType:
-    case kArrayType: { // perform deep copy via SAX Handler
-            GenericDocument<Encoding,Allocator> d(&allocator);
-            rhs.Accept(d);
-            RawAssign(*d.stack_.template Pop<GenericValue>(1));
-        }
-        break;
-    case kStringType:
-        if (rhs.data_.f.flags == kConstStringFlag) {
-            data_.f.flags = rhs.data_.f.flags;
-            data_  = *reinterpret_cast<const Data*>(&rhs.data_);
-        } else {
-            SetStringRaw(StringRef(rhs.GetString(), rhs.GetStringLength()), allocator);
-        }
-        break;
-    default:
-        data_.f.flags = rhs.data_.f.flags;
-        data_  = *reinterpret_cast<const Data*>(&rhs.data_);
-        break;
-    }
-}
-
-//! Helper class for accessing Value of array type.
-/*!
-    Instance of this helper class is obtained by \c GenericValue::GetArray().
-    In addition to all APIs for array type, it provides range-based for loop if \c RAPIDJSON_HAS_CXX11_RANGE_FOR=1.
-*/
-template <bool Const, typename ValueT>
-class GenericArray {
-public:
-    typedef GenericArray<true, ValueT> ConstArray;
-    typedef GenericArray<false, ValueT> Array;
-    typedef ValueT PlainType;
-    typedef typename internal::MaybeAddConst<Const,PlainType>::Type ValueType;
-    typedef ValueType* ValueIterator;  // This may be const or non-const iterator
-    typedef const ValueT* ConstValueIterator;
-    typedef typename ValueType::AllocatorType AllocatorType;
-    typedef typename ValueType::StringRefType StringRefType;
-
-    template <typename, typename>
-    friend class GenericValue;
-
-    GenericArray(const GenericArray& rhs) : value_(rhs.value_) {}
-    GenericArray& operator=(const GenericArray& rhs) { value_ = rhs.value_; return *this; }
-    ~GenericArray() {}
-
-    SizeType Size() const { return value_.Size(); }
-    SizeType Capacity() const { return value_.Capacity(); }
-    bool Empty() const { return value_.Empty(); }
-    void Clear() const { value_.Clear(); }
-    ValueType& operator[](SizeType index) const {  return value_[index]; }
-    ValueIterator Begin() const { return value_.Begin(); }
-    ValueIterator End() const { return value_.End(); }
-    GenericArray Reserve(SizeType newCapacity, AllocatorType &allocator) const { value_.Reserve(newCapacity, allocator); return *this; }
-    GenericArray PushBack(ValueType& value, AllocatorType& allocator) const { value_.PushBack(value, allocator); return *this; }
-#if RAPIDJSON_HAS_CXX11_RVALUE_REFS
-    GenericArray PushBack(ValueType&& value, AllocatorType& allocator) const { value_.PushBack(value, allocator); return *this; }
-#endif // RAPIDJSON_HAS_CXX11_RVALUE_REFS
-    GenericArray PushBack(StringRefType value, AllocatorType& allocator) const { value_.PushBack(value, allocator); return *this; }
-    template <typename T> RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr<internal::IsPointer<T>, internal::IsGenericValue<T> >), (const GenericArray&)) PushBack(T value, AllocatorType& allocator) const { value_.PushBack(value, allocator); return *this; }
-    GenericArray PopBack() const { value_.PopBack(); return *this; }
-    ValueIterator Erase(ConstValueIterator pos) const { return value_.Erase(pos); }
-    ValueIterator Erase(ConstValueIterator first, ConstValueIterator last) const { return value_.Erase(first, last); }
-
-#if RAPIDJSON_HAS_CXX11_RANGE_FOR
-    ValueIterator begin() const { return value_.Begin(); }
-    ValueIterator end() const { return value_.End(); }
-#endif
-
-private:
-    GenericArray();
-    GenericArray(ValueType& value) : value_(value) {}
-    ValueType& value_;
-};
-
-//! Helper class for accessing Value of object type.
-/*!
-    Instance of this helper class is obtained by \c GenericValue::GetObject().
-    In addition to all APIs for array type, it provides range-based for loop if \c RAPIDJSON_HAS_CXX11_RANGE_FOR=1.
-*/
-template <bool Const, typename ValueT>
-class GenericObject {
-public:
-    typedef GenericObject<true, ValueT> ConstObject;
-    typedef GenericObject<false, ValueT> Object;
-    typedef ValueT PlainType;
-    typedef typename internal::MaybeAddConst<Const,PlainType>::Type ValueType;
-    typedef GenericMemberIterator<Const, typename ValueT::EncodingType, typename ValueT::AllocatorType> MemberIterator;  // This may be const or non-const iterator
-    typedef GenericMemberIterator<true, typename ValueT::EncodingType, typename ValueT::AllocatorType> ConstMemberIterator;
-    typedef typename ValueType::AllocatorType AllocatorType;
-    typedef typename ValueType::StringRefType StringRefType;
-    typedef typename ValueType::EncodingType EncodingType;
-    typedef typename ValueType::Ch Ch;
-
-    template <typename, typename>
-    friend class GenericValue;
-
-    GenericObject(const GenericObject& rhs) : value_(rhs.value_) {}
-    GenericObject& operator=(const GenericObject& rhs) { value_ = rhs.value_; return *this; }
-    ~GenericObject() {}
-
-    SizeType MemberCount() const { return value_.MemberCount(); }
-    bool ObjectEmpty() const { return value_.ObjectEmpty(); }
-    template <typename T> ValueType& operator[](T* name) const { return value_[name]; }
-    template <typename SourceAllocator> ValueType& operator[](const GenericValue<EncodingType, SourceAllocator>& name) const { return value_[name]; }
-#if RAPIDJSON_HAS_STDSTRING
-    ValueType& operator[](const std::basic_string<Ch>& name) const { return value_[name]; }
-#endif
-    MemberIterator MemberBegin() const { return value_.MemberBegin(); }
-    MemberIterator MemberEnd() const { return value_.MemberEnd(); }
-    bool HasMember(const Ch* name) const { return value_.HasMember(name); }
-#if RAPIDJSON_HAS_STDSTRING
-    bool HasMember(const std::basic_string<Ch>& name) const { return value_.HasMember(name); }
-#endif
-    template <typename SourceAllocator> bool HasMember(const GenericValue<EncodingType, SourceAllocator>& name) const { return value_.HasMember(name); }
-    MemberIterator FindMember(const Ch* name) const { value_.FindMember(name); }
-    template <typename SourceAllocator> MemberIterator FindMember(const GenericValue<EncodingType, SourceAllocator>& name) const { value_.FindMember(name); }
-#if RAPIDJSON_HAS_STDSTRING
-    MemberIterator FindMember(const std::basic_string<Ch>& name) const { return value_.FindMember(name); }
-#endif
-    GenericObject AddMember(ValueType& name, ValueType& value, AllocatorType& allocator) const { value_.AddMember(name, value, allocator); return *this; }
-    GenericObject AddMember(ValueType& name, StringRefType value, AllocatorType& allocator) const { value_.AddMember(name, value, allocator); return *this; }
-#if RAPIDJSON_HAS_STDSTRING
-    GenericObject AddMember(ValueType& name, std::basic_string<Ch>& value, AllocatorType& allocator) const { value_.AddMember(name, value, allocator); return *this; }
-#endif
-    template <typename T> RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr<internal::IsPointer<T>, internal::IsGenericValue<T> >), (ValueType&)) AddMember(ValueType& name, T value, AllocatorType& allocator) const { value_.AddMember(name, value, allocator); return *this; }
-#if RAPIDJSON_HAS_CXX11_RVALUE_REFS
-    GenericObject AddMember(ValueType&& name, ValueType&& value, AllocatorType& allocator) const { value_.AddMember(name, value, allocator); return *this; }
-    GenericObject AddMember(ValueType&& name, ValueType& value, AllocatorType& allocator) const { value_.AddMember(name, value, allocator); return *this; }
-    GenericObject AddMember(ValueType& name, ValueType&& value, AllocatorType& allocator) const { value_.AddMember(name, value, allocator); return *this; }
-    GenericObject AddMember(StringRefType name, ValueType&& value, AllocatorType& allocator) const { value_.AddMember(name, value, allocator); return *this; }
-#endif // RAPIDJSON_HAS_CXX11_RVALUE_REFS
-    GenericObject AddMember(StringRefType name, ValueType& value, AllocatorType& allocator) const { value_.AddMember(name, value, allocator); return *this; }
-    GenericObject AddMember(StringRefType name, StringRefType value, AllocatorType& allocator) const { value_.AddMember(name, value, allocator); return *this; }
-    template <typename T> RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr<internal::IsPointer<T>, internal::IsGenericValue<T> >), (GenericObject)) AddMember(StringRefType name, T value, AllocatorType& allocator) const { value_.AddMember(name, value, allocator); return *this; }
-    void RemoveAllMembers() { return value_.RemoveAllMembers(); }
-    bool RemoveMember(const Ch* name) const { return value_.RemoveMember(name); }
-#if RAPIDJSON_HAS_STDSTRING
-    bool RemoveMember(const std::basic_string<Ch>& name) const { return value_.RemoveMember(name); }
-#endif
-    template <typename SourceAllocator> bool RemoveMember(const GenericValue<EncodingType, SourceAllocator>& name) const { return value_.RemoveMember(name); }
-    MemberIterator RemoveMember(MemberIterator m) const { return value_.RemoveMember(m); }
-    MemberIterator EraseMember(ConstMemberIterator pos) const { return value_.EraseMember(pos); }
-    MemberIterator EraseMember(ConstMemberIterator first, ConstMemberIterator last) const { return value_.EraseMember(first, last); }
-    bool EraseMember(const Ch* name) const { return value_.EraseMember(name); }
-#if RAPIDJSON_HAS_STDSTRING
-    bool EraseMember(const std::basic_string<Ch>& name) const { return EraseMember(ValueType(StringRef(name))); }
-#endif
-    template <typename SourceAllocator> bool EraseMember(const GenericValue<EncodingType, SourceAllocator>& name) const { return value_.EraseMember(name); }
-
-#if RAPIDJSON_HAS_CXX11_RANGE_FOR
-    MemberIterator begin() const { return value_.MemberBegin(); }
-    MemberIterator end() const { return value_.MemberEnd(); }
-#endif
-
-private:
-    GenericObject();
-    GenericObject(ValueType& value) : value_(value) {}
-    ValueType& value_;
-};
-
-RAPIDJSON_NAMESPACE_END
-
-#ifdef _MSC_VER
-RAPIDJSON_DIAG_POP
-#endif
-
-#ifdef __clang__
-RAPIDJSON_DIAG_POP
-#endif
-
-#ifdef __GNUC__
-RAPIDJSON_DIAG_POP
-#endif
-
-#endif // RAPIDJSON_DOCUMENT_H_
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/encodedstream.h b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/encodedstream.h
deleted file mode 100644
index c402e5c..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/encodedstream.h
+++ /dev/null
@@ -1,295 +0,0 @@
-// Tencent is pleased to support the open source community by making RapidJSON available.
-// 
-// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
-//
-// Licensed under the MIT License (the "License"); you may not use this file except
-// in compliance with the License. You may obtain a copy of the License at
-//
-// http://opensource.org/licenses/MIT
-//
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
-// specific language governing permissions and limitations under the License.
-
-#ifndef RAPIDJSON_ENCODEDSTREAM_H_
-#define RAPIDJSON_ENCODEDSTREAM_H_
-
-#include "stream.h"
-#include "memorystream.h"
-
-#ifdef __GNUC__
-RAPIDJSON_DIAG_PUSH
-RAPIDJSON_DIAG_OFF(effc++)
-#endif
-
-#ifdef __clang__
-RAPIDJSON_DIAG_PUSH
-RAPIDJSON_DIAG_OFF(padded)
-#endif
-
-RAPIDJSON_NAMESPACE_BEGIN
-
-//! Input byte stream wrapper with a statically bound encoding.
-/*!
-    \tparam Encoding The interpretation of encoding of the stream. Either UTF8, UTF16LE, UTF16BE, UTF32LE, UTF32BE.
-    \tparam InputByteStream Type of input byte stream. For example, FileReadStream.
-*/
-template <typename Encoding, typename InputByteStream>
-class EncodedInputStream {
-    RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1);
-public:
-    typedef typename Encoding::Ch Ch;
-
-    EncodedInputStream(InputByteStream& is) : is_(is) { 
-        current_ = Encoding::TakeBOM(is_);
-    }
-
-    Ch Peek() const { return current_; }
-    Ch Take() { Ch c = current_; current_ = Encoding::Take(is_); return c; }
-    size_t Tell() const { return is_.Tell(); }
-
-    // Not implemented
-    void Put(Ch) { RAPIDJSON_ASSERT(false); }
-    void Flush() { RAPIDJSON_ASSERT(false); } 
-    Ch* PutBegin() { RAPIDJSON_ASSERT(false); return 0; }
-    size_t PutEnd(Ch*) { RAPIDJSON_ASSERT(false); return 0; }
-
-private:
-    EncodedInputStream(const EncodedInputStream&);
-    EncodedInputStream& operator=(const EncodedInputStream&);
-
-    InputByteStream& is_;
-    Ch current_;
-};
-
-//! Specialized for UTF8 MemoryStream.
-template <>
-class EncodedInputStream<UTF8<>, MemoryStream> {
-public:
-    typedef UTF8<>::Ch Ch;
-
-    EncodedInputStream(MemoryStream& is) : is_(is) {
-        if (static_cast<unsigned char>(is_.Peek()) == 0xEFu) is_.Take();
-        if (static_cast<unsigned char>(is_.Peek()) == 0xBBu) is_.Take();
-        if (static_cast<unsigned char>(is_.Peek()) == 0xBFu) is_.Take();
-    }
-    Ch Peek() const { return is_.Peek(); }
-    Ch Take() { return is_.Take(); }
-    size_t Tell() const { return is_.Tell(); }
-
-    // Not implemented
-    void Put(Ch) {}
-    void Flush() {} 
-    Ch* PutBegin() { return 0; }
-    size_t PutEnd(Ch*) { return 0; }
-
-    MemoryStream& is_;
-};
-
-//! Output byte stream wrapper with statically bound encoding.
-/*!
-    \tparam Encoding The interpretation of encoding of the stream. Either UTF8, UTF16LE, UTF16BE, UTF32LE, UTF32BE.
-    \tparam OutputByteStream Type of input byte stream. For example, FileWriteStream.
-*/
-template <typename Encoding, typename OutputByteStream>
-class EncodedOutputStream {
-    RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1);
-public:
-    typedef typename Encoding::Ch Ch;
-
-    EncodedOutputStream(OutputByteStream& os, bool putBOM = true) : os_(os) { 
-        if (putBOM)
-            Encoding::PutBOM(os_);
-    }
-
-    void Put(Ch c) { Encoding::Put(os_, c);  }
-    void Flush() { os_.Flush(); }
-
-    // Not implemented
-    Ch Peek() const { RAPIDJSON_ASSERT(false); return 0;}
-    Ch Take() { RAPIDJSON_ASSERT(false); return 0;}
-    size_t Tell() const { RAPIDJSON_ASSERT(false);  return 0; }
-    Ch* PutBegin() { RAPIDJSON_ASSERT(false); return 0; }
-    size_t PutEnd(Ch*) { RAPIDJSON_ASSERT(false); return 0; }
-
-private:
-    EncodedOutputStream(const EncodedOutputStream&);
-    EncodedOutputStream& operator=(const EncodedOutputStream&);
-
-    OutputByteStream& os_;
-};
-
-#define RAPIDJSON_ENCODINGS_FUNC(x) UTF8<Ch>::x, UTF16LE<Ch>::x, UTF16BE<Ch>::x, UTF32LE<Ch>::x, UTF32BE<Ch>::x
-
-//! Input stream wrapper with dynamically bound encoding and automatic encoding detection.
-/*!
-    \tparam CharType Type of character for reading.
-    \tparam InputByteStream type of input byte stream to be wrapped.
-*/
-template <typename CharType, typename InputByteStream>
-class AutoUTFInputStream {
-    RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1);
-public:
-    typedef CharType Ch;
-
-    //! Constructor.
-    /*!
-        \param is input stream to be wrapped.
-        \param type UTF encoding type if it is not detected from the stream.
-    */
-    AutoUTFInputStream(InputByteStream& is, UTFType type = kUTF8) : is_(&is), type_(type), hasBOM_(false) {
-        RAPIDJSON_ASSERT(type >= kUTF8 && type <= kUTF32BE);        
-        DetectType();
-        static const TakeFunc f[] = { RAPIDJSON_ENCODINGS_FUNC(Take) };
-        takeFunc_ = f[type_];
-        current_ = takeFunc_(*is_);
-    }
-
-    UTFType GetType() const { return type_; }
-    bool HasBOM() const { return hasBOM_; }
-
-    Ch Peek() const { return current_; }
-    Ch Take() { Ch c = current_; current_ = takeFunc_(*is_); return c; }
-    size_t Tell() const { return is_->Tell(); }
-
-    // Not implemented
-    void Put(Ch) { RAPIDJSON_ASSERT(false); }
-    void Flush() { RAPIDJSON_ASSERT(false); } 
-    Ch* PutBegin() { RAPIDJSON_ASSERT(false); return 0; }
-    size_t PutEnd(Ch*) { RAPIDJSON_ASSERT(false); return 0; }
-
-private:
-    AutoUTFInputStream(const AutoUTFInputStream&);
-    AutoUTFInputStream& operator=(const AutoUTFInputStream&);
-
-    // Detect encoding type with BOM or RFC 4627
-    void DetectType() {
-        // BOM (Byte Order Mark):
-        // 00 00 FE FF  UTF-32BE
-        // FF FE 00 00  UTF-32LE
-        // FE FF        UTF-16BE
-        // FF FE        UTF-16LE
-        // EF BB BF     UTF-8
-
-        const unsigned char* c = reinterpret_cast<const unsigned char *>(is_->Peek4());
-        if (!c)
-            return;
-
-        unsigned bom = static_cast<unsigned>(c[0] | (c[1] << 8) | (c[2] << 16) | (c[3] << 24));
-        hasBOM_ = false;
-        if (bom == 0xFFFE0000)                  { type_ = kUTF32BE; hasBOM_ = true; is_->Take(); is_->Take(); is_->Take(); is_->Take(); }
-        else if (bom == 0x0000FEFF)             { type_ = kUTF32LE; hasBOM_ = true; is_->Take(); is_->Take(); is_->Take(); is_->Take(); }
-        else if ((bom & 0xFFFF) == 0xFFFE)      { type_ = kUTF16BE; hasBOM_ = true; is_->Take(); is_->Take();                           }
-        else if ((bom & 0xFFFF) == 0xFEFF)      { type_ = kUTF16LE; hasBOM_ = true; is_->Take(); is_->Take();                           }
-        else if ((bom & 0xFFFFFF) == 0xBFBBEF)  { type_ = kUTF8;    hasBOM_ = true; is_->Take(); is_->Take(); is_->Take();              }
-
-        // RFC 4627: Section 3
-        // "Since the first two characters of a JSON text will always be ASCII
-        // characters [RFC0020], it is possible to determine whether an octet
-        // stream is UTF-8, UTF-16 (BE or LE), or UTF-32 (BE or LE) by looking
-        // at the pattern of nulls in the first four octets."
-        // 00 00 00 xx  UTF-32BE
-        // 00 xx 00 xx  UTF-16BE
-        // xx 00 00 00  UTF-32LE
-        // xx 00 xx 00  UTF-16LE
-        // xx xx xx xx  UTF-8
-
-        if (!hasBOM_) {
-            unsigned pattern = (c[0] ? 1 : 0) | (c[1] ? 2 : 0) | (c[2] ? 4 : 0) | (c[3] ? 8 : 0);
-            switch (pattern) {
-            case 0x08: type_ = kUTF32BE; break;
-            case 0x0A: type_ = kUTF16BE; break;
-            case 0x01: type_ = kUTF32LE; break;
-            case 0x05: type_ = kUTF16LE; break;
-            case 0x0F: type_ = kUTF8;    break;
-            default: break; // Use type defined by user.
-            }
-        }
-
-        // Runtime check whether the size of character type is sufficient. It only perform checks with assertion.
-        if (type_ == kUTF16LE || type_ == kUTF16BE) RAPIDJSON_ASSERT(sizeof(Ch) >= 2);
-        if (type_ == kUTF32LE || type_ == kUTF32BE) RAPIDJSON_ASSERT(sizeof(Ch) >= 4);
-    }
-
-    typedef Ch (*TakeFunc)(InputByteStream& is);
-    InputByteStream* is_;
-    UTFType type_;
-    Ch current_;
-    TakeFunc takeFunc_;
-    bool hasBOM_;
-};
-
-//! Output stream wrapper with dynamically bound encoding and automatic encoding detection.
-/*!
-    \tparam CharType Type of character for writing.
-    \tparam OutputByteStream type of output byte stream to be wrapped.
-*/
-template <typename CharType, typename OutputByteStream>
-class AutoUTFOutputStream {
-    RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1);
-public:
-    typedef CharType Ch;
-
-    //! Constructor.
-    /*!
-        \param os output stream to be wrapped.
-        \param type UTF encoding type.
-        \param putBOM Whether to write BOM at the beginning of the stream.
-    */
-    AutoUTFOutputStream(OutputByteStream& os, UTFType type, bool putBOM) : os_(&os), type_(type) {
-        RAPIDJSON_ASSERT(type >= kUTF8 && type <= kUTF32BE);
-
-        // Runtime check whether the size of character type is sufficient. It only perform checks with assertion.
-        if (type_ == kUTF16LE || type_ == kUTF16BE) RAPIDJSON_ASSERT(sizeof(Ch) >= 2);
-        if (type_ == kUTF32LE || type_ == kUTF32BE) RAPIDJSON_ASSERT(sizeof(Ch) >= 4);
-
-        static const PutFunc f[] = { RAPIDJSON_ENCODINGS_FUNC(Put) };
-        putFunc_ = f[type_];
-
-        if (putBOM)
-            PutBOM();
-    }
-
-    UTFType GetType() const { return type_; }
-
-    void Put(Ch c) { putFunc_(*os_, c); }
-    void Flush() { os_->Flush(); } 
-
-    // Not implemented
-    Ch Peek() const { RAPIDJSON_ASSERT(false); return 0;}
-    Ch Take() { RAPIDJSON_ASSERT(false); return 0;}
-    size_t Tell() const { RAPIDJSON_ASSERT(false); return 0; }
-    Ch* PutBegin() { RAPIDJSON_ASSERT(false); return 0; }
-    size_t PutEnd(Ch*) { RAPIDJSON_ASSERT(false); return 0; }
-
-private:
-    AutoUTFOutputStream(const AutoUTFOutputStream&);
-    AutoUTFOutputStream& operator=(const AutoUTFOutputStream&);
-
-    void PutBOM() { 
-        typedef void (*PutBOMFunc)(OutputByteStream&);
-        static const PutBOMFunc f[] = { RAPIDJSON_ENCODINGS_FUNC(PutBOM) };
-        f[type_](*os_);
-    }
-
-    typedef void (*PutFunc)(OutputByteStream&, Ch);
-
-    OutputByteStream* os_;
-    UTFType type_;
-    PutFunc putFunc_;
-};
-
-#undef RAPIDJSON_ENCODINGS_FUNC
-
-RAPIDJSON_NAMESPACE_END
-
-#ifdef __clang__
-RAPIDJSON_DIAG_POP
-#endif
-
-#ifdef __GNUC__
-RAPIDJSON_DIAG_POP
-#endif
-
-#endif // RAPIDJSON_FILESTREAM_H_
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/encodings.h b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/encodings.h
deleted file mode 100644
index edfc990..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/encodings.h
+++ /dev/null
@@ -1,712 +0,0 @@
-// Tencent is pleased to support the open source community by making RapidJSON available.
-// 
-// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
-//
-// Licensed under the MIT License (the "License"); you may not use this file except
-// in compliance with the License. You may obtain a copy of the License at
-//
-// http://opensource.org/licenses/MIT
-//
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
-// specific language governing permissions and limitations under the License.
-
-#ifndef RAPIDJSON_ENCODINGS_H_
-#define RAPIDJSON_ENCODINGS_H_
-
-#include "rapidjson.h"
-
-#ifdef _MSC_VER
-RAPIDJSON_DIAG_PUSH
-RAPIDJSON_DIAG_OFF(4244) // conversion from 'type1' to 'type2', possible loss of data
-RAPIDJSON_DIAG_OFF(4702)  // unreachable code
-#elif defined(__GNUC__)
-RAPIDJSON_DIAG_PUSH
-RAPIDJSON_DIAG_OFF(effc++)
-RAPIDJSON_DIAG_OFF(overflow)
-#endif
-
-RAPIDJSON_NAMESPACE_BEGIN
-
-///////////////////////////////////////////////////////////////////////////////
-// Encoding
-
-/*! \class rapidjson::Encoding
-    \brief Concept for encoding of Unicode characters.
-
-\code
-concept Encoding {
-    typename Ch;    //! Type of character. A "character" is actually a code unit in unicode's definition.
-
-    enum { supportUnicode = 1 }; // or 0 if not supporting unicode
-
-    //! \brief Encode a Unicode codepoint to an output stream.
-    //! \param os Output stream.
-    //! \param codepoint An unicode codepoint, ranging from 0x0 to 0x10FFFF inclusively.
-    template<typename OutputStream>
-    static void Encode(OutputStream& os, unsigned codepoint);
-
-    //! \brief Decode a Unicode codepoint from an input stream.
-    //! \param is Input stream.
-    //! \param codepoint Output of the unicode codepoint.
-    //! \return true if a valid codepoint can be decoded from the stream.
-    template <typename InputStream>
-    static bool Decode(InputStream& is, unsigned* codepoint);
-
-    //! \brief Validate one Unicode codepoint from an encoded stream.
-    //! \param is Input stream to obtain codepoint.
-    //! \param os Output for copying one codepoint.
-    //! \return true if it is valid.
-    //! \note This function just validating and copying the codepoint without actually decode it.
-    template <typename InputStream, typename OutputStream>
-    static bool Validate(InputStream& is, OutputStream& os);
-
-    // The following functions are deal with byte streams.
-
-    //! Take a character from input byte stream, skip BOM if exist.
-    template <typename InputByteStream>
-    static CharType TakeBOM(InputByteStream& is);
-
-    //! Take a character from input byte stream.
-    template <typename InputByteStream>
-    static Ch Take(InputByteStream& is);
-
-    //! Put BOM to output byte stream.
-    template <typename OutputByteStream>
-    static void PutBOM(OutputByteStream& os);
-
-    //! Put a character to output byte stream.
-    template <typename OutputByteStream>
-    static void Put(OutputByteStream& os, Ch c);
-};
-\endcode
-*/
-
-///////////////////////////////////////////////////////////////////////////////
-// UTF8
-
-//! UTF-8 encoding.
-/*! http://en.wikipedia.org/wiki/UTF-8
-    http://tools.ietf.org/html/rfc3629
-    \tparam CharType Code unit for storing 8-bit UTF-8 data. Default is char.
-    \note implements Encoding concept
-*/
-template<typename CharType = char>
-struct UTF8 {
-    typedef CharType Ch;
-
-    enum { supportUnicode = 1 };
-
-    template<typename OutputStream>
-    static void Encode(OutputStream& os, unsigned codepoint) {
-        if (codepoint <= 0x7F) 
-            os.Put(static_cast<Ch>(codepoint & 0xFF));
-        else if (codepoint <= 0x7FF) {
-            os.Put(static_cast<Ch>(0xC0 | ((codepoint >> 6) & 0xFF)));
-            os.Put(static_cast<Ch>(0x80 | ((codepoint & 0x3F))));
-        }
-        else if (codepoint <= 0xFFFF) {
-            os.Put(static_cast<Ch>(0xE0 | ((codepoint >> 12) & 0xFF)));
-            os.Put(static_cast<Ch>(0x80 | ((codepoint >> 6) & 0x3F)));
-            os.Put(static_cast<Ch>(0x80 | (codepoint & 0x3F)));
-        }
-        else {
-            RAPIDJSON_ASSERT(codepoint <= 0x10FFFF);
-            os.Put(static_cast<Ch>(0xF0 | ((codepoint >> 18) & 0xFF)));
-            os.Put(static_cast<Ch>(0x80 | ((codepoint >> 12) & 0x3F)));
-            os.Put(static_cast<Ch>(0x80 | ((codepoint >> 6) & 0x3F)));
-            os.Put(static_cast<Ch>(0x80 | (codepoint & 0x3F)));
-        }
-    }
-
-    template<typename OutputStream>
-    static void EncodeUnsafe(OutputStream& os, unsigned codepoint) {
-        if (codepoint <= 0x7F) 
-            PutUnsafe(os, static_cast<Ch>(codepoint & 0xFF));
-        else if (codepoint <= 0x7FF) {
-            PutUnsafe(os, static_cast<Ch>(0xC0 | ((codepoint >> 6) & 0xFF)));
-            PutUnsafe(os, static_cast<Ch>(0x80 | ((codepoint & 0x3F))));
-        }
-        else if (codepoint <= 0xFFFF) {
-            PutUnsafe(os, static_cast<Ch>(0xE0 | ((codepoint >> 12) & 0xFF)));
-            PutUnsafe(os, static_cast<Ch>(0x80 | ((codepoint >> 6) & 0x3F)));
-            PutUnsafe(os, static_cast<Ch>(0x80 | (codepoint & 0x3F)));
-        }
-        else {
-            RAPIDJSON_ASSERT(codepoint <= 0x10FFFF);
-            PutUnsafe(os, static_cast<Ch>(0xF0 | ((codepoint >> 18) & 0xFF)));
-            PutUnsafe(os, static_cast<Ch>(0x80 | ((codepoint >> 12) & 0x3F)));
-            PutUnsafe(os, static_cast<Ch>(0x80 | ((codepoint >> 6) & 0x3F)));
-            PutUnsafe(os, static_cast<Ch>(0x80 | (codepoint & 0x3F)));
-        }
-    }
-
-    template <typename InputStream>
-    static bool Decode(InputStream& is, unsigned* codepoint) {
-#define COPY() c = is.Take(); *codepoint = (*codepoint << 6) | (static_cast<unsigned char>(c) & 0x3Fu)
-#define TRANS(mask) result &= ((GetRange(static_cast<unsigned char>(c)) & mask) != 0)
-#define TAIL() COPY(); TRANS(0x70)
-        typename InputStream::Ch c = is.Take();
-        if (!(c & 0x80)) {
-            *codepoint = static_cast<unsigned char>(c);
-            return true;
-        }
-
-        unsigned char type = GetRange(static_cast<unsigned char>(c));
-        *codepoint = (0xFF >> type) & static_cast<unsigned char>(c);
-        bool result = true;
-        switch (type) {
-        case 2: TAIL(); return result;
-        case 3: TAIL(); TAIL(); return result;
-        case 4: COPY(); TRANS(0x50); TAIL(); return result;
-        case 5: COPY(); TRANS(0x10); TAIL(); TAIL(); return result;
-        case 6: TAIL(); TAIL(); TAIL(); return result;
-        case 10: COPY(); TRANS(0x20); TAIL(); return result;
-        case 11: COPY(); TRANS(0x60); TAIL(); TAIL(); return result;
-        default: return false;
-        }
-#undef COPY
-#undef TRANS
-#undef TAIL
-    }
-
-    template <typename InputStream, typename OutputStream>
-    static bool Validate(InputStream& is, OutputStream& os) {
-#define COPY() os.Put(c = is.Take())
-#define TRANS(mask) result &= ((GetRange(static_cast<unsigned char>(c)) & mask) != 0)
-#define TAIL() COPY(); TRANS(0x70)
-        Ch c;
-        COPY();
-        if (!(c & 0x80))
-            return true;
-
-        bool result = true;
-        switch (GetRange(static_cast<unsigned char>(c))) {
-        case 2: TAIL(); return result;
-        case 3: TAIL(); TAIL(); return result;
-        case 4: COPY(); TRANS(0x50); TAIL(); return result;
-        case 5: COPY(); TRANS(0x10); TAIL(); TAIL(); return result;
-        case 6: TAIL(); TAIL(); TAIL(); return result;
-        case 10: COPY(); TRANS(0x20); TAIL(); return result;
-        case 11: COPY(); TRANS(0x60); TAIL(); TAIL(); return result;
-        default: return false;
-        }
-#undef COPY
-#undef TRANS
-#undef TAIL
-    }
-
-    static unsigned char GetRange(unsigned char c) {
-        // Referring to DFA of http://bjoern.hoehrmann.de/utf-8/decoder/dfa/
-        // With new mapping 1 -> 0x10, 7 -> 0x20, 9 -> 0x40, such that AND operation can test multiple types.
-        static const unsigned char type[] = {
-            0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-            0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-            0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-            0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-            0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,
-            0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x40,
-            0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-            0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,
-            8,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,  2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
-            10,3,3,3,3,3,3,3,3,3,3,3,3,4,3,3, 11,6,6,6,5,8,8,8,8,8,8,8,8,8,8,8,
-        };
-        return type[c];
-    }
-
-    template <typename InputByteStream>
-    static CharType TakeBOM(InputByteStream& is) {
-        RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1);
-        typename InputByteStream::Ch c = Take(is);
-        if (static_cast<unsigned char>(c) != 0xEFu) return c;
-        c = is.Take();
-        if (static_cast<unsigned char>(c) != 0xBBu) return c;
-        c = is.Take();
-        if (static_cast<unsigned char>(c) != 0xBFu) return c;
-        c = is.Take();
-        return c;
-    }
-
-    template <typename InputByteStream>
-    static Ch Take(InputByteStream& is) {
-        RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1);
-        return static_cast<Ch>(is.Take());
-    }
-
-    template <typename OutputByteStream>
-    static void PutBOM(OutputByteStream& os) {
-        RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1);
-        os.Put(static_cast<typename OutputByteStream::Ch>(0xEFu));
-        os.Put(static_cast<typename OutputByteStream::Ch>(0xBBu));
-        os.Put(static_cast<typename OutputByteStream::Ch>(0xBFu));
-    }
-
-    template <typename OutputByteStream>
-    static void Put(OutputByteStream& os, Ch c) {
-        RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1);
-        os.Put(static_cast<typename OutputByteStream::Ch>(c));
-    }
-};
-
-///////////////////////////////////////////////////////////////////////////////
-// UTF16
-
-//! UTF-16 encoding.
-/*! http://en.wikipedia.org/wiki/UTF-16
-    http://tools.ietf.org/html/rfc2781
-    \tparam CharType Type for storing 16-bit UTF-16 data. Default is wchar_t. C++11 may use char16_t instead.
-    \note implements Encoding concept
-
-    \note For in-memory access, no need to concern endianness. The code units and code points are represented by CPU's endianness.
-    For streaming, use UTF16LE and UTF16BE, which handle endianness.
-*/
-template<typename CharType = wchar_t>
-struct UTF16 {
-    typedef CharType Ch;
-    RAPIDJSON_STATIC_ASSERT(sizeof(Ch) >= 2);
-
-    enum { supportUnicode = 1 };
-
-    template<typename OutputStream>
-    static void Encode(OutputStream& os, unsigned codepoint) {
-        RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputStream::Ch) >= 2);
-        if (codepoint <= 0xFFFF) {
-            RAPIDJSON_ASSERT(codepoint < 0xD800 || codepoint > 0xDFFF); // Code point itself cannot be surrogate pair 
-            os.Put(static_cast<typename OutputStream::Ch>(codepoint));
-        }
-        else {
-            RAPIDJSON_ASSERT(codepoint <= 0x10FFFF);
-            unsigned v = codepoint - 0x10000;
-            os.Put(static_cast<typename OutputStream::Ch>((v >> 10) | 0xD800));
-            os.Put((v & 0x3FF) | 0xDC00);
-        }
-    }
-
-
-    template<typename OutputStream>
-    static void EncodeUnsafe(OutputStream& os, unsigned codepoint) {
-        RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputStream::Ch) >= 2);
-        if (codepoint <= 0xFFFF) {
-            RAPIDJSON_ASSERT(codepoint < 0xD800 || codepoint > 0xDFFF); // Code point itself cannot be surrogate pair 
-            PutUnsafe(os, static_cast<typename OutputStream::Ch>(codepoint));
-        }
-        else {
-            RAPIDJSON_ASSERT(codepoint <= 0x10FFFF);
-            unsigned v = codepoint - 0x10000;
-            PutUnsafe(os, static_cast<typename OutputStream::Ch>((v >> 10) | 0xD800));
-            PutUnsafe(os, (v & 0x3FF) | 0xDC00);
-        }
-    }
-
-    template <typename InputStream>
-    static bool Decode(InputStream& is, unsigned* codepoint) {
-        RAPIDJSON_STATIC_ASSERT(sizeof(typename InputStream::Ch) >= 2);
-        typename InputStream::Ch c = is.Take();
-        if (c < 0xD800 || c > 0xDFFF) {
-            *codepoint = static_cast<unsigned>(c);
-            return true;
-        }
-        else if (c <= 0xDBFF) {
-            *codepoint = (static_cast<unsigned>(c) & 0x3FF) << 10;
-            c = is.Take();
-            *codepoint |= (static_cast<unsigned>(c) & 0x3FF);
-            *codepoint += 0x10000;
-            return c >= 0xDC00 && c <= 0xDFFF;
-        }
-        return false;
-    }
-
-    template <typename InputStream, typename OutputStream>
-    static bool Validate(InputStream& is, OutputStream& os) {
-        RAPIDJSON_STATIC_ASSERT(sizeof(typename InputStream::Ch) >= 2);
-        RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputStream::Ch) >= 2);
-        typename InputStream::Ch c;
-        os.Put(static_cast<typename OutputStream::Ch>(c = is.Take()));
-        if (c < 0xD800 || c > 0xDFFF)
-            return true;
-        else if (c <= 0xDBFF) {
-            os.Put(c = is.Take());
-            return c >= 0xDC00 && c <= 0xDFFF;
-        }
-        return false;
-    }
-};
-
-//! UTF-16 little endian encoding.
-template<typename CharType = wchar_t>
-struct UTF16LE : UTF16<CharType> {
-    template <typename InputByteStream>
-    static CharType TakeBOM(InputByteStream& is) {
-        RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1);
-        CharType c = Take(is);
-        return static_cast<uint16_t>(c) == 0xFEFFu ? Take(is) : c;
-    }
-
-    template <typename InputByteStream>
-    static CharType Take(InputByteStream& is) {
-        RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1);
-        unsigned c = static_cast<uint8_t>(is.Take());
-        c |= static_cast<unsigned>(static_cast<uint8_t>(is.Take())) << 8;
-        return static_cast<CharType>(c);
-    }
-
-    template <typename OutputByteStream>
-    static void PutBOM(OutputByteStream& os) {
-        RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1);
-        os.Put(static_cast<typename OutputByteStream::Ch>(0xFFu));
-        os.Put(static_cast<typename OutputByteStream::Ch>(0xFEu));
-    }
-
-    template <typename OutputByteStream>
-    static void Put(OutputByteStream& os, CharType c) {
-        RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1);
-        os.Put(static_cast<typename OutputByteStream::Ch>(static_cast<unsigned>(c) & 0xFFu));
-        os.Put(static_cast<typename OutputByteStream::Ch>((static_cast<unsigned>(c) >> 8) & 0xFFu));
-    }
-};
-
-//! UTF-16 big endian encoding.
-template<typename CharType = wchar_t>
-struct UTF16BE : UTF16<CharType> {
-    template <typename InputByteStream>
-    static CharType TakeBOM(InputByteStream& is) {
-        RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1);
-        CharType c = Take(is);
-        return static_cast<uint16_t>(c) == 0xFEFFu ? Take(is) : c;
-    }
-
-    template <typename InputByteStream>
-    static CharType Take(InputByteStream& is) {
-        RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1);
-        unsigned c = static_cast<unsigned>(static_cast<uint8_t>(is.Take())) << 8;
-        c |= static_cast<uint8_t>(is.Take());
-        return static_cast<CharType>(c);
-    }
-
-    template <typename OutputByteStream>
-    static void PutBOM(OutputByteStream& os) {
-        RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1);
-        os.Put(static_cast<typename OutputByteStream::Ch>(0xFEu));
-        os.Put(static_cast<typename OutputByteStream::Ch>(0xFFu));
-    }
-
-    template <typename OutputByteStream>
-    static void Put(OutputByteStream& os, CharType c) {
-        RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1);
-        os.Put(static_cast<typename OutputByteStream::Ch>((static_cast<unsigned>(c) >> 8) & 0xFFu));
-        os.Put(static_cast<typename OutputByteStream::Ch>(static_cast<unsigned>(c) & 0xFFu));
-    }
-};
-
-///////////////////////////////////////////////////////////////////////////////
-// UTF32
-
-//! UTF-32 encoding. 
-/*! http://en.wikipedia.org/wiki/UTF-32
-    \tparam CharType Type for storing 32-bit UTF-32 data. Default is unsigned. C++11 may use char32_t instead.
-    \note implements Encoding concept
-
-    \note For in-memory access, no need to concern endianness. The code units and code points are represented by CPU's endianness.
-    For streaming, use UTF32LE and UTF32BE, which handle endianness.
-*/
-template<typename CharType = unsigned>
-struct UTF32 {
-    typedef CharType Ch;
-    RAPIDJSON_STATIC_ASSERT(sizeof(Ch) >= 4);
-
-    enum { supportUnicode = 1 };
-
-    template<typename OutputStream>
-    static void Encode(OutputStream& os, unsigned codepoint) {
-        RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputStream::Ch) >= 4);
-        RAPIDJSON_ASSERT(codepoint <= 0x10FFFF);
-        os.Put(codepoint);
-    }
-
-    template<typename OutputStream>
-    static void EncodeUnsafe(OutputStream& os, unsigned codepoint) {
-        RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputStream::Ch) >= 4);
-        RAPIDJSON_ASSERT(codepoint <= 0x10FFFF);
-        PutUnsafe(os, codepoint);
-    }
-
-    template <typename InputStream>
-    static bool Decode(InputStream& is, unsigned* codepoint) {
-        RAPIDJSON_STATIC_ASSERT(sizeof(typename InputStream::Ch) >= 4);
-        Ch c = is.Take();
-        *codepoint = c;
-        return c <= 0x10FFFF;
-    }
-
-    template <typename InputStream, typename OutputStream>
-    static bool Validate(InputStream& is, OutputStream& os) {
-        RAPIDJSON_STATIC_ASSERT(sizeof(typename InputStream::Ch) >= 4);
-        Ch c;
-        os.Put(c = is.Take());
-        return c <= 0x10FFFF;
-    }
-};
-
-//! UTF-32 little endian enocoding.
-template<typename CharType = unsigned>
-struct UTF32LE : UTF32<CharType> {
-    template <typename InputByteStream>
-    static CharType TakeBOM(InputByteStream& is) {
-        RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1);
-        CharType c = Take(is);
-        return static_cast<uint32_t>(c) == 0x0000FEFFu ? Take(is) : c;
-    }
-
-    template <typename InputByteStream>
-    static CharType Take(InputByteStream& is) {
-        RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1);
-        unsigned c = static_cast<uint8_t>(is.Take());
-        c |= static_cast<unsigned>(static_cast<uint8_t>(is.Take())) << 8;
-        c |= static_cast<unsigned>(static_cast<uint8_t>(is.Take())) << 16;
-        c |= static_cast<unsigned>(static_cast<uint8_t>(is.Take())) << 24;
-        return static_cast<CharType>(c);
-    }
-
-    template <typename OutputByteStream>
-    static void PutBOM(OutputByteStream& os) {
-        RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1);
-        os.Put(static_cast<typename OutputByteStream::Ch>(0xFFu));
-        os.Put(static_cast<typename OutputByteStream::Ch>(0xFEu));
-        os.Put(static_cast<typename OutputByteStream::Ch>(0x00u));
-        os.Put(static_cast<typename OutputByteStream::Ch>(0x00u));
-    }
-
-    template <typename OutputByteStream>
-    static void Put(OutputByteStream& os, CharType c) {
-        RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1);
-        os.Put(static_cast<typename OutputByteStream::Ch>(c & 0xFFu));
-        os.Put(static_cast<typename OutputByteStream::Ch>((c >> 8) & 0xFFu));
-        os.Put(static_cast<typename OutputByteStream::Ch>((c >> 16) & 0xFFu));
-        os.Put(static_cast<typename OutputByteStream::Ch>((c >> 24) & 0xFFu));
-    }
-};
-
-//! UTF-32 big endian encoding.
-template<typename CharType = unsigned>
-struct UTF32BE : UTF32<CharType> {
-    template <typename InputByteStream>
-    static CharType TakeBOM(InputByteStream& is) {
-        RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1);
-        CharType c = Take(is);
-        return static_cast<uint32_t>(c) == 0x0000FEFFu ? Take(is) : c; 
-    }
-
-    template <typename InputByteStream>
-    static CharType Take(InputByteStream& is) {
-        RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1);
-        unsigned c = static_cast<unsigned>(static_cast<uint8_t>(is.Take())) << 24;
-        c |= static_cast<unsigned>(static_cast<uint8_t>(is.Take())) << 16;
-        c |= static_cast<unsigned>(static_cast<uint8_t>(is.Take())) << 8;
-        c |= static_cast<unsigned>(static_cast<uint8_t>(is.Take()));
-        return static_cast<CharType>(c);
-    }
-
-    template <typename OutputByteStream>
-    static void PutBOM(OutputByteStream& os) {
-        RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1);
-        os.Put(static_cast<typename OutputByteStream::Ch>(0x00u));
-        os.Put(static_cast<typename OutputByteStream::Ch>(0x00u));
-        os.Put(static_cast<typename OutputByteStream::Ch>(0xFEu));
-        os.Put(static_cast<typename OutputByteStream::Ch>(0xFFu));
-    }
-
-    template <typename OutputByteStream>
-    static void Put(OutputByteStream& os, CharType c) {
-        RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1);
-        os.Put(static_cast<typename OutputByteStream::Ch>((c >> 24) & 0xFFu));
-        os.Put(static_cast<typename OutputByteStream::Ch>((c >> 16) & 0xFFu));
-        os.Put(static_cast<typename OutputByteStream::Ch>((c >> 8) & 0xFFu));
-        os.Put(static_cast<typename OutputByteStream::Ch>(c & 0xFFu));
-    }
-};
-
-///////////////////////////////////////////////////////////////////////////////
-// ASCII
-
-//! ASCII encoding.
-/*! http://en.wikipedia.org/wiki/ASCII
-    \tparam CharType Code unit for storing 7-bit ASCII data. Default is char.
-    \note implements Encoding concept
-*/
-template<typename CharType = char>
-struct ASCII {
-    typedef CharType Ch;
-
-    enum { supportUnicode = 0 };
-
-    template<typename OutputStream>
-    static void Encode(OutputStream& os, unsigned codepoint) {
-        RAPIDJSON_ASSERT(codepoint <= 0x7F);
-        os.Put(static_cast<Ch>(codepoint & 0xFF));
-    }
-
-    template<typename OutputStream>
-    static void EncodeUnsafe(OutputStream& os, unsigned codepoint) {
-        RAPIDJSON_ASSERT(codepoint <= 0x7F);
-        PutUnsafe(os, static_cast<Ch>(codepoint & 0xFF));
-    }
-
-    template <typename InputStream>
-    static bool Decode(InputStream& is, unsigned* codepoint) {
-        uint8_t c = static_cast<uint8_t>(is.Take());
-        *codepoint = c;
-        return c <= 0X7F;
-    }
-
-    template <typename InputStream, typename OutputStream>
-    static bool Validate(InputStream& is, OutputStream& os) {
-        uint8_t c = static_cast<uint8_t>(is.Take());
-        os.Put(static_cast<typename OutputStream::Ch>(c));
-        return c <= 0x7F;
-    }
-
-    template <typename InputByteStream>
-    static CharType TakeBOM(InputByteStream& is) {
-        RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1);
-        uint8_t c = static_cast<uint8_t>(Take(is));
-        return static_cast<Ch>(c);
-    }
-
-    template <typename InputByteStream>
-    static Ch Take(InputByteStream& is) {
-        RAPIDJSON_STATIC_ASSERT(sizeof(typename InputByteStream::Ch) == 1);
-        return static_cast<Ch>(is.Take());
-    }
-
-    template <typename OutputByteStream>
-    static void PutBOM(OutputByteStream& os) {
-        RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1);
-        (void)os;
-    }
-
-    template <typename OutputByteStream>
-    static void Put(OutputByteStream& os, Ch c) {
-        RAPIDJSON_STATIC_ASSERT(sizeof(typename OutputByteStream::Ch) == 1);
-        os.Put(static_cast<typename OutputByteStream::Ch>(c));
-    }
-};
-
-///////////////////////////////////////////////////////////////////////////////
-// AutoUTF
-
-//! Runtime-specified UTF encoding type of a stream.
-enum UTFType {
-    kUTF8 = 0,      //!< UTF-8.
-    kUTF16LE = 1,   //!< UTF-16 little endian.
-    kUTF16BE = 2,   //!< UTF-16 big endian.
-    kUTF32LE = 3,   //!< UTF-32 little endian.
-    kUTF32BE = 4    //!< UTF-32 big endian.
-};
-
-//! Dynamically select encoding according to stream's runtime-specified UTF encoding type.
-/*! \note This class can be used with AutoUTFInputtStream and AutoUTFOutputStream, which provides GetType().
-*/
-template<typename CharType>
-struct AutoUTF {
-    typedef CharType Ch;
-
-    enum { supportUnicode = 1 };
-
-#define RAPIDJSON_ENCODINGS_FUNC(x) UTF8<Ch>::x, UTF16LE<Ch>::x, UTF16BE<Ch>::x, UTF32LE<Ch>::x, UTF32BE<Ch>::x
-
-    template<typename OutputStream>
-    RAPIDJSON_FORCEINLINE static void Encode(OutputStream& os, unsigned codepoint) {
-        typedef void (*EncodeFunc)(OutputStream&, unsigned);
-        static const EncodeFunc f[] = { RAPIDJSON_ENCODINGS_FUNC(Encode) };
-        (*f[os.GetType()])(os, codepoint);
-    }
-
-    template<typename OutputStream>
-    RAPIDJSON_FORCEINLINE static void EncodeUnsafe(OutputStream& os, unsigned codepoint) {
-        typedef void (*EncodeFunc)(OutputStream&, unsigned);
-        static const EncodeFunc f[] = { RAPIDJSON_ENCODINGS_FUNC(EncodeUnsafe) };
-        (*f[os.GetType()])(os, codepoint);
-    }
-
-    template <typename InputStream>
-    RAPIDJSON_FORCEINLINE static bool Decode(InputStream& is, unsigned* codepoint) {
-        typedef bool (*DecodeFunc)(InputStream&, unsigned*);
-        static const DecodeFunc f[] = { RAPIDJSON_ENCODINGS_FUNC(Decode) };
-        return (*f[is.GetType()])(is, codepoint);
-    }
-
-    template <typename InputStream, typename OutputStream>
-    RAPIDJSON_FORCEINLINE static bool Validate(InputStream& is, OutputStream& os) {
-        typedef bool (*ValidateFunc)(InputStream&, OutputStream&);
-        static const ValidateFunc f[] = { RAPIDJSON_ENCODINGS_FUNC(Validate) };
-        return (*f[is.GetType()])(is, os);
-    }
-
-#undef RAPIDJSON_ENCODINGS_FUNC
-};
-
-///////////////////////////////////////////////////////////////////////////////
-// Transcoder
-
-//! Encoding conversion.
-template<typename SourceEncoding, typename TargetEncoding>
-struct Transcoder {
-    //! Take one Unicode codepoint from source encoding, convert it to target encoding and put it to the output stream.
-    template<typename InputStream, typename OutputStream>
-    RAPIDJSON_FORCEINLINE static bool Transcode(InputStream& is, OutputStream& os) {
-        unsigned codepoint;
-        if (!SourceEncoding::Decode(is, &codepoint))
-            return false;
-        TargetEncoding::Encode(os, codepoint);
-        return true;
-    }
-
-    template<typename InputStream, typename OutputStream>
-    RAPIDJSON_FORCEINLINE static bool TranscodeUnsafe(InputStream& is, OutputStream& os) {
-        unsigned codepoint;
-        if (!SourceEncoding::Decode(is, &codepoint))
-            return false;
-        TargetEncoding::EncodeUnsafe(os, codepoint);
-        return true;
-    }
-
-    //! Validate one Unicode codepoint from an encoded stream.
-    template<typename InputStream, typename OutputStream>
-    RAPIDJSON_FORCEINLINE static bool Validate(InputStream& is, OutputStream& os) {
-        return Transcode(is, os);   // Since source/target encoding is different, must transcode.
-    }
-};
-
-// Forward declaration.
-template<typename Stream>
-inline void PutUnsafe(Stream& stream, typename Stream::Ch c);
-
-//! Specialization of Transcoder with same source and target encoding.
-template<typename Encoding>
-struct Transcoder<Encoding, Encoding> {
-    template<typename InputStream, typename OutputStream>
-    RAPIDJSON_FORCEINLINE static bool Transcode(InputStream& is, OutputStream& os) {
-        os.Put(is.Take());  // Just copy one code unit. This semantic is different from primary template class.
-        return true;
-    }
-    
-    template<typename InputStream, typename OutputStream>
-    RAPIDJSON_FORCEINLINE static bool TranscodeUnsafe(InputStream& is, OutputStream& os) {
-        PutUnsafe(os, is.Take());  // Just copy one code unit. This semantic is different from primary template class.
-        return true;
-    }
-    
-    template<typename InputStream, typename OutputStream>
-    RAPIDJSON_FORCEINLINE static bool Validate(InputStream& is, OutputStream& os) {
-        return Encoding::Validate(is, os);  // source/target encoding are the same
-    }
-};
-
-RAPIDJSON_NAMESPACE_END
-
-#if defined(__GNUC__) || defined(_MSC_VER)
-RAPIDJSON_DIAG_POP
-#endif
-
-#endif // RAPIDJSON_ENCODINGS_H_
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/error/en.h b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/error/en.h
deleted file mode 100644
index c2315fd..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/error/en.h
+++ /dev/null
@@ -1,74 +0,0 @@
-// Tencent is pleased to support the open source community by making RapidJSON available.
-// 
-// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
-//
-// Licensed under the MIT License (the "License"); you may not use this file except
-// in compliance with the License. You may obtain a copy of the License at
-//
-// http://opensource.org/licenses/MIT
-//
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
-// specific language governing permissions and limitations under the License.
-
-#ifndef RAPIDJSON_ERROR_EN_H_
-#define RAPIDJSON_ERROR_EN_H_
-
-#include "error.h"
-
-#ifdef __clang__
-RAPIDJSON_DIAG_PUSH
-RAPIDJSON_DIAG_OFF(switch-enum)
-RAPIDJSON_DIAG_OFF(covered-switch-default)
-#endif
-
-RAPIDJSON_NAMESPACE_BEGIN
-
-//! Maps error code of parsing into error message.
-/*!
-    \ingroup RAPIDJSON_ERRORS
-    \param parseErrorCode Error code obtained in parsing.
-    \return the error message.
-    \note User can make a copy of this function for localization.
-        Using switch-case is safer for future modification of error codes.
-*/
-inline const RAPIDJSON_ERROR_CHARTYPE* GetParseError_En(ParseErrorCode parseErrorCode) {
-    switch (parseErrorCode) {
-        case kParseErrorNone:                           return RAPIDJSON_ERROR_STRING("No error.");
-
-        case kParseErrorDocumentEmpty:                  return RAPIDJSON_ERROR_STRING("The document is empty.");
-        case kParseErrorDocumentRootNotSingular:        return RAPIDJSON_ERROR_STRING("The document root must not follow by other values.");
-    
-        case kParseErrorValueInvalid:                   return RAPIDJSON_ERROR_STRING("Invalid value.");
-    
-        case kParseErrorObjectMissName:                 return RAPIDJSON_ERROR_STRING("Missing a name for object member.");
-        case kParseErrorObjectMissColon:                return RAPIDJSON_ERROR_STRING("Missing a colon after a name of object member.");
-        case kParseErrorObjectMissCommaOrCurlyBracket:  return RAPIDJSON_ERROR_STRING("Missing a comma or '}' after an object member.");
-    
-        case kParseErrorArrayMissCommaOrSquareBracket:  return RAPIDJSON_ERROR_STRING("Missing a comma or ']' after an array element.");
-
-        case kParseErrorStringUnicodeEscapeInvalidHex:  return RAPIDJSON_ERROR_STRING("Incorrect hex digit after \\u escape in string.");
-        case kParseErrorStringUnicodeSurrogateInvalid:  return RAPIDJSON_ERROR_STRING("The surrogate pair in string is invalid.");
-        case kParseErrorStringEscapeInvalid:            return RAPIDJSON_ERROR_STRING("Invalid escape character in string.");
-        case kParseErrorStringMissQuotationMark:        return RAPIDJSON_ERROR_STRING("Missing a closing quotation mark in string.");
-        case kParseErrorStringInvalidEncoding:          return RAPIDJSON_ERROR_STRING("Invalid encoding in string.");
-
-        case kParseErrorNumberTooBig:                   return RAPIDJSON_ERROR_STRING("Number too big to be stored in double.");
-        case kParseErrorNumberMissFraction:             return RAPIDJSON_ERROR_STRING("Miss fraction part in number.");
-        case kParseErrorNumberMissExponent:             return RAPIDJSON_ERROR_STRING("Miss exponent in number.");
-
-        case kParseErrorTermination:                    return RAPIDJSON_ERROR_STRING("Terminate parsing due to Handler error.");
-        case kParseErrorUnspecificSyntaxError:          return RAPIDJSON_ERROR_STRING("Unspecific syntax error.");
-
-        default:                                        return RAPIDJSON_ERROR_STRING("Unknown error.");
-    }
-}
-
-RAPIDJSON_NAMESPACE_END
-
-#ifdef __clang__
-RAPIDJSON_DIAG_POP
-#endif
-
-#endif // RAPIDJSON_ERROR_EN_H_
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/error/error.h b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/error/error.h
deleted file mode 100644
index 95cb31a..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/error/error.h
+++ /dev/null
@@ -1,155 +0,0 @@
-// Tencent is pleased to support the open source community by making RapidJSON available.
-// 
-// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
-//
-// Licensed under the MIT License (the "License"); you may not use this file except
-// in compliance with the License. You may obtain a copy of the License at
-//
-// http://opensource.org/licenses/MIT
-//
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
-// specific language governing permissions and limitations under the License.
-
-#ifndef RAPIDJSON_ERROR_ERROR_H_
-#define RAPIDJSON_ERROR_ERROR_H_
-
-#include "../rapidjson.h"
-
-#ifdef __clang__
-RAPIDJSON_DIAG_PUSH
-RAPIDJSON_DIAG_OFF(padded)
-#endif
-
-/*! \file error.h */
-
-/*! \defgroup RAPIDJSON_ERRORS RapidJSON error handling */
-
-///////////////////////////////////////////////////////////////////////////////
-// RAPIDJSON_ERROR_CHARTYPE
-
-//! Character type of error messages.
-/*! \ingroup RAPIDJSON_ERRORS
-    The default character type is \c char.
-    On Windows, user can define this macro as \c TCHAR for supporting both
-    unicode/non-unicode settings.
-*/
-#ifndef RAPIDJSON_ERROR_CHARTYPE
-#define RAPIDJSON_ERROR_CHARTYPE char
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
-// RAPIDJSON_ERROR_STRING
-
-//! Macro for converting string literial to \ref RAPIDJSON_ERROR_CHARTYPE[].
-/*! \ingroup RAPIDJSON_ERRORS
-    By default this conversion macro does nothing.
-    On Windows, user can define this macro as \c _T(x) for supporting both
-    unicode/non-unicode settings.
-*/
-#ifndef RAPIDJSON_ERROR_STRING
-#define RAPIDJSON_ERROR_STRING(x) x
-#endif
-
-RAPIDJSON_NAMESPACE_BEGIN
-
-///////////////////////////////////////////////////////////////////////////////
-// ParseErrorCode
-
-//! Error code of parsing.
-/*! \ingroup RAPIDJSON_ERRORS
-    \see GenericReader::Parse, GenericReader::GetParseErrorCode
-*/
-enum ParseErrorCode {
-    kParseErrorNone = 0,                        //!< No error.
-
-    kParseErrorDocumentEmpty,                   //!< The document is empty.
-    kParseErrorDocumentRootNotSingular,         //!< The document root must not follow by other values.
-
-    kParseErrorValueInvalid,                    //!< Invalid value.
-
-    kParseErrorObjectMissName,                  //!< Missing a name for object member.
-    kParseErrorObjectMissColon,                 //!< Missing a colon after a name of object member.
-    kParseErrorObjectMissCommaOrCurlyBracket,   //!< Missing a comma or '}' after an object member.
-
-    kParseErrorArrayMissCommaOrSquareBracket,   //!< Missing a comma or ']' after an array element.
-
-    kParseErrorStringUnicodeEscapeInvalidHex,   //!< Incorrect hex digit after \\u escape in string.
-    kParseErrorStringUnicodeSurrogateInvalid,   //!< The surrogate pair in string is invalid.
-    kParseErrorStringEscapeInvalid,             //!< Invalid escape character in string.
-    kParseErrorStringMissQuotationMark,         //!< Missing a closing quotation mark in string.
-    kParseErrorStringInvalidEncoding,           //!< Invalid encoding in string.
-
-    kParseErrorNumberTooBig,                    //!< Number too big to be stored in double.
-    kParseErrorNumberMissFraction,              //!< Miss fraction part in number.
-    kParseErrorNumberMissExponent,              //!< Miss exponent in number.
-
-    kParseErrorTermination,                     //!< Parsing was terminated.
-    kParseErrorUnspecificSyntaxError            //!< Unspecific syntax error.
-};
-
-//! Result of parsing (wraps ParseErrorCode)
-/*!
-    \ingroup RAPIDJSON_ERRORS
-    \code
-        Document doc;
-        ParseResult ok = doc.Parse("[42]");
-        if (!ok) {
-            fprintf(stderr, "JSON parse error: %s (%u)",
-                    GetParseError_En(ok.Code()), ok.Offset());
-            exit(EXIT_FAILURE);
-        }
-    \endcode
-    \see GenericReader::Parse, GenericDocument::Parse
-*/
-struct ParseResult {
-public:
-    //! Default constructor, no error.
-    ParseResult() : code_(kParseErrorNone), offset_(0) {}
-    //! Constructor to set an error.
-    ParseResult(ParseErrorCode code, size_t offset) : code_(code), offset_(offset) {}
-
-    //! Get the error code.
-    ParseErrorCode Code() const { return code_; }
-    //! Get the error offset, if \ref IsError(), 0 otherwise.
-    size_t Offset() const { return offset_; }
-
-    //! Conversion to \c bool, returns \c true, iff !\ref IsError().
-    operator bool() const { return !IsError(); }
-    //! Whether the result is an error.
-    bool IsError() const { return code_ != kParseErrorNone; }
-
-    bool operator==(const ParseResult& that) const { return code_ == that.code_; }
-    bool operator==(ParseErrorCode code) const { return code_ == code; }
-    friend bool operator==(ParseErrorCode code, const ParseResult & err) { return code == err.code_; }
-
-    //! Reset error code.
-    void Clear() { Set(kParseErrorNone); }
-    //! Update error code and offset.
-    void Set(ParseErrorCode code, size_t offset = 0) { code_ = code; offset_ = offset; }
-
-private:
-    ParseErrorCode code_;
-    size_t offset_;
-};
-
-//! Function pointer type of GetParseError().
-/*! \ingroup RAPIDJSON_ERRORS
-
-    This is the prototype for \c GetParseError_X(), where \c X is a locale.
-    User can dynamically change locale in runtime, e.g.:
-\code
-    GetParseErrorFunc GetParseError = GetParseError_En; // or whatever
-    const RAPIDJSON_ERROR_CHARTYPE* s = GetParseError(document.GetParseErrorCode());
-\endcode
-*/
-typedef const RAPIDJSON_ERROR_CHARTYPE* (*GetParseErrorFunc)(ParseErrorCode);
-
-RAPIDJSON_NAMESPACE_END
-
-#ifdef __clang__
-RAPIDJSON_DIAG_POP
-#endif
-
-#endif // RAPIDJSON_ERROR_ERROR_H_
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/filereadstream.h b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/filereadstream.h
deleted file mode 100644
index b56ea13..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/filereadstream.h
+++ /dev/null
@@ -1,99 +0,0 @@
-// Tencent is pleased to support the open source community by making RapidJSON available.
-// 
-// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
-//
-// Licensed under the MIT License (the "License"); you may not use this file except
-// in compliance with the License. You may obtain a copy of the License at
-//
-// http://opensource.org/licenses/MIT
-//
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
-// specific language governing permissions and limitations under the License.
-
-#ifndef RAPIDJSON_FILEREADSTREAM_H_
-#define RAPIDJSON_FILEREADSTREAM_H_
-
-#include "stream.h"
-#include <cstdio>
-
-#ifdef __clang__
-RAPIDJSON_DIAG_PUSH
-RAPIDJSON_DIAG_OFF(padded)
-RAPIDJSON_DIAG_OFF(unreachable-code)
-RAPIDJSON_DIAG_OFF(missing-noreturn)
-#endif
-
-RAPIDJSON_NAMESPACE_BEGIN
-
-//! File byte stream for input using fread().
-/*!
-    \note implements Stream concept
-*/
-class FileReadStream {
-public:
-    typedef char Ch;    //!< Character type (byte).
-
-    //! Constructor.
-    /*!
-        \param fp File pointer opened for read.
-        \param buffer user-supplied buffer.
-        \param bufferSize size of buffer in bytes. Must >=4 bytes.
-    */
-    FileReadStream(std::FILE* fp, char* buffer, size_t bufferSize) : fp_(fp), buffer_(buffer), bufferSize_(bufferSize), bufferLast_(0), current_(buffer_), readCount_(0), count_(0), eof_(false) { 
-        RAPIDJSON_ASSERT(fp_ != 0);
-        RAPIDJSON_ASSERT(bufferSize >= 4);
-        Read();
-    }
-
-    Ch Peek() const { return *current_; }
-    Ch Take() { Ch c = *current_; Read(); return c; }
-    size_t Tell() const { return count_ + static_cast<size_t>(current_ - buffer_); }
-
-    // Not implemented
-    void Put(Ch) { RAPIDJSON_ASSERT(false); }
-    void Flush() { RAPIDJSON_ASSERT(false); } 
-    Ch* PutBegin() { RAPIDJSON_ASSERT(false); return 0; }
-    size_t PutEnd(Ch*) { RAPIDJSON_ASSERT(false); return 0; }
-
-    // For encoding detection only.
-    const Ch* Peek4() const {
-        return (current_ + 4 <= bufferLast_) ? current_ : 0;
-    }
-
-private:
-    void Read() {
-        if (current_ < bufferLast_)
-            ++current_;
-        else if (!eof_) {
-            count_ += readCount_;
-            readCount_ = fread(buffer_, 1, bufferSize_, fp_);
-            bufferLast_ = buffer_ + readCount_ - 1;
-            current_ = buffer_;
-
-            if (readCount_ < bufferSize_) {
-                buffer_[readCount_] = '\0';
-                ++bufferLast_;
-                eof_ = true;
-            }
-        }
-    }
-
-    std::FILE* fp_;
-    Ch *buffer_;
-    size_t bufferSize_;
-    Ch *bufferLast_;
-    Ch *current_;
-    size_t readCount_;
-    size_t count_;  //!< Number of characters read
-    bool eof_;
-};
-
-RAPIDJSON_NAMESPACE_END
-
-#ifdef __clang__
-RAPIDJSON_DIAG_POP
-#endif
-
-#endif // RAPIDJSON_FILESTREAM_H_
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/filewritestream.h b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/filewritestream.h
deleted file mode 100644
index 6378dd6..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/filewritestream.h
+++ /dev/null
@@ -1,104 +0,0 @@
-// Tencent is pleased to support the open source community by making RapidJSON available.
-// 
-// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
-//
-// Licensed under the MIT License (the "License"); you may not use this file except
-// in compliance with the License. You may obtain a copy of the License at
-//
-// http://opensource.org/licenses/MIT
-//
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
-// specific language governing permissions and limitations under the License.
-
-#ifndef RAPIDJSON_FILEWRITESTREAM_H_
-#define RAPIDJSON_FILEWRITESTREAM_H_
-
-#include "stream.h"
-#include <cstdio>
-
-#ifdef __clang__
-RAPIDJSON_DIAG_PUSH
-RAPIDJSON_DIAG_OFF(unreachable-code)
-#endif
-
-RAPIDJSON_NAMESPACE_BEGIN
-
-//! Wrapper of C file stream for input using fread().
-/*!
-    \note implements Stream concept
-*/
-class FileWriteStream {
-public:
-    typedef char Ch;    //!< Character type. Only support char.
-
-    FileWriteStream(std::FILE* fp, char* buffer, size_t bufferSize) : fp_(fp), buffer_(buffer), bufferEnd_(buffer + bufferSize), current_(buffer_) { 
-        RAPIDJSON_ASSERT(fp_ != 0);
-    }
-
-    void Put(char c) { 
-        if (current_ >= bufferEnd_)
-            Flush();
-
-        *current_++ = c;
-    }
-
-    void PutN(char c, size_t n) {
-        size_t avail = static_cast<size_t>(bufferEnd_ - current_);
-        while (n > avail) {
-            std::memset(current_, c, avail);
-            current_ += avail;
-            Flush();
-            n -= avail;
-            avail = static_cast<size_t>(bufferEnd_ - current_);
-        }
-
-        if (n > 0) {
-            std::memset(current_, c, n);
-            current_ += n;
-        }
-    }
-
-    void Flush() {
-        if (current_ != buffer_) {
-            size_t result = fwrite(buffer_, 1, static_cast<size_t>(current_ - buffer_), fp_);
-            if (result < static_cast<size_t>(current_ - buffer_)) {
-                // failure deliberately ignored at this time
-                // added to avoid warn_unused_result build errors
-            }
-            current_ = buffer_;
-        }
-    }
-
-    // Not implemented
-    char Peek() const { RAPIDJSON_ASSERT(false); return 0; }
-    char Take() { RAPIDJSON_ASSERT(false); return 0; }
-    size_t Tell() const { RAPIDJSON_ASSERT(false); return 0; }
-    char* PutBegin() { RAPIDJSON_ASSERT(false); return 0; }
-    size_t PutEnd(char*) { RAPIDJSON_ASSERT(false); return 0; }
-
-private:
-    // Prohibit copy constructor & assignment operator.
-    FileWriteStream(const FileWriteStream&);
-    FileWriteStream& operator=(const FileWriteStream&);
-
-    std::FILE* fp_;
-    char *buffer_;
-    char *bufferEnd_;
-    char *current_;
-};
-
-//! Implement specialized version of PutN() with memset() for better performance.
-template<>
-inline void PutN(FileWriteStream& stream, char c, size_t n) {
-    stream.PutN(c, n);
-}
-
-RAPIDJSON_NAMESPACE_END
-
-#ifdef __clang__
-RAPIDJSON_DIAG_POP
-#endif
-
-#endif // RAPIDJSON_FILESTREAM_H_
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/fwd.h b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/fwd.h
deleted file mode 100644
index e8104e8..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/fwd.h
+++ /dev/null
@@ -1,151 +0,0 @@
-// Tencent is pleased to support the open source community by making RapidJSON available.
-// 
-// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
-//
-// Licensed under the MIT License (the "License"); you may not use this file except
-// in compliance with the License. You may obtain a copy of the License at
-//
-// http://opensource.org/licenses/MIT
-//
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
-// specific language governing permissions and limitations under the License.
-
-#ifndef RAPIDJSON_FWD_H_
-#define RAPIDJSON_FWD_H_
-
-#include "rapidjson.h"
-
-RAPIDJSON_NAMESPACE_BEGIN
-
-// encodings.h
-
-template<typename CharType> struct UTF8;
-template<typename CharType> struct UTF16;
-template<typename CharType> struct UTF16BE;
-template<typename CharType> struct UTF16LE;
-template<typename CharType> struct UTF32;
-template<typename CharType> struct UTF32BE;
-template<typename CharType> struct UTF32LE;
-template<typename CharType> struct ASCII;
-template<typename CharType> struct AutoUTF;
-
-template<typename SourceEncoding, typename TargetEncoding>
-struct Transcoder;
-
-// allocators.h
-
-class CrtAllocator;
-
-template <typename BaseAllocator>
-class MemoryPoolAllocator;
-
-// stream.h
-
-template <typename Encoding>
-struct GenericStringStream;
-
-typedef GenericStringStream<UTF8<char> > StringStream;
-
-template <typename Encoding>
-struct GenericInsituStringStream;
-
-typedef GenericInsituStringStream<UTF8<char> > InsituStringStream;
-
-// stringbuffer.h
-
-template <typename Encoding, typename Allocator>
-class GenericStringBuffer;
-
-typedef GenericStringBuffer<UTF8<char>, CrtAllocator> StringBuffer;
-
-// filereadstream.h
-
-class FileReadStream;
-
-// filewritestream.h
-
-class FileWriteStream;
-
-// memorybuffer.h
-
-template <typename Allocator>
-struct GenericMemoryBuffer;
-
-typedef GenericMemoryBuffer<CrtAllocator> MemoryBuffer;
-
-// memorystream.h
-
-struct MemoryStream;
-
-// reader.h
-
-template<typename Encoding, typename Derived>
-struct BaseReaderHandler;
-
-template <typename SourceEncoding, typename TargetEncoding, typename StackAllocator>
-class GenericReader;
-
-typedef GenericReader<UTF8<char>, UTF8<char>, CrtAllocator> Reader;
-
-// writer.h
-
-template<typename OutputStream, typename SourceEncoding, typename TargetEncoding, typename StackAllocator, unsigned writeFlags>
-class Writer;
-
-// prettywriter.h
-
-template<typename OutputStream, typename SourceEncoding, typename TargetEncoding, typename StackAllocator, unsigned writeFlags>
-class PrettyWriter;
-
-// document.h
-
-template <typename Encoding, typename Allocator> 
-struct GenericMember;
-
-template <bool Const, typename Encoding, typename Allocator>
-class GenericMemberIterator;
-
-template<typename CharType>
-struct GenericStringRef;
-
-template <typename Encoding, typename Allocator> 
-class GenericValue;
-
-typedef GenericValue<UTF8<char>, MemoryPoolAllocator<CrtAllocator> > Value;
-
-template <typename Encoding, typename Allocator, typename StackAllocator>
-class GenericDocument;
-
-typedef GenericDocument<UTF8<char>, MemoryPoolAllocator<CrtAllocator>, CrtAllocator> Document;
-
-// pointer.h
-
-template <typename ValueType, typename Allocator>
-class GenericPointer;
-
-typedef GenericPointer<Value, CrtAllocator> Pointer;
-
-// schema.h
-
-template <typename SchemaDocumentType>
-class IGenericRemoteSchemaDocumentProvider;
-
-template <typename ValueT, typename Allocator>
-class GenericSchemaDocument;
-
-typedef GenericSchemaDocument<Value, CrtAllocator> SchemaDocument;
-typedef IGenericRemoteSchemaDocumentProvider<SchemaDocument> IRemoteSchemaDocumentProvider;
-
-template <
-    typename SchemaDocumentType,
-    typename OutputHandler,
-    typename StateAllocator>
-class GenericSchemaValidator;
-
-typedef GenericSchemaValidator<SchemaDocument, BaseReaderHandler<UTF8<char>, void>, CrtAllocator> SchemaValidator;
-
-RAPIDJSON_NAMESPACE_END
-
-#endif // RAPIDJSON_RAPIDJSONFWD_H_
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/internal/biginteger.h b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/internal/biginteger.h
deleted file mode 100755
index 9d3e88c..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/internal/biginteger.h
+++ /dev/null
@@ -1,290 +0,0 @@
-// Tencent is pleased to support the open source community by making RapidJSON available.
-// 
-// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
-//
-// Licensed under the MIT License (the "License"); you may not use this file except
-// in compliance with the License. You may obtain a copy of the License at
-//
-// http://opensource.org/licenses/MIT
-//
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
-// specific language governing permissions and limitations under the License.
-
-#ifndef RAPIDJSON_BIGINTEGER_H_
-#define RAPIDJSON_BIGINTEGER_H_
-
-#include "../rapidjson.h"
-
-#if defined(_MSC_VER) && defined(_M_AMD64)
-#include <intrin.h> // for _umul128
-#pragma intrinsic(_umul128)
-#endif
-
-RAPIDJSON_NAMESPACE_BEGIN
-namespace internal {
-
-class BigInteger {
-public:
-    typedef uint64_t Type;
-
-    BigInteger(const BigInteger& rhs) : count_(rhs.count_) {
-        std::memcpy(digits_, rhs.digits_, count_ * sizeof(Type));
-    }
-
-    explicit BigInteger(uint64_t u) : count_(1) {
-        digits_[0] = u;
-    }
-
-    BigInteger(const char* decimals, size_t length) : count_(1) {
-        RAPIDJSON_ASSERT(length > 0);
-        digits_[0] = 0;
-        size_t i = 0;
-        const size_t kMaxDigitPerIteration = 19;  // 2^64 = 18446744073709551616 > 10^19
-        while (length >= kMaxDigitPerIteration) {
-            AppendDecimal64(decimals + i, decimals + i + kMaxDigitPerIteration);
-            length -= kMaxDigitPerIteration;
-            i += kMaxDigitPerIteration;
-        }
-
-        if (length > 0)
-            AppendDecimal64(decimals + i, decimals + i + length);
-    }
-    
-    BigInteger& operator=(const BigInteger &rhs)
-    {
-        if (this != &rhs) {
-            count_ = rhs.count_;
-            std::memcpy(digits_, rhs.digits_, count_ * sizeof(Type));
-        }
-        return *this;
-    }
-    
-    BigInteger& operator=(uint64_t u) {
-        digits_[0] = u;            
-        count_ = 1;
-        return *this;
-    }
-
-    BigInteger& operator+=(uint64_t u) {
-        Type backup = digits_[0];
-        digits_[0] += u;
-        for (size_t i = 0; i < count_ - 1; i++) {
-            if (digits_[i] >= backup)
-                return *this; // no carry
-            backup = digits_[i + 1];
-            digits_[i + 1] += 1;
-        }
-
-        // Last carry
-        if (digits_[count_ - 1] < backup)
-            PushBack(1);
-
-        return *this;
-    }
-
-    BigInteger& operator*=(uint64_t u) {
-        if (u == 0) return *this = 0;
-        if (u == 1) return *this;
-        if (*this == 1) return *this = u;
-
-        uint64_t k = 0;
-        for (size_t i = 0; i < count_; i++) {
-            uint64_t hi;
-            digits_[i] = MulAdd64(digits_[i], u, k, &hi);
-            k = hi;
-        }
-        
-        if (k > 0)
-            PushBack(k);
-
-        return *this;
-    }
-
-    BigInteger& operator*=(uint32_t u) {
-        if (u == 0) return *this = 0;
-        if (u == 1) return *this;
-        if (*this == 1) return *this = u;
-
-        uint64_t k = 0;
-        for (size_t i = 0; i < count_; i++) {
-            const uint64_t c = digits_[i] >> 32;
-            const uint64_t d = digits_[i] & 0xFFFFFFFF;
-            const uint64_t uc = u * c;
-            const uint64_t ud = u * d;
-            const uint64_t p0 = ud + k;
-            const uint64_t p1 = uc + (p0 >> 32);
-            digits_[i] = (p0 & 0xFFFFFFFF) | (p1 << 32);
-            k = p1 >> 32;
-        }
-        
-        if (k > 0)
-            PushBack(k);
-
-        return *this;
-    }
-
-    BigInteger& operator<<=(size_t shift) {
-        if (IsZero() || shift == 0) return *this;
-
-        size_t offset = shift / kTypeBit;
-        size_t interShift = shift % kTypeBit;
-        RAPIDJSON_ASSERT(count_ + offset <= kCapacity);
-
-        if (interShift == 0) {
-            std::memmove(&digits_[count_ - 1 + offset], &digits_[count_ - 1], count_ * sizeof(Type));
-            count_ += offset;
-        }
-        else {
-            digits_[count_] = 0;
-            for (size_t i = count_; i > 0; i--)
-                digits_[i + offset] = (digits_[i] << interShift) | (digits_[i - 1] >> (kTypeBit - interShift));
-            digits_[offset] = digits_[0] << interShift;
-            count_ += offset;
-            if (digits_[count_])
-                count_++;
-        }
-
-        std::memset(digits_, 0, offset * sizeof(Type));
-
-        return *this;
-    }
-
-    bool operator==(const BigInteger& rhs) const {
-        return count_ == rhs.count_ && std::memcmp(digits_, rhs.digits_, count_ * sizeof(Type)) == 0;
-    }
-
-    bool operator==(const Type rhs) const {
-        return count_ == 1 && digits_[0] == rhs;
-    }
-
-    BigInteger& MultiplyPow5(unsigned exp) {
-        static const uint32_t kPow5[12] = {
-            5,
-            5 * 5,
-            5 * 5 * 5,
-            5 * 5 * 5 * 5,
-            5 * 5 * 5 * 5 * 5,
-            5 * 5 * 5 * 5 * 5 * 5,
-            5 * 5 * 5 * 5 * 5 * 5 * 5,
-            5 * 5 * 5 * 5 * 5 * 5 * 5 * 5,
-            5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5,
-            5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5,
-            5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5,
-            5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5 * 5
-        };
-        if (exp == 0) return *this;
-        for (; exp >= 27; exp -= 27) *this *= RAPIDJSON_UINT64_C2(0X6765C793, 0XFA10079D); // 5^27
-        for (; exp >= 13; exp -= 13) *this *= static_cast<uint32_t>(1220703125u); // 5^13
-        if (exp > 0)                 *this *= kPow5[exp - 1];
-        return *this;
-    }
-
-    // Compute absolute difference of this and rhs.
-    // Assume this != rhs
-    bool Difference(const BigInteger& rhs, BigInteger* out) const {
-        int cmp = Compare(rhs);
-        RAPIDJSON_ASSERT(cmp != 0);
-        const BigInteger *a, *b;  // Makes a > b
-        bool ret;
-        if (cmp < 0) { a = &rhs; b = this; ret = true; }
-        else         { a = this; b = &rhs; ret = false; }
-
-        Type borrow = 0;
-        for (size_t i = 0; i < a->count_; i++) {
-            Type d = a->digits_[i] - borrow;
-            if (i < b->count_)
-                d -= b->digits_[i];
-            borrow = (d > a->digits_[i]) ? 1 : 0;
-            out->digits_[i] = d;
-            if (d != 0)
-                out->count_ = i + 1;
-        }
-
-        return ret;
-    }
-
-    int Compare(const BigInteger& rhs) const {
-        if (count_ != rhs.count_)
-            return count_ < rhs.count_ ? -1 : 1;
-
-        for (size_t i = count_; i-- > 0;)
-            if (digits_[i] != rhs.digits_[i])
-                return digits_[i] < rhs.digits_[i] ? -1 : 1;
-
-        return 0;
-    }
-
-    size_t GetCount() const { return count_; }
-    Type GetDigit(size_t index) const { RAPIDJSON_ASSERT(index < count_); return digits_[index]; }
-    bool IsZero() const { return count_ == 1 && digits_[0] == 0; }
-
-private:
-    void AppendDecimal64(const char* begin, const char* end) {
-        uint64_t u = ParseUint64(begin, end);
-        if (IsZero())
-            *this = u;
-        else {
-            unsigned exp = static_cast<unsigned>(end - begin);
-            (MultiplyPow5(exp) <<= exp) += u;   // *this = *this * 10^exp + u
-        }
-    }
-
-    void PushBack(Type digit) {
-        RAPIDJSON_ASSERT(count_ < kCapacity);
-        digits_[count_++] = digit;
-    }
-
-    static uint64_t ParseUint64(const char* begin, const char* end) {
-        uint64_t r = 0;
-        for (const char* p = begin; p != end; ++p) {
-            RAPIDJSON_ASSERT(*p >= '0' && *p <= '9');
-            r = r * 10u + static_cast<unsigned>(*p - '0');
-        }
-        return r;
-    }
-
-    // Assume a * b + k < 2^128
-    static uint64_t MulAdd64(uint64_t a, uint64_t b, uint64_t k, uint64_t* outHigh) {
-#if defined(_MSC_VER) && defined(_M_AMD64)
-        uint64_t low = _umul128(a, b, outHigh) + k;
-        if (low < k)
-            (*outHigh)++;
-        return low;
-#elif (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) && defined(__x86_64__)
-        __extension__ typedef unsigned __int128 uint128;
-        uint128 p = static_cast<uint128>(a) * static_cast<uint128>(b);
-        p += k;
-        *outHigh = static_cast<uint64_t>(p >> 64);
-        return static_cast<uint64_t>(p);
-#else
-        const uint64_t a0 = a & 0xFFFFFFFF, a1 = a >> 32, b0 = b & 0xFFFFFFFF, b1 = b >> 32;
-        uint64_t x0 = a0 * b0, x1 = a0 * b1, x2 = a1 * b0, x3 = a1 * b1;
-        x1 += (x0 >> 32); // can't give carry
-        x1 += x2;
-        if (x1 < x2)
-            x3 += (static_cast<uint64_t>(1) << 32);
-        uint64_t lo = (x1 << 32) + (x0 & 0xFFFFFFFF);
-        uint64_t hi = x3 + (x1 >> 32);
-
-        lo += k;
-        if (lo < k)
-            hi++;
-        *outHigh = hi;
-        return lo;
-#endif
-    }
-
-    static const size_t kBitCount = 3328;  // 64bit * 54 > 10^1000
-    static const size_t kCapacity = kBitCount / sizeof(Type);
-    static const size_t kTypeBit = sizeof(Type) * 8;
-
-    Type digits_[kCapacity];
-    size_t count_;
-};
-
-} // namespace internal
-RAPIDJSON_NAMESPACE_END
-
-#endif // RAPIDJSON_BIGINTEGER_H_
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/internal/diyfp.h b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/internal/diyfp.h
deleted file mode 100644
index c9fefdc..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/internal/diyfp.h
+++ /dev/null
@@ -1,258 +0,0 @@
-// Tencent is pleased to support the open source community by making RapidJSON available.
-// 
-// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
-//
-// Licensed under the MIT License (the "License"); you may not use this file except
-// in compliance with the License. You may obtain a copy of the License at
-//
-// http://opensource.org/licenses/MIT
-//
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
-// specific language governing permissions and limitations under the License.
-
-// This is a C++ header-only implementation of Grisu2 algorithm from the publication:
-// Loitsch, Florian. "Printing floating-point numbers quickly and accurately with
-// integers." ACM Sigplan Notices 45.6 (2010): 233-243.
-
-#ifndef RAPIDJSON_DIYFP_H_
-#define RAPIDJSON_DIYFP_H_
-
-#include "../rapidjson.h"
-
-#if defined(_MSC_VER) && defined(_M_AMD64)
-#include <intrin.h>
-#pragma intrinsic(_BitScanReverse64)
-#pragma intrinsic(_umul128)
-#endif
-
-RAPIDJSON_NAMESPACE_BEGIN
-namespace internal {
-
-#ifdef __GNUC__
-RAPIDJSON_DIAG_PUSH
-RAPIDJSON_DIAG_OFF(effc++)
-#endif
-
-#ifdef __clang__
-RAPIDJSON_DIAG_PUSH
-RAPIDJSON_DIAG_OFF(padded)
-#endif
-
-struct DiyFp {
-    DiyFp() : f(), e() {}
-
-    DiyFp(uint64_t fp, int exp) : f(fp), e(exp) {}
-
-    explicit DiyFp(double d) {
-        union {
-            double d;
-            uint64_t u64;
-        } u = { d };
-
-        int biased_e = static_cast<int>((u.u64 & kDpExponentMask) >> kDpSignificandSize);
-        uint64_t significand = (u.u64 & kDpSignificandMask);
-        if (biased_e != 0) {
-            f = significand + kDpHiddenBit;
-            e = biased_e - kDpExponentBias;
-        } 
-        else {
-            f = significand;
-            e = kDpMinExponent + 1;
-        }
-    }
-
-    DiyFp operator-(const DiyFp& rhs) const {
-        return DiyFp(f - rhs.f, e);
-    }
-
-    DiyFp operator*(const DiyFp& rhs) const {
-#if defined(_MSC_VER) && defined(_M_AMD64)
-        uint64_t h;
-        uint64_t l = _umul128(f, rhs.f, &h);
-        if (l & (uint64_t(1) << 63)) // rounding
-            h++;
-        return DiyFp(h, e + rhs.e + 64);
-#elif (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6)) && defined(__x86_64__)
-        __extension__ typedef unsigned __int128 uint128;
-        uint128 p = static_cast<uint128>(f) * static_cast<uint128>(rhs.f);
-        uint64_t h = static_cast<uint64_t>(p >> 64);
-        uint64_t l = static_cast<uint64_t>(p);
-        if (l & (uint64_t(1) << 63)) // rounding
-            h++;
-        return DiyFp(h, e + rhs.e + 64);
-#else
-        const uint64_t M32 = 0xFFFFFFFF;
-        const uint64_t a = f >> 32;
-        const uint64_t b = f & M32;
-        const uint64_t c = rhs.f >> 32;
-        const uint64_t d = rhs.f & M32;
-        const uint64_t ac = a * c;
-        const uint64_t bc = b * c;
-        const uint64_t ad = a * d;
-        const uint64_t bd = b * d;
-        uint64_t tmp = (bd >> 32) + (ad & M32) + (bc & M32);
-        tmp += 1U << 31;  /// mult_round
-        return DiyFp(ac + (ad >> 32) + (bc >> 32) + (tmp >> 32), e + rhs.e + 64);
-#endif
-    }
-
-    DiyFp Normalize() const {
-#if defined(_MSC_VER) && defined(_M_AMD64)
-        unsigned long index;
-        _BitScanReverse64(&index, f);
-        return DiyFp(f << (63 - index), e - (63 - index));
-#elif defined(__GNUC__) && __GNUC__ >= 4
-        int s = __builtin_clzll(f);
-        return DiyFp(f << s, e - s);
-#else
-        DiyFp res = *this;
-        while (!(res.f & (static_cast<uint64_t>(1) << 63))) {
-            res.f <<= 1;
-            res.e--;
-        }
-        return res;
-#endif
-    }
-
-    DiyFp NormalizeBoundary() const {
-        DiyFp res = *this;
-        while (!(res.f & (kDpHiddenBit << 1))) {
-            res.f <<= 1;
-            res.e--;
-        }
-        res.f <<= (kDiySignificandSize - kDpSignificandSize - 2);
-        res.e = res.e - (kDiySignificandSize - kDpSignificandSize - 2);
-        return res;
-    }
-
-    void NormalizedBoundaries(DiyFp* minus, DiyFp* plus) const {
-        DiyFp pl = DiyFp((f << 1) + 1, e - 1).NormalizeBoundary();
-        DiyFp mi = (f == kDpHiddenBit) ? DiyFp((f << 2) - 1, e - 2) : DiyFp((f << 1) - 1, e - 1);
-        mi.f <<= mi.e - pl.e;
-        mi.e = pl.e;
-        *plus = pl;
-        *minus = mi;
-    }
-
-    double ToDouble() const {
-        union {
-            double d;
-            uint64_t u64;
-        }u;
-        const uint64_t be = (e == kDpDenormalExponent && (f & kDpHiddenBit) == 0) ? 0 : 
-            static_cast<uint64_t>(e + kDpExponentBias);
-        u.u64 = (f & kDpSignificandMask) | (be << kDpSignificandSize);
-        return u.d;
-    }
-
-    static const int kDiySignificandSize = 64;
-    static const int kDpSignificandSize = 52;
-    static const int kDpExponentBias = 0x3FF + kDpSignificandSize;
-    static const int kDpMaxExponent = 0x7FF - kDpExponentBias;
-    static const int kDpMinExponent = -kDpExponentBias;
-    static const int kDpDenormalExponent = -kDpExponentBias + 1;
-    static const uint64_t kDpExponentMask = RAPIDJSON_UINT64_C2(0x7FF00000, 0x00000000);
-    static const uint64_t kDpSignificandMask = RAPIDJSON_UINT64_C2(0x000FFFFF, 0xFFFFFFFF);
-    static const uint64_t kDpHiddenBit = RAPIDJSON_UINT64_C2(0x00100000, 0x00000000);
-
-    uint64_t f;
-    int e;
-};
-
-inline DiyFp GetCachedPowerByIndex(size_t index) {
-    // 10^-348, 10^-340, ..., 10^340
-    static const uint64_t kCachedPowers_F[] = {
-        RAPIDJSON_UINT64_C2(0xfa8fd5a0, 0x081c0288), RAPIDJSON_UINT64_C2(0xbaaee17f, 0xa23ebf76),
-        RAPIDJSON_UINT64_C2(0x8b16fb20, 0x3055ac76), RAPIDJSON_UINT64_C2(0xcf42894a, 0x5dce35ea),
-        RAPIDJSON_UINT64_C2(0x9a6bb0aa, 0x55653b2d), RAPIDJSON_UINT64_C2(0xe61acf03, 0x3d1a45df),
-        RAPIDJSON_UINT64_C2(0xab70fe17, 0xc79ac6ca), RAPIDJSON_UINT64_C2(0xff77b1fc, 0xbebcdc4f),
-        RAPIDJSON_UINT64_C2(0xbe5691ef, 0x416bd60c), RAPIDJSON_UINT64_C2(0x8dd01fad, 0x907ffc3c),
-        RAPIDJSON_UINT64_C2(0xd3515c28, 0x31559a83), RAPIDJSON_UINT64_C2(0x9d71ac8f, 0xada6c9b5),
-        RAPIDJSON_UINT64_C2(0xea9c2277, 0x23ee8bcb), RAPIDJSON_UINT64_C2(0xaecc4991, 0x4078536d),
-        RAPIDJSON_UINT64_C2(0x823c1279, 0x5db6ce57), RAPIDJSON_UINT64_C2(0xc2109436, 0x4dfb5637),
-        RAPIDJSON_UINT64_C2(0x9096ea6f, 0x3848984f), RAPIDJSON_UINT64_C2(0xd77485cb, 0x25823ac7),
-        RAPIDJSON_UINT64_C2(0xa086cfcd, 0x97bf97f4), RAPIDJSON_UINT64_C2(0xef340a98, 0x172aace5),
-        RAPIDJSON_UINT64_C2(0xb23867fb, 0x2a35b28e), RAPIDJSON_UINT64_C2(0x84c8d4df, 0xd2c63f3b),
-        RAPIDJSON_UINT64_C2(0xc5dd4427, 0x1ad3cdba), RAPIDJSON_UINT64_C2(0x936b9fce, 0xbb25c996),
-        RAPIDJSON_UINT64_C2(0xdbac6c24, 0x7d62a584), RAPIDJSON_UINT64_C2(0xa3ab6658, 0x0d5fdaf6),
-        RAPIDJSON_UINT64_C2(0xf3e2f893, 0xdec3f126), RAPIDJSON_UINT64_C2(0xb5b5ada8, 0xaaff80b8),
-        RAPIDJSON_UINT64_C2(0x87625f05, 0x6c7c4a8b), RAPIDJSON_UINT64_C2(0xc9bcff60, 0x34c13053),
-        RAPIDJSON_UINT64_C2(0x964e858c, 0x91ba2655), RAPIDJSON_UINT64_C2(0xdff97724, 0x70297ebd),
-        RAPIDJSON_UINT64_C2(0xa6dfbd9f, 0xb8e5b88f), RAPIDJSON_UINT64_C2(0xf8a95fcf, 0x88747d94),
-        RAPIDJSON_UINT64_C2(0xb9447093, 0x8fa89bcf), RAPIDJSON_UINT64_C2(0x8a08f0f8, 0xbf0f156b),
-        RAPIDJSON_UINT64_C2(0xcdb02555, 0x653131b6), RAPIDJSON_UINT64_C2(0x993fe2c6, 0xd07b7fac),
-        RAPIDJSON_UINT64_C2(0xe45c10c4, 0x2a2b3b06), RAPIDJSON_UINT64_C2(0xaa242499, 0x697392d3),
-        RAPIDJSON_UINT64_C2(0xfd87b5f2, 0x8300ca0e), RAPIDJSON_UINT64_C2(0xbce50864, 0x92111aeb),
-        RAPIDJSON_UINT64_C2(0x8cbccc09, 0x6f5088cc), RAPIDJSON_UINT64_C2(0xd1b71758, 0xe219652c),
-        RAPIDJSON_UINT64_C2(0x9c400000, 0x00000000), RAPIDJSON_UINT64_C2(0xe8d4a510, 0x00000000),
-        RAPIDJSON_UINT64_C2(0xad78ebc5, 0xac620000), RAPIDJSON_UINT64_C2(0x813f3978, 0xf8940984),
-        RAPIDJSON_UINT64_C2(0xc097ce7b, 0xc90715b3), RAPIDJSON_UINT64_C2(0x8f7e32ce, 0x7bea5c70),
-        RAPIDJSON_UINT64_C2(0xd5d238a4, 0xabe98068), RAPIDJSON_UINT64_C2(0x9f4f2726, 0x179a2245),
-        RAPIDJSON_UINT64_C2(0xed63a231, 0xd4c4fb27), RAPIDJSON_UINT64_C2(0xb0de6538, 0x8cc8ada8),
-        RAPIDJSON_UINT64_C2(0x83c7088e, 0x1aab65db), RAPIDJSON_UINT64_C2(0xc45d1df9, 0x42711d9a),
-        RAPIDJSON_UINT64_C2(0x924d692c, 0xa61be758), RAPIDJSON_UINT64_C2(0xda01ee64, 0x1a708dea),
-        RAPIDJSON_UINT64_C2(0xa26da399, 0x9aef774a), RAPIDJSON_UINT64_C2(0xf209787b, 0xb47d6b85),
-        RAPIDJSON_UINT64_C2(0xb454e4a1, 0x79dd1877), RAPIDJSON_UINT64_C2(0x865b8692, 0x5b9bc5c2),
-        RAPIDJSON_UINT64_C2(0xc83553c5, 0xc8965d3d), RAPIDJSON_UINT64_C2(0x952ab45c, 0xfa97a0b3),
-        RAPIDJSON_UINT64_C2(0xde469fbd, 0x99a05fe3), RAPIDJSON_UINT64_C2(0xa59bc234, 0xdb398c25),
-        RAPIDJSON_UINT64_C2(0xf6c69a72, 0xa3989f5c), RAPIDJSON_UINT64_C2(0xb7dcbf53, 0x54e9bece),
-        RAPIDJSON_UINT64_C2(0x88fcf317, 0xf22241e2), RAPIDJSON_UINT64_C2(0xcc20ce9b, 0xd35c78a5),
-        RAPIDJSON_UINT64_C2(0x98165af3, 0x7b2153df), RAPIDJSON_UINT64_C2(0xe2a0b5dc, 0x971f303a),
-        RAPIDJSON_UINT64_C2(0xa8d9d153, 0x5ce3b396), RAPIDJSON_UINT64_C2(0xfb9b7cd9, 0xa4a7443c),
-        RAPIDJSON_UINT64_C2(0xbb764c4c, 0xa7a44410), RAPIDJSON_UINT64_C2(0x8bab8eef, 0xb6409c1a),
-        RAPIDJSON_UINT64_C2(0xd01fef10, 0xa657842c), RAPIDJSON_UINT64_C2(0x9b10a4e5, 0xe9913129),
-        RAPIDJSON_UINT64_C2(0xe7109bfb, 0xa19c0c9d), RAPIDJSON_UINT64_C2(0xac2820d9, 0x623bf429),
-        RAPIDJSON_UINT64_C2(0x80444b5e, 0x7aa7cf85), RAPIDJSON_UINT64_C2(0xbf21e440, 0x03acdd2d),
-        RAPIDJSON_UINT64_C2(0x8e679c2f, 0x5e44ff8f), RAPIDJSON_UINT64_C2(0xd433179d, 0x9c8cb841),
-        RAPIDJSON_UINT64_C2(0x9e19db92, 0xb4e31ba9), RAPIDJSON_UINT64_C2(0xeb96bf6e, 0xbadf77d9),
-        RAPIDJSON_UINT64_C2(0xaf87023b, 0x9bf0ee6b)
-    };
-    static const int16_t kCachedPowers_E[] = {
-        -1220, -1193, -1166, -1140, -1113, -1087, -1060, -1034, -1007,  -980,
-        -954,  -927,  -901,  -874,  -847,  -821,  -794,  -768,  -741,  -715,
-        -688,  -661,  -635,  -608,  -582,  -555,  -529,  -502,  -475,  -449,
-        -422,  -396,  -369,  -343,  -316,  -289,  -263,  -236,  -210,  -183,
-        -157,  -130,  -103,   -77,   -50,   -24,     3,    30,    56,    83,
-        109,   136,   162,   189,   216,   242,   269,   295,   322,   348,
-        375,   402,   428,   455,   481,   508,   534,   561,   588,   614,
-        641,   667,   694,   720,   747,   774,   800,   827,   853,   880,
-        907,   933,   960,   986,  1013,  1039,  1066
-    };
-    return DiyFp(kCachedPowers_F[index], kCachedPowers_E[index]);
-}
-    
-inline DiyFp GetCachedPower(int e, int* K) {
-
-    //int k = static_cast<int>(ceil((-61 - e) * 0.30102999566398114)) + 374;
-    double dk = (-61 - e) * 0.30102999566398114 + 347;  // dk must be positive, so can do ceiling in positive
-    int k = static_cast<int>(dk);
-    if (dk - k > 0.0)
-        k++;
-
-    unsigned index = static_cast<unsigned>((k >> 3) + 1);
-    *K = -(-348 + static_cast<int>(index << 3));    // decimal exponent no need lookup table
-
-    return GetCachedPowerByIndex(index);
-}
-
-inline DiyFp GetCachedPower10(int exp, int *outExp) {
-     unsigned index = (static_cast<unsigned>(exp) + 348u) / 8u;
-     *outExp = -348 + static_cast<int>(index) * 8;
-     return GetCachedPowerByIndex(index);
- }
-
-#ifdef __GNUC__
-RAPIDJSON_DIAG_POP
-#endif
-
-#ifdef __clang__
-RAPIDJSON_DIAG_POP
-RAPIDJSON_DIAG_OFF(padded)
-#endif
-
-} // namespace internal
-RAPIDJSON_NAMESPACE_END
-
-#endif // RAPIDJSON_DIYFP_H_
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/internal/dtoa.h b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/internal/dtoa.h
deleted file mode 100644
index bc45496..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/internal/dtoa.h
+++ /dev/null
@@ -1,244 +0,0 @@
-// Tencent is pleased to support the open source community by making RapidJSON available.
-// 
-// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
-//
-// Licensed under the MIT License (the "License"); you may not use this file except
-// in compliance with the License. You may obtain a copy of the License at
-//
-// http://opensource.org/licenses/MIT
-//
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
-// specific language governing permissions and limitations under the License.
-
-// This is a C++ header-only implementation of Grisu2 algorithm from the publication:
-// Loitsch, Florian. "Printing floating-point numbers quickly and accurately with
-// integers." ACM Sigplan Notices 45.6 (2010): 233-243.
-
-#ifndef RAPIDJSON_DTOA_
-#define RAPIDJSON_DTOA_
-
-#include "itoa.h" // GetDigitsLut()
-#include "diyfp.h"
-#include "ieee754.h"
-
-RAPIDJSON_NAMESPACE_BEGIN
-namespace internal {
-
-#ifdef __GNUC__
-RAPIDJSON_DIAG_PUSH
-RAPIDJSON_DIAG_OFF(effc++)
-RAPIDJSON_DIAG_OFF(array-bounds) // some gcc versions generate wrong warnings https://gcc.gnu.org/bugzilla/show_bug.cgi?id=59124
-#endif
-
-inline void GrisuRound(char* buffer, int len, uint64_t delta, uint64_t rest, uint64_t ten_kappa, uint64_t wp_w) {
-    while (rest < wp_w && delta - rest >= ten_kappa &&
-           (rest + ten_kappa < wp_w ||  /// closer
-            wp_w - rest > rest + ten_kappa - wp_w)) {
-        buffer[len - 1]--;
-        rest += ten_kappa;
-    }
-}
-
-inline unsigned CountDecimalDigit32(uint32_t n) {
-    // Simple pure C++ implementation was faster than __builtin_clz version in this situation.
-    if (n < 10) return 1;
-    if (n < 100) return 2;
-    if (n < 1000) return 3;
-    if (n < 10000) return 4;
-    if (n < 100000) return 5;
-    if (n < 1000000) return 6;
-    if (n < 10000000) return 7;
-    if (n < 100000000) return 8;
-    // Will not reach 10 digits in DigitGen()
-    //if (n < 1000000000) return 9;
-    //return 10;
-    return 9;
-}
-
-inline void DigitGen(const DiyFp& W, const DiyFp& Mp, uint64_t delta, char* buffer, int* len, int* K) {
-    static const uint32_t kPow10[] = { 1, 10, 100, 1000, 10000, 100000, 1000000, 10000000, 100000000, 1000000000 };
-    const DiyFp one(uint64_t(1) << -Mp.e, Mp.e);
-    const DiyFp wp_w = Mp - W;
-    uint32_t p1 = static_cast<uint32_t>(Mp.f >> -one.e);
-    uint64_t p2 = Mp.f & (one.f - 1);
-    unsigned kappa = CountDecimalDigit32(p1); // kappa in [0, 9]
-    *len = 0;
-
-    while (kappa > 0) {
-        uint32_t d = 0;
-        switch (kappa) {
-            case  9: d = p1 /  100000000; p1 %=  100000000; break;
-            case  8: d = p1 /   10000000; p1 %=   10000000; break;
-            case  7: d = p1 /    1000000; p1 %=    1000000; break;
-            case  6: d = p1 /     100000; p1 %=     100000; break;
-            case  5: d = p1 /      10000; p1 %=      10000; break;
-            case  4: d = p1 /       1000; p1 %=       1000; break;
-            case  3: d = p1 /        100; p1 %=        100; break;
-            case  2: d = p1 /         10; p1 %=         10; break;
-            case  1: d = p1;              p1 =           0; break;
-            default:;
-        }
-        if (d || *len)
-            buffer[(*len)++] = static_cast<char>('0' + static_cast<char>(d));
-        kappa--;
-        uint64_t tmp = (static_cast<uint64_t>(p1) << -one.e) + p2;
-        if (tmp <= delta) {
-            *K += kappa;
-            GrisuRound(buffer, *len, delta, tmp, static_cast<uint64_t>(kPow10[kappa]) << -one.e, wp_w.f);
-            return;
-        }
-    }
-
-    // kappa = 0
-    for (;;) {
-        p2 *= 10;
-        delta *= 10;
-        char d = static_cast<char>(p2 >> -one.e);
-        if (d || *len)
-            buffer[(*len)++] = static_cast<char>('0' + d);
-        p2 &= one.f - 1;
-        kappa--;
-        if (p2 < delta) {
-            *K += kappa;
-            GrisuRound(buffer, *len, delta, p2, one.f, wp_w.f * kPow10[-static_cast<int>(kappa)]);
-            return;
-        }
-    }
-}
-
-inline void Grisu2(double value, char* buffer, int* length, int* K) {
-    const DiyFp v(value);
-    DiyFp w_m, w_p;
-    v.NormalizedBoundaries(&w_m, &w_p);
-
-    const DiyFp c_mk = GetCachedPower(w_p.e, K);
-    const DiyFp W = v.Normalize() * c_mk;
-    DiyFp Wp = w_p * c_mk;
-    DiyFp Wm = w_m * c_mk;
-    Wm.f++;
-    Wp.f--;
-    DigitGen(W, Wp, Wp.f - Wm.f, buffer, length, K);
-}
-
-inline char* WriteExponent(int K, char* buffer) {
-    if (K < 0) {
-        *buffer++ = '-';
-        K = -K;
-    }
-
-    if (K >= 100) {
-        *buffer++ = static_cast<char>('0' + static_cast<char>(K / 100));
-        K %= 100;
-        const char* d = GetDigitsLut() + K * 2;
-        *buffer++ = d[0];
-        *buffer++ = d[1];
-    }
-    else if (K >= 10) {
-        const char* d = GetDigitsLut() + K * 2;
-        *buffer++ = d[0];
-        *buffer++ = d[1];
-    }
-    else
-        *buffer++ = static_cast<char>('0' + static_cast<char>(K));
-
-    return buffer;
-}
-
-inline char* Prettify(char* buffer, int length, int k, int maxDecimalPlaces) {
-    const int kk = length + k;  // 10^(kk-1) <= v < 10^kk
-
-    if (0 <= k && kk <= 21) {
-        // 1234e7 -> 12340000000
-        for (int i = length; i < kk; i++)
-            buffer[i] = '0';
-        buffer[kk] = '.';
-        buffer[kk + 1] = '0';
-        return &buffer[kk + 2];
-    }
-    else if (0 < kk && kk <= 21) {
-        // 1234e-2 -> 12.34
-        std::memmove(&buffer[kk + 1], &buffer[kk], static_cast<size_t>(length - kk));
-        buffer[kk] = '.';
-        if (0 > k + maxDecimalPlaces) {
-            // When maxDecimalPlaces = 2, 1.2345 -> 1.23, 1.102 -> 1.1
-            // Remove extra trailing zeros (at least one) after truncation.
-            for (int i = kk + maxDecimalPlaces; i > kk + 1; i--)
-                if (buffer[i] != '0')
-                    return &buffer[i + 1];
-            return &buffer[kk + 2]; // Reserve one zero
-        }
-        else
-            return &buffer[length + 1];
-    }
-    else if (-6 < kk && kk <= 0) {
-        // 1234e-6 -> 0.001234
-        const int offset = 2 - kk;
-        std::memmove(&buffer[offset], &buffer[0], static_cast<size_t>(length));
-        buffer[0] = '0';
-        buffer[1] = '.';
-        for (int i = 2; i < offset; i++)
-            buffer[i] = '0';
-        if (length - kk > maxDecimalPlaces) {
-            // When maxDecimalPlaces = 2, 0.123 -> 0.12, 0.102 -> 0.1
-            // Remove extra trailing zeros (at least one) after truncation.
-            for (int i = maxDecimalPlaces + 1; i > 2; i--)
-                if (buffer[i] != '0')
-                    return &buffer[i + 1];
-            return &buffer[3]; // Reserve one zero
-        }
-        else
-            return &buffer[length + offset];
-    }
-    else if (kk < -maxDecimalPlaces) {
-        // Truncate to zero
-        buffer[0] = '0';
-        buffer[1] = '.';
-        buffer[2] = '0';
-        return &buffer[3];
-    }
-    else if (length == 1) {
-        // 1e30
-        buffer[1] = 'e';
-        return WriteExponent(kk - 1, &buffer[2]);
-    }
-    else {
-        // 1234e30 -> 1.234e33
-        std::memmove(&buffer[2], &buffer[1], static_cast<size_t>(length - 1));
-        buffer[1] = '.';
-        buffer[length + 1] = 'e';
-        return WriteExponent(kk - 1, &buffer[0 + length + 2]);
-    }
-}
-
-inline char* dtoa(double value, char* buffer, int maxDecimalPlaces = 324) {
-    RAPIDJSON_ASSERT(maxDecimalPlaces >= 1);
-    Double d(value);
-    if (d.IsZero()) {
-        if (d.Sign())
-            *buffer++ = '-';     // -0.0, Issue #289
-        buffer[0] = '0';
-        buffer[1] = '.';
-        buffer[2] = '0';
-        return &buffer[3];
-    }
-    else {
-        if (value < 0) {
-            *buffer++ = '-';
-            value = -value;
-        }
-        int length, K;
-        Grisu2(value, buffer, &length, &K);
-        return Prettify(buffer, length, K, maxDecimalPlaces);
-    }
-}
-
-#ifdef __GNUC__
-RAPIDJSON_DIAG_POP
-#endif
-
-} // namespace internal
-RAPIDJSON_NAMESPACE_END
-
-#endif // RAPIDJSON_DTOA_
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/internal/ieee754.h b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/internal/ieee754.h
deleted file mode 100644
index 82bb0b9..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/internal/ieee754.h
+++ /dev/null
@@ -1,78 +0,0 @@
-// Tencent is pleased to support the open source community by making RapidJSON available.
-// 
-// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
-//
-// Licensed under the MIT License (the "License"); you may not use this file except
-// in compliance with the License. You may obtain a copy of the License at
-//
-// http://opensource.org/licenses/MIT
-//
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
-// specific language governing permissions and limitations under the License.
-
-#ifndef RAPIDJSON_IEEE754_
-#define RAPIDJSON_IEEE754_
-
-#include "../rapidjson.h"
-
-RAPIDJSON_NAMESPACE_BEGIN
-namespace internal {
-
-class Double {
-public:
-    Double() {}
-    Double(double d) : d_(d) {}
-    Double(uint64_t u) : u_(u) {}
-
-    double Value() const { return d_; }
-    uint64_t Uint64Value() const { return u_; }
-
-    double NextPositiveDouble() const {
-        RAPIDJSON_ASSERT(!Sign());
-        return Double(u_ + 1).Value();
-    }
-
-    bool Sign() const { return (u_ & kSignMask) != 0; }
-    uint64_t Significand() const { return u_ & kSignificandMask; }
-    int Exponent() const { return static_cast<int>(((u_ & kExponentMask) >> kSignificandSize) - kExponentBias); }
-
-    bool IsNan() const { return (u_ & kExponentMask) == kExponentMask && Significand() != 0; }
-    bool IsInf() const { return (u_ & kExponentMask) == kExponentMask && Significand() == 0; }
-    bool IsNanOrInf() const { return (u_ & kExponentMask) == kExponentMask; }
-    bool IsNormal() const { return (u_ & kExponentMask) != 0 || Significand() == 0; }
-    bool IsZero() const { return (u_ & (kExponentMask | kSignificandMask)) == 0; }
-
-    uint64_t IntegerSignificand() const { return IsNormal() ? Significand() | kHiddenBit : Significand(); }
-    int IntegerExponent() const { return (IsNormal() ? Exponent() : kDenormalExponent) - kSignificandSize; }
-    uint64_t ToBias() const { return (u_ & kSignMask) ? ~u_ + 1 : u_ | kSignMask; }
-
-    static unsigned EffectiveSignificandSize(int order) {
-        if (order >= -1021)
-            return 53;
-        else if (order <= -1074)
-            return 0;
-        else
-            return static_cast<unsigned>(order) + 1074;
-    }
-
-private:
-    static const int kSignificandSize = 52;
-    static const int kExponentBias = 0x3FF;
-    static const int kDenormalExponent = 1 - kExponentBias;
-    static const uint64_t kSignMask = RAPIDJSON_UINT64_C2(0x80000000, 0x00000000);
-    static const uint64_t kExponentMask = RAPIDJSON_UINT64_C2(0x7FF00000, 0x00000000);
-    static const uint64_t kSignificandMask = RAPIDJSON_UINT64_C2(0x000FFFFF, 0xFFFFFFFF);
-    static const uint64_t kHiddenBit = RAPIDJSON_UINT64_C2(0x00100000, 0x00000000);
-
-    union {
-        double d_;
-        uint64_t u_;
-    };
-};
-
-} // namespace internal
-RAPIDJSON_NAMESPACE_END
-
-#endif // RAPIDJSON_IEEE754_
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/internal/itoa.h b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/internal/itoa.h
deleted file mode 100644
index 01a4e7e..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/internal/itoa.h
+++ /dev/null
@@ -1,304 +0,0 @@
-// Tencent is pleased to support the open source community by making RapidJSON available.
-// 
-// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
-//
-// Licensed under the MIT License (the "License"); you may not use this file except
-// in compliance with the License. You may obtain a copy of the License at
-//
-// http://opensource.org/licenses/MIT
-//
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
-// specific language governing permissions and limitations under the License.
-
-#ifndef RAPIDJSON_ITOA_
-#define RAPIDJSON_ITOA_
-
-#include "../rapidjson.h"
-
-RAPIDJSON_NAMESPACE_BEGIN
-namespace internal {
-
-inline const char* GetDigitsLut() {
-    static const char cDigitsLut[200] = {
-        '0','0','0','1','0','2','0','3','0','4','0','5','0','6','0','7','0','8','0','9',
-        '1','0','1','1','1','2','1','3','1','4','1','5','1','6','1','7','1','8','1','9',
-        '2','0','2','1','2','2','2','3','2','4','2','5','2','6','2','7','2','8','2','9',
-        '3','0','3','1','3','2','3','3','3','4','3','5','3','6','3','7','3','8','3','9',
-        '4','0','4','1','4','2','4','3','4','4','4','5','4','6','4','7','4','8','4','9',
-        '5','0','5','1','5','2','5','3','5','4','5','5','5','6','5','7','5','8','5','9',
-        '6','0','6','1','6','2','6','3','6','4','6','5','6','6','6','7','6','8','6','9',
-        '7','0','7','1','7','2','7','3','7','4','7','5','7','6','7','7','7','8','7','9',
-        '8','0','8','1','8','2','8','3','8','4','8','5','8','6','8','7','8','8','8','9',
-        '9','0','9','1','9','2','9','3','9','4','9','5','9','6','9','7','9','8','9','9'
-    };
-    return cDigitsLut;
-}
-
-inline char* u32toa(uint32_t value, char* buffer) {
-    const char* cDigitsLut = GetDigitsLut();
-
-    if (value < 10000) {
-        const uint32_t d1 = (value / 100) << 1;
-        const uint32_t d2 = (value % 100) << 1;
-        
-        if (value >= 1000)
-            *buffer++ = cDigitsLut[d1];
-        if (value >= 100)
-            *buffer++ = cDigitsLut[d1 + 1];
-        if (value >= 10)
-            *buffer++ = cDigitsLut[d2];
-        *buffer++ = cDigitsLut[d2 + 1];
-    }
-    else if (value < 100000000) {
-        // value = bbbbcccc
-        const uint32_t b = value / 10000;
-        const uint32_t c = value % 10000;
-        
-        const uint32_t d1 = (b / 100) << 1;
-        const uint32_t d2 = (b % 100) << 1;
-        
-        const uint32_t d3 = (c / 100) << 1;
-        const uint32_t d4 = (c % 100) << 1;
-        
-        if (value >= 10000000)
-            *buffer++ = cDigitsLut[d1];
-        if (value >= 1000000)
-            *buffer++ = cDigitsLut[d1 + 1];
-        if (value >= 100000)
-            *buffer++ = cDigitsLut[d2];
-        *buffer++ = cDigitsLut[d2 + 1];
-        
-        *buffer++ = cDigitsLut[d3];
-        *buffer++ = cDigitsLut[d3 + 1];
-        *buffer++ = cDigitsLut[d4];
-        *buffer++ = cDigitsLut[d4 + 1];
-    }
-    else {
-        // value = aabbbbcccc in decimal
-        
-        const uint32_t a = value / 100000000; // 1 to 42
-        value %= 100000000;
-        
-        if (a >= 10) {
-            const unsigned i = a << 1;
-            *buffer++ = cDigitsLut[i];
-            *buffer++ = cDigitsLut[i + 1];
-        }
-        else
-            *buffer++ = static_cast<char>('0' + static_cast<char>(a));
-
-        const uint32_t b = value / 10000; // 0 to 9999
-        const uint32_t c = value % 10000; // 0 to 9999
-        
-        const uint32_t d1 = (b / 100) << 1;
-        const uint32_t d2 = (b % 100) << 1;
-        
-        const uint32_t d3 = (c / 100) << 1;
-        const uint32_t d4 = (c % 100) << 1;
-        
-        *buffer++ = cDigitsLut[d1];
-        *buffer++ = cDigitsLut[d1 + 1];
-        *buffer++ = cDigitsLut[d2];
-        *buffer++ = cDigitsLut[d2 + 1];
-        *buffer++ = cDigitsLut[d3];
-        *buffer++ = cDigitsLut[d3 + 1];
-        *buffer++ = cDigitsLut[d4];
-        *buffer++ = cDigitsLut[d4 + 1];
-    }
-    return buffer;
-}
-
-inline char* i32toa(int32_t value, char* buffer) {
-    uint32_t u = static_cast<uint32_t>(value);
-    if (value < 0) {
-        *buffer++ = '-';
-        u = ~u + 1;
-    }
-
-    return u32toa(u, buffer);
-}
-
-inline char* u64toa(uint64_t value, char* buffer) {
-    const char* cDigitsLut = GetDigitsLut();
-    const uint64_t  kTen8 = 100000000;
-    const uint64_t  kTen9 = kTen8 * 10;
-    const uint64_t kTen10 = kTen8 * 100;
-    const uint64_t kTen11 = kTen8 * 1000;
-    const uint64_t kTen12 = kTen8 * 10000;
-    const uint64_t kTen13 = kTen8 * 100000;
-    const uint64_t kTen14 = kTen8 * 1000000;
-    const uint64_t kTen15 = kTen8 * 10000000;
-    const uint64_t kTen16 = kTen8 * kTen8;
-    
-    if (value < kTen8) {
-        uint32_t v = static_cast<uint32_t>(value);
-        if (v < 10000) {
-            const uint32_t d1 = (v / 100) << 1;
-            const uint32_t d2 = (v % 100) << 1;
-            
-            if (v >= 1000)
-                *buffer++ = cDigitsLut[d1];
-            if (v >= 100)
-                *buffer++ = cDigitsLut[d1 + 1];
-            if (v >= 10)
-                *buffer++ = cDigitsLut[d2];
-            *buffer++ = cDigitsLut[d2 + 1];
-        }
-        else {
-            // value = bbbbcccc
-            const uint32_t b = v / 10000;
-            const uint32_t c = v % 10000;
-            
-            const uint32_t d1 = (b / 100) << 1;
-            const uint32_t d2 = (b % 100) << 1;
-            
-            const uint32_t d3 = (c / 100) << 1;
-            const uint32_t d4 = (c % 100) << 1;
-            
-            if (value >= 10000000)
-                *buffer++ = cDigitsLut[d1];
-            if (value >= 1000000)
-                *buffer++ = cDigitsLut[d1 + 1];
-            if (value >= 100000)
-                *buffer++ = cDigitsLut[d2];
-            *buffer++ = cDigitsLut[d2 + 1];
-            
-            *buffer++ = cDigitsLut[d3];
-            *buffer++ = cDigitsLut[d3 + 1];
-            *buffer++ = cDigitsLut[d4];
-            *buffer++ = cDigitsLut[d4 + 1];
-        }
-    }
-    else if (value < kTen16) {
-        const uint32_t v0 = static_cast<uint32_t>(value / kTen8);
-        const uint32_t v1 = static_cast<uint32_t>(value % kTen8);
-        
-        const uint32_t b0 = v0 / 10000;
-        const uint32_t c0 = v0 % 10000;
-        
-        const uint32_t d1 = (b0 / 100) << 1;
-        const uint32_t d2 = (b0 % 100) << 1;
-        
-        const uint32_t d3 = (c0 / 100) << 1;
-        const uint32_t d4 = (c0 % 100) << 1;
-
-        const uint32_t b1 = v1 / 10000;
-        const uint32_t c1 = v1 % 10000;
-        
-        const uint32_t d5 = (b1 / 100) << 1;
-        const uint32_t d6 = (b1 % 100) << 1;
-        
-        const uint32_t d7 = (c1 / 100) << 1;
-        const uint32_t d8 = (c1 % 100) << 1;
-
-        if (value >= kTen15)
-            *buffer++ = cDigitsLut[d1];
-        if (value >= kTen14)
-            *buffer++ = cDigitsLut[d1 + 1];
-        if (value >= kTen13)
-            *buffer++ = cDigitsLut[d2];
-        if (value >= kTen12)
-            *buffer++ = cDigitsLut[d2 + 1];
-        if (value >= kTen11)
-            *buffer++ = cDigitsLut[d3];
-        if (value >= kTen10)
-            *buffer++ = cDigitsLut[d3 + 1];
-        if (value >= kTen9)
-            *buffer++ = cDigitsLut[d4];
-        if (value >= kTen8)
-            *buffer++ = cDigitsLut[d4 + 1];
-        
-        *buffer++ = cDigitsLut[d5];
-        *buffer++ = cDigitsLut[d5 + 1];
-        *buffer++ = cDigitsLut[d6];
-        *buffer++ = cDigitsLut[d6 + 1];
-        *buffer++ = cDigitsLut[d7];
-        *buffer++ = cDigitsLut[d7 + 1];
-        *buffer++ = cDigitsLut[d8];
-        *buffer++ = cDigitsLut[d8 + 1];
-    }
-    else {
-        const uint32_t a = static_cast<uint32_t>(value / kTen16); // 1 to 1844
-        value %= kTen16;
-        
-        if (a < 10)
-            *buffer++ = static_cast<char>('0' + static_cast<char>(a));
-        else if (a < 100) {
-            const uint32_t i = a << 1;
-            *buffer++ = cDigitsLut[i];
-            *buffer++ = cDigitsLut[i + 1];
-        }
-        else if (a < 1000) {
-            *buffer++ = static_cast<char>('0' + static_cast<char>(a / 100));
-            
-            const uint32_t i = (a % 100) << 1;
-            *buffer++ = cDigitsLut[i];
-            *buffer++ = cDigitsLut[i + 1];
-        }
-        else {
-            const uint32_t i = (a / 100) << 1;
-            const uint32_t j = (a % 100) << 1;
-            *buffer++ = cDigitsLut[i];
-            *buffer++ = cDigitsLut[i + 1];
-            *buffer++ = cDigitsLut[j];
-            *buffer++ = cDigitsLut[j + 1];
-        }
-        
-        const uint32_t v0 = static_cast<uint32_t>(value / kTen8);
-        const uint32_t v1 = static_cast<uint32_t>(value % kTen8);
-        
-        const uint32_t b0 = v0 / 10000;
-        const uint32_t c0 = v0 % 10000;
-        
-        const uint32_t d1 = (b0 / 100) << 1;
-        const uint32_t d2 = (b0 % 100) << 1;
-        
-        const uint32_t d3 = (c0 / 100) << 1;
-        const uint32_t d4 = (c0 % 100) << 1;
-        
-        const uint32_t b1 = v1 / 10000;
-        const uint32_t c1 = v1 % 10000;
-        
-        const uint32_t d5 = (b1 / 100) << 1;
-        const uint32_t d6 = (b1 % 100) << 1;
-        
-        const uint32_t d7 = (c1 / 100) << 1;
-        const uint32_t d8 = (c1 % 100) << 1;
-        
-        *buffer++ = cDigitsLut[d1];
-        *buffer++ = cDigitsLut[d1 + 1];
-        *buffer++ = cDigitsLut[d2];
-        *buffer++ = cDigitsLut[d2 + 1];
-        *buffer++ = cDigitsLut[d3];
-        *buffer++ = cDigitsLut[d3 + 1];
-        *buffer++ = cDigitsLut[d4];
-        *buffer++ = cDigitsLut[d4 + 1];
-        *buffer++ = cDigitsLut[d5];
-        *buffer++ = cDigitsLut[d5 + 1];
-        *buffer++ = cDigitsLut[d6];
-        *buffer++ = cDigitsLut[d6 + 1];
-        *buffer++ = cDigitsLut[d7];
-        *buffer++ = cDigitsLut[d7 + 1];
-        *buffer++ = cDigitsLut[d8];
-        *buffer++ = cDigitsLut[d8 + 1];
-    }
-    
-    return buffer;
-}
-
-inline char* i64toa(int64_t value, char* buffer) {
-    uint64_t u = static_cast<uint64_t>(value);
-    if (value < 0) {
-        *buffer++ = '-';
-        u = ~u + 1;
-    }
-
-    return u64toa(u, buffer);
-}
-
-} // namespace internal
-RAPIDJSON_NAMESPACE_END
-
-#endif // RAPIDJSON_ITOA_
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/internal/meta.h b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/internal/meta.h
deleted file mode 100644
index 5a9aaa4..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/internal/meta.h
+++ /dev/null
@@ -1,181 +0,0 @@
-// Tencent is pleased to support the open source community by making RapidJSON available.
-// 
-// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
-//
-// Licensed under the MIT License (the "License"); you may not use this file except
-// in compliance with the License. You may obtain a copy of the License at
-//
-// http://opensource.org/licenses/MIT
-//
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
-// specific language governing permissions and limitations under the License.
-
-#ifndef RAPIDJSON_INTERNAL_META_H_
-#define RAPIDJSON_INTERNAL_META_H_
-
-#include "../rapidjson.h"
-
-#ifdef __GNUC__
-RAPIDJSON_DIAG_PUSH
-RAPIDJSON_DIAG_OFF(effc++)
-#endif
-#if defined(_MSC_VER)
-RAPIDJSON_DIAG_PUSH
-RAPIDJSON_DIAG_OFF(6334)
-#endif
-
-#if RAPIDJSON_HAS_CXX11_TYPETRAITS
-#include <type_traits>
-#endif
-
-//@cond RAPIDJSON_INTERNAL
-RAPIDJSON_NAMESPACE_BEGIN
-namespace internal {
-
-// Helper to wrap/convert arbitrary types to void, useful for arbitrary type matching
-template <typename T> struct Void { typedef void Type; };
-
-///////////////////////////////////////////////////////////////////////////////
-// BoolType, TrueType, FalseType
-//
-template <bool Cond> struct BoolType {
-    static const bool Value = Cond;
-    typedef BoolType Type;
-};
-typedef BoolType<true> TrueType;
-typedef BoolType<false> FalseType;
-
-
-///////////////////////////////////////////////////////////////////////////////
-// SelectIf, BoolExpr, NotExpr, AndExpr, OrExpr
-//
-
-template <bool C> struct SelectIfImpl { template <typename T1, typename T2> struct Apply { typedef T1 Type; }; };
-template <> struct SelectIfImpl<false> { template <typename T1, typename T2> struct Apply { typedef T2 Type; }; };
-template <bool C, typename T1, typename T2> struct SelectIfCond : SelectIfImpl<C>::template Apply<T1,T2> {};
-template <typename C, typename T1, typename T2> struct SelectIf : SelectIfCond<C::Value, T1, T2> {};
-
-template <bool Cond1, bool Cond2> struct AndExprCond : FalseType {};
-template <> struct AndExprCond<true, true> : TrueType {};
-template <bool Cond1, bool Cond2> struct OrExprCond : TrueType {};
-template <> struct OrExprCond<false, false> : FalseType {};
-
-template <typename C> struct BoolExpr : SelectIf<C,TrueType,FalseType>::Type {};
-template <typename C> struct NotExpr  : SelectIf<C,FalseType,TrueType>::Type {};
-template <typename C1, typename C2> struct AndExpr : AndExprCond<C1::Value, C2::Value>::Type {};
-template <typename C1, typename C2> struct OrExpr  : OrExprCond<C1::Value, C2::Value>::Type {};
-
-
-///////////////////////////////////////////////////////////////////////////////
-// AddConst, MaybeAddConst, RemoveConst
-template <typename T> struct AddConst { typedef const T Type; };
-template <bool Constify, typename T> struct MaybeAddConst : SelectIfCond<Constify, const T, T> {};
-template <typename T> struct RemoveConst { typedef T Type; };
-template <typename T> struct RemoveConst<const T> { typedef T Type; };
-
-
-///////////////////////////////////////////////////////////////////////////////
-// IsSame, IsConst, IsMoreConst, IsPointer
-//
-template <typename T, typename U> struct IsSame : FalseType {};
-template <typename T> struct IsSame<T, T> : TrueType {};
-
-template <typename T> struct IsConst : FalseType {};
-template <typename T> struct IsConst<const T> : TrueType {};
-
-template <typename CT, typename T>
-struct IsMoreConst
-    : AndExpr<IsSame<typename RemoveConst<CT>::Type, typename RemoveConst<T>::Type>,
-              BoolType<IsConst<CT>::Value >= IsConst<T>::Value> >::Type {};
-
-template <typename T> struct IsPointer : FalseType {};
-template <typename T> struct IsPointer<T*> : TrueType {};
-
-///////////////////////////////////////////////////////////////////////////////
-// IsBaseOf
-//
-#if RAPIDJSON_HAS_CXX11_TYPETRAITS
-
-template <typename B, typename D> struct IsBaseOf
-    : BoolType< ::std::is_base_of<B,D>::value> {};
-
-#else // simplified version adopted from Boost
-
-template<typename B, typename D> struct IsBaseOfImpl {
-    RAPIDJSON_STATIC_ASSERT(sizeof(B) != 0);
-    RAPIDJSON_STATIC_ASSERT(sizeof(D) != 0);
-
-    typedef char (&Yes)[1];
-    typedef char (&No) [2];
-
-    template <typename T>
-    static Yes Check(const D*, T);
-    static No  Check(const B*, int);
-
-    struct Host {
-        operator const B*() const;
-        operator const D*();
-    };
-
-    enum { Value = (sizeof(Check(Host(), 0)) == sizeof(Yes)) };
-};
-
-template <typename B, typename D> struct IsBaseOf
-    : OrExpr<IsSame<B, D>, BoolExpr<IsBaseOfImpl<B, D> > >::Type {};
-
-#endif // RAPIDJSON_HAS_CXX11_TYPETRAITS
-
-
-//////////////////////////////////////////////////////////////////////////
-// EnableIf / DisableIf
-//
-template <bool Condition, typename T = void> struct EnableIfCond  { typedef T Type; };
-template <typename T> struct EnableIfCond<false, T> { /* empty */ };
-
-template <bool Condition, typename T = void> struct DisableIfCond { typedef T Type; };
-template <typename T> struct DisableIfCond<true, T> { /* empty */ };
-
-template <typename Condition, typename T = void>
-struct EnableIf : EnableIfCond<Condition::Value, T> {};
-
-template <typename Condition, typename T = void>
-struct DisableIf : DisableIfCond<Condition::Value, T> {};
-
-// SFINAE helpers
-struct SfinaeTag {};
-template <typename T> struct RemoveSfinaeTag;
-template <typename T> struct RemoveSfinaeTag<SfinaeTag&(*)(T)> { typedef T Type; };
-
-#define RAPIDJSON_REMOVEFPTR_(type) \
-    typename ::RAPIDJSON_NAMESPACE::internal::RemoveSfinaeTag \
-        < ::RAPIDJSON_NAMESPACE::internal::SfinaeTag&(*) type>::Type
-
-#define RAPIDJSON_ENABLEIF(cond) \
-    typename ::RAPIDJSON_NAMESPACE::internal::EnableIf \
-        <RAPIDJSON_REMOVEFPTR_(cond)>::Type * = NULL
-
-#define RAPIDJSON_DISABLEIF(cond) \
-    typename ::RAPIDJSON_NAMESPACE::internal::DisableIf \
-        <RAPIDJSON_REMOVEFPTR_(cond)>::Type * = NULL
-
-#define RAPIDJSON_ENABLEIF_RETURN(cond,returntype) \
-    typename ::RAPIDJSON_NAMESPACE::internal::EnableIf \
-        <RAPIDJSON_REMOVEFPTR_(cond), \
-         RAPIDJSON_REMOVEFPTR_(returntype)>::Type
-
-#define RAPIDJSON_DISABLEIF_RETURN(cond,returntype) \
-    typename ::RAPIDJSON_NAMESPACE::internal::DisableIf \
-        <RAPIDJSON_REMOVEFPTR_(cond), \
-         RAPIDJSON_REMOVEFPTR_(returntype)>::Type
-
-} // namespace internal
-RAPIDJSON_NAMESPACE_END
-//@endcond
-
-#if defined(__GNUC__) || defined(_MSC_VER)
-RAPIDJSON_DIAG_POP
-#endif
-
-#endif // RAPIDJSON_INTERNAL_META_H_
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/internal/pow10.h b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/internal/pow10.h
deleted file mode 100644
index 02f475d..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/internal/pow10.h
+++ /dev/null
@@ -1,55 +0,0 @@
-// Tencent is pleased to support the open source community by making RapidJSON available.
-// 
-// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
-//
-// Licensed under the MIT License (the "License"); you may not use this file except
-// in compliance with the License. You may obtain a copy of the License at
-//
-// http://opensource.org/licenses/MIT
-//
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
-// specific language governing permissions and limitations under the License.
-
-#ifndef RAPIDJSON_POW10_
-#define RAPIDJSON_POW10_
-
-#include "../rapidjson.h"
-
-RAPIDJSON_NAMESPACE_BEGIN
-namespace internal {
-
-//! Computes integer powers of 10 in double (10.0^n).
-/*! This function uses lookup table for fast and accurate results.
-    \param n non-negative exponent. Must <= 308.
-    \return 10.0^n
-*/
-inline double Pow10(int n) {
-    static const double e[] = { // 1e-0...1e308: 309 * 8 bytes = 2472 bytes
-        1e+0,  
-        1e+1,  1e+2,  1e+3,  1e+4,  1e+5,  1e+6,  1e+7,  1e+8,  1e+9,  1e+10, 1e+11, 1e+12, 1e+13, 1e+14, 1e+15, 1e+16, 1e+17, 1e+18, 1e+19, 1e+20, 
-        1e+21, 1e+22, 1e+23, 1e+24, 1e+25, 1e+26, 1e+27, 1e+28, 1e+29, 1e+30, 1e+31, 1e+32, 1e+33, 1e+34, 1e+35, 1e+36, 1e+37, 1e+38, 1e+39, 1e+40,
-        1e+41, 1e+42, 1e+43, 1e+44, 1e+45, 1e+46, 1e+47, 1e+48, 1e+49, 1e+50, 1e+51, 1e+52, 1e+53, 1e+54, 1e+55, 1e+56, 1e+57, 1e+58, 1e+59, 1e+60,
-        1e+61, 1e+62, 1e+63, 1e+64, 1e+65, 1e+66, 1e+67, 1e+68, 1e+69, 1e+70, 1e+71, 1e+72, 1e+73, 1e+74, 1e+75, 1e+76, 1e+77, 1e+78, 1e+79, 1e+80,
-        1e+81, 1e+82, 1e+83, 1e+84, 1e+85, 1e+86, 1e+87, 1e+88, 1e+89, 1e+90, 1e+91, 1e+92, 1e+93, 1e+94, 1e+95, 1e+96, 1e+97, 1e+98, 1e+99, 1e+100,
-        1e+101,1e+102,1e+103,1e+104,1e+105,1e+106,1e+107,1e+108,1e+109,1e+110,1e+111,1e+112,1e+113,1e+114,1e+115,1e+116,1e+117,1e+118,1e+119,1e+120,
-        1e+121,1e+122,1e+123,1e+124,1e+125,1e+126,1e+127,1e+128,1e+129,1e+130,1e+131,1e+132,1e+133,1e+134,1e+135,1e+136,1e+137,1e+138,1e+139,1e+140,
-        1e+141,1e+142,1e+143,1e+144,1e+145,1e+146,1e+147,1e+148,1e+149,1e+150,1e+151,1e+152,1e+153,1e+154,1e+155,1e+156,1e+157,1e+158,1e+159,1e+160,
-        1e+161,1e+162,1e+163,1e+164,1e+165,1e+166,1e+167,1e+168,1e+169,1e+170,1e+171,1e+172,1e+173,1e+174,1e+175,1e+176,1e+177,1e+178,1e+179,1e+180,
-        1e+181,1e+182,1e+183,1e+184,1e+185,1e+186,1e+187,1e+188,1e+189,1e+190,1e+191,1e+192,1e+193,1e+194,1e+195,1e+196,1e+197,1e+198,1e+199,1e+200,
-        1e+201,1e+202,1e+203,1e+204,1e+205,1e+206,1e+207,1e+208,1e+209,1e+210,1e+211,1e+212,1e+213,1e+214,1e+215,1e+216,1e+217,1e+218,1e+219,1e+220,
-        1e+221,1e+222,1e+223,1e+224,1e+225,1e+226,1e+227,1e+228,1e+229,1e+230,1e+231,1e+232,1e+233,1e+234,1e+235,1e+236,1e+237,1e+238,1e+239,1e+240,
-        1e+241,1e+242,1e+243,1e+244,1e+245,1e+246,1e+247,1e+248,1e+249,1e+250,1e+251,1e+252,1e+253,1e+254,1e+255,1e+256,1e+257,1e+258,1e+259,1e+260,
-        1e+261,1e+262,1e+263,1e+264,1e+265,1e+266,1e+267,1e+268,1e+269,1e+270,1e+271,1e+272,1e+273,1e+274,1e+275,1e+276,1e+277,1e+278,1e+279,1e+280,
-        1e+281,1e+282,1e+283,1e+284,1e+285,1e+286,1e+287,1e+288,1e+289,1e+290,1e+291,1e+292,1e+293,1e+294,1e+295,1e+296,1e+297,1e+298,1e+299,1e+300,
-        1e+301,1e+302,1e+303,1e+304,1e+305,1e+306,1e+307,1e+308
-    };
-    RAPIDJSON_ASSERT(n >= 0 && n <= 308);
-    return e[n];
-}
-
-} // namespace internal
-RAPIDJSON_NAMESPACE_END
-
-#endif // RAPIDJSON_POW10_
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/internal/regex.h b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/internal/regex.h
deleted file mode 100644
index aeb0e3e..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/internal/regex.h
+++ /dev/null
@@ -1,696 +0,0 @@
-// Tencent is pleased to support the open source community by making RapidJSON available.
-// 
-// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
-//
-// Licensed under the MIT License (the "License"); you may not use this file except
-// in compliance with the License. You may obtain a copy of the License at
-//
-// http://opensource.org/licenses/MIT
-//
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
-// specific language governing permissions and limitations under the License.
-
-#ifndef RAPIDJSON_INTERNAL_REGEX_H_
-#define RAPIDJSON_INTERNAL_REGEX_H_
-
-#include "../allocators.h"
-#include "../stream.h"
-#include "stack.h"
-
-#ifdef __clang__
-RAPIDJSON_DIAG_PUSH
-RAPIDJSON_DIAG_OFF(padded)
-RAPIDJSON_DIAG_OFF(switch-enum)
-RAPIDJSON_DIAG_OFF(implicit-fallthrough)
-#endif
-
-#ifdef __GNUC__
-RAPIDJSON_DIAG_PUSH
-RAPIDJSON_DIAG_OFF(effc++)
-#endif
-
-#ifndef RAPIDJSON_REGEX_VERBOSE
-#define RAPIDJSON_REGEX_VERBOSE 0
-#endif
-
-RAPIDJSON_NAMESPACE_BEGIN
-namespace internal {
-
-///////////////////////////////////////////////////////////////////////////////
-// GenericRegex
-
-static const SizeType kRegexInvalidState = ~SizeType(0);  //!< Represents an invalid index in GenericRegex::State::out, out1
-static const SizeType kRegexInvalidRange = ~SizeType(0);
-
-//! Regular expression engine with subset of ECMAscript grammar.
-/*!
-    Supported regular expression syntax:
-    - \c ab     Concatenation
-    - \c a|b    Alternation
-    - \c a?     Zero or one
-    - \c a*     Zero or more
-    - \c a+     One or more
-    - \c a{3}   Exactly 3 times
-    - \c a{3,}  At least 3 times
-    - \c a{3,5} 3 to 5 times
-    - \c (ab)   Grouping
-    - \c ^a     At the beginning
-    - \c a$     At the end
-    - \c .      Any character
-    - \c [abc]  Character classes
-    - \c [a-c]  Character class range
-    - \c [a-z0-9_] Character class combination
-    - \c [^abc] Negated character classes
-    - \c [^a-c] Negated character class range
-    - \c [\b]   Backspace (U+0008)
-    - \c \\| \\\\ ...  Escape characters
-    - \c \\f Form feed (U+000C)
-    - \c \\n Line feed (U+000A)
-    - \c \\r Carriage return (U+000D)
-    - \c \\t Tab (U+0009)
-    - \c \\v Vertical tab (U+000B)
-
-    \note This is a Thompson NFA engine, implemented with reference to 
-        Cox, Russ. "Regular Expression Matching Can Be Simple And Fast (but is slow in Java, Perl, PHP, Python, Ruby,...).", 
-        https://swtch.com/~rsc/regexp/regexp1.html 
-*/
-template <typename Encoding, typename Allocator = CrtAllocator>
-class GenericRegex {
-public:
-    typedef typename Encoding::Ch Ch;
-
-    GenericRegex(const Ch* source, Allocator* allocator = 0) : 
-        states_(allocator, 256), ranges_(allocator, 256), root_(kRegexInvalidState), stateCount_(), rangeCount_(), 
-        stateSet_(), state0_(allocator, 0), state1_(allocator, 0), anchorBegin_(), anchorEnd_()
-    {
-        GenericStringStream<Encoding> ss(source);
-        DecodedStream<GenericStringStream<Encoding> > ds(ss);
-        Parse(ds);
-    }
-
-    ~GenericRegex() {
-        Allocator::Free(stateSet_);
-    }
-
-    bool IsValid() const {
-        return root_ != kRegexInvalidState;
-    }
-
-    template <typename InputStream>
-    bool Match(InputStream& is) const {
-        return SearchWithAnchoring(is, true, true);
-    }
-
-    bool Match(const Ch* s) const {
-        GenericStringStream<Encoding> is(s);
-        return Match(is);
-    }
-
-    template <typename InputStream>
-    bool Search(InputStream& is) const {
-        return SearchWithAnchoring(is, anchorBegin_, anchorEnd_);
-    }
-
-    bool Search(const Ch* s) const {
-        GenericStringStream<Encoding> is(s);
-        return Search(is);
-    }
-
-private:
-    enum Operator {
-        kZeroOrOne,
-        kZeroOrMore,
-        kOneOrMore,
-        kConcatenation,
-        kAlternation,
-        kLeftParenthesis
-    };
-
-    static const unsigned kAnyCharacterClass = 0xFFFFFFFF;   //!< For '.'
-    static const unsigned kRangeCharacterClass = 0xFFFFFFFE;
-    static const unsigned kRangeNegationFlag = 0x80000000;
-
-    struct Range {
-        unsigned start; // 
-        unsigned end;
-        SizeType next;
-    };
-
-    struct State {
-        SizeType out;     //!< Equals to kInvalid for matching state
-        SizeType out1;    //!< Equals to non-kInvalid for split
-        SizeType rangeStart;
-        unsigned codepoint;
-    };
-
-    struct Frag {
-        Frag(SizeType s, SizeType o, SizeType m) : start(s), out(o), minIndex(m) {}
-        SizeType start;
-        SizeType out; //!< link-list of all output states
-        SizeType minIndex;
-    };
-
-    template <typename SourceStream>
-    class DecodedStream {
-    public:
-        DecodedStream(SourceStream& ss) : ss_(ss), codepoint_() { Decode(); }
-        unsigned Peek() { return codepoint_; }
-        unsigned Take() {
-            unsigned c = codepoint_;
-            if (c) // No further decoding when '\0'
-                Decode();
-            return c;
-        }
-
-    private:
-        void Decode() {
-            if (!Encoding::Decode(ss_, &codepoint_))
-                codepoint_ = 0;
-        }
-
-        SourceStream& ss_;
-        unsigned codepoint_;
-    };
-
-    State& GetState(SizeType index) {
-        RAPIDJSON_ASSERT(index < stateCount_);
-        return states_.template Bottom<State>()[index];
-    }
-
-    const State& GetState(SizeType index) const {
-        RAPIDJSON_ASSERT(index < stateCount_);
-        return states_.template Bottom<State>()[index];
-    }
-
-    Range& GetRange(SizeType index) {
-        RAPIDJSON_ASSERT(index < rangeCount_);
-        return ranges_.template Bottom<Range>()[index];
-    }
-
-    const Range& GetRange(SizeType index) const {
-        RAPIDJSON_ASSERT(index < rangeCount_);
-        return ranges_.template Bottom<Range>()[index];
-    }
-
-    template <typename InputStream>
-    void Parse(DecodedStream<InputStream>& ds) {
-        Allocator allocator;
-        Stack<Allocator> operandStack(&allocator, 256);     // Frag
-        Stack<Allocator> operatorStack(&allocator, 256);    // Operator
-        Stack<Allocator> atomCountStack(&allocator, 256);   // unsigned (Atom per parenthesis)
-
-        *atomCountStack.template Push<unsigned>() = 0;
-
-        unsigned codepoint;
-        while (ds.Peek() != 0) {
-            switch (codepoint = ds.Take()) {
-                case '^':
-                    anchorBegin_ = true;
-                    break;
-
-                case '$':
-                    anchorEnd_ = true;
-                    break;
-
-                case '|':
-                    while (!operatorStack.Empty() && *operatorStack.template Top<Operator>() < kAlternation)
-                        if (!Eval(operandStack, *operatorStack.template Pop<Operator>(1)))
-                            return;
-                    *operatorStack.template Push<Operator>() = kAlternation;
-                    *atomCountStack.template Top<unsigned>() = 0;
-                    break;
-
-                case '(':
-                    *operatorStack.template Push<Operator>() = kLeftParenthesis;
-                    *atomCountStack.template Push<unsigned>() = 0;
-                    break;
-
-                case ')':
-                    while (!operatorStack.Empty() && *operatorStack.template Top<Operator>() != kLeftParenthesis)
-                        if (!Eval(operandStack, *operatorStack.template Pop<Operator>(1)))
-                            return;
-                    if (operatorStack.Empty())
-                        return;
-                    operatorStack.template Pop<Operator>(1);
-                    atomCountStack.template Pop<unsigned>(1);
-                    ImplicitConcatenation(atomCountStack, operatorStack);
-                    break;
-
-                case '?':
-                    if (!Eval(operandStack, kZeroOrOne))
-                        return;
-                    break;
-
-                case '*':
-                    if (!Eval(operandStack, kZeroOrMore))
-                        return;
-                    break;
-
-                case '+':
-                    if (!Eval(operandStack, kOneOrMore))
-                        return;
-                    break;
-
-                case '{':
-                    {
-                        unsigned n, m;
-                        if (!ParseUnsigned(ds, &n))
-                            return;
-
-                        if (ds.Peek() == ',') {
-                            ds.Take();
-                            if (ds.Peek() == '}')
-                                m = kInfinityQuantifier;
-                            else if (!ParseUnsigned(ds, &m) || m < n)
-                                return;
-                        }
-                        else
-                            m = n;
-
-                        if (!EvalQuantifier(operandStack, n, m) || ds.Peek() != '}')
-                            return;
-                        ds.Take();
-                    }
-                    break;
-
-                case '.':
-                    PushOperand(operandStack, kAnyCharacterClass);
-                    ImplicitConcatenation(atomCountStack, operatorStack);
-                    break;
-
-                case '[':
-                    {
-                        SizeType range;
-                        if (!ParseRange(ds, &range))
-                            return;
-                        SizeType s = NewState(kRegexInvalidState, kRegexInvalidState, kRangeCharacterClass);
-                        GetState(s).rangeStart = range;
-                        *operandStack.template Push<Frag>() = Frag(s, s, s);
-                    }
-                    ImplicitConcatenation(atomCountStack, operatorStack);
-                    break;
-
-                case '\\': // Escape character
-                    if (!CharacterEscape(ds, &codepoint))
-                        return; // Unsupported escape character
-                    // fall through to default
-
-                default: // Pattern character
-                    PushOperand(operandStack, codepoint);
-                    ImplicitConcatenation(atomCountStack, operatorStack);
-            }
-        }
-
-        while (!operatorStack.Empty())
-            if (!Eval(operandStack, *operatorStack.template Pop<Operator>(1)))
-                return;
-
-        // Link the operand to matching state.
-        if (operandStack.GetSize() == sizeof(Frag)) {
-            Frag* e = operandStack.template Pop<Frag>(1);
-            Patch(e->out, NewState(kRegexInvalidState, kRegexInvalidState, 0));
-            root_ = e->start;
-
-#if RAPIDJSON_REGEX_VERBOSE
-            printf("root: %d\n", root_);
-            for (SizeType i = 0; i < stateCount_ ; i++) {
-                State& s = GetState(i);
-                printf("[%2d] out: %2d out1: %2d c: '%c'\n", i, s.out, s.out1, (char)s.codepoint);
-            }
-            printf("\n");
-#endif
-        }
-
-        // Preallocate buffer for SearchWithAnchoring()
-        RAPIDJSON_ASSERT(stateSet_ == 0);
-        if (stateCount_ > 0) {
-            stateSet_ = static_cast<unsigned*>(states_.GetAllocator().Malloc(GetStateSetSize()));
-            state0_.template Reserve<SizeType>(stateCount_);
-            state1_.template Reserve<SizeType>(stateCount_);
-        }
-    }
-
-    SizeType NewState(SizeType out, SizeType out1, unsigned codepoint) {
-        State* s = states_.template Push<State>();
-        s->out = out;
-        s->out1 = out1;
-        s->codepoint = codepoint;
-        s->rangeStart = kRegexInvalidRange;
-        return stateCount_++;
-    }
-
-    void PushOperand(Stack<Allocator>& operandStack, unsigned codepoint) {
-        SizeType s = NewState(kRegexInvalidState, kRegexInvalidState, codepoint);
-        *operandStack.template Push<Frag>() = Frag(s, s, s);
-    }
-
-    void ImplicitConcatenation(Stack<Allocator>& atomCountStack, Stack<Allocator>& operatorStack) {
-        if (*atomCountStack.template Top<unsigned>())
-            *operatorStack.template Push<Operator>() = kConcatenation;
-        (*atomCountStack.template Top<unsigned>())++;
-    }
-
-    SizeType Append(SizeType l1, SizeType l2) {
-        SizeType old = l1;
-        while (GetState(l1).out != kRegexInvalidState)
-            l1 = GetState(l1).out;
-        GetState(l1).out = l2;
-        return old;
-    }
-
-    void Patch(SizeType l, SizeType s) {
-        for (SizeType next; l != kRegexInvalidState; l = next) {
-            next = GetState(l).out;
-            GetState(l).out = s;
-        }
-    }
-
-    bool Eval(Stack<Allocator>& operandStack, Operator op) {
-        switch (op) {
-            case kConcatenation:
-                if (operandStack.GetSize() >= sizeof(Frag) * 2) {
-                    Frag e2 = *operandStack.template Pop<Frag>(1);
-                    Frag e1 = *operandStack.template Pop<Frag>(1);
-                    Patch(e1.out, e2.start);
-                    *operandStack.template Push<Frag>() = Frag(e1.start, e2.out, Min(e1.minIndex, e2.minIndex));
-                    return true;
-                }
-                return false;
-
-            case kAlternation:
-                if (operandStack.GetSize() >= sizeof(Frag) * 2) {
-                    Frag e2 = *operandStack.template Pop<Frag>(1);
-                    Frag e1 = *operandStack.template Pop<Frag>(1);
-                    SizeType s = NewState(e1.start, e2.start, 0);
-                    *operandStack.template Push<Frag>() = Frag(s, Append(e1.out, e2.out), Min(e1.minIndex, e2.minIndex));
-                    return true;
-                }
-                return false;
-
-            case kZeroOrOne:
-                if (operandStack.GetSize() >= sizeof(Frag)) {
-                    Frag e = *operandStack.template Pop<Frag>(1);
-                    SizeType s = NewState(kRegexInvalidState, e.start, 0);
-                    *operandStack.template Push<Frag>() = Frag(s, Append(e.out, s), e.minIndex);
-                    return true;
-                }
-                return false;
-
-            case kZeroOrMore:
-                if (operandStack.GetSize() >= sizeof(Frag)) {
-                    Frag e = *operandStack.template Pop<Frag>(1);
-                    SizeType s = NewState(kRegexInvalidState, e.start, 0);
-                    Patch(e.out, s);
-                    *operandStack.template Push<Frag>() = Frag(s, s, e.minIndex);
-                    return true;
-                }
-                return false;
-
-            case kOneOrMore:
-                if (operandStack.GetSize() >= sizeof(Frag)) {
-                    Frag e = *operandStack.template Pop<Frag>(1);
-                    SizeType s = NewState(kRegexInvalidState, e.start, 0);
-                    Patch(e.out, s);
-                    *operandStack.template Push<Frag>() = Frag(e.start, s, e.minIndex);
-                    return true;
-                }
-                return false;
-
-            default:
-                return false;
-        }
-    }
-
-    bool EvalQuantifier(Stack<Allocator>& operandStack, unsigned n, unsigned m) {
-        RAPIDJSON_ASSERT(n <= m);
-        if (operandStack.GetSize() < sizeof(Frag))
-            return false;
-
-        if (n == 0) {
-            if (m == 0)                             // a{0} not support
-                return false;
-            else if (m == kInfinityQuantifier)
-                Eval(operandStack, kZeroOrMore);    // a{0,} -> a*
-            else {
-                Eval(operandStack, kZeroOrOne);         // a{0,5} -> a?
-                for (unsigned i = 0; i < m - 1; i++)
-                    CloneTopOperand(operandStack);      // a{0,5} -> a? a? a? a? a?
-                for (unsigned i = 0; i < m - 1; i++)
-                    Eval(operandStack, kConcatenation); // a{0,5} -> a?a?a?a?a?
-            }
-            return true;
-        }
-
-        for (unsigned i = 0; i < n - 1; i++)        // a{3} -> a a a
-            CloneTopOperand(operandStack);
-
-        if (m == kInfinityQuantifier)
-            Eval(operandStack, kOneOrMore);         // a{3,} -> a a a+
-        else if (m > n) {
-            CloneTopOperand(operandStack);          // a{3,5} -> a a a a
-            Eval(operandStack, kZeroOrOne);         // a{3,5} -> a a a a?
-            for (unsigned i = n; i < m - 1; i++)
-                CloneTopOperand(operandStack);      // a{3,5} -> a a a a? a?
-            for (unsigned i = n; i < m; i++)
-                Eval(operandStack, kConcatenation); // a{3,5} -> a a aa?a?
-        }
-
-        for (unsigned i = 0; i < n - 1; i++)
-            Eval(operandStack, kConcatenation);     // a{3} -> aaa, a{3,} -> aaa+, a{3.5} -> aaaa?a?
-
-        return true;
-    }
-
-    static SizeType Min(SizeType a, SizeType b) { return a < b ? a : b; }
-
-    void CloneTopOperand(Stack<Allocator>& operandStack) {
-        const Frag *src = operandStack.template Top<Frag>();
-        SizeType count = stateCount_ - src->minIndex; // Assumes top operand contains states in [src->minIndex, stateCount_)
-        State* s = states_.template Push<State>(count);
-        memcpy(s, &GetState(src->minIndex), count * sizeof(State));
-        for (SizeType j = 0; j < count; j++) {
-            if (s[j].out != kRegexInvalidState)
-                s[j].out += count;
-            if (s[j].out1 != kRegexInvalidState)
-                s[j].out1 += count;
-        }
-        *operandStack.template Push<Frag>() = Frag(src->start + count, src->out + count, src->minIndex + count);
-        stateCount_ += count;
-    }
-
-    template <typename InputStream>
-    bool ParseUnsigned(DecodedStream<InputStream>& ds, unsigned* u) {
-        unsigned r = 0;
-        if (ds.Peek() < '0' || ds.Peek() > '9')
-            return false;
-        while (ds.Peek() >= '0' && ds.Peek() <= '9') {
-            if (r >= 429496729 && ds.Peek() > '5') // 2^32 - 1 = 4294967295
-                return false; // overflow
-            r = r * 10 + (ds.Take() - '0');
-        }
-        *u = r;
-        return true;
-    }
-
-    template <typename InputStream>
-    bool ParseRange(DecodedStream<InputStream>& ds, SizeType* range) {
-        bool isBegin = true;
-        bool negate = false;
-        int step = 0;
-        SizeType start = kRegexInvalidRange;
-        SizeType current = kRegexInvalidRange;
-        unsigned codepoint;
-        while ((codepoint = ds.Take()) != 0) {
-            if (isBegin) {
-                isBegin = false;
-                if (codepoint == '^') {
-                    negate = true;
-                    continue;
-                }
-            }
-
-            switch (codepoint) {
-            case ']':
-                if (start == kRegexInvalidRange)
-                    return false;   // Error: nothing inside []
-                if (step == 2) { // Add trailing '-'
-                    SizeType r = NewRange('-');
-                    RAPIDJSON_ASSERT(current != kRegexInvalidRange);
-                    GetRange(current).next = r;
-                }
-                if (negate)
-                    GetRange(start).start |= kRangeNegationFlag;
-                *range = start;
-                return true;
-
-            case '\\':
-                if (ds.Peek() == 'b') {
-                    ds.Take();
-                    codepoint = 0x0008; // Escape backspace character
-                }
-                else if (!CharacterEscape(ds, &codepoint))
-                    return false;
-                // fall through to default
-
-            default:
-                switch (step) {
-                case 1:
-                    if (codepoint == '-') {
-                        step++;
-                        break;
-                    }
-                    // fall through to step 0 for other characters
-
-                case 0:
-                    {
-                        SizeType r = NewRange(codepoint);
-                        if (current != kRegexInvalidRange)
-                            GetRange(current).next = r;
-                        if (start == kRegexInvalidRange)
-                            start = r;
-                        current = r;
-                    }
-                    step = 1;
-                    break;
-
-                default:
-                    RAPIDJSON_ASSERT(step == 2);
-                    GetRange(current).end = codepoint;
-                    step = 0;
-                }
-            }
-        }
-        return false;
-    }
-    
-    SizeType NewRange(unsigned codepoint) {
-        Range* r = ranges_.template Push<Range>();
-        r->start = r->end = codepoint;
-        r->next = kRegexInvalidRange;
-        return rangeCount_++;
-    }
-
-    template <typename InputStream>
-    bool CharacterEscape(DecodedStream<InputStream>& ds, unsigned* escapedCodepoint) {
-        unsigned codepoint;
-        switch (codepoint = ds.Take()) {
-            case '^':
-            case '$':
-            case '|':
-            case '(':
-            case ')':
-            case '?':
-            case '*':
-            case '+':
-            case '.':
-            case '[':
-            case ']':
-            case '{':
-            case '}':
-            case '\\':
-                *escapedCodepoint = codepoint; return true;
-            case 'f': *escapedCodepoint = 0x000C; return true;
-            case 'n': *escapedCodepoint = 0x000A; return true;
-            case 'r': *escapedCodepoint = 0x000D; return true;
-            case 't': *escapedCodepoint = 0x0009; return true;
-            case 'v': *escapedCodepoint = 0x000B; return true;
-            default:
-                return false; // Unsupported escape character
-        }
-    }
-
-    template <typename InputStream>
-    bool SearchWithAnchoring(InputStream& is, bool anchorBegin, bool anchorEnd) const {
-        RAPIDJSON_ASSERT(IsValid());
-        DecodedStream<InputStream> ds(is);
-
-        state0_.Clear();
-        Stack<Allocator> *current = &state0_, *next = &state1_;
-        const size_t stateSetSize = GetStateSetSize();
-        std::memset(stateSet_, 0, stateSetSize);
-
-        bool matched = AddState(*current, root_);
-        unsigned codepoint;
-        while (!current->Empty() && (codepoint = ds.Take()) != 0) {
-            std::memset(stateSet_, 0, stateSetSize);
-            next->Clear();
-            matched = false;
-            for (const SizeType* s = current->template Bottom<SizeType>(); s != current->template End<SizeType>(); ++s) {
-                const State& sr = GetState(*s);
-                if (sr.codepoint == codepoint ||
-                    sr.codepoint == kAnyCharacterClass || 
-                    (sr.codepoint == kRangeCharacterClass && MatchRange(sr.rangeStart, codepoint)))
-                {
-                    matched = AddState(*next, sr.out) || matched;
-                    if (!anchorEnd && matched)
-                        return true;
-                }
-                if (!anchorBegin)
-                    AddState(*next, root_);
-            }
-            internal::Swap(current, next);
-        }
-
-        return matched;
-    }
-
-    size_t GetStateSetSize() const {
-        return (stateCount_ + 31) / 32 * 4;
-    }
-
-    // Return whether the added states is a match state
-    bool AddState(Stack<Allocator>& l, SizeType index) const {
-        if (index == kRegexInvalidState)
-            return true;
-
-        const State& s = GetState(index);
-        if (s.out1 != kRegexInvalidState) { // Split
-            bool matched = AddState(l, s.out);
-            return AddState(l, s.out1) || matched;
-        }
-        else if (!(stateSet_[index >> 5] & (1 << (index & 31)))) {
-            stateSet_[index >> 5] |= (1 << (index & 31));
-            *l.template PushUnsafe<SizeType>() = index;
-        }
-        return s.out == kRegexInvalidState; // by using PushUnsafe() above, we can ensure s is not validated due to reallocation.
-    }
-
-    bool MatchRange(SizeType rangeIndex, unsigned codepoint) const {
-        bool yes = (GetRange(rangeIndex).start & kRangeNegationFlag) == 0;
-        while (rangeIndex != kRegexInvalidRange) {
-            const Range& r = GetRange(rangeIndex);
-            if (codepoint >= (r.start & ~kRangeNegationFlag) && codepoint <= r.end)
-                return yes;
-            rangeIndex = r.next;
-        }
-        return !yes;
-    }
-
-    Stack<Allocator> states_;
-    Stack<Allocator> ranges_;
-    SizeType root_;
-    SizeType stateCount_;
-    SizeType rangeCount_;
-
-    static const unsigned kInfinityQuantifier = ~0u;
-
-    // For SearchWithAnchoring()
-    uint32_t* stateSet_;        // allocated by states_.GetAllocator()
-    mutable Stack<Allocator> state0_;
-    mutable Stack<Allocator> state1_;
-    bool anchorBegin_;
-    bool anchorEnd_;
-};
-
-typedef GenericRegex<UTF8<> > Regex;
-
-} // namespace internal
-RAPIDJSON_NAMESPACE_END
-
-#ifdef __clang__
-RAPIDJSON_DIAG_POP
-#endif
-
-#endif // RAPIDJSON_INTERNAL_REGEX_H_
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/internal/stack.h b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/internal/stack.h
deleted file mode 100644
index 022c9aa..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/internal/stack.h
+++ /dev/null
@@ -1,230 +0,0 @@
-// Tencent is pleased to support the open source community by making RapidJSON available.
-// 
-// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
-//
-// Licensed under the MIT License (the "License"); you may not use this file except
-// in compliance with the License. You may obtain a copy of the License at
-//
-// http://opensource.org/licenses/MIT
-//
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
-// specific language governing permissions and limitations under the License.
-
-#ifndef RAPIDJSON_INTERNAL_STACK_H_
-#define RAPIDJSON_INTERNAL_STACK_H_
-
-#include "../allocators.h"
-#include "swap.h"
-
-#if defined(__clang__)
-RAPIDJSON_DIAG_PUSH
-RAPIDJSON_DIAG_OFF(c++98-compat)
-#endif
-
-RAPIDJSON_NAMESPACE_BEGIN
-namespace internal {
-
-///////////////////////////////////////////////////////////////////////////////
-// Stack
-
-//! A type-unsafe stack for storing different types of data.
-/*! \tparam Allocator Allocator for allocating stack memory.
-*/
-template <typename Allocator>
-class Stack {
-public:
-    // Optimization note: Do not allocate memory for stack_ in constructor.
-    // Do it lazily when first Push() -> Expand() -> Resize().
-    Stack(Allocator* allocator, size_t stackCapacity) : allocator_(allocator), ownAllocator_(0), stack_(0), stackTop_(0), stackEnd_(0), initialCapacity_(stackCapacity) {
-    }
-
-#if RAPIDJSON_HAS_CXX11_RVALUE_REFS
-    Stack(Stack&& rhs)
-        : allocator_(rhs.allocator_),
-          ownAllocator_(rhs.ownAllocator_),
-          stack_(rhs.stack_),
-          stackTop_(rhs.stackTop_),
-          stackEnd_(rhs.stackEnd_),
-          initialCapacity_(rhs.initialCapacity_)
-    {
-        rhs.allocator_ = 0;
-        rhs.ownAllocator_ = 0;
-        rhs.stack_ = 0;
-        rhs.stackTop_ = 0;
-        rhs.stackEnd_ = 0;
-        rhs.initialCapacity_ = 0;
-    }
-#endif
-
-    ~Stack() {
-        Destroy();
-    }
-
-#if RAPIDJSON_HAS_CXX11_RVALUE_REFS
-    Stack& operator=(Stack&& rhs) {
-        if (&rhs != this)
-        {
-            Destroy();
-
-            allocator_ = rhs.allocator_;
-            ownAllocator_ = rhs.ownAllocator_;
-            stack_ = rhs.stack_;
-            stackTop_ = rhs.stackTop_;
-            stackEnd_ = rhs.stackEnd_;
-            initialCapacity_ = rhs.initialCapacity_;
-
-            rhs.allocator_ = 0;
-            rhs.ownAllocator_ = 0;
-            rhs.stack_ = 0;
-            rhs.stackTop_ = 0;
-            rhs.stackEnd_ = 0;
-            rhs.initialCapacity_ = 0;
-        }
-        return *this;
-    }
-#endif
-
-    void Swap(Stack& rhs) RAPIDJSON_NOEXCEPT {
-        internal::Swap(allocator_, rhs.allocator_);
-        internal::Swap(ownAllocator_, rhs.ownAllocator_);
-        internal::Swap(stack_, rhs.stack_);
-        internal::Swap(stackTop_, rhs.stackTop_);
-        internal::Swap(stackEnd_, rhs.stackEnd_);
-        internal::Swap(initialCapacity_, rhs.initialCapacity_);
-    }
-
-    void Clear() { stackTop_ = stack_; }
-
-    void ShrinkToFit() { 
-        if (Empty()) {
-            // If the stack is empty, completely deallocate the memory.
-            Allocator::Free(stack_);
-            stack_ = 0;
-            stackTop_ = 0;
-            stackEnd_ = 0;
-        }
-        else
-            Resize(GetSize());
-    }
-
-    // Optimization note: try to minimize the size of this function for force inline.
-    // Expansion is run very infrequently, so it is moved to another (probably non-inline) function.
-    template<typename T>
-    RAPIDJSON_FORCEINLINE void Reserve(size_t count = 1) {
-         // Expand the stack if needed
-        if (RAPIDJSON_UNLIKELY(stackTop_ + sizeof(T) * count > stackEnd_))
-            Expand<T>(count);
-    }
-
-    template<typename T>
-    RAPIDJSON_FORCEINLINE T* Push(size_t count = 1) {
-        Reserve<T>(count);
-        return PushUnsafe<T>(count);
-    }
-
-    template<typename T>
-    RAPIDJSON_FORCEINLINE T* PushUnsafe(size_t count = 1) {
-        RAPIDJSON_ASSERT(stackTop_ + sizeof(T) * count <= stackEnd_);
-        T* ret = reinterpret_cast<T*>(stackTop_);
-        stackTop_ += sizeof(T) * count;
-        return ret;
-    }
-
-    template<typename T>
-    T* Pop(size_t count) {
-        RAPIDJSON_ASSERT(GetSize() >= count * sizeof(T));
-        stackTop_ -= count * sizeof(T);
-        return reinterpret_cast<T*>(stackTop_);
-    }
-
-    template<typename T>
-    T* Top() { 
-        RAPIDJSON_ASSERT(GetSize() >= sizeof(T));
-        return reinterpret_cast<T*>(stackTop_ - sizeof(T));
-    }
-
-    template<typename T>
-    const T* Top() const {
-        RAPIDJSON_ASSERT(GetSize() >= sizeof(T));
-        return reinterpret_cast<T*>(stackTop_ - sizeof(T));
-    }
-
-    template<typename T>
-    T* End() { return reinterpret_cast<T*>(stackTop_); }
-
-    template<typename T>
-    const T* End() const { return reinterpret_cast<T*>(stackTop_); }
-
-    template<typename T>
-    T* Bottom() { return reinterpret_cast<T*>(stack_); }
-
-    template<typename T>
-    const T* Bottom() const { return reinterpret_cast<T*>(stack_); }
-
-    bool HasAllocator() const {
-        return allocator_ != 0;
-    }
-
-    Allocator& GetAllocator() {
-        RAPIDJSON_ASSERT(allocator_);
-        return *allocator_;
-    }
-
-    bool Empty() const { return stackTop_ == stack_; }
-    size_t GetSize() const { return static_cast<size_t>(stackTop_ - stack_); }
-    size_t GetCapacity() const { return static_cast<size_t>(stackEnd_ - stack_); }
-
-private:
-    template<typename T>
-    void Expand(size_t count) {
-        // Only expand the capacity if the current stack exists. Otherwise just create a stack with initial capacity.
-        size_t newCapacity;
-        if (stack_ == 0) {
-            if (!allocator_)
-                ownAllocator_ = allocator_ = RAPIDJSON_NEW(Allocator());
-            newCapacity = initialCapacity_;
-        } else {
-            newCapacity = GetCapacity();
-            newCapacity += (newCapacity + 1) / 2;
-        }
-        size_t newSize = GetSize() + sizeof(T) * count;
-        if (newCapacity < newSize)
-            newCapacity = newSize;
-
-        Resize(newCapacity);
-    }
-
-    void Resize(size_t newCapacity) {
-        const size_t size = GetSize();  // Backup the current size
-        stack_ = static_cast<char*>(allocator_->Realloc(stack_, GetCapacity(), newCapacity));
-        stackTop_ = stack_ + size;
-        stackEnd_ = stack_ + newCapacity;
-    }
-
-    void Destroy() {
-        Allocator::Free(stack_);
-        RAPIDJSON_DELETE(ownAllocator_); // Only delete if it is owned by the stack
-    }
-
-    // Prohibit copy constructor & assignment operator.
-    Stack(const Stack&);
-    Stack& operator=(const Stack&);
-
-    Allocator* allocator_;
-    Allocator* ownAllocator_;
-    char *stack_;
-    char *stackTop_;
-    char *stackEnd_;
-    size_t initialCapacity_;
-};
-
-} // namespace internal
-RAPIDJSON_NAMESPACE_END
-
-#if defined(__clang__)
-RAPIDJSON_DIAG_POP
-#endif
-
-#endif // RAPIDJSON_STACK_H_
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/internal/strfunc.h b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/internal/strfunc.h
deleted file mode 100644
index 2edfae5..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/internal/strfunc.h
+++ /dev/null
@@ -1,55 +0,0 @@
-// Tencent is pleased to support the open source community by making RapidJSON available.
-// 
-// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
-//
-// Licensed under the MIT License (the "License"); you may not use this file except
-// in compliance with the License. You may obtain a copy of the License at
-//
-// http://opensource.org/licenses/MIT
-//
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
-// specific language governing permissions and limitations under the License.
-
-#ifndef RAPIDJSON_INTERNAL_STRFUNC_H_
-#define RAPIDJSON_INTERNAL_STRFUNC_H_
-
-#include "../stream.h"
-
-RAPIDJSON_NAMESPACE_BEGIN
-namespace internal {
-
-//! Custom strlen() which works on different character types.
-/*! \tparam Ch Character type (e.g. char, wchar_t, short)
-    \param s Null-terminated input string.
-    \return Number of characters in the string. 
-    \note This has the same semantics as strlen(), the return value is not number of Unicode codepoints.
-*/
-template <typename Ch>
-inline SizeType StrLen(const Ch* s) {
-    const Ch* p = s;
-    while (*p) ++p;
-    return SizeType(p - s);
-}
-
-//! Returns number of code points in a encoded string.
-template<typename Encoding>
-bool CountStringCodePoint(const typename Encoding::Ch* s, SizeType length, SizeType* outCount) {
-    GenericStringStream<Encoding> is(s);
-    const typename Encoding::Ch* end = s + length;
-    SizeType count = 0;
-    while (is.src_ < end) {
-        unsigned codepoint;
-        if (!Encoding::Decode(is, &codepoint))
-            return false;
-        count++;
-    }
-    *outCount = count;
-    return true;
-}
-
-} // namespace internal
-RAPIDJSON_NAMESPACE_END
-
-#endif // RAPIDJSON_INTERNAL_STRFUNC_H_
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/internal/strtod.h b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/internal/strtod.h
deleted file mode 100644
index fd4b01e..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/internal/strtod.h
+++ /dev/null
@@ -1,269 +0,0 @@
-// Tencent is pleased to support the open source community by making RapidJSON available.
-// 
-// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
-//
-// Licensed under the MIT License (the "License"); you may not use this file except
-// in compliance with the License. You may obtain a copy of the License at
-//
-// http://opensource.org/licenses/MIT
-//
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
-// specific language governing permissions and limitations under the License.
-
-#ifndef RAPIDJSON_STRTOD_
-#define RAPIDJSON_STRTOD_
-
-#include "ieee754.h"
-#include "biginteger.h"
-#include "diyfp.h"
-#include "pow10.h"
-
-RAPIDJSON_NAMESPACE_BEGIN
-namespace internal {
-
-inline double FastPath(double significand, int exp) {
-    if (exp < -308)
-        return 0.0;
-    else if (exp >= 0)
-        return significand * internal::Pow10(exp);
-    else
-        return significand / internal::Pow10(-exp);
-}
-
-inline double StrtodNormalPrecision(double d, int p) {
-    if (p < -308) {
-        // Prevent expSum < -308, making Pow10(p) = 0
-        d = FastPath(d, -308);
-        d = FastPath(d, p + 308);
-    }
-    else
-        d = FastPath(d, p);
-    return d;
-}
-
-template <typename T>
-inline T Min3(T a, T b, T c) {
-    T m = a;
-    if (m > b) m = b;
-    if (m > c) m = c;
-    return m;
-}
-
-inline int CheckWithinHalfULP(double b, const BigInteger& d, int dExp) {
-    const Double db(b);
-    const uint64_t bInt = db.IntegerSignificand();
-    const int bExp = db.IntegerExponent();
-    const int hExp = bExp - 1;
-
-    int dS_Exp2 = 0, dS_Exp5 = 0, bS_Exp2 = 0, bS_Exp5 = 0, hS_Exp2 = 0, hS_Exp5 = 0;
-
-    // Adjust for decimal exponent
-    if (dExp >= 0) {
-        dS_Exp2 += dExp;
-        dS_Exp5 += dExp;
-    }
-    else {
-        bS_Exp2 -= dExp;
-        bS_Exp5 -= dExp;
-        hS_Exp2 -= dExp;
-        hS_Exp5 -= dExp;
-    }
-
-    // Adjust for binary exponent
-    if (bExp >= 0)
-        bS_Exp2 += bExp;
-    else {
-        dS_Exp2 -= bExp;
-        hS_Exp2 -= bExp;
-    }
-
-    // Adjust for half ulp exponent
-    if (hExp >= 0)
-        hS_Exp2 += hExp;
-    else {
-        dS_Exp2 -= hExp;
-        bS_Exp2 -= hExp;
-    }
-
-    // Remove common power of two factor from all three scaled values
-    int common_Exp2 = Min3(dS_Exp2, bS_Exp2, hS_Exp2);
-    dS_Exp2 -= common_Exp2;
-    bS_Exp2 -= common_Exp2;
-    hS_Exp2 -= common_Exp2;
-
-    BigInteger dS = d;
-    dS.MultiplyPow5(static_cast<unsigned>(dS_Exp5)) <<= static_cast<unsigned>(dS_Exp2);
-
-    BigInteger bS(bInt);
-    bS.MultiplyPow5(static_cast<unsigned>(bS_Exp5)) <<= static_cast<unsigned>(bS_Exp2);
-
-    BigInteger hS(1);
-    hS.MultiplyPow5(static_cast<unsigned>(hS_Exp5)) <<= static_cast<unsigned>(hS_Exp2);
-
-    BigInteger delta(0);
-    dS.Difference(bS, &delta);
-
-    return delta.Compare(hS);
-}
-
-inline bool StrtodFast(double d, int p, double* result) {
-    // Use fast path for string-to-double conversion if possible
-    // see http://www.exploringbinary.com/fast-path-decimal-to-floating-point-conversion/
-    if (p > 22  && p < 22 + 16) {
-        // Fast Path Cases In Disguise
-        d *= internal::Pow10(p - 22);
-        p = 22;
-    }
-
-    if (p >= -22 && p <= 22 && d <= 9007199254740991.0) { // 2^53 - 1
-        *result = FastPath(d, p);
-        return true;
-    }
-    else
-        return false;
-}
-
-// Compute an approximation and see if it is within 1/2 ULP
-inline bool StrtodDiyFp(const char* decimals, size_t length, size_t decimalPosition, int exp, double* result) {
-    uint64_t significand = 0;
-    size_t i = 0;   // 2^64 - 1 = 18446744073709551615, 1844674407370955161 = 0x1999999999999999    
-    for (; i < length; i++) {
-        if (significand  >  RAPIDJSON_UINT64_C2(0x19999999, 0x99999999) ||
-            (significand == RAPIDJSON_UINT64_C2(0x19999999, 0x99999999) && decimals[i] > '5'))
-            break;
-        significand = significand * 10u + static_cast<unsigned>(decimals[i] - '0');
-    }
-    
-    if (i < length && decimals[i] >= '5') // Rounding
-        significand++;
-
-    size_t remaining = length - i;
-    const unsigned kUlpShift = 3;
-    const unsigned kUlp = 1 << kUlpShift;
-    int error = (remaining == 0) ? 0 : kUlp / 2;
-
-    DiyFp v(significand, 0);
-    v = v.Normalize();
-    error <<= -v.e;
-
-    const int dExp = static_cast<int>(decimalPosition) - static_cast<int>(i) + exp;
-
-    int actualExp;
-    DiyFp cachedPower = GetCachedPower10(dExp, &actualExp);
-    if (actualExp != dExp) {
-        static const DiyFp kPow10[] = {
-            DiyFp(RAPIDJSON_UINT64_C2(0xa0000000, 00000000), -60),  // 10^1
-            DiyFp(RAPIDJSON_UINT64_C2(0xc8000000, 00000000), -57),  // 10^2
-            DiyFp(RAPIDJSON_UINT64_C2(0xfa000000, 00000000), -54),  // 10^3
-            DiyFp(RAPIDJSON_UINT64_C2(0x9c400000, 00000000), -50),  // 10^4
-            DiyFp(RAPIDJSON_UINT64_C2(0xc3500000, 00000000), -47),  // 10^5
-            DiyFp(RAPIDJSON_UINT64_C2(0xf4240000, 00000000), -44),  // 10^6
-            DiyFp(RAPIDJSON_UINT64_C2(0x98968000, 00000000), -40)   // 10^7
-        };
-        int  adjustment = dExp - actualExp - 1;
-        RAPIDJSON_ASSERT(adjustment >= 0 && adjustment < 7);
-        v = v * kPow10[adjustment];
-        if (length + static_cast<unsigned>(adjustment)> 19u) // has more digits than decimal digits in 64-bit
-            error += kUlp / 2;
-    }
-
-    v = v * cachedPower;
-
-    error += kUlp + (error == 0 ? 0 : 1);
-
-    const int oldExp = v.e;
-    v = v.Normalize();
-    error <<= oldExp - v.e;
-
-    const unsigned effectiveSignificandSize = Double::EffectiveSignificandSize(64 + v.e);
-    unsigned precisionSize = 64 - effectiveSignificandSize;
-    if (precisionSize + kUlpShift >= 64) {
-        unsigned scaleExp = (precisionSize + kUlpShift) - 63;
-        v.f >>= scaleExp;
-        v.e += scaleExp; 
-        error = (error >> scaleExp) + 1 + static_cast<int>(kUlp);
-        precisionSize -= scaleExp;
-    }
-
-    DiyFp rounded(v.f >> precisionSize, v.e + static_cast<int>(precisionSize));
-    const uint64_t precisionBits = (v.f & ((uint64_t(1) << precisionSize) - 1)) * kUlp;
-    const uint64_t halfWay = (uint64_t(1) << (precisionSize - 1)) * kUlp;
-    if (precisionBits >= halfWay + static_cast<unsigned>(error)) {
-        rounded.f++;
-        if (rounded.f & (DiyFp::kDpHiddenBit << 1)) { // rounding overflows mantissa (issue #340)
-            rounded.f >>= 1;
-            rounded.e++;
-        }
-    }
-
-    *result = rounded.ToDouble();
-
-    return halfWay - static_cast<unsigned>(error) >= precisionBits || precisionBits >= halfWay + static_cast<unsigned>(error);
-}
-
-inline double StrtodBigInteger(double approx, const char* decimals, size_t length, size_t decimalPosition, int exp) {
-    const BigInteger dInt(decimals, length);
-    const int dExp = static_cast<int>(decimalPosition) - static_cast<int>(length) + exp;
-    Double a(approx);
-    int cmp = CheckWithinHalfULP(a.Value(), dInt, dExp);
-    if (cmp < 0)
-        return a.Value();  // within half ULP
-    else if (cmp == 0) {
-        // Round towards even
-        if (a.Significand() & 1)
-            return a.NextPositiveDouble();
-        else
-            return a.Value();
-    }
-    else // adjustment
-        return a.NextPositiveDouble();
-}
-
-inline double StrtodFullPrecision(double d, int p, const char* decimals, size_t length, size_t decimalPosition, int exp) {
-    RAPIDJSON_ASSERT(d >= 0.0);
-    RAPIDJSON_ASSERT(length >= 1);
-
-    double result;
-    if (StrtodFast(d, p, &result))
-        return result;
-
-    // Trim leading zeros
-    while (*decimals == '0' && length > 1) {
-        length--;
-        decimals++;
-        decimalPosition--;
-    }
-
-    // Trim trailing zeros
-    while (decimals[length - 1] == '0' && length > 1) {
-        length--;
-        decimalPosition--;
-        exp++;
-    }
-
-    // Trim right-most digits
-    const int kMaxDecimalDigit = 780;
-    if (static_cast<int>(length) > kMaxDecimalDigit) {
-        int delta = (static_cast<int>(length) - kMaxDecimalDigit);
-        exp += delta;
-        decimalPosition -= static_cast<unsigned>(delta);
-        length = kMaxDecimalDigit;
-    }
-
-    // If too small, underflow to zero
-    if (int(length) + exp < -324)
-        return 0.0;
-
-    if (StrtodDiyFp(decimals, length, decimalPosition, exp, &result))
-        return result;
-
-    // Use approximation from StrtodDiyFp and make adjustment with BigInteger comparison
-    return StrtodBigInteger(result, decimals, length, decimalPosition, exp);
-}
-
-} // namespace internal
-RAPIDJSON_NAMESPACE_END
-
-#endif // RAPIDJSON_STRTOD_
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/internal/swap.h b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/internal/swap.h
deleted file mode 100644
index 666e49f..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/internal/swap.h
+++ /dev/null
@@ -1,46 +0,0 @@
-// Tencent is pleased to support the open source community by making RapidJSON available.
-//
-// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
-//
-// Licensed under the MIT License (the "License"); you may not use this file except
-// in compliance with the License. You may obtain a copy of the License at
-//
-// http://opensource.org/licenses/MIT
-//
-// Unless required by applicable law or agreed to in writing, software distributed
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the
-// specific language governing permissions and limitations under the License.
-
-#ifndef RAPIDJSON_INTERNAL_SWAP_H_
-#define RAPIDJSON_INTERNAL_SWAP_H_
-
-#include "../rapidjson.h"
-
-#if defined(__clang__)
-RAPIDJSON_DIAG_PUSH
-RAPIDJSON_DIAG_OFF(c++98-compat)
-#endif
-
-RAPIDJSON_NAMESPACE_BEGIN
-namespace internal {
-
-//! Custom swap() to avoid dependency on C++ <algorithm> header
-/*! \tparam T Type of the arguments to swap, should be instantiated with primitive C++ types only.
-    \note This has the same semantics as std::swap().
-*/
-template <typename T>
-inline void Swap(T& a, T& b) RAPIDJSON_NOEXCEPT {
-    T tmp = a;
-        a = b;
-        b = tmp;
-}
-
-} // namespace internal
-RAPIDJSON_NAMESPACE_END
-
-#if defined(__clang__)
-RAPIDJSON_DIAG_POP
-#endif
-
-#endif // RAPIDJSON_INTERNAL_SWAP_H_
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/istreamwrapper.h b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/istreamwrapper.h
deleted file mode 100644
index c73586e..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/istreamwrapper.h
+++ /dev/null
@@ -1,110 +0,0 @@
-// Tencent is pleased to support the open source community by making RapidJSON available.
-// 
-// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
-//
-// Licensed under the MIT License (the "License"); you may not use this file except
-// in compliance with the License. You may obtain a copy of the License at
-//
-// http://opensource.org/licenses/MIT
-//
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
-// specific language governing permissions and limitations under the License.
-
-#include "stream.h"
-#include <iosfwd>
-
-#ifdef __clang__
-RAPIDJSON_DIAG_PUSH
-RAPIDJSON_DIAG_OFF(padded)
-#endif
-
-#ifdef _MSC_VER
-RAPIDJSON_DIAG_PUSH
-RAPIDJSON_DIAG_OFF(4351) // new behavior: elements of array 'array' will be default initialized
-#endif
-
-RAPIDJSON_NAMESPACE_BEGIN
-
-//! Wrapper of \c std::basic_istream into RapidJSON's Stream concept.
-/*!
-    The classes can be wrapped including but not limited to:
-
-    - \c std::istringstream
-    - \c std::stringstream
-    - \c std::wistringstream
-    - \c std::wstringstream
-    - \c std::ifstream
-    - \c std::fstream
-    - \c std::wifstream
-    - \c std::wfstream
-
-    \tparam StreamType Class derived from \c std::basic_istream.
-*/
-   
-template <typename StreamType>
-class BasicIStreamWrapper {
-public:
-    typedef typename StreamType::char_type Ch;
-    BasicIStreamWrapper(StreamType& stream) : stream_(stream), count_(), peekBuffer_() {}
-
-    Ch Peek() const { 
-        typename StreamType::int_type c = stream_.peek();
-        return RAPIDJSON_LIKELY(c != StreamType::traits_type::eof()) ? static_cast<Ch>(c) : '\0';
-    }
-
-    Ch Take() { 
-        typename StreamType::int_type c = stream_.get();
-        if (RAPIDJSON_LIKELY(c != StreamType::traits_type::eof())) {
-            count_++;
-            return static_cast<Ch>(c);
-        }
-        else
-            return '\0';
-    }
-
-    // tellg() may return -1 when failed. So we count by ourself.
-    size_t Tell() const { return count_; }
-
-    Ch* PutBegin() { RAPIDJSON_ASSERT(false); return 0; }
-    void Put(Ch) { RAPIDJSON_ASSERT(false); }
-    void Flush() { RAPIDJSON_ASSERT(false); }
-    size_t PutEnd(Ch*) { RAPIDJSON_ASSERT(false); return 0; }
-
-    // For encoding detection only.
-    const Ch* Peek4() const {
-        RAPIDJSON_ASSERT(sizeof(Ch) == 1); // Only usable for byte stream.
-        int i;
-        bool hasError = false;
-        for (i = 0; i < 4; ++i) {
-            typename StreamType::int_type c = stream_.get();
-            if (c == StreamType::traits_type::eof()) {
-                hasError = true;
-                stream_.clear();
-                break;
-            }
-            peekBuffer_[i] = static_cast<Ch>(c);
-        }
-        for (--i; i >= 0; --i)
-            stream_.putback(peekBuffer_[i]);
-        return !hasError ? peekBuffer_ : 0;
-    }
-
-private:
-    BasicIStreamWrapper(const BasicIStreamWrapper&);
-    BasicIStreamWrapper& operator=(const BasicIStreamWrapper&);
-
-    StreamType& stream_;
-    size_t count_;  //!< Number of characters read. Note:
-    mutable Ch peekBuffer_[4];
-};
-
-typedef BasicIStreamWrapper<std::istream> IStreamWrapper;
-typedef BasicIStreamWrapper<std::wistream> WIStreamWrapper;
-
-#if defined(__clang__) || defined(_MSC_VER)
-RAPIDJSON_DIAG_POP
-#endif
-
-RAPIDJSON_NAMESPACE_END
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/memorybuffer.h b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/memorybuffer.h
deleted file mode 100644
index 39bee1d..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/memorybuffer.h
+++ /dev/null
@@ -1,70 +0,0 @@
-// Tencent is pleased to support the open source community by making RapidJSON available.
-// 
-// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
-//
-// Licensed under the MIT License (the "License"); you may not use this file except
-// in compliance with the License. You may obtain a copy of the License at
-//
-// http://opensource.org/licenses/MIT
-//
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
-// specific language governing permissions and limitations under the License.
-
-#ifndef RAPIDJSON_MEMORYBUFFER_H_
-#define RAPIDJSON_MEMORYBUFFER_H_
-
-#include "stream.h"
-#include "internal/stack.h"
-
-RAPIDJSON_NAMESPACE_BEGIN
-
-//! Represents an in-memory output byte stream.
-/*!
-    This class is mainly for being wrapped by EncodedOutputStream or AutoUTFOutputStream.
-
-    It is similar to FileWriteBuffer but the destination is an in-memory buffer instead of a file.
-
-    Differences between MemoryBuffer and StringBuffer:
-    1. StringBuffer has Encoding but MemoryBuffer is only a byte buffer. 
-    2. StringBuffer::GetString() returns a null-terminated string. MemoryBuffer::GetBuffer() returns a buffer without terminator.
-
-    \tparam Allocator type for allocating memory buffer.
-    \note implements Stream concept
-*/
-template <typename Allocator = CrtAllocator>
-struct GenericMemoryBuffer {
-    typedef char Ch; // byte
-
-    GenericMemoryBuffer(Allocator* allocator = 0, size_t capacity = kDefaultCapacity) : stack_(allocator, capacity) {}
-
-    void Put(Ch c) { *stack_.template Push<Ch>() = c; }
-    void Flush() {}
-
-    void Clear() { stack_.Clear(); }
-    void ShrinkToFit() { stack_.ShrinkToFit(); }
-    Ch* Push(size_t count) { return stack_.template Push<Ch>(count); }
-    void Pop(size_t count) { stack_.template Pop<Ch>(count); }
-
-    const Ch* GetBuffer() const {
-        return stack_.template Bottom<Ch>();
-    }
-
-    size_t GetSize() const { return stack_.GetSize(); }
-
-    static const size_t kDefaultCapacity = 256;
-    mutable internal::Stack<Allocator> stack_;
-};
-
-typedef GenericMemoryBuffer<> MemoryBuffer;
-
-//! Implement specialized version of PutN() with memset() for better performance.
-template<>
-inline void PutN(MemoryBuffer& memoryBuffer, char c, size_t n) {
-    std::memset(memoryBuffer.stack_.Push<char>(n), c, n * sizeof(c));
-}
-
-RAPIDJSON_NAMESPACE_END
-
-#endif // RAPIDJSON_MEMORYBUFFER_H_
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/memorystream.h b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/memorystream.h
deleted file mode 100644
index 1d71d8a..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/memorystream.h
+++ /dev/null
@@ -1,71 +0,0 @@
-// Tencent is pleased to support the open source community by making RapidJSON available.
-// 
-// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
-//
-// Licensed under the MIT License (the "License"); you may not use this file except
-// in compliance with the License. You may obtain a copy of the License at
-//
-// http://opensource.org/licenses/MIT
-//
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
-// specific language governing permissions and limitations under the License.
-
-#ifndef RAPIDJSON_MEMORYSTREAM_H_
-#define RAPIDJSON_MEMORYSTREAM_H_
-
-#include "stream.h"
-
-#ifdef __clang__
-RAPIDJSON_DIAG_PUSH
-RAPIDJSON_DIAG_OFF(unreachable-code)
-RAPIDJSON_DIAG_OFF(missing-noreturn)
-#endif
-
-RAPIDJSON_NAMESPACE_BEGIN
-
-//! Represents an in-memory input byte stream.
-/*!
-    This class is mainly for being wrapped by EncodedInputStream or AutoUTFInputStream.
-
-    It is similar to FileReadBuffer but the source is an in-memory buffer instead of a file.
-
-    Differences between MemoryStream and StringStream:
-    1. StringStream has encoding but MemoryStream is a byte stream.
-    2. MemoryStream needs size of the source buffer and the buffer don't need to be null terminated. StringStream assume null-terminated string as source.
-    3. MemoryStream supports Peek4() for encoding detection. StringStream is specified with an encoding so it should not have Peek4().
-    \note implements Stream concept
-*/
-struct MemoryStream {
-    typedef char Ch; // byte
-
-    MemoryStream(const Ch *src, size_t size) : src_(src), begin_(src), end_(src + size), size_(size) {}
-
-    Ch Peek() const { return RAPIDJSON_UNLIKELY(src_ == end_) ? '\0' : *src_; }
-    Ch Take() { return RAPIDJSON_UNLIKELY(src_ == end_) ? '\0' : *src_++; }
-    size_t Tell() const { return static_cast<size_t>(src_ - begin_); }
-
-    Ch* PutBegin() { RAPIDJSON_ASSERT(false); return 0; }
-    void Put(Ch) { RAPIDJSON_ASSERT(false); }
-    void Flush() { RAPIDJSON_ASSERT(false); }
-    size_t PutEnd(Ch*) { RAPIDJSON_ASSERT(false); return 0; }
-
-    // For encoding detection only.
-    const Ch* Peek4() const {
-        return Tell() + 4 <= size_ ? src_ : 0;
-    }
-
-    const Ch* src_;     //!< Current read position.
-    const Ch* begin_;   //!< Original head of the string.
-    const Ch* end_;     //!< End of stream.
-    size_t size_;       //!< Size of the stream.
-};
-
-RAPIDJSON_NAMESPACE_END
-
-#ifdef __clang__
-RAPIDJSON_DIAG_POP
-#endif
-
-#endif // RAPIDJSON_MEMORYBUFFER_H_
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/msinttypes/inttypes.h b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/msinttypes/inttypes.h
deleted file mode 100644
index 1811128..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/msinttypes/inttypes.h
+++ /dev/null
@@ -1,316 +0,0 @@
-// ISO C9x  compliant inttypes.h for Microsoft Visual Studio
-// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124 
-// 
-//  Copyright (c) 2006-2013 Alexander Chemeris
-// 
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-// 
-//   1. Redistributions of source code must retain the above copyright notice,
-//      this list of conditions and the following disclaimer.
-// 
-//   2. Redistributions in binary form must reproduce the above copyright
-//      notice, this list of conditions and the following disclaimer in the
-//      documentation and/or other materials provided with the distribution.
-// 
-//   3. Neither the name of the product nor the names of its contributors may
-//      be used to endorse or promote products derived from this software
-//      without specific prior written permission.
-// 
-// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
-// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
-// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-// 
-///////////////////////////////////////////////////////////////////////////////
-
-// The above software in this distribution may have been modified by 
-// THL A29 Limited ("Tencent Modifications"). 
-// All Tencent Modifications are Copyright (C) 2015 THL A29 Limited.
-
-#ifndef _MSC_VER // [
-#error "Use this header only with Microsoft Visual C++ compilers!"
-#endif // _MSC_VER ]
-
-#ifndef _MSC_INTTYPES_H_ // [
-#define _MSC_INTTYPES_H_
-
-#if _MSC_VER > 1000
-#pragma once
-#endif
-
-#include "stdint.h"
-
-// miloyip: VC supports inttypes.h since VC2013
-#if _MSC_VER >= 1800
-#include <inttypes.h>
-#else
-
-// 7.8 Format conversion of integer types
-
-typedef struct {
-   intmax_t quot;
-   intmax_t rem;
-} imaxdiv_t;
-
-// 7.8.1 Macros for format specifiers
-
-#if !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS) // [   See footnote 185 at page 198
-
-// The fprintf macros for signed integers are:
-#define PRId8       "d"
-#define PRIi8       "i"
-#define PRIdLEAST8  "d"
-#define PRIiLEAST8  "i"
-#define PRIdFAST8   "d"
-#define PRIiFAST8   "i"
-
-#define PRId16       "hd"
-#define PRIi16       "hi"
-#define PRIdLEAST16  "hd"
-#define PRIiLEAST16  "hi"
-#define PRIdFAST16   "hd"
-#define PRIiFAST16   "hi"
-
-#define PRId32       "I32d"
-#define PRIi32       "I32i"
-#define PRIdLEAST32  "I32d"
-#define PRIiLEAST32  "I32i"
-#define PRIdFAST32   "I32d"
-#define PRIiFAST32   "I32i"
-
-#define PRId64       "I64d"
-#define PRIi64       "I64i"
-#define PRIdLEAST64  "I64d"
-#define PRIiLEAST64  "I64i"
-#define PRIdFAST64   "I64d"
-#define PRIiFAST64   "I64i"
-
-#define PRIdMAX     "I64d"
-#define PRIiMAX     "I64i"
-
-#define PRIdPTR     "Id"
-#define PRIiPTR     "Ii"
-
-// The fprintf macros for unsigned integers are:
-#define PRIo8       "o"
-#define PRIu8       "u"
-#define PRIx8       "x"
-#define PRIX8       "X"
-#define PRIoLEAST8  "o"
-#define PRIuLEAST8  "u"
-#define PRIxLEAST8  "x"
-#define PRIXLEAST8  "X"
-#define PRIoFAST8   "o"
-#define PRIuFAST8   "u"
-#define PRIxFAST8   "x"
-#define PRIXFAST8   "X"
-
-#define PRIo16       "ho"
-#define PRIu16       "hu"
-#define PRIx16       "hx"
-#define PRIX16       "hX"
-#define PRIoLEAST16  "ho"
-#define PRIuLEAST16  "hu"
-#define PRIxLEAST16  "hx"
-#define PRIXLEAST16  "hX"
-#define PRIoFAST16   "ho"
-#define PRIuFAST16   "hu"
-#define PRIxFAST16   "hx"
-#define PRIXFAST16   "hX"
-
-#define PRIo32       "I32o"
-#define PRIu32       "I32u"
-#define PRIx32       "I32x"
-#define PRIX32       "I32X"
-#define PRIoLEAST32  "I32o"
-#define PRIuLEAST32  "I32u"
-#define PRIxLEAST32  "I32x"
-#define PRIXLEAST32  "I32X"
-#define PRIoFAST32   "I32o"
-#define PRIuFAST32   "I32u"
-#define PRIxFAST32   "I32x"
-#define PRIXFAST32   "I32X"
-
-#define PRIo64       "I64o"
-#define PRIu64       "I64u"
-#define PRIx64       "I64x"
-#define PRIX64       "I64X"
-#define PRIoLEAST64  "I64o"
-#define PRIuLEAST64  "I64u"
-#define PRIxLEAST64  "I64x"
-#define PRIXLEAST64  "I64X"
-#define PRIoFAST64   "I64o"
-#define PRIuFAST64   "I64u"
-#define PRIxFAST64   "I64x"
-#define PRIXFAST64   "I64X"
-
-#define PRIoMAX     "I64o"
-#define PRIuMAX     "I64u"
-#define PRIxMAX     "I64x"
-#define PRIXMAX     "I64X"
-
-#define PRIoPTR     "Io"
-#define PRIuPTR     "Iu"
-#define PRIxPTR     "Ix"
-#define PRIXPTR     "IX"
-
-// The fscanf macros for signed integers are:
-#define SCNd8       "d"
-#define SCNi8       "i"
-#define SCNdLEAST8  "d"
-#define SCNiLEAST8  "i"
-#define SCNdFAST8   "d"
-#define SCNiFAST8   "i"
-
-#define SCNd16       "hd"
-#define SCNi16       "hi"
-#define SCNdLEAST16  "hd"
-#define SCNiLEAST16  "hi"
-#define SCNdFAST16   "hd"
-#define SCNiFAST16   "hi"
-
-#define SCNd32       "ld"
-#define SCNi32       "li"
-#define SCNdLEAST32  "ld"
-#define SCNiLEAST32  "li"
-#define SCNdFAST32   "ld"
-#define SCNiFAST32   "li"
-
-#define SCNd64       "I64d"
-#define SCNi64       "I64i"
-#define SCNdLEAST64  "I64d"
-#define SCNiLEAST64  "I64i"
-#define SCNdFAST64   "I64d"
-#define SCNiFAST64   "I64i"
-
-#define SCNdMAX     "I64d"
-#define SCNiMAX     "I64i"
-
-#ifdef _WIN64 // [
-#  define SCNdPTR     "I64d"
-#  define SCNiPTR     "I64i"
-#else  // _WIN64 ][
-#  define SCNdPTR     "ld"
-#  define SCNiPTR     "li"
-#endif  // _WIN64 ]
-
-// The fscanf macros for unsigned integers are:
-#define SCNo8       "o"
-#define SCNu8       "u"
-#define SCNx8       "x"
-#define SCNX8       "X"
-#define SCNoLEAST8  "o"
-#define SCNuLEAST8  "u"
-#define SCNxLEAST8  "x"
-#define SCNXLEAST8  "X"
-#define SCNoFAST8   "o"
-#define SCNuFAST8   "u"
-#define SCNxFAST8   "x"
-#define SCNXFAST8   "X"
-
-#define SCNo16       "ho"
-#define SCNu16       "hu"
-#define SCNx16       "hx"
-#define SCNX16       "hX"
-#define SCNoLEAST16  "ho"
-#define SCNuLEAST16  "hu"
-#define SCNxLEAST16  "hx"
-#define SCNXLEAST16  "hX"
-#define SCNoFAST16   "ho"
-#define SCNuFAST16   "hu"
-#define SCNxFAST16   "hx"
-#define SCNXFAST16   "hX"
-
-#define SCNo32       "lo"
-#define SCNu32       "lu"
-#define SCNx32       "lx"
-#define SCNX32       "lX"
-#define SCNoLEAST32  "lo"
-#define SCNuLEAST32  "lu"
-#define SCNxLEAST32  "lx"
-#define SCNXLEAST32  "lX"
-#define SCNoFAST32   "lo"
-#define SCNuFAST32   "lu"
-#define SCNxFAST32   "lx"
-#define SCNXFAST32   "lX"
-
-#define SCNo64       "I64o"
-#define SCNu64       "I64u"
-#define SCNx64       "I64x"
-#define SCNX64       "I64X"
-#define SCNoLEAST64  "I64o"
-#define SCNuLEAST64  "I64u"
-#define SCNxLEAST64  "I64x"
-#define SCNXLEAST64  "I64X"
-#define SCNoFAST64   "I64o"
-#define SCNuFAST64   "I64u"
-#define SCNxFAST64   "I64x"
-#define SCNXFAST64   "I64X"
-
-#define SCNoMAX     "I64o"
-#define SCNuMAX     "I64u"
-#define SCNxMAX     "I64x"
-#define SCNXMAX     "I64X"
-
-#ifdef _WIN64 // [
-#  define SCNoPTR     "I64o"
-#  define SCNuPTR     "I64u"
-#  define SCNxPTR     "I64x"
-#  define SCNXPTR     "I64X"
-#else  // _WIN64 ][
-#  define SCNoPTR     "lo"
-#  define SCNuPTR     "lu"
-#  define SCNxPTR     "lx"
-#  define SCNXPTR     "lX"
-#endif  // _WIN64 ]
-
-#endif // __STDC_FORMAT_MACROS ]
-
-// 7.8.2 Functions for greatest-width integer types
-
-// 7.8.2.1 The imaxabs function
-#define imaxabs _abs64
-
-// 7.8.2.2 The imaxdiv function
-
-// This is modified version of div() function from Microsoft's div.c found
-// in %MSVC.NET%\crt\src\div.c
-#ifdef STATIC_IMAXDIV // [
-static
-#else // STATIC_IMAXDIV ][
-_inline
-#endif // STATIC_IMAXDIV ]
-imaxdiv_t __cdecl imaxdiv(intmax_t numer, intmax_t denom)
-{
-   imaxdiv_t result;
-
-   result.quot = numer / denom;
-   result.rem = numer % denom;
-
-   if (numer < 0 && result.rem > 0) {
-      // did division wrong; must fix up
-      ++result.quot;
-      result.rem -= denom;
-   }
-
-   return result;
-}
-
-// 7.8.2.3 The strtoimax and strtoumax functions
-#define strtoimax _strtoi64
-#define strtoumax _strtoui64
-
-// 7.8.2.4 The wcstoimax and wcstoumax functions
-#define wcstoimax _wcstoi64
-#define wcstoumax _wcstoui64
-
-#endif // _MSC_VER >= 1800
-
-#endif // _MSC_INTTYPES_H_ ]
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/msinttypes/stdint.h b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/msinttypes/stdint.h
deleted file mode 100644
index 3d4477b..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/msinttypes/stdint.h
+++ /dev/null
@@ -1,300 +0,0 @@
-// ISO C9x  compliant stdint.h for Microsoft Visual Studio
-// Based on ISO/IEC 9899:TC2 Committee draft (May 6, 2005) WG14/N1124 
-// 
-//  Copyright (c) 2006-2013 Alexander Chemeris
-// 
-// Redistribution and use in source and binary forms, with or without
-// modification, are permitted provided that the following conditions are met:
-// 
-//   1. Redistributions of source code must retain the above copyright notice,
-//      this list of conditions and the following disclaimer.
-// 
-//   2. Redistributions in binary form must reproduce the above copyright
-//      notice, this list of conditions and the following disclaimer in the
-//      documentation and/or other materials provided with the distribution.
-// 
-//   3. Neither the name of the product nor the names of its contributors may
-//      be used to endorse or promote products derived from this software
-//      without specific prior written permission.
-// 
-// THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
-// WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-// MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
-// EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
-// OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 
-// WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
-// OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
-// ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-// 
-///////////////////////////////////////////////////////////////////////////////
-
-// The above software in this distribution may have been modified by 
-// THL A29 Limited ("Tencent Modifications"). 
-// All Tencent Modifications are Copyright (C) 2015 THL A29 Limited.
-
-#ifndef _MSC_VER // [
-#error "Use this header only with Microsoft Visual C++ compilers!"
-#endif // _MSC_VER ]
-
-#ifndef _MSC_STDINT_H_ // [
-#define _MSC_STDINT_H_
-
-#if _MSC_VER > 1000
-#pragma once
-#endif
-
-// miloyip: Originally Visual Studio 2010 uses its own stdint.h. However it generates warning with INT64_C(), so change to use this file for vs2010.
-#if _MSC_VER >= 1600 // [
-#include <stdint.h>
-
-#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [   See footnote 224 at page 260
-
-#undef INT8_C
-#undef INT16_C
-#undef INT32_C
-#undef INT64_C
-#undef UINT8_C
-#undef UINT16_C
-#undef UINT32_C
-#undef UINT64_C
-
-// 7.18.4.1 Macros for minimum-width integer constants
-
-#define INT8_C(val)  val##i8
-#define INT16_C(val) val##i16
-#define INT32_C(val) val##i32
-#define INT64_C(val) val##i64
-
-#define UINT8_C(val)  val##ui8
-#define UINT16_C(val) val##ui16
-#define UINT32_C(val) val##ui32
-#define UINT64_C(val) val##ui64
-
-// 7.18.4.2 Macros for greatest-width integer constants
-// These #ifndef's are needed to prevent collisions with <boost/cstdint.hpp>.
-// Check out Issue 9 for the details.
-#ifndef INTMAX_C //   [
-#  define INTMAX_C   INT64_C
-#endif // INTMAX_C    ]
-#ifndef UINTMAX_C //  [
-#  define UINTMAX_C  UINT64_C
-#endif // UINTMAX_C   ]
-
-#endif // __STDC_CONSTANT_MACROS ]
-
-#else // ] _MSC_VER >= 1700 [
-
-#include <limits.h>
-
-// For Visual Studio 6 in C++ mode and for many Visual Studio versions when
-// compiling for ARM we have to wrap <wchar.h> include with 'extern "C++" {}'
-// or compiler would give many errors like this:
-//   error C2733: second C linkage of overloaded function 'wmemchr' not allowed
-#if defined(__cplusplus) && !defined(_M_ARM)
-extern "C" {
-#endif
-#  include <wchar.h>
-#if defined(__cplusplus) && !defined(_M_ARM)
-}
-#endif
-
-// Define _W64 macros to mark types changing their size, like intptr_t.
-#ifndef _W64
-#  if !defined(__midl) && (defined(_X86_) || defined(_M_IX86)) && _MSC_VER >= 1300
-#     define _W64 __w64
-#  else
-#     define _W64
-#  endif
-#endif
-
-
-// 7.18.1 Integer types
-
-// 7.18.1.1 Exact-width integer types
-
-// Visual Studio 6 and Embedded Visual C++ 4 doesn't
-// realize that, e.g. char has the same size as __int8
-// so we give up on __intX for them.
-#if (_MSC_VER < 1300)
-   typedef signed char       int8_t;
-   typedef signed short      int16_t;
-   typedef signed int        int32_t;
-   typedef unsigned char     uint8_t;
-   typedef unsigned short    uint16_t;
-   typedef unsigned int      uint32_t;
-#else
-   typedef signed __int8     int8_t;
-   typedef signed __int16    int16_t;
-   typedef signed __int32    int32_t;
-   typedef unsigned __int8   uint8_t;
-   typedef unsigned __int16  uint16_t;
-   typedef unsigned __int32  uint32_t;
-#endif
-typedef signed __int64       int64_t;
-typedef unsigned __int64     uint64_t;
-
-
-// 7.18.1.2 Minimum-width integer types
-typedef int8_t    int_least8_t;
-typedef int16_t   int_least16_t;
-typedef int32_t   int_least32_t;
-typedef int64_t   int_least64_t;
-typedef uint8_t   uint_least8_t;
-typedef uint16_t  uint_least16_t;
-typedef uint32_t  uint_least32_t;
-typedef uint64_t  uint_least64_t;
-
-// 7.18.1.3 Fastest minimum-width integer types
-typedef int8_t    int_fast8_t;
-typedef int16_t   int_fast16_t;
-typedef int32_t   int_fast32_t;
-typedef int64_t   int_fast64_t;
-typedef uint8_t   uint_fast8_t;
-typedef uint16_t  uint_fast16_t;
-typedef uint32_t  uint_fast32_t;
-typedef uint64_t  uint_fast64_t;
-
-// 7.18.1.4 Integer types capable of holding object pointers
-#ifdef _WIN64 // [
-   typedef signed __int64    intptr_t;
-   typedef unsigned __int64  uintptr_t;
-#else // _WIN64 ][
-   typedef _W64 signed int   intptr_t;
-   typedef _W64 unsigned int uintptr_t;
-#endif // _WIN64 ]
-
-// 7.18.1.5 Greatest-width integer types
-typedef int64_t   intmax_t;
-typedef uint64_t  uintmax_t;
-
-
-// 7.18.2 Limits of specified-width integer types
-
-#if !defined(__cplusplus) || defined(__STDC_LIMIT_MACROS) // [   See footnote 220 at page 257 and footnote 221 at page 259
-
-// 7.18.2.1 Limits of exact-width integer types
-#define INT8_MIN     ((int8_t)_I8_MIN)
-#define INT8_MAX     _I8_MAX
-#define INT16_MIN    ((int16_t)_I16_MIN)
-#define INT16_MAX    _I16_MAX
-#define INT32_MIN    ((int32_t)_I32_MIN)
-#define INT32_MAX    _I32_MAX
-#define INT64_MIN    ((int64_t)_I64_MIN)
-#define INT64_MAX    _I64_MAX
-#define UINT8_MAX    _UI8_MAX
-#define UINT16_MAX   _UI16_MAX
-#define UINT32_MAX   _UI32_MAX
-#define UINT64_MAX   _UI64_MAX
-
-// 7.18.2.2 Limits of minimum-width integer types
-#define INT_LEAST8_MIN    INT8_MIN
-#define INT_LEAST8_MAX    INT8_MAX
-#define INT_LEAST16_MIN   INT16_MIN
-#define INT_LEAST16_MAX   INT16_MAX
-#define INT_LEAST32_MIN   INT32_MIN
-#define INT_LEAST32_MAX   INT32_MAX
-#define INT_LEAST64_MIN   INT64_MIN
-#define INT_LEAST64_MAX   INT64_MAX
-#define UINT_LEAST8_MAX   UINT8_MAX
-#define UINT_LEAST16_MAX  UINT16_MAX
-#define UINT_LEAST32_MAX  UINT32_MAX
-#define UINT_LEAST64_MAX  UINT64_MAX
-
-// 7.18.2.3 Limits of fastest minimum-width integer types
-#define INT_FAST8_MIN    INT8_MIN
-#define INT_FAST8_MAX    INT8_MAX
-#define INT_FAST16_MIN   INT16_MIN
-#define INT_FAST16_MAX   INT16_MAX
-#define INT_FAST32_MIN   INT32_MIN
-#define INT_FAST32_MAX   INT32_MAX
-#define INT_FAST64_MIN   INT64_MIN
-#define INT_FAST64_MAX   INT64_MAX
-#define UINT_FAST8_MAX   UINT8_MAX
-#define UINT_FAST16_MAX  UINT16_MAX
-#define UINT_FAST32_MAX  UINT32_MAX
-#define UINT_FAST64_MAX  UINT64_MAX
-
-// 7.18.2.4 Limits of integer types capable of holding object pointers
-#ifdef _WIN64 // [
-#  define INTPTR_MIN   INT64_MIN
-#  define INTPTR_MAX   INT64_MAX
-#  define UINTPTR_MAX  UINT64_MAX
-#else // _WIN64 ][
-#  define INTPTR_MIN   INT32_MIN
-#  define INTPTR_MAX   INT32_MAX
-#  define UINTPTR_MAX  UINT32_MAX
-#endif // _WIN64 ]
-
-// 7.18.2.5 Limits of greatest-width integer types
-#define INTMAX_MIN   INT64_MIN
-#define INTMAX_MAX   INT64_MAX
-#define UINTMAX_MAX  UINT64_MAX
-
-// 7.18.3 Limits of other integer types
-
-#ifdef _WIN64 // [
-#  define PTRDIFF_MIN  _I64_MIN
-#  define PTRDIFF_MAX  _I64_MAX
-#else  // _WIN64 ][
-#  define PTRDIFF_MIN  _I32_MIN
-#  define PTRDIFF_MAX  _I32_MAX
-#endif  // _WIN64 ]
-
-#define SIG_ATOMIC_MIN  INT_MIN
-#define SIG_ATOMIC_MAX  INT_MAX
-
-#ifndef SIZE_MAX // [
-#  ifdef _WIN64 // [
-#     define SIZE_MAX  _UI64_MAX
-#  else // _WIN64 ][
-#     define SIZE_MAX  _UI32_MAX
-#  endif // _WIN64 ]
-#endif // SIZE_MAX ]
-
-// WCHAR_MIN and WCHAR_MAX are also defined in <wchar.h>
-#ifndef WCHAR_MIN // [
-#  define WCHAR_MIN  0
-#endif  // WCHAR_MIN ]
-#ifndef WCHAR_MAX // [
-#  define WCHAR_MAX  _UI16_MAX
-#endif  // WCHAR_MAX ]
-
-#define WINT_MIN  0
-#define WINT_MAX  _UI16_MAX
-
-#endif // __STDC_LIMIT_MACROS ]
-
-
-// 7.18.4 Limits of other integer types
-
-#if !defined(__cplusplus) || defined(__STDC_CONSTANT_MACROS) // [   See footnote 224 at page 260
-
-// 7.18.4.1 Macros for minimum-width integer constants
-
-#define INT8_C(val)  val##i8
-#define INT16_C(val) val##i16
-#define INT32_C(val) val##i32
-#define INT64_C(val) val##i64
-
-#define UINT8_C(val)  val##ui8
-#define UINT16_C(val) val##ui16
-#define UINT32_C(val) val##ui32
-#define UINT64_C(val) val##ui64
-
-// 7.18.4.2 Macros for greatest-width integer constants
-// These #ifndef's are needed to prevent collisions with <boost/cstdint.hpp>.
-// Check out Issue 9 for the details.
-#ifndef INTMAX_C //   [
-#  define INTMAX_C   INT64_C
-#endif // INTMAX_C    ]
-#ifndef UINTMAX_C //  [
-#  define UINTMAX_C  UINT64_C
-#endif // UINTMAX_C   ]
-
-#endif // __STDC_CONSTANT_MACROS ]
-
-#endif // _MSC_VER >= 1600 ]
-
-#endif // _MSC_STDINT_H_ ]
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/ostreamwrapper.h b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/ostreamwrapper.h
deleted file mode 100644
index 8bf36dc..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/ostreamwrapper.h
+++ /dev/null
@@ -1,76 +0,0 @@
-// Tencent is pleased to support the open source community by making RapidJSON available.
-// 
-// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
-//
-// Licensed under the MIT License (the "License"); you may not use this file except
-// in compliance with the License. You may obtain a copy of the License at
-//
-// http://opensource.org/licenses/MIT
-//
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
-// specific language governing permissions and limitations under the License.
-
-#include "stream.h"
-#include <iosfwd>
-
-#ifdef __clang__
-RAPIDJSON_DIAG_PUSH
-RAPIDJSON_DIAG_OFF(padded)
-#endif
-
-RAPIDJSON_NAMESPACE_BEGIN
-
-//! Wrapper of \c std::basic_ostream into RapidJSON's Stream concept.
-/*!
-    The classes can be wrapped including but not limited to:
-
-    - \c std::ostringstream
-    - \c std::stringstream
-    - \c std::wpstringstream
-    - \c std::wstringstream
-    - \c std::ifstream
-    - \c std::fstream
-    - \c std::wofstream
-    - \c std::wfstream
-
-    \tparam StreamType Class derived from \c std::basic_ostream.
-*/
-   
-template <typename StreamType>
-class BasicOStreamWrapper {
-public:
-    typedef typename StreamType::char_type Ch;
-    BasicOStreamWrapper(StreamType& stream) : stream_(stream) {}
-
-    void Put(Ch c) {
-        stream_.put(c);
-    }
-
-    void Flush() {
-        stream_.flush();
-    }
-
-    // Not implemented
-    char Peek() const { RAPIDJSON_ASSERT(false); return 0; }
-    char Take() { RAPIDJSON_ASSERT(false); return 0; }
-    size_t Tell() const { RAPIDJSON_ASSERT(false); return 0; }
-    char* PutBegin() { RAPIDJSON_ASSERT(false); return 0; }
-    size_t PutEnd(char*) { RAPIDJSON_ASSERT(false); return 0; }
-
-private:
-    BasicOStreamWrapper(const BasicOStreamWrapper&);
-    BasicOStreamWrapper& operator=(const BasicOStreamWrapper&);
-
-    StreamType& stream_;
-};
-
-typedef BasicOStreamWrapper<std::ostream> OStreamWrapper;
-typedef BasicOStreamWrapper<std::wostream> WOStreamWrapper;
-
-#ifdef __clang__
-RAPIDJSON_DIAG_POP
-#endif
-
-RAPIDJSON_NAMESPACE_END
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/pointer.h b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/pointer.h
deleted file mode 100644
index 9444938..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/pointer.h
+++ /dev/null
@@ -1,1345 +0,0 @@
-// Tencent is pleased to support the open source community by making RapidJSON available.
-// 
-// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
-//
-// Licensed under the MIT License (the "License"); you may not use this file except
-// in compliance with the License. You may obtain a copy of the License at
-//
-// http://opensource.org/licenses/MIT
-//
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
-// specific language governing permissions and limitations under the License.
-
-#ifndef RAPIDJSON_POINTER_H_
-#define RAPIDJSON_POINTER_H_
-
-#include "document.h"
-#include "internal/itoa.h"
-
-#ifdef __clang__
-RAPIDJSON_DIAG_PUSH
-RAPIDJSON_DIAG_OFF(switch-enum)
-#endif
-
-RAPIDJSON_NAMESPACE_BEGIN
-
-static const SizeType kPointerInvalidIndex = ~SizeType(0);  //!< Represents an invalid index in GenericPointer::Token
-
-//! Error code of parsing.
-/*! \ingroup RAPIDJSON_ERRORS
-    \see GenericPointer::GenericPointer, GenericPointer::GetParseErrorCode
-*/
-enum PointerParseErrorCode {
-    kPointerParseErrorNone = 0,                     //!< The parse is successful
-
-    kPointerParseErrorTokenMustBeginWithSolidus,    //!< A token must begin with a '/'
-    kPointerParseErrorInvalidEscape,                //!< Invalid escape
-    kPointerParseErrorInvalidPercentEncoding,       //!< Invalid percent encoding in URI fragment
-    kPointerParseErrorCharacterMustPercentEncode    //!< A character must percent encoded in URI fragment
-};
-
-///////////////////////////////////////////////////////////////////////////////
-// GenericPointer
-
-//! Represents a JSON Pointer. Use Pointer for UTF8 encoding and default allocator.
-/*!
-    This class implements RFC 6901 "JavaScript Object Notation (JSON) Pointer" 
-    (https://tools.ietf.org/html/rfc6901).
-
-    A JSON pointer is for identifying a specific value in a JSON document
-    (GenericDocument). It can simplify coding of DOM tree manipulation, because it
-    can access multiple-level depth of DOM tree with single API call.
-
-    After it parses a string representation (e.g. "/foo/0" or URI fragment 
-    representation (e.g. "#/foo/0") into its internal representation (tokens),
-    it can be used to resolve a specific value in multiple documents, or sub-tree 
-    of documents.
-
-    Contrary to GenericValue, Pointer can be copy constructed and copy assigned.
-    Apart from assignment, a Pointer cannot be modified after construction.
-
-    Although Pointer is very convenient, please aware that constructing Pointer
-    involves parsing and dynamic memory allocation. A special constructor with user-
-    supplied tokens eliminates these.
-
-    GenericPointer depends on GenericDocument and GenericValue.
-    
-    \tparam ValueType The value type of the DOM tree. E.g. GenericValue<UTF8<> >
-    \tparam Allocator The allocator type for allocating memory for internal representation.
-    
-    \note GenericPointer uses same encoding of ValueType.
-    However, Allocator of GenericPointer is independent of Allocator of Value.
-*/
-template <typename ValueType, typename Allocator = CrtAllocator>
-class GenericPointer {
-public:
-    typedef typename ValueType::EncodingType EncodingType;  //!< Encoding type from Value
-    typedef typename ValueType::Ch Ch;                      //!< Character type from Value
-
-    //! A token is the basic units of internal representation.
-    /*!
-        A JSON pointer string representation "/foo/123" is parsed to two tokens: 
-        "foo" and 123. 123 will be represented in both numeric form and string form.
-        They are resolved according to the actual value type (object or array).
-
-        For token that are not numbers, or the numeric value is out of bound
-        (greater than limits of SizeType), they are only treated as string form
-        (i.e. the token's index will be equal to kPointerInvalidIndex).
-
-        This struct is public so that user can create a Pointer without parsing and 
-        allocation, using a special constructor.
-    */
-    struct Token {
-        const Ch* name;             //!< Name of the token. It has null character at the end but it can contain null character.
-        SizeType length;            //!< Length of the name.
-        SizeType index;             //!< A valid array index, if it is not equal to kPointerInvalidIndex.
-    };
-
-    //!@name Constructors and destructor.
-    //@{
-
-    //! Default constructor.
-    GenericPointer(Allocator* allocator = 0) : allocator_(allocator), ownAllocator_(), nameBuffer_(), tokens_(), tokenCount_(), parseErrorOffset_(), parseErrorCode_(kPointerParseErrorNone) {}
-
-    //! Constructor that parses a string or URI fragment representation.
-    /*!
-        \param source A null-terminated, string or URI fragment representation of JSON pointer.
-        \param allocator User supplied allocator for this pointer. If no allocator is provided, it creates a self-owned one.
-    */
-    explicit GenericPointer(const Ch* source, Allocator* allocator = 0) : allocator_(allocator), ownAllocator_(), nameBuffer_(), tokens_(), tokenCount_(), parseErrorOffset_(), parseErrorCode_(kPointerParseErrorNone) {
-        Parse(source, internal::StrLen(source));
-    }
-
-#if RAPIDJSON_HAS_STDSTRING
-    //! Constructor that parses a string or URI fragment representation.
-    /*!
-        \param source A string or URI fragment representation of JSON pointer.
-        \param allocator User supplied allocator for this pointer. If no allocator is provided, it creates a self-owned one.
-        \note Requires the definition of the preprocessor symbol \ref RAPIDJSON_HAS_STDSTRING.
-    */
-    explicit GenericPointer(const std::basic_string<Ch>& source, Allocator* allocator = 0) : allocator_(allocator), ownAllocator_(), nameBuffer_(), tokens_(), tokenCount_(), parseErrorOffset_(), parseErrorCode_(kPointerParseErrorNone) {
-        Parse(source.c_str(), source.size());
-    }
-#endif
-
-    //! Constructor that parses a string or URI fragment representation, with length of the source string.
-    /*!
-        \param source A string or URI fragment representation of JSON pointer.
-        \param length Length of source.
-        \param allocator User supplied allocator for this pointer. If no allocator is provided, it creates a self-owned one.
-        \note Slightly faster than the overload without length.
-    */
-    GenericPointer(const Ch* source, size_t length, Allocator* allocator = 0) : allocator_(allocator), ownAllocator_(), nameBuffer_(), tokens_(), tokenCount_(), parseErrorOffset_(), parseErrorCode_(kPointerParseErrorNone) {
-        Parse(source, length);
-    }
-
-    //! Constructor with user-supplied tokens.
-    /*!
-        This constructor let user supplies const array of tokens.
-        This prevents the parsing process and eliminates allocation.
-        This is preferred for memory constrained environments.
-
-        \param tokens An constant array of tokens representing the JSON pointer.
-        \param tokenCount Number of tokens.
-
-        \b Example
-        \code
-        #define NAME(s) { s, sizeof(s) / sizeof(s[0]) - 1, kPointerInvalidIndex }
-        #define INDEX(i) { #i, sizeof(#i) - 1, i }
-
-        static const Pointer::Token kTokens[] = { NAME("foo"), INDEX(123) };
-        static const Pointer p(kTokens, sizeof(kTokens) / sizeof(kTokens[0]));
-        // Equivalent to static const Pointer p("/foo/123");
-
-        #undef NAME
-        #undef INDEX
-        \endcode
-    */
-    GenericPointer(const Token* tokens, size_t tokenCount) : allocator_(), ownAllocator_(), nameBuffer_(), tokens_(const_cast<Token*>(tokens)), tokenCount_(tokenCount), parseErrorOffset_(), parseErrorCode_(kPointerParseErrorNone) {}
-
-    //! Copy constructor.
-    GenericPointer(const GenericPointer& rhs, Allocator* allocator = 0) : allocator_(allocator), ownAllocator_(), nameBuffer_(), tokens_(), tokenCount_(), parseErrorOffset_(), parseErrorCode_(kPointerParseErrorNone) {
-        *this = rhs;
-    }
-
-    //! Destructor.
-    ~GenericPointer() {
-        if (nameBuffer_)    // If user-supplied tokens constructor is used, nameBuffer_ is nullptr and tokens_ are not deallocated.
-            Allocator::Free(tokens_);
-        RAPIDJSON_DELETE(ownAllocator_);
-    }
-
-    //! Assignment operator.
-    GenericPointer& operator=(const GenericPointer& rhs) {
-        if (this != &rhs) {
-            // Do not delete ownAllcator
-            if (nameBuffer_)
-                Allocator::Free(tokens_);
-
-            tokenCount_ = rhs.tokenCount_;
-            parseErrorOffset_ = rhs.parseErrorOffset_;
-            parseErrorCode_ = rhs.parseErrorCode_;
-
-            if (rhs.nameBuffer_)
-                CopyFromRaw(rhs); // Normally parsed tokens.
-            else {
-                tokens_ = rhs.tokens_; // User supplied const tokens.
-                nameBuffer_ = 0;
-            }
-        }
-        return *this;
-    }
-
-    //@}
-
-    //!@name Append token
-    //@{
-
-    //! Append a token and return a new Pointer
-    /*!
-        \param token Token to be appended.
-        \param allocator Allocator for the newly return Pointer.
-        \return A new Pointer with appended token.
-    */
-    GenericPointer Append(const Token& token, Allocator* allocator = 0) const {
-        GenericPointer r;
-        r.allocator_ = allocator;
-        Ch *p = r.CopyFromRaw(*this, 1, token.length + 1);
-        std::memcpy(p, token.name, (token.length + 1) * sizeof(Ch));
-        r.tokens_[tokenCount_].name = p;
-        r.tokens_[tokenCount_].length = token.length;
-        r.tokens_[tokenCount_].index = token.index;
-        return r;
-    }
-
-    //! Append a name token with length, and return a new Pointer
-    /*!
-        \param name Name to be appended.
-        \param length Length of name.
-        \param allocator Allocator for the newly return Pointer.
-        \return A new Pointer with appended token.
-    */
-    GenericPointer Append(const Ch* name, SizeType length, Allocator* allocator = 0) const {
-        Token token = { name, length, kPointerInvalidIndex };
-        return Append(token, allocator);
-    }
-
-    //! Append a name token without length, and return a new Pointer
-    /*!
-        \param name Name (const Ch*) to be appended.
-        \param allocator Allocator for the newly return Pointer.
-        \return A new Pointer with appended token.
-    */
-    template <typename T>
-    RAPIDJSON_DISABLEIF_RETURN((internal::NotExpr<internal::IsSame<typename internal::RemoveConst<T>::Type, Ch> >), (GenericPointer))
-    Append(T* name, Allocator* allocator = 0) const {
-        return Append(name, StrLen(name), allocator);
-    }
-
-#if RAPIDJSON_HAS_STDSTRING
-    //! Append a name token, and return a new Pointer
-    /*!
-        \param name Name to be appended.
-        \param allocator Allocator for the newly return Pointer.
-        \return A new Pointer with appended token.
-    */
-    GenericPointer Append(const std::basic_string<Ch>& name, Allocator* allocator = 0) const {
-        return Append(name.c_str(), static_cast<SizeType>(name.size()), allocator);
-    }
-#endif
-
-    //! Append a index token, and return a new Pointer
-    /*!
-        \param index Index to be appended.
-        \param allocator Allocator for the newly return Pointer.
-        \return A new Pointer with appended token.
-    */
-    GenericPointer Append(SizeType index, Allocator* allocator = 0) const {
-        char buffer[21];
-        char* end = sizeof(SizeType) == 4 ? internal::u32toa(index, buffer) : internal::u64toa(index, buffer);
-        SizeType length = static_cast<SizeType>(end - buffer);
-        buffer[length] = '\0';
-
-        if (sizeof(Ch) == 1) {
-            Token token = { reinterpret_cast<Ch*>(buffer), length, index };
-            return Append(token, allocator);
-        }
-        else {
-            Ch name[21];
-            for (size_t i = 0; i <= length; i++)
-                name[i] = buffer[i];
-            Token token = { name, length, index };
-            return Append(token, allocator);
-        }
-    }
-
-    //! Append a token by value, and return a new Pointer
-    /*!
-        \param token token to be appended.
-        \param allocator Allocator for the newly return Pointer.
-        \return A new Pointer with appended token.
-    */
-    GenericPointer Append(const ValueType& token, Allocator* allocator = 0) const {
-        if (token.IsString())
-            return Append(token.GetString(), token.GetStringLength(), allocator);
-        else {
-            RAPIDJSON_ASSERT(token.IsUint64());
-            RAPIDJSON_ASSERT(token.GetUint64() <= SizeType(~0));
-            return Append(static_cast<SizeType>(token.GetUint64()), allocator);
-        }
-    }
-
-    //!@name Handling Parse Error
-    //@{
-
-    //! Check whether this is a valid pointer.
-    bool IsValid() const { return parseErrorCode_ == kPointerParseErrorNone; }
-
-    //! Get the parsing error offset in code unit.
-    size_t GetParseErrorOffset() const { return parseErrorOffset_; }
-
-    //! Get the parsing error code.
-    PointerParseErrorCode GetParseErrorCode() const { return parseErrorCode_; }
-
-    //@}
-
-    //! Get the allocator of this pointer.
-    Allocator& GetAllocator() { return *allocator_; }
-
-    //!@name Tokens
-    //@{
-
-    //! Get the token array (const version only).
-    const Token* GetTokens() const { return tokens_; }
-
-    //! Get the number of tokens.
-    size_t GetTokenCount() const { return tokenCount_; }
-
-    //@}
-
-    //!@name Equality/inequality operators
-    //@{
-
-    //! Equality operator.
-    /*!
-        \note When any pointers are invalid, always returns false.
-    */
-    bool operator==(const GenericPointer& rhs) const {
-        if (!IsValid() || !rhs.IsValid() || tokenCount_ != rhs.tokenCount_)
-            return false;
-
-        for (size_t i = 0; i < tokenCount_; i++) {
-            if (tokens_[i].index != rhs.tokens_[i].index ||
-                tokens_[i].length != rhs.tokens_[i].length || 
-                (tokens_[i].length != 0 && std::memcmp(tokens_[i].name, rhs.tokens_[i].name, sizeof(Ch)* tokens_[i].length) != 0))
-            {
-                return false;
-            }
-        }
-
-        return true;
-    }
-
-    //! Inequality operator.
-    /*!
-        \note When any pointers are invalid, always returns true.
-    */
-    bool operator!=(const GenericPointer& rhs) const { return !(*this == rhs); }
-
-    //@}
-
-    //!@name Stringify
-    //@{
-
-    //! Stringify the pointer into string representation.
-    /*!
-        \tparam OutputStream Type of output stream.
-        \param os The output stream.
-    */
-    template<typename OutputStream>
-    bool Stringify(OutputStream& os) const {
-        return Stringify<false, OutputStream>(os);
-    }
-
-    //! Stringify the pointer into URI fragment representation.
-    /*!
-        \tparam OutputStream Type of output stream.
-        \param os The output stream.
-    */
-    template<typename OutputStream>
-    bool StringifyUriFragment(OutputStream& os) const {
-        return Stringify<true, OutputStream>(os);
-    }
-
-    //@}
-
-    //!@name Create value
-    //@{
-
-    //! Create a value in a subtree.
-    /*!
-        If the value is not exist, it creates all parent values and a JSON Null value.
-        So it always succeed and return the newly created or existing value.
-
-        Remind that it may change types of parents according to tokens, so it 
-        potentially removes previously stored values. For example, if a document 
-        was an array, and "/foo" is used to create a value, then the document 
-        will be changed to an object, and all existing array elements are lost.
-
-        \param root Root value of a DOM subtree to be resolved. It can be any value other than document root.
-        \param allocator Allocator for creating the values if the specified value or its parents are not exist.
-        \param alreadyExist If non-null, it stores whether the resolved value is already exist.
-        \return The resolved newly created (a JSON Null value), or already exists value.
-    */
-    ValueType& Create(ValueType& root, typename ValueType::AllocatorType& allocator, bool* alreadyExist = 0) const {
-        RAPIDJSON_ASSERT(IsValid());
-        ValueType* v = &root;
-        bool exist = true;
-        for (const Token *t = tokens_; t != tokens_ + tokenCount_; ++t) {
-            if (v->IsArray() && t->name[0] == '-' && t->length == 1) {
-                v->PushBack(ValueType().Move(), allocator);
-                v = &((*v)[v->Size() - 1]);
-                exist = false;
-            }
-            else {
-                if (t->index == kPointerInvalidIndex) { // must be object name
-                    if (!v->IsObject())
-                        v->SetObject(); // Change to Object
-                }
-                else { // object name or array index
-                    if (!v->IsArray() && !v->IsObject())
-                        v->SetArray(); // Change to Array
-                }
-
-                if (v->IsArray()) {
-                    if (t->index >= v->Size()) {
-                        v->Reserve(t->index + 1, allocator);
-                        while (t->index >= v->Size())
-                            v->PushBack(ValueType().Move(), allocator);
-                        exist = false;
-                    }
-                    v = &((*v)[t->index]);
-                }
-                else {
-                    typename ValueType::MemberIterator m = v->FindMember(GenericStringRef<Ch>(t->name, t->length));
-                    if (m == v->MemberEnd()) {
-                        v->AddMember(ValueType(t->name, t->length, allocator).Move(), ValueType().Move(), allocator);
-                        v = &(--v->MemberEnd())->value; // Assumes AddMember() appends at the end
-                        exist = false;
-                    }
-                    else
-                        v = &m->value;
-                }
-            }
-        }
-
-        if (alreadyExist)
-            *alreadyExist = exist;
-
-        return *v;
-    }
-
-    //! Creates a value in a document.
-    /*!
-        \param document A document to be resolved.
-        \param alreadyExist If non-null, it stores whether the resolved value is already exist.
-        \return The resolved newly created, or already exists value.
-    */
-    template <typename stackAllocator>
-    ValueType& Create(GenericDocument<EncodingType, typename ValueType::AllocatorType, stackAllocator>& document, bool* alreadyExist = 0) const {
-        return Create(document, document.GetAllocator(), alreadyExist);
-    }
-
-    //@}
-
-    //!@name Query value
-    //@{
-
-    //! Query a value in a subtree.
-    /*!
-        \param root Root value of a DOM sub-tree to be resolved. It can be any value other than document root.
-        \param unresolvedTokenIndex If the pointer cannot resolve a token in the pointer, this parameter can obtain the index of unresolved token.
-        \return Pointer to the value if it can be resolved. Otherwise null.
-
-        \note
-        There are only 3 situations when a value cannot be resolved:
-        1. A value in the path is not an array nor object.
-        2. An object value does not contain the token.
-        3. A token is out of range of an array value.
-
-        Use unresolvedTokenIndex to retrieve the token index.
-    */
-    ValueType* Get(ValueType& root, size_t* unresolvedTokenIndex = 0) const {
-        RAPIDJSON_ASSERT(IsValid());
-        ValueType* v = &root;
-        for (const Token *t = tokens_; t != tokens_ + tokenCount_; ++t) {
-            switch (v->GetType()) {
-            case kObjectType:
-                {
-                    typename ValueType::MemberIterator m = v->FindMember(GenericStringRef<Ch>(t->name, t->length));
-                    if (m == v->MemberEnd())
-                        break;
-                    v = &m->value;
-                }
-                continue;
-            case kArrayType:
-                if (t->index == kPointerInvalidIndex || t->index >= v->Size())
-                    break;
-                v = &((*v)[t->index]);
-                continue;
-            default:
-                break;
-            }
-
-            // Error: unresolved token
-            if (unresolvedTokenIndex)
-                *unresolvedTokenIndex = static_cast<size_t>(t - tokens_);
-            return 0;
-        }
-        return v;
-    }
-
-    //! Query a const value in a const subtree.
-    /*!
-        \param root Root value of a DOM sub-tree to be resolved. It can be any value other than document root.
-        \return Pointer to the value if it can be resolved. Otherwise null.
-    */
-    const ValueType* Get(const ValueType& root, size_t* unresolvedTokenIndex = 0) const { 
-        return Get(const_cast<ValueType&>(root), unresolvedTokenIndex);
-    }
-
-    //@}
-
-    //!@name Query a value with default
-    //@{
-
-    //! Query a value in a subtree with default value.
-    /*!
-        Similar to Get(), but if the specified value do not exists, it creates all parents and clone the default value.
-        So that this function always succeed.
-
-        \param root Root value of a DOM sub-tree to be resolved. It can be any value other than document root.
-        \param defaultValue Default value to be cloned if the value was not exists.
-        \param allocator Allocator for creating the values if the specified value or its parents are not exist.
-        \see Create()
-    */
-    ValueType& GetWithDefault(ValueType& root, const ValueType& defaultValue, typename ValueType::AllocatorType& allocator) const {
-        bool alreadyExist;
-        Value& v = Create(root, allocator, &alreadyExist);
-        return alreadyExist ? v : v.CopyFrom(defaultValue, allocator);
-    }
-
-    //! Query a value in a subtree with default null-terminated string.
-    ValueType& GetWithDefault(ValueType& root, const Ch* defaultValue, typename ValueType::AllocatorType& allocator) const {
-        bool alreadyExist;
-        Value& v = Create(root, allocator, &alreadyExist);
-        return alreadyExist ? v : v.SetString(defaultValue, allocator);
-    }
-
-#if RAPIDJSON_HAS_STDSTRING
-    //! Query a value in a subtree with default std::basic_string.
-    ValueType& GetWithDefault(ValueType& root, const std::basic_string<Ch>& defaultValue, typename ValueType::AllocatorType& allocator) const {
-        bool alreadyExist;
-        Value& v = Create(root, allocator, &alreadyExist);
-        return alreadyExist ? v : v.SetString(defaultValue, allocator);
-    }
-#endif
-
-    //! Query a value in a subtree with default primitive value.
-    /*!
-        \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t, \c bool
-    */
-    template <typename T>
-    RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr<internal::IsPointer<T>, internal::IsGenericValue<T> >), (ValueType&))
-    GetWithDefault(ValueType& root, T defaultValue, typename ValueType::AllocatorType& allocator) const {
-        return GetWithDefault(root, ValueType(defaultValue).Move(), allocator);
-    }
-
-    //! Query a value in a document with default value.
-    template <typename stackAllocator>
-    ValueType& GetWithDefault(GenericDocument<EncodingType, typename ValueType::AllocatorType, stackAllocator>& document, const ValueType& defaultValue) const {
-        return GetWithDefault(document, defaultValue, document.GetAllocator());
-    }
-
-    //! Query a value in a document with default null-terminated string.
-    template <typename stackAllocator>
-    ValueType& GetWithDefault(GenericDocument<EncodingType, typename ValueType::AllocatorType, stackAllocator>& document, const Ch* defaultValue) const {
-        return GetWithDefault(document, defaultValue, document.GetAllocator());
-    }
-    
-#if RAPIDJSON_HAS_STDSTRING
-    //! Query a value in a document with default std::basic_string.
-    template <typename stackAllocator>
-    ValueType& GetWithDefault(GenericDocument<EncodingType, typename ValueType::AllocatorType, stackAllocator>& document, const std::basic_string<Ch>& defaultValue) const {
-        return GetWithDefault(document, defaultValue, document.GetAllocator());
-    }
-#endif
-
-    //! Query a value in a document with default primitive value.
-    /*!
-        \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t, \c bool
-    */
-    template <typename T, typename stackAllocator>
-    RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr<internal::IsPointer<T>, internal::IsGenericValue<T> >), (ValueType&))
-    GetWithDefault(GenericDocument<EncodingType, typename ValueType::AllocatorType, stackAllocator>& document, T defaultValue) const {
-        return GetWithDefault(document, defaultValue, document.GetAllocator());
-    }
-
-    //@}
-
-    //!@name Set a value
-    //@{
-
-    //! Set a value in a subtree, with move semantics.
-    /*!
-        It creates all parents if they are not exist or types are different to the tokens.
-        So this function always succeeds but potentially remove existing values.
-
-        \param root Root value of a DOM sub-tree to be resolved. It can be any value other than document root.
-        \param value Value to be set.
-        \param allocator Allocator for creating the values if the specified value or its parents are not exist.
-        \see Create()
-    */
-    ValueType& Set(ValueType& root, ValueType& value, typename ValueType::AllocatorType& allocator) const {
-        return Create(root, allocator) = value;
-    }
-
-    //! Set a value in a subtree, with copy semantics.
-    ValueType& Set(ValueType& root, const ValueType& value, typename ValueType::AllocatorType& allocator) const {
-        return Create(root, allocator).CopyFrom(value, allocator);
-    }
-
-    //! Set a null-terminated string in a subtree.
-    ValueType& Set(ValueType& root, const Ch* value, typename ValueType::AllocatorType& allocator) const {
-        return Create(root, allocator) = ValueType(value, allocator).Move();
-    }
-
-#if RAPIDJSON_HAS_STDSTRING
-    //! Set a std::basic_string in a subtree.
-    ValueType& Set(ValueType& root, const std::basic_string<Ch>& value, typename ValueType::AllocatorType& allocator) const {
-        return Create(root, allocator) = ValueType(value, allocator).Move();
-    }
-#endif
-
-    //! Set a primitive value in a subtree.
-    /*!
-        \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t, \c bool
-    */
-    template <typename T>
-    RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr<internal::IsPointer<T>, internal::IsGenericValue<T> >), (ValueType&))
-    Set(ValueType& root, T value, typename ValueType::AllocatorType& allocator) const {
-        return Create(root, allocator) = ValueType(value).Move();
-    }
-
-    //! Set a value in a document, with move semantics.
-    template <typename stackAllocator>
-    ValueType& Set(GenericDocument<EncodingType, typename ValueType::AllocatorType, stackAllocator>& document, ValueType& value) const {
-        return Create(document) = value;
-    }
-
-    //! Set a value in a document, with copy semantics.
-    template <typename stackAllocator>
-    ValueType& Set(GenericDocument<EncodingType, typename ValueType::AllocatorType, stackAllocator>& document, const ValueType& value) const {
-        return Create(document).CopyFrom(value, document.GetAllocator());
-    }
-
-    //! Set a null-terminated string in a document.
-    template <typename stackAllocator>
-    ValueType& Set(GenericDocument<EncodingType, typename ValueType::AllocatorType, stackAllocator>& document, const Ch* value) const {
-        return Create(document) = ValueType(value, document.GetAllocator()).Move();
-    }
-
-#if RAPIDJSON_HAS_STDSTRING
-    //! Sets a std::basic_string in a document.
-    template <typename stackAllocator>
-    ValueType& Set(GenericDocument<EncodingType, typename ValueType::AllocatorType, stackAllocator>& document, const std::basic_string<Ch>& value) const {
-        return Create(document) = ValueType(value, document.GetAllocator()).Move();
-    }
-#endif
-
-    //! Set a primitive value in a document.
-    /*!
-    \tparam T Either \ref Type, \c int, \c unsigned, \c int64_t, \c uint64_t, \c bool
-    */
-    template <typename T, typename stackAllocator>
-    RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr<internal::IsPointer<T>, internal::IsGenericValue<T> >), (ValueType&))
-        Set(GenericDocument<EncodingType, typename ValueType::AllocatorType, stackAllocator>& document, T value) const {
-            return Create(document) = value;
-    }
-
-    //@}
-
-    //!@name Swap a value
-    //@{
-
-    //! Swap a value with a value in a subtree.
-    /*!
-        It creates all parents if they are not exist or types are different to the tokens.
-        So this function always succeeds but potentially remove existing values.
-
-        \param root Root value of a DOM sub-tree to be resolved. It can be any value other than document root.
-        \param value Value to be swapped.
-        \param allocator Allocator for creating the values if the specified value or its parents are not exist.
-        \see Create()
-    */
-    ValueType& Swap(ValueType& root, ValueType& value, typename ValueType::AllocatorType& allocator) const {
-        return Create(root, allocator).Swap(value);
-    }
-
-    //! Swap a value with a value in a document.
-    template <typename stackAllocator>
-    ValueType& Swap(GenericDocument<EncodingType, typename ValueType::AllocatorType, stackAllocator>& document, ValueType& value) const {
-        return Create(document).Swap(value);
-    }
-
-    //@}
-
-    //! Erase a value in a subtree.
-    /*!
-        \param root Root value of a DOM sub-tree to be resolved. It can be any value other than document root.
-        \return Whether the resolved value is found and erased.
-
-        \note Erasing with an empty pointer \c Pointer(""), i.e. the root, always fail and return false.
-    */
-    bool Erase(ValueType& root) const {
-        RAPIDJSON_ASSERT(IsValid());
-        if (tokenCount_ == 0) // Cannot erase the root
-            return false;
-
-        ValueType* v = &root;
-        const Token* last = tokens_ + (tokenCount_ - 1);
-        for (const Token *t = tokens_; t != last; ++t) {
-            switch (v->GetType()) {
-            case kObjectType:
-                {
-                    typename ValueType::MemberIterator m = v->FindMember(GenericStringRef<Ch>(t->name, t->length));
-                    if (m == v->MemberEnd())
-                        return false;
-                    v = &m->value;
-                }
-                break;
-            case kArrayType:
-                if (t->index == kPointerInvalidIndex || t->index >= v->Size())
-                    return false;
-                v = &((*v)[t->index]);
-                break;
-            default:
-                return false;
-            }
-        }
-
-        switch (v->GetType()) {
-        case kObjectType:
-            return v->EraseMember(GenericStringRef<Ch>(last->name, last->length));
-        case kArrayType:
-            if (last->index == kPointerInvalidIndex || last->index >= v->Size())
-                return false;
-            v->Erase(v->Begin() + last->index);
-            return true;
-        default:
-            return false;
-        }
-    }
-
-private:
-    //! Clone the content from rhs to this.
-    /*!
-        \param rhs Source pointer.
-        \param extraToken Extra tokens to be allocated.
-        \param extraNameBufferSize Extra name buffer size (in number of Ch) to be allocated.
-        \return Start of non-occupied name buffer, for storing extra names.
-    */
-    Ch* CopyFromRaw(const GenericPointer& rhs, size_t extraToken = 0, size_t extraNameBufferSize = 0) {
-        if (!allocator_) // allocator is independently owned.
-            ownAllocator_ = allocator_ = RAPIDJSON_NEW(Allocator());
-
-        size_t nameBufferSize = rhs.tokenCount_; // null terminators for tokens
-        for (Token *t = rhs.tokens_; t != rhs.tokens_ + rhs.tokenCount_; ++t)
-            nameBufferSize += t->length;
-
-        tokenCount_ = rhs.tokenCount_ + extraToken;
-        tokens_ = static_cast<Token *>(allocator_->Malloc(tokenCount_ * sizeof(Token) + (nameBufferSize + extraNameBufferSize) * sizeof(Ch)));
-        nameBuffer_ = reinterpret_cast<Ch *>(tokens_ + tokenCount_);
-        std::memcpy(tokens_, rhs.tokens_, rhs.tokenCount_ * sizeof(Token));
-        std::memcpy(nameBuffer_, rhs.nameBuffer_, nameBufferSize * sizeof(Ch));
-
-        // Adjust pointers to name buffer
-        std::ptrdiff_t diff = nameBuffer_ - rhs.nameBuffer_;
-        for (Token *t = tokens_; t != tokens_ + rhs.tokenCount_; ++t)
-            t->name += diff;
-
-        return nameBuffer_ + nameBufferSize;
-    }
-
-    //! Check whether a character should be percent-encoded.
-    /*!
-        According to RFC 3986 2.3 Unreserved Characters.
-        \param c The character (code unit) to be tested.
-    */
-    bool NeedPercentEncode(Ch c) const {
-        return !((c >= '0' && c <= '9') || (c >= 'A' && c <='Z') || (c >= 'a' && c <= 'z') || c == '-' || c == '.' || c == '_' || c =='~');
-    }
-
-    //! Parse a JSON String or its URI fragment representation into tokens.
-#ifndef __clang__ // -Wdocumentation
-    /*!
-        \param source Either a JSON Pointer string, or its URI fragment representation. Not need to be null terminated.
-        \param length Length of the source string.
-        \note Source cannot be JSON String Representation of JSON Pointer, e.g. In "/\u0000", \u0000 will not be unescaped.
-    */
-#endif
-    void Parse(const Ch* source, size_t length) {
-        RAPIDJSON_ASSERT(source != NULL);
-        RAPIDJSON_ASSERT(nameBuffer_ == 0);
-        RAPIDJSON_ASSERT(tokens_ == 0);
-
-        // Create own allocator if user did not supply.
-        if (!allocator_)
-            ownAllocator_ = allocator_ = RAPIDJSON_NEW(Allocator());
-
-        // Count number of '/' as tokenCount
-        tokenCount_ = 0;
-        for (const Ch* s = source; s != source + length; s++) 
-            if (*s == '/')
-                tokenCount_++;
-
-        Token* token = tokens_ = static_cast<Token *>(allocator_->Malloc(tokenCount_ * sizeof(Token) + length * sizeof(Ch)));
-        Ch* name = nameBuffer_ = reinterpret_cast<Ch *>(tokens_ + tokenCount_);
-        size_t i = 0;
-
-        // Detect if it is a URI fragment
-        bool uriFragment = false;
-        if (source[i] == '#') {
-            uriFragment = true;
-            i++;
-        }
-
-        if (i != length && source[i] != '/') {
-            parseErrorCode_ = kPointerParseErrorTokenMustBeginWithSolidus;
-            goto error;
-        }
-
-        while (i < length) {
-            RAPIDJSON_ASSERT(source[i] == '/');
-            i++; // consumes '/'
-
-            token->name = name;
-            bool isNumber = true;
-
-            while (i < length && source[i] != '/') {
-                Ch c = source[i];
-                if (uriFragment) {
-                    // Decoding percent-encoding for URI fragment
-                    if (c == '%') {
-                        PercentDecodeStream is(&source[i], source + length);
-                        GenericInsituStringStream<EncodingType> os(name);
-                        Ch* begin = os.PutBegin();
-                        if (!Transcoder<UTF8<>, EncodingType>().Validate(is, os) || !is.IsValid()) {
-                            parseErrorCode_ = kPointerParseErrorInvalidPercentEncoding;
-                            goto error;
-                        }
-                        size_t len = os.PutEnd(begin);
-                        i += is.Tell() - 1;
-                        if (len == 1)
-                            c = *name;
-                        else {
-                            name += len;
-                            isNumber = false;
-                            i++;
-                            continue;
-                        }
-                    }
-                    else if (NeedPercentEncode(c)) {
-                        parseErrorCode_ = kPointerParseErrorCharacterMustPercentEncode;
-                        goto error;
-                    }
-                }
-
-                i++;
-                
-                // Escaping "~0" -> '~', "~1" -> '/'
-                if (c == '~') {
-                    if (i < length) {
-                        c = source[i];
-                        if (c == '0')       c = '~';
-                        else if (c == '1')  c = '/';
-                        else {
-                            parseErrorCode_ = kPointerParseErrorInvalidEscape;
-                            goto error;
-                        }
-                        i++;
-                    }
-                    else {
-                        parseErrorCode_ = kPointerParseErrorInvalidEscape;
-                        goto error;
-                    }
-                }
-
-                // First check for index: all of characters are digit
-                if (c < '0' || c > '9')
-                    isNumber = false;
-
-                *name++ = c;
-            }
-            token->length = static_cast<SizeType>(name - token->name);
-            if (token->length == 0)
-                isNumber = false;
-            *name++ = '\0'; // Null terminator
-
-            // Second check for index: more than one digit cannot have leading zero
-            if (isNumber && token->length > 1 && token->name[0] == '0')
-                isNumber = false;
-
-            // String to SizeType conversion
-            SizeType n = 0;
-            if (isNumber) {
-                for (size_t j = 0; j < token->length; j++) {
-                    SizeType m = n * 10 + static_cast<SizeType>(token->name[j] - '0');
-                    if (m < n) {   // overflow detection
-                        isNumber = false;
-                        break;
-                    }
-                    n = m;
-                }
-            }
-
-            token->index = isNumber ? n : kPointerInvalidIndex;
-            token++;
-        }
-
-        RAPIDJSON_ASSERT(name <= nameBuffer_ + length); // Should not overflow buffer
-        parseErrorCode_ = kPointerParseErrorNone;
-        return;
-
-    error:
-        Allocator::Free(tokens_);
-        nameBuffer_ = 0;
-        tokens_ = 0;
-        tokenCount_ = 0;
-        parseErrorOffset_ = i;
-        return;
-    }
-
-    //! Stringify to string or URI fragment representation.
-    /*!
-        \tparam uriFragment True for stringifying to URI fragment representation. False for string representation.
-        \tparam OutputStream type of output stream.
-        \param os The output stream.
-    */
-    template<bool uriFragment, typename OutputStream>
-    bool Stringify(OutputStream& os) const {
-        RAPIDJSON_ASSERT(IsValid());
-
-        if (uriFragment)
-            os.Put('#');
-
-        for (Token *t = tokens_; t != tokens_ + tokenCount_; ++t) {
-            os.Put('/');
-            for (size_t j = 0; j < t->length; j++) {
-                Ch c = t->name[j];
-                if (c == '~') {
-                    os.Put('~');
-                    os.Put('0');
-                }
-                else if (c == '/') {
-                    os.Put('~');
-                    os.Put('1');
-                }
-                else if (uriFragment && NeedPercentEncode(c)) { 
-                    // Transcode to UTF8 sequence
-                    GenericStringStream<typename ValueType::EncodingType> source(&t->name[j]);
-                    PercentEncodeStream<OutputStream> target(os);
-                    if (!Transcoder<EncodingType, UTF8<> >().Validate(source, target))
-                        return false;
-                    j += source.Tell() - 1;
-                }
-                else
-                    os.Put(c);
-            }
-        }
-        return true;
-    }
-
-    //! A helper stream for decoding a percent-encoded sequence into code unit.
-    /*!
-        This stream decodes %XY triplet into code unit (0-255).
-        If it encounters invalid characters, it sets output code unit as 0 and 
-        mark invalid, and to be checked by IsValid().
-    */
-    class PercentDecodeStream {
-    public:
-        typedef typename ValueType::Ch Ch;
-
-        //! Constructor
-        /*!
-            \param source Start of the stream
-            \param end Past-the-end of the stream.
-        */
-        PercentDecodeStream(const Ch* source, const Ch* end) : src_(source), head_(source), end_(end), valid_(true) {}
-
-        Ch Take() {
-            if (*src_ != '%' || src_ + 3 > end_) { // %XY triplet
-                valid_ = false;
-                return 0;
-            }
-            src_++;
-            Ch c = 0;
-            for (int j = 0; j < 2; j++) {
-                c = static_cast<Ch>(c << 4);
-                Ch h = *src_;
-                if      (h >= '0' && h <= '9') c = static_cast<Ch>(c + h - '0');
-                else if (h >= 'A' && h <= 'F') c = static_cast<Ch>(c + h - 'A' + 10);
-                else if (h >= 'a' && h <= 'f') c = static_cast<Ch>(c + h - 'a' + 10);
-                else {
-                    valid_ = false;
-                    return 0;
-                }
-                src_++;
-            }
-            return c;
-        }
-
-        size_t Tell() const { return static_cast<size_t>(src_ - head_); }
-        bool IsValid() const { return valid_; }
-
-    private:
-        const Ch* src_;     //!< Current read position.
-        const Ch* head_;    //!< Original head of the string.
-        const Ch* end_;     //!< Past-the-end position.
-        bool valid_;        //!< Whether the parsing is valid.
-    };
-
-    //! A helper stream to encode character (UTF-8 code unit) into percent-encoded sequence.
-    template <typename OutputStream>
-    class PercentEncodeStream {
-    public:
-        PercentEncodeStream(OutputStream& os) : os_(os) {}
-        void Put(char c) { // UTF-8 must be byte
-            unsigned char u = static_cast<unsigned char>(c);
-            static const char hexDigits[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
-            os_.Put('%');
-            os_.Put(hexDigits[u >> 4]);
-            os_.Put(hexDigits[u & 15]);
-        }
-    private:
-        OutputStream& os_;
-    };
-
-    Allocator* allocator_;                  //!< The current allocator. It is either user-supplied or equal to ownAllocator_.
-    Allocator* ownAllocator_;               //!< Allocator owned by this Pointer.
-    Ch* nameBuffer_;                        //!< A buffer containing all names in tokens.
-    Token* tokens_;                         //!< A list of tokens.
-    size_t tokenCount_;                     //!< Number of tokens in tokens_.
-    size_t parseErrorOffset_;               //!< Offset in code unit when parsing fail.
-    PointerParseErrorCode parseErrorCode_;  //!< Parsing error code.
-};
-
-//! GenericPointer for Value (UTF-8, default allocator).
-typedef GenericPointer<Value> Pointer;
-
-//!@name Helper functions for GenericPointer
-//@{
-
-//////////////////////////////////////////////////////////////////////////////
-
-template <typename T>
-typename T::ValueType& CreateValueByPointer(T& root, const GenericPointer<typename T::ValueType>& pointer, typename T::AllocatorType& a) {
-    return pointer.Create(root, a);
-}
-
-template <typename T, typename CharType, size_t N>
-typename T::ValueType& CreateValueByPointer(T& root, const CharType(&source)[N], typename T::AllocatorType& a) {
-    return GenericPointer<typename T::ValueType>(source, N - 1).Create(root, a);
-}
-
-// No allocator parameter
-
-template <typename DocumentType>
-typename DocumentType::ValueType& CreateValueByPointer(DocumentType& document, const GenericPointer<typename DocumentType::ValueType>& pointer) {
-    return pointer.Create(document);
-}
-
-template <typename DocumentType, typename CharType, size_t N>
-typename DocumentType::ValueType& CreateValueByPointer(DocumentType& document, const CharType(&source)[N]) {
-    return GenericPointer<typename DocumentType::ValueType>(source, N - 1).Create(document);
-}
-
-//////////////////////////////////////////////////////////////////////////////
-
-template <typename T>
-typename T::ValueType* GetValueByPointer(T& root, const GenericPointer<typename T::ValueType>& pointer, size_t* unresolvedTokenIndex = 0) {
-    return pointer.Get(root, unresolvedTokenIndex);
-}
-
-template <typename T>
-const typename T::ValueType* GetValueByPointer(const T& root, const GenericPointer<typename T::ValueType>& pointer, size_t* unresolvedTokenIndex = 0) {
-    return pointer.Get(root, unresolvedTokenIndex);
-}
-
-template <typename T, typename CharType, size_t N>
-typename T::ValueType* GetValueByPointer(T& root, const CharType (&source)[N], size_t* unresolvedTokenIndex = 0) {
-    return GenericPointer<typename T::ValueType>(source, N - 1).Get(root, unresolvedTokenIndex);
-}
-
-template <typename T, typename CharType, size_t N>
-const typename T::ValueType* GetValueByPointer(const T& root, const CharType(&source)[N], size_t* unresolvedTokenIndex = 0) {
-    return GenericPointer<typename T::ValueType>(source, N - 1).Get(root, unresolvedTokenIndex);
-}
-
-//////////////////////////////////////////////////////////////////////////////
-
-template <typename T>
-typename T::ValueType& GetValueByPointerWithDefault(T& root, const GenericPointer<typename T::ValueType>& pointer, const typename T::ValueType& defaultValue, typename T::AllocatorType& a) {
-    return pointer.GetWithDefault(root, defaultValue, a);
-}
-
-template <typename T>
-typename T::ValueType& GetValueByPointerWithDefault(T& root, const GenericPointer<typename T::ValueType>& pointer, const typename T::Ch* defaultValue, typename T::AllocatorType& a) {
-    return pointer.GetWithDefault(root, defaultValue, a);
-}
-
-#if RAPIDJSON_HAS_STDSTRING
-template <typename T>
-typename T::ValueType& GetValueByPointerWithDefault(T& root, const GenericPointer<typename T::ValueType>& pointer, const std::basic_string<typename T::Ch>& defaultValue, typename T::AllocatorType& a) {
-    return pointer.GetWithDefault(root, defaultValue, a);
-}
-#endif
-
-template <typename T, typename T2>
-RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr<internal::IsPointer<T2>, internal::IsGenericValue<T2> >), (typename T::ValueType&))
-GetValueByPointerWithDefault(T& root, const GenericPointer<typename T::ValueType>& pointer, T2 defaultValue, typename T::AllocatorType& a) {
-    return pointer.GetWithDefault(root, defaultValue, a);
-}
-
-template <typename T, typename CharType, size_t N>
-typename T::ValueType& GetValueByPointerWithDefault(T& root, const CharType(&source)[N], const typename T::ValueType& defaultValue, typename T::AllocatorType& a) {
-    return GenericPointer<typename T::ValueType>(source, N - 1).GetWithDefault(root, defaultValue, a);
-}
-
-template <typename T, typename CharType, size_t N>
-typename T::ValueType& GetValueByPointerWithDefault(T& root, const CharType(&source)[N], const typename T::Ch* defaultValue, typename T::AllocatorType& a) {
-    return GenericPointer<typename T::ValueType>(source, N - 1).GetWithDefault(root, defaultValue, a);
-}
-
-#if RAPIDJSON_HAS_STDSTRING
-template <typename T, typename CharType, size_t N>
-typename T::ValueType& GetValueByPointerWithDefault(T& root, const CharType(&source)[N], const std::basic_string<typename T::Ch>& defaultValue, typename T::AllocatorType& a) {
-    return GenericPointer<typename T::ValueType>(source, N - 1).GetWithDefault(root, defaultValue, a);
-}
-#endif
-
-template <typename T, typename CharType, size_t N, typename T2>
-RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr<internal::IsPointer<T2>, internal::IsGenericValue<T2> >), (typename T::ValueType&))
-GetValueByPointerWithDefault(T& root, const CharType(&source)[N], T2 defaultValue, typename T::AllocatorType& a) {
-    return GenericPointer<typename T::ValueType>(source, N - 1).GetWithDefault(root, defaultValue, a);
-}
-
-// No allocator parameter
-
-template <typename DocumentType>
-typename DocumentType::ValueType& GetValueByPointerWithDefault(DocumentType& document, const GenericPointer<typename DocumentType::ValueType>& pointer, const typename DocumentType::ValueType& defaultValue) {
-    return pointer.GetWithDefault(document, defaultValue);
-}
-
-template <typename DocumentType>
-typename DocumentType::ValueType& GetValueByPointerWithDefault(DocumentType& document, const GenericPointer<typename DocumentType::ValueType>& pointer, const typename DocumentType::Ch* defaultValue) {
-    return pointer.GetWithDefault(document, defaultValue);
-}
-
-#if RAPIDJSON_HAS_STDSTRING
-template <typename DocumentType>
-typename DocumentType::ValueType& GetValueByPointerWithDefault(DocumentType& document, const GenericPointer<typename DocumentType::ValueType>& pointer, const std::basic_string<typename DocumentType::Ch>& defaultValue) {
-    return pointer.GetWithDefault(document, defaultValue);
-}
-#endif
-
-template <typename DocumentType, typename T2>
-RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr<internal::IsPointer<T2>, internal::IsGenericValue<T2> >), (typename DocumentType::ValueType&))
-GetValueByPointerWithDefault(DocumentType& document, const GenericPointer<typename DocumentType::ValueType>& pointer, T2 defaultValue) {
-    return pointer.GetWithDefault(document, defaultValue);
-}
-
-template <typename DocumentType, typename CharType, size_t N>
-typename DocumentType::ValueType& GetValueByPointerWithDefault(DocumentType& document, const CharType(&source)[N], const typename DocumentType::ValueType& defaultValue) {
-    return GenericPointer<typename DocumentType::ValueType>(source, N - 1).GetWithDefault(document, defaultValue);
-}
-
-template <typename DocumentType, typename CharType, size_t N>
-typename DocumentType::ValueType& GetValueByPointerWithDefault(DocumentType& document, const CharType(&source)[N], const typename DocumentType::Ch* defaultValue) {
-    return GenericPointer<typename DocumentType::ValueType>(source, N - 1).GetWithDefault(document, defaultValue);
-}
-
-#if RAPIDJSON_HAS_STDSTRING
-template <typename DocumentType, typename CharType, size_t N>
-typename DocumentType::ValueType& GetValueByPointerWithDefault(DocumentType& document, const CharType(&source)[N], const std::basic_string<typename DocumentType::Ch>& defaultValue) {
-    return GenericPointer<typename DocumentType::ValueType>(source, N - 1).GetWithDefault(document, defaultValue);
-}
-#endif
-
-template <typename DocumentType, typename CharType, size_t N, typename T2>
-RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr<internal::IsPointer<T2>, internal::IsGenericValue<T2> >), (typename DocumentType::ValueType&))
-GetValueByPointerWithDefault(DocumentType& document, const CharType(&source)[N], T2 defaultValue) {
-    return GenericPointer<typename DocumentType::ValueType>(source, N - 1).GetWithDefault(document, defaultValue);
-}
-
-//////////////////////////////////////////////////////////////////////////////
-
-template <typename T>
-typename T::ValueType& SetValueByPointer(T& root, const GenericPointer<typename T::ValueType>& pointer, typename T::ValueType& value, typename T::AllocatorType& a) {
-    return pointer.Set(root, value, a);
-}
-
-template <typename T>
-typename T::ValueType& SetValueByPointer(T& root, const GenericPointer<typename T::ValueType>& pointer, const typename T::ValueType& value, typename T::AllocatorType& a) {
-    return pointer.Set(root, value, a);
-}
-
-template <typename T>
-typename T::ValueType& SetValueByPointer(T& root, const GenericPointer<typename T::ValueType>& pointer, const typename T::Ch* value, typename T::AllocatorType& a) {
-    return pointer.Set(root, value, a);
-}
-
-#if RAPIDJSON_HAS_STDSTRING
-template <typename T>
-typename T::ValueType& SetValueByPointer(T& root, const GenericPointer<typename T::ValueType>& pointer, const std::basic_string<typename T::Ch>& value, typename T::AllocatorType& a) {
-    return pointer.Set(root, value, a);
-}
-#endif
-
-template <typename T, typename T2>
-RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr<internal::IsPointer<T2>, internal::IsGenericValue<T2> >), (typename T::ValueType&))
-SetValueByPointer(T& root, const GenericPointer<typename T::ValueType>& pointer, T2 value, typename T::AllocatorType& a) {
-    return pointer.Set(root, value, a);
-}
-
-template <typename T, typename CharType, size_t N>
-typename T::ValueType& SetValueByPointer(T& root, const CharType(&source)[N], typename T::ValueType& value, typename T::AllocatorType& a) {
-    return GenericPointer<typename T::ValueType>(source, N - 1).Set(root, value, a);
-}
-
-template <typename T, typename CharType, size_t N>
-typename T::ValueType& SetValueByPointer(T& root, const CharType(&source)[N], const typename T::ValueType& value, typename T::AllocatorType& a) {
-    return GenericPointer<typename T::ValueType>(source, N - 1).Set(root, value, a);
-}
-
-template <typename T, typename CharType, size_t N>
-typename T::ValueType& SetValueByPointer(T& root, const CharType(&source)[N], const typename T::Ch* value, typename T::AllocatorType& a) {
-    return GenericPointer<typename T::ValueType>(source, N - 1).Set(root, value, a);
-}
-
-#if RAPIDJSON_HAS_STDSTRING
-template <typename T, typename CharType, size_t N>
-typename T::ValueType& SetValueByPointer(T& root, const CharType(&source)[N], const std::basic_string<typename T::Ch>& value, typename T::AllocatorType& a) {
-    return GenericPointer<typename T::ValueType>(source, N - 1).Set(root, value, a);
-}
-#endif
-
-template <typename T, typename CharType, size_t N, typename T2>
-RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr<internal::IsPointer<T2>, internal::IsGenericValue<T2> >), (typename T::ValueType&))
-SetValueByPointer(T& root, const CharType(&source)[N], T2 value, typename T::AllocatorType& a) {
-    return GenericPointer<typename T::ValueType>(source, N - 1).Set(root, value, a);
-}
-
-// No allocator parameter
-
-template <typename DocumentType>
-typename DocumentType::ValueType& SetValueByPointer(DocumentType& document, const GenericPointer<typename DocumentType::ValueType>& pointer, typename DocumentType::ValueType& value) {
-    return pointer.Set(document, value);
-}
-
-template <typename DocumentType>
-typename DocumentType::ValueType& SetValueByPointer(DocumentType& document, const GenericPointer<typename DocumentType::ValueType>& pointer, const typename DocumentType::ValueType& value) {
-    return pointer.Set(document, value);
-}
-
-template <typename DocumentType>
-typename DocumentType::ValueType& SetValueByPointer(DocumentType& document, const GenericPointer<typename DocumentType::ValueType>& pointer, const typename DocumentType::Ch* value) {
-    return pointer.Set(document, value);
-}
-
-#if RAPIDJSON_HAS_STDSTRING
-template <typename DocumentType>
-typename DocumentType::ValueType& SetValueByPointer(DocumentType& document, const GenericPointer<typename DocumentType::ValueType>& pointer, const std::basic_string<typename DocumentType::Ch>& value) {
-    return pointer.Set(document, value);
-}
-#endif
-
-template <typename DocumentType, typename T2>
-RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr<internal::IsPointer<T2>, internal::IsGenericValue<T2> >), (typename DocumentType::ValueType&))
-SetValueByPointer(DocumentType& document, const GenericPointer<typename DocumentType::ValueType>& pointer, T2 value) {
-    return pointer.Set(document, value);
-}
-
-template <typename DocumentType, typename CharType, size_t N>
-typename DocumentType::ValueType& SetValueByPointer(DocumentType& document, const CharType(&source)[N], typename DocumentType::ValueType& value) {
-    return GenericPointer<typename DocumentType::ValueType>(source, N - 1).Set(document, value);
-}
-
-template <typename DocumentType, typename CharType, size_t N>
-typename DocumentType::ValueType& SetValueByPointer(DocumentType& document, const CharType(&source)[N], const typename DocumentType::ValueType& value) {
-    return GenericPointer<typename DocumentType::ValueType>(source, N - 1).Set(document, value);
-}
-
-template <typename DocumentType, typename CharType, size_t N>
-typename DocumentType::ValueType& SetValueByPointer(DocumentType& document, const CharType(&source)[N], const typename DocumentType::Ch* value) {
-    return GenericPointer<typename DocumentType::ValueType>(source, N - 1).Set(document, value);
-}
-
-#if RAPIDJSON_HAS_STDSTRING
-template <typename DocumentType, typename CharType, size_t N>
-typename DocumentType::ValueType& SetValueByPointer(DocumentType& document, const CharType(&source)[N], const std::basic_string<typename DocumentType::Ch>& value) {
-    return GenericPointer<typename DocumentType::ValueType>(source, N - 1).Set(document, value);
-}
-#endif
-
-template <typename DocumentType, typename CharType, size_t N, typename T2>
-RAPIDJSON_DISABLEIF_RETURN((internal::OrExpr<internal::IsPointer<T2>, internal::IsGenericValue<T2> >), (typename DocumentType::ValueType&))
-SetValueByPointer(DocumentType& document, const CharType(&source)[N], T2 value) {
-    return GenericPointer<typename DocumentType::ValueType>(source, N - 1).Set(document, value);
-}
-
-//////////////////////////////////////////////////////////////////////////////
-
-template <typename T>
-typename T::ValueType& SwapValueByPointer(T& root, const GenericPointer<typename T::ValueType>& pointer, typename T::ValueType& value, typename T::AllocatorType& a) {
-    return pointer.Swap(root, value, a);
-}
-
-template <typename T, typename CharType, size_t N>
-typename T::ValueType& SwapValueByPointer(T& root, const CharType(&source)[N], typename T::ValueType& value, typename T::AllocatorType& a) {
-    return GenericPointer<typename T::ValueType>(source, N - 1).Swap(root, value, a);
-}
-
-template <typename DocumentType>
-typename DocumentType::ValueType& SwapValueByPointer(DocumentType& document, const GenericPointer<typename DocumentType::ValueType>& pointer, typename DocumentType::ValueType& value) {
-    return pointer.Swap(document, value);
-}
-
-template <typename DocumentType, typename CharType, size_t N>
-typename DocumentType::ValueType& SwapValueByPointer(DocumentType& document, const CharType(&source)[N], typename DocumentType::ValueType& value) {
-    return GenericPointer<typename DocumentType::ValueType>(source, N - 1).Swap(document, value);
-}
-
-//////////////////////////////////////////////////////////////////////////////
-
-template <typename T>
-bool EraseValueByPointer(T& root, const GenericPointer<typename T::ValueType>& pointer) {
-    return pointer.Erase(root);
-}
-
-template <typename T, typename CharType, size_t N>
-bool EraseValueByPointer(T& root, const CharType(&source)[N]) {
-    return GenericPointer<typename T::ValueType>(source, N - 1).Erase(root);
-}
-
-//@}
-
-RAPIDJSON_NAMESPACE_END
-
-#ifdef __clang__
-RAPIDJSON_DIAG_POP
-#endif
-
-#endif // RAPIDJSON_POINTER_H_
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/prettywriter.h b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/prettywriter.h
deleted file mode 100644
index 75dc474..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/prettywriter.h
+++ /dev/null
@@ -1,249 +0,0 @@
-// Tencent is pleased to support the open source community by making RapidJSON available.
-// 
-// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
-//
-// Licensed under the MIT License (the "License"); you may not use this file except
-// in compliance with the License. You may obtain a copy of the License at
-//
-// http://opensource.org/licenses/MIT
-//
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
-// specific language governing permissions and limitations under the License.
-
-#ifndef RAPIDJSON_PRETTYWRITER_H_
-#define RAPIDJSON_PRETTYWRITER_H_
-
-#include "writer.h"
-
-#ifdef __GNUC__
-RAPIDJSON_DIAG_PUSH
-RAPIDJSON_DIAG_OFF(effc++)
-#endif
-
-RAPIDJSON_NAMESPACE_BEGIN
-
-//! Combination of PrettyWriter format flags.
-/*! \see PrettyWriter::SetFormatOptions
- */
-enum PrettyFormatOptions {
-    kFormatDefault = 0,         //!< Default pretty formatting.
-    kFormatSingleLineArray = 1  //!< Format arrays on a single line.
-};
-
-//! Writer with indentation and spacing.
-/*!
-    \tparam OutputStream Type of ouptut os.
-    \tparam SourceEncoding Encoding of source string.
-    \tparam TargetEncoding Encoding of output stream.
-    \tparam StackAllocator Type of allocator for allocating memory of stack.
-*/
-template<typename OutputStream, typename SourceEncoding = UTF8<>, typename TargetEncoding = UTF8<>, typename StackAllocator = CrtAllocator, unsigned writeFlags = kWriteDefaultFlags>
-class PrettyWriter : public Writer<OutputStream, SourceEncoding, TargetEncoding, StackAllocator, writeFlags> {
-public:
-    typedef Writer<OutputStream, SourceEncoding, TargetEncoding, StackAllocator> Base;
-    typedef typename Base::Ch Ch;
-
-    //! Constructor
-    /*! \param os Output stream.
-        \param allocator User supplied allocator. If it is null, it will create a private one.
-        \param levelDepth Initial capacity of stack.
-    */
-    explicit PrettyWriter(OutputStream& os, StackAllocator* allocator = 0, size_t levelDepth = Base::kDefaultLevelDepth) : 
-        Base(os, allocator, levelDepth), indentChar_(' '), indentCharCount_(4), formatOptions_(kFormatDefault) {}
-
-
-    explicit PrettyWriter(StackAllocator* allocator = 0, size_t levelDepth = Base::kDefaultLevelDepth) : 
-        Base(allocator, levelDepth), indentChar_(' '), indentCharCount_(4) {}
-
-    //! Set custom indentation.
-    /*! \param indentChar       Character for indentation. Must be whitespace character (' ', '\\t', '\\n', '\\r').
-        \param indentCharCount  Number of indent characters for each indentation level.
-        \note The default indentation is 4 spaces.
-    */
-    PrettyWriter& SetIndent(Ch indentChar, unsigned indentCharCount) {
-        RAPIDJSON_ASSERT(indentChar == ' ' || indentChar == '\t' || indentChar == '\n' || indentChar == '\r');
-        indentChar_ = indentChar;
-        indentCharCount_ = indentCharCount;
-        return *this;
-    }
-
-    //! Set pretty writer formatting options.
-    /*! \param options Formatting options.
-    */
-    PrettyWriter& SetFormatOptions(PrettyFormatOptions options) {
-        formatOptions_ = options;
-        return *this;
-    }
-
-    /*! @name Implementation of Handler
-        \see Handler
-    */
-    //@{
-
-    bool Null()                 { PrettyPrefix(kNullType);   return Base::WriteNull(); }
-    bool Bool(bool b)           { PrettyPrefix(b ? kTrueType : kFalseType); return Base::WriteBool(b); }
-    bool Int(int i)             { PrettyPrefix(kNumberType); return Base::WriteInt(i); }
-    bool Uint(unsigned u)       { PrettyPrefix(kNumberType); return Base::WriteUint(u); }
-    bool Int64(int64_t i64)     { PrettyPrefix(kNumberType); return Base::WriteInt64(i64); }
-    bool Uint64(uint64_t u64)   { PrettyPrefix(kNumberType); return Base::WriteUint64(u64);  }
-    bool Double(double d)       { PrettyPrefix(kNumberType); return Base::WriteDouble(d); }
-
-    bool RawNumber(const Ch* str, SizeType length, bool copy = false) {
-        (void)copy;
-        PrettyPrefix(kNumberType);
-        return Base::WriteString(str, length);
-    }
-
-    bool String(const Ch* str, SizeType length, bool copy = false) {
-        (void)copy;
-        PrettyPrefix(kStringType);
-        return Base::WriteString(str, length);
-    }
-
-#if RAPIDJSON_HAS_STDSTRING
-    bool String(const std::basic_string<Ch>& str) {
-        return String(str.data(), SizeType(str.size()));
-    }
-#endif
-
-    bool StartObject() {
-        PrettyPrefix(kObjectType);
-        new (Base::level_stack_.template Push<typename Base::Level>()) typename Base::Level(false);
-        return Base::WriteStartObject();
-    }
-
-    bool Key(const Ch* str, SizeType length, bool copy = false) { return String(str, length, copy); }
-	
-    bool EndObject(SizeType memberCount = 0) {
-        (void)memberCount;
-        RAPIDJSON_ASSERT(Base::level_stack_.GetSize() >= sizeof(typename Base::Level));
-        RAPIDJSON_ASSERT(!Base::level_stack_.template Top<typename Base::Level>()->inArray);
-        bool empty = Base::level_stack_.template Pop<typename Base::Level>(1)->valueCount == 0;
-
-        if (!empty) {
-            Base::os_->Put('\n');
-            WriteIndent();
-        }
-        bool ret = Base::WriteEndObject();
-        (void)ret;
-        RAPIDJSON_ASSERT(ret == true);
-        if (Base::level_stack_.Empty()) // end of json text
-            Base::os_->Flush();
-        return true;
-    }
-
-    bool StartArray() {
-        PrettyPrefix(kArrayType);
-        new (Base::level_stack_.template Push<typename Base::Level>()) typename Base::Level(true);
-        return Base::WriteStartArray();
-    }
-
-    bool EndArray(SizeType memberCount = 0) {
-        (void)memberCount;
-        RAPIDJSON_ASSERT(Base::level_stack_.GetSize() >= sizeof(typename Base::Level));
-        RAPIDJSON_ASSERT(Base::level_stack_.template Top<typename Base::Level>()->inArray);
-        bool empty = Base::level_stack_.template Pop<typename Base::Level>(1)->valueCount == 0;
-
-        if (!empty && !(formatOptions_ & kFormatSingleLineArray)) {
-            Base::os_->Put('\n');
-            WriteIndent();
-        }
-        bool ret = Base::WriteEndArray();
-        (void)ret;
-        RAPIDJSON_ASSERT(ret == true);
-        if (Base::level_stack_.Empty()) // end of json text
-            Base::os_->Flush();
-        return true;
-    }
-
-    //@}
-
-    /*! @name Convenience extensions */
-    //@{
-
-    //! Simpler but slower overload.
-    bool String(const Ch* str) { return String(str, internal::StrLen(str)); }
-    bool Key(const Ch* str) { return Key(str, internal::StrLen(str)); }
-
-    //@}
-
-    //! Write a raw JSON value.
-    /*!
-        For user to write a stringified JSON as a value.
-
-        \param json A well-formed JSON value. It should not contain null character within [0, length - 1] range.
-        \param length Length of the json.
-        \param type Type of the root of json.
-        \note When using PrettyWriter::RawValue(), the result json may not be indented correctly.
-    */
-    bool RawValue(const Ch* json, size_t length, Type type) { PrettyPrefix(type); return Base::WriteRawValue(json, length); }
-
-protected:
-    void PrettyPrefix(Type type) {
-        (void)type;
-        if (Base::level_stack_.GetSize() != 0) { // this value is not at root
-            typename Base::Level* level = Base::level_stack_.template Top<typename Base::Level>();
-
-            if (level->inArray) {
-                if (level->valueCount > 0) {
-                    Base::os_->Put(','); // add comma if it is not the first element in array
-                    if (formatOptions_ & kFormatSingleLineArray)
-                        Base::os_->Put(' ');
-                }
-
-                if (!(formatOptions_ & kFormatSingleLineArray)) {
-                    Base::os_->Put('\n');
-                    WriteIndent();
-                }
-            }
-            else {  // in object
-                if (level->valueCount > 0) {
-                    if (level->valueCount % 2 == 0) {
-                        Base::os_->Put(',');
-                        Base::os_->Put('\n');
-                    }
-                    else {
-                        Base::os_->Put(':');
-                        Base::os_->Put(' ');
-                    }
-                }
-                else
-                    Base::os_->Put('\n');
-
-                if (level->valueCount % 2 == 0)
-                    WriteIndent();
-            }
-            if (!level->inArray && level->valueCount % 2 == 0)
-                RAPIDJSON_ASSERT(type == kStringType);  // if it's in object, then even number should be a name
-            level->valueCount++;
-        }
-        else {
-            RAPIDJSON_ASSERT(!Base::hasRoot_);  // Should only has one and only one root.
-            Base::hasRoot_ = true;
-        }
-    }
-
-    void WriteIndent()  {
-        size_t count = (Base::level_stack_.GetSize() / sizeof(typename Base::Level)) * indentCharCount_;
-        PutN(*Base::os_, static_cast<typename TargetEncoding::Ch>(indentChar_), count);
-    }
-
-    Ch indentChar_;
-    unsigned indentCharCount_;
-    PrettyFormatOptions formatOptions_;
-
-private:
-    // Prohibit copy constructor & assignment operator.
-    PrettyWriter(const PrettyWriter&);
-    PrettyWriter& operator=(const PrettyWriter&);
-};
-
-RAPIDJSON_NAMESPACE_END
-
-#ifdef __GNUC__
-RAPIDJSON_DIAG_POP
-#endif
-
-#endif // RAPIDJSON_RAPIDJSON_H_
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/rapidjson.h b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/rapidjson.h
deleted file mode 100644
index c441064..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/rapidjson.h
+++ /dev/null
@@ -1,611 +0,0 @@
-// Tencent is pleased to support the open source community by making RapidJSON available.
-// 
-// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
-//
-// Licensed under the MIT License (the "License"); you may not use this file except
-// in compliance with the License. You may obtain a copy of the License at
-//
-// http://opensource.org/licenses/MIT
-//
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
-// specific language governing permissions and limitations under the License.
-
-#ifndef RAPIDJSON_RAPIDJSON_H_
-#define RAPIDJSON_RAPIDJSON_H_
-
-/*!\file rapidjson.h
-    \brief common definitions and configuration
-    
-    \see RAPIDJSON_CONFIG
- */
-
-/*! \defgroup RAPIDJSON_CONFIG RapidJSON configuration
-    \brief Configuration macros for library features
-
-    Some RapidJSON features are configurable to adapt the library to a wide
-    variety of platforms, environments and usage scenarios.  Most of the
-    features can be configured in terms of overriden or predefined
-    preprocessor macros at compile-time.
-
-    Some additional customization is available in the \ref RAPIDJSON_ERRORS APIs.
-
-    \note These macros should be given on the compiler command-line
-          (where applicable)  to avoid inconsistent values when compiling
-          different translation units of a single application.
- */
-
-#include <cstdlib>  // malloc(), realloc(), free(), size_t
-#include <cstring>  // memset(), memcpy(), memmove(), memcmp()
-
-///////////////////////////////////////////////////////////////////////////////
-// RAPIDJSON_VERSION_STRING
-//
-// ALWAYS synchronize the following 3 macros with corresponding variables in /CMakeLists.txt.
-//
-
-//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN
-// token stringification
-#define RAPIDJSON_STRINGIFY(x) RAPIDJSON_DO_STRINGIFY(x)
-#define RAPIDJSON_DO_STRINGIFY(x) #x
-//!@endcond
-
-/*! \def RAPIDJSON_MAJOR_VERSION
-    \ingroup RAPIDJSON_CONFIG
-    \brief Major version of RapidJSON in integer.
-*/
-/*! \def RAPIDJSON_MINOR_VERSION
-    \ingroup RAPIDJSON_CONFIG
-    \brief Minor version of RapidJSON in integer.
-*/
-/*! \def RAPIDJSON_PATCH_VERSION
-    \ingroup RAPIDJSON_CONFIG
-    \brief Patch version of RapidJSON in integer.
-*/
-/*! \def RAPIDJSON_VERSION_STRING
-    \ingroup RAPIDJSON_CONFIG
-    \brief Version of RapidJSON in "<major>.<minor>.<patch>" string format.
-*/
-#define RAPIDJSON_MAJOR_VERSION 1
-#define RAPIDJSON_MINOR_VERSION 0
-#define RAPIDJSON_PATCH_VERSION 2
-#define RAPIDJSON_VERSION_STRING \
-    RAPIDJSON_STRINGIFY(RAPIDJSON_MAJOR_VERSION.RAPIDJSON_MINOR_VERSION.RAPIDJSON_PATCH_VERSION)
-
-///////////////////////////////////////////////////////////////////////////////
-// RAPIDJSON_NAMESPACE_(BEGIN|END)
-/*! \def RAPIDJSON_NAMESPACE
-    \ingroup RAPIDJSON_CONFIG
-    \brief   provide custom rapidjson namespace
-
-    In order to avoid symbol clashes and/or "One Definition Rule" errors
-    between multiple inclusions of (different versions of) RapidJSON in
-    a single binary, users can customize the name of the main RapidJSON
-    namespace.
-
-    In case of a single nesting level, defining \c RAPIDJSON_NAMESPACE
-    to a custom name (e.g. \c MyRapidJSON) is sufficient.  If multiple
-    levels are needed, both \ref RAPIDJSON_NAMESPACE_BEGIN and \ref
-    RAPIDJSON_NAMESPACE_END need to be defined as well:
-
-    \code
-    // in some .cpp file
-    #define RAPIDJSON_NAMESPACE my::rapidjson
-    #define RAPIDJSON_NAMESPACE_BEGIN namespace my { namespace rapidjson {
-    #define RAPIDJSON_NAMESPACE_END   } }
-    #include "rapidjson/..."
-    \endcode
-
-    \see rapidjson
- */
-/*! \def RAPIDJSON_NAMESPACE_BEGIN
-    \ingroup RAPIDJSON_CONFIG
-    \brief   provide custom rapidjson namespace (opening expression)
-    \see RAPIDJSON_NAMESPACE
-*/
-/*! \def RAPIDJSON_NAMESPACE_END
-    \ingroup RAPIDJSON_CONFIG
-    \brief   provide custom rapidjson namespace (closing expression)
-    \see RAPIDJSON_NAMESPACE
-*/
-#ifndef RAPIDJSON_NAMESPACE
-#define RAPIDJSON_NAMESPACE rapidjson
-#endif
-#ifndef RAPIDJSON_NAMESPACE_BEGIN
-#define RAPIDJSON_NAMESPACE_BEGIN namespace RAPIDJSON_NAMESPACE {
-#endif
-#ifndef RAPIDJSON_NAMESPACE_END
-#define RAPIDJSON_NAMESPACE_END }
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
-// RAPIDJSON_HAS_STDSTRING
-
-#ifndef RAPIDJSON_HAS_STDSTRING
-#ifdef RAPIDJSON_DOXYGEN_RUNNING
-#define RAPIDJSON_HAS_STDSTRING 1 // force generation of documentation
-#else
-#define RAPIDJSON_HAS_STDSTRING 0 // no std::string support by default
-#endif
-/*! \def RAPIDJSON_HAS_STDSTRING
-    \ingroup RAPIDJSON_CONFIG
-    \brief Enable RapidJSON support for \c std::string
-
-    By defining this preprocessor symbol to \c 1, several convenience functions for using
-    \ref rapidjson::GenericValue with \c std::string are enabled, especially
-    for construction and comparison.
-
-    \hideinitializer
-*/
-#endif // !defined(RAPIDJSON_HAS_STDSTRING)
-
-#if RAPIDJSON_HAS_STDSTRING
-#include <string>
-#endif // RAPIDJSON_HAS_STDSTRING
-
-///////////////////////////////////////////////////////////////////////////////
-// RAPIDJSON_NO_INT64DEFINE
-
-/*! \def RAPIDJSON_NO_INT64DEFINE
-    \ingroup RAPIDJSON_CONFIG
-    \brief Use external 64-bit integer types.
-
-    RapidJSON requires the 64-bit integer types \c int64_t and  \c uint64_t types
-    to be available at global scope.
-
-    If users have their own definition, define RAPIDJSON_NO_INT64DEFINE to
-    prevent RapidJSON from defining its own types.
-*/
-#ifndef RAPIDJSON_NO_INT64DEFINE
-//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN
-#if defined(_MSC_VER) && (_MSC_VER < 1800)	// Visual Studio 2013
-#include "msinttypes/stdint.h"
-#include "msinttypes/inttypes.h"
-#else
-// Other compilers should have this.
-#include <stdint.h>
-#include <inttypes.h>
-#endif
-//!@endcond
-#ifdef RAPIDJSON_DOXYGEN_RUNNING
-#define RAPIDJSON_NO_INT64DEFINE
-#endif
-#endif // RAPIDJSON_NO_INT64TYPEDEF
-
-///////////////////////////////////////////////////////////////////////////////
-// RAPIDJSON_FORCEINLINE
-
-#ifndef RAPIDJSON_FORCEINLINE
-//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN
-#if defined(_MSC_VER) && defined(NDEBUG)
-#define RAPIDJSON_FORCEINLINE __forceinline
-#elif defined(__GNUC__) && __GNUC__ >= 4 && defined(NDEBUG)
-#define RAPIDJSON_FORCEINLINE __attribute__((always_inline))
-#else
-#define RAPIDJSON_FORCEINLINE
-#endif
-//!@endcond
-#endif // RAPIDJSON_FORCEINLINE
-
-///////////////////////////////////////////////////////////////////////////////
-// RAPIDJSON_ENDIAN
-#define RAPIDJSON_LITTLEENDIAN  0   //!< Little endian machine
-#define RAPIDJSON_BIGENDIAN     1   //!< Big endian machine
-
-//! Endianness of the machine.
-/*!
-    \def RAPIDJSON_ENDIAN
-    \ingroup RAPIDJSON_CONFIG
-
-    GCC 4.6 provided macro for detecting endianness of the target machine. But other
-    compilers may not have this. User can define RAPIDJSON_ENDIAN to either
-    \ref RAPIDJSON_LITTLEENDIAN or \ref RAPIDJSON_BIGENDIAN.
-
-    Default detection implemented with reference to
-    \li https://gcc.gnu.org/onlinedocs/gcc-4.6.0/cpp/Common-Predefined-Macros.html
-    \li http://www.boost.org/doc/libs/1_42_0/boost/detail/endian.hpp
-*/
-#ifndef RAPIDJSON_ENDIAN
-// Detect with GCC 4.6's macro
-#  ifdef __BYTE_ORDER__
-#    if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
-#      define RAPIDJSON_ENDIAN RAPIDJSON_LITTLEENDIAN
-#    elif __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
-#      define RAPIDJSON_ENDIAN RAPIDJSON_BIGENDIAN
-#    else
-#      error Unknown machine endianess detected. User needs to define RAPIDJSON_ENDIAN.
-#    endif // __BYTE_ORDER__
-// Detect with GLIBC's endian.h
-#  elif defined(__GLIBC__)
-#    include <endian.h>
-#    if (__BYTE_ORDER == __LITTLE_ENDIAN)
-#      define RAPIDJSON_ENDIAN RAPIDJSON_LITTLEENDIAN
-#    elif (__BYTE_ORDER == __BIG_ENDIAN)
-#      define RAPIDJSON_ENDIAN RAPIDJSON_BIGENDIAN
-#    else
-#      error Unknown machine endianess detected. User needs to define RAPIDJSON_ENDIAN.
-#   endif // __GLIBC__
-// Detect with _LITTLE_ENDIAN and _BIG_ENDIAN macro
-#  elif defined(_LITTLE_ENDIAN) && !defined(_BIG_ENDIAN)
-#    define RAPIDJSON_ENDIAN RAPIDJSON_LITTLEENDIAN
-#  elif defined(_BIG_ENDIAN) && !defined(_LITTLE_ENDIAN)
-#    define RAPIDJSON_ENDIAN RAPIDJSON_BIGENDIAN
-// Detect with architecture macros
-#  elif defined(__sparc) || defined(__sparc__) || defined(_POWER) || defined(__powerpc__) || defined(__ppc__) || defined(__hpux) || defined(__hppa) || defined(_MIPSEB) || defined(_POWER) || defined(__s390__)
-#    define RAPIDJSON_ENDIAN RAPIDJSON_BIGENDIAN
-#  elif defined(__i386__) || defined(__alpha__) || defined(__ia64) || defined(__ia64__) || defined(_M_IX86) || defined(_M_IA64) || defined(_M_ALPHA) || defined(__amd64) || defined(__amd64__) || defined(_M_AMD64) || defined(__x86_64) || defined(__x86_64__) || defined(_M_X64) || defined(__bfin__)
-#    define RAPIDJSON_ENDIAN RAPIDJSON_LITTLEENDIAN
-#  elif defined(_MSC_VER) && defined(_M_ARM)
-#    define RAPIDJSON_ENDIAN RAPIDJSON_LITTLEENDIAN
-#  elif defined(RAPIDJSON_DOXYGEN_RUNNING)
-#    define RAPIDJSON_ENDIAN
-#  else
-#    error Unknown machine endianess detected. User needs to define RAPIDJSON_ENDIAN.   
-#  endif
-#endif // RAPIDJSON_ENDIAN
-
-///////////////////////////////////////////////////////////////////////////////
-// RAPIDJSON_64BIT
-
-//! Whether using 64-bit architecture
-#ifndef RAPIDJSON_64BIT
-#if defined(__LP64__) || defined(_WIN64) || defined(__EMSCRIPTEN__)
-#define RAPIDJSON_64BIT 1
-#else
-#define RAPIDJSON_64BIT 0
-#endif
-#endif // RAPIDJSON_64BIT
-
-///////////////////////////////////////////////////////////////////////////////
-// RAPIDJSON_ALIGN
-
-//! Data alignment of the machine.
-/*! \ingroup RAPIDJSON_CONFIG
-    \param x pointer to align
-
-    Some machines require strict data alignment. Currently the default uses 4 bytes
-    alignment on 32-bit platforms and 8 bytes alignment for 64-bit platforms.
-    User can customize by defining the RAPIDJSON_ALIGN function macro.
-*/
-#ifndef RAPIDJSON_ALIGN
-#if RAPIDJSON_64BIT == 1
-#define RAPIDJSON_ALIGN(x) (((x) + static_cast<uint64_t>(7u)) & ~static_cast<uint64_t>(7u))
-#else
-#define RAPIDJSON_ALIGN(x) (((x) + 3u) & ~3u)
-#endif
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
-// RAPIDJSON_UINT64_C2
-
-//! Construct a 64-bit literal by a pair of 32-bit integer.
-/*!
-    64-bit literal with or without ULL suffix is prone to compiler warnings.
-    UINT64_C() is C macro which cause compilation problems.
-    Use this macro to define 64-bit constants by a pair of 32-bit integer.
-*/
-#ifndef RAPIDJSON_UINT64_C2
-#define RAPIDJSON_UINT64_C2(high32, low32) ((static_cast<uint64_t>(high32) << 32) | static_cast<uint64_t>(low32))
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
-// RAPIDJSON_48BITPOINTER_OPTIMIZATION
-
-//! Use only lower 48-bit address for some pointers.
-/*!
-    \ingroup RAPIDJSON_CONFIG
-
-    This optimization uses the fact that current X86-64 architecture only implement lower 48-bit virtual address.
-    The higher 16-bit can be used for storing other data.
-    \c GenericValue uses this optimization to reduce its size form 24 bytes to 16 bytes in 64-bit architecture.
-*/
-#ifndef RAPIDJSON_48BITPOINTER_OPTIMIZATION
-#if defined(__amd64__) || defined(__amd64) || defined(__x86_64__) || defined(__x86_64) || defined(_M_X64) || defined(_M_AMD64)
-#define RAPIDJSON_48BITPOINTER_OPTIMIZATION 1
-#else
-#define RAPIDJSON_48BITPOINTER_OPTIMIZATION 0
-#endif
-#endif // RAPIDJSON_48BITPOINTER_OPTIMIZATION
-
-#if RAPIDJSON_48BITPOINTER_OPTIMIZATION == 1
-#if RAPIDJSON_64BIT != 1
-#error RAPIDJSON_48BITPOINTER_OPTIMIZATION can only be set to 1 when RAPIDJSON_64BIT=1
-#endif
-#define RAPIDJSON_SETPOINTER(type, p, x) (p = reinterpret_cast<type *>((reinterpret_cast<uintptr_t>(p) & static_cast<uintptr_t>(RAPIDJSON_UINT64_C2(0xFFFF0000, 0x00000000))) | reinterpret_cast<uintptr_t>(reinterpret_cast<const void*>(x))))
-#define RAPIDJSON_GETPOINTER(type, p) (reinterpret_cast<type *>(reinterpret_cast<uintptr_t>(p) & static_cast<uintptr_t>(RAPIDJSON_UINT64_C2(0x0000FFFF, 0xFFFFFFFF))))
-#else
-#define RAPIDJSON_SETPOINTER(type, p, x) (p = (x))
-#define RAPIDJSON_GETPOINTER(type, p) (p)
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
-// RAPIDJSON_SSE2/RAPIDJSON_SSE42/RAPIDJSON_SIMD
-
-/*! \def RAPIDJSON_SIMD
-    \ingroup RAPIDJSON_CONFIG
-    \brief Enable SSE2/SSE4.2 optimization.
-
-    RapidJSON supports optimized implementations for some parsing operations
-    based on the SSE2 or SSE4.2 SIMD extensions on modern Intel-compatible
-    processors.
-
-    To enable these optimizations, two different symbols can be defined;
-    \code
-    // Enable SSE2 optimization.
-    #define RAPIDJSON_SSE2
-
-    // Enable SSE4.2 optimization.
-    #define RAPIDJSON_SSE42
-    \endcode
-
-    \c RAPIDJSON_SSE42 takes precedence, if both are defined.
-
-    If any of these symbols is defined, RapidJSON defines the macro
-    \c RAPIDJSON_SIMD to indicate the availability of the optimized code.
-*/
-#if defined(RAPIDJSON_SSE2) || defined(RAPIDJSON_SSE42) \
-    || defined(RAPIDJSON_DOXYGEN_RUNNING)
-#define RAPIDJSON_SIMD
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
-// RAPIDJSON_NO_SIZETYPEDEFINE
-
-#ifndef RAPIDJSON_NO_SIZETYPEDEFINE
-/*! \def RAPIDJSON_NO_SIZETYPEDEFINE
-    \ingroup RAPIDJSON_CONFIG
-    \brief User-provided \c SizeType definition.
-
-    In order to avoid using 32-bit size types for indexing strings and arrays,
-    define this preprocessor symbol and provide the type rapidjson::SizeType
-    before including RapidJSON:
-    \code
-    #define RAPIDJSON_NO_SIZETYPEDEFINE
-    namespace rapidjson { typedef ::std::size_t SizeType; }
-    #include "rapidjson/..."
-    \endcode
-
-    \see rapidjson::SizeType
-*/
-#ifdef RAPIDJSON_DOXYGEN_RUNNING
-#define RAPIDJSON_NO_SIZETYPEDEFINE
-#endif
-RAPIDJSON_NAMESPACE_BEGIN
-//! Size type (for string lengths, array sizes, etc.)
-/*! RapidJSON uses 32-bit array/string indices even on 64-bit platforms,
-    instead of using \c size_t. Users may override the SizeType by defining
-    \ref RAPIDJSON_NO_SIZETYPEDEFINE.
-*/
-typedef unsigned SizeType;
-RAPIDJSON_NAMESPACE_END
-#endif
-
-// always import std::size_t to rapidjson namespace
-RAPIDJSON_NAMESPACE_BEGIN
-using std::size_t;
-RAPIDJSON_NAMESPACE_END
-
-///////////////////////////////////////////////////////////////////////////////
-// RAPIDJSON_ASSERT
-
-//! Assertion.
-/*! \ingroup RAPIDJSON_CONFIG
-    By default, rapidjson uses C \c assert() for internal assertions.
-    User can override it by defining RAPIDJSON_ASSERT(x) macro.
-
-    \note Parsing errors are handled and can be customized by the
-          \ref RAPIDJSON_ERRORS APIs.
-*/
-#ifndef RAPIDJSON_ASSERT
-#include <cassert>
-#define RAPIDJSON_ASSERT(x) assert(x)
-#endif // RAPIDJSON_ASSERT
-
-///////////////////////////////////////////////////////////////////////////////
-// RAPIDJSON_STATIC_ASSERT
-
-// Adopt from boost
-#ifndef RAPIDJSON_STATIC_ASSERT
-#ifndef __clang__
-//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN
-#endif
-RAPIDJSON_NAMESPACE_BEGIN
-template <bool x> struct STATIC_ASSERTION_FAILURE;
-template <> struct STATIC_ASSERTION_FAILURE<true> { enum { value = 1 }; };
-template<int x> struct StaticAssertTest {};
-RAPIDJSON_NAMESPACE_END
-
-#define RAPIDJSON_JOIN(X, Y) RAPIDJSON_DO_JOIN(X, Y)
-#define RAPIDJSON_DO_JOIN(X, Y) RAPIDJSON_DO_JOIN2(X, Y)
-#define RAPIDJSON_DO_JOIN2(X, Y) X##Y
-
-#if defined(__GNUC__)
-#define RAPIDJSON_STATIC_ASSERT_UNUSED_ATTRIBUTE __attribute__((unused))
-#else
-#define RAPIDJSON_STATIC_ASSERT_UNUSED_ATTRIBUTE 
-#endif
-#ifndef __clang__
-//!@endcond
-#endif
-
-/*! \def RAPIDJSON_STATIC_ASSERT
-    \brief (Internal) macro to check for conditions at compile-time
-    \param x compile-time condition
-    \hideinitializer
- */
-#define RAPIDJSON_STATIC_ASSERT(x) \
-    typedef ::RAPIDJSON_NAMESPACE::StaticAssertTest< \
-      sizeof(::RAPIDJSON_NAMESPACE::STATIC_ASSERTION_FAILURE<bool(x) >)> \
-    RAPIDJSON_JOIN(StaticAssertTypedef, __LINE__) RAPIDJSON_STATIC_ASSERT_UNUSED_ATTRIBUTE
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
-// RAPIDJSON_LIKELY, RAPIDJSON_UNLIKELY
-
-//! Compiler branching hint for expression with high probability to be true.
-/*!
-    \ingroup RAPIDJSON_CONFIG
-    \param x Boolean expression likely to be true.
-*/
-#ifndef RAPIDJSON_LIKELY
-#if defined(__GNUC__) || defined(__clang__)
-#define RAPIDJSON_LIKELY(x) __builtin_expect(!!(x), 1)
-#else
-#define RAPIDJSON_LIKELY(x) (x)
-#endif
-#endif
-
-//! Compiler branching hint for expression with low probability to be true.
-/*!
-    \ingroup RAPIDJSON_CONFIG
-    \param x Boolean expression unlikely to be true.
-*/
-#ifndef RAPIDJSON_UNLIKELY
-#if defined(__GNUC__) || defined(__clang__)
-#define RAPIDJSON_UNLIKELY(x) __builtin_expect(!!(x), 0)
-#else
-#define RAPIDJSON_UNLIKELY(x) (x)
-#endif
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
-// Helpers
-
-//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN
-
-#define RAPIDJSON_MULTILINEMACRO_BEGIN do {  
-#define RAPIDJSON_MULTILINEMACRO_END \
-} while((void)0, 0)
-
-// adopted from Boost
-#define RAPIDJSON_VERSION_CODE(x,y,z) \
-  (((x)*100000) + ((y)*100) + (z))
-
-///////////////////////////////////////////////////////////////////////////////
-// RAPIDJSON_DIAG_PUSH/POP, RAPIDJSON_DIAG_OFF
-
-#if defined(__GNUC__)
-#define RAPIDJSON_GNUC \
-    RAPIDJSON_VERSION_CODE(__GNUC__,__GNUC_MINOR__,__GNUC_PATCHLEVEL__)
-#endif
-
-#if defined(__clang__) || (defined(RAPIDJSON_GNUC) && RAPIDJSON_GNUC >= RAPIDJSON_VERSION_CODE(4,2,0))
-
-#define RAPIDJSON_PRAGMA(x) _Pragma(RAPIDJSON_STRINGIFY(x))
-#define RAPIDJSON_DIAG_PRAGMA(x) RAPIDJSON_PRAGMA(GCC diagnostic x)
-#define RAPIDJSON_DIAG_OFF(x) \
-    RAPIDJSON_DIAG_PRAGMA(ignored RAPIDJSON_STRINGIFY(RAPIDJSON_JOIN(-W,x)))
-
-// push/pop support in Clang and GCC>=4.6
-#if defined(__clang__) || (defined(RAPIDJSON_GNUC) && RAPIDJSON_GNUC >= RAPIDJSON_VERSION_CODE(4,6,0))
-#define RAPIDJSON_DIAG_PUSH RAPIDJSON_DIAG_PRAGMA(push)
-#define RAPIDJSON_DIAG_POP  RAPIDJSON_DIAG_PRAGMA(pop)
-#else // GCC >= 4.2, < 4.6
-#define RAPIDJSON_DIAG_PUSH /* ignored */
-#define RAPIDJSON_DIAG_POP /* ignored */
-#endif
-
-#elif defined(_MSC_VER)
-
-// pragma (MSVC specific)
-#define RAPIDJSON_PRAGMA(x) __pragma(x)
-#define RAPIDJSON_DIAG_PRAGMA(x) RAPIDJSON_PRAGMA(warning(x))
-
-#define RAPIDJSON_DIAG_OFF(x) RAPIDJSON_DIAG_PRAGMA(disable: x)
-#define RAPIDJSON_DIAG_PUSH RAPIDJSON_DIAG_PRAGMA(push)
-#define RAPIDJSON_DIAG_POP  RAPIDJSON_DIAG_PRAGMA(pop)
-
-#else
-
-#define RAPIDJSON_DIAG_OFF(x) /* ignored */
-#define RAPIDJSON_DIAG_PUSH   /* ignored */
-#define RAPIDJSON_DIAG_POP    /* ignored */
-
-#endif // RAPIDJSON_DIAG_*
-
-///////////////////////////////////////////////////////////////////////////////
-// C++11 features
-
-#ifndef RAPIDJSON_HAS_CXX11_RVALUE_REFS
-#if defined(__clang__)
-#define RAPIDJSON_HAS_CXX11_RVALUE_REFS __has_feature(cxx_rvalue_references) && \
-    (defined(_LIBCPP_VERSION) || defined(__GLIBCXX__) && __GLIBCXX__ >= 20080306)
-#elif (defined(RAPIDJSON_GNUC) && (RAPIDJSON_GNUC >= RAPIDJSON_VERSION_CODE(4,3,0)) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || \
-      (defined(_MSC_VER) && _MSC_VER >= 1600)
-
-#define RAPIDJSON_HAS_CXX11_RVALUE_REFS 1
-#else
-#define RAPIDJSON_HAS_CXX11_RVALUE_REFS 0
-#endif
-#endif // RAPIDJSON_HAS_CXX11_RVALUE_REFS
-
-#ifndef RAPIDJSON_HAS_CXX11_NOEXCEPT
-#if defined(__clang__)
-#define RAPIDJSON_HAS_CXX11_NOEXCEPT __has_feature(cxx_noexcept)
-#elif (defined(RAPIDJSON_GNUC) && (RAPIDJSON_GNUC >= RAPIDJSON_VERSION_CODE(4,6,0)) && defined(__GXX_EXPERIMENTAL_CXX0X__))
-//    (defined(_MSC_VER) && _MSC_VER >= ????) // not yet supported
-#define RAPIDJSON_HAS_CXX11_NOEXCEPT 1
-#else
-#define RAPIDJSON_HAS_CXX11_NOEXCEPT 0
-#endif
-#endif
-#if RAPIDJSON_HAS_CXX11_NOEXCEPT
-#define RAPIDJSON_NOEXCEPT noexcept
-#else
-#define RAPIDJSON_NOEXCEPT /* noexcept */
-#endif // RAPIDJSON_HAS_CXX11_NOEXCEPT
-
-// no automatic detection, yet
-#ifndef RAPIDJSON_HAS_CXX11_TYPETRAITS
-#define RAPIDJSON_HAS_CXX11_TYPETRAITS 0
-#endif
-
-#ifndef RAPIDJSON_HAS_CXX11_RANGE_FOR
-#if defined(__clang__)
-#define RAPIDJSON_HAS_CXX11_RANGE_FOR __has_feature(cxx_range_for)
-#elif (defined(RAPIDJSON_GNUC) && (RAPIDJSON_GNUC >= RAPIDJSON_VERSION_CODE(4,3,0)) && defined(__GXX_EXPERIMENTAL_CXX0X__)) || \
-      (defined(_MSC_VER) && _MSC_VER >= 1700)
-#define RAPIDJSON_HAS_CXX11_RANGE_FOR 1
-#else
-#define RAPIDJSON_HAS_CXX11_RANGE_FOR 0
-#endif
-#endif // RAPIDJSON_HAS_CXX11_RANGE_FOR
-
-//!@endcond
-
-///////////////////////////////////////////////////////////////////////////////
-// new/delete
-
-#ifndef RAPIDJSON_NEW
-///! customization point for global \c new
-#define RAPIDJSON_NEW(x) new x
-#endif
-#ifndef RAPIDJSON_DELETE
-///! customization point for global \c delete
-#define RAPIDJSON_DELETE(x) delete x
-#endif
-
-///////////////////////////////////////////////////////////////////////////////
-// Type
-
-/*! \namespace rapidjson
-    \brief main RapidJSON namespace
-    \see RAPIDJSON_NAMESPACE
-*/
-RAPIDJSON_NAMESPACE_BEGIN
-
-//! Type of JSON value
-enum Type {
-    kNullType = 0,      //!< null
-    kFalseType = 1,     //!< false
-    kTrueType = 2,      //!< true
-    kObjectType = 3,    //!< object
-    kArrayType = 4,     //!< array 
-    kStringType = 5,    //!< string
-    kNumberType = 6     //!< number
-};
-
-RAPIDJSON_NAMESPACE_END
-
-#endif // RAPIDJSON_RAPIDJSON_H_
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/reader.h b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/reader.h
deleted file mode 100644
index 30251fa..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/reader.h
+++ /dev/null
@@ -1,1852 +0,0 @@
-// Tencent is pleased to support the open source community by making RapidJSON available.
-// 
-// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
-//
-// Licensed under the MIT License (the "License"); you may not use this file except
-// in compliance with the License. You may obtain a copy of the License at
-//
-// http://opensource.org/licenses/MIT
-//
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
-// specific language governing permissions and limitations under the License.
-
-#ifndef RAPIDJSON_READER_H_
-#define RAPIDJSON_READER_H_
-
-/*! \file reader.h */
-
-#include "allocators.h"
-#include "stream.h"
-#include "encodedstream.h"
-#include "internal/meta.h"
-#include "internal/stack.h"
-#include "internal/strtod.h"
-
-#if defined(RAPIDJSON_SIMD) && defined(_MSC_VER)
-#include <intrin.h>
-#pragma intrinsic(_BitScanForward)
-#endif
-#ifdef RAPIDJSON_SSE42
-#include <nmmintrin.h>
-#elif defined(RAPIDJSON_SSE2)
-#include <emmintrin.h>
-#endif
-
-#ifdef _MSC_VER
-RAPIDJSON_DIAG_PUSH
-RAPIDJSON_DIAG_OFF(4127)  // conditional expression is constant
-RAPIDJSON_DIAG_OFF(4702)  // unreachable code
-#endif
-
-#ifdef __clang__
-RAPIDJSON_DIAG_PUSH
-RAPIDJSON_DIAG_OFF(padded)
-RAPIDJSON_DIAG_OFF(switch-enum)
-#endif
-
-#ifdef __GNUC__
-RAPIDJSON_DIAG_PUSH
-RAPIDJSON_DIAG_OFF(effc++)
-#endif
-
-//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN
-#define RAPIDJSON_NOTHING /* deliberately empty */
-#ifndef RAPIDJSON_PARSE_ERROR_EARLY_RETURN
-#define RAPIDJSON_PARSE_ERROR_EARLY_RETURN(value) \
-    RAPIDJSON_MULTILINEMACRO_BEGIN \
-    if (RAPIDJSON_UNLIKELY(HasParseError())) { return value; } \
-    RAPIDJSON_MULTILINEMACRO_END
-#endif
-#define RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID \
-    RAPIDJSON_PARSE_ERROR_EARLY_RETURN(RAPIDJSON_NOTHING)
-//!@endcond
-
-/*! \def RAPIDJSON_PARSE_ERROR_NORETURN
-    \ingroup RAPIDJSON_ERRORS
-    \brief Macro to indicate a parse error.
-    \param parseErrorCode \ref rapidjson::ParseErrorCode of the error
-    \param offset  position of the error in JSON input (\c size_t)
-
-    This macros can be used as a customization point for the internal
-    error handling mechanism of RapidJSON.
-
-    A common usage model is to throw an exception instead of requiring the
-    caller to explicitly check the \ref rapidjson::GenericReader::Parse's
-    return value:
-
-    \code
-    #define RAPIDJSON_PARSE_ERROR_NORETURN(parseErrorCode,offset) \
-       throw ParseException(parseErrorCode, #parseErrorCode, offset)
-
-    #include <stdexcept>               // std::runtime_error
-    #include "rapidjson/error/error.h" // rapidjson::ParseResult
-
-    struct ParseException : std::runtime_error, rapidjson::ParseResult {
-      ParseException(rapidjson::ParseErrorCode code, const char* msg, size_t offset)
-        : std::runtime_error(msg), ParseResult(code, offset) {}
-    };
-
-    #include "rapidjson/reader.h"
-    \endcode
-
-    \see RAPIDJSON_PARSE_ERROR, rapidjson::GenericReader::Parse
- */
-#ifndef RAPIDJSON_PARSE_ERROR_NORETURN
-#define RAPIDJSON_PARSE_ERROR_NORETURN(parseErrorCode, offset) \
-    RAPIDJSON_MULTILINEMACRO_BEGIN \
-    RAPIDJSON_ASSERT(!HasParseError()); /* Error can only be assigned once */ \
-    SetParseError(parseErrorCode, offset); \
-    RAPIDJSON_MULTILINEMACRO_END
-#endif
-
-/*! \def RAPIDJSON_PARSE_ERROR
-    \ingroup RAPIDJSON_ERRORS
-    \brief (Internal) macro to indicate and handle a parse error.
-    \param parseErrorCode \ref rapidjson::ParseErrorCode of the error
-    \param offset  position of the error in JSON input (\c size_t)
-
-    Invokes RAPIDJSON_PARSE_ERROR_NORETURN and stops the parsing.
-
-    \see RAPIDJSON_PARSE_ERROR_NORETURN
-    \hideinitializer
- */
-#ifndef RAPIDJSON_PARSE_ERROR
-#define RAPIDJSON_PARSE_ERROR(parseErrorCode, offset) \
-    RAPIDJSON_MULTILINEMACRO_BEGIN \
-    RAPIDJSON_PARSE_ERROR_NORETURN(parseErrorCode, offset); \
-    RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID; \
-    RAPIDJSON_MULTILINEMACRO_END
-#endif
-
-#include "error/error.h" // ParseErrorCode, ParseResult
-
-RAPIDJSON_NAMESPACE_BEGIN
-
-///////////////////////////////////////////////////////////////////////////////
-// ParseFlag
-
-/*! \def RAPIDJSON_PARSE_DEFAULT_FLAGS 
-    \ingroup RAPIDJSON_CONFIG
-    \brief User-defined kParseDefaultFlags definition.
-
-    User can define this as any \c ParseFlag combinations.
-*/
-#ifndef RAPIDJSON_PARSE_DEFAULT_FLAGS
-#define RAPIDJSON_PARSE_DEFAULT_FLAGS kParseNoFlags
-#endif
-
-//! Combination of parseFlags
-/*! \see Reader::Parse, Document::Parse, Document::ParseInsitu, Document::ParseStream
- */
-enum ParseFlag {
-    kParseNoFlags = 0,              //!< No flags are set.
-    kParseInsituFlag = 1,           //!< In-situ(destructive) parsing.
-    kParseValidateEncodingFlag = 2, //!< Validate encoding of JSON strings.
-    kParseIterativeFlag = 4,        //!< Iterative(constant complexity in terms of function call stack size) parsing.
-    kParseStopWhenDoneFlag = 8,     //!< After parsing a complete JSON root from stream, stop further processing the rest of stream. When this flag is used, parser will not generate kParseErrorDocumentRootNotSingular error.
-    kParseFullPrecisionFlag = 16,   //!< Parse number in full precision (but slower).
-    kParseCommentsFlag = 32,        //!< Allow one-line (//) and multi-line (/**/) comments.
-    kParseNumbersAsStringsFlag = 64,    //!< Parse all numbers (ints/doubles) as strings.
-    kParseTrailingCommasFlag = 128, //!< Allow trailing commas at the end of objects and arrays.
-    kParseDefaultFlags = RAPIDJSON_PARSE_DEFAULT_FLAGS  //!< Default parse flags. Can be customized by defining RAPIDJSON_PARSE_DEFAULT_FLAGS
-};
-
-///////////////////////////////////////////////////////////////////////////////
-// Handler
-
-/*! \class rapidjson::Handler
-    \brief Concept for receiving events from GenericReader upon parsing.
-    The functions return true if no error occurs. If they return false, 
-    the event publisher should terminate the process.
-\code
-concept Handler {
-    typename Ch;
-
-    bool Null();
-    bool Bool(bool b);
-    bool Int(int i);
-    bool Uint(unsigned i);
-    bool Int64(int64_t i);
-    bool Uint64(uint64_t i);
-    bool Double(double d);
-    /// enabled via kParseNumbersAsStringsFlag, string is not null-terminated (use length)
-    bool RawNumber(const Ch* str, SizeType length, bool copy);
-    bool String(const Ch* str, SizeType length, bool copy);
-    bool StartObject();
-    bool Key(const Ch* str, SizeType length, bool copy);
-    bool EndObject(SizeType memberCount);
-    bool StartArray();
-    bool EndArray(SizeType elementCount);
-};
-\endcode
-*/
-///////////////////////////////////////////////////////////////////////////////
-// BaseReaderHandler
-
-//! Default implementation of Handler.
-/*! This can be used as base class of any reader handler.
-    \note implements Handler concept
-*/
-template<typename Encoding = UTF8<>, typename Derived = void>
-struct BaseReaderHandler {
-    typedef typename Encoding::Ch Ch;
-
-    typedef typename internal::SelectIf<internal::IsSame<Derived, void>, BaseReaderHandler, Derived>::Type Override;
-
-    bool Default() { return true; }
-    bool Null() { return static_cast<Override&>(*this).Default(); }
-    bool Bool(bool) { return static_cast<Override&>(*this).Default(); }
-    bool Int(int) { return static_cast<Override&>(*this).Default(); }
-    bool Uint(unsigned) { return static_cast<Override&>(*this).Default(); }
-    bool Int64(int64_t) { return static_cast<Override&>(*this).Default(); }
-    bool Uint64(uint64_t) { return static_cast<Override&>(*this).Default(); }
-    bool Double(double) { return static_cast<Override&>(*this).Default(); }
-    /// enabled via kParseNumbersAsStringsFlag, string is not null-terminated (use length)
-    bool RawNumber(const Ch* str, SizeType len, bool copy) { return static_cast<Override&>(*this).String(str, len, copy); }
-    bool String(const Ch*, SizeType, bool) { return static_cast<Override&>(*this).Default(); }
-    bool StartObject() { return static_cast<Override&>(*this).Default(); }
-    bool Key(const Ch* str, SizeType len, bool copy) { return static_cast<Override&>(*this).String(str, len, copy); }
-    bool EndObject(SizeType) { return static_cast<Override&>(*this).Default(); }
-    bool StartArray() { return static_cast<Override&>(*this).Default(); }
-    bool EndArray(SizeType) { return static_cast<Override&>(*this).Default(); }
-};
-
-///////////////////////////////////////////////////////////////////////////////
-// StreamLocalCopy
-
-namespace internal {
-
-template<typename Stream, int = StreamTraits<Stream>::copyOptimization>
-class StreamLocalCopy;
-
-//! Do copy optimization.
-template<typename Stream>
-class StreamLocalCopy<Stream, 1> {
-public:
-    StreamLocalCopy(Stream& original) : s(original), original_(original) {}
-    ~StreamLocalCopy() { original_ = s; }
-
-    Stream s;
-
-private:
-    StreamLocalCopy& operator=(const StreamLocalCopy&) /* = delete */;
-
-    Stream& original_;
-};
-
-//! Keep reference.
-template<typename Stream>
-class StreamLocalCopy<Stream, 0> {
-public:
-    StreamLocalCopy(Stream& original) : s(original) {}
-
-    Stream& s;
-
-private:
-    StreamLocalCopy& operator=(const StreamLocalCopy&) /* = delete */;
-};
-
-} // namespace internal
-
-///////////////////////////////////////////////////////////////////////////////
-// SkipWhitespace
-
-//! Skip the JSON white spaces in a stream.
-/*! \param is A input stream for skipping white spaces.
-    \note This function has SSE2/SSE4.2 specialization.
-*/
-template<typename InputStream>
-void SkipWhitespace(InputStream& is) {
-    internal::StreamLocalCopy<InputStream> copy(is);
-    InputStream& s(copy.s);
-
-    while (s.Peek() == ' ' || s.Peek() == '\n' || s.Peek() == '\r' || s.Peek() == '\t')
-        s.Take();
-}
-
-inline const char* SkipWhitespace(const char* p, const char* end) {
-    while (p != end && (*p == ' ' || *p == '\n' || *p == '\r' || *p == '\t'))
-        ++p;
-    return p;
-}
-
-#ifdef RAPIDJSON_SSE42
-//! Skip whitespace with SSE 4.2 pcmpistrm instruction, testing 16 8-byte characters at once.
-inline const char *SkipWhitespace_SIMD(const char* p) {
-    // Fast return for single non-whitespace
-    if (*p == ' ' || *p == '\n' || *p == '\r' || *p == '\t')
-        ++p;
-    else
-        return p;
-
-    // 16-byte align to the next boundary
-    const char* nextAligned = reinterpret_cast<const char*>((reinterpret_cast<size_t>(p) + 15) & static_cast<size_t>(~15));
-    while (p != nextAligned)
-        if (*p == ' ' || *p == '\n' || *p == '\r' || *p == '\t')
-            ++p;
-        else
-            return p;
-
-    // The rest of string using SIMD
-    static const char whitespace[16] = " \n\r\t";
-    const __m128i w = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&whitespace[0]));
-
-    for (;; p += 16) {
-        const __m128i s = _mm_load_si128(reinterpret_cast<const __m128i *>(p));
-        const int r = _mm_cvtsi128_si32(_mm_cmpistrm(w, s, _SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_BIT_MASK | _SIDD_NEGATIVE_POLARITY));
-        if (r != 0) {   // some of characters is non-whitespace
-#ifdef _MSC_VER         // Find the index of first non-whitespace
-            unsigned long offset;
-            _BitScanForward(&offset, r);
-            return p + offset;
-#else
-            return p + __builtin_ffs(r) - 1;
-#endif
-        }
-    }
-}
-
-inline const char *SkipWhitespace_SIMD(const char* p, const char* end) {
-    // Fast return for single non-whitespace
-    if (p != end && (*p == ' ' || *p == '\n' || *p == '\r' || *p == '\t'))
-        ++p;
-    else
-        return p;
-
-    // The middle of string using SIMD
-    static const char whitespace[16] = " \n\r\t";
-    const __m128i w = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&whitespace[0]));
-
-    for (; p <= end - 16; p += 16) {
-        const __m128i s = _mm_loadu_si128(reinterpret_cast<const __m128i *>(p));
-        const int r = _mm_cvtsi128_si32(_mm_cmpistrm(w, s, _SIDD_UBYTE_OPS | _SIDD_CMP_EQUAL_ANY | _SIDD_BIT_MASK | _SIDD_NEGATIVE_POLARITY));
-        if (r != 0) {   // some of characters is non-whitespace
-#ifdef _MSC_VER         // Find the index of first non-whitespace
-            unsigned long offset;
-            _BitScanForward(&offset, r);
-            return p + offset;
-#else
-            return p + __builtin_ffs(r) - 1;
-#endif
-        }
-    }
-
-    return SkipWhitespace(p, end);
-}
-
-#elif defined(RAPIDJSON_SSE2)
-
-//! Skip whitespace with SSE2 instructions, testing 16 8-byte characters at once.
-inline const char *SkipWhitespace_SIMD(const char* p) {
-    // Fast return for single non-whitespace
-    if (*p == ' ' || *p == '\n' || *p == '\r' || *p == '\t')
-        ++p;
-    else
-        return p;
-
-    // 16-byte align to the next boundary
-    const char* nextAligned = reinterpret_cast<const char*>((reinterpret_cast<size_t>(p) + 15) & static_cast<size_t>(~15));
-    while (p != nextAligned)
-        if (*p == ' ' || *p == '\n' || *p == '\r' || *p == '\t')
-            ++p;
-        else
-            return p;
-
-    // The rest of string
-    #define C16(c) { c, c, c, c, c, c, c, c, c, c, c, c, c, c, c, c }
-    static const char whitespaces[4][16] = { C16(' '), C16('\n'), C16('\r'), C16('\t') };
-    #undef C16
-
-    const __m128i w0 = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&whitespaces[0][0]));
-    const __m128i w1 = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&whitespaces[1][0]));
-    const __m128i w2 = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&whitespaces[2][0]));
-    const __m128i w3 = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&whitespaces[3][0]));
-
-    for (;; p += 16) {
-        const __m128i s = _mm_load_si128(reinterpret_cast<const __m128i *>(p));
-        __m128i x = _mm_cmpeq_epi8(s, w0);
-        x = _mm_or_si128(x, _mm_cmpeq_epi8(s, w1));
-        x = _mm_or_si128(x, _mm_cmpeq_epi8(s, w2));
-        x = _mm_or_si128(x, _mm_cmpeq_epi8(s, w3));
-        unsigned short r = static_cast<unsigned short>(~_mm_movemask_epi8(x));
-        if (r != 0) {   // some of characters may be non-whitespace
-#ifdef _MSC_VER         // Find the index of first non-whitespace
-            unsigned long offset;
-            _BitScanForward(&offset, r);
-            return p + offset;
-#else
-            return p + __builtin_ffs(r) - 1;
-#endif
-        }
-    }
-}
-
-inline const char *SkipWhitespace_SIMD(const char* p, const char* end) {
-    // Fast return for single non-whitespace
-    if (p != end && (*p == ' ' || *p == '\n' || *p == '\r' || *p == '\t'))
-        ++p;
-    else
-        return p;
-
-    // The rest of string
-    #define C16(c) { c, c, c, c, c, c, c, c, c, c, c, c, c, c, c, c }
-    static const char whitespaces[4][16] = { C16(' '), C16('\n'), C16('\r'), C16('\t') };
-    #undef C16
-
-    const __m128i w0 = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&whitespaces[0][0]));
-    const __m128i w1 = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&whitespaces[1][0]));
-    const __m128i w2 = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&whitespaces[2][0]));
-    const __m128i w3 = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&whitespaces[3][0]));
-
-    for (; p <= end - 16; p += 16) {
-        const __m128i s = _mm_loadu_si128(reinterpret_cast<const __m128i *>(p));
-        __m128i x = _mm_cmpeq_epi8(s, w0);
-        x = _mm_or_si128(x, _mm_cmpeq_epi8(s, w1));
-        x = _mm_or_si128(x, _mm_cmpeq_epi8(s, w2));
-        x = _mm_or_si128(x, _mm_cmpeq_epi8(s, w3));
-        unsigned short r = static_cast<unsigned short>(~_mm_movemask_epi8(x));
-        if (r != 0) {   // some of characters may be non-whitespace
-#ifdef _MSC_VER         // Find the index of first non-whitespace
-            unsigned long offset;
-            _BitScanForward(&offset, r);
-            return p + offset;
-#else
-            return p + __builtin_ffs(r) - 1;
-#endif
-        }
-    }
-
-    return SkipWhitespace(p, end);
-}
-
-#endif // RAPIDJSON_SSE2
-
-#ifdef RAPIDJSON_SIMD
-//! Template function specialization for InsituStringStream
-template<> inline void SkipWhitespace(InsituStringStream& is) { 
-    is.src_ = const_cast<char*>(SkipWhitespace_SIMD(is.src_));
-}
-
-//! Template function specialization for StringStream
-template<> inline void SkipWhitespace(StringStream& is) {
-    is.src_ = SkipWhitespace_SIMD(is.src_);
-}
-
-template<> inline void SkipWhitespace(EncodedInputStream<UTF8<>, MemoryStream>& is) {
-    is.is_.src_ = SkipWhitespace_SIMD(is.is_.src_, is.is_.end_);
-}
-#endif // RAPIDJSON_SIMD
-
-///////////////////////////////////////////////////////////////////////////////
-// GenericReader
-
-//! SAX-style JSON parser. Use \ref Reader for UTF8 encoding and default allocator.
-/*! GenericReader parses JSON text from a stream, and send events synchronously to an 
-    object implementing Handler concept.
-
-    It needs to allocate a stack for storing a single decoded string during 
-    non-destructive parsing.
-
-    For in-situ parsing, the decoded string is directly written to the source 
-    text string, no temporary buffer is required.
-
-    A GenericReader object can be reused for parsing multiple JSON text.
-    
-    \tparam SourceEncoding Encoding of the input stream.
-    \tparam TargetEncoding Encoding of the parse output.
-    \tparam StackAllocator Allocator type for stack.
-*/
-template <typename SourceEncoding, typename TargetEncoding, typename StackAllocator = CrtAllocator>
-class GenericReader {
-public:
-    typedef typename SourceEncoding::Ch Ch; //!< SourceEncoding character type
-
-    //! Constructor.
-    /*! \param stackAllocator Optional allocator for allocating stack memory. (Only use for non-destructive parsing)
-        \param stackCapacity stack capacity in bytes for storing a single decoded string.  (Only use for non-destructive parsing)
-    */
-    GenericReader(StackAllocator* stackAllocator = 0, size_t stackCapacity = kDefaultStackCapacity) : stack_(stackAllocator, stackCapacity), parseResult_() {}
-
-    //! Parse JSON text.
-    /*! \tparam parseFlags Combination of \ref ParseFlag.
-        \tparam InputStream Type of input stream, implementing Stream concept.
-        \tparam Handler Type of handler, implementing Handler concept.
-        \param is Input stream to be parsed.
-        \param handler The handler to receive events.
-        \return Whether the parsing is successful.
-    */
-    template <unsigned parseFlags, typename InputStream, typename Handler>
-    ParseResult Parse(InputStream& is, Handler& handler) {
-        if (parseFlags & kParseIterativeFlag)
-            return IterativeParse<parseFlags>(is, handler);
-
-        parseResult_.Clear();
-
-        ClearStackOnExit scope(*this);
-
-        SkipWhitespaceAndComments<parseFlags>(is);
-        RAPIDJSON_PARSE_ERROR_EARLY_RETURN(parseResult_);
-
-        if (RAPIDJSON_UNLIKELY(is.Peek() == '\0')) {
-            RAPIDJSON_PARSE_ERROR_NORETURN(kParseErrorDocumentEmpty, is.Tell());
-            RAPIDJSON_PARSE_ERROR_EARLY_RETURN(parseResult_);
-        }
-        else {
-            ParseValue<parseFlags>(is, handler);
-            RAPIDJSON_PARSE_ERROR_EARLY_RETURN(parseResult_);
-
-            if (!(parseFlags & kParseStopWhenDoneFlag)) {
-                SkipWhitespaceAndComments<parseFlags>(is);
-                RAPIDJSON_PARSE_ERROR_EARLY_RETURN(parseResult_);
-
-                if (RAPIDJSON_UNLIKELY(is.Peek() != '\0')) {
-                    RAPIDJSON_PARSE_ERROR_NORETURN(kParseErrorDocumentRootNotSingular, is.Tell());
-                    RAPIDJSON_PARSE_ERROR_EARLY_RETURN(parseResult_);
-                }
-            }
-        }
-
-        return parseResult_;
-    }
-
-    //! Parse JSON text (with \ref kParseDefaultFlags)
-    /*! \tparam InputStream Type of input stream, implementing Stream concept
-        \tparam Handler Type of handler, implementing Handler concept.
-        \param is Input stream to be parsed.
-        \param handler The handler to receive events.
-        \return Whether the parsing is successful.
-    */
-    template <typename InputStream, typename Handler>
-    ParseResult Parse(InputStream& is, Handler& handler) {
-        return Parse<kParseDefaultFlags>(is, handler);
-    }
-
-    //! Whether a parse error has occured in the last parsing.
-    bool HasParseError() const { return parseResult_.IsError(); }
-    
-    //! Get the \ref ParseErrorCode of last parsing.
-    ParseErrorCode GetParseErrorCode() const { return parseResult_.Code(); }
-
-    //! Get the position of last parsing error in input, 0 otherwise.
-    size_t GetErrorOffset() const { return parseResult_.Offset(); }
-
-protected:
-    void SetParseError(ParseErrorCode code, size_t offset) { parseResult_.Set(code, offset); }
-
-private:
-    // Prohibit copy constructor & assignment operator.
-    GenericReader(const GenericReader&);
-    GenericReader& operator=(const GenericReader&);
-
-    void ClearStack() { stack_.Clear(); }
-
-    // clear stack on any exit from ParseStream, e.g. due to exception
-    struct ClearStackOnExit {
-        explicit ClearStackOnExit(GenericReader& r) : r_(r) {}
-        ~ClearStackOnExit() { r_.ClearStack(); }
-    private:
-        GenericReader& r_;
-        ClearStackOnExit(const ClearStackOnExit&);
-        ClearStackOnExit& operator=(const ClearStackOnExit&);
-    };
-
-    template<unsigned parseFlags, typename InputStream>
-    void SkipWhitespaceAndComments(InputStream& is) {
-        SkipWhitespace(is);
-
-        if (parseFlags & kParseCommentsFlag) {
-            while (RAPIDJSON_UNLIKELY(Consume(is, '/'))) {
-                if (Consume(is, '*')) {
-                    while (true) {
-                        if (RAPIDJSON_UNLIKELY(is.Peek() == '\0'))
-                            RAPIDJSON_PARSE_ERROR(kParseErrorUnspecificSyntaxError, is.Tell());
-                        else if (Consume(is, '*')) {
-                            if (Consume(is, '/'))
-                                break;
-                        }
-                        else
-                            is.Take();
-                    }
-                }
-                else if (RAPIDJSON_LIKELY(Consume(is, '/')))
-                    while (is.Peek() != '\0' && is.Take() != '\n');
-                else
-                    RAPIDJSON_PARSE_ERROR(kParseErrorUnspecificSyntaxError, is.Tell());
-
-                SkipWhitespace(is);
-            }
-        }
-    }
-
-    // Parse object: { string : value, ... }
-    template<unsigned parseFlags, typename InputStream, typename Handler>
-    void ParseObject(InputStream& is, Handler& handler) {
-        RAPIDJSON_ASSERT(is.Peek() == '{');
-        is.Take();  // Skip '{'
-        
-        if (RAPIDJSON_UNLIKELY(!handler.StartObject()))
-            RAPIDJSON_PARSE_ERROR(kParseErrorTermination, is.Tell());
-
-        SkipWhitespaceAndComments<parseFlags>(is);
-        RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;
-
-        if (Consume(is, '}')) {
-            if (RAPIDJSON_UNLIKELY(!handler.EndObject(0)))  // empty object
-                RAPIDJSON_PARSE_ERROR(kParseErrorTermination, is.Tell());
-            return;
-        }
-
-        for (SizeType memberCount = 0;;) {
-            if (RAPIDJSON_UNLIKELY(is.Peek() != '"'))
-                RAPIDJSON_PARSE_ERROR(kParseErrorObjectMissName, is.Tell());
-
-            ParseString<parseFlags>(is, handler, true);
-            RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;
-
-            SkipWhitespaceAndComments<parseFlags>(is);
-            RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;
-
-            if (RAPIDJSON_UNLIKELY(!Consume(is, ':')))
-                RAPIDJSON_PARSE_ERROR(kParseErrorObjectMissColon, is.Tell());
-
-            SkipWhitespaceAndComments<parseFlags>(is);
-            RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;
-
-            ParseValue<parseFlags>(is, handler);
-            RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;
-
-            SkipWhitespaceAndComments<parseFlags>(is);
-            RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;
-
-            ++memberCount;
-
-            switch (is.Peek()) {
-                case ',':
-                    is.Take();
-                    SkipWhitespaceAndComments<parseFlags>(is);
-                    RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;
-                    break;
-                case '}': 
-                    is.Take();
-                    if (RAPIDJSON_UNLIKELY(!handler.EndObject(memberCount)))
-                        RAPIDJSON_PARSE_ERROR(kParseErrorTermination, is.Tell());
-                    return;
-                default:  
-                    RAPIDJSON_PARSE_ERROR(kParseErrorObjectMissCommaOrCurlyBracket, is.Tell());
-                    break;
-            }
-
-            if (parseFlags & kParseTrailingCommasFlag) {
-                if (is.Peek() == '}') {
-                    if (RAPIDJSON_UNLIKELY(!handler.EndObject(memberCount)))
-                        RAPIDJSON_PARSE_ERROR(kParseErrorTermination, is.Tell());
-                    is.Take();
-                    return;
-                }
-            }
-        }
-    }
-
-    // Parse array: [ value, ... ]
-    template<unsigned parseFlags, typename InputStream, typename Handler>
-    void ParseArray(InputStream& is, Handler& handler) {
-        RAPIDJSON_ASSERT(is.Peek() == '[');
-        is.Take();  // Skip '['
-        
-        if (RAPIDJSON_UNLIKELY(!handler.StartArray()))
-            RAPIDJSON_PARSE_ERROR(kParseErrorTermination, is.Tell());
-        
-        SkipWhitespaceAndComments<parseFlags>(is);
-        RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;
-
-        if (Consume(is, ']')) {
-            if (RAPIDJSON_UNLIKELY(!handler.EndArray(0))) // empty array
-                RAPIDJSON_PARSE_ERROR(kParseErrorTermination, is.Tell());
-            return;
-        }
-
-        for (SizeType elementCount = 0;;) {
-            ParseValue<parseFlags>(is, handler);
-            RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;
-
-            ++elementCount;
-            SkipWhitespaceAndComments<parseFlags>(is);
-            RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;
-
-            if (Consume(is, ',')) {
-                SkipWhitespaceAndComments<parseFlags>(is);
-                RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;
-            }
-            else if (Consume(is, ']')) {
-                if (RAPIDJSON_UNLIKELY(!handler.EndArray(elementCount)))
-                    RAPIDJSON_PARSE_ERROR(kParseErrorTermination, is.Tell());
-                return;
-            }
-            else
-                RAPIDJSON_PARSE_ERROR(kParseErrorArrayMissCommaOrSquareBracket, is.Tell());
-
-            if (parseFlags & kParseTrailingCommasFlag) {
-                if (is.Peek() == ']') {
-                    if (RAPIDJSON_UNLIKELY(!handler.EndArray(elementCount)))
-                        RAPIDJSON_PARSE_ERROR(kParseErrorTermination, is.Tell());
-                    is.Take();
-                    return;
-                }
-            }
-        }
-    }
-
-    template<unsigned parseFlags, typename InputStream, typename Handler>
-    void ParseNull(InputStream& is, Handler& handler) {
-        RAPIDJSON_ASSERT(is.Peek() == 'n');
-        is.Take();
-
-        if (RAPIDJSON_LIKELY(Consume(is, 'u') && Consume(is, 'l') && Consume(is, 'l'))) {
-            if (RAPIDJSON_UNLIKELY(!handler.Null()))
-                RAPIDJSON_PARSE_ERROR(kParseErrorTermination, is.Tell());
-        }
-        else
-            RAPIDJSON_PARSE_ERROR(kParseErrorValueInvalid, is.Tell());
-    }
-
-    template<unsigned parseFlags, typename InputStream, typename Handler>
-    void ParseTrue(InputStream& is, Handler& handler) {
-        RAPIDJSON_ASSERT(is.Peek() == 't');
-        is.Take();
-
-        if (RAPIDJSON_LIKELY(Consume(is, 'r') && Consume(is, 'u') && Consume(is, 'e'))) {
-            if (RAPIDJSON_UNLIKELY(!handler.Bool(true)))
-                RAPIDJSON_PARSE_ERROR(kParseErrorTermination, is.Tell());
-        }
-        else
-            RAPIDJSON_PARSE_ERROR(kParseErrorValueInvalid, is.Tell());
-    }
-
-    template<unsigned parseFlags, typename InputStream, typename Handler>
-    void ParseFalse(InputStream& is, Handler& handler) {
-        RAPIDJSON_ASSERT(is.Peek() == 'f');
-        is.Take();
-
-        if (RAPIDJSON_LIKELY(Consume(is, 'a') && Consume(is, 'l') && Consume(is, 's') && Consume(is, 'e'))) {
-            if (RAPIDJSON_UNLIKELY(!handler.Bool(false)))
-                RAPIDJSON_PARSE_ERROR(kParseErrorTermination, is.Tell());
-        }
-        else
-            RAPIDJSON_PARSE_ERROR(kParseErrorValueInvalid, is.Tell());
-    }
-
-    template<typename InputStream>
-    RAPIDJSON_FORCEINLINE static bool Consume(InputStream& is, typename InputStream::Ch expect) {
-        if (RAPIDJSON_LIKELY(is.Peek() == expect)) {
-            is.Take();
-            return true;
-        }
-        else
-            return false;
-    }
-
-    // Helper function to parse four hexidecimal digits in \uXXXX in ParseString().
-    template<typename InputStream>
-    unsigned ParseHex4(InputStream& is, size_t escapeOffset) {
-        unsigned codepoint = 0;
-        for (int i = 0; i < 4; i++) {
-            Ch c = is.Peek();
-            codepoint <<= 4;
-            codepoint += static_cast<unsigned>(c);
-            if (c >= '0' && c <= '9')
-                codepoint -= '0';
-            else if (c >= 'A' && c <= 'F')
-                codepoint -= 'A' - 10;
-            else if (c >= 'a' && c <= 'f')
-                codepoint -= 'a' - 10;
-            else {
-                RAPIDJSON_PARSE_ERROR_NORETURN(kParseErrorStringUnicodeEscapeInvalidHex, escapeOffset);
-                RAPIDJSON_PARSE_ERROR_EARLY_RETURN(0);
-            }
-            is.Take();
-        }
-        return codepoint;
-    }
-
-    template <typename CharType>
-    class StackStream {
-    public:
-        typedef CharType Ch;
-
-        StackStream(internal::Stack<StackAllocator>& stack) : stack_(stack), length_(0) {}
-        RAPIDJSON_FORCEINLINE void Put(Ch c) {
-            *stack_.template Push<Ch>() = c;
-            ++length_;
-        }
-        
-        RAPIDJSON_FORCEINLINE void* Push(SizeType count) {
-            length_ += count;
-            return stack_.template Push<Ch>(count);
-        }
-
-        size_t Length() const { return length_; }
-
-        Ch* Pop() {
-            return stack_.template Pop<Ch>(length_);
-        }
-
-    private:
-        StackStream(const StackStream&);
-        StackStream& operator=(const StackStream&);
-
-        internal::Stack<StackAllocator>& stack_;
-        SizeType length_;
-    };
-
-    // Parse string and generate String event. Different code paths for kParseInsituFlag.
-    template<unsigned parseFlags, typename InputStream, typename Handler>
-    void ParseString(InputStream& is, Handler& handler, bool isKey = false) {
-        internal::StreamLocalCopy<InputStream> copy(is);
-        InputStream& s(copy.s);
-
-        RAPIDJSON_ASSERT(s.Peek() == '\"');
-        s.Take();  // Skip '\"'
-
-        bool success = false;
-        if (parseFlags & kParseInsituFlag) {
-            typename InputStream::Ch *head = s.PutBegin();
-            ParseStringToStream<parseFlags, SourceEncoding, SourceEncoding>(s, s);
-            RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;
-            size_t length = s.PutEnd(head) - 1;
-            RAPIDJSON_ASSERT(length <= 0xFFFFFFFF);
-            const typename TargetEncoding::Ch* const str = reinterpret_cast<typename TargetEncoding::Ch*>(head);
-            success = (isKey ? handler.Key(str, SizeType(length), false) : handler.String(str, SizeType(length), false));
-        }
-        else {
-            StackStream<typename TargetEncoding::Ch> stackStream(stack_);
-            ParseStringToStream<parseFlags, SourceEncoding, TargetEncoding>(s, stackStream);
-            RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;
-            SizeType length = static_cast<SizeType>(stackStream.Length()) - 1;
-            const typename TargetEncoding::Ch* const str = stackStream.Pop();
-            success = (isKey ? handler.Key(str, length, true) : handler.String(str, length, true));
-        }
-        if (RAPIDJSON_UNLIKELY(!success))
-            RAPIDJSON_PARSE_ERROR(kParseErrorTermination, s.Tell());
-    }
-
-    // Parse string to an output is
-    // This function handles the prefix/suffix double quotes, escaping, and optional encoding validation.
-    template<unsigned parseFlags, typename SEncoding, typename TEncoding, typename InputStream, typename OutputStream>
-    RAPIDJSON_FORCEINLINE void ParseStringToStream(InputStream& is, OutputStream& os) {
-//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN
-#define Z16 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-        static const char escape[256] = {
-            Z16, Z16, 0, 0,'\"', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,'/', 
-            Z16, Z16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,'\\', 0, 0, 0, 
-            0, 0,'\b', 0, 0, 0,'\f', 0, 0, 0, 0, 0, 0, 0,'\n', 0, 
-            0, 0,'\r', 0,'\t', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-            Z16, Z16, Z16, Z16, Z16, Z16, Z16, Z16
-        };
-#undef Z16
-//!@endcond
-
-        for (;;) {
-            // Scan and copy string before "\\\"" or < 0x20. This is an optional optimzation.
-            if (!(parseFlags & kParseValidateEncodingFlag))
-                ScanCopyUnescapedString(is, os);
-
-            Ch c = is.Peek();
-            if (RAPIDJSON_UNLIKELY(c == '\\')) {    // Escape
-                size_t escapeOffset = is.Tell();    // For invalid escaping, report the inital '\\' as error offset
-                is.Take();
-                Ch e = is.Peek();
-                if ((sizeof(Ch) == 1 || unsigned(e) < 256) && RAPIDJSON_LIKELY(escape[static_cast<unsigned char>(e)])) {
-                    is.Take();
-                    os.Put(static_cast<typename TEncoding::Ch>(escape[static_cast<unsigned char>(e)]));
-                }
-                else if (RAPIDJSON_LIKELY(e == 'u')) {    // Unicode
-                    is.Take();
-                    unsigned codepoint = ParseHex4(is, escapeOffset);
-                    RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;
-                    if (RAPIDJSON_UNLIKELY(codepoint >= 0xD800 && codepoint <= 0xDBFF)) {
-                        // Handle UTF-16 surrogate pair
-                        if (RAPIDJSON_UNLIKELY(!Consume(is, '\\') || !Consume(is, 'u')))
-                            RAPIDJSON_PARSE_ERROR(kParseErrorStringUnicodeSurrogateInvalid, escapeOffset);
-                        unsigned codepoint2 = ParseHex4(is, escapeOffset);
-                        RAPIDJSON_PARSE_ERROR_EARLY_RETURN_VOID;
-                        if (RAPIDJSON_UNLIKELY(codepoint2 < 0xDC00 || codepoint2 > 0xDFFF))
-                            RAPIDJSON_PARSE_ERROR(kParseErrorStringUnicodeSurrogateInvalid, escapeOffset);
-                        codepoint = (((codepoint - 0xD800) << 10) | (codepoint2 - 0xDC00)) + 0x10000;
-                    }
-                    TEncoding::Encode(os, codepoint);
-                }
-                else
-                    RAPIDJSON_PARSE_ERROR(kParseErrorStringEscapeInvalid, escapeOffset);
-            }
-            else if (RAPIDJSON_UNLIKELY(c == '"')) {    // Closing double quote
-                is.Take();
-                os.Put('\0');   // null-terminate the string
-                return;
-            }
-            else if (RAPIDJSON_UNLIKELY(static_cast<unsigned>(c) < 0x20)) { // RFC 4627: unescaped = %x20-21 / %x23-5B / %x5D-10FFFF
-                if (c == '\0')
-                    RAPIDJSON_PARSE_ERROR(kParseErrorStringMissQuotationMark, is.Tell());
-                else
-                    RAPIDJSON_PARSE_ERROR(kParseErrorStringEscapeInvalid, is.Tell());
-            }
-            else {
-                size_t offset = is.Tell();
-                if (RAPIDJSON_UNLIKELY((parseFlags & kParseValidateEncodingFlag ? 
-                    !Transcoder<SEncoding, TEncoding>::Validate(is, os) : 
-                    !Transcoder<SEncoding, TEncoding>::Transcode(is, os))))
-                    RAPIDJSON_PARSE_ERROR(kParseErrorStringInvalidEncoding, offset);
-            }
-        }
-    }
-
-    template<typename InputStream, typename OutputStream>
-    static RAPIDJSON_FORCEINLINE void ScanCopyUnescapedString(InputStream&, OutputStream&) {
-            // Do nothing for generic version
-    }
-
-#if defined(RAPIDJSON_SSE2) || defined(RAPIDJSON_SSE42)
-    // StringStream -> StackStream<char>
-    static RAPIDJSON_FORCEINLINE void ScanCopyUnescapedString(StringStream& is, StackStream<char>& os) {
-        const char* p = is.src_;
-
-        // Scan one by one until alignment (unaligned load may cross page boundary and cause crash)
-        const char* nextAligned = reinterpret_cast<const char*>((reinterpret_cast<size_t>(p) + 15) & static_cast<size_t>(~15));
-        while (p != nextAligned)
-            if (RAPIDJSON_UNLIKELY(*p == '\"') || RAPIDJSON_UNLIKELY(*p == '\\') || RAPIDJSON_UNLIKELY(static_cast<unsigned>(*p) < 0x20)) {
-                is.src_ = p;
-                return;
-            }
-            else
-                os.Put(*p++);
-
-        // The rest of string using SIMD
-        static const char dquote[16] = { '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"' };
-        static const char bslash[16] = { '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\' };
-        static const char space[16]  = { 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19 };
-        const __m128i dq = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&dquote[0]));
-        const __m128i bs = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&bslash[0]));
-        const __m128i sp = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&space[0]));
-
-        for (;; p += 16) {
-            const __m128i s = _mm_load_si128(reinterpret_cast<const __m128i *>(p));
-            const __m128i t1 = _mm_cmpeq_epi8(s, dq);
-            const __m128i t2 = _mm_cmpeq_epi8(s, bs);
-            const __m128i t3 = _mm_cmpeq_epi8(_mm_max_epu8(s, sp), sp); // s < 0x20 <=> max(s, 0x19) == 0x19
-            const __m128i x = _mm_or_si128(_mm_or_si128(t1, t2), t3);
-            unsigned short r = static_cast<unsigned short>(_mm_movemask_epi8(x));
-            if (RAPIDJSON_UNLIKELY(r != 0)) {   // some of characters is escaped
-                SizeType length;
-    #ifdef _MSC_VER         // Find the index of first escaped
-                unsigned long offset;
-                _BitScanForward(&offset, r);
-                length = offset;
-    #else
-                length = static_cast<SizeType>(__builtin_ffs(r) - 1);
-    #endif
-                char* q = reinterpret_cast<char*>(os.Push(length));
-                for (size_t i = 0; i < length; i++)
-                    q[i] = p[i];
-
-                p += length;
-                break;
-            }
-            _mm_storeu_si128(reinterpret_cast<__m128i *>(os.Push(16)), s);
-        }
-        
-        is.src_ = p;
-    }
-
-    // InsituStringStream -> InsituStringStream
-    static RAPIDJSON_FORCEINLINE void ScanCopyUnescapedString(InsituStringStream& is, InsituStringStream& os) {
-        RAPIDJSON_ASSERT(&is == &os);
-        (void)os;
-
-        if (is.src_ == is.dst_) {
-            SkipUnescapedString(is);
-            return;
-        }
-
-        char* p = is.src_;
-        char *q = is.dst_;
-
-        // Scan one by one until alignment (unaligned load may cross page boundary and cause crash)
-        const char* nextAligned = reinterpret_cast<const char*>((reinterpret_cast<size_t>(p) + 15) & static_cast<size_t>(~15));
-        while (p != nextAligned)
-            if (RAPIDJSON_UNLIKELY(*p == '\"') || RAPIDJSON_UNLIKELY(*p == '\\') || RAPIDJSON_UNLIKELY(static_cast<unsigned>(*p) < 0x20)) {
-                is.src_ = p;
-                is.dst_ = q;
-                return;                
-            }
-            else
-                *q++ = *p++;
-
-        // The rest of string using SIMD
-        static const char dquote[16] = { '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"' };
-        static const char bslash[16] = { '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\' };
-        static const char space[16] = { 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19 };
-        const __m128i dq = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&dquote[0]));
-        const __m128i bs = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&bslash[0]));
-        const __m128i sp = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&space[0]));
-
-        for (;; p += 16, q += 16) {
-            const __m128i s = _mm_load_si128(reinterpret_cast<const __m128i *>(p));
-            const __m128i t1 = _mm_cmpeq_epi8(s, dq);
-            const __m128i t2 = _mm_cmpeq_epi8(s, bs);
-            const __m128i t3 = _mm_cmpeq_epi8(_mm_max_epu8(s, sp), sp); // s < 0x20 <=> max(s, 0x19) == 0x19
-            const __m128i x = _mm_or_si128(_mm_or_si128(t1, t2), t3);
-            unsigned short r = static_cast<unsigned short>(_mm_movemask_epi8(x));
-            if (RAPIDJSON_UNLIKELY(r != 0)) {   // some of characters is escaped
-                size_t length;
-#ifdef _MSC_VER         // Find the index of first escaped
-                unsigned long offset;
-                _BitScanForward(&offset, r);
-                length = offset;
-#else
-                length = static_cast<size_t>(__builtin_ffs(r) - 1);
-#endif
-                for (const char* pend = p + length; p != pend; )
-                    *q++ = *p++;
-                break;
-            }
-            _mm_storeu_si128(reinterpret_cast<__m128i *>(q), s);
-        }
-
-        is.src_ = p;
-        is.dst_ = q;
-    }
-
-    // When read/write pointers are the same for insitu stream, just skip unescaped characters
-    static RAPIDJSON_FORCEINLINE void SkipUnescapedString(InsituStringStream& is) {
-        RAPIDJSON_ASSERT(is.src_ == is.dst_);
-        char* p = is.src_;
-
-        // Scan one by one until alignment (unaligned load may cross page boundary and cause crash)
-        const char* nextAligned = reinterpret_cast<const char*>((reinterpret_cast<size_t>(p) + 15) & static_cast<size_t>(~15));
-        for (; p != nextAligned; p++)
-            if (RAPIDJSON_UNLIKELY(*p == '\"') || RAPIDJSON_UNLIKELY(*p == '\\') || RAPIDJSON_UNLIKELY(static_cast<unsigned>(*p) < 0x20)) {
-                is.src_ = is.dst_ = p;
-                return;
-            }
-
-        // The rest of string using SIMD
-        static const char dquote[16] = { '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"' };
-        static const char bslash[16] = { '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\' };
-        static const char space[16] = { 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19 };
-        const __m128i dq = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&dquote[0]));
-        const __m128i bs = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&bslash[0]));
-        const __m128i sp = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&space[0]));
-
-        for (;; p += 16) {
-            const __m128i s = _mm_load_si128(reinterpret_cast<const __m128i *>(p));
-            const __m128i t1 = _mm_cmpeq_epi8(s, dq);
-            const __m128i t2 = _mm_cmpeq_epi8(s, bs);
-            const __m128i t3 = _mm_cmpeq_epi8(_mm_max_epu8(s, sp), sp); // s < 0x20 <=> max(s, 0x19) == 0x19
-            const __m128i x = _mm_or_si128(_mm_or_si128(t1, t2), t3);
-            unsigned short r = static_cast<unsigned short>(_mm_movemask_epi8(x));
-            if (RAPIDJSON_UNLIKELY(r != 0)) {   // some of characters is escaped
-                size_t length;
-#ifdef _MSC_VER         // Find the index of first escaped
-                unsigned long offset;
-                _BitScanForward(&offset, r);
-                length = offset;
-#else
-                length = static_cast<size_t>(__builtin_ffs(r) - 1);
-#endif
-                p += length;
-                break;
-            }
-        }
-
-        is.src_ = is.dst_ = p;
-    }
-#endif
-
-    template<typename InputStream, bool backup>
-    class NumberStream;
-
-    template<typename InputStream>
-    class NumberStream<InputStream, false> {
-    public:
-        typedef typename InputStream::Ch Ch;
-
-        NumberStream(GenericReader& reader, InputStream& s) : is(s) { (void)reader;  }
-        ~NumberStream() {}
-
-        RAPIDJSON_FORCEINLINE Ch Peek() const { return is.Peek(); }
-        RAPIDJSON_FORCEINLINE Ch TakePush() { return is.Take(); }
-        RAPIDJSON_FORCEINLINE Ch Take() { return is.Take(); }
-		  RAPIDJSON_FORCEINLINE void Push(char) {}
-
-        size_t Tell() { return is.Tell(); }
-        size_t Length() { return 0; }
-        const char* Pop() { return 0; }
-
-    protected:
-        NumberStream& operator=(const NumberStream&);
-
-        InputStream& is;
-    };
-
-    template<typename InputStream>
-    class NumberStream<InputStream, true> : public NumberStream<InputStream, false> {
-        typedef NumberStream<InputStream, false> Base;
-    public:
-        NumberStream(GenericReader& reader, InputStream& is) : NumberStream<InputStream, false>(reader, is), stackStream(reader.stack_) {}
-        ~NumberStream() {}
-
-        RAPIDJSON_FORCEINLINE Ch TakePush() {
-            stackStream.Put(static_cast<char>(Base::is.Peek()));
-            return Base::is.Take();
-        }
-
-		  RAPIDJSON_FORCEINLINE void Push(char c) {
-			  stackStream.Put(c);
-		  }
-
-        size_t Length() { return stackStream.Length(); }
-
-        const char* Pop() {
-            stackStream.Put('\0');
-            return stackStream.Pop();
-        }
-
-    private:
-        StackStream<char> stackStream;
-    };
-
-    template<unsigned parseFlags, typename InputStream, typename Handler>
-    void ParseNumber(InputStream& is, Handler& handler) {
-        internal::StreamLocalCopy<InputStream> copy(is);
-        NumberStream<InputStream,
-            ((parseFlags & kParseNumbersAsStringsFlag) != 0) ?
-                ((parseFlags & kParseInsituFlag) == 0) :
-                ((parseFlags & kParseFullPrecisionFlag) != 0)> s(*this, copy.s);
-
-        size_t startOffset = s.Tell();
-
-        // Parse minus
-        bool minus = Consume(s, '-');
-
-        // Parse int: zero / ( digit1-9 *DIGIT )
-        unsigned i = 0;
-        uint64_t i64 = 0;
-        bool use64bit = false;
-        int significandDigit = 0;
-        if (RAPIDJSON_UNLIKELY(s.Peek() == '0')) {
-            i = 0;
-            s.TakePush();
-        }
-        else if (RAPIDJSON_LIKELY(s.Peek() >= '1' && s.Peek() <= '9')) {
-            i = static_cast<unsigned>(s.TakePush() - '0');
-
-            if (minus)
-                while (RAPIDJSON_LIKELY(s.Peek() >= '0' && s.Peek() <= '9')) {
-                    if (RAPIDJSON_UNLIKELY(i >= 214748364)) { // 2^31 = 2147483648
-                        if (RAPIDJSON_LIKELY(i != 214748364 || s.Peek() > '8')) {
-                            i64 = i;
-                            use64bit = true;
-                            break;
-                        }
-                    }
-                    i = i * 10 + static_cast<unsigned>(s.TakePush() - '0');
-                    significandDigit++;
-                }
-            else
-                while (RAPIDJSON_LIKELY(s.Peek() >= '0' && s.Peek() <= '9')) {
-                    if (RAPIDJSON_UNLIKELY(i >= 429496729)) { // 2^32 - 1 = 4294967295
-                        if (RAPIDJSON_LIKELY(i != 429496729 || s.Peek() > '5')) {
-                            i64 = i;
-                            use64bit = true;
-                            break;
-                        }
-                    }
-                    i = i * 10 + static_cast<unsigned>(s.TakePush() - '0');
-                    significandDigit++;
-                }
-        }
-        else
-            RAPIDJSON_PARSE_ERROR(kParseErrorValueInvalid, s.Tell());
-
-        // Parse 64bit int
-        bool useDouble = false;
-        double d = 0.0;
-        if (use64bit) {
-            if (minus) 
-                while (RAPIDJSON_LIKELY(s.Peek() >= '0' && s.Peek() <= '9')) {
-                     if (RAPIDJSON_UNLIKELY(i64 >= RAPIDJSON_UINT64_C2(0x0CCCCCCC, 0xCCCCCCCC))) // 2^63 = 9223372036854775808
-                        if (RAPIDJSON_LIKELY(i64 != RAPIDJSON_UINT64_C2(0x0CCCCCCC, 0xCCCCCCCC) || s.Peek() > '8')) {
-                            d = static_cast<double>(i64);
-                            useDouble = true;
-                            break;
-                        }
-                    i64 = i64 * 10 + static_cast<unsigned>(s.TakePush() - '0');
-                    significandDigit++;
-                }
-            else
-                while (RAPIDJSON_LIKELY(s.Peek() >= '0' && s.Peek() <= '9')) {
-                    if (RAPIDJSON_UNLIKELY(i64 >= RAPIDJSON_UINT64_C2(0x19999999, 0x99999999))) // 2^64 - 1 = 18446744073709551615
-                        if (RAPIDJSON_LIKELY(i64 != RAPIDJSON_UINT64_C2(0x19999999, 0x99999999) || s.Peek() > '5')) {
-                            d = static_cast<double>(i64);
-                            useDouble = true;
-                            break;
-                        }
-                    i64 = i64 * 10 + static_cast<unsigned>(s.TakePush() - '0');
-                    significandDigit++;
-                }
-        }
-
-        // Force double for big integer
-        if (useDouble) {
-            while (RAPIDJSON_LIKELY(s.Peek() >= '0' && s.Peek() <= '9')) {
-                if (RAPIDJSON_UNLIKELY(d >= 1.7976931348623157e307)) // DBL_MAX / 10.0
-                    RAPIDJSON_PARSE_ERROR(kParseErrorNumberTooBig, startOffset);
-                d = d * 10 + (s.TakePush() - '0');
-            }
-        }
-
-        // Parse frac = decimal-point 1*DIGIT
-        int expFrac = 0;
-        size_t decimalPosition;
-        if (Consume(s, '.')) {
-            if (((parseFlags & kParseNumbersAsStringsFlag) != 0) && ((parseFlags & kParseInsituFlag) == 0)) {
-					s.Push('.');
-				}
-            decimalPosition = s.Length();
-
-            if (RAPIDJSON_UNLIKELY(!(s.Peek() >= '0' && s.Peek() <= '9')))
-                RAPIDJSON_PARSE_ERROR(kParseErrorNumberMissFraction, s.Tell());
-
-            if (!useDouble) {
-#if RAPIDJSON_64BIT
-                // Use i64 to store significand in 64-bit architecture
-                if (!use64bit)
-                    i64 = i;
-        
-                while (RAPIDJSON_LIKELY(s.Peek() >= '0' && s.Peek() <= '9')) {
-                    if (i64 > RAPIDJSON_UINT64_C2(0x1FFFFF, 0xFFFFFFFF)) // 2^53 - 1 for fast path
-                        break;
-                    else {
-                        i64 = i64 * 10 + static_cast<unsigned>(s.TakePush() - '0');
-                        --expFrac;
-                        if (i64 != 0)
-                            significandDigit++;
-                    }
-                }
-
-                d = static_cast<double>(i64);
-#else
-                // Use double to store significand in 32-bit architecture
-                d = static_cast<double>(use64bit ? i64 : i);
-#endif
-                useDouble = true;
-            }
-
-            while (RAPIDJSON_LIKELY(s.Peek() >= '0' && s.Peek() <= '9')) {
-                if (significandDigit < 17) {
-                    d = d * 10.0 + (s.TakePush() - '0');
-                    --expFrac;
-                    if (RAPIDJSON_LIKELY(d > 0.0))
-                        significandDigit++;
-                }
-                else
-                    s.TakePush();
-            }
-        }
-        else
-            decimalPosition = s.Length(); // decimal position at the end of integer.
-
-        // Parse exp = e [ minus / plus ] 1*DIGIT
-        int exp = 0;
-        if (Consume(s, 'e') || Consume(s, 'E')) {
-            if ( ((parseFlags & kParseNumbersAsStringsFlag) != 0) && ((parseFlags & kParseInsituFlag) == 0) ) {
-                s.Push( 'e' );
-            }
-
-			   if (!useDouble) {
-                d = static_cast<double>(use64bit ? i64 : i);
-                useDouble = true;
-            }
-
-            bool expMinus = false;
-            if (Consume(s, '+'))
-                ;
-            else if (Consume(s, '-'))
-                expMinus = true;
-
-            if (RAPIDJSON_LIKELY(s.Peek() >= '0' && s.Peek() <= '9')) {
-                exp = static_cast<int>(s.Take() - '0');
-                if (expMinus) {
-                    while (RAPIDJSON_LIKELY(s.Peek() >= '0' && s.Peek() <= '9')) {
-                        exp = exp * 10 + static_cast<int>(s.Take() - '0');
-                        if (exp >= 214748364) {                         // Issue #313: prevent overflow exponent
-                            while (RAPIDJSON_UNLIKELY(s.Peek() >= '0' && s.Peek() <= '9'))  // Consume the rest of exponent
-                                s.Take();
-                        }
-                    }
-                }
-                else {  // positive exp
-                    int maxExp = 308 - expFrac;
-                    while (RAPIDJSON_LIKELY(s.Peek() >= '0' && s.Peek() <= '9')) {
-                        exp = exp * 10 + static_cast<int>(s.Take() - '0');
-                        if (RAPIDJSON_UNLIKELY(exp > maxExp))
-                            RAPIDJSON_PARSE_ERROR(kParseErrorNumberTooBig, startOffset);
-                    }
-                }
-            }
-            else
-                RAPIDJSON_PARSE_ERROR(kParseErrorNumberMissExponent, s.Tell());
-
-            if (expMinus)
-                exp = -exp;
-        }
-
-        // Finish parsing, call event according to the type of number.
-        bool cont = true;
-
-        if (parseFlags & kParseNumbersAsStringsFlag) {
-            if (parseFlags & kParseInsituFlag) {
-                s.Pop();  // Pop stack no matter if it will be used or not.
-                typename InputStream::Ch* head = is.PutBegin();
-                const size_t length = s.Tell() - startOffset;
-                RAPIDJSON_ASSERT(length <= 0xFFFFFFFF);
-                // unable to insert the \0 character here, it will erase the comma after this number
-                const typename TargetEncoding::Ch* const str = reinterpret_cast<typename TargetEncoding::Ch*>(head);
-                cont = handler.RawNumber(str, SizeType(length), false);
-            }
-            else {
-                StackStream<typename TargetEncoding::Ch> stackStream(stack_);
-                SizeType numCharsToCopy = static_cast<SizeType>(s.Length());
-                while (numCharsToCopy--) {
-                    Transcoder<SourceEncoding, TargetEncoding>::Transcode(is, stackStream);
-                }
-                stackStream.Put('\0');
-                const typename TargetEncoding::Ch* str = stackStream.Pop();
-                const SizeType length = static_cast<SizeType>(stackStream.Length()) - 1;
-                cont = handler.RawNumber(str, SizeType(length), true);
-            }
-        }
-        else {
-           size_t length = s.Length();
-           const char* decimal = s.Pop();  // Pop stack no matter if it will be used or not.
-
-           if (useDouble) {
-               int p = exp + expFrac;
-               if (parseFlags & kParseFullPrecisionFlag)
-                   d = internal::StrtodFullPrecision(d, p, decimal, length, decimalPosition, exp);
-               else
-                   d = internal::StrtodNormalPrecision(d, p);
-
-               cont = handler.Double(minus ? -d : d);
-           }
-           else {
-               if (use64bit) {
-                   if (minus)
-                       cont = handler.Int64(static_cast<int64_t>(~i64 + 1));
-                   else
-                       cont = handler.Uint64(i64);
-               }
-               else {
-                   if (minus)
-                       cont = handler.Int(static_cast<int32_t>(~i + 1));
-                   else
-                       cont = handler.Uint(i);
-               }
-           }
-        }
-        if (RAPIDJSON_UNLIKELY(!cont))
-            RAPIDJSON_PARSE_ERROR(kParseErrorTermination, startOffset);
-    }
-
-    // Parse any JSON value
-    template<unsigned parseFlags, typename InputStream, typename Handler>
-    void ParseValue(InputStream& is, Handler& handler) {
-        switch (is.Peek()) {
-            case 'n': ParseNull  <parseFlags>(is, handler); break;
-            case 't': ParseTrue  <parseFlags>(is, handler); break;
-            case 'f': ParseFalse <parseFlags>(is, handler); break;
-            case '"': ParseString<parseFlags>(is, handler); break;
-            case '{': ParseObject<parseFlags>(is, handler); break;
-            case '[': ParseArray <parseFlags>(is, handler); break;
-            default : 
-                      ParseNumber<parseFlags>(is, handler);
-                      break;
-                      
-        }
-    }
-
-    // Iterative Parsing
-
-    // States
-    enum IterativeParsingState {
-        IterativeParsingStartState = 0,
-        IterativeParsingFinishState,
-        IterativeParsingErrorState,
-
-        // Object states
-        IterativeParsingObjectInitialState,
-        IterativeParsingMemberKeyState,
-        IterativeParsingKeyValueDelimiterState,
-        IterativeParsingMemberValueState,
-        IterativeParsingMemberDelimiterState,
-        IterativeParsingObjectFinishState,
-
-        // Array states
-        IterativeParsingArrayInitialState,
-        IterativeParsingElementState,
-        IterativeParsingElementDelimiterState,
-        IterativeParsingArrayFinishState,
-
-        // Single value state
-        IterativeParsingValueState
-    };
-
-    enum { cIterativeParsingStateCount = IterativeParsingValueState + 1 };
-
-    // Tokens
-    enum Token {
-        LeftBracketToken = 0,
-        RightBracketToken,
-
-        LeftCurlyBracketToken,
-        RightCurlyBracketToken,
-
-        CommaToken,
-        ColonToken,
-
-        StringToken,
-        FalseToken,
-        TrueToken,
-        NullToken,
-        NumberToken,
-
-        kTokenCount
-    };
-
-    RAPIDJSON_FORCEINLINE Token Tokenize(Ch c) {
-
-//!@cond RAPIDJSON_HIDDEN_FROM_DOXYGEN
-#define N NumberToken
-#define N16 N,N,N,N,N,N,N,N,N,N,N,N,N,N,N,N
-        // Maps from ASCII to Token
-        static const unsigned char tokenMap[256] = {
-            N16, // 00~0F
-            N16, // 10~1F
-            N, N, StringToken, N, N, N, N, N, N, N, N, N, CommaToken, N, N, N, // 20~2F
-            N, N, N, N, N, N, N, N, N, N, ColonToken, N, N, N, N, N, // 30~3F
-            N16, // 40~4F
-            N, N, N, N, N, N, N, N, N, N, N, LeftBracketToken, N, RightBracketToken, N, N, // 50~5F
-            N, N, N, N, N, N, FalseToken, N, N, N, N, N, N, N, NullToken, N, // 60~6F
-            N, N, N, N, TrueToken, N, N, N, N, N, N, LeftCurlyBracketToken, N, RightCurlyBracketToken, N, N, // 70~7F
-            N16, N16, N16, N16, N16, N16, N16, N16 // 80~FF
-        };
-#undef N
-#undef N16
-//!@endcond
-        
-        if (sizeof(Ch) == 1 || static_cast<unsigned>(c) < 256)
-            return static_cast<Token>(tokenMap[static_cast<unsigned char>(c)]);
-        else
-            return NumberToken;
-    }
-
-    RAPIDJSON_FORCEINLINE IterativeParsingState Predict(IterativeParsingState state, Token token) {
-        // current state x one lookahead token -> new state
-        static const char G[cIterativeParsingStateCount][kTokenCount] = {
-            // Start
-            {
-                IterativeParsingArrayInitialState,  // Left bracket
-                IterativeParsingErrorState,         // Right bracket
-                IterativeParsingObjectInitialState, // Left curly bracket
-                IterativeParsingErrorState,         // Right curly bracket
-                IterativeParsingErrorState,         // Comma
-                IterativeParsingErrorState,         // Colon
-                IterativeParsingValueState,         // String
-                IterativeParsingValueState,         // False
-                IterativeParsingValueState,         // True
-                IterativeParsingValueState,         // Null
-                IterativeParsingValueState          // Number
-            },
-            // Finish(sink state)
-            {
-                IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState,
-                IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState,
-                IterativeParsingErrorState
-            },
-            // Error(sink state)
-            {
-                IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState,
-                IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState,
-                IterativeParsingErrorState
-            },
-            // ObjectInitial
-            {
-                IterativeParsingErrorState,         // Left bracket
-                IterativeParsingErrorState,         // Right bracket
-                IterativeParsingErrorState,         // Left curly bracket
-                IterativeParsingObjectFinishState,  // Right curly bracket
-                IterativeParsingErrorState,         // Comma
-                IterativeParsingErrorState,         // Colon
-                IterativeParsingMemberKeyState,     // String
-                IterativeParsingErrorState,         // False
-                IterativeParsingErrorState,         // True
-                IterativeParsingErrorState,         // Null
-                IterativeParsingErrorState          // Number
-            },
-            // MemberKey
-            {
-                IterativeParsingErrorState,             // Left bracket
-                IterativeParsingErrorState,             // Right bracket
-                IterativeParsingErrorState,             // Left curly bracket
-                IterativeParsingErrorState,             // Right curly bracket
-                IterativeParsingErrorState,             // Comma
-                IterativeParsingKeyValueDelimiterState, // Colon
-                IterativeParsingErrorState,             // String
-                IterativeParsingErrorState,             // False
-                IterativeParsingErrorState,             // True
-                IterativeParsingErrorState,             // Null
-                IterativeParsingErrorState              // Number
-            },
-            // KeyValueDelimiter
-            {
-                IterativeParsingArrayInitialState,      // Left bracket(push MemberValue state)
-                IterativeParsingErrorState,             // Right bracket
-                IterativeParsingObjectInitialState,     // Left curly bracket(push MemberValue state)
-                IterativeParsingErrorState,             // Right curly bracket
-                IterativeParsingErrorState,             // Comma
-                IterativeParsingErrorState,             // Colon
-                IterativeParsingMemberValueState,       // String
-                IterativeParsingMemberValueState,       // False
-                IterativeParsingMemberValueState,       // True
-                IterativeParsingMemberValueState,       // Null
-                IterativeParsingMemberValueState        // Number
-            },
-            // MemberValue
-            {
-                IterativeParsingErrorState,             // Left bracket
-                IterativeParsingErrorState,             // Right bracket
-                IterativeParsingErrorState,             // Left curly bracket
-                IterativeParsingObjectFinishState,      // Right curly bracket
-                IterativeParsingMemberDelimiterState,   // Comma
-                IterativeParsingErrorState,             // Colon
-                IterativeParsingErrorState,             // String
-                IterativeParsingErrorState,             // False
-                IterativeParsingErrorState,             // True
-                IterativeParsingErrorState,             // Null
-                IterativeParsingErrorState              // Number
-            },
-            // MemberDelimiter
-            {
-                IterativeParsingErrorState,         // Left bracket
-                IterativeParsingErrorState,         // Right bracket
-                IterativeParsingErrorState,         // Left curly bracket
-                IterativeParsingObjectFinishState,  // Right curly bracket
-                IterativeParsingErrorState,         // Comma
-                IterativeParsingErrorState,         // Colon
-                IterativeParsingMemberKeyState,     // String
-                IterativeParsingErrorState,         // False
-                IterativeParsingErrorState,         // True
-                IterativeParsingErrorState,         // Null
-                IterativeParsingErrorState          // Number
-            },
-            // ObjectFinish(sink state)
-            {
-                IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState,
-                IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState,
-                IterativeParsingErrorState
-            },
-            // ArrayInitial
-            {
-                IterativeParsingArrayInitialState,      // Left bracket(push Element state)
-                IterativeParsingArrayFinishState,       // Right bracket
-                IterativeParsingObjectInitialState,     // Left curly bracket(push Element state)
-                IterativeParsingErrorState,             // Right curly bracket
-                IterativeParsingErrorState,             // Comma
-                IterativeParsingErrorState,             // Colon
-                IterativeParsingElementState,           // String
-                IterativeParsingElementState,           // False
-                IterativeParsingElementState,           // True
-                IterativeParsingElementState,           // Null
-                IterativeParsingElementState            // Number
-            },
-            // Element
-            {
-                IterativeParsingErrorState,             // Left bracket
-                IterativeParsingArrayFinishState,       // Right bracket
-                IterativeParsingErrorState,             // Left curly bracket
-                IterativeParsingErrorState,             // Right curly bracket
-                IterativeParsingElementDelimiterState,  // Comma
-                IterativeParsingErrorState,             // Colon
-                IterativeParsingErrorState,             // String
-                IterativeParsingErrorState,             // False
-                IterativeParsingErrorState,             // True
-                IterativeParsingErrorState,             // Null
-                IterativeParsingErrorState              // Number
-            },
-            // ElementDelimiter
-            {
-                IterativeParsingArrayInitialState,      // Left bracket(push Element state)
-                IterativeParsingArrayFinishState,       // Right bracket
-                IterativeParsingObjectInitialState,     // Left curly bracket(push Element state)
-                IterativeParsingErrorState,             // Right curly bracket
-                IterativeParsingErrorState,             // Comma
-                IterativeParsingErrorState,             // Colon
-                IterativeParsingElementState,           // String
-                IterativeParsingElementState,           // False
-                IterativeParsingElementState,           // True
-                IterativeParsingElementState,           // Null
-                IterativeParsingElementState            // Number
-            },
-            // ArrayFinish(sink state)
-            {
-                IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState,
-                IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState,
-                IterativeParsingErrorState
-            },
-            // Single Value (sink state)
-            {
-                IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState,
-                IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState, IterativeParsingErrorState,
-                IterativeParsingErrorState
-            }
-        }; // End of G
-
-        return static_cast<IterativeParsingState>(G[state][token]);
-    }
-
-    // Make an advance in the token stream and state based on the candidate destination state which was returned by Transit().
-    // May return a new state on state pop.
-    template <unsigned parseFlags, typename InputStream, typename Handler>
-    RAPIDJSON_FORCEINLINE IterativeParsingState Transit(IterativeParsingState src, Token token, IterativeParsingState dst, InputStream& is, Handler& handler) {
-        (void)token;
-
-        switch (dst) {
-        case IterativeParsingErrorState:
-            return dst;
-
-        case IterativeParsingObjectInitialState:
-        case IterativeParsingArrayInitialState:
-        {
-            // Push the state(Element or MemeberValue) if we are nested in another array or value of member.
-            // In this way we can get the correct state on ObjectFinish or ArrayFinish by frame pop.
-            IterativeParsingState n = src;
-            if (src == IterativeParsingArrayInitialState || src == IterativeParsingElementDelimiterState)
-                n = IterativeParsingElementState;
-            else if (src == IterativeParsingKeyValueDelimiterState)
-                n = IterativeParsingMemberValueState;
-            // Push current state.
-            *stack_.template Push<SizeType>(1) = n;
-            // Initialize and push the member/element count.
-            *stack_.template Push<SizeType>(1) = 0;
-            // Call handler
-            bool hr = (dst == IterativeParsingObjectInitialState) ? handler.StartObject() : handler.StartArray();
-            // On handler short circuits the parsing.
-            if (!hr) {
-                RAPIDJSON_PARSE_ERROR_NORETURN(kParseErrorTermination, is.Tell());
-                return IterativeParsingErrorState;
-            }
-            else {
-                is.Take();
-                return dst;
-            }
-        }
-
-        case IterativeParsingMemberKeyState:
-            ParseString<parseFlags>(is, handler, true);
-            if (HasParseError())
-                return IterativeParsingErrorState;
-            else
-                return dst;
-
-        case IterativeParsingKeyValueDelimiterState:
-            RAPIDJSON_ASSERT(token == ColonToken);
-            is.Take();
-            return dst;
-
-        case IterativeParsingMemberValueState:
-            // Must be non-compound value. Or it would be ObjectInitial or ArrayInitial state.
-            ParseValue<parseFlags>(is, handler);
-            if (HasParseError()) {
-                return IterativeParsingErrorState;
-            }
-            return dst;
-
-        case IterativeParsingElementState:
-            // Must be non-compound value. Or it would be ObjectInitial or ArrayInitial state.
-            ParseValue<parseFlags>(is, handler);
-            if (HasParseError()) {
-                return IterativeParsingErrorState;
-            }
-            return dst;
-
-        case IterativeParsingMemberDelimiterState:
-        case IterativeParsingElementDelimiterState:
-            is.Take();
-            // Update member/element count.
-            *stack_.template Top<SizeType>() = *stack_.template Top<SizeType>() + 1;
-            return dst;
-
-        case IterativeParsingObjectFinishState:
-        {
-            // Transit from delimiter is only allowed when trailing commas are enabled
-            if (!(parseFlags & kParseTrailingCommasFlag) && src == IterativeParsingMemberDelimiterState) {
-                RAPIDJSON_PARSE_ERROR_NORETURN(kParseErrorObjectMissName, is.Tell());
-                return IterativeParsingErrorState;
-            }
-            // Get member count.
-            SizeType c = *stack_.template Pop<SizeType>(1);
-            // If the object is not empty, count the last member.
-            if (src == IterativeParsingMemberValueState)
-                ++c;
-            // Restore the state.
-            IterativeParsingState n = static_cast<IterativeParsingState>(*stack_.template Pop<SizeType>(1));
-            // Transit to Finish state if this is the topmost scope.
-            if (n == IterativeParsingStartState)
-                n = IterativeParsingFinishState;
-            // Call handler
-            bool hr = handler.EndObject(c);
-            // On handler short circuits the parsing.
-            if (!hr) {
-                RAPIDJSON_PARSE_ERROR_NORETURN(kParseErrorTermination, is.Tell());
-                return IterativeParsingErrorState;
-            }
-            else {
-                is.Take();
-                return n;
-            }
-        }
-
-        case IterativeParsingArrayFinishState:
-        {
-            // Transit from delimiter is only allowed when trailing commas are enabled
-            if (!(parseFlags & kParseTrailingCommasFlag) && src == IterativeParsingElementDelimiterState) {
-                RAPIDJSON_PARSE_ERROR_NORETURN(kParseErrorValueInvalid, is.Tell());
-                return IterativeParsingErrorState;
-            }
-            // Get element count.
-            SizeType c = *stack_.template Pop<SizeType>(1);
-            // If the array is not empty, count the last element.
-            if (src == IterativeParsingElementState)
-                ++c;
-            // Restore the state.
-            IterativeParsingState n = static_cast<IterativeParsingState>(*stack_.template Pop<SizeType>(1));
-            // Transit to Finish state if this is the topmost scope.
-            if (n == IterativeParsingStartState)
-                n = IterativeParsingFinishState;
-            // Call handler
-            bool hr = handler.EndArray(c);
-            // On handler short circuits the parsing.
-            if (!hr) {
-                RAPIDJSON_PARSE_ERROR_NORETURN(kParseErrorTermination, is.Tell());
-                return IterativeParsingErrorState;
-            }
-            else {
-                is.Take();
-                return n;
-            }
-        }
-
-        default:
-            // This branch is for IterativeParsingValueState actually.
-            // Use `default:` rather than
-            // `case IterativeParsingValueState:` is for code coverage.
-
-            // The IterativeParsingStartState is not enumerated in this switch-case.
-            // It is impossible for that case. And it can be caught by following assertion.
-
-            // The IterativeParsingFinishState is not enumerated in this switch-case either.
-            // It is a "derivative" state which cannot triggered from Predict() directly.
-            // Therefore it cannot happen here. And it can be caught by following assertion.
-            RAPIDJSON_ASSERT(dst == IterativeParsingValueState);
-
-            // Must be non-compound value. Or it would be ObjectInitial or ArrayInitial state.
-            ParseValue<parseFlags>(is, handler);
-            if (HasParseError()) {
-                return IterativeParsingErrorState;
-            }
-            return IterativeParsingFinishState;
-        }
-    }
-
-    template <typename InputStream>
-    void HandleError(IterativeParsingState src, InputStream& is) {
-        if (HasParseError()) {
-            // Error flag has been set.
-            return;
-        }
-        
-        switch (src) {
-        case IterativeParsingStartState:            RAPIDJSON_PARSE_ERROR(kParseErrorDocumentEmpty, is.Tell()); return;
-        case IterativeParsingFinishState:           RAPIDJSON_PARSE_ERROR(kParseErrorDocumentRootNotSingular, is.Tell()); return;
-        case IterativeParsingObjectInitialState:
-        case IterativeParsingMemberDelimiterState:  RAPIDJSON_PARSE_ERROR(kParseErrorObjectMissName, is.Tell()); return;
-        case IterativeParsingMemberKeyState:        RAPIDJSON_PARSE_ERROR(kParseErrorObjectMissColon, is.Tell()); return;
-        case IterativeParsingMemberValueState:      RAPIDJSON_PARSE_ERROR(kParseErrorObjectMissCommaOrCurlyBracket, is.Tell()); return;
-        case IterativeParsingKeyValueDelimiterState:
-        case IterativeParsingArrayInitialState:
-        case IterativeParsingElementDelimiterState: RAPIDJSON_PARSE_ERROR(kParseErrorValueInvalid, is.Tell()); return;
-        case IterativeParsingElementState:          RAPIDJSON_PARSE_ERROR(kParseErrorArrayMissCommaOrSquareBracket, is.Tell()); return;
-        default:                                    RAPIDJSON_PARSE_ERROR(kParseErrorUnspecificSyntaxError, is.Tell()); return;
-        }       
-    }
-
-    template <unsigned parseFlags, typename InputStream, typename Handler>
-    ParseResult IterativeParse(InputStream& is, Handler& handler) {
-        parseResult_.Clear();
-        ClearStackOnExit scope(*this);
-        IterativeParsingState state = IterativeParsingStartState;
-
-        SkipWhitespaceAndComments<parseFlags>(is);
-        RAPIDJSON_PARSE_ERROR_EARLY_RETURN(parseResult_);
-        while (is.Peek() != '\0') {
-            Token t = Tokenize(is.Peek());
-            IterativeParsingState n = Predict(state, t);
-            IterativeParsingState d = Transit<parseFlags>(state, t, n, is, handler);
-
-            if (d == IterativeParsingErrorState) {
-                HandleError(state, is);
-                break;
-            }
-
-            state = d;
-
-            // Do not further consume streams if a root JSON has been parsed.
-            if ((parseFlags & kParseStopWhenDoneFlag) && state == IterativeParsingFinishState)
-                break;
-
-            SkipWhitespaceAndComments<parseFlags>(is);
-            RAPIDJSON_PARSE_ERROR_EARLY_RETURN(parseResult_);
-        }
-
-        // Handle the end of file.
-        if (state != IterativeParsingFinishState)
-            HandleError(state, is);
-
-        return parseResult_;
-    }
-
-    static const size_t kDefaultStackCapacity = 256;    //!< Default stack capacity in bytes for storing a single decoded string.
-    internal::Stack<StackAllocator> stack_;  //!< A stack for storing decoded string temporarily during non-destructive parsing.
-    ParseResult parseResult_;
-}; // class GenericReader
-
-//! Reader with UTF8 encoding and default allocator.
-typedef GenericReader<UTF8<>, UTF8<> > Reader;
-
-RAPIDJSON_NAMESPACE_END
-
-#ifdef __clang__
-RAPIDJSON_DIAG_POP
-#endif
-
-
-#ifdef __GNUC__
-RAPIDJSON_DIAG_POP
-#endif
-
-#ifdef _MSC_VER
-RAPIDJSON_DIAG_POP
-#endif
-
-#endif // RAPIDJSON_READER_H_
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/schema.h b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/schema.h
deleted file mode 100644
index 26da8a6..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/schema.h
+++ /dev/null
@@ -1,2007 +0,0 @@
-// Tencent is pleased to support the open source community by making RapidJSON available->
-// 
-// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip-> All rights reserved->
-//
-// Licensed under the MIT License (the "License"); you may not use this file except
-// in compliance with the License-> You may obtain a copy of the License at
-//
-// http://opensource->org/licenses/MIT
-//
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied-> See the License for the 
-// specific language governing permissions and limitations under the License->
-
-#ifndef RAPIDJSON_SCHEMA_H_
-#define RAPIDJSON_SCHEMA_H_
-
-#include "document.h"
-#include "pointer.h"
-#include <cmath> // abs, floor
-
-#ifdef __clang__
-RAPIDJSON_DIAG_PUSH
-RAPIDJSON_DIAG_OFF(weak-vtables)
-RAPIDJSON_DIAG_OFF(exit-time-destructors)
-RAPIDJSON_DIAG_OFF(c++98-compat-pedantic)
-#endif
-
-#if !defined(RAPIDJSON_SCHEMA_USE_INTERNALREGEX)
-#define RAPIDJSON_SCHEMA_USE_INTERNALREGEX 1
-#else
-#define RAPIDJSON_SCHEMA_USE_INTERNALREGEX 0
-#endif
-
-#if !RAPIDJSON_SCHEMA_USE_INTERNALREGEX && !defined(RAPIDJSON_SCHEMA_USE_STDREGEX) && (__cplusplus >=201103L || (defined(_MSC_VER) && _MSC_VER >= 1800))
-#define RAPIDJSON_SCHEMA_USE_STDREGEX 1
-#else
-#define RAPIDJSON_SCHEMA_USE_STDREGEX 0
-#endif
-
-#if RAPIDJSON_SCHEMA_USE_INTERNALREGEX
-#include "internal/regex.h"
-#elif RAPIDJSON_SCHEMA_USE_STDREGEX
-#include <regex>
-#endif
-
-#if RAPIDJSON_SCHEMA_USE_INTERNALREGEX || RAPIDJSON_SCHEMA_USE_STDREGEX
-#define RAPIDJSON_SCHEMA_HAS_REGEX 1
-#else
-#define RAPIDJSON_SCHEMA_HAS_REGEX 0
-#endif
-
-#ifndef RAPIDJSON_SCHEMA_VERBOSE
-#define RAPIDJSON_SCHEMA_VERBOSE 0
-#endif
-
-#if RAPIDJSON_SCHEMA_VERBOSE
-#include "stringbuffer.h"
-#endif
-
-#if defined(__GNUC__)
-RAPIDJSON_DIAG_PUSH
-RAPIDJSON_DIAG_OFF(effc++)
-#endif
-
-#ifdef __clang__
-RAPIDJSON_DIAG_PUSH
-RAPIDJSON_DIAG_OFF(variadic-macros)
-#endif
-
-RAPIDJSON_NAMESPACE_BEGIN
-
-///////////////////////////////////////////////////////////////////////////////
-// Verbose Utilities
-
-#if RAPIDJSON_SCHEMA_VERBOSE
-
-namespace internal {
-
-inline void PrintInvalidKeyword(const char* keyword) {
-    printf("Fail keyword: %s\n", keyword);
-}
-
-inline void PrintInvalidKeyword(const wchar_t* keyword) {
-    wprintf(L"Fail keyword: %ls\n", keyword);
-}
-
-inline void PrintInvalidDocument(const char* document) {
-    printf("Fail document: %s\n\n", document);
-}
-
-inline void PrintInvalidDocument(const wchar_t* document) {
-    wprintf(L"Fail document: %ls\n\n", document);
-}
-
-inline void PrintValidatorPointers(unsigned depth, const char* s, const char* d) {
-    printf("S: %*s%s\nD: %*s%s\n\n", depth * 4, " ", s, depth * 4, " ", d);
-}
-
-inline void PrintValidatorPointers(unsigned depth, const wchar_t* s, const wchar_t* d) {
-    wprintf(L"S: %*ls%ls\nD: %*ls%ls\n\n", depth * 4, L" ", s, depth * 4, L" ", d);
-}
-
-} // namespace internal
-
-#endif // RAPIDJSON_SCHEMA_VERBOSE
-
-///////////////////////////////////////////////////////////////////////////////
-// RAPIDJSON_INVALID_KEYWORD_RETURN
-
-#if RAPIDJSON_SCHEMA_VERBOSE
-#define RAPIDJSON_INVALID_KEYWORD_VERBOSE(keyword) internal::PrintInvalidKeyword(keyword)
-#else
-#define RAPIDJSON_INVALID_KEYWORD_VERBOSE(keyword)
-#endif
-
-#define RAPIDJSON_INVALID_KEYWORD_RETURN(keyword)\
-RAPIDJSON_MULTILINEMACRO_BEGIN\
-    context.invalidKeyword = keyword.GetString();\
-    RAPIDJSON_INVALID_KEYWORD_VERBOSE(keyword.GetString());\
-    return false;\
-RAPIDJSON_MULTILINEMACRO_END
-
-///////////////////////////////////////////////////////////////////////////////
-// Forward declarations
-
-template <typename ValueType, typename Allocator>
-class GenericSchemaDocument;
-
-namespace internal {
-
-template <typename SchemaDocumentType>
-class Schema;
-
-///////////////////////////////////////////////////////////////////////////////
-// ISchemaValidator
-
-class ISchemaValidator {
-public:
-    virtual ~ISchemaValidator() {}
-    virtual bool IsValid() const = 0;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-// ISchemaStateFactory
-
-template <typename SchemaType>
-class ISchemaStateFactory {
-public:
-    virtual ~ISchemaStateFactory() {}
-    virtual ISchemaValidator* CreateSchemaValidator(const SchemaType&) = 0;
-    virtual void DestroySchemaValidator(ISchemaValidator* validator) = 0;
-    virtual void* CreateHasher() = 0;
-    virtual uint64_t GetHashCode(void* hasher) = 0;
-    virtual void DestroryHasher(void* hasher) = 0;
-    virtual void* MallocState(size_t size) = 0;
-    virtual void* ReallocState(void* originalPtr, size_t originalSize, size_t newSize) = 0;
-    virtual void FreeState(void* p) = 0;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-// Hasher
-
-// For comparison of compound value
-template<typename Encoding, typename Allocator>
-class Hasher {
-public:
-    typedef typename Encoding::Ch Ch;
-
-    Hasher(Allocator* allocator = 0, size_t stackCapacity = kDefaultSize) : stack_(allocator, stackCapacity) {}
-
-    bool Null() { return WriteType(kNullType); }
-    bool Bool(bool b) { return WriteType(b ? kTrueType : kFalseType); }
-    bool Int(int i) { Number n; n.u.i = i; n.d = static_cast<double>(i); return WriteNumber(n); }
-    bool Uint(unsigned u) { Number n; n.u.u = u; n.d = static_cast<double>(u); return WriteNumber(n); }
-    bool Int64(int64_t i) { Number n; n.u.i = i; n.d = static_cast<double>(i); return WriteNumber(n); }
-    bool Uint64(uint64_t u) { Number n; n.u.u = u; n.d = static_cast<double>(u); return WriteNumber(n); }
-    bool Double(double d) { 
-        Number n; 
-        if (d < 0) n.u.i = static_cast<int64_t>(d);
-        else       n.u.u = static_cast<uint64_t>(d); 
-        n.d = d;
-        return WriteNumber(n);
-    }
-
-    bool RawNumber(const Ch* str, SizeType len, bool) {
-        WriteBuffer(kNumberType, str, len * sizeof(Ch));
-        return true;
-    }
-
-    bool String(const Ch* str, SizeType len, bool) {
-        WriteBuffer(kStringType, str, len * sizeof(Ch));
-        return true;
-    }
-
-    bool StartObject() { return true; }
-    bool Key(const Ch* str, SizeType len, bool copy) { return String(str, len, copy); }
-    bool EndObject(SizeType memberCount) { 
-        uint64_t h = Hash(0, kObjectType);
-        uint64_t* kv = stack_.template Pop<uint64_t>(memberCount * 2);
-        for (SizeType i = 0; i < memberCount; i++)
-            h ^= Hash(kv[i * 2], kv[i * 2 + 1]);  // Use xor to achieve member order insensitive
-        *stack_.template Push<uint64_t>() = h;
-        return true;
-    }
-    
-    bool StartArray() { return true; }
-    bool EndArray(SizeType elementCount) { 
-        uint64_t h = Hash(0, kArrayType);
-        uint64_t* e = stack_.template Pop<uint64_t>(elementCount);
-        for (SizeType i = 0; i < elementCount; i++)
-            h = Hash(h, e[i]); // Use hash to achieve element order sensitive
-        *stack_.template Push<uint64_t>() = h;
-        return true;
-    }
-
-    bool IsValid() const { return stack_.GetSize() == sizeof(uint64_t); }
-
-    uint64_t GetHashCode() const {
-        RAPIDJSON_ASSERT(IsValid());
-        return *stack_.template Top<uint64_t>();
-    }
-
-private:
-    static const size_t kDefaultSize = 256;
-    struct Number {
-        union U {
-            uint64_t u;
-            int64_t i;
-        }u;
-        double d;
-    };
-
-    bool WriteType(Type type) { return WriteBuffer(type, 0, 0); }
-    
-    bool WriteNumber(const Number& n) { return WriteBuffer(kNumberType, &n, sizeof(n)); }
-    
-    bool WriteBuffer(Type type, const void* data, size_t len) {
-        // FNV-1a from http://isthe.com/chongo/tech/comp/fnv/
-        uint64_t h = Hash(RAPIDJSON_UINT64_C2(0x84222325, 0xcbf29ce4), type);
-        const unsigned char* d = static_cast<const unsigned char*>(data);
-        for (size_t i = 0; i < len; i++)
-            h = Hash(h, d[i]);
-        *stack_.template Push<uint64_t>() = h;
-        return true;
-    }
-
-    static uint64_t Hash(uint64_t h, uint64_t d) {
-        static const uint64_t kPrime = RAPIDJSON_UINT64_C2(0x00000100, 0x000001b3);
-        h ^= d;
-        h *= kPrime;
-        return h;
-    }
-
-    Stack<Allocator> stack_;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-// SchemaValidationContext
-
-template <typename SchemaDocumentType>
-struct SchemaValidationContext {
-    typedef Schema<SchemaDocumentType> SchemaType;
-    typedef ISchemaStateFactory<SchemaType> SchemaValidatorFactoryType;
-    typedef typename SchemaType::ValueType ValueType;
-    typedef typename ValueType::Ch Ch;
-
-    enum PatternValidatorType {
-        kPatternValidatorOnly,
-        kPatternValidatorWithProperty,
-        kPatternValidatorWithAdditionalProperty
-    };
-
-    SchemaValidationContext(SchemaValidatorFactoryType& f, const SchemaType* s) :
-        factory(f),
-        schema(s),
-        valueSchema(),
-        invalidKeyword(),
-        hasher(),
-        arrayElementHashCodes(),
-        validators(),
-        validatorCount(),
-        patternPropertiesValidators(),
-        patternPropertiesValidatorCount(),
-        patternPropertiesSchemas(),
-        patternPropertiesSchemaCount(),
-        valuePatternValidatorType(kPatternValidatorOnly),
-        objectDependencies(),
-        inArray(false),
-        valueUniqueness(false),
-        arrayUniqueness(false)
-    {
-    }
-
-    ~SchemaValidationContext() {
-        if (hasher)
-            factory.DestroryHasher(hasher);
-        if (validators) {
-            for (SizeType i = 0; i < validatorCount; i++)
-                factory.DestroySchemaValidator(validators[i]);
-            factory.FreeState(validators);
-        }
-        if (patternPropertiesValidators) {
-            for (SizeType i = 0; i < patternPropertiesValidatorCount; i++)
-                factory.DestroySchemaValidator(patternPropertiesValidators[i]);
-            factory.FreeState(patternPropertiesValidators);
-        }
-        if (patternPropertiesSchemas)
-            factory.FreeState(patternPropertiesSchemas);
-        if (objectDependencies)
-            factory.FreeState(objectDependencies);
-    }
-
-    SchemaValidatorFactoryType& factory;
-    const SchemaType* schema;
-    const SchemaType* valueSchema;
-    const Ch* invalidKeyword;
-    void* hasher; // Only validator access
-    void* arrayElementHashCodes; // Only validator access this
-    ISchemaValidator** validators;
-    SizeType validatorCount;
-    ISchemaValidator** patternPropertiesValidators;
-    SizeType patternPropertiesValidatorCount;
-    const SchemaType** patternPropertiesSchemas;
-    SizeType patternPropertiesSchemaCount;
-    PatternValidatorType valuePatternValidatorType;
-    PatternValidatorType objectPatternValidatorType;
-    SizeType objectRequiredCount;
-    SizeType arrayElementIndex;
-    bool* objectDependencies;
-    bool inArray;
-    bool valueUniqueness;
-    bool arrayUniqueness;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-// Schema
-
-template <typename SchemaDocumentType>
-class Schema {
-public:
-    typedef typename SchemaDocumentType::ValueType ValueType;
-    typedef typename SchemaDocumentType::AllocatorType AllocatorType;
-    typedef typename SchemaDocumentType::PointerType PointerType;
-    typedef typename ValueType::EncodingType EncodingType;
-    typedef typename EncodingType::Ch Ch;
-    typedef SchemaValidationContext<SchemaDocumentType> Context;
-    typedef Schema<SchemaDocumentType> SchemaType;
-    typedef GenericValue<EncodingType, AllocatorType> SValue;
-    friend class GenericSchemaDocument<ValueType, AllocatorType>;
-
-    Schema(SchemaDocumentType* schemaDocument, const PointerType& p, const ValueType& value, const ValueType& document, AllocatorType* allocator) :
-        allocator_(allocator),
-        enum_(),
-        enumCount_(),
-        not_(),
-        type_((1 << kTotalSchemaType) - 1), // typeless
-        validatorCount_(),
-        properties_(),
-        additionalPropertiesSchema_(),
-        patternProperties_(),
-        patternPropertyCount_(),
-        propertyCount_(),
-        requiredCount_(),
-        minProperties_(),
-        maxProperties_(SizeType(~0)),
-        additionalProperties_(true),
-        hasDependencies_(),
-        hasSchemaDependencies_(),
-        additionalItemsSchema_(),
-        itemsList_(),
-        itemsTuple_(),
-        itemsTupleCount_(),
-        minItems_(),
-        maxItems_(SizeType(~0)),
-        additionalItems_(true),
-        uniqueItems_(false),
-        pattern_(),
-        minLength_(0),
-        maxLength_(~SizeType(0)),
-        exclusiveMinimum_(false),
-        exclusiveMaximum_(false)
-    {
-        typedef typename SchemaDocumentType::ValueType ValueType;
-        typedef typename ValueType::ConstValueIterator ConstValueIterator;
-        typedef typename ValueType::ConstMemberIterator ConstMemberIterator;
-
-        if (!value.IsObject())
-            return;
-
-        if (const ValueType* v = GetMember(value, GetTypeString())) {
-            type_ = 0;
-            if (v->IsString())
-                AddType(*v);
-            else if (v->IsArray())
-                for (ConstValueIterator itr = v->Begin(); itr != v->End(); ++itr)
-                    AddType(*itr);
-        }
-
-        if (const ValueType* v = GetMember(value, GetEnumString()))
-            if (v->IsArray() && v->Size() > 0) {
-                enum_ = static_cast<uint64_t*>(allocator_->Malloc(sizeof(uint64_t) * v->Size()));
-                for (ConstValueIterator itr = v->Begin(); itr != v->End(); ++itr) {
-                    typedef Hasher<EncodingType, MemoryPoolAllocator<> > EnumHasherType;
-                    char buffer[256 + 24];
-                    MemoryPoolAllocator<> hasherAllocator(buffer, sizeof(buffer));
-                    EnumHasherType h(&hasherAllocator, 256);
-                    itr->Accept(h);
-                    enum_[enumCount_++] = h.GetHashCode();
-                }
-            }
-
-        AssignIfExist(allOf_, *schemaDocument, p, value, GetAllOfString(), document);
-        AssignIfExist(anyOf_, *schemaDocument, p, value, GetAnyOfString(), document);
-        AssignIfExist(oneOf_, *schemaDocument, p, value, GetOneOfString(), document);
-
-        if (const ValueType* v = GetMember(value, GetNotString())) {
-            schemaDocument->CreateSchema(&not_, p.Append(GetNotString(), allocator_), *v, document);
-            notValidatorIndex_ = validatorCount_;
-            validatorCount_++;
-        }
-
-        // Object
-
-        const ValueType* properties = GetMember(value, GetPropertiesString());
-        const ValueType* required = GetMember(value, GetRequiredString());
-        const ValueType* dependencies = GetMember(value, GetDependenciesString());
-        {
-            // Gather properties from properties/required/dependencies
-            SValue allProperties(kArrayType);
-
-            if (properties && properties->IsObject())
-                for (ConstMemberIterator itr = properties->MemberBegin(); itr != properties->MemberEnd(); ++itr)
-                    AddUniqueElement(allProperties, itr->name);
-            
-            if (required && required->IsArray())
-                for (ConstValueIterator itr = required->Begin(); itr != required->End(); ++itr)
-                    if (itr->IsString())
-                        AddUniqueElement(allProperties, *itr);
-
-            if (dependencies && dependencies->IsObject())
-                for (ConstMemberIterator itr = dependencies->MemberBegin(); itr != dependencies->MemberEnd(); ++itr) {
-                    AddUniqueElement(allProperties, itr->name);
-                    if (itr->value.IsArray())
-                        for (ConstValueIterator i = itr->value.Begin(); i != itr->value.End(); ++i)
-                            if (i->IsString())
-                                AddUniqueElement(allProperties, *i);
-                }
-
-            if (allProperties.Size() > 0) {
-                propertyCount_ = allProperties.Size();
-                properties_ = static_cast<Property*>(allocator_->Malloc(sizeof(Property) * propertyCount_));
-                for (SizeType i = 0; i < propertyCount_; i++) {
-                    new (&properties_[i]) Property();
-                    properties_[i].name = allProperties[i];
-                    properties_[i].schema = GetTypeless();
-                }
-            }
-        }
-
-        if (properties && properties->IsObject()) {
-            PointerType q = p.Append(GetPropertiesString(), allocator_);
-            for (ConstMemberIterator itr = properties->MemberBegin(); itr != properties->MemberEnd(); ++itr) {
-                SizeType index;
-                if (FindPropertyIndex(itr->name, &index))
-                    schemaDocument->CreateSchema(&properties_[index].schema, q.Append(itr->name, allocator_), itr->value, document);
-            }
-        }
-
-        if (const ValueType* v = GetMember(value, GetPatternPropertiesString())) {
-            PointerType q = p.Append(GetPatternPropertiesString(), allocator_);
-            patternProperties_ = static_cast<PatternProperty*>(allocator_->Malloc(sizeof(PatternProperty) * v->MemberCount()));
-            patternPropertyCount_ = 0;
-
-            for (ConstMemberIterator itr = v->MemberBegin(); itr != v->MemberEnd(); ++itr) {
-                new (&patternProperties_[patternPropertyCount_]) PatternProperty();
-                patternProperties_[patternPropertyCount_].pattern = CreatePattern(itr->name);
-                schemaDocument->CreateSchema(&patternProperties_[patternPropertyCount_].schema, q.Append(itr->name, allocator_), itr->value, document);
-                patternPropertyCount_++;
-            }
-        }
-
-        if (required && required->IsArray())
-            for (ConstValueIterator itr = required->Begin(); itr != required->End(); ++itr)
-                if (itr->IsString()) {
-                    SizeType index;
-                    if (FindPropertyIndex(*itr, &index)) {
-                        properties_[index].required = true;
-                        requiredCount_++;
-                    }
-                }
-
-        if (dependencies && dependencies->IsObject()) {
-            PointerType q = p.Append(GetDependenciesString(), allocator_);
-            hasDependencies_ = true;
-            for (ConstMemberIterator itr = dependencies->MemberBegin(); itr != dependencies->MemberEnd(); ++itr) {
-                SizeType sourceIndex;
-                if (FindPropertyIndex(itr->name, &sourceIndex)) {
-                    if (itr->value.IsArray()) {
-                        properties_[sourceIndex].dependencies = static_cast<bool*>(allocator_->Malloc(sizeof(bool) * propertyCount_));
-                        std::memset(properties_[sourceIndex].dependencies, 0, sizeof(bool)* propertyCount_);
-                        for (ConstValueIterator targetItr = itr->value.Begin(); targetItr != itr->value.End(); ++targetItr) {
-                            SizeType targetIndex;
-                            if (FindPropertyIndex(*targetItr, &targetIndex))
-                                properties_[sourceIndex].dependencies[targetIndex] = true;
-                        }
-                    }
-                    else if (itr->value.IsObject()) {
-                        hasSchemaDependencies_ = true;
-                        schemaDocument->CreateSchema(&properties_[sourceIndex].dependenciesSchema, q.Append(itr->name, allocator_), itr->value, document);
-                        properties_[sourceIndex].dependenciesValidatorIndex = validatorCount_;
-                        validatorCount_++;
-                    }
-                }
-            }
-        }
-
-        if (const ValueType* v = GetMember(value, GetAdditionalPropertiesString())) {
-            if (v->IsBool())
-                additionalProperties_ = v->GetBool();
-            else if (v->IsObject())
-                schemaDocument->CreateSchema(&additionalPropertiesSchema_, p.Append(GetAdditionalPropertiesString(), allocator_), *v, document);
-        }
-
-        AssignIfExist(minProperties_, value, GetMinPropertiesString());
-        AssignIfExist(maxProperties_, value, GetMaxPropertiesString());
-
-        // Array
-        if (const ValueType* v = GetMember(value, GetItemsString())) {
-            PointerType q = p.Append(GetItemsString(), allocator_);
-            if (v->IsObject()) // List validation
-                schemaDocument->CreateSchema(&itemsList_, q, *v, document);
-            else if (v->IsArray()) { // Tuple validation
-                itemsTuple_ = static_cast<const Schema**>(allocator_->Malloc(sizeof(const Schema*) * v->Size()));
-                SizeType index = 0;
-                for (ConstValueIterator itr = v->Begin(); itr != v->End(); ++itr, index++)
-                    schemaDocument->CreateSchema(&itemsTuple_[itemsTupleCount_++], q.Append(index, allocator_), *itr, document);
-            }
-        }
-
-        AssignIfExist(minItems_, value, GetMinItemsString());
-        AssignIfExist(maxItems_, value, GetMaxItemsString());
-
-        if (const ValueType* v = GetMember(value, GetAdditionalItemsString())) {
-            if (v->IsBool())
-                additionalItems_ = v->GetBool();
-            else if (v->IsObject())
-                schemaDocument->CreateSchema(&additionalItemsSchema_, p.Append(GetAdditionalItemsString(), allocator_), *v, document);
-        }
-
-        AssignIfExist(uniqueItems_, value, GetUniqueItemsString());
-
-        // String
-        AssignIfExist(minLength_, value, GetMinLengthString());
-        AssignIfExist(maxLength_, value, GetMaxLengthString());
-
-        if (const ValueType* v = GetMember(value, GetPatternString()))
-            pattern_ = CreatePattern(*v);
-
-        // Number
-        if (const ValueType* v = GetMember(value, GetMinimumString()))
-            if (v->IsNumber())
-                minimum_.CopyFrom(*v, *allocator_);
-
-        if (const ValueType* v = GetMember(value, GetMaximumString()))
-            if (v->IsNumber())
-                maximum_.CopyFrom(*v, *allocator_);
-
-        AssignIfExist(exclusiveMinimum_, value, GetExclusiveMinimumString());
-        AssignIfExist(exclusiveMaximum_, value, GetExclusiveMaximumString());
-
-        if (const ValueType* v = GetMember(value, GetMultipleOfString()))
-            if (v->IsNumber() && v->GetDouble() > 0.0)
-                multipleOf_.CopyFrom(*v, *allocator_);
-    }
-
-    ~Schema() {
-        allocator_->Free(enum_);
-        if (properties_) {
-            for (SizeType i = 0; i < propertyCount_; i++)
-                properties_[i].~Property();
-            AllocatorType::Free(properties_);
-        }
-        if (patternProperties_) {
-            for (SizeType i = 0; i < patternPropertyCount_; i++)
-                patternProperties_[i].~PatternProperty();
-            AllocatorType::Free(patternProperties_);
-        }
-        AllocatorType::Free(itemsTuple_);
-#if RAPIDJSON_SCHEMA_HAS_REGEX
-        if (pattern_) {
-            pattern_->~RegexType();
-            allocator_->Free(pattern_);
-        }
-#endif
-    }
-
-    bool BeginValue(Context& context) const {
-        if (context.inArray) {
-            if (uniqueItems_)
-                context.valueUniqueness = true;
-
-            if (itemsList_)
-                context.valueSchema = itemsList_;
-            else if (itemsTuple_) {
-                if (context.arrayElementIndex < itemsTupleCount_)
-                    context.valueSchema = itemsTuple_[context.arrayElementIndex];
-                else if (additionalItemsSchema_)
-                    context.valueSchema = additionalItemsSchema_;
-                else if (additionalItems_)
-                    context.valueSchema = GetTypeless();
-                else
-                    RAPIDJSON_INVALID_KEYWORD_RETURN(GetItemsString());
-            }
-            else
-                context.valueSchema = GetTypeless();
-
-            context.arrayElementIndex++;
-        }
-        return true;
-    }
-
-    RAPIDJSON_FORCEINLINE bool EndValue(Context& context) const {
-        if (context.patternPropertiesValidatorCount > 0) {
-            bool otherValid = false;
-            SizeType count = context.patternPropertiesValidatorCount;
-            if (context.objectPatternValidatorType != Context::kPatternValidatorOnly)
-                otherValid = context.patternPropertiesValidators[--count]->IsValid();
-
-            bool patternValid = true;
-            for (SizeType i = 0; i < count; i++)
-                if (!context.patternPropertiesValidators[i]->IsValid()) {
-                    patternValid = false;
-                    break;
-                }
-
-            if (context.objectPatternValidatorType == Context::kPatternValidatorOnly) {
-                if (!patternValid)
-                    RAPIDJSON_INVALID_KEYWORD_RETURN(GetPatternPropertiesString());
-            }
-            else if (context.objectPatternValidatorType == Context::kPatternValidatorWithProperty) {
-                if (!patternValid || !otherValid)
-                    RAPIDJSON_INVALID_KEYWORD_RETURN(GetPatternPropertiesString());
-            }
-            else if (!patternValid && !otherValid) // kPatternValidatorWithAdditionalProperty)
-                RAPIDJSON_INVALID_KEYWORD_RETURN(GetPatternPropertiesString());
-        }
-
-        if (enum_) {
-            const uint64_t h = context.factory.GetHashCode(context.hasher);
-            for (SizeType i = 0; i < enumCount_; i++)
-                if (enum_[i] == h)
-                    goto foundEnum;
-            RAPIDJSON_INVALID_KEYWORD_RETURN(GetEnumString());
-            foundEnum:;
-        }
-
-        if (allOf_.schemas)
-            for (SizeType i = allOf_.begin; i < allOf_.begin + allOf_.count; i++)
-                if (!context.validators[i]->IsValid())
-                    RAPIDJSON_INVALID_KEYWORD_RETURN(GetAllOfString());
-        
-        if (anyOf_.schemas) {
-            for (SizeType i = anyOf_.begin; i < anyOf_.begin + anyOf_.count; i++)
-                if (context.validators[i]->IsValid())
-                    goto foundAny;
-            RAPIDJSON_INVALID_KEYWORD_RETURN(GetAnyOfString());
-            foundAny:;
-        }
-
-        if (oneOf_.schemas) {
-            bool oneValid = false;
-            for (SizeType i = oneOf_.begin; i < oneOf_.begin + oneOf_.count; i++)
-                if (context.validators[i]->IsValid()) {
-                    if (oneValid)
-                        RAPIDJSON_INVALID_KEYWORD_RETURN(GetOneOfString());
-                    else
-                        oneValid = true;
-                }
-            if (!oneValid)
-                RAPIDJSON_INVALID_KEYWORD_RETURN(GetOneOfString());
-        }
-
-        if (not_ && context.validators[notValidatorIndex_]->IsValid())
-            RAPIDJSON_INVALID_KEYWORD_RETURN(GetNotString());
-
-        return true;
-    }
-
-    bool Null(Context& context) const { 
-        if (!(type_ & (1 << kNullSchemaType)))
-            RAPIDJSON_INVALID_KEYWORD_RETURN(GetTypeString());
-        return CreateParallelValidator(context);
-    }
-    
-    bool Bool(Context& context, bool) const { 
-        if (!(type_ & (1 << kBooleanSchemaType)))
-            RAPIDJSON_INVALID_KEYWORD_RETURN(GetTypeString());
-        return CreateParallelValidator(context);
-    }
-
-    bool Int(Context& context, int i) const {
-        if (!CheckInt(context, i))
-            return false;
-        return CreateParallelValidator(context);
-    }
-
-    bool Uint(Context& context, unsigned u) const {
-        if (!CheckUint(context, u))
-            return false;
-        return CreateParallelValidator(context);
-    }
-
-    bool Int64(Context& context, int64_t i) const {
-        if (!CheckInt(context, i))
-            return false;
-        return CreateParallelValidator(context);
-    }
-
-    bool Uint64(Context& context, uint64_t u) const {
-        if (!CheckUint(context, u))
-            return false;
-        return CreateParallelValidator(context);
-    }
-
-    bool Double(Context& context, double d) const {
-        if (!(type_ & (1 << kNumberSchemaType)))
-            RAPIDJSON_INVALID_KEYWORD_RETURN(GetTypeString());
-
-        if (!minimum_.IsNull() && !CheckDoubleMinimum(context, d))
-            return false;
-
-        if (!maximum_.IsNull() && !CheckDoubleMaximum(context, d))
-            return false;
-        
-        if (!multipleOf_.IsNull() && !CheckDoubleMultipleOf(context, d))
-            return false;
-        
-        return CreateParallelValidator(context);
-    }
-    
-    bool String(Context& context, const Ch* str, SizeType length, bool) const {
-        if (!(type_ & (1 << kStringSchemaType)))
-            RAPIDJSON_INVALID_KEYWORD_RETURN(GetTypeString());
-
-        if (minLength_ != 0 || maxLength_ != SizeType(~0)) {
-            SizeType count;
-            if (internal::CountStringCodePoint<EncodingType>(str, length, &count)) {
-                if (count < minLength_)
-                    RAPIDJSON_INVALID_KEYWORD_RETURN(GetMinLengthString());
-                if (count > maxLength_)
-                    RAPIDJSON_INVALID_KEYWORD_RETURN(GetMaxLengthString());
-            }
-        }
-
-        if (pattern_ && !IsPatternMatch(pattern_, str, length))
-            RAPIDJSON_INVALID_KEYWORD_RETURN(GetPatternString());
-
-        return CreateParallelValidator(context);
-    }
-
-    bool StartObject(Context& context) const { 
-        if (!(type_ & (1 << kObjectSchemaType)))
-            RAPIDJSON_INVALID_KEYWORD_RETURN(GetTypeString());
-
-        context.objectRequiredCount = 0;
-        if (hasDependencies_) {
-            context.objectDependencies = static_cast<bool*>(context.factory.MallocState(sizeof(bool) * propertyCount_));
-            std::memset(context.objectDependencies, 0, sizeof(bool) * propertyCount_);
-        }
-
-        if (patternProperties_) { // pre-allocate schema array
-            SizeType count = patternPropertyCount_ + 1; // extra for valuePatternValidatorType
-            context.patternPropertiesSchemas = static_cast<const SchemaType**>(context.factory.MallocState(sizeof(const SchemaType*) * count));
-            context.patternPropertiesSchemaCount = 0;
-            std::memset(context.patternPropertiesSchemas, 0, sizeof(SchemaType*) * count);
-        }
-
-        return CreateParallelValidator(context);
-    }
-    
-    bool Key(Context& context, const Ch* str, SizeType len, bool) const {
-        if (patternProperties_) {
-            context.patternPropertiesSchemaCount = 0;
-            for (SizeType i = 0; i < patternPropertyCount_; i++)
-                if (patternProperties_[i].pattern && IsPatternMatch(patternProperties_[i].pattern, str, len))
-                    context.patternPropertiesSchemas[context.patternPropertiesSchemaCount++] = patternProperties_[i].schema;
-        }
-
-        SizeType index;
-        if (FindPropertyIndex(ValueType(str, len).Move(), &index)) {
-            if (context.patternPropertiesSchemaCount > 0) {
-                context.patternPropertiesSchemas[context.patternPropertiesSchemaCount++] = properties_[index].schema;
-                context.valueSchema = GetTypeless();
-                context.valuePatternValidatorType = Context::kPatternValidatorWithProperty;
-            }
-            else
-                context.valueSchema = properties_[index].schema;
-
-            if (properties_[index].required)
-                context.objectRequiredCount++;
-
-            if (hasDependencies_)
-                context.objectDependencies[index] = true;
-
-            return true;
-        }
-
-        if (additionalPropertiesSchema_) {
-            if (additionalPropertiesSchema_ && context.patternPropertiesSchemaCount > 0) {
-                context.patternPropertiesSchemas[context.patternPropertiesSchemaCount++] = additionalPropertiesSchema_;
-                context.valueSchema = GetTypeless();
-                context.valuePatternValidatorType = Context::kPatternValidatorWithAdditionalProperty;
-            }
-            else
-                context.valueSchema = additionalPropertiesSchema_;
-            return true;
-        }
-        else if (additionalProperties_) {
-            context.valueSchema = GetTypeless();
-            return true;
-        }
-
-        if (context.patternPropertiesSchemaCount == 0) // patternProperties are not additional properties
-            RAPIDJSON_INVALID_KEYWORD_RETURN(GetAdditionalPropertiesString());
-
-        return true;
-    }
-
-    bool EndObject(Context& context, SizeType memberCount) const {
-        if (context.objectRequiredCount != requiredCount_)
-            RAPIDJSON_INVALID_KEYWORD_RETURN(GetRequiredString());
-
-        if (memberCount < minProperties_)
-            RAPIDJSON_INVALID_KEYWORD_RETURN(GetMinPropertiesString());
-
-        if (memberCount > maxProperties_)
-            RAPIDJSON_INVALID_KEYWORD_RETURN(GetMaxPropertiesString());
-
-        if (hasDependencies_) {
-            for (SizeType sourceIndex = 0; sourceIndex < propertyCount_; sourceIndex++)
-                if (context.objectDependencies[sourceIndex]) {
-                    if (properties_[sourceIndex].dependencies) {
-                        for (SizeType targetIndex = 0; targetIndex < propertyCount_; targetIndex++)
-                            if (properties_[sourceIndex].dependencies[targetIndex] && !context.objectDependencies[targetIndex])
-                                RAPIDJSON_INVALID_KEYWORD_RETURN(GetDependenciesString());
-                    }
-                    else if (properties_[sourceIndex].dependenciesSchema)
-                        if (!context.validators[properties_[sourceIndex].dependenciesValidatorIndex]->IsValid())
-                            RAPIDJSON_INVALID_KEYWORD_RETURN(GetDependenciesString());
-                }
-        }
-
-        return true;
-    }
-
-    bool StartArray(Context& context) const { 
-        if (!(type_ & (1 << kArraySchemaType)))
-            RAPIDJSON_INVALID_KEYWORD_RETURN(GetTypeString());
-
-        context.arrayElementIndex = 0;
-        context.inArray = true;
-
-        return CreateParallelValidator(context);
-    }
-
-    bool EndArray(Context& context, SizeType elementCount) const { 
-        context.inArray = false;
-        
-        if (elementCount < minItems_)
-            RAPIDJSON_INVALID_KEYWORD_RETURN(GetMinItemsString());
-        
-        if (elementCount > maxItems_)
-            RAPIDJSON_INVALID_KEYWORD_RETURN(GetMaxItemsString());
-
-        return true;
-    }
-
-    // Generate functions for string literal according to Ch
-#define RAPIDJSON_STRING_(name, ...) \
-    static const ValueType& Get##name##String() {\
-        static const Ch s[] = { __VA_ARGS__, '\0' };\
-        static const ValueType v(s, sizeof(s) / sizeof(Ch) - 1);\
-        return v;\
-    }
-
-    RAPIDJSON_STRING_(Null, 'n', 'u', 'l', 'l')
-    RAPIDJSON_STRING_(Boolean, 'b', 'o', 'o', 'l', 'e', 'a', 'n')
-    RAPIDJSON_STRING_(Object, 'o', 'b', 'j', 'e', 'c', 't')
-    RAPIDJSON_STRING_(Array, 'a', 'r', 'r', 'a', 'y')
-    RAPIDJSON_STRING_(String, 's', 't', 'r', 'i', 'n', 'g')
-    RAPIDJSON_STRING_(Number, 'n', 'u', 'm', 'b', 'e', 'r')
-    RAPIDJSON_STRING_(Integer, 'i', 'n', 't', 'e', 'g', 'e', 'r')
-    RAPIDJSON_STRING_(Type, 't', 'y', 'p', 'e')
-    RAPIDJSON_STRING_(Enum, 'e', 'n', 'u', 'm')
-    RAPIDJSON_STRING_(AllOf, 'a', 'l', 'l', 'O', 'f')
-    RAPIDJSON_STRING_(AnyOf, 'a', 'n', 'y', 'O', 'f')
-    RAPIDJSON_STRING_(OneOf, 'o', 'n', 'e', 'O', 'f')
-    RAPIDJSON_STRING_(Not, 'n', 'o', 't')
-    RAPIDJSON_STRING_(Properties, 'p', 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's')
-    RAPIDJSON_STRING_(Required, 'r', 'e', 'q', 'u', 'i', 'r', 'e', 'd')
-    RAPIDJSON_STRING_(Dependencies, 'd', 'e', 'p', 'e', 'n', 'd', 'e', 'n', 'c', 'i', 'e', 's')
-    RAPIDJSON_STRING_(PatternProperties, 'p', 'a', 't', 't', 'e', 'r', 'n', 'P', 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's')
-    RAPIDJSON_STRING_(AdditionalProperties, 'a', 'd', 'd', 'i', 't', 'i', 'o', 'n', 'a', 'l', 'P', 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's')
-    RAPIDJSON_STRING_(MinProperties, 'm', 'i', 'n', 'P', 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's')
-    RAPIDJSON_STRING_(MaxProperties, 'm', 'a', 'x', 'P', 'r', 'o', 'p', 'e', 'r', 't', 'i', 'e', 's')
-    RAPIDJSON_STRING_(Items, 'i', 't', 'e', 'm', 's')
-    RAPIDJSON_STRING_(MinItems, 'm', 'i', 'n', 'I', 't', 'e', 'm', 's')
-    RAPIDJSON_STRING_(MaxItems, 'm', 'a', 'x', 'I', 't', 'e', 'm', 's')
-    RAPIDJSON_STRING_(AdditionalItems, 'a', 'd', 'd', 'i', 't', 'i', 'o', 'n', 'a', 'l', 'I', 't', 'e', 'm', 's')
-    RAPIDJSON_STRING_(UniqueItems, 'u', 'n', 'i', 'q', 'u', 'e', 'I', 't', 'e', 'm', 's')
-    RAPIDJSON_STRING_(MinLength, 'm', 'i', 'n', 'L', 'e', 'n', 'g', 't', 'h')
-    RAPIDJSON_STRING_(MaxLength, 'm', 'a', 'x', 'L', 'e', 'n', 'g', 't', 'h')
-    RAPIDJSON_STRING_(Pattern, 'p', 'a', 't', 't', 'e', 'r', 'n')
-    RAPIDJSON_STRING_(Minimum, 'm', 'i', 'n', 'i', 'm', 'u', 'm')
-    RAPIDJSON_STRING_(Maximum, 'm', 'a', 'x', 'i', 'm', 'u', 'm')
-    RAPIDJSON_STRING_(ExclusiveMinimum, 'e', 'x', 'c', 'l', 'u', 's', 'i', 'v', 'e', 'M', 'i', 'n', 'i', 'm', 'u', 'm')
-    RAPIDJSON_STRING_(ExclusiveMaximum, 'e', 'x', 'c', 'l', 'u', 's', 'i', 'v', 'e', 'M', 'a', 'x', 'i', 'm', 'u', 'm')
-    RAPIDJSON_STRING_(MultipleOf, 'm', 'u', 'l', 't', 'i', 'p', 'l', 'e', 'O', 'f')
-
-#undef RAPIDJSON_STRING_
-
-private:
-    enum SchemaValueType {
-        kNullSchemaType,
-        kBooleanSchemaType,
-        kObjectSchemaType,
-        kArraySchemaType,
-        kStringSchemaType,
-        kNumberSchemaType,
-        kIntegerSchemaType,
-        kTotalSchemaType
-    };
-
-#if RAPIDJSON_SCHEMA_USE_INTERNALREGEX
-        typedef internal::GenericRegex<EncodingType> RegexType;
-#elif RAPIDJSON_SCHEMA_USE_STDREGEX
-        typedef std::basic_regex<Ch> RegexType;
-#else
-        typedef char RegexType;
-#endif
-
-    struct SchemaArray {
-        SchemaArray() : schemas(), count() {}
-        ~SchemaArray() { AllocatorType::Free(schemas); }
-        const SchemaType** schemas;
-        SizeType begin; // begin index of context.validators
-        SizeType count;
-    };
-
-    static const SchemaType* GetTypeless() {
-        static SchemaType typeless(0, PointerType(), ValueType(kObjectType).Move(), ValueType(kObjectType).Move(), 0);
-        return &typeless;
-    }
-
-    template <typename V1, typename V2>
-    void AddUniqueElement(V1& a, const V2& v) {
-        for (typename V1::ConstValueIterator itr = a.Begin(); itr != a.End(); ++itr)
-            if (*itr == v)
-                return;
-        V1 c(v, *allocator_);
-        a.PushBack(c, *allocator_);
-    }
-
-    static const ValueType* GetMember(const ValueType& value, const ValueType& name) {
-        typename ValueType::ConstMemberIterator itr = value.FindMember(name);
-        return itr != value.MemberEnd() ? &(itr->value) : 0;
-    }
-
-    static void AssignIfExist(bool& out, const ValueType& value, const ValueType& name) {
-        if (const ValueType* v = GetMember(value, name))
-            if (v->IsBool())
-                out = v->GetBool();
-    }
-
-    static void AssignIfExist(SizeType& out, const ValueType& value, const ValueType& name) {
-        if (const ValueType* v = GetMember(value, name))
-            if (v->IsUint64() && v->GetUint64() <= SizeType(~0))
-                out = static_cast<SizeType>(v->GetUint64());
-    }
-
-    void AssignIfExist(SchemaArray& out, SchemaDocumentType& schemaDocument, const PointerType& p, const ValueType& value, const ValueType& name, const ValueType& document) {
-        if (const ValueType* v = GetMember(value, name)) {
-            if (v->IsArray() && v->Size() > 0) {
-                PointerType q = p.Append(name, allocator_);
-                out.count = v->Size();
-                out.schemas = static_cast<const Schema**>(allocator_->Malloc(out.count * sizeof(const Schema*)));
-                memset(out.schemas, 0, sizeof(Schema*)* out.count);
-                for (SizeType i = 0; i < out.count; i++)
-                    schemaDocument.CreateSchema(&out.schemas[i], q.Append(i, allocator_), (*v)[i], document);
-                out.begin = validatorCount_;
-                validatorCount_ += out.count;
-            }
-        }
-    }
-
-#if RAPIDJSON_SCHEMA_USE_INTERNALREGEX
-    template <typename ValueType>
-    RegexType* CreatePattern(const ValueType& value) {
-        if (value.IsString()) {
-            RegexType* r = new (allocator_->Malloc(sizeof(RegexType))) RegexType(value.GetString());
-            if (!r->IsValid()) {
-                r->~RegexType();
-                r = 0;
-            }
-            return r;
-        }
-        return 0;
-    }
-
-    static bool IsPatternMatch(const RegexType* pattern, const Ch *str, SizeType) {
-        return pattern->Search(str);
-    }
-#elif RAPIDJSON_SCHEMA_USE_STDREGEX
-    template <typename ValueType>
-    RegexType* CreatePattern(const ValueType& value) {
-        if (value.IsString())
-            try {
-                return new (allocator_->Malloc(sizeof(RegexType))) RegexType(value.GetString(), std::size_t(value.GetStringLength()), std::regex_constants::ECMAScript);
-            }
-            catch (const std::regex_error&) {
-            }
-        return 0;
-    }
-
-    static bool IsPatternMatch(const RegexType* pattern, const Ch *str, SizeType length) {
-        std::match_results<const Ch*> r;
-        return std::regex_search(str, str + length, r, *pattern);
-    }
-#else
-    template <typename ValueType>
-    RegexType* CreatePattern(const ValueType&) { return 0; }
-
-    static bool IsPatternMatch(const RegexType*, const Ch *, SizeType) { return true; }
-#endif // RAPIDJSON_SCHEMA_USE_STDREGEX
-
-    void AddType(const ValueType& type) {
-        if      (type == GetNullString()   ) type_ |= 1 << kNullSchemaType;
-        else if (type == GetBooleanString()) type_ |= 1 << kBooleanSchemaType;
-        else if (type == GetObjectString() ) type_ |= 1 << kObjectSchemaType;
-        else if (type == GetArrayString()  ) type_ |= 1 << kArraySchemaType;
-        else if (type == GetStringString() ) type_ |= 1 << kStringSchemaType;
-        else if (type == GetIntegerString()) type_ |= 1 << kIntegerSchemaType;
-        else if (type == GetNumberString() ) type_ |= (1 << kNumberSchemaType) | (1 << kIntegerSchemaType);
-    }
-
-    bool CreateParallelValidator(Context& context) const {
-        if (enum_ || context.arrayUniqueness)
-            context.hasher = context.factory.CreateHasher();
-
-        if (validatorCount_) {
-            RAPIDJSON_ASSERT(context.validators == 0);
-            context.validators = static_cast<ISchemaValidator**>(context.factory.MallocState(sizeof(ISchemaValidator*) * validatorCount_));
-            context.validatorCount = validatorCount_;
-
-            if (allOf_.schemas)
-                CreateSchemaValidators(context, allOf_);
-
-            if (anyOf_.schemas)
-                CreateSchemaValidators(context, anyOf_);
-            
-            if (oneOf_.schemas)
-                CreateSchemaValidators(context, oneOf_);
-            
-            if (not_)
-                context.validators[notValidatorIndex_] = context.factory.CreateSchemaValidator(*not_);
-            
-            if (hasSchemaDependencies_) {
-                for (SizeType i = 0; i < propertyCount_; i++)
-                    if (properties_[i].dependenciesSchema)
-                        context.validators[properties_[i].dependenciesValidatorIndex] = context.factory.CreateSchemaValidator(*properties_[i].dependenciesSchema);
-            }
-        }
-
-        return true;
-    }
-
-    void CreateSchemaValidators(Context& context, const SchemaArray& schemas) const {
-        for (SizeType i = 0; i < schemas.count; i++)
-            context.validators[schemas.begin + i] = context.factory.CreateSchemaValidator(*schemas.schemas[i]);
-    }
-
-    // O(n)
-    bool FindPropertyIndex(const ValueType& name, SizeType* outIndex) const {
-        SizeType len = name.GetStringLength();
-        const Ch* str = name.GetString();
-        for (SizeType index = 0; index < propertyCount_; index++)
-            if (properties_[index].name.GetStringLength() == len && 
-                (std::memcmp(properties_[index].name.GetString(), str, sizeof(Ch) * len) == 0))
-            {
-                *outIndex = index;
-                return true;
-            }
-        return false;
-    }
-
-    bool CheckInt(Context& context, int64_t i) const {
-        if (!(type_ & ((1 << kIntegerSchemaType) | (1 << kNumberSchemaType))))
-            RAPIDJSON_INVALID_KEYWORD_RETURN(GetTypeString());
-
-        if (!minimum_.IsNull()) {
-            if (minimum_.IsInt64()) {
-                if (exclusiveMinimum_ ? i <= minimum_.GetInt64() : i < minimum_.GetInt64())
-                    RAPIDJSON_INVALID_KEYWORD_RETURN(GetMinimumString());
-            }
-            else if (!CheckDoubleMinimum(context, static_cast<double>(i)))
-                return false;
-        }
-
-        if (!maximum_.IsNull()) {
-            if (maximum_.IsInt64()) {
-                if (exclusiveMaximum_ ? i >= maximum_.GetInt64() : i > maximum_.GetInt64())
-                    RAPIDJSON_INVALID_KEYWORD_RETURN(GetMaximumString());
-            }
-            else if (!CheckDoubleMaximum(context, static_cast<double>(i)))
-                return false;
-        }
-
-        if (!multipleOf_.IsNull()) {
-            if (multipleOf_.IsUint64()) {
-                if (static_cast<uint64_t>(i >= 0 ? i : -i) % multipleOf_.GetUint64() != 0)
-                    RAPIDJSON_INVALID_KEYWORD_RETURN(GetMultipleOfString());
-            }
-            else if (!CheckDoubleMultipleOf(context, static_cast<double>(i)))
-                return false;
-        }
-
-        return true;
-    }
-
-    bool CheckUint(Context& context, uint64_t i) const {
-        if (!(type_ & ((1 << kIntegerSchemaType) | (1 << kNumberSchemaType))))
-            RAPIDJSON_INVALID_KEYWORD_RETURN(GetTypeString());
-
-        if (!minimum_.IsNull()) {
-            if (minimum_.IsUint64()) {
-                if (exclusiveMinimum_ ? i <= minimum_.GetUint64() : i < minimum_.GetUint64())
-                    RAPIDJSON_INVALID_KEYWORD_RETURN(GetMinimumString());
-            }
-            else if (!CheckDoubleMinimum(context, static_cast<double>(i)))
-                return false;
-        }
-
-        if (!maximum_.IsNull()) {
-            if (maximum_.IsUint64()) {
-                if (exclusiveMaximum_ ? i >= maximum_.GetUint64() : i > maximum_.GetUint64())
-                    RAPIDJSON_INVALID_KEYWORD_RETURN(GetMaximumString());
-            }
-            else if (!CheckDoubleMaximum(context, static_cast<double>(i)))
-                return false;
-        }
-
-        if (!multipleOf_.IsNull()) {
-            if (multipleOf_.IsUint64()) {
-                if (i % multipleOf_.GetUint64() != 0)
-                    RAPIDJSON_INVALID_KEYWORD_RETURN(GetMultipleOfString());
-            }
-            else if (!CheckDoubleMultipleOf(context, static_cast<double>(i)))
-                return false;
-        }
-
-        return true;
-    }
-
-    bool CheckDoubleMinimum(Context& context, double d) const {
-        if (exclusiveMinimum_ ? d <= minimum_.GetDouble() : d < minimum_.GetDouble())
-            RAPIDJSON_INVALID_KEYWORD_RETURN(GetMinimumString());
-        return true;
-    }
-
-    bool CheckDoubleMaximum(Context& context, double d) const {
-        if (exclusiveMaximum_ ? d >= maximum_.GetDouble() : d > maximum_.GetDouble())
-            RAPIDJSON_INVALID_KEYWORD_RETURN(GetMaximumString());
-        return true;
-    }
-
-    bool CheckDoubleMultipleOf(Context& context, double d) const {
-        double a = std::abs(d), b = std::abs(multipleOf_.GetDouble());
-        double q = std::floor(a / b);
-        double r = a - q * b;
-        if (r > 0.0)
-            RAPIDJSON_INVALID_KEYWORD_RETURN(GetMultipleOfString());
-        return true;
-    }
-
-    struct Property {
-        Property() : schema(), dependenciesSchema(), dependenciesValidatorIndex(), dependencies(), required(false) {}
-        ~Property() { AllocatorType::Free(dependencies); }
-        SValue name;
-        const SchemaType* schema;
-        const SchemaType* dependenciesSchema;
-        SizeType dependenciesValidatorIndex;
-        bool* dependencies;
-        bool required;
-    };
-
-    struct PatternProperty {
-        PatternProperty() : schema(), pattern() {}
-        ~PatternProperty() { 
-            if (pattern) {
-                pattern->~RegexType();
-                AllocatorType::Free(pattern);
-            }
-        }
-        const SchemaType* schema;
-        RegexType* pattern;
-    };
-
-    AllocatorType* allocator_;
-    uint64_t* enum_;
-    SizeType enumCount_;
-    SchemaArray allOf_;
-    SchemaArray anyOf_;
-    SchemaArray oneOf_;
-    const SchemaType* not_;
-    unsigned type_; // bitmask of kSchemaType
-    SizeType validatorCount_;
-    SizeType notValidatorIndex_;
-
-    Property* properties_;
-    const SchemaType* additionalPropertiesSchema_;
-    PatternProperty* patternProperties_;
-    SizeType patternPropertyCount_;
-    SizeType propertyCount_;
-    SizeType requiredCount_;
-    SizeType minProperties_;
-    SizeType maxProperties_;
-    bool additionalProperties_;
-    bool hasDependencies_;
-    bool hasSchemaDependencies_;
-
-    const SchemaType* additionalItemsSchema_;
-    const SchemaType* itemsList_;
-    const SchemaType** itemsTuple_;
-    SizeType itemsTupleCount_;
-    SizeType minItems_;
-    SizeType maxItems_;
-    bool additionalItems_;
-    bool uniqueItems_;
-
-    RegexType* pattern_;
-    SizeType minLength_;
-    SizeType maxLength_;
-
-    SValue minimum_;
-    SValue maximum_;
-    SValue multipleOf_;
-    bool exclusiveMinimum_;
-    bool exclusiveMaximum_;
-};
-
-template<typename Stack, typename Ch>
-struct TokenHelper {
-    RAPIDJSON_FORCEINLINE static void AppendIndexToken(Stack& documentStack, SizeType index) {
-        *documentStack.template Push<Ch>() = '/';
-        char buffer[21];
-        size_t length = static_cast<size_t>((sizeof(SizeType) == 4 ? u32toa(index, buffer) : u64toa(index, buffer)) - buffer);
-        for (size_t i = 0; i < length; i++)
-            *documentStack.template Push<Ch>() = buffer[i];
-    }
-};
-
-// Partial specialized version for char to prevent buffer copying.
-template <typename Stack>
-struct TokenHelper<Stack, char> {
-    RAPIDJSON_FORCEINLINE static void AppendIndexToken(Stack& documentStack, SizeType index) {
-        if (sizeof(SizeType) == 4) {
-            char *buffer = documentStack.template Push<char>(1 + 10); // '/' + uint
-            *buffer++ = '/';
-            const char* end = internal::u32toa(index, buffer);
-             documentStack.template Pop<char>(static_cast<size_t>(10 - (end - buffer)));
-        }
-        else {
-            char *buffer = documentStack.template Push<char>(1 + 20); // '/' + uint64
-            *buffer++ = '/';
-            const char* end = internal::u64toa(index, buffer);
-            documentStack.template Pop<char>(static_cast<size_t>(20 - (end - buffer)));
-        }
-    }
-};
-
-} // namespace internal
-
-///////////////////////////////////////////////////////////////////////////////
-// IGenericRemoteSchemaDocumentProvider
-
-template <typename SchemaDocumentType>
-class IGenericRemoteSchemaDocumentProvider {
-public:
-    typedef typename SchemaDocumentType::Ch Ch;
-
-    virtual ~IGenericRemoteSchemaDocumentProvider() {}
-    virtual const SchemaDocumentType* GetRemoteDocument(const Ch* uri, SizeType length) = 0;
-};
-
-///////////////////////////////////////////////////////////////////////////////
-// GenericSchemaDocument
-
-//! JSON schema document.
-/*!
-    A JSON schema document is a compiled version of a JSON schema.
-    It is basically a tree of internal::Schema.
-
-    \note This is an immutable class (i.e. its instance cannot be modified after construction).
-    \tparam ValueT Type of JSON value (e.g. \c Value ), which also determine the encoding.
-    \tparam Allocator Allocator type for allocating memory of this document.
-*/
-template <typename ValueT, typename Allocator = CrtAllocator>
-class GenericSchemaDocument {
-public:
-    typedef ValueT ValueType;
-    typedef IGenericRemoteSchemaDocumentProvider<GenericSchemaDocument> IRemoteSchemaDocumentProviderType;
-    typedef Allocator AllocatorType;
-    typedef typename ValueType::EncodingType EncodingType;
-    typedef typename EncodingType::Ch Ch;
-    typedef internal::Schema<GenericSchemaDocument> SchemaType;
-    typedef GenericPointer<ValueType, Allocator> PointerType;
-    friend class internal::Schema<GenericSchemaDocument>;
-    template <typename, typename, typename>
-    friend class GenericSchemaValidator;
-
-    //! Constructor.
-    /*!
-        Compile a JSON document into schema document.
-
-        \param document A JSON document as source.
-        \param remoteProvider An optional remote schema document provider for resolving remote reference. Can be null.
-        \param allocator An optional allocator instance for allocating memory. Can be null.
-    */
-    GenericSchemaDocument(const ValueType& document, IRemoteSchemaDocumentProviderType* remoteProvider = 0, Allocator* allocator = 0) RAPIDJSON_NOEXCEPT : 
-        remoteProvider_(remoteProvider),
-        allocator_(allocator),
-        ownAllocator_(),
-        root_(),
-        schemaMap_(allocator, kInitialSchemaMapSize),
-        schemaRef_(allocator, kInitialSchemaRefSize)
-    {
-        if (!allocator_)
-            ownAllocator_ = allocator_ = RAPIDJSON_NEW(Allocator());
-
-        // Generate root schema, it will call CreateSchema() to create sub-schemas,
-        // And call AddRefSchema() if there are $ref.
-        CreateSchemaRecursive(&root_, PointerType(), document, document);
-
-        // Resolve $ref
-        while (!schemaRef_.Empty()) {
-            SchemaRefEntry* refEntry = schemaRef_.template Pop<SchemaRefEntry>(1);
-            if (const SchemaType* s = GetSchema(refEntry->target)) {
-                if (refEntry->schema)
-                    *refEntry->schema = s;
-
-                // Create entry in map if not exist
-                if (!GetSchema(refEntry->source)) {
-                    new (schemaMap_.template Push<SchemaEntry>()) SchemaEntry(refEntry->source, const_cast<SchemaType*>(s), false, allocator_);
-                }
-            }
-            refEntry->~SchemaRefEntry();
-        }
-
-        RAPIDJSON_ASSERT(root_ != 0);
-
-        schemaRef_.ShrinkToFit(); // Deallocate all memory for ref
-    }
-
-#if RAPIDJSON_HAS_CXX11_RVALUE_REFS
-    //! Move constructor in C++11
-    GenericSchemaDocument(GenericSchemaDocument&& rhs) RAPIDJSON_NOEXCEPT :
-        remoteProvider_(rhs.remoteProvider_),
-        allocator_(rhs.allocator_),
-        ownAllocator_(rhs.ownAllocator_),
-        root_(rhs.root_),
-        schemaMap_(std::move(rhs.schemaMap_)),
-        schemaRef_(std::move(rhs.schemaRef_))
-    {
-        rhs.remoteProvider_ = 0;
-        rhs.allocator_ = 0;
-        rhs.ownAllocator_ = 0;
-    }
-#endif
-
-    //! Destructor
-    ~GenericSchemaDocument() {
-        while (!schemaMap_.Empty())
-            schemaMap_.template Pop<SchemaEntry>(1)->~SchemaEntry();
-
-        RAPIDJSON_DELETE(ownAllocator_);
-    }
-
-    //! Get the root schema.
-    const SchemaType& GetRoot() const { return *root_; }
-
-private:
-    //! Prohibit copying
-    GenericSchemaDocument(const GenericSchemaDocument&);
-    //! Prohibit assignment
-    GenericSchemaDocument& operator=(const GenericSchemaDocument&);
-
-    struct SchemaRefEntry {
-        SchemaRefEntry(const PointerType& s, const PointerType& t, const SchemaType** outSchema, Allocator *allocator) : source(s, allocator), target(t, allocator), schema(outSchema) {}
-        PointerType source;
-        PointerType target;
-        const SchemaType** schema;
-    };
-
-    struct SchemaEntry {
-        SchemaEntry(const PointerType& p, SchemaType* s, bool o, Allocator* allocator) : pointer(p, allocator), schema(s), owned(o) {}
-        ~SchemaEntry() {
-            if (owned) {
-                schema->~SchemaType();
-                Allocator::Free(schema);
-            }
-        }
-        PointerType pointer;
-        SchemaType* schema;
-        bool owned;
-    };
-
-    void CreateSchemaRecursive(const SchemaType** schema, const PointerType& pointer, const ValueType& v, const ValueType& document) {
-        if (schema)
-            *schema = SchemaType::GetTypeless();
-
-        if (v.GetType() == kObjectType) {
-            const SchemaType* s = GetSchema(pointer);
-            if (!s)
-                CreateSchema(schema, pointer, v, document);
-            else if (schema)
-                *schema = s;
-
-            for (typename ValueType::ConstMemberIterator itr = v.MemberBegin(); itr != v.MemberEnd(); ++itr)
-                CreateSchemaRecursive(0, pointer.Append(itr->name, allocator_), itr->value, document);
-        }
-        else if (v.GetType() == kArrayType)
-            for (SizeType i = 0; i < v.Size(); i++)
-                CreateSchemaRecursive(0, pointer.Append(i, allocator_), v[i], document);
-    }
-
-    void CreateSchema(const SchemaType** schema, const PointerType& pointer, const ValueType& v, const ValueType& document) {
-        RAPIDJSON_ASSERT(pointer.IsValid());
-        if (v.IsObject()) {
-            if (!HandleRefSchema(pointer, schema, v, document)) {
-                SchemaType* s = new (allocator_->Malloc(sizeof(SchemaType))) SchemaType(this, pointer, v, document, allocator_);
-                new (schemaMap_.template Push<SchemaEntry>()) SchemaEntry(pointer, s, true, allocator_);
-                if (schema)
-                    *schema = s;
-            }
-        }
-    }
-
-    bool HandleRefSchema(const PointerType& source, const SchemaType** schema, const ValueType& v, const ValueType& document) {
-        static const Ch kRefString[] = { '$', 'r', 'e', 'f', '\0' };
-        static const ValueType kRefValue(kRefString, 4);
-
-        typename ValueType::ConstMemberIterator itr = v.FindMember(kRefValue);
-        if (itr == v.MemberEnd())
-            return false;
-
-        if (itr->value.IsString()) {
-            SizeType len = itr->value.GetStringLength();
-            if (len > 0) {
-                const Ch* s = itr->value.GetString();
-                SizeType i = 0;
-                while (i < len && s[i] != '#') // Find the first #
-                    i++;
-
-                if (i > 0) { // Remote reference, resolve immediately
-                    if (remoteProvider_) {
-                        if (const GenericSchemaDocument* remoteDocument = remoteProvider_->GetRemoteDocument(s, i - 1)) {
-                            PointerType pointer(&s[i], len - i, allocator_);
-                            if (pointer.IsValid()) {
-                                if (const SchemaType* sc = remoteDocument->GetSchema(pointer)) {
-                                    if (schema)
-                                        *schema = sc;
-                                    return true;
-                                }
-                            }
-                        }
-                    }
-                }
-                else if (s[i] == '#') { // Local reference, defer resolution
-                    PointerType pointer(&s[i], len - i, allocator_);
-                    if (pointer.IsValid()) {
-                        if (const ValueType* nv = pointer.Get(document))
-                            if (HandleRefSchema(source, schema, *nv, document))
-                                return true;
-
-                        new (schemaRef_.template Push<SchemaRefEntry>()) SchemaRefEntry(source, pointer, schema, allocator_);
-                        return true;
-                    }
-                }
-            }
-        }
-        return false;
-    }
-
-    const SchemaType* GetSchema(const PointerType& pointer) const {
-        for (const SchemaEntry* target = schemaMap_.template Bottom<SchemaEntry>(); target != schemaMap_.template End<SchemaEntry>(); ++target)
-            if (pointer == target->pointer)
-                return target->schema;
-        return 0;
-    }
-
-    PointerType GetPointer(const SchemaType* schema) const {
-        for (const SchemaEntry* target = schemaMap_.template Bottom<SchemaEntry>(); target != schemaMap_.template End<SchemaEntry>(); ++target)
-            if (schema == target->schema)
-                return target->pointer;
-        return PointerType();
-    }
-
-    static const size_t kInitialSchemaMapSize = 64;
-    static const size_t kInitialSchemaRefSize = 64;
-
-    IRemoteSchemaDocumentProviderType* remoteProvider_;
-    Allocator *allocator_;
-    Allocator *ownAllocator_;
-    const SchemaType* root_;                //!< Root schema.
-    internal::Stack<Allocator> schemaMap_;  // Stores created Pointer -> Schemas
-    internal::Stack<Allocator> schemaRef_;  // Stores Pointer from $ref and schema which holds the $ref
-};
-
-//! GenericSchemaDocument using Value type.
-typedef GenericSchemaDocument<Value> SchemaDocument;
-//! IGenericRemoteSchemaDocumentProvider using SchemaDocument.
-typedef IGenericRemoteSchemaDocumentProvider<SchemaDocument> IRemoteSchemaDocumentProvider;
-
-///////////////////////////////////////////////////////////////////////////////
-// GenericSchemaValidator
-
-//! JSON Schema Validator.
-/*!
-    A SAX style JSON schema validator.
-    It uses a \c GenericSchemaDocument to validate SAX events.
-    It delegates the incoming SAX events to an output handler.
-    The default output handler does nothing.
-    It can be reused multiple times by calling \c Reset().
-
-    \tparam SchemaDocumentType Type of schema document.
-    \tparam OutputHandler Type of output handler. Default handler does nothing.
-    \tparam StateAllocator Allocator for storing the internal validation states.
-*/
-template <
-    typename SchemaDocumentType,
-    typename OutputHandler = BaseReaderHandler<typename SchemaDocumentType::SchemaType::EncodingType>,
-    typename StateAllocator = CrtAllocator>
-class GenericSchemaValidator :
-    public internal::ISchemaStateFactory<typename SchemaDocumentType::SchemaType>, 
-    public internal::ISchemaValidator
-{
-public:
-    typedef typename SchemaDocumentType::SchemaType SchemaType;
-    typedef typename SchemaDocumentType::PointerType PointerType;
-    typedef typename SchemaType::EncodingType EncodingType;
-    typedef typename EncodingType::Ch Ch;
-
-    //! Constructor without output handler.
-    /*!
-        \param schemaDocument The schema document to conform to.
-        \param allocator Optional allocator for storing internal validation states.
-        \param schemaStackCapacity Optional initial capacity of schema path stack.
-        \param documentStackCapacity Optional initial capacity of document path stack.
-    */
-    GenericSchemaValidator(
-        const SchemaDocumentType& schemaDocument,
-        StateAllocator* allocator = 0, 
-        size_t schemaStackCapacity = kDefaultSchemaStackCapacity,
-        size_t documentStackCapacity = kDefaultDocumentStackCapacity)
-        :
-        schemaDocument_(&schemaDocument),
-        root_(schemaDocument.GetRoot()),
-        outputHandler_(GetNullHandler()),
-        stateAllocator_(allocator),
-        ownStateAllocator_(0),
-        schemaStack_(allocator, schemaStackCapacity),
-        documentStack_(allocator, documentStackCapacity),
-        valid_(true)
-#if RAPIDJSON_SCHEMA_VERBOSE
-        , depth_(0)
-#endif
-    {
-    }
-
-    //! Constructor with output handler.
-    /*!
-        \param schemaDocument The schema document to conform to.
-        \param allocator Optional allocator for storing internal validation states.
-        \param schemaStackCapacity Optional initial capacity of schema path stack.
-        \param documentStackCapacity Optional initial capacity of document path stack.
-    */
-    GenericSchemaValidator(
-        const SchemaDocumentType& schemaDocument,
-        OutputHandler& outputHandler,
-        StateAllocator* allocator = 0, 
-        size_t schemaStackCapacity = kDefaultSchemaStackCapacity,
-        size_t documentStackCapacity = kDefaultDocumentStackCapacity)
-        :
-        schemaDocument_(&schemaDocument),
-        root_(schemaDocument.GetRoot()),
-        outputHandler_(outputHandler),
-        stateAllocator_(allocator),
-        ownStateAllocator_(0),
-        schemaStack_(allocator, schemaStackCapacity),
-        documentStack_(allocator, documentStackCapacity),
-        valid_(true)
-#if RAPIDJSON_SCHEMA_VERBOSE
-        , depth_(0)
-#endif
-    {
-    }
-
-    //! Destructor.
-    ~GenericSchemaValidator() {
-        Reset();
-        RAPIDJSON_DELETE(ownStateAllocator_);
-    }
-
-    //! Reset the internal states.
-    void Reset() {
-        while (!schemaStack_.Empty())
-            PopSchema();
-        documentStack_.Clear();
-        valid_ = true;
-    }
-
-    //! Checks whether the current state is valid.
-    // Implementation of ISchemaValidator
-    virtual bool IsValid() const { return valid_; }
-
-    //! Gets the JSON pointer pointed to the invalid schema.
-    PointerType GetInvalidSchemaPointer() const {
-        return schemaStack_.Empty() ? PointerType() : schemaDocument_->GetPointer(&CurrentSchema());
-    }
-
-    //! Gets the keyword of invalid schema.
-    const Ch* GetInvalidSchemaKeyword() const {
-        return schemaStack_.Empty() ? 0 : CurrentContext().invalidKeyword;
-    }
-
-    //! Gets the JSON pointer pointed to the invalid value.
-    PointerType GetInvalidDocumentPointer() const {
-        return documentStack_.Empty() ? PointerType() : PointerType(documentStack_.template Bottom<Ch>(), documentStack_.GetSize() / sizeof(Ch));
-    }
-
-#if RAPIDJSON_SCHEMA_VERBOSE
-#define RAPIDJSON_SCHEMA_HANDLE_BEGIN_VERBOSE_() \
-RAPIDJSON_MULTILINEMACRO_BEGIN\
-    *documentStack_.template Push<Ch>() = '\0';\
-    documentStack_.template Pop<Ch>(1);\
-    internal::PrintInvalidDocument(documentStack_.template Bottom<Ch>());\
-RAPIDJSON_MULTILINEMACRO_END
-#else
-#define RAPIDJSON_SCHEMA_HANDLE_BEGIN_VERBOSE_()
-#endif
-
-#define RAPIDJSON_SCHEMA_HANDLE_BEGIN_(method, arg1)\
-    if (!valid_) return false; \
-    if (!BeginValue() || !CurrentSchema().method arg1) {\
-        RAPIDJSON_SCHEMA_HANDLE_BEGIN_VERBOSE_();\
-        return valid_ = false;\
-    }
-
-#define RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(method, arg2)\
-    for (Context* context = schemaStack_.template Bottom<Context>(); context != schemaStack_.template End<Context>(); context++) {\
-        if (context->hasher)\
-            static_cast<HasherType*>(context->hasher)->method arg2;\
-        if (context->validators)\
-            for (SizeType i_ = 0; i_ < context->validatorCount; i_++)\
-                static_cast<GenericSchemaValidator*>(context->validators[i_])->method arg2;\
-        if (context->patternPropertiesValidators)\
-            for (SizeType i_ = 0; i_ < context->patternPropertiesValidatorCount; i_++)\
-                static_cast<GenericSchemaValidator*>(context->patternPropertiesValidators[i_])->method arg2;\
-    }
-
-#define RAPIDJSON_SCHEMA_HANDLE_END_(method, arg2)\
-    return valid_ = EndValue() && outputHandler_.method arg2
-
-#define RAPIDJSON_SCHEMA_HANDLE_VALUE_(method, arg1, arg2) \
-    RAPIDJSON_SCHEMA_HANDLE_BEGIN_   (method, arg1);\
-    RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(method, arg2);\
-    RAPIDJSON_SCHEMA_HANDLE_END_     (method, arg2)
-
-    bool Null()             { RAPIDJSON_SCHEMA_HANDLE_VALUE_(Null,   (CurrentContext()   ), ( )); }
-    bool Bool(bool b)       { RAPIDJSON_SCHEMA_HANDLE_VALUE_(Bool,   (CurrentContext(), b), (b)); }
-    bool Int(int i)         { RAPIDJSON_SCHEMA_HANDLE_VALUE_(Int,    (CurrentContext(), i), (i)); }
-    bool Uint(unsigned u)   { RAPIDJSON_SCHEMA_HANDLE_VALUE_(Uint,   (CurrentContext(), u), (u)); }
-    bool Int64(int64_t i)   { RAPIDJSON_SCHEMA_HANDLE_VALUE_(Int64,  (CurrentContext(), i), (i)); }
-    bool Uint64(uint64_t u) { RAPIDJSON_SCHEMA_HANDLE_VALUE_(Uint64, (CurrentContext(), u), (u)); }
-    bool Double(double d)   { RAPIDJSON_SCHEMA_HANDLE_VALUE_(Double, (CurrentContext(), d), (d)); }
-    bool RawNumber(const Ch* str, SizeType length, bool copy)
-                                    { RAPIDJSON_SCHEMA_HANDLE_VALUE_(String, (CurrentContext(), str, length, copy), (str, length, copy)); }
-    bool String(const Ch* str, SizeType length, bool copy)
-                                    { RAPIDJSON_SCHEMA_HANDLE_VALUE_(String, (CurrentContext(), str, length, copy), (str, length, copy)); }
-
-    bool StartObject() {
-        RAPIDJSON_SCHEMA_HANDLE_BEGIN_(StartObject, (CurrentContext()));
-        RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(StartObject, ());
-        return valid_ = outputHandler_.StartObject();
-    }
-    
-    bool Key(const Ch* str, SizeType len, bool copy) {
-        if (!valid_) return false;
-        AppendToken(str, len);
-        if (!CurrentSchema().Key(CurrentContext(), str, len, copy)) return valid_ = false;
-        RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(Key, (str, len, copy));
-        return valid_ = outputHandler_.Key(str, len, copy);
-    }
-    
-    bool EndObject(SizeType memberCount) { 
-        if (!valid_) return false;
-        RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(EndObject, (memberCount));
-        if (!CurrentSchema().EndObject(CurrentContext(), memberCount)) return valid_ = false;
-        RAPIDJSON_SCHEMA_HANDLE_END_(EndObject, (memberCount));
-    }
-
-    bool StartArray() {
-        RAPIDJSON_SCHEMA_HANDLE_BEGIN_(StartArray, (CurrentContext()));
-        RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(StartArray, ());
-        return valid_ = outputHandler_.StartArray();
-    }
-    
-    bool EndArray(SizeType elementCount) {
-        if (!valid_) return false;
-        RAPIDJSON_SCHEMA_HANDLE_PARALLEL_(EndArray, (elementCount));
-        if (!CurrentSchema().EndArray(CurrentContext(), elementCount)) return valid_ = false;
-        RAPIDJSON_SCHEMA_HANDLE_END_(EndArray, (elementCount));
-    }
-
-#undef RAPIDJSON_SCHEMA_HANDLE_BEGIN_VERBOSE_
-#undef RAPIDJSON_SCHEMA_HANDLE_BEGIN_
-#undef RAPIDJSON_SCHEMA_HANDLE_PARALLEL_
-#undef RAPIDJSON_SCHEMA_HANDLE_VALUE_
-
-    // Implementation of ISchemaStateFactory<SchemaType>
-    virtual ISchemaValidator* CreateSchemaValidator(const SchemaType& root) {
-        return new (GetStateAllocator().Malloc(sizeof(GenericSchemaValidator))) GenericSchemaValidator(*schemaDocument_, root,
-#if RAPIDJSON_SCHEMA_VERBOSE
-        depth_ + 1,
-#endif
-        &GetStateAllocator());
-    }
-
-    virtual void DestroySchemaValidator(ISchemaValidator* validator) {
-        GenericSchemaValidator* v = static_cast<GenericSchemaValidator*>(validator);
-        v->~GenericSchemaValidator();
-        StateAllocator::Free(v);
-    }
-
-    virtual void* CreateHasher() {
-        return new (GetStateAllocator().Malloc(sizeof(HasherType))) HasherType(&GetStateAllocator());
-    }
-
-    virtual uint64_t GetHashCode(void* hasher) {
-        return static_cast<HasherType*>(hasher)->GetHashCode();
-    }
-
-    virtual void DestroryHasher(void* hasher) {
-        HasherType* h = static_cast<HasherType*>(hasher);
-        h->~HasherType();
-        StateAllocator::Free(h);
-    }
-
-    virtual void* MallocState(size_t size) {
-        return GetStateAllocator().Malloc(size);
-    }
-
-    virtual void* ReallocState(void* originalPtr, size_t originalSize, size_t newSize) {
-        return GetStateAllocator().Realloc(originalPtr, originalSize, newSize);
-    }
-
-    virtual void FreeState(void* p) {
-        return StateAllocator::Free(p);
-    }
-
-private:
-    typedef typename SchemaType::Context Context;
-    typedef GenericValue<UTF8<>, StateAllocator> HashCodeArray;
-    typedef internal::Hasher<EncodingType, StateAllocator> HasherType;
-
-    GenericSchemaValidator( 
-        const SchemaDocumentType& schemaDocument,
-        const SchemaType& root,
-#if RAPIDJSON_SCHEMA_VERBOSE
-        unsigned depth,
-#endif
-        StateAllocator* allocator = 0,
-        size_t schemaStackCapacity = kDefaultSchemaStackCapacity,
-        size_t documentStackCapacity = kDefaultDocumentStackCapacity)
-        :
-        schemaDocument_(&schemaDocument),
-        root_(root),
-        outputHandler_(GetNullHandler()),
-        stateAllocator_(allocator),
-        ownStateAllocator_(0),
-        schemaStack_(allocator, schemaStackCapacity),
-        documentStack_(allocator, documentStackCapacity),
-        valid_(true)
-#if RAPIDJSON_SCHEMA_VERBOSE
-        , depth_(depth)
-#endif
-    {
-    }
-
-    StateAllocator& GetStateAllocator() {
-        if (!stateAllocator_)
-            stateAllocator_ = ownStateAllocator_ = RAPIDJSON_NEW(StateAllocator());
-        return *stateAllocator_;
-    }
-
-    bool BeginValue() {
-        if (schemaStack_.Empty())
-            PushSchema(root_);
-        else {
-            if (CurrentContext().inArray)
-                internal::TokenHelper<internal::Stack<StateAllocator>, Ch>::AppendIndexToken(documentStack_, CurrentContext().arrayElementIndex);
-
-            if (!CurrentSchema().BeginValue(CurrentContext()))
-                return false;
-
-            SizeType count = CurrentContext().patternPropertiesSchemaCount;
-            const SchemaType** sa = CurrentContext().patternPropertiesSchemas;
-            typename Context::PatternValidatorType patternValidatorType = CurrentContext().valuePatternValidatorType;
-            bool valueUniqueness = CurrentContext().valueUniqueness;
-            if (CurrentContext().valueSchema)
-                PushSchema(*CurrentContext().valueSchema);
-
-            if (count > 0) {
-                CurrentContext().objectPatternValidatorType = patternValidatorType;
-                ISchemaValidator**& va = CurrentContext().patternPropertiesValidators;
-                SizeType& validatorCount = CurrentContext().patternPropertiesValidatorCount;
-                va = static_cast<ISchemaValidator**>(MallocState(sizeof(ISchemaValidator*) * count));
-                for (SizeType i = 0; i < count; i++)
-                    va[validatorCount++] = CreateSchemaValidator(*sa[i]);
-            }
-
-            CurrentContext().arrayUniqueness = valueUniqueness;
-        }
-        return true;
-    }
-
-    bool EndValue() {
-        if (!CurrentSchema().EndValue(CurrentContext()))
-            return false;
-
-#if RAPIDJSON_SCHEMA_VERBOSE
-        GenericStringBuffer<EncodingType> sb;
-        schemaDocument_->GetPointer(&CurrentSchema()).Stringify(sb);
-
-        *documentStack_.template Push<Ch>() = '\0';
-        documentStack_.template Pop<Ch>(1);
-        internal::PrintValidatorPointers(depth_, sb.GetString(), documentStack_.template Bottom<Ch>());
-#endif
-
-        uint64_t h = CurrentContext().arrayUniqueness ? static_cast<HasherType*>(CurrentContext().hasher)->GetHashCode() : 0;
-        
-        PopSchema();
-
-        if (!schemaStack_.Empty()) {
-            Context& context = CurrentContext();
-            if (context.valueUniqueness) {
-                HashCodeArray* a = static_cast<HashCodeArray*>(context.arrayElementHashCodes);
-                if (!a)
-                    CurrentContext().arrayElementHashCodes = a = new (GetStateAllocator().Malloc(sizeof(HashCodeArray))) HashCodeArray(kArrayType);
-                for (typename HashCodeArray::ConstValueIterator itr = a->Begin(); itr != a->End(); ++itr)
-                    if (itr->GetUint64() == h)
-                        RAPIDJSON_INVALID_KEYWORD_RETURN(SchemaType::GetUniqueItemsString());
-                a->PushBack(h, GetStateAllocator());
-            }
-        }
-
-        // Remove the last token of document pointer
-        while (!documentStack_.Empty() && *documentStack_.template Pop<Ch>(1) != '/')
-            ;
-
-        return true;
-    }
-
-    void AppendToken(const Ch* str, SizeType len) {
-        documentStack_.template Reserve<Ch>(1 + len * 2); // worst case all characters are escaped as two characters
-        *documentStack_.template PushUnsafe<Ch>() = '/';
-        for (SizeType i = 0; i < len; i++) {
-            if (str[i] == '~') {
-                *documentStack_.template PushUnsafe<Ch>() = '~';
-                *documentStack_.template PushUnsafe<Ch>() = '0';
-            }
-            else if (str[i] == '/') {
-                *documentStack_.template PushUnsafe<Ch>() = '~';
-                *documentStack_.template PushUnsafe<Ch>() = '1';
-            }
-            else
-                *documentStack_.template PushUnsafe<Ch>() = str[i];
-        }
-    }
-
-    RAPIDJSON_FORCEINLINE void PushSchema(const SchemaType& schema) { new (schemaStack_.template Push<Context>()) Context(*this, &schema); }
-    
-    RAPIDJSON_FORCEINLINE void PopSchema() {
-        Context* c = schemaStack_.template Pop<Context>(1);
-        if (HashCodeArray* a = static_cast<HashCodeArray*>(c->arrayElementHashCodes)) {
-            a->~HashCodeArray();
-            StateAllocator::Free(a);
-        }
-        c->~Context();
-    }
-
-    const SchemaType& CurrentSchema() const { return *schemaStack_.template Top<Context>()->schema; }
-    Context& CurrentContext() { return *schemaStack_.template Top<Context>(); }
-    const Context& CurrentContext() const { return *schemaStack_.template Top<Context>(); }
-
-    static OutputHandler& GetNullHandler() {
-        static OutputHandler nullHandler;
-        return nullHandler;
-    }
-
-    static const size_t kDefaultSchemaStackCapacity = 1024;
-    static const size_t kDefaultDocumentStackCapacity = 256;
-    const SchemaDocumentType* schemaDocument_;
-    const SchemaType& root_;
-    OutputHandler& outputHandler_;
-    StateAllocator* stateAllocator_;
-    StateAllocator* ownStateAllocator_;
-    internal::Stack<StateAllocator> schemaStack_;    //!< stack to store the current path of schema (BaseSchemaType *)
-    internal::Stack<StateAllocator> documentStack_;  //!< stack to store the current path of validating document (Ch)
-    bool valid_;
-#if RAPIDJSON_SCHEMA_VERBOSE
-    unsigned depth_;
-#endif
-};
-
-typedef GenericSchemaValidator<SchemaDocument> SchemaValidator;
-
-///////////////////////////////////////////////////////////////////////////////
-// SchemaValidatingReader
-
-//! A helper class for parsing with validation.
-/*!
-    This helper class is a functor, designed as a parameter of \ref GenericDocument::Populate().
-
-    \tparam parseFlags Combination of \ref ParseFlag.
-    \tparam InputStream Type of input stream, implementing Stream concept.
-    \tparam SourceEncoding Encoding of the input stream.
-    \tparam SchemaDocumentType Type of schema document.
-    \tparam StackAllocator Allocator type for stack.
-*/
-template <
-    unsigned parseFlags,
-    typename InputStream,
-    typename SourceEncoding,
-    typename SchemaDocumentType = SchemaDocument,
-    typename StackAllocator = CrtAllocator>
-class SchemaValidatingReader {
-public:
-    typedef typename SchemaDocumentType::PointerType PointerType;
-    typedef typename InputStream::Ch Ch;
-
-    //! Constructor
-    /*!
-        \param is Input stream.
-        \param sd Schema document.
-    */
-    SchemaValidatingReader(InputStream& is, const SchemaDocumentType& sd) : is_(is), sd_(sd), invalidSchemaKeyword_(), isValid_(true) {}
-
-    template <typename Handler>
-    bool operator()(Handler& handler) {
-        GenericReader<SourceEncoding, typename SchemaDocumentType::EncodingType, StackAllocator> reader;
-        GenericSchemaValidator<SchemaDocumentType, Handler> validator(sd_, handler);
-        parseResult_ = reader.template Parse<parseFlags>(is_, validator);
-
-        if ((isValid_ = validator.IsValid())) {
-            invalidSchemaPointer_ = PointerType();
-            invalidSchemaKeyword_ = 0;
-            invalidDocumentPointer_ = PointerType();
-        }
-        else {
-            invalidSchemaPointer_ = validator.GetInvalidSchemaPointer();
-            invalidSchemaKeyword_ = validator.GetInvalidSchemaKeyword();
-            invalidDocumentPointer_ = validator.GetInvalidDocumentPointer();
-        }
-
-        return parseResult_;
-    }
-
-    const ParseResult& GetParseResult() const { return parseResult_; }
-    bool IsValid() const { return isValid_; }
-    const PointerType& GetInvalidSchemaPointer() const { return invalidSchemaPointer_; }
-    const Ch* GetInvalidSchemaKeyword() const { return invalidSchemaKeyword_; }
-    const PointerType& GetInvalidDocumentPointer() const { return invalidDocumentPointer_; }
-
-private:
-    InputStream& is_;
-    const SchemaDocumentType& sd_;
-
-    ParseResult parseResult_;
-    PointerType invalidSchemaPointer_;
-    const Ch* invalidSchemaKeyword_;
-    PointerType invalidDocumentPointer_;
-    bool isValid_;
-};
-
-RAPIDJSON_NAMESPACE_END
-
-#if defined(__GNUC__)
-RAPIDJSON_DIAG_POP
-#endif
-
-#ifdef __clang__
-RAPIDJSON_DIAG_POP
-#endif
-
-#endif // RAPIDJSON_SCHEMA_H_
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/stream.h b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/stream.h
deleted file mode 100644
index dd2783b..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/stream.h
+++ /dev/null
@@ -1,179 +0,0 @@
-// Tencent is pleased to support the open source community by making RapidJSON available.
-// 
-// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
-//
-// Licensed under the MIT License (the "License"); you may not use this file except
-// in compliance with the License. You may obtain a copy of the License at
-//
-// http://opensource.org/licenses/MIT
-//
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
-// specific language governing permissions and limitations under the License.
-
-#include "rapidjson.h"
-
-#ifndef RAPIDJSON_STREAM_H_
-#define RAPIDJSON_STREAM_H_
-
-#include "encodings.h"
-
-RAPIDJSON_NAMESPACE_BEGIN
-
-///////////////////////////////////////////////////////////////////////////////
-//  Stream
-
-/*! \class rapidjson::Stream
-    \brief Concept for reading and writing characters.
-
-    For read-only stream, no need to implement PutBegin(), Put(), Flush() and PutEnd().
-
-    For write-only stream, only need to implement Put() and Flush().
-
-\code
-concept Stream {
-    typename Ch;    //!< Character type of the stream.
-
-    //! Read the current character from stream without moving the read cursor.
-    Ch Peek() const;
-
-    //! Read the current character from stream and moving the read cursor to next character.
-    Ch Take();
-
-    //! Get the current read cursor.
-    //! \return Number of characters read from start.
-    size_t Tell();
-
-    //! Begin writing operation at the current read pointer.
-    //! \return The begin writer pointer.
-    Ch* PutBegin();
-
-    //! Write a character.
-    void Put(Ch c);
-
-    //! Flush the buffer.
-    void Flush();
-
-    //! End the writing operation.
-    //! \param begin The begin write pointer returned by PutBegin().
-    //! \return Number of characters written.
-    size_t PutEnd(Ch* begin);
-}
-\endcode
-*/
-
-//! Provides additional information for stream.
-/*!
-    By using traits pattern, this type provides a default configuration for stream.
-    For custom stream, this type can be specialized for other configuration.
-    See TEST(Reader, CustomStringStream) in readertest.cpp for example.
-*/
-template<typename Stream>
-struct StreamTraits {
-    //! Whether to make local copy of stream for optimization during parsing.
-    /*!
-        By default, for safety, streams do not use local copy optimization.
-        Stream that can be copied fast should specialize this, like StreamTraits<StringStream>.
-    */
-    enum { copyOptimization = 0 };
-};
-
-//! Reserve n characters for writing to a stream.
-template<typename Stream>
-inline void PutReserve(Stream& stream, size_t count) {
-    (void)stream;
-    (void)count;
-}
-
-//! Write character to a stream, presuming buffer is reserved.
-template<typename Stream>
-inline void PutUnsafe(Stream& stream, typename Stream::Ch c) {
-    stream.Put(c);
-}
-
-//! Put N copies of a character to a stream.
-template<typename Stream, typename Ch>
-inline void PutN(Stream& stream, Ch c, size_t n) {
-    PutReserve<Stream>(stream, n);
-    for (size_t i = 0; i < n; i++)
-        PutUnsafe(stream, c);
-}
-
-///////////////////////////////////////////////////////////////////////////////
-// StringStream
-
-//! Read-only string stream.
-/*! \note implements Stream concept
-*/
-template <typename Encoding>
-struct GenericStringStream {
-    typedef typename Encoding::Ch Ch;
-
-    GenericStringStream(const Ch *src) : src_(src), head_(src) {}
-
-    Ch Peek() const { return *src_; }
-    Ch Take() { return *src_++; }
-    size_t Tell() const { return static_cast<size_t>(src_ - head_); }
-
-    Ch* PutBegin() { RAPIDJSON_ASSERT(false); return 0; }
-    void Put(Ch) { RAPIDJSON_ASSERT(false); }
-    void Flush() { RAPIDJSON_ASSERT(false); }
-    size_t PutEnd(Ch*) { RAPIDJSON_ASSERT(false); return 0; }
-
-    const Ch* src_;     //!< Current read position.
-    const Ch* head_;    //!< Original head of the string.
-};
-
-template <typename Encoding>
-struct StreamTraits<GenericStringStream<Encoding> > {
-    enum { copyOptimization = 1 };
-};
-
-//! String stream with UTF8 encoding.
-typedef GenericStringStream<UTF8<> > StringStream;
-
-///////////////////////////////////////////////////////////////////////////////
-// InsituStringStream
-
-//! A read-write string stream.
-/*! This string stream is particularly designed for in-situ parsing.
-    \note implements Stream concept
-*/
-template <typename Encoding>
-struct GenericInsituStringStream {
-    typedef typename Encoding::Ch Ch;
-
-    GenericInsituStringStream(Ch *src) : src_(src), dst_(0), head_(src) {}
-
-    // Read
-    Ch Peek() { return *src_; }
-    Ch Take() { return *src_++; }
-    size_t Tell() { return static_cast<size_t>(src_ - head_); }
-
-    // Write
-    void Put(Ch c) { RAPIDJSON_ASSERT(dst_ != 0); *dst_++ = c; }
-
-    Ch* PutBegin() { return dst_ = src_; }
-    size_t PutEnd(Ch* begin) { return static_cast<size_t>(dst_ - begin); }
-    void Flush() {}
-
-    Ch* Push(size_t count) { Ch* begin = dst_; dst_ += count; return begin; }
-    void Pop(size_t count) { dst_ -= count; }
-
-    Ch* src_;
-    Ch* dst_;
-    Ch* head_;
-};
-
-template <typename Encoding>
-struct StreamTraits<GenericInsituStringStream<Encoding> > {
-    enum { copyOptimization = 1 };
-};
-
-//! Insitu string stream with UTF8 encoding.
-typedef GenericInsituStringStream<UTF8<> > InsituStringStream;
-
-RAPIDJSON_NAMESPACE_END
-
-#endif // RAPIDJSON_STREAM_H_
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/stringbuffer.h b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/stringbuffer.h
deleted file mode 100644
index 78f34d2..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/stringbuffer.h
+++ /dev/null
@@ -1,117 +0,0 @@
-// Tencent is pleased to support the open source community by making RapidJSON available.
-// 
-// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
-//
-// Licensed under the MIT License (the "License"); you may not use this file except
-// in compliance with the License. You may obtain a copy of the License at
-//
-// http://opensource.org/licenses/MIT
-//
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
-// specific language governing permissions and limitations under the License.
-
-#ifndef RAPIDJSON_STRINGBUFFER_H_
-#define RAPIDJSON_STRINGBUFFER_H_
-
-#include "stream.h"
-#include "internal/stack.h"
-
-#if RAPIDJSON_HAS_CXX11_RVALUE_REFS
-#include <utility> // std::move
-#endif
-
-#include "internal/stack.h"
-
-#if defined(__clang__)
-RAPIDJSON_DIAG_PUSH
-RAPIDJSON_DIAG_OFF(c++98-compat)
-#endif
-
-RAPIDJSON_NAMESPACE_BEGIN
-
-//! Represents an in-memory output stream.
-/*!
-    \tparam Encoding Encoding of the stream.
-    \tparam Allocator type for allocating memory buffer.
-    \note implements Stream concept
-*/
-template <typename Encoding, typename Allocator = CrtAllocator>
-class GenericStringBuffer {
-public:
-    typedef typename Encoding::Ch Ch;
-
-    GenericStringBuffer(Allocator* allocator = 0, size_t capacity = kDefaultCapacity) : stack_(allocator, capacity) {}
-
-#if RAPIDJSON_HAS_CXX11_RVALUE_REFS
-    GenericStringBuffer(GenericStringBuffer&& rhs) : stack_(std::move(rhs.stack_)) {}
-    GenericStringBuffer& operator=(GenericStringBuffer&& rhs) {
-        if (&rhs != this)
-            stack_ = std::move(rhs.stack_);
-        return *this;
-    }
-#endif
-
-    void Put(Ch c) { *stack_.template Push<Ch>() = c; }
-    void PutUnsafe(Ch c) { *stack_.template PushUnsafe<Ch>() = c; }
-    void Flush() {}
-
-    void Clear() { stack_.Clear(); }
-    void ShrinkToFit() {
-        // Push and pop a null terminator. This is safe.
-        *stack_.template Push<Ch>() = '\0';
-        stack_.ShrinkToFit();
-        stack_.template Pop<Ch>(1);
-    }
-
-    void Reserve(size_t count) { stack_.template Reserve<Ch>(count); }
-    Ch* Push(size_t count) { return stack_.template Push<Ch>(count); }
-    Ch* PushUnsafe(size_t count) { return stack_.template PushUnsafe<Ch>(count); }
-    void Pop(size_t count) { stack_.template Pop<Ch>(count); }
-
-    const Ch* GetString() const {
-        // Push and pop a null terminator. This is safe.
-        *stack_.template Push<Ch>() = '\0';
-        stack_.template Pop<Ch>(1);
-
-        return stack_.template Bottom<Ch>();
-    }
-
-    size_t GetSize() const { return stack_.GetSize(); }
-
-    static const size_t kDefaultCapacity = 256;
-    mutable internal::Stack<Allocator> stack_;
-
-private:
-    // Prohibit copy constructor & assignment operator.
-    GenericStringBuffer(const GenericStringBuffer&);
-    GenericStringBuffer& operator=(const GenericStringBuffer&);
-};
-
-//! String buffer with UTF8 encoding
-typedef GenericStringBuffer<UTF8<> > StringBuffer;
-
-template<typename Encoding, typename Allocator>
-inline void PutReserve(GenericStringBuffer<Encoding, Allocator>& stream, size_t count) {
-    stream.Reserve(count);
-}
-
-template<typename Encoding, typename Allocator>
-inline void PutUnsafe(GenericStringBuffer<Encoding, Allocator>& stream, typename Encoding::Ch c) {
-    stream.PutUnsafe(c);
-}
-
-//! Implement specialized version of PutN() with memset() for better performance.
-template<>
-inline void PutN(GenericStringBuffer<UTF8<> >& stream, char c, size_t n) {
-    std::memset(stream.stack_.Push<char>(n), c, n * sizeof(c));
-}
-
-RAPIDJSON_NAMESPACE_END
-
-#if defined(__clang__)
-RAPIDJSON_DIAG_POP
-#endif
-
-#endif // RAPIDJSON_STRINGBUFFER_H_
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/writer.h b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/writer.h
deleted file mode 100644
index 2809f70..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/include/rapidjson/writer.h
+++ /dev/null
@@ -1,574 +0,0 @@
-// Tencent is pleased to support the open source community by making RapidJSON available.
-// 
-// Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip. All rights reserved.
-//
-// Licensed under the MIT License (the "License"); you may not use this file except
-// in compliance with the License. You may obtain a copy of the License at
-//
-// http://opensource.org/licenses/MIT
-//
-// Unless required by applicable law or agreed to in writing, software distributed 
-// under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR 
-// CONDITIONS OF ANY KIND, either express or implied. See the License for the 
-// specific language governing permissions and limitations under the License.
-
-#ifndef RAPIDJSON_WRITER_H_
-#define RAPIDJSON_WRITER_H_
-
-#include "stream.h"
-#include "internal/stack.h"
-#include "internal/strfunc.h"
-#include "internal/dtoa.h"
-#include "internal/itoa.h"
-#include "stringbuffer.h"
-#include <new>      // placement new
-
-#if defined(RAPIDJSON_SIMD) && defined(_MSC_VER)
-#include <intrin.h>
-#pragma intrinsic(_BitScanForward)
-#endif
-#ifdef RAPIDJSON_SSE42
-#include <nmmintrin.h>
-#elif defined(RAPIDJSON_SSE2)
-#include <emmintrin.h>
-#endif
-
-#ifdef _MSC_VER
-RAPIDJSON_DIAG_PUSH
-RAPIDJSON_DIAG_OFF(4127) // conditional expression is constant
-#endif
-
-#ifdef __clang__
-RAPIDJSON_DIAG_PUSH
-RAPIDJSON_DIAG_OFF(padded)
-#endif
-
-RAPIDJSON_NAMESPACE_BEGIN
-
-///////////////////////////////////////////////////////////////////////////////
-// WriteFlag
-
-/*! \def RAPIDJSON_WRITE_DEFAULT_FLAGS 
-    \ingroup RAPIDJSON_CONFIG
-    \brief User-defined kWriteDefaultFlags definition.
-
-    User can define this as any \c WriteFlag combinations.
-*/
-#ifndef RAPIDJSON_WRITE_DEFAULT_FLAGS
-#define RAPIDJSON_WRITE_DEFAULT_FLAGS kWriteNoFlags
-#endif
-
-//! Combination of writeFlags
-enum WriteFlag {
-    kWriteNoFlags = 0,              //!< No flags are set.
-    kWriteValidateEncodingFlag = 1, //!< Validate encoding of JSON strings.
-    kWriteDefaultFlags = RAPIDJSON_WRITE_DEFAULT_FLAGS  //!< Default write flags. Can be customized by defining RAPIDJSON_WRITE_DEFAULT_FLAGS
-};
-
-//! JSON writer
-/*! Writer implements the concept Handler.
-    It generates JSON text by events to an output os.
-
-    User may programmatically calls the functions of a writer to generate JSON text.
-
-    On the other side, a writer can also be passed to objects that generates events, 
-
-    for example Reader::Parse() and Document::Accept().
-
-    \tparam OutputStream Type of output stream.
-    \tparam SourceEncoding Encoding of source string.
-    \tparam TargetEncoding Encoding of output stream.
-    \tparam StackAllocator Type of allocator for allocating memory of stack.
-    \note implements Handler concept
-*/
-template<typename OutputStream, typename SourceEncoding = UTF8<>, typename TargetEncoding = UTF8<>, typename StackAllocator = CrtAllocator, unsigned writeFlags = kWriteDefaultFlags>
-class Writer {
-public:
-    typedef typename SourceEncoding::Ch Ch;
-
-    static const int kDefaultMaxDecimalPlaces = 324;
-
-    //! Constructor
-    /*! \param os Output stream.
-        \param stackAllocator User supplied allocator. If it is null, it will create a private one.
-        \param levelDepth Initial capacity of stack.
-    */
-    explicit
-    Writer(OutputStream& os, StackAllocator* stackAllocator = 0, size_t levelDepth = kDefaultLevelDepth) : 
-        os_(&os), level_stack_(stackAllocator, levelDepth * sizeof(Level)), maxDecimalPlaces_(kDefaultMaxDecimalPlaces), hasRoot_(false) {}
-
-    explicit
-    Writer(StackAllocator* allocator = 0, size_t levelDepth = kDefaultLevelDepth) :
-        os_(0), level_stack_(allocator, levelDepth * sizeof(Level)), maxDecimalPlaces_(kDefaultMaxDecimalPlaces), hasRoot_(false) {}
-
-    //! Reset the writer with a new stream.
-    /*!
-        This function reset the writer with a new stream and default settings,
-        in order to make a Writer object reusable for output multiple JSONs.
-
-        \param os New output stream.
-        \code
-        Writer<OutputStream> writer(os1);
-        writer.StartObject();
-        // ...
-        writer.EndObject();
-
-        writer.Reset(os2);
-        writer.StartObject();
-        // ...
-        writer.EndObject();
-        \endcode
-    */
-    void Reset(OutputStream& os) {
-        os_ = &os;
-        hasRoot_ = false;
-        level_stack_.Clear();
-    }
-
-    //! Checks whether the output is a complete JSON.
-    /*!
-        A complete JSON has a complete root object or array.
-    */
-    bool IsComplete() const {
-        return hasRoot_ && level_stack_.Empty();
-    }
-
-    int GetMaxDecimalPlaces() const {
-        return maxDecimalPlaces_;
-    }
-
-    //! Sets the maximum number of decimal places for double output.
-    /*!
-        This setting truncates the output with specified number of decimal places.
-
-        For example, 
-
-        \code
-        writer.SetMaxDecimalPlaces(3);
-        writer.StartArray();
-        writer.Double(0.12345);                 // "0.123"
-        writer.Double(0.0001);                  // "0.0"
-        writer.Double(1.234567890123456e30);    // "1.234567890123456e30" (do not truncate significand for positive exponent)
-        writer.Double(1.23e-4);                 // "0.0"                  (do truncate significand for negative exponent)
-        writer.EndArray();
-        \endcode
-
-        The default setting does not truncate any decimal places. You can restore to this setting by calling
-        \code
-        writer.SetMaxDecimalPlaces(Writer::kDefaultMaxDecimalPlaces);
-        \endcode
-    */
-    void SetMaxDecimalPlaces(int maxDecimalPlaces) {
-        maxDecimalPlaces_ = maxDecimalPlaces;
-    }
-
-    /*!@name Implementation of Handler
-        \see Handler
-    */
-    //@{
-
-    bool Null()                 { Prefix(kNullType);   return WriteNull(); }
-    bool Bool(bool b)           { Prefix(b ? kTrueType : kFalseType); return WriteBool(b); }
-    bool Int(int i)             { Prefix(kNumberType); return WriteInt(i); }
-    bool Uint(unsigned u)       { Prefix(kNumberType); return WriteUint(u); }
-    bool Int64(int64_t i64)     { Prefix(kNumberType); return WriteInt64(i64); }
-    bool Uint64(uint64_t u64)   { Prefix(kNumberType); return WriteUint64(u64); }
-
-    //! Writes the given \c double value to the stream
-    /*!
-        \param d The value to be written.
-        \return Whether it is succeed.
-    */
-    bool Double(double d)       { Prefix(kNumberType); return WriteDouble(d); }
-
-    bool RawNumber(const Ch* str, SizeType length, bool copy = false) {
-        (void)copy;
-        Prefix(kNumberType);
-        return WriteString(str, length);
-    }
-
-    bool String(const Ch* str, SizeType length, bool copy = false) {
-        (void)copy;
-        Prefix(kStringType);
-        return WriteString(str, length);
-    }
-
-#if RAPIDJSON_HAS_STDSTRING
-    bool String(const std::basic_string<Ch>& str) {
-        return String(str.data(), SizeType(str.size()));
-    }
-#endif
-
-    bool StartObject() {
-        Prefix(kObjectType);
-        new (level_stack_.template Push<Level>()) Level(false);
-        return WriteStartObject();
-    }
-
-    bool Key(const Ch* str, SizeType length, bool copy = false) { return String(str, length, copy); }
-
-    bool EndObject(SizeType memberCount = 0) {
-        (void)memberCount;
-        RAPIDJSON_ASSERT(level_stack_.GetSize() >= sizeof(Level));
-        RAPIDJSON_ASSERT(!level_stack_.template Top<Level>()->inArray);
-        level_stack_.template Pop<Level>(1);
-        bool ret = WriteEndObject();
-        if (RAPIDJSON_UNLIKELY(level_stack_.Empty()))   // end of json text
-            os_->Flush();
-        return ret;
-    }
-
-    bool StartArray() {
-        Prefix(kArrayType);
-        new (level_stack_.template Push<Level>()) Level(true);
-        return WriteStartArray();
-    }
-
-    bool EndArray(SizeType elementCount = 0) {
-        (void)elementCount;
-        RAPIDJSON_ASSERT(level_stack_.GetSize() >= sizeof(Level));
-        RAPIDJSON_ASSERT(level_stack_.template Top<Level>()->inArray);
-        level_stack_.template Pop<Level>(1);
-        bool ret = WriteEndArray();
-        if (RAPIDJSON_UNLIKELY(level_stack_.Empty()))   // end of json text
-            os_->Flush();
-        return ret;
-    }
-    //@}
-
-    /*! @name Convenience extensions */
-    //@{
-
-    //! Simpler but slower overload.
-    bool String(const Ch* str) { return String(str, internal::StrLen(str)); }
-    bool Key(const Ch* str) { return Key(str, internal::StrLen(str)); }
-
-    //@}
-
-    //! Write a raw JSON value.
-    /*!
-        For user to write a stringified JSON as a value.
-
-        \param json A well-formed JSON value. It should not contain null character within [0, length - 1] range.
-        \param length Length of the json.
-        \param type Type of the root of json.
-    */
-    bool RawValue(const Ch* json, size_t length, Type type) { Prefix(type); return WriteRawValue(json, length); }
-
-protected:
-    //! Information for each nested level
-    struct Level {
-        Level(bool inArray_) : valueCount(0), inArray(inArray_) {}
-        size_t valueCount;  //!< number of values in this level
-        bool inArray;       //!< true if in array, otherwise in object
-    };
-
-    static const size_t kDefaultLevelDepth = 32;
-
-    bool WriteNull()  {
-        PutReserve(*os_, 4);
-        PutUnsafe(*os_, 'n'); PutUnsafe(*os_, 'u'); PutUnsafe(*os_, 'l'); PutUnsafe(*os_, 'l'); return true;
-    }
-
-    bool WriteBool(bool b)  {
-        if (b) {
-            PutReserve(*os_, 4);
-            PutUnsafe(*os_, 't'); PutUnsafe(*os_, 'r'); PutUnsafe(*os_, 'u'); PutUnsafe(*os_, 'e');
-        }
-        else {
-            PutReserve(*os_, 5);
-            PutUnsafe(*os_, 'f'); PutUnsafe(*os_, 'a'); PutUnsafe(*os_, 'l'); PutUnsafe(*os_, 's'); PutUnsafe(*os_, 'e');
-        }
-        return true;
-    }
-
-    bool WriteInt(int i) {
-        char buffer[11];
-        const char* end = internal::i32toa(i, buffer);
-        PutReserve(*os_, static_cast<size_t>(end - buffer));
-        for (const char* p = buffer; p != end; ++p)
-            PutUnsafe(*os_, static_cast<typename TargetEncoding::Ch>(*p));
-        return true;
-    }
-
-    bool WriteUint(unsigned u) {
-        char buffer[10];
-        const char* end = internal::u32toa(u, buffer);
-        PutReserve(*os_, static_cast<size_t>(end - buffer));
-        for (const char* p = buffer; p != end; ++p)
-            PutUnsafe(*os_, static_cast<typename TargetEncoding::Ch>(*p));
-        return true;
-    }
-
-    bool WriteInt64(int64_t i64) {
-        char buffer[21];
-        const char* end = internal::i64toa(i64, buffer);
-        PutReserve(*os_, static_cast<size_t>(end - buffer));
-        for (const char* p = buffer; p != end; ++p)
-            PutUnsafe(*os_, static_cast<typename TargetEncoding::Ch>(*p));
-        return true;
-    }
-
-    bool WriteUint64(uint64_t u64) {
-        char buffer[20];
-        char* end = internal::u64toa(u64, buffer);
-        PutReserve(*os_, static_cast<size_t>(end - buffer));
-        for (char* p = buffer; p != end; ++p)
-            PutUnsafe(*os_, static_cast<typename TargetEncoding::Ch>(*p));
-        return true;
-    }
-
-    bool WriteDouble(double d) {
-        if (internal::Double(d).IsNanOrInf())
-            return false;
-        
-        char buffer[25];
-        char* end = internal::dtoa(d, buffer, maxDecimalPlaces_);
-        PutReserve(*os_, static_cast<size_t>(end - buffer));
-        for (char* p = buffer; p != end; ++p)
-            PutUnsafe(*os_, static_cast<typename TargetEncoding::Ch>(*p));
-        return true;
-    }
-
-    bool WriteString(const Ch* str, SizeType length)  {
-        static const typename TargetEncoding::Ch hexDigits[16] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E', 'F' };
-        static const char escape[256] = {
-#define Z16 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
-            //0    1    2    3    4    5    6    7    8    9    A    B    C    D    E    F
-            'u', 'u', 'u', 'u', 'u', 'u', 'u', 'u', 'b', 't', 'n', 'u', 'f', 'r', 'u', 'u', // 00
-            'u', 'u', 'u', 'u', 'u', 'u', 'u', 'u', 'u', 'u', 'u', 'u', 'u', 'u', 'u', 'u', // 10
-              0,   0, '"',   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0, // 20
-            Z16, Z16,                                                                       // 30~4F
-              0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,'\\',   0,   0,   0, // 50
-            Z16, Z16, Z16, Z16, Z16, Z16, Z16, Z16, Z16, Z16                                // 60~FF
-#undef Z16
-        };
-
-        if (TargetEncoding::supportUnicode)
-            PutReserve(*os_, 2 + length * 6); // "\uxxxx..."
-        else
-            PutReserve(*os_, 2 + length * 12);  // "\uxxxx\uyyyy..."
-
-        PutUnsafe(*os_, '\"');
-        GenericStringStream<SourceEncoding> is(str);
-        while (ScanWriteUnescapedString(is, length)) {
-            const Ch c = is.Peek();
-            if (!TargetEncoding::supportUnicode && static_cast<unsigned>(c) >= 0x80) {
-                // Unicode escaping
-                unsigned codepoint;
-                if (RAPIDJSON_UNLIKELY(!SourceEncoding::Decode(is, &codepoint)))
-                    return false;
-                PutUnsafe(*os_, '\\');
-                PutUnsafe(*os_, 'u');
-                if (codepoint <= 0xD7FF || (codepoint >= 0xE000 && codepoint <= 0xFFFF)) {
-                    PutUnsafe(*os_, hexDigits[(codepoint >> 12) & 15]);
-                    PutUnsafe(*os_, hexDigits[(codepoint >>  8) & 15]);
-                    PutUnsafe(*os_, hexDigits[(codepoint >>  4) & 15]);
-                    PutUnsafe(*os_, hexDigits[(codepoint      ) & 15]);
-                }
-                else {
-                    RAPIDJSON_ASSERT(codepoint >= 0x010000 && codepoint <= 0x10FFFF);
-                    // Surrogate pair
-                    unsigned s = codepoint - 0x010000;
-                    unsigned lead = (s >> 10) + 0xD800;
-                    unsigned trail = (s & 0x3FF) + 0xDC00;
-                    PutUnsafe(*os_, hexDigits[(lead >> 12) & 15]);
-                    PutUnsafe(*os_, hexDigits[(lead >>  8) & 15]);
-                    PutUnsafe(*os_, hexDigits[(lead >>  4) & 15]);
-                    PutUnsafe(*os_, hexDigits[(lead      ) & 15]);
-                    PutUnsafe(*os_, '\\');
-                    PutUnsafe(*os_, 'u');
-                    PutUnsafe(*os_, hexDigits[(trail >> 12) & 15]);
-                    PutUnsafe(*os_, hexDigits[(trail >>  8) & 15]);
-                    PutUnsafe(*os_, hexDigits[(trail >>  4) & 15]);
-                    PutUnsafe(*os_, hexDigits[(trail      ) & 15]);                    
-                }
-            }
-            else if ((sizeof(Ch) == 1 || static_cast<unsigned>(c) < 256) && RAPIDJSON_UNLIKELY(escape[static_cast<unsigned char>(c)]))  {
-                is.Take();
-                PutUnsafe(*os_, '\\');
-                PutUnsafe(*os_, static_cast<typename TargetEncoding::Ch>(escape[static_cast<unsigned char>(c)]));
-                if (escape[static_cast<unsigned char>(c)] == 'u') {
-                    PutUnsafe(*os_, '0');
-                    PutUnsafe(*os_, '0');
-                    PutUnsafe(*os_, hexDigits[static_cast<unsigned char>(c) >> 4]);
-                    PutUnsafe(*os_, hexDigits[static_cast<unsigned char>(c) & 0xF]);
-                }
-            }
-            else if (RAPIDJSON_UNLIKELY(!(writeFlags & kWriteValidateEncodingFlag ? 
-                Transcoder<SourceEncoding, TargetEncoding>::Validate(is, *os_) :
-                Transcoder<SourceEncoding, TargetEncoding>::TranscodeUnsafe(is, *os_))))
-                return false;
-        }
-        PutUnsafe(*os_, '\"');
-        return true;
-    }
-
-    bool ScanWriteUnescapedString(GenericStringStream<SourceEncoding>& is, size_t length) {
-        return RAPIDJSON_LIKELY(is.Tell() < length);
-    }
-
-    bool WriteStartObject() { os_->Put('{'); return true; }
-    bool WriteEndObject()   { os_->Put('}'); return true; }
-    bool WriteStartArray()  { os_->Put('['); return true; }
-    bool WriteEndArray()    { os_->Put(']'); return true; }
-
-    bool WriteRawValue(const Ch* json, size_t length) {
-        PutReserve(*os_, length);
-        for (size_t i = 0; i < length; i++) {
-            RAPIDJSON_ASSERT(json[i] != '\0');
-            PutUnsafe(*os_, json[i]);
-        }
-        return true;
-    }
-
-    void Prefix(Type type) {
-        (void)type;
-        if (RAPIDJSON_LIKELY(level_stack_.GetSize() != 0)) { // this value is not at root
-            Level* level = level_stack_.template Top<Level>();
-            if (level->valueCount > 0) {
-                if (level->inArray) 
-                    os_->Put(','); // add comma if it is not the first element in array
-                else  // in object
-                    os_->Put((level->valueCount % 2 == 0) ? ',' : ':');
-            }
-            if (!level->inArray && level->valueCount % 2 == 0)
-                RAPIDJSON_ASSERT(type == kStringType);  // if it's in object, then even number should be a name
-            level->valueCount++;
-        }
-        else {
-            RAPIDJSON_ASSERT(!hasRoot_);    // Should only has one and only one root.
-            hasRoot_ = true;
-        }
-    }
-
-    OutputStream* os_;
-    internal::Stack<StackAllocator> level_stack_;
-    int maxDecimalPlaces_;
-    bool hasRoot_;
-
-private:
-    // Prohibit copy constructor & assignment operator.
-    Writer(const Writer&);
-    Writer& operator=(const Writer&);
-};
-
-// Full specialization for StringStream to prevent memory copying
-
-template<>
-inline bool Writer<StringBuffer>::WriteInt(int i) {
-    char *buffer = os_->Push(11);
-    const char* end = internal::i32toa(i, buffer);
-    os_->Pop(static_cast<size_t>(11 - (end - buffer)));
-    return true;
-}
-
-template<>
-inline bool Writer<StringBuffer>::WriteUint(unsigned u) {
-    char *buffer = os_->Push(10);
-    const char* end = internal::u32toa(u, buffer);
-    os_->Pop(static_cast<size_t>(10 - (end - buffer)));
-    return true;
-}
-
-template<>
-inline bool Writer<StringBuffer>::WriteInt64(int64_t i64) {
-    char *buffer = os_->Push(21);
-    const char* end = internal::i64toa(i64, buffer);
-    os_->Pop(static_cast<size_t>(21 - (end - buffer)));
-    return true;
-}
-
-template<>
-inline bool Writer<StringBuffer>::WriteUint64(uint64_t u) {
-    char *buffer = os_->Push(20);
-    const char* end = internal::u64toa(u, buffer);
-    os_->Pop(static_cast<size_t>(20 - (end - buffer)));
-    return true;
-}
-
-template<>
-inline bool Writer<StringBuffer>::WriteDouble(double d) {
-    if (internal::Double(d).IsNanOrInf())
-        return false;
-    
-    char *buffer = os_->Push(25);
-    char* end = internal::dtoa(d, buffer, maxDecimalPlaces_);
-    os_->Pop(static_cast<size_t>(25 - (end - buffer)));
-    return true;
-}
-
-#if defined(RAPIDJSON_SSE2) || defined(RAPIDJSON_SSE42)
-template<>
-inline bool Writer<StringBuffer>::ScanWriteUnescapedString(StringStream& is, size_t length) {
-    if (length < 16)
-        return RAPIDJSON_LIKELY(is.Tell() < length);
-
-    if (!RAPIDJSON_LIKELY(is.Tell() < length))
-        return false;
-
-    const char* p = is.src_;
-    const char* end = is.head_ + length;
-    const char* nextAligned = reinterpret_cast<const char*>((reinterpret_cast<size_t>(p) + 15) & static_cast<size_t>(~15));
-    const char* endAligned = reinterpret_cast<const char*>(reinterpret_cast<size_t>(end) & static_cast<size_t>(~15));
-    if (nextAligned > end)
-        return true;
-
-    while (p != nextAligned)
-        if (*p < 0x20 || *p == '\"' || *p == '\\') {
-            is.src_ = p;
-            return RAPIDJSON_LIKELY(is.Tell() < length);
-        }
-        else
-            os_->PutUnsafe(*p++);
-
-    // The rest of string using SIMD
-    static const char dquote[16] = { '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"', '\"' };
-    static const char bslash[16] = { '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\', '\\' };
-    static const char space[16]  = { 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19, 0x19 };
-    const __m128i dq = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&dquote[0]));
-    const __m128i bs = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&bslash[0]));
-    const __m128i sp = _mm_loadu_si128(reinterpret_cast<const __m128i *>(&space[0]));
-
-    for (; p != endAligned; p += 16) {
-        const __m128i s = _mm_load_si128(reinterpret_cast<const __m128i *>(p));
-        const __m128i t1 = _mm_cmpeq_epi8(s, dq);
-        const __m128i t2 = _mm_cmpeq_epi8(s, bs);
-        const __m128i t3 = _mm_cmpeq_epi8(_mm_max_epu8(s, sp), sp); // s < 0x20 <=> max(s, 0x19) == 0x19
-        const __m128i x = _mm_or_si128(_mm_or_si128(t1, t2), t3);
-        unsigned short r = static_cast<unsigned short>(_mm_movemask_epi8(x));
-        if (RAPIDJSON_UNLIKELY(r != 0)) {   // some of characters is escaped
-            SizeType len;
-#ifdef _MSC_VER         // Find the index of first escaped
-            unsigned long offset;
-            _BitScanForward(&offset, r);
-            len = offset;
-#else
-            len = static_cast<SizeType>(__builtin_ffs(r) - 1);
-#endif
-            char* q = reinterpret_cast<char*>(os_->PushUnsafe(len));
-            for (size_t i = 0; i < len; i++)
-                q[i] = p[i];
-
-            p += len;
-            break;
-        }
-        _mm_storeu_si128(reinterpret_cast<__m128i *>(os_->PushUnsafe(16)), s);
-    }
-
-    is.src_ = p;
-    return RAPIDJSON_LIKELY(is.Tell() < length);
-}
-#endif // defined(RAPIDJSON_SSE2) || defined(RAPIDJSON_SSE42)
-
-RAPIDJSON_NAMESPACE_END
-
-#ifdef _MSC_VER
-RAPIDJSON_DIAG_POP
-#endif
-
-#ifdef __clang__
-RAPIDJSON_DIAG_POP
-#endif
-
-#endif // RAPIDJSON_RAPIDJSON_H_
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/license.txt b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/license.txt
deleted file mode 100644
index 7ccc161..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/rapidjson/license.txt
+++ /dev/null
@@ -1,57 +0,0 @@
-Tencent is pleased to support the open source community by making RapidJSON available. 
- 
-Copyright (C) 2015 THL A29 Limited, a Tencent company, and Milo Yip.  All rights reserved.
-
-If you have downloaded a copy of the RapidJSON binary from Tencent, please note that the RapidJSON binary is licensed under the MIT License.
-If you have downloaded a copy of the RapidJSON source code from Tencent, please note that RapidJSON source code is licensed under the MIT License, except for the third-party components listed below which are subject to different license terms.  Your integration of RapidJSON into your own projects may require compliance with the MIT License, as well as the other licenses applicable to the third-party components included within RapidJSON. To avoid the problematic JSON license in your own projects, it's sufficient to exclude the bin/jsonchecker/ directory, as it's the only code under the JSON license.
-A copy of the MIT License is included in this file.
-
-Other dependencies and licenses:
-
-Open Source Software Licensed Under the BSD License:
---------------------------------------------------------------------
-
-The msinttypes r29 
-Copyright (c) 2006-2013 Alexander Chemeris 
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. 
-* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
-* Neither the name of  copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-Open Source Software Licensed Under the JSON License:
---------------------------------------------------------------------
-
-json.org 
-Copyright (c) 2002 JSON.org
-All Rights Reserved.
-
-JSON_checker
-Copyright (c) 2002 JSON.org
-All Rights Reserved.
-
-	
-Terms of the JSON License:
----------------------------------------------------
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-The Software shall be used for Good, not Evil.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-
-Terms of the MIT License:
---------------------------------------------------------------------
-
-Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/C2/.gitignore b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/C2/.gitignore
deleted file mode 100644
index 9f61ca0..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/C2/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/binaries/
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/C2/modelDescription.xml b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/C2/modelDescription.xml
deleted file mode 100644
index 5c19d07..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/C2/modelDescription.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<fmiModelDescription fmiVersion="2.0" generationDateAndTime="2016-10-27T10:23:58.836+02:00" generationTool="Moka FMU exporter" guid="aa7034ea-8434-436b-a009-32efbdb332e1" modelName="C2">
-  <CoSimulation canBeInstantiatedOnlyOncePerProcess="true" canGetAndSetFMUstate="false" canHandleVariableCommunicationStepSize="true" canInterpolateInputs="false" canNotUseMemoryManagementFunctions="true" canRunAsynchronuously="false" canSerializeFMUstate="false" maxOutputDerivativeOrder="0" modelIdentifier="C2Linux64" needsExecutionTool="false" providesDirectionalDerivative="false"/>
-  <ModelVariables>
-    <ScalarVariable causality="output" initial="exact" name="abort" valueReference="0" variability="discrete">
-      <Boolean start="false"/>
-    </ScalarVariable>
-    <ScalarVariable causality="output" initial="exact" name="Size" valueReference="1" variability="discrete">
-      <Integer start="100"/>
-    </ScalarVariable>
-  </ModelVariables>
-  <ModelStructure>
-    <Outputs>
-      <Unknown index="1"/>
-      <Unknown index="2"/>
-    </Outputs>
-  </ModelStructure>
-</fmiModelDescription>
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/C2/resources/model/plugin/org.eclipse.papyrus.moka.fmi.profile/model/FMI.profile.uml b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/C2/resources/model/plugin/org.eclipse.papyrus.moka.fmi.profile/model/FMI.profile.uml
deleted file mode 100644
index 3f74c60..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/C2/resources/model/plugin/org.eclipse.papyrus.moka.fmi.profile/model/FMI.profile.uml
+++ /dev/null
@@ -1,360 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<uml:Profile xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="__Ki3oKvFEeSXqKqlHzx1gA" name="FMIProfile" metamodelReference="__Ki3oavFEeSXqKqlHzx1gA">
-  <eAnnotations xmi:id="_satEway_EeSXqKqlHzx1gA" source="http://www.eclipse.org/uml2/2.0.0/UML"/>
-  <ownedComment xmi:id="_NeAF8AfDEeabPfm64ybCZg">
-    <body>This Package is only present to create an UML description of FMI Modeldescription metamodel, in order to be able to import it from this FMIProfile and to reference the FmiModelDescription from the FMU stereotype&#xD;
-</body>
-  </ownedComment>
-  <elementImport xmi:id="_laYPwKvGEeSXqKqlHzx1gA" alias="Class">
-    <importedElement xmi:type="uml:Class" href="../../org.eclipse.uml2.uml.resources/metamodels/UML.metamodel.uml#Class"/>
-  </elementImport>
-  <elementImport xmi:id="_wv3E0avHEeSXqKqlHzx1gA" alias="Port">
-    <importedElement xmi:type="uml:Class" href="../../org.eclipse.uml2.uml.resources/metamodels/UML.metamodel.uml#Port"/>
-  </elementImport>
-  <elementImport xmi:id="_wv3r4KvHEeSXqKqlHzx1gA" alias="Property">
-    <importedElement xmi:type="uml:Class" href="../../org.eclipse.uml2.uml.resources/metamodels/UML.metamodel.uml#Property"/>
-  </elementImport>
-  <elementImport xmi:id="_rYp-UAOlEeWTZ-coMJ-ChQ" alias="Dependency">
-    <importedElement xmi:type="uml:Class" href="../../org.eclipse.uml2.uml.resources/metamodels/UML.metamodel.uml#Dependency"/>
-  </elementImport>
-  <elementImport xmi:id="_RgJo0CQeEeWWg83RXu3e8w" alias="Connector">
-    <importedElement xmi:type="uml:Class" href="../../org.eclipse.uml2.uml.resources/metamodels/UML.metamodel.uml#Connector"/>
-  </elementImport>
-  <packageImport xmi:id="__Ki3oavFEeSXqKqlHzx1gA">
-    <importedPackage xmi:type="uml:Model" href="../../org.eclipse.uml2.uml.resources/metamodels/UML.metamodel.uml#_0"/>
-  </packageImport>
-  <packageImport xmi:id="__Ki3oqvFEeSXqKqlHzx1gA">
-    <importedPackage xmi:type="uml:Model" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#_0"/>
-  </packageImport>
-  <packageImport xmi:id="_OPG4EAiaEeabPfm64ybCZg">
-    <importedPackage xmi:type="uml:Model" href="pathmap://PAPYRUS_FMI_PROFILE/../../org.eclipse.papyrus.moka.fmi/model/ModelDescriptionProxy.uml#_oZMi0CgJEeaEPIADLpYHKQ"/>
-  </packageImport>
-  <packageImport xmi:id="_bg_v0CiiEeaEPIADLpYHKQ">
-    <importedPackage xmi:type="uml:Model" href="pathmap://PAPYRUS_FMI_PROFILE/../../org.eclipse.papyrus.moka.fmi/model/fmumetamodel.uml#_qqrUcCiREeaEPIADLpYHKQ"/>
-  </packageImport>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="_6Z7fcK0REeSXqKqlHzx1gA" name="FMU">
-    <ownedAttribute xmi:id="_1n8aUK0VEeSXqKqlHzx1gA" name="fmiVersion">
-      <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_GRtB4K0WEeSXqKqlHzx1gA" name="modelName">
-      <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_J4cfEK0WEeSXqKqlHzx1gA" name="guid">
-      <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_MlWxQK0WEeSXqKqlHzx1gA" name="description">
-      <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_M6KjoK0WEeSXqKqlHzx1gA" name="author">
-      <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_V-UrwK0WEeSXqKqlHzx1gA" name="version">
-      <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_W0QOMK0WEeSXqKqlHzx1gA" name="copyright">
-      <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_XLIdIK0WEeSXqKqlHzx1gA" name="license">
-      <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_X3cJgK0WEeSXqKqlHzx1gA" name="generationTool">
-      <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_YHNq4K0WEeSXqKqlHzx1gA" name="generationDateAndTime">
-      <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_YXuMEK0WEeSXqKqlHzx1gA" name="variableNamingConvention">
-      <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_YnwzMK0WEeSXqKqlHzx1gA" name="numberOfEventIndicators">
-      <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_19CGoMXZEeSibcUjNRyRzw" name="base_Class" association="_19CtsMXZEeSibcUjNRyRzw">
-      <type xmi:type="uml:Class" href="../../org.eclipse.uml2.uml.resources/metamodels/UML.metamodel.uml#Class"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_RfTy4K1PEeSXqKqlHzx1gA" name="sourceFiles">
-      <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_VYUr0K1PEeSXqKqlHzx1gA" name="canBeInstantiatedOnlyOncePerProcess">
-      <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_WaONsK1PEeSXqKqlHzx1gA" name="canGetAndSetFMUstate">
-      <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_Y_Mr4K1PEeSXqKqlHzx1gA" name="canNotUseMemoryManagementFunctions">
-      <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_aMTYMK1PEeSXqKqlHzx1gA" name="canSerializeFMUstate">
-      <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_f5YPwK1PEeSXqKqlHzx1gA" name="providesDirectionalDerivative">
-      <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_em57QK1PEeSXqKqlHzx1gA" name="needsExecutionTool">
-      <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_dAv1wK1PEeSXqKqlHzx1gA" name="modelIdentifier">
-      <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_jb-e0CihEeaEPIADLpYHKQ" name="modelDescription" isReadOnly="true" isDerived="true" association="_jb8poCihEeaEPIADLpYHKQ">
-      <type xmi:type="uml:Class" href="pathmap://PAPYRUS_FMI_PROFILE/../../org.eclipse.papyrus.moka.fmi/model/ModelDescriptionProxy.uml#_oZMi0ygJEeaEPIADLpYHKQ"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_fuzNAiiiEeaEPIADLpYHKQ" name="fmuBundle" association="_fuyl8CiiEeaEPIADLpYHKQ">
-      <type xmi:type="uml:Class" href="pathmap://PAPYRUS_FMI_PROFILE/../../org.eclipse.papyrus.moka.fmi/model/fmumetamodel.uml#_APozgCgKEeaEPIADLpYHKQ"/>
-    </ownedAttribute>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="_njvM0K0iEeSXqKqlHzx1gA" name="Parameter">
-    <generalization xmi:id="_eghYcMPiEeSibcUjNRyRzw" general="_NRvP8OytEeSEBKJWDCrAIQ"/>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="_xhWFcK0iEeSXqKqlHzx1gA" name="Local">
-    <generalization xmi:id="_d8jvwMPiEeSibcUjNRyRzw" general="_NRvP8OytEeSEBKJWDCrAIQ"/>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="_zAZZYK1OEeSXqKqlHzx1gA" name="CS_FMU">
-    <generalization xmi:id="_W7zp0MPiEeSibcUjNRyRzw" general="_6Z7fcK0REeSXqKqlHzx1gA"/>
-    <ownedAttribute xmi:id="_0fRVsK1PEeSXqKqlHzx1gA" name="canHandleVariableCommunicationStepSize">
-      <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_2FmaUK1PEeSXqKqlHzx1gA" name="canInterpolateInputs">
-      <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_5C6gAK1PEeSXqKqlHzx1gA" name="canRunAsynchronuously">
-      <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_7SO3QK1PEeSXqKqlHzx1gA" name="maxOutputDerivativeOrder">
-      <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="__aAk8K1PEeSXqKqlHzx1gA" name="needsExecutionTool">
-      <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_rW02oOwdEeSEBKJWDCrAIQ" name="startTime">
-      <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_7LzLQOwdEeSEBKJWDCrAIQ" name="stopTime">
-      <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_-hgi0OwdEeSEBKJWDCrAIQ" name="stepSize">
-      <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_Ar590OweEeSEBKJWDCrAIQ" name="tolerance">
-      <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-    </ownedAttribute>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="_2rjcgK1OEeSXqKqlHzx1gA" name="ME_FMU">
-    <generalization xmi:id="_XQ9acMPiEeSibcUjNRyRzw" general="_6Z7fcK0REeSXqKqlHzx1gA"/>
-    <ownedAttribute xmi:id="_btjvkK1PEeSXqKqlHzx1gA" name="completedIntegratorStepNotNeeded">
-      <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-    </ownedAttribute>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="_19CtsMXZEeSibcUjNRyRzw" name="E_FMU_Class1" memberEnd="_19CtscXZEeSibcUjNRyRzw _19CGoMXZEeSibcUjNRyRzw">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_19CtscXZEeSibcUjNRyRzw" name="extension_FMU" type="_6Z7fcK0REeSXqKqlHzx1gA" aggregation="composite" association="_19CtsMXZEeSibcUjNRyRzw"/>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="_0Ab54OyjEeSEBKJWDCrAIQ" name="Port">
-    <generalization xmi:id="_Oa938OykEeSEBKJWDCrAIQ" general="_NRvP8OytEeSEBKJWDCrAIQ"/>
-    <ownedAttribute xmi:id="_NmHTkOykEeSEBKJWDCrAIQ" name="base_Port" association="_NmIhsOykEeSEBKJWDCrAIQ">
-      <type xmi:type="uml:Class" href="../../org.eclipse.uml2.uml.resources/metamodels/UML.metamodel.uml#Port"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_bir8IOykEeSEBKJWDCrAIQ" name="direction" type="_CJbegAYPEea37IpNp9toNQ"/>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="_NmIhsOykEeSEBKJWDCrAIQ" name="E_Port_Port1" memberEnd="_NmIhseykEeSEBKJWDCrAIQ _NmHTkOykEeSEBKJWDCrAIQ">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_NmIhseykEeSEBKJWDCrAIQ" name="extension_Port" type="_0Ab54OyjEeSEBKJWDCrAIQ" aggregation="composite" association="_NmIhsOykEeSEBKJWDCrAIQ"/>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="_NRvP8OytEeSEBKJWDCrAIQ" name="ScalarVariable" isAbstract="true">
-    <ownedAttribute xmi:id="_XR_M4OytEeSEBKJWDCrAIQ" name="base_Property" association="_XSAbAOytEeSEBKJWDCrAIQ">
-      <type xmi:type="uml:Class" href="../../org.eclipse.uml2.uml.resources/metamodels/UML.metamodel.uml#Property"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_hQ1boOytEeSEBKJWDCrAIQ" name="description">
-      <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_QwldkJdgEeWXHe1Lt_6eNw" name="variability" type="_m6Ae0CCbEeWt4Mi1ebEMdw"/>
-    <ownedAttribute xmi:id="_c98LQJdgEeWXHe1Lt_6eNw" name="initial" type="_EJc0gCCcEeWt4Mi1ebEMdw"/>
-    <ownedAttribute xmi:id="_gyZUUJdgEeWXHe1Lt_6eNw" name="valueReference">
-      <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/EcorePrimitiveTypes.library.uml#EInt"/>
-      <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_0rpegC5BEea0_OLDat2kQQ" value="-1"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_reC30CihEeaEPIADLpYHKQ" name="fmiVariable" association="_reBCoCihEeaEPIADLpYHKQ">
-      <type xmi:type="uml:Class" href="pathmap://PAPYRUS_FMI_PROFILE/../../org.eclipse.papyrus.moka.fmi/model/ModelDescriptionProxy.uml#_oZMi1CgJEeaEPIADLpYHKQ"/>
-    </ownedAttribute>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="_XSAbAOytEeSEBKJWDCrAIQ" name="E_ScalarVariable_Property1" memberEnd="_XSAbAeytEeSEBKJWDCrAIQ _XR_M4OytEeSEBKJWDCrAIQ">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_XSAbAeytEeSEBKJWDCrAIQ" name="extension_ScalarVariable" type="_NRvP8OytEeSEBKJWDCrAIQ" aggregation="composite" association="_XSAbAOytEeSEBKJWDCrAIQ"/>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="_dWNCEO5uEeS9FOvuH52nyQ" name="Independent">
-    <generalization xmi:id="_fc_IYO5uEeS9FOvuH52nyQ" general="_NRvP8OytEeSEBKJWDCrAIQ"/>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Enumeration" xmi:id="_m6Ae0CCbEeWt4Mi1ebEMdw" name="VariabilityKind">
-    <ownedLiteral xmi:id="_ocXpcCCbEeWt4Mi1ebEMdw" name="constant"/>
-    <ownedLiteral xmi:id="_oy89cCCbEeWt4Mi1ebEMdw" name="fixed"/>
-    <ownedLiteral xmi:id="_w7HXYCCbEeWt4Mi1ebEMdw" name="tunable"/>
-    <ownedLiteral xmi:id="_x1iYQCCbEeWt4Mi1ebEMdw" name="discrete"/>
-    <ownedLiteral xmi:id="_y3oHYCCbEeWt4Mi1ebEMdw" name="continuous"/>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Enumeration" xmi:id="_EJc0gCCcEeWt4Mi1ebEMdw" name="InitialKind">
-    <ownedLiteral xmi:id="_FPsD0CCcEeWt4Mi1ebEMdw" name="exact"/>
-    <ownedLiteral xmi:id="_FewakCCcEeWt4Mi1ebEMdw" name="approx"/>
-    <ownedLiteral xmi:id="_F8k_ACCcEeWt4Mi1ebEMdw" name="calculated"/>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Enumeration" xmi:id="_MSoiICCcEeWt4Mi1ebEMdw" name="DependenciesKind">
-    <ownedLiteral xmi:id="_PhWg4CCcEeWt4Mi1ebEMdw" name="dependent"/>
-    <ownedLiteral xmi:id="_P0FPoCCcEeWt4Mi1ebEMdw" name="constant"/>
-    <ownedLiteral xmi:id="_QHfT0CCcEeWt4Mi1ebEMdw" name="fixed"/>
-    <ownedLiteral xmi:id="_QbX5ICCcEeWt4Mi1ebEMdw" name="tunable"/>
-    <ownedLiteral xmi:id="_Q5sz4CCcEeWt4Mi1ebEMdw" name="discrete"/>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="_XbjscCCeEeWt4Mi1ebEMdw" name="Unknown">
-    <ownedAttribute xmi:id="_m_6yMCCeEeWt4Mi1ebEMdw" name="base_Property" association="_m_15sCCeEeWt4Mi1ebEMdw">
-      <type xmi:type="uml:Class" href="../../org.eclipse.uml2.uml.resources/metamodels/UML.metamodel.uml#Property"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_N5RL8CCgEeWt4Mi1ebEMdw" name="dependencies">
-      <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Yvu_MCCgEeWt4Mi1ebEMdw"/>
-      <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_YvypkCCgEeWt4Mi1ebEMdw" value="1"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_OzGW8CCgEeWt4Mi1ebEMdw" name="dependenciesKind">
-      <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_5wK6QCCgEeWt4Mi1ebEMdw"/>
-      <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_5wPywCCgEeWt4Mi1ebEMdw" value="1"/>
-    </ownedAttribute>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="_YKufkCCeEeWt4Mi1ebEMdw" name="OutputUnknown">
-    <generalization xmi:id="_LrwLgCCgEeWt4Mi1ebEMdw" general="_XbjscCCeEeWt4Mi1ebEMdw"/>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="_Yn3ukCCeEeWt4Mi1ebEMdw" name="InitialUnknown">
-    <generalization xmi:id="_MglhwCCgEeWt4Mi1ebEMdw" general="_XbjscCCeEeWt4Mi1ebEMdw"/>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="_ly3wQCCeEeWt4Mi1ebEMdw" name="DerivativeUnknown">
-    <generalization xmi:id="_MJ4R8CCgEeWt4Mi1ebEMdw" general="_XbjscCCeEeWt4Mi1ebEMdw"/>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="_m_15sCCeEeWt4Mi1ebEMdw" name="E_Unknown_Property1" memberEnd="_m_6LICCeEeWt4Mi1ebEMdw _m_6yMCCeEeWt4Mi1ebEMdw">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_m_6LICCeEeWt4Mi1ebEMdw" name="extension_Unknown" type="_XbjscCCeEeWt4Mi1ebEMdw" aggregation="composite" association="_m_15sCCeEeWt4Mi1ebEMdw"/>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="_kj6zcCTIEeWWg83RXu3e8w" name="CS_Graph">
-    <ownedAttribute xmi:id="_03VokJHqEeWBwegMGR0s3g" name="startTime">
-      <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-      <defaultValue xmi:type="uml:LiteralReal" xmi:id="_L4IhUJIEEeWBwegMGR0s3g"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_11TFoJHqEeWBwegMGR0s3g" name="stopTime">
-      <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-      <defaultValue xmi:type="uml:LiteralReal" xmi:id="_UFHw4JIEEeWBwegMGR0s3g" value="100.0"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_VGwNAJIEEeWBwegMGR0s3g" name="stepSize">
-      <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-      <defaultValue xmi:type="uml:LiteralReal" xmi:id="_c9zBwJIEEeWBwegMGR0s3g" value="10.0"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_g-XUMJIEEeWBwegMGR0s3g" name="tolerance">
-      <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-      <defaultValue xmi:type="uml:LiteralReal" xmi:id="_l1GZoJIEEeWBwegMGR0s3g"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_mo2KwJIEEeWBwegMGR0s3g" name="toleranceDefined">
-      <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-      <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_tVFZQJIEEeWBwegMGR0s3g" value="true"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_u9MmkJIEEeWBwegMGR0s3g" name="stopTimeDefined">
-      <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-      <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_yfx8gJIEEeWBwegMGR0s3g" value="true"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_3hKywJIEEeWBwegMGR0s3g" name="computeSetupExperimentsFromFmus">
-      <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-      <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_GtfL8JIFEeWBwegMGR0s3g"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_v8TtoZ5OEeW4hpViu084wQ" name="base_Class" association="_v8AysJ5OEeW4hpViu084wQ">
-      <type xmi:type="uml:Class" href="../../org.eclipse.uml2.uml.resources/metamodels/UML.metamodel.uml#Class"/>
-    </ownedAttribute>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="_rezSMJK2EeWNJOjtFNxhjA" name="DerivativeDependency">
-    <ownedAttribute xmi:id="_t2F5sJK2EeWNJOjtFNxhjA" name="base_Dependency" association="_t1_MAJK2EeWNJOjtFNxhjA">
-      <type xmi:type="uml:Class" href="../../org.eclipse.uml2.uml.resources/metamodels/UML.metamodel.uml#Dependency"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="_ulJ_IJK2EeWNJOjtFNxhjA" name="dependencyKind" type="_MSoiICCcEeWt4Mi1ebEMdw"/>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="_t1_MAJK2EeWNJOjtFNxhjA" name="E_DerivativeDependency_Dependency1" memberEnd="_t2EEgJK2EeWNJOjtFNxhjA _t2F5sJK2EeWNJOjtFNxhjA">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_t2EEgJK2EeWNJOjtFNxhjA" name="extension_DerivativeDependency" type="_rezSMJK2EeWNJOjtFNxhjA" aggregation="composite" association="_t1_MAJK2EeWNJOjtFNxhjA"/>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="_3it0UJOYEeWNJOjtFNxhjA" name="OutputDependency">
-    <ownedAttribute xmi:id="_CgYbwJOZEeWNJOjtFNxhjA" name="base_Dependency" association="_CgWmkJOZEeWNJOjtFNxhjA">
-      <type xmi:type="uml:Class" href="../../org.eclipse.uml2.uml.resources/metamodels/UML.metamodel.uml#Dependency"/>
-    </ownedAttribute>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="_4FpiQJOYEeWNJOjtFNxhjA" name="InitialUnknownDependency">
-    <ownedAttribute xmi:id="_CGZOcJOZEeWNJOjtFNxhjA" name="base_Dependency" association="_CGXZQJOZEeWNJOjtFNxhjA">
-      <type xmi:type="uml:Class" href="../../org.eclipse.uml2.uml.resources/metamodels/UML.metamodel.uml#Dependency"/>
-    </ownedAttribute>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="_CGXZQJOZEeWNJOjtFNxhjA" name="E_InitialUnknownDependency_Dependency1" memberEnd="_CGYnYJOZEeWNJOjtFNxhjA _CGZOcJOZEeWNJOjtFNxhjA">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_CGYnYJOZEeWNJOjtFNxhjA" name="extension_InitialUnknownDependency" type="_4FpiQJOYEeWNJOjtFNxhjA" aggregation="composite" association="_CGXZQJOZEeWNJOjtFNxhjA"/>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="_CgWmkJOZEeWNJOjtFNxhjA" name="E_OutputDependency_Dependency1" memberEnd="_CgX0sJOZEeWNJOjtFNxhjA _CgYbwJOZEeWNJOjtFNxhjA">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_CgX0sJOZEeWNJOjtFNxhjA" name="extension_OutputDependency" type="_3it0UJOYEeWNJOjtFNxhjA" aggregation="composite" association="_CgWmkJOZEeWNJOjtFNxhjA"/>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="_JeJKsJdgEeWXHe1Lt_6eNw" name="CalculatedParameter">
-    <generalization xmi:id="_KVg3kJdgEeWXHe1Lt_6eNw" general="_NRvP8OytEeSEBKJWDCrAIQ"/>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Enumeration" xmi:id="_MTGwMJdhEeWXHe1Lt_6eNw" name="CausalityKind">
-    <ownedLiteral xmi:id="_M9HWgJdhEeWXHe1Lt_6eNw" name="parameter"/>
-    <ownedLiteral xmi:id="_ONojMJdhEeWXHe1Lt_6eNw" name="calculatedParameter"/>
-    <ownedLiteral xmi:id="_OrAbsJdhEeWXHe1Lt_6eNw" name="input"/>
-    <ownedLiteral xmi:id="_PHWZcJdhEeWXHe1Lt_6eNw" name="output"/>
-    <ownedLiteral xmi:id="_Py-wYJdhEeWXHe1Lt_6eNw" name="local"/>
-    <ownedLiteral xmi:id="_QHlucJdhEeWXHe1Lt_6eNw" name="independent"/>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="_v8AysJ5OEeW4hpViu084wQ" name="E_CS_Graph_Class2" memberEnd="_v8TtoJ5OEeW4hpViu084wQ _v8TtoZ5OEeW4hpViu084wQ">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_v8TtoJ5OEeW4hpViu084wQ" name="extension_CS_Graph" type="_kj6zcCTIEeWWg83RXu3e8w" aggregation="composite" association="_v8AysJ5OEeW4hpViu084wQ"/>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Enumeration" xmi:id="_VLKjsAYHEea37IpNp9toNQ" name="VariabilityNamingConvention">
-    <ownedLiteral xmi:id="_VLKjsQYHEea37IpNp9toNQ" name="flat"/>
-    <ownedLiteral xmi:id="_VLKjsgYHEea37IpNp9toNQ" name="structured"/>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Enumeration" xmi:id="_PieAYAYIEea37IpNp9toNQ" name="BaseUnit">
-    <ownedLiteral xmi:id="_PieAYQYIEea37IpNp9toNQ" name="a"/>
-    <ownedLiteral xmi:id="_PieAYgYIEea37IpNp9toNQ" name="cd"/>
-    <ownedLiteral xmi:id="_PieAYwYIEea37IpNp9toNQ" name="factor"/>
-    <ownedLiteral xmi:id="_PieAZAYIEea37IpNp9toNQ" name="k"/>
-    <ownedLiteral xmi:id="_PieAZQYIEea37IpNp9toNQ" name="kg"/>
-    <ownedLiteral xmi:id="_PieAZgYIEea37IpNp9toNQ" name="m"/>
-    <ownedLiteral xmi:id="_PieAZwYIEea37IpNp9toNQ" name="mol"/>
-    <ownedLiteral xmi:id="_PieAaAYIEea37IpNp9toNQ" name="offset"/>
-    <ownedLiteral xmi:id="_PieAaQYIEea37IpNp9toNQ" name="rad"/>
-    <ownedLiteral xmi:id="_PieAagYIEea37IpNp9toNQ" name="s"/>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Enumeration" xmi:id="_CJbegAYPEea37IpNp9toNQ" name="FlowDirection">
-    <ownedLiteral xmi:id="_ELmKkAYPEea37IpNp9toNQ" name="in"/>
-    <ownedLiteral xmi:id="_E6PZQAYPEea37IpNp9toNQ" name="out"/>
-    <ownedLiteral xmi:id="_FwtuQAYPEea37IpNp9toNQ" name="inout"/>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Association" xmi:id="_jb8poCihEeaEPIADLpYHKQ" memberEnd="_jb-e0CihEeaEPIADLpYHKQ _jb-e0SihEeaEPIADLpYHKQ">
-    <eAnnotations xmi:id="_jb93wCihEeaEPIADLpYHKQ" source="org.eclipse.papyrus">
-      <details xmi:id="_jb93wSihEeaEPIADLpYHKQ" key="nature" value="UML_Nature"/>
-    </eAnnotations>
-    <ownedEnd xmi:id="_jb-e0SihEeaEPIADLpYHKQ" name="fmu" type="_6Z7fcK0REeSXqKqlHzx1gA" association="_jb8poCihEeaEPIADLpYHKQ"/>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Association" xmi:id="_reBCoCihEeaEPIADLpYHKQ" memberEnd="_reC30CihEeaEPIADLpYHKQ _reC30SihEeaEPIADLpYHKQ">
-    <eAnnotations xmi:id="_reCQwCihEeaEPIADLpYHKQ" source="org.eclipse.papyrus">
-      <details xmi:id="_reCQwSihEeaEPIADLpYHKQ" key="nature" value="UML_Nature"/>
-    </eAnnotations>
-    <ownedEnd xmi:id="_reC30SihEeaEPIADLpYHKQ" name="scalarvariable" type="_NRvP8OytEeSEBKJWDCrAIQ" association="_reBCoCihEeaEPIADLpYHKQ"/>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Association" xmi:id="_fuyl8CiiEeaEPIADLpYHKQ" memberEnd="_fuzNAiiiEeaEPIADLpYHKQ _fuzNAyiiEeaEPIADLpYHKQ">
-    <eAnnotations xmi:id="_fuzNACiiEeaEPIADLpYHKQ" source="org.eclipse.papyrus">
-      <details xmi:id="_fuzNASiiEeaEPIADLpYHKQ" key="nature" value="UML_Nature"/>
-    </eAnnotations>
-    <ownedEnd xmi:id="_fuzNAyiiEeaEPIADLpYHKQ" name="fmu" type="_6Z7fcK0REeSXqKqlHzx1gA" association="_fuyl8CiiEeaEPIADLpYHKQ"/>
-  </packagedElement>
-  <profileApplication xmi:id="_AhWz4K0WEeSXqKqlHzx1gA">
-    <eAnnotations xmi:id="_Dg_gwJHDEeWBwegMGR0s3g" source="PapyrusVersion">
-      <details xmi:id="_Dg_gwZHDEeWBwegMGR0s3g" key="Version" value="0.1.1"/>
-      <details xmi:id="_Dg_gwpHDEeWBwegMGR0s3g" key="Comment" value=""/>
-      <details xmi:id="_Dg_gw5HDEeWBwegMGR0s3g" key="Copyright" value=""/>
-      <details xmi:id="_Dg_gxJHDEeWBwegMGR0s3g" key="Date" value="2015-01-21"/>
-      <details xmi:id="_Dg_gxZHDEeWBwegMGR0s3g" key="Author" value=""/>
-    </eAnnotations>
-    <eAnnotations xmi:id="_Ahv1cK0WEeSXqKqlHzx1gA" source="http://www.eclipse.org/uml2/2.0.0/UML">
-      <references xmi:type="ecore:EPackage" href="../../org.eclipse.papyrus.uml.alf.libraries/resources/action-language-profile/ActionLanguage-Profile.profile.uml#_Kv8EIKFXEeS_KNX0nfvIVQ"/>
-    </eAnnotations>
-    <appliedProfile href="../../org.eclipse.papyrus.uml.alf.libraries/resources/action-language-profile/ActionLanguage-Profile.profile.uml#ActionLanguage"/>
-  </profileApplication>
-  <profileApplication xmi:id="_kEtdUBwUEeWFRLyBnqa0ow">
-    <eAnnotations xmi:id="_kExuwBwUEeWFRLyBnqa0ow" source="http://www.eclipse.org/uml2/2.0.0/UML">
-      <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA"/>
-    </eAnnotations>
-    <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
-  </profileApplication>
-</uml:Profile>
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/C2/resources/model/plugin/org.eclipse.papyrus.moka.fuml.standardlibrary/resources/fUML_Library.uml b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/C2/resources/model/plugin/org.eclipse.papyrus.moka.fuml.standardlibrary/resources/fUML_Library.uml
deleted file mode 100644
index 0806234..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/C2/resources/model/plugin/org.eclipse.papyrus.moka.fuml.standardlibrary/resources/fUML_Library.uml
+++ /dev/null
@@ -1,914 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<uml:Model xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_0" name="FoundationalModelLibrary">
-  <packagedElement xmi:type="uml:Package" xmi:id="PrimitiveBehaviors" name="PrimitiveBehaviors">
-    <packageImport xmi:id="PrimitiveBehaviors-_packageImport.0">
-      <importedPackage xmi:type="uml:Model" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#_0"/>
-    </packageImport>
-    <packagedElement xmi:type="uml:Package" xmi:id="PrimitiveBehaviors-IntegerFunctions" name="IntegerFunctions">
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-ToInteger" name="ToInteger" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-ToInteger-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-ToInteger-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-IntegerFunctions-ToInteger-result-_lowerValue"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-lt" name="&lt;" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-lt-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-lt-y" name="y">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-lt-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-plus" name="+" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-plus-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-plus-y" name="y">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-plus-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-minus" name="-" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-minus-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-minus-y" name="y">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-minus-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-times" name="*" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-times-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-times-y" name="y">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-times-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-Div" name="Div" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Div-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Div-y" name="y">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Div-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-IntegerFunctions-Div-result-_lowerValue"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-Neg" name="Neg" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Neg-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Neg-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-Mod" name="Mod" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Mod-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Mod-y" name="y">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Mod-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-Max" name="Max" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Max-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Max-y" name="y">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Max-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-Min" name="Min" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Min-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Min-y" name="y">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Min-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-Abs" name="Abs" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Abs-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Abs-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-gt" name=">" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-gt-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-gt-y" name="y">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-gt-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-le" name="&lt;=" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-le-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-le-y" name="y">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-le-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-ge" name=">=" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-ge-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-ge-y" name="y">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-ge-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-ToString" name="ToString" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-ToString-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-ToString-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-ToUnlimitedNatural" name="ToUnlimitedNatural" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-ToUnlimitedNatural-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-ToUnlimitedNatural-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-IntegerFunctions-ToUnlimitedNatural-result-_lowerValue"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-divide" name="/" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="rimitiveBehaviors-IntegerFunctions-divide-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="rimitiveBehaviors-IntegerFunctions-divide-y" name="y">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="rimitiveBehaviors-IntegerFunctions-divide-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-IntegerFunctions-divide-result-_lowerValue"/>
-        </ownedParameter>
-      </packagedElement>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Package" xmi:id="PrimitiveBehaviors-RealFunctions" name="RealFunctions">
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-ToInteger" name="ToInteger" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-ToInteger-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-ToInteger-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-lt" name="&lt;" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-lt-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-lt-y" name="y">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-lt-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-plus" name="+" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-plus-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-plus-y" name="y">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-plus-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-minus" name="-" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-minus-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-minus-y" name="y">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-minus-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-times" name="*" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-times-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-times-y" name="y">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-times-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-divide" name="/" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-divide-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-divide-y" name="y">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-divide-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-RealFunctions-divide-result-_lowerValue"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-Neg" name="Neg" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Neg-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Neg-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-Max" name="Max" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Max-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Max-y" name="y">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Max-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-Min" name="Min" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Min-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Min-y" name="y">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Min-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-Abs" name="Abs" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Abs-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Abs-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-gt" name=">" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-gt-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-gt-y" name="y">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-gt-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-le" name="&lt;=" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-le-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-le-y" name="y">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-le-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-ge" name=">=" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-ge-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-ge-y" name="y">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-ge-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-ToString" name="ToString" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-ToString-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-ToString-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-Floor" name="Floor" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Floor-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="_PrimitiveBehaviors-RealFunctions-Floor-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-Floor-Round" name="Round" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Round-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Round-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-Inv" name="Inv" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Inv-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Inv-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-ToReal" name="ToReal" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-ToReal-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-ToReal-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-RealFunctions-ToReal-result-_lowerValue"/>
-        </ownedParameter>
-      </packagedElement>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Package" xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions" name="UnlimitedNaturalFunctions">
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ToUnlimitedNatural" name="ToUnlimitedNatural" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ToUnlimitedNatural-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ToUnlimitedNatural-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ToUnlimitedNatural-result-_lowerValue"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-lt" name="&lt;" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-lt-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-lt-y" name="y">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-lt-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-Max" name="Max" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-Max-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-Max-y" name="y">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-Max-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-Min" name="Min" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-Min-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-Min-y" name="y">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-Min-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-gt" name=">" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-gt-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-gt-y" name="y">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-gt-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-le" name="&lt;=" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-le-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-le-y" name="y">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-le-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ge" name=">=" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ge-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ge-y" name="y">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ge-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ToString" name="ToString" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ToString-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ToString-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ToInteger" name="ToInteger" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ToInteger-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ToInteger-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ToInteger-result-_lowerValue"/>
-        </ownedParameter>
-      </packagedElement>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Package" xmi:id="PrimitiveBehaviors-BooleanFunctions" name="BooleanFunctions">
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-BooleanFunctions-ToBoolean" name="ToBoolean" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-ToBoolean-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-ToBoolean-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-BooleanFunctions-ToBoolean-result-_lowerValue"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-BooleanFunctions-ToString" name="ToString" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-ToString-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-ToString-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-BooleanFunctions-Or" name="Or" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-Or-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-Or-y" name="y">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-Or-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-BooleanFunctions-Xor" name="Xor" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-Xor-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-Xor-y" name="y">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-Xor-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-BooleanFunctions-And" name="And" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-And-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-And-y" name="y">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-And-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-BooleanFunctions-Implies" name="Implies" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-Implies-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-Implies-y" name="y">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-Implies-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-BooleanFunctions-Not" name="Not" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-Not-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-Not-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </packagedElement>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Package" xmi:id="PrimitiveBehaviors-StringFunctions" name="StringFunctions">
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-StringFunctions-Size" name="Size" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-StringFunctions-Size-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-StringFunctions-Size-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-StringFunctions-Concat" name="Concat" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-StringFunctions-Concat-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-StringFunctions-Concat-y" name="y">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-StringFunctions-Concat-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-StringFunctions-Substring" name="Substring" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-StringFunctions-Substring-x" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-StringFunctions-Substring-lower" name="lower">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-StringFunctions-Substring-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-StringFunctions-Substring-result-_lowerValue"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-StringFunctions-Substring-upper" name="upper">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-      </packagedElement>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Package" xmi:id="PrimitiveBehaviors-ListFunctions" name="ListFunctions">
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-ListFunctions-ListSize" name="ListSize" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-ListFunctions-ListSize-list" name="list">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-ListFunctions-ListSize-list-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="PrimitiveBehaviors-ListFunctions-ListSize-list-_upperValue" value="*"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-ListFunctions-ListSize-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-ListFunctions-ListGet" name="ListGet" isAbstract="true" isReentrant="false">
-        <ownedParameter xmi:id="PrimitiveBehaviors-ListFunctions-ListGet-list" name="list">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-ListFunctions-ListGet-list-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="PrimitiveBehaviors-ListFunctions-ListGet-list-_upperValue" value="*"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-ListFunctions-ListGet-result" name="result" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-ListFunctions-ListGet-result-_lowerValue"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-ListFunctions-ListGet-index" name="index">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-      </packagedElement>
-      <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-ListFunctions-ListConcat" name="ListConcat" isAbstract="true">
-        <ownedParameter xmi:id="PrimitiveBehaviors-ListFunctions-ListConcat-list1" name="list1">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-ListFunctions-ListConcat-list1-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="PrimitiveBehaviors-ListFunctions-ListConcat-list1-_upperValue" value="*"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-ListFunctions-ListConcat-list2" name="list2">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-ListFunctions-ListConcat-list2-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="PrimitiveBehaviors-ListFunctions-ListConcat-list2-_upperValue" value="*"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="PrimitiveBehaviors-ListFunctions-ListConcat-result" name="result" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-ListFunctions-ListConcat-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="PrimitiveBehaviors-ListFunctions-ListConcat-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </packagedElement>
-    </packagedElement>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Package" xmi:id="BasicInputOutput" name="BasicInputOutput">
-    <packageImport xmi:id="BasicInputOutput-_packageImport.0" importedPackage="Common"/>
-    <packagedElement xmi:type="uml:Class" xmi:id="BasicInputOutput-Channel" name="Channel" isAbstract="true">
-      <ownedOperation xmi:id="BasicInputOutput-Channel-getName" name="getName" isAbstract="true">
-        <ownedParameter xmi:id="BasicInputOutput-Channel-getName-ReturnResult" name="ReturnResult" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="BasicInputOutput-Channel-open" name="open" isAbstract="true">
-        <ownedParameter xmi:id="BasicInputOutput-Channel-open-errorStatus" name="errorStatus" type="Common-Status" direction="out">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-Channel-open-errorStatus-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="BasicInputOutput-Channel-close" name="close" isAbstract="true">
-        <ownedParameter xmi:id="BasicInputOutput-Channel-close-errorStatus" name="errorStatus" type="Common-Status" direction="out">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-Channel-close-errorStatus-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="BasicInputOutput-Channel-isOpen" name="isOpen" isAbstract="true">
-        <ownedParameter xmi:id="BasicInputOutput-Channel-isOpen-ReturnResult" name="ReturnResult" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="BasicInputOutput-Channel-getStatus" name="getStatus" isAbstract="true">
-        <ownedParameter xmi:id="BasicInputOutput-Channel-getStatus-ReturnResult" name="ReturnResult" type="Common-Status" direction="return"/>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="BasicInputOutput-InputChannel" name="InputChannel" isAbstract="true">
-      <generalization xmi:id="BasicInputOutput-InputChannel-_generalization.0" general="BasicInputOutput-Channel"/>
-      <ownedOperation xmi:id="BasicInputOutput-InputChannel-hasMore" name="hasMore" isAbstract="true">
-        <ownedParameter xmi:id="BasicInputOutput-InputChannel-hasMore-ReturnResult" name="ReturnResult" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="BasicInputOutput-InputChannel-read" name="read" isAbstract="true">
-        <ownedParameter xmi:id="BasicInputOutput-InputChannel-read-value" name="value" direction="out">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-InputChannel-read-value-_lowerValue"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="BasicInputOutput-InputChannel-read-errorStatus" name="errorStatus" type="Common-Status" direction="out">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-InputChannel-read-errorStatus-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="BasicInputOutput-InputChannel-peek" name="peek" isAbstract="true">
-        <ownedParameter xmi:id="BasicInputOutput-InputChannel-peek-value" name="value" direction="out">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-InputChannel-peek-value-_lowerValue"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="BasicInputOutput-InputChannel-peek-errorStatus" name="errorStatus" type="Common-Status" direction="out">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-InputChannel-peek-errorStatus-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="BasicInputOutput-OutputChannel" name="OutputChannel" isAbstract="true">
-      <generalization xmi:id="BasicInputOutput-OutputChannel-_generalization.0" general="BasicInputOutput-Channel"/>
-      <ownedOperation xmi:id="BasicInputOutput-OutputChannel-write" name="write" isAbstract="true">
-        <ownedParameter xmi:id="BasicInputOutput-OutputChannel-write-value" name="value"/>
-        <ownedParameter xmi:id="BasicInputOutput-OutputChannel-write-errorStatus" name="errorStatus" type="Common-Status" direction="out">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-OutputChannel-write-errorStatus-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="BasicInputOutput-OutputChannel-isFull" name="isFull" isAbstract="true">
-        <ownedParameter xmi:id="BasicInputOutput-OutputChannel-isFull-ReturnResult" name="ReturnResult" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="BasicInputOutput-TextInputChannel" name="TextInputChannel" isAbstract="true">
-      <generalization xmi:id="BasicInputOutput-TextInputChannel-_generalization.0" general="BasicInputOutput-InputChannel"/>
-      <ownedOperation xmi:id="BasicInputOutput-TextInputChannel-readCharacter" name="readCharacter">
-        <ownedParameter xmi:id="BasicInputOutput-TextInputChannel-readCharacter-ReturnResult" name="ReturnResult" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextInputChannel-readCharacter-ReturnResult-_lowerValue"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="BasicInputOutput-TextInputChannel-readCharacter-errorStatus" name="errorStatus" type="Common-Status" direction="out">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextInputChannel-readCharacter-errorStatus-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="BasicInputOutput-TextInputChannel-peekCharacter" name="peekCharacter">
-        <ownedParameter xmi:id="BasicInputOutput-TextInputChannel-peekCharacter-OwnedParameter" name="OwnedParameter" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextInputChannel-peekCharacter-OwnedParameter-_lowerValue"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="BasicInputOutput-TextInputChannel-peekCharacter-errorStatus" name="errorStatus" type="Common-Status" direction="out">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextInputChannel-peekCharacter-errorStatus-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="BasicInputOutput-TextInputChannel-readLine" name="readLine">
-        <ownedParameter xmi:id="BasicInputOutput-TextInputChannel-readLine-ReturnResult" name="ReturnResult" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="BasicInputOutput-TextInputChannel-readLine-errorStatus" name="errorStatus" type="Common-Status" direction="out">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextInputChannel-readLine-errorStatus-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="BasicInputOutput-TextInputChannel-readInteger" name="readInteger">
-        <ownedParameter xmi:id="BasicInputOutput-TextInputChannel-readInteger-ReturnResult" name="ReturnResult" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextInputChannel-readInteger-ReturnResult-_lowerValue"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="BasicInputOutput-TextInputChannel-readInteger-errorStatus" name="errorStatus" type="Common-Status" direction="out">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextInputChannel-readInteger-errorStatus-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="BasicInputOutput-TextInputChannel-readBoolean" name="readBoolean">
-        <ownedParameter xmi:id="BasicInputOutput-TextInputChannel-readBoolean-ReturnResult" name="ReturnResult" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextInputChannel-readBoolean-ReturnResult-_lowerValue"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="BasicInputOutput-TextInputChannel-readBoolean-errorStatus" name="errorStatus" type="Common-Status" direction="out">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextInputChannel-readBoolean-errorStatus-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="BasicInputOutput-TextInputChannel-readUnlimitedNatural" name="readUnlimitedNatural">
-        <ownedParameter xmi:id="BasicInputOutput-TextInputChannel-readUnlimitedNatural-ReturnResult" name="ReturnResult" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextInputChannel-readUnlimitedNatural-ReturnResult-_lowerValue"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="BasicInputOutput-TextInputChannel-readUnlimitedNatural-errorStatus" name="errorStatus" type="Common-Status" direction="out">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextInputChannel-readUnlimitedNatural-errorStatus-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="BasicInputOutput-TextOutputChannel" name="TextOutputChannel" isAbstract="true">
-      <generalization xmi:id="BasicInputOutput-TextOutputChannel-_generalization.0" general="BasicInputOutput-OutputChannel"/>
-      <ownedOperation xmi:id="BasicInputOutput-TextOutputChannel-writeString" name="writeString">
-        <ownedParameter xmi:id="BasicInputOutput-TextOutputChannel-writeString-value" name="value">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="BasicInputOutput-TextOutputChannel-writeString-errorStatus" name="errorStatus" type="Common-Status" direction="out">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextOutputChannel-writeString-errorStatus-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="BasicInputOutput-TextOutputChannel-writeNewLine" name="writeNewLine" isAbstract="true">
-        <ownedParameter xmi:id="BasicInputOutput-TextOutputChannel-writeNewLine-errorStatus" name="errorStatus" type="Common-Status" direction="out">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextOutputChannel-writeNewLine-errorStatus-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="BasicInputOutput-TextOutputChannel-writeLine" name="writeLine">
-        <ownedParameter xmi:id="BasicInputOutput-TextOutputChannel-writeLine-value" name="value">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="BasicInputOutput-TextOutputChannel-writeLine-errorStatus" name="errorStatus" type="Common-Status" direction="out">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextOutputChannel-writeLine-errorStatus-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="BasicInputOutput-TextOutputChannel-writeInteger" name="writeInteger">
-        <ownedParameter xmi:id="BasicInputOutput-TextOutputChannel-writeInteger-value" name="value">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="BasicInputOutput-TextOutputChannel-writeInteger-errorStatus" name="errorStatus" type="Common-Status" direction="out">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextOutputChannel-writeInteger-errorStatus-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="BasicInputOutput-TextOutputChannel-writeBoolean" name="writeBoolean">
-        <ownedParameter xmi:id="BasicInputOutput-TextOutputChannel-writeBoolean-value" name="value">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="BasicInputOutput-TextOutputChannel-writeBoolean-errorStatus" name="errorStatus" type="Common-Status" direction="out">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextOutputChannel-writeBoolean-errorStatus-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="BasicInputOutput-TextOutputChannel-writeUnlimitedNatural" name="writeUnlimitedNatural">
-        <ownedParameter xmi:id="BasicInputOutput-TextOutputChannel-writeUnlimitedNatural-value" name="value">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="BasicInputOutput-TextOutputChannel-writeUnlimitedNatural-errorStatus" name="errorStatus" type="Common-Status" direction="out">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextOutputChannel-writeUnlimitedNatural-errorStatus-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="BasicInputOutput-StandardInputChannel" name="StandardInputChannel" isAbstract="true">
-      <generalization xmi:id="BasicInputOutput-StandardInputChannel-_generalization.0" general="BasicInputOutput-TextInputChannel"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="BasicInputOutput-StandardOutputChannel" name="StandardOutputChannel" isAbstract="true">
-      <generalization xmi:id="BasicInputOutput-StandardOutputChannel-_generalization.0" general="BasicInputOutput-TextOutputChannel"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Activity" xmi:id="BasicInputOutput-WriteLine" name="WriteLine" isReentrant="false" node="BasicInputOutput-WriteLine-StandardOutputChannel BasicInputOutput-WriteLine-writeLine BasicInputOutput-WriteLine-value.1 BasicInputOutput-WriteLine-errorStatus.1">
-      <ownedParameter xmi:id="BasicInputOutput-WriteLine-value" name="value">
-        <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-      </ownedParameter>
-      <ownedParameter xmi:id="BasicInputOutput-WriteLine-errorStatus" name="errorStatus" direction="out">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-WriteLine-errorStatus-_lowerValue"/>
-      </ownedParameter>
-      <edge xmi:type="uml:ObjectFlow" xmi:id="BasicInputOutput-WriteLine-_edge.0" target="BasicInputOutput-WriteLine-writeLine-_target" source="BasicInputOutput-WriteLine-StandardOutputChannel-_result">
-        <guard xmi:type="uml:OpaqueExpression" xmi:id="BasicInputOutput-WriteLine-_edge.0-_guard">
-          <body></body>
-        </guard>
-        <weight xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-WriteLine-_edge.0-_weight" value="1"/>
-      </edge>
-      <edge xmi:type="uml:ObjectFlow" xmi:id="BasicInputOutput-WriteLine-_edge.1" target="BasicInputOutput-WriteLine-writeLine-value" source="BasicInputOutput-WriteLine-value.1">
-        <guard xmi:type="uml:OpaqueExpression" xmi:id="BasicInputOutput-WriteLine-_edge.1-_guard">
-          <body></body>
-        </guard>
-        <weight xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-WriteLine-_edge.1-_weight" value="1"/>
-      </edge>
-      <edge xmi:type="uml:ObjectFlow" xmi:id="BasicInputOutput-WriteLine-_edge.2" target="BasicInputOutput-WriteLine-errorStatus.1" source="BasicInputOutput-WriteLine-writeLine-errorStatus">
-        <guard xmi:type="uml:OpaqueExpression" xmi:id="BasicInputOutput-WriteLine-_edge.2-_guard">
-          <body></body>
-        </guard>
-        <weight xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-WriteLine-_edge.2-_weight" value="1"/>
-      </edge>
-      <node xmi:type="uml:ReadExtentAction" xmi:id="BasicInputOutput-WriteLine-StandardOutputChannel" name="StandardOutputChannel" classifier="BasicInputOutput-StandardOutputChannel">
-        <result xmi:id="BasicInputOutput-WriteLine-StandardOutputChannel-_result" outgoing="BasicInputOutput-WriteLine-_edge.0" type="BasicInputOutput-StandardOutputChannel">
-          <upperBound xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-WriteLine-StandardOutputChannel-_result-_upperBound" value="1"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-WriteLine-StandardOutputChannel-_result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="BasicInputOutput-WriteLine-StandardOutputChannel-_result-_upperValue" value="*"/>
-        </result>
-      </node>
-      <node xmi:type="uml:CallOperationAction" xmi:id="BasicInputOutput-WriteLine-writeLine" name="writeLine" operation="BasicInputOutput-TextOutputChannel-writeLine">
-        <argument xmi:id="BasicInputOutput-WriteLine-writeLine-value" name="value" incoming="BasicInputOutput-WriteLine-_edge.1">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-          <upperBound xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-WriteLine-writeLine-value-_upperBound" value="1"/>
-        </argument>
-        <result xmi:id="BasicInputOutput-WriteLine-writeLine-errorStatus" name="errorStatus" outgoing="BasicInputOutput-WriteLine-_edge.2" type="Common-Status">
-          <upperBound xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-WriteLine-writeLine-errorStatus-_upperBound" value="1"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-WriteLine-writeLine-errorStatus-_lowerValue"/>
-        </result>
-        <target xmi:id="BasicInputOutput-WriteLine-writeLine-_target" incoming="BasicInputOutput-WriteLine-_edge.0" type="BasicInputOutput-TextOutputChannel">
-          <upperBound xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-WriteLine-writeLine-_target-_upperBound" value="1"/>
-        </target>
-      </node>
-      <node xmi:type="uml:ActivityParameterNode" xmi:id="BasicInputOutput-WriteLine-value.1" name="value" outgoing="BasicInputOutput-WriteLine-_edge.1" parameter="BasicInputOutput-WriteLine-value">
-        <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-        <upperBound xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-WriteLine-value.1-_upperBound" value="1"/>
-      </node>
-      <node xmi:type="uml:ActivityParameterNode" xmi:id="BasicInputOutput-WriteLine-errorStatus.1" name="errorStatus" incoming="BasicInputOutput-WriteLine-_edge.2" type="Common-Status" parameter="BasicInputOutput-WriteLine-errorStatus">
-        <upperBound xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-WriteLine-errorStatus.1-_upperBound" value="1"/>
-      </node>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="BasicInputOutput-ActiveChannel" name="ActiveChannel" isAbstract="true" isActive="true">
-      <generalization xmi:id="BasicInputOutput-ActiveChannel-_generalization.0" general="BasicInputOutput-Channel"/>
-      <ownedOperation xmi:id="BasicInputOutput-ActiveChannel-register" name="register">
-        <ownedParameter xmi:id="BasicInputOutput-ActiveChannel-register-listener" name="listener" type="Common-Listener"/>
-      </ownedOperation>
-      <ownedOperation xmi:id="BasicInputOutput-ActiveChannel-unregister" name="unregister">
-        <ownedParameter xmi:id="BasicInputOutput-ActiveChannel-unregister-listener" name="listener" type="Common-Listener"/>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Activity" xmi:id="BasicInputOutput-ReadLine" name="ReadLine" isReentrant="false" node="BasicInputOutput-ReadLine-StandardInputChannel BasicInputOutput-ReadLine-readLine BasicInputOutput-ReadLine-errorStatus.1 BasicInputOutput-ReadLine-result.1">
-      <ownedParameter xmi:id="BasicInputOutput-ReadLine-errorStatus" name="errorStatus" type="Common-Status" direction="out">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-ReadLine-errorStatus-_lowerValue"/>
-      </ownedParameter>
-      <ownedParameter xmi:id="BasicInputOutput-ReadLine-result" name="result" direction="return">
-        <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-      </ownedParameter>
-      <edge xmi:type="uml:ObjectFlow" xmi:id="BasicInputOutput-ReadLine-_edge.0" target="BasicInputOutput-ReadLine-readLine-_target" source="BasicInputOutput-ReadLine-StandardInputChannel-_result">
-        <guard xmi:type="uml:OpaqueExpression" xmi:id="BasicInputOutput-ReadLine-_edge.0-_guard">
-          <body></body>
-        </guard>
-        <weight xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-ReadLine-_edge.0-_weight" value="1"/>
-      </edge>
-      <edge xmi:type="uml:ObjectFlow" xmi:id="BasicInputOutput-ReadLine-_edge.1" target="BasicInputOutput-ReadLine-errorStatus.1" source="BasicInputOutput-ReadLine-readLine-errorStatus">
-        <guard xmi:type="uml:OpaqueExpression" xmi:id="BasicInputOutput-ReadLine-_edge.1-_guard">
-          <body></body>
-        </guard>
-        <weight xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-ReadLine-_edge.1-_weight" value="1"/>
-      </edge>
-      <edge xmi:type="uml:ObjectFlow" xmi:id="BasicInputOutput-ReadLine-_edge.2" target="BasicInputOutput-ReadLine-result.1" source="BasicInputOutput-ReadLine-readLine-_result.0">
-        <guard xmi:type="uml:OpaqueExpression" xmi:id="BasicInputOutput-ReadLine-_edge.2-_guard">
-          <body></body>
-        </guard>
-        <weight xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-ReadLine-_edge.2-_weight" value="1"/>
-      </edge>
-      <node xmi:type="uml:ReadExtentAction" xmi:id="BasicInputOutput-ReadLine-StandardInputChannel" name="StandardInputChannel" classifier="BasicInputOutput-StandardInputChannel">
-        <result xmi:id="BasicInputOutput-ReadLine-StandardInputChannel-_result" outgoing="BasicInputOutput-ReadLine-_edge.0" type="BasicInputOutput-StandardInputChannel">
-          <upperBound xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-ReadLine-StandardInputChannel-_result-_upperBound" value="1"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-ReadLine-StandardInputChannel-_result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="BasicInputOutput-ReadLine-StandardInputChannel-_result-_upperValue" value="*"/>
-        </result>
-      </node>
-      <node xmi:type="uml:CallOperationAction" xmi:id="BasicInputOutput-ReadLine-readLine" name="readLine" operation="BasicInputOutput-TextInputChannel-readLine">
-        <result xmi:id="BasicInputOutput-ReadLine-readLine-_result.0" outgoing="BasicInputOutput-ReadLine-_edge.2">
-          <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-          <upperBound xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-ReadLine-readLine-_result.0-_upperBound" value="1"/>
-        </result>
-        <result xmi:id="BasicInputOutput-ReadLine-readLine-errorStatus" name="errorStatus" outgoing="BasicInputOutput-ReadLine-_edge.1" type="Common-Status">
-          <upperBound xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-ReadLine-readLine-errorStatus-_upperBound" value="1"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-ReadLine-readLine-errorStatus-_lowerValue"/>
-        </result>
-        <target xmi:id="BasicInputOutput-ReadLine-readLine-_target" incoming="BasicInputOutput-ReadLine-_edge.0" type="BasicInputOutput-TextInputChannel">
-          <upperBound xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-ReadLine-readLine-_target-_upperBound" value="1"/>
-        </target>
-      </node>
-      <node xmi:type="uml:ActivityParameterNode" xmi:id="BasicInputOutput-ReadLine-errorStatus.1" name="errorStatus" incoming="BasicInputOutput-ReadLine-_edge.1" type="Common-Status" parameter="BasicInputOutput-ReadLine-errorStatus">
-        <upperBound xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-ReadLine-errorStatus.1-_upperBound" value="1"/>
-      </node>
-      <node xmi:type="uml:ActivityParameterNode" xmi:id="BasicInputOutput-ReadLine-result.1" name="result" incoming="BasicInputOutput-ReadLine-_edge.2" parameter="BasicInputOutput-ReadLine-result">
-        <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-        <upperBound xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-ReadLine-result.1-_upperBound" value="1"/>
-      </node>
-    </packagedElement>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Package" xmi:id="Common" name="Common">
-    <packagedElement xmi:type="uml:Signal" xmi:id="Common-Notification" name="Notification">
-      <ownedAttribute xmi:id="Common-Notification-content" name="content" visibility="public">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Common-Notification-content-_lowerValue"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Common-Listener" name="Listener" isAbstract="true" isActive="true">
-      <ownedReception xmi:id="Common-Listener-_ownedReception.0" name="Notification" signal="Common-Notification"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:DataType" xmi:id="Common-Status" name="Status">
-      <ownedAttribute xmi:id="Common-Status-context" name="context" visibility="public">
-        <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Common-Status-code" name="code">
-        <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Common-Status-description" name="description">
-        <type xmi:type="uml:PrimitiveType" href="../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-      </ownedAttribute>
-    </packagedElement>
-  </packagedElement>
-</uml:Model>
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/C2/resources/model/plugin/org.eclipse.papyrus.uml.alf.libraries/resources/action-language-profile/ActionLanguage-Profile.profile.uml b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/C2/resources/model/plugin/org.eclipse.papyrus.uml.alf.libraries/resources/action-language-profile/ActionLanguage-Profile.profile.uml
deleted file mode 100644
index c032c0f..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/C2/resources/model/plugin/org.eclipse.papyrus.uml.alf.libraries/resources/action-language-profile/ActionLanguage-Profile.profile.uml
+++ /dev/null
@@ -1,73 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<uml:Profile xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="ActionLanguage" name="ActionLanguage" URI="http://www.omg.org/spec/ALF/20120827/ActionLanguage-Profile" metamodelReference="ActionLanguage-packageImport">
-  <eAnnotations xmi:id="_sYse0IZLEeKyw49uR6nx3g" source="http://www.eclipse.org/uml2/2.0.0/UML">
-    <contents xmi:type="ecore:EPackage" xmi:id="_Kv8EIKFXEeS_KNX0nfvIVQ" name="ActionLanguage" nsURI="http://www.omg.org/spec/ALF/20120827/ActionLanguage-Profile" nsPrefix="ActionLanguage">
-      <eAnnotations xmi:id="_Kv95UqFXEeS_KNX0nfvIVQ" source="PapyrusVersion">
-        <details xmi:id="_Kv95U6FXEeS_KNX0nfvIVQ" key="Version" value="0.1.1"/>
-        <details xmi:id="_Kv95VKFXEeS_KNX0nfvIVQ" key="Comment" value=""/>
-        <details xmi:id="_Kv95VaFXEeS_KNX0nfvIVQ" key="Copyright" value=""/>
-        <details xmi:id="_Kv95VqFXEeS_KNX0nfvIVQ" key="Date" value="2015-01-21"/>
-        <details xmi:id="_Kv95V6FXEeS_KNX0nfvIVQ" key="Author" value=""/>
-      </eAnnotations>
-      <eClassifiers xmi:type="ecore:EClass" xmi:id="_Kv8EIaFXEeS_KNX0nfvIVQ" name="TextualRepresentation">
-        <eAnnotations xmi:id="_Kv8EIqFXEeS_KNX0nfvIVQ" source="http://www.eclipse.org/uml2/2.0.0/UML" references="ActionLanguage-TextualRepresentation"/>
-        <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_Kv8EI6FXEeS_KNX0nfvIVQ" name="base_Comment" ordered="false" lowerBound="1">
-          <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/5.0.0/UML#//Comment"/>
-        </eStructuralFeatures>
-        <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Kv8EJaFXEeS_KNX0nfvIVQ" name="language" ordered="false" lowerBound="1">
-          <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/5.0.0/Types#//String"/>
-        </eStructuralFeatures>
-      </eClassifiers>
-      <eClassifiers xmi:type="ecore:EClass" xmi:id="_Kv8EJ6FXEeS_KNX0nfvIVQ" name="Backup">
-        <eAnnotations xmi:id="_Kv8EKKFXEeS_KNX0nfvIVQ" source="http://www.eclipse.org/uml2/2.0.0/UML"/>
-        <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_Kv8EKaFXEeS_KNX0nfvIVQ" name="base_Comment" ordered="false" lowerBound="1">
-          <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/5.0.0/UML#//Comment"/>
-        </eStructuralFeatures>
-        <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Kv8EK6FXEeS_KNX0nfvIVQ" name="timestamp" ordered="false" lowerBound="1">
-          <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/5.0.0/Types#//String"/>
-        </eStructuralFeatures>
-        <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_Kv8ELaFXEeS_KNX0nfvIVQ" name="state" ordered="false" lowerBound="1" eType="_Kv8EL6FXEeS_KNX0nfvIVQ"/>
-      </eClassifiers>
-      <eClassifiers xmi:type="ecore:EEnum" xmi:id="_Kv8EL6FXEeS_KNX0nfvIVQ" name="BackupState">
-        <eAnnotations xmi:id="_Kv8EMKFXEeS_KNX0nfvIVQ" source="http://www.eclipse.org/uml2/2.0.0/UML"/>
-        <eLiterals xmi:id="_Kv8EMaFXEeS_KNX0nfvIVQ" name="SAVED"/>
-        <eLiterals xmi:id="_Kv8EMqFXEeS_KNX0nfvIVQ" name="MERGED" value="1"/>
-        <eLiterals xmi:id="_Kv8EM6FXEeS_KNX0nfvIVQ" name="NONE" value="2"/>
-      </eClassifiers>
-    </contents>
-    <contents xmi:type="ecore:EPackage" xmi:id="_sYse0YZLEeKyw49uR6nx3g" name="ActionLanguage" nsURI="http://www.omg.org/spec/ALF/20120827/ActionLanguage-Profile" nsPrefix="ActionLanguage">
-      <eAnnotations xmi:id="_sYse2YZLEeKyw49uR6nx3g" source="PapyrusVersion">
-        <details xmi:id="_sYse2oZLEeKyw49uR6nx3g" key="Version" value="0.1.0"/>
-        <details xmi:id="_sYse24ZLEeKyw49uR6nx3g" key="Comment" value=""/>
-        <details xmi:id="_sYse3IZLEeKyw49uR6nx3g" key="Copyright" value=""/>
-        <details xmi:id="_sYse3YZLEeKyw49uR6nx3g" key="Date" value="2013-03-06"/>
-        <details xmi:id="_sYse3oZLEeKyw49uR6nx3g" key="Author" value=""/>
-      </eAnnotations>
-      <eClassifiers xmi:type="ecore:EClass" xmi:id="_sYse0oZLEeKyw49uR6nx3g" name="TextualRepresentation">
-        <eAnnotations xmi:id="_sYse04ZLEeKyw49uR6nx3g" source="http://www.eclipse.org/uml2/2.0.0/UML" references="ActionLanguage-TextualRepresentation"/>
-        <eStructuralFeatures xmi:type="ecore:EReference" xmi:id="_sYse1IZLEeKyw49uR6nx3g" name="base_Comment" ordered="false" lowerBound="1">
-          <eType xmi:type="ecore:EClass" href="http://www.eclipse.org/uml2/5.0.0/UML#//Comment"/>
-        </eStructuralFeatures>
-        <eStructuralFeatures xmi:type="ecore:EAttribute" xmi:id="_sYse1oZLEeKyw49uR6nx3g" name="language" ordered="false" lowerBound="1">
-          <eType xmi:type="ecore:EDataType" href="http://www.eclipse.org/uml2/5.0.0/Types#//String"/>
-        </eStructuralFeatures>
-      </eClassifiers>
-    </contents>
-  </eAnnotations>
-  <packageImport xmi:id="ActionLanguage-packageImport">
-    <importedPackage xmi:type="uml:Model" href="../../../org.eclipse.uml2.uml.resources/metamodels/UML.metamodel.uml#_0"/>
-  </packageImport>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="ActionLanguage-TextualRepresentation" name="TextualRepresentation">
-    <ownedAttribute xmi:id="ActionLanguage-TextualRepresentation-base_Comment" name="base_Comment" association="ActionLanguage-packagedElement-2">
-      <type xmi:type="uml:Class" href="../../../org.eclipse.uml2.uml.resources/metamodels/UML.metamodel.uml#Comment"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="ActionLanguage-TextualRepresentation-language" name="language" visibility="public">
-      <type xmi:type="uml:PrimitiveType" href="../../../org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-    </ownedAttribute>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="ActionLanguage-packagedElement-2" memberEnd="ActionLanguage-packagedElement-2-ownedEnd ActionLanguage-TextualRepresentation-base_Comment" navigableOwnedEnd="ActionLanguage-packagedElement-2-ownedEnd">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="ActionLanguage-packagedElement-2-ownedEnd" name="extension_TextualRepresentation" type="ActionLanguage-TextualRepresentation" aggregation="composite" association="ActionLanguage-packagedElement-2">
-      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActionLanguage-packagedElement-2-ownedEnd-lowerValue"/>
-    </ownedEnd>
-  </packagedElement>
-</uml:Profile>
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/C2/resources/model/plugin/org.eclipse.uml2.uml.resources/libraries/EcorePrimitiveTypes.library.uml b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/C2/resources/model/plugin/org.eclipse.uml2.uml.resources/libraries/EcorePrimitiveTypes.library.uml
deleted file mode 100644
index d6a83b0..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/C2/resources/model/plugin/org.eclipse.uml2.uml.resources/libraries/EcorePrimitiveTypes.library.uml
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:standard="http://www.eclipse.org/uml2/5.0.0/UML/Profile/Standard" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
-  <uml:Model xmi:id="_0" name="EcorePrimitiveTypes" URI="http://www.eclipse.org/uml2/4.2.0/EcorePrimitiveTypes">
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EBigDecimal" name="EBigDecimal"/>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EBigInteger" name="EBigInteger"/>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EBoolean" name="EBoolean"/>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EBooleanObject" name="EBooleanObject"/>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EByte" name="EByte"/>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EByteArray" name="EByteArray"/>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EByteObject" name="EByteObject"/>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EChar" name="EChar"/>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="ECharacterObject" name="ECharacterObject"/>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EDate" name="EDate"/>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EDiagnosticChain" name="EDiagnosticChain"/>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EDouble" name="EDouble"/>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EDoubleObject" name="EDoubleObject"/>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EEList" name="EEList">
-      <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="EEList-_ownedElement.0" parameter="EEList-_ownedElement.0-_ownedParameter.0">
-        <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="EEList-_ownedElement.0-_ownedParameter.0" parameteredElement="EEList-_ownedElement.0-_ownedParameter.0-_ownedParameteredElement">
-          <ownedParameteredElement xmi:type="uml:Class" xmi:id="EEList-_ownedElement.0-_ownedParameter.0-_ownedParameteredElement" name="E" templateParameter="EEList-_ownedElement.0-_ownedParameter.0"/>
-        </ownedParameter>
-      </ownedTemplateSignature>
-    </packagedElement>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EEnumerator" name="EEnumerator"/>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EFeatureMap" name="EFeatureMap"/>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EFeatureMapEntry" name="EFeatureMapEntry"/>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EFloat" name="EFloat"/>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EFloatObject" name="EFloatObject"/>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EInt" name="EInt"/>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EIntegerObject" name="EIntegerObject"/>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EJavaClass" name="EJavaClass">
-      <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="EJavaClass-_ownedElement.0" parameter="EJavaClass-_ownedElement.0-_ownedParameter.0">
-        <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="EJavaClass-_ownedElement.0-_ownedParameter.0" parameteredElement="EJavaClass-_ownedElement.0-_ownedParameter.0-_ownedParameteredElement">
-          <ownedParameteredElement xmi:type="uml:Class" xmi:id="EJavaClass-_ownedElement.0-_ownedParameter.0-_ownedParameteredElement" name="T" templateParameter="EJavaClass-_ownedElement.0-_ownedParameter.0"/>
-        </ownedParameter>
-      </ownedTemplateSignature>
-    </packagedElement>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EJavaObject" name="EJavaObject"/>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="ELong" name="ELong"/>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="ELongObject" name="ELongObject"/>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EMap" name="EMap">
-      <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="EMap-_ownedElement.0" parameter="EMap-_ownedElement.0-_ownedParameter.0 EMap-_ownedElement.0-_ownedParameter.1">
-        <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="EMap-_ownedElement.0-_ownedParameter.0" parameteredElement="EMap-_ownedElement.0-_ownedParameter.0-_ownedParameteredElement">
-          <ownedParameteredElement xmi:type="uml:Class" xmi:id="EMap-_ownedElement.0-_ownedParameter.0-_ownedParameteredElement" name="K" templateParameter="EMap-_ownedElement.0-_ownedParameter.0"/>
-        </ownedParameter>
-        <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="EMap-_ownedElement.0-_ownedParameter.1" parameteredElement="EMap-_ownedElement.0-_ownedParameter.1-_ownedParameteredElement">
-          <ownedParameteredElement xmi:type="uml:Class" xmi:id="EMap-_ownedElement.0-_ownedParameter.1-_ownedParameteredElement" name="V" templateParameter="EMap-_ownedElement.0-_ownedParameter.1"/>
-        </ownedParameter>
-      </ownedTemplateSignature>
-    </packagedElement>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EResource" name="EResource"/>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EResourceSet" name="EResourceSet"/>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EShort" name="EShort"/>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EShortObject" name="EShortObject"/>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EString" name="EString"/>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="ETreeIterator" name="ETreeIterator">
-      <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="ETreeIterator-_ownedElement.0" parameter="ETreeIterator-_ownedElement.0-_ownedParameter.0">
-        <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="ETreeIterator-_ownedElement.0-_ownedParameter.0" parameteredElement="ETreeIterator-_ownedElement.0-_ownedParameter.0-_ownedParameteredElement">
-          <ownedParameteredElement xmi:type="uml:Class" xmi:id="ETreeIterator-_ownedElement.0-_ownedParameter.0-_ownedParameteredElement" name="E" templateParameter="ETreeIterator-_ownedElement.0-_ownedParameter.0"/>
-        </ownedParameter>
-      </ownedTemplateSignature>
-    </packagedElement>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EInvocationTargetException" name="EInvocationTargetException"/>
-    <profileApplication xmi:id="_profileApplication.0">
-      <eAnnotations xmi:id="_profileApplication.0-_http2F2Fwww.eclipse.org2Fuml22F2.0.02FUML" source="http://www.eclipse.org/uml2/2.0.0/UML">
-        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/uml2/5.0.0/UML/Profile/Standard#/"/>
-      </eAnnotations>
-      <appliedProfile href="../profiles/Standard.profile.uml#_0"/>
-    </profileApplication>
-  </uml:Model>
-  <standard:ModelLibrary xmi:id="_jVC18MMDEeCj2YHTjQqCqw" base_Package="_0"/>
-</xmi:XMI>
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/C2/resources/model/plugin/org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/C2/resources/model/plugin/org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml
deleted file mode 100644
index ab02ec1..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/C2/resources/model/plugin/org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml
+++ /dev/null
@@ -1,43 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:standard="http://www.eclipse.org/uml2/5.0.0/UML/Profile/Standard" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
-  <uml:Model xmi:id="_0" name="PrimitiveTypes" URI="http://www.omg.org/spec/PrimitiveTypes/20131001">
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="Boolean" name="Boolean">
-      <ownedComment xmi:id="Boolean-_ownedComment.0" annotatedElement="Boolean">
-        <body>Boolean is used for logical expressions, consisting of the predefined values true and false.</body>
-      </ownedComment>
-    </packagedElement>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="Integer" name="Integer">
-      <ownedComment xmi:id="Integer-_ownedComment.0" annotatedElement="Integer">
-        <body>Integer is a primitive type representing integer values.</body>
-      </ownedComment>
-    </packagedElement>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="Real" name="Real">
-      <ownedComment xmi:id="Real-_ownedComment.0" annotatedElement="Real">
-        <body>Real is a primitive type representing the mathematical concept of real.</body>
-      </ownedComment>
-    </packagedElement>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="String" name="String">
-      <ownedComment xmi:id="String-_ownedComment.0" annotatedElement="String">
-        <body>String is a sequence of characters in some suitable character set used to display information about the model. Character sets may include non-Roman alphabets and characters.</body>
-      </ownedComment>
-    </packagedElement>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="UnlimitedNatural" name="UnlimitedNatural">
-      <ownedComment xmi:id="UnlimitedNatural-_ownedComment.0" annotatedElement="UnlimitedNatural">
-        <body>UnlimitedNatural is a primitive type representing unlimited natural values.</body>
-      </ownedComment>
-    </packagedElement>
-    <profileApplication xmi:id="_profileApplication.0">
-      <eAnnotations xmi:id="_profileApplication.0-_http2F2Fwww.eclipse.org2Fuml22F2.0.02FUML" source="http://www.eclipse.org/uml2/2.0.0/UML">
-        <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA"/>
-      </eAnnotations>
-      <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
-    </profileApplication>
-    <profileApplication xmi:id="_profileApplication.1">
-      <eAnnotations xmi:id="_profileApplication.1-_http2F2Fwww.eclipse.org2Fuml22F2.0.02FUML" source="http://www.eclipse.org/uml2/2.0.0/UML">
-        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/uml2/5.0.0/UML/Profile/Standard#/"/>
-      </eAnnotations>
-      <appliedProfile href="../profiles/Standard.profile.uml#_0"/>
-    </profileApplication>
-  </uml:Model>
-  <standard:ModelLibrary xmi:id="_LSAUcIx7EeOumeDJYV0ScA" base_Package="_0"/>
-</xmi:XMI>
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/C2/resources/model/plugin/org.eclipse.uml2.uml.resources/metamodels/Ecore.metamodel.uml b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/C2/resources/model/plugin/org.eclipse.uml2.uml.resources/metamodels/Ecore.metamodel.uml
deleted file mode 100644
index e26d7c2..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/C2/resources/model/plugin/org.eclipse.uml2.uml.resources/metamodels/Ecore.metamodel.uml
+++ /dev/null
@@ -1,928 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:standard="http://www.eclipse.org/uml2/5.0.0/UML/Profile/Standard" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
-  <uml:Model xmi:id="_0" name="Ecore" URI="http://www.eclipse.org/emf/2002/Ecore">
-    <packagedElement xmi:type="uml:Class" xmi:id="EAnnotation" name="EAnnotation">
-      <eAnnotations xmi:id="EAnnotation-_http2F2Fwww.eclipse.org2Femf2F20022FEcore" source="http://www.eclipse.org/emf/2002/Ecore">
-        <details xmi:id="EAnnotation-_http2F2Fwww.eclipse.org2Femf2F20022FEcore-_details.0" key="constraints" value="WellFormedSourceURI"/>
-      </eAnnotations>
-      <generalization xmi:id="EAnnotation-_generalization.0" general="EModelElement"/>
-      <ownedAttribute xmi:id="EAnnotation-source" name="source" visibility="public" type="EString" isOrdered="true">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EAnnotation-source-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EAnnotation-details" name="details" type="EStringToStringMapEntry" isOrdered="true" aggregation="composite" association="A_details_eAnnotation">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EAnnotation-details-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="EAnnotation-details-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EAnnotation-eModelElement" name="eModelElement" type="EModelElement" isOrdered="true" association="A_eAnnotations_eModelElement">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EAnnotation-eModelElement-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EAnnotation-contents" name="contents" type="EObject" isOrdered="true" aggregation="composite" association="A_contents_eAnnotation">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EAnnotation-contents-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="EAnnotation-contents-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EAnnotation-references" name="references" type="EObject" isOrdered="true" association="A_references_eAnnotation">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EAnnotation-references-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="EAnnotation-references-_upperValue" value="*"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="EAttribute" name="EAttribute">
-      <eAnnotations xmi:id="EAttribute-_http2F2Fwww.eclipse.org2Femf2F20022FEcore" source="http://www.eclipse.org/emf/2002/Ecore">
-        <details xmi:id="EAttribute-_http2F2Fwww.eclipse.org2Femf2F20022FEcore-_details.0" key="constraints" value="ConsistentTransient"/>
-      </eAnnotations>
-      <generalization xmi:id="EAttribute-_generalization.0" general="EStructuralFeature"/>
-      <ownedAttribute xmi:id="EAttribute-id" name="id" visibility="public" type="EBoolean" isOrdered="true">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EAttribute-id-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EAttribute-eAttributeType" name="eAttributeType" type="EDataType" isOrdered="true" isReadOnly="true" isDerived="true" association="A_eAttributeType_eAttribute"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="EClass" name="EClass">
-      <eAnnotations xmi:id="EClass-_http2F2Fwww.eclipse.org2Femf2F20022FEcore" source="http://www.eclipse.org/emf/2002/Ecore">
-        <details xmi:id="EClass-_http2F2Fwww.eclipse.org2Femf2F20022FEcore-_details.0" key="constraints" value="InterfaceIsAbstract AtMostOneID UniqueFeatureNames UniqueOperationSignatures NoCircularSuperTypes WellFormedMapEntryClass ConsistentSuperTypes"/>
-      </eAnnotations>
-      <generalization xmi:id="EClass-_generalization.0" general="EClassifier"/>
-      <ownedAttribute xmi:id="EClass-abstract" name="abstract" visibility="public" type="EBoolean" isOrdered="true">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EClass-abstract-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EClass-interface" name="interface" visibility="public" type="EBoolean" isOrdered="true">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EClass-interface-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EClass-eSuperTypes" name="eSuperTypes" type="EClass" isOrdered="true" association="A_eSuperTypes_eClass">
-        <eAnnotations xmi:id="EClass-eSuperTypes-_http2F2Fwww.eclipse.org2Femf2F20022FGenModel" source="http://www.eclipse.org/emf/2002/GenModel">
-          <details xmi:id="EClass-eSuperTypes-_http2F2Fwww.eclipse.org2Femf2F20022FGenModel-_details.0" key="suppressedUnsetVisibility" value="true"/>
-          <details xmi:id="EClass-eSuperTypes-_http2F2Fwww.eclipse.org2Femf2F20022FGenModel-_details.1" key="suppressedIsSetVisibility" value="true"/>
-        </eAnnotations>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EClass-eSuperTypes-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="EClass-eSuperTypes-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EClass-eOperations" name="eOperations" type="EOperation" isOrdered="true" aggregation="composite" association="A_eOperations_eContainingClass">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EClass-eOperations-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="EClass-eOperations-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EClass-eAllAttributes" name="eAllAttributes" type="EAttribute" isOrdered="true" isReadOnly="true" isDerived="true" association="A_eAllAttributes_eClass">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EClass-eAllAttributes-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="EClass-eAllAttributes-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EClass-eAllReferences" name="eAllReferences" type="EReference" isOrdered="true" isReadOnly="true" isDerived="true" association="A_eAllReferences_eClass">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EClass-eAllReferences-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="EClass-eAllReferences-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EClass-eReferences" name="eReferences" type="EReference" isOrdered="true" isReadOnly="true" isDerived="true" association="A_eReferences_eClass">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EClass-eReferences-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="EClass-eReferences-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EClass-eAttributes" name="eAttributes" type="EAttribute" isOrdered="true" isReadOnly="true" isDerived="true" association="A_eAttributes_eClass">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EClass-eAttributes-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="EClass-eAttributes-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EClass-eAllContainments" name="eAllContainments" type="EReference" isOrdered="true" isReadOnly="true" isDerived="true" association="A_eAllContainments_eClass">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EClass-eAllContainments-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="EClass-eAllContainments-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EClass-eAllOperations" name="eAllOperations" type="EOperation" isOrdered="true" isReadOnly="true" isDerived="true" association="A_eAllOperations_eClass">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EClass-eAllOperations-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="EClass-eAllOperations-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EClass-eAllStructuralFeatures" name="eAllStructuralFeatures" type="EStructuralFeature" isOrdered="true" isReadOnly="true" isDerived="true" association="A_eAllStructuralFeatures_eClass">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EClass-eAllStructuralFeatures-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="EClass-eAllStructuralFeatures-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EClass-eAllSuperTypes" name="eAllSuperTypes" type="EClass" isOrdered="true" isReadOnly="true" isDerived="true" association="A_eAllSuperTypes_eClass">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EClass-eAllSuperTypes-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="EClass-eAllSuperTypes-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EClass-eIDAttribute" name="eIDAttribute" type="EAttribute" isOrdered="true" isReadOnly="true" isDerived="true" association="A_eIDAttribute_eClass">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EClass-eIDAttribute-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EClass-eStructuralFeatures" name="eStructuralFeatures" type="EStructuralFeature" isOrdered="true" aggregation="composite" association="A_eStructuralFeatures_eContainingClass">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EClass-eStructuralFeatures-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="EClass-eStructuralFeatures-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EClass-eGenericSuperTypes" name="eGenericSuperTypes" type="EGenericType" isOrdered="true" aggregation="composite" association="A_eGenericSuperTypes_eClass">
-        <eAnnotations xmi:id="EClass-eGenericSuperTypes-_http2F2Fwww.eclipse.org2Femf2F20022FGenModel" source="http://www.eclipse.org/emf/2002/GenModel">
-          <details xmi:id="EClass-eGenericSuperTypes-_http2F2Fwww.eclipse.org2Femf2F20022FGenModel-_details.0" key="suppressedUnsetVisibility" value="true"/>
-          <details xmi:id="EClass-eGenericSuperTypes-_http2F2Fwww.eclipse.org2Femf2F20022FGenModel-_details.1" key="suppressedIsSetVisibility" value="true"/>
-        </eAnnotations>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EClass-eGenericSuperTypes-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="EClass-eGenericSuperTypes-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EClass-eAllGenericSuperTypes" name="eAllGenericSuperTypes" type="EGenericType" isOrdered="true" isReadOnly="true" isDerived="true" association="A_eAllGenericSuperTypes_eClass">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EClass-eAllGenericSuperTypes-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="EClass-eAllGenericSuperTypes-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="EClass-isSuperTypeOf" name="isSuperTypeOf" visibility="public">
-        <ownedParameter xmi:id="EClass-isSuperTypeOf-_ownedParameter.0" type="EBoolean" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EClass-isSuperTypeOf-_ownedParameter.0-_lowerValue"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="EClass-isSuperTypeOf-someClass" name="someClass" type="EClass" isOrdered="true">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EClass-isSuperTypeOf-someClass-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="EClass-getFeatureCount" name="getFeatureCount" visibility="public">
-        <ownedParameter xmi:id="EClass-getFeatureCount-_ownedParameter.0" type="EInt" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EClass-getFeatureCount-_ownedParameter.0-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="EClass-getEStructuralFeature" name="getEStructuralFeature" visibility="public">
-        <ownedParameter xmi:id="EClass-getEStructuralFeature-_ownedParameter.0" type="EStructuralFeature" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EClass-getEStructuralFeature-_ownedParameter.0-_lowerValue"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="EClass-getEStructuralFeature-featureID" name="featureID" type="EInt" isOrdered="true">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EClass-getEStructuralFeature-featureID-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="EClass-getFeatureID" name="getFeatureID" visibility="public">
-        <ownedParameter xmi:id="EClass-getFeatureID-_ownedParameter.0" type="EInt" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EClass-getFeatureID-_ownedParameter.0-_lowerValue"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="EClass-getFeatureID-feature" name="feature" type="EStructuralFeature" isOrdered="true">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EClass-getFeatureID-feature-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="EClass-getEStructuralFeature.1" name="getEStructuralFeature" visibility="public">
-        <ownedParameter xmi:id="EClass-getEStructuralFeature.1-_ownedParameter.0" type="EStructuralFeature" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EClass-getEStructuralFeature.1-_ownedParameter.0-_lowerValue"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="EClass-getEStructuralFeature.1-featureName" name="featureName" type="EString" isOrdered="true">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EClass-getEStructuralFeature.1-featureName-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="EClassifier" name="EClassifier" isAbstract="true">
-      <eAnnotations xmi:id="EClassifier-_http2F2Fwww.eclipse.org2Femf2F20022FEcore" source="http://www.eclipse.org/emf/2002/Ecore">
-        <details xmi:id="EClassifier-_http2F2Fwww.eclipse.org2Femf2F20022FEcore-_details.0" key="constraints" value="WellFormedInstanceTypeName UniqueTypeParameterNames"/>
-      </eAnnotations>
-      <generalization xmi:id="EClassifier-_generalization.0" general="ENamedElement"/>
-      <ownedAttribute xmi:id="EClassifier-instanceClassName" name="instanceClassName" visibility="public" type="EString" isOrdered="true">
-        <eAnnotations xmi:id="EClassifier-instanceClassName-_http2F2Fwww.eclipse.org2Femf2F20022FGenModel" source="http://www.eclipse.org/emf/2002/GenModel">
-          <details xmi:id="EClassifier-instanceClassName-_http2F2Fwww.eclipse.org2Femf2F20022FGenModel-_details.0" key="suppressedUnsetVisibility" value="true"/>
-          <details xmi:id="EClassifier-instanceClassName-_http2F2Fwww.eclipse.org2Femf2F20022FGenModel-_details.1" key="suppressedIsSetVisibility" value="true"/>
-        </eAnnotations>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EClassifier-instanceClassName-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EClassifier-instanceClass" name="instanceClass" visibility="public" type="EClassifier-EJavaClass_Wildcard" isOrdered="true" isReadOnly="true" isDerived="true">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EClassifier-instanceClass-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EClassifier-defaultValue" name="defaultValue" visibility="public" type="EJavaObject" isOrdered="true" isReadOnly="true" isDerived="true">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EClassifier-defaultValue-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EClassifier-instanceTypeName" name="instanceTypeName" visibility="public" type="EString" isOrdered="true">
-        <eAnnotations xmi:id="EClassifier-instanceTypeName-_http2F2Fwww.eclipse.org2Femf2F20022FGenModel" source="http://www.eclipse.org/emf/2002/GenModel">
-          <details xmi:id="EClassifier-instanceTypeName-_http2F2Fwww.eclipse.org2Femf2F20022FGenModel-_details.0" key="suppressedUnsetVisibility" value="true"/>
-          <details xmi:id="EClassifier-instanceTypeName-_http2F2Fwww.eclipse.org2Femf2F20022FGenModel-_details.1" key="suppressedIsSetVisibility" value="true"/>
-        </eAnnotations>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EClassifier-instanceTypeName-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EClassifier-ePackage" name="ePackage" type="EPackage" isOrdered="true" isReadOnly="true" association="A_eClassifiers_ePackage">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EClassifier-ePackage-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EClassifier-eTypeParameters" name="eTypeParameters" type="ETypeParameter" isOrdered="true" aggregation="composite" association="A_eTypeParameters_eClassifier">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EClassifier-eTypeParameters-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="EClassifier-eTypeParameters-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="EClassifier-isInstance" name="isInstance" visibility="public">
-        <ownedParameter xmi:id="EClassifier-isInstance-_ownedParameter.0" type="EBoolean" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EClassifier-isInstance-_ownedParameter.0-_lowerValue"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="EClassifier-isInstance-object" name="object" type="EJavaObject" isOrdered="true">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EClassifier-isInstance-object-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="EClassifier-getClassifierID" name="getClassifierID" visibility="public">
-        <ownedParameter xmi:id="EClassifier-getClassifierID-_ownedParameter.0" type="EInt" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EClassifier-getClassifierID-_ownedParameter.0-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <nestedClassifier xmi:type="uml:Class" xmi:id="EClassifier-Wildcard" name="Wildcard"/>
-      <nestedClassifier xmi:type="uml:PrimitiveType" xmi:id="EClassifier-EJavaClass_Wildcard" name="EJavaClass_Wildcard">
-        <templateBinding xmi:id="EClassifier-EJavaClass_Wildcard-_templateBinding.0" signature="EJavaClass-_ownedTemplateSignature">
-          <parameterSubstitution xmi:id="EClassifier-EJavaClass_Wildcard-_templateBinding.0-_parameterSubstitution.0" actual="EClassifier-Wildcard" formal="EJavaClass-_ownedTemplateSignature-_ownedParameter.0"/>
-        </templateBinding>
-      </nestedClassifier>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="EDataType" name="EDataType">
-      <generalization xmi:id="EDataType-_generalization.0" general="EClassifier"/>
-      <ownedAttribute xmi:id="EDataType-serializable" name="serializable" visibility="public" type="EBoolean" isOrdered="true">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EDataType-serializable-_lowerValue"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="EEnum" name="EEnum">
-      <eAnnotations xmi:id="EEnum-_http2F2Fwww.eclipse.org2Femf2F20022FEcore" source="http://www.eclipse.org/emf/2002/Ecore">
-        <details xmi:id="EEnum-_http2F2Fwww.eclipse.org2Femf2F20022FEcore-_details.0" key="constraints" value="UniqueEnumeratorNames UniqueEnumeratorLiterals"/>
-      </eAnnotations>
-      <generalization xmi:id="EEnum-_generalization.0" general="EDataType"/>
-      <ownedAttribute xmi:id="EEnum-eLiterals" name="eLiterals" type="EEnumLiteral" isOrdered="true" aggregation="composite" association="A_eLiterals_eEnum">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EEnum-eLiterals-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="EEnum-eLiterals-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="EEnum-getEEnumLiteral" name="getEEnumLiteral" visibility="public">
-        <ownedParameter xmi:id="EEnum-getEEnumLiteral-_ownedParameter.0" type="EEnumLiteral" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EEnum-getEEnumLiteral-_ownedParameter.0-_lowerValue"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="EEnum-getEEnumLiteral-name" name="name" type="EString" isOrdered="true">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EEnum-getEEnumLiteral-name-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="EEnum-getEEnumLiteral.1" name="getEEnumLiteral" visibility="public">
-        <ownedParameter xmi:id="EEnum-getEEnumLiteral.1-_ownedParameter.0" type="EEnumLiteral" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EEnum-getEEnumLiteral.1-_ownedParameter.0-_lowerValue"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="EEnum-getEEnumLiteral.1-value" name="value" type="EInt" isOrdered="true">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EEnum-getEEnumLiteral.1-value-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="EEnum-getEEnumLiteralByLiteral" name="getEEnumLiteralByLiteral" visibility="public">
-        <ownedParameter xmi:id="EEnum-getEEnumLiteralByLiteral-_ownedParameter.0" type="EEnumLiteral" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EEnum-getEEnumLiteralByLiteral-_ownedParameter.0-_lowerValue"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="EEnum-getEEnumLiteralByLiteral-literal" name="literal" type="EString" isOrdered="true">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EEnum-getEEnumLiteralByLiteral-literal-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="EEnumLiteral" name="EEnumLiteral">
-      <generalization xmi:id="EEnumLiteral-_generalization.0" general="ENamedElement"/>
-      <ownedAttribute xmi:id="EEnumLiteral-value" name="value" visibility="public" type="EInt" isOrdered="true">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EEnumLiteral-value-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EEnumLiteral-instance" name="instance" visibility="public" type="EEnumerator" isOrdered="true">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EEnumLiteral-instance-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EEnumLiteral-literal" name="literal" visibility="public" type="EString" isOrdered="true">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EEnumLiteral-literal-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EEnumLiteral-eEnum" name="eEnum" type="EEnum" isOrdered="true" isReadOnly="true" association="A_eLiterals_eEnum">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EEnumLiteral-eEnum-_lowerValue"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="EFactory" name="EFactory">
-      <generalization xmi:id="EFactory-_generalization.0" general="EModelElement"/>
-      <ownedAttribute xmi:id="EFactory-ePackage" name="ePackage" type="EPackage" isOrdered="true" association="A_ePackage_eFactoryInstance"/>
-      <ownedOperation xmi:id="EFactory-create" name="create" visibility="public">
-        <ownedParameter xmi:id="EFactory-create-_ownedParameter.0" type="EObject" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EFactory-create-_ownedParameter.0-_lowerValue"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="EFactory-create-eClass" name="eClass" type="EClass" isOrdered="true">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EFactory-create-eClass-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="EFactory-createFromString" name="createFromString" visibility="public">
-        <ownedParameter xmi:id="EFactory-createFromString-_ownedParameter.0" type="EJavaObject" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EFactory-createFromString-_ownedParameter.0-_lowerValue"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="EFactory-createFromString-eDataType" name="eDataType" type="EDataType" isOrdered="true">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EFactory-createFromString-eDataType-_lowerValue"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="EFactory-createFromString-literalValue" name="literalValue" type="EString" isOrdered="true">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EFactory-createFromString-literalValue-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="EFactory-convertToString" name="convertToString" visibility="public">
-        <ownedParameter xmi:id="EFactory-convertToString-_ownedParameter.0" type="EString" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EFactory-convertToString-_ownedParameter.0-_lowerValue"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="EFactory-convertToString-eDataType" name="eDataType" type="EDataType" isOrdered="true">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EFactory-convertToString-eDataType-_lowerValue"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="EFactory-convertToString-instanceValue" name="instanceValue" type="EJavaObject" isOrdered="true">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EFactory-convertToString-instanceValue-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="EGenericType" name="EGenericType">
-      <eAnnotations xmi:id="EGenericType-_http2F2Fwww.eclipse.org2Femf2F20022FEcore" source="http://www.eclipse.org/emf/2002/Ecore">
-        <details xmi:id="EGenericType-_http2F2Fwww.eclipse.org2Femf2F20022FEcore-_details.0" key="constraints" value="ConsistentType ConsistentBounds ConsistentArguments"/>
-      </eAnnotations>
-      <generalization xmi:id="EGenericType-_generalization.0" general="EObject"/>
-      <ownedAttribute xmi:id="EGenericType-eUpperBound" name="eUpperBound" type="EGenericType" isOrdered="true" aggregation="composite" association="A_eUpperBound_eGenericType">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EGenericType-eUpperBound-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EGenericType-eTypeArguments" name="eTypeArguments" type="EGenericType" isOrdered="true" aggregation="composite" association="A_eTypeArguments_eGenericType">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EGenericType-eTypeArguments-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="EGenericType-eTypeArguments-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EGenericType-eRawType" name="eRawType" type="EClassifier" isOrdered="true" isReadOnly="true" isDerived="true" association="A_eRawType_eGenericType"/>
-      <ownedAttribute xmi:id="EGenericType-eLowerBound" name="eLowerBound" type="EGenericType" isOrdered="true" aggregation="composite" association="A_eLowerBound_eGenericType">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EGenericType-eLowerBound-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EGenericType-eTypeParameter" name="eTypeParameter" type="ETypeParameter" isOrdered="true" association="A_eTypeParameter_eGenericType">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EGenericType-eTypeParameter-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EGenericType-eClassifier" name="eClassifier" type="EClassifier" isOrdered="true" association="A_eClassifier_eGenericType">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EGenericType-eClassifier-_lowerValue"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="EModelElement" name="EModelElement" isAbstract="true">
-      <generalization xmi:id="EModelElement-_generalization.0" general="EObject"/>
-      <ownedAttribute xmi:id="EModelElement-eAnnotations" name="eAnnotations" type="EAnnotation" isOrdered="true" aggregation="composite" association="A_eAnnotations_eModelElement">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EModelElement-eAnnotations-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="EModelElement-eAnnotations-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="EModelElement-getEAnnotation" name="getEAnnotation" visibility="public">
-        <ownedParameter xmi:id="EModelElement-getEAnnotation-_ownedParameter.0" type="EAnnotation" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EModelElement-getEAnnotation-_ownedParameter.0-_lowerValue"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="EModelElement-getEAnnotation-source" name="source" type="EString" isOrdered="true">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EModelElement-getEAnnotation-source-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ENamedElement" name="ENamedElement" isAbstract="true">
-      <eAnnotations xmi:id="ENamedElement-_http2F2Fwww.eclipse.org2Femf2F20022FEcore" source="http://www.eclipse.org/emf/2002/Ecore">
-        <details xmi:id="ENamedElement-_http2F2Fwww.eclipse.org2Femf2F20022FEcore-_details.0" key="constraints" value="WellFormedName"/>
-      </eAnnotations>
-      <generalization xmi:id="ENamedElement-_generalization.0" general="EModelElement"/>
-      <ownedAttribute xmi:id="ENamedElement-name" name="name" visibility="public" type="EString" isOrdered="true">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ENamedElement-name-_lowerValue"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="EObject" name="EObject">
-      <ownedOperation xmi:id="EObject-eClass" name="eClass" visibility="public">
-        <ownedParameter xmi:id="EObject-eClass-_ownedParameter.0" type="EClass" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EObject-eClass-_ownedParameter.0-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="EObject-eIsProxy" name="eIsProxy" visibility="public">
-        <ownedParameter xmi:id="EObject-eIsProxy-_ownedParameter.0" type="EBoolean" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EObject-eIsProxy-_ownedParameter.0-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="EObject-eResource" name="eResource" visibility="public">
-        <ownedParameter xmi:id="EObject-eResource-_ownedParameter.0" type="EResource" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EObject-eResource-_ownedParameter.0-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="EObject-eContainer" name="eContainer" visibility="public">
-        <ownedParameter xmi:id="EObject-eContainer-_ownedParameter.0" type="EObject" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EObject-eContainer-_ownedParameter.0-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="EObject-eContainingFeature" name="eContainingFeature" visibility="public">
-        <ownedParameter xmi:id="EObject-eContainingFeature-_ownedParameter.0" type="EStructuralFeature" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EObject-eContainingFeature-_ownedParameter.0-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="EObject-eContainmentFeature" name="eContainmentFeature" visibility="public">
-        <ownedParameter xmi:id="EObject-eContainmentFeature-_ownedParameter.0" type="EReference" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EObject-eContainmentFeature-_ownedParameter.0-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="EObject-eContents" name="eContents" visibility="public">
-        <ownedParameter xmi:id="EObject-eContents-_ownedParameter.0" type="EObject-EEList_EObject" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EObject-eContents-_ownedParameter.0-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="EObject-eAllContents" name="eAllContents" visibility="public">
-        <ownedParameter xmi:id="EObject-eAllContents-_ownedParameter.0" type="EObject-ETreeIterator_EObject" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EObject-eAllContents-_ownedParameter.0-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="EObject-eCrossReferences" name="eCrossReferences" visibility="public">
-        <ownedParameter xmi:id="EObject-eCrossReferences-_ownedParameter.0" type="EObject-EEList_EObject" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EObject-eCrossReferences-_ownedParameter.0-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="EObject-eGet" name="eGet" visibility="public">
-        <ownedParameter xmi:id="EObject-eGet-_ownedParameter.0" type="EJavaObject" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EObject-eGet-_ownedParameter.0-_lowerValue"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="EObject-eGet-feature" name="feature" type="EStructuralFeature" isOrdered="true">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EObject-eGet-feature-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="EObject-eGet.1" name="eGet" visibility="public">
-        <ownedParameter xmi:id="EObject-eGet.1-_ownedParameter.0" type="EJavaObject" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EObject-eGet.1-_ownedParameter.0-_lowerValue"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="EObject-eGet.1-feature" name="feature" type="EStructuralFeature" isOrdered="true">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EObject-eGet.1-feature-_lowerValue"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="EObject-eGet.1-resolve" name="resolve" type="EBoolean" isOrdered="true">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EObject-eGet.1-resolve-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="EObject-eSet" name="eSet" visibility="public">
-        <ownedParameter xmi:id="EObject-eSet-_ownedParameter.0" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EObject-eSet-_ownedParameter.0-_lowerValue"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="EObject-eSet-feature" name="feature" type="EStructuralFeature" isOrdered="true">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EObject-eSet-feature-_lowerValue"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="EObject-eSet-newValue" name="newValue" type="EJavaObject" isOrdered="true">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EObject-eSet-newValue-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="EObject-eIsSet" name="eIsSet" visibility="public">
-        <ownedParameter xmi:id="EObject-eIsSet-_ownedParameter.0" type="EBoolean" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EObject-eIsSet-_ownedParameter.0-_lowerValue"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="EObject-eIsSet-feature" name="feature" type="EStructuralFeature" isOrdered="true">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EObject-eIsSet-feature-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="EObject-eUnset" name="eUnset" visibility="public">
-        <ownedParameter xmi:id="EObject-eUnset-_ownedParameter.0" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EObject-eUnset-_ownedParameter.0-_lowerValue"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="EObject-eUnset-feature" name="feature" type="EStructuralFeature" isOrdered="true">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EObject-eUnset-feature-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <nestedClassifier xmi:type="uml:PrimitiveType" xmi:id="EObject-EEList_EObject" name="EEList_EObject">
-        <templateBinding xmi:id="EObject-EEList_EObject-_templateBinding.0" signature="EEList-_ownedTemplateSignature">
-          <parameterSubstitution xmi:id="EObject-EEList_EObject-_templateBinding.0-_parameterSubstitution.0" actual="EObject" formal="EEList-_ownedTemplateSignature-_ownedParameter.0"/>
-        </templateBinding>
-      </nestedClassifier>
-      <nestedClassifier xmi:type="uml:PrimitiveType" xmi:id="EObject-ETreeIterator_EObject" name="ETreeIterator_EObject">
-        <templateBinding xmi:id="EObject-ETreeIterator_EObject-_templateBinding.0" signature="ETreeIterator-_ownedTemplateSignature">
-          <parameterSubstitution xmi:id="EObject-ETreeIterator_EObject-_templateBinding.0-_parameterSubstitution.0" actual="EObject" formal="ETreeIterator-_ownedTemplateSignature-_ownedParameter.0"/>
-        </templateBinding>
-      </nestedClassifier>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="EOperation" name="EOperation">
-      <eAnnotations xmi:id="EOperation-_http2F2Fwww.eclipse.org2Femf2F20022FEcore" source="http://www.eclipse.org/emf/2002/Ecore">
-        <details xmi:id="EOperation-_http2F2Fwww.eclipse.org2Femf2F20022FEcore-_details.0" key="constraints" value="UniqueParameterNames UniqueTypeParameterNames NoRepeatingVoid"/>
-      </eAnnotations>
-      <generalization xmi:id="EOperation-_generalization.0" general="ETypedElement"/>
-      <ownedAttribute xmi:id="EOperation-eContainingClass" name="eContainingClass" type="EClass" isOrdered="true" isReadOnly="true" association="A_eOperations_eContainingClass">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EOperation-eContainingClass-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EOperation-eTypeParameters" name="eTypeParameters" type="ETypeParameter" isOrdered="true" aggregation="composite" association="A_eTypeParameters_eOperation">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EOperation-eTypeParameters-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="EOperation-eTypeParameters-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EOperation-eParameters" name="eParameters" type="EParameter" isOrdered="true" aggregation="composite" association="A_eParameters_eOperation">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EOperation-eParameters-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="EOperation-eParameters-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EOperation-eExceptions" name="eExceptions" type="EClassifier" isOrdered="true" association="A_eExceptions_eOperation">
-        <eAnnotations xmi:id="EOperation-eExceptions-_http2F2Fwww.eclipse.org2Femf2F20022FGenModel" source="http://www.eclipse.org/emf/2002/GenModel">
-          <details xmi:id="EOperation-eExceptions-_http2F2Fwww.eclipse.org2Femf2F20022FGenModel-_details.0" key="suppressedUnsetVisibility" value="true"/>
-          <details xmi:id="EOperation-eExceptions-_http2F2Fwww.eclipse.org2Femf2F20022FGenModel-_details.1" key="suppressedIsSetVisibility" value="true"/>
-        </eAnnotations>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EOperation-eExceptions-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="EOperation-eExceptions-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EOperation-eGenericExceptions" name="eGenericExceptions" type="EGenericType" isOrdered="true" aggregation="composite" association="A_eGenericExceptions_eOperation">
-        <eAnnotations xmi:id="EOperation-eGenericExceptions-_http2F2Fwww.eclipse.org2Femf2F20022FGenModel" source="http://www.eclipse.org/emf/2002/GenModel">
-          <details xmi:id="EOperation-eGenericExceptions-_http2F2Fwww.eclipse.org2Femf2F20022FGenModel-_details.0" key="suppressedUnsetVisibility" value="true"/>
-          <details xmi:id="EOperation-eGenericExceptions-_http2F2Fwww.eclipse.org2Femf2F20022FGenModel-_details.1" key="suppressedIsSetVisibility" value="true"/>
-        </eAnnotations>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EOperation-eGenericExceptions-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="EOperation-eGenericExceptions-_upperValue" value="*"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="EPackage" name="EPackage">
-      <eAnnotations xmi:id="EPackage-_http2F2Fwww.eclipse.org2Femf2F20022FEcore" source="http://www.eclipse.org/emf/2002/Ecore">
-        <details xmi:id="EPackage-_http2F2Fwww.eclipse.org2Femf2F20022FEcore-_details.0" key="constraints" value="WellFormedNsURI WellFormedNsPrefix UniqueSubpackageNames UniqueClassifierNames UniqueNsURIs"/>
-      </eAnnotations>
-      <generalization xmi:id="EPackage-_generalization.0" general="ENamedElement"/>
-      <ownedAttribute xmi:id="EPackage-nsURI" name="nsURI" visibility="public" type="EString" isOrdered="true">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EPackage-nsURI-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EPackage-nsPrefix" name="nsPrefix" visibility="public" type="EString" isOrdered="true">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EPackage-nsPrefix-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EPackage-eFactoryInstance" name="eFactoryInstance" type="EFactory" isOrdered="true" association="A_ePackage_eFactoryInstance"/>
-      <ownedAttribute xmi:id="EPackage-eClassifiers" name="eClassifiers" type="EClassifier" isOrdered="true" aggregation="composite" association="A_eClassifiers_ePackage">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EPackage-eClassifiers-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="EPackage-eClassifiers-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EPackage-eSubpackages" name="eSubpackages" type="EPackage" isOrdered="true" aggregation="composite" association="A_eSubpackages_eSuperPackage">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EPackage-eSubpackages-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="EPackage-eSubpackages-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EPackage-eSuperPackage" name="eSuperPackage" type="EPackage" isOrdered="true" isReadOnly="true" association="A_eSubpackages_eSuperPackage">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EPackage-eSuperPackage-_lowerValue"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="EPackage-getEClassifier" name="getEClassifier" visibility="public">
-        <ownedParameter xmi:id="EPackage-getEClassifier-_ownedParameter.0" type="EClassifier" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EPackage-getEClassifier-_ownedParameter.0-_lowerValue"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="EPackage-getEClassifier-name" name="name" type="EString" isOrdered="true">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EPackage-getEClassifier-name-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="EParameter" name="EParameter">
-      <generalization xmi:id="EParameter-_generalization.0" general="ETypedElement"/>
-      <ownedAttribute xmi:id="EParameter-eOperation" name="eOperation" type="EOperation" isOrdered="true" isReadOnly="true" association="A_eParameters_eOperation">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EParameter-eOperation-_lowerValue"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="EReference" name="EReference">
-      <eAnnotations xmi:id="EReference-_http2F2Fwww.eclipse.org2Femf2F20022FEcore" source="http://www.eclipse.org/emf/2002/Ecore">
-        <details xmi:id="EReference-_http2F2Fwww.eclipse.org2Femf2F20022FEcore-_details.0" key="constraints" value="ConsistentOpposite SingleContainer ConsistentKeys"/>
-      </eAnnotations>
-      <generalization xmi:id="EReference-_generalization.0" general="EStructuralFeature"/>
-      <ownedAttribute xmi:id="EReference-containment" name="containment" visibility="public" type="EBoolean" isOrdered="true">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EReference-containment-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EReference-container" name="container" visibility="public" type="EBoolean" isOrdered="true" isReadOnly="true" isDerived="true">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EReference-container-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EReference-resolveProxies" name="resolveProxies" visibility="public" type="EBoolean" isOrdered="true">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EReference-resolveProxies-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EReference-eOpposite" name="eOpposite" type="EReference" isOrdered="true" association="A_eOpposite_eReference">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EReference-eOpposite-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EReference-eReferenceType" name="eReferenceType" type="EClass" isOrdered="true" isReadOnly="true" isDerived="true" association="A_eReferenceType_eReference"/>
-      <ownedAttribute xmi:id="EReference-eKeys" name="eKeys" type="EAttribute" isOrdered="true" association="A_eKeys_eReference">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EReference-eKeys-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="EReference-eKeys-_upperValue" value="*"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="EStringToStringMapEntry" name="EStringToStringMapEntry">
-      <ownedAttribute xmi:id="EStringToStringMapEntry-key" name="key" visibility="public" type="EString" isOrdered="true">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EStringToStringMapEntry-key-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EStringToStringMapEntry-value" name="value" visibility="public" type="EString" isOrdered="true">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EStringToStringMapEntry-value-_lowerValue"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="EStructuralFeature" name="EStructuralFeature" isAbstract="true">
-      <generalization xmi:id="EStructuralFeature-_generalization.0" general="ETypedElement"/>
-      <ownedAttribute xmi:id="EStructuralFeature-eContainingClass" name="eContainingClass" type="EClass" isOrdered="true" isReadOnly="true" association="A_eStructuralFeatures_eContainingClass">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EStructuralFeature-eContainingClass-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EStructuralFeature-changeable" name="changeable" visibility="public" type="EBoolean" isOrdered="true">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EStructuralFeature-changeable-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EStructuralFeature-volatile" name="volatile" visibility="public" type="EBoolean" isOrdered="true">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EStructuralFeature-volatile-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EStructuralFeature-transient" name="transient" visibility="public" type="EBoolean" isOrdered="true">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EStructuralFeature-transient-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EStructuralFeature-defaultValueLiteral" name="defaultValueLiteral" visibility="public" type="EString" isOrdered="true">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EStructuralFeature-defaultValueLiteral-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EStructuralFeature-defaultValue" name="defaultValue" visibility="public" type="EJavaObject" isOrdered="true" isReadOnly="true" isDerived="true">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EStructuralFeature-defaultValue-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EStructuralFeature-unsettable" name="unsettable" visibility="public" type="EBoolean" isOrdered="true">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EStructuralFeature-unsettable-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EStructuralFeature-derived" name="derived" visibility="public" type="EBoolean" isOrdered="true">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EStructuralFeature-derived-_lowerValue"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="EStructuralFeature-getFeatureID" name="getFeatureID" visibility="public">
-        <ownedParameter xmi:id="EStructuralFeature-getFeatureID-_ownedParameter.0" type="EInt" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EStructuralFeature-getFeatureID-_ownedParameter.0-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="EStructuralFeature-getContainerClass" name="getContainerClass" visibility="public">
-        <ownedParameter xmi:id="EStructuralFeature-getContainerClass-_ownedParameter.0" type="EStructuralFeature-EJavaClass_Wildcard" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EStructuralFeature-getContainerClass-_ownedParameter.0-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <nestedClassifier xmi:type="uml:Class" xmi:id="EStructuralFeature-Wildcard" name="Wildcard"/>
-      <nestedClassifier xmi:type="uml:PrimitiveType" xmi:id="EStructuralFeature-EJavaClass_Wildcard" name="EJavaClass_Wildcard">
-        <templateBinding xmi:id="EStructuralFeature-EJavaClass_Wildcard-_templateBinding.0" signature="EJavaClass-_ownedTemplateSignature">
-          <parameterSubstitution xmi:id="EStructuralFeature-EJavaClass_Wildcard-_templateBinding.0-_parameterSubstitution.0" actual="EStructuralFeature-Wildcard" formal="EJavaClass-_ownedTemplateSignature-_ownedParameter.0"/>
-        </templateBinding>
-      </nestedClassifier>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ETypedElement" name="ETypedElement" isAbstract="true">
-      <eAnnotations xmi:id="ETypedElement-_http2F2Fwww.eclipse.org2Femf2F20022FEcore" source="http://www.eclipse.org/emf/2002/Ecore">
-        <details xmi:id="ETypedElement-_http2F2Fwww.eclipse.org2Femf2F20022FEcore-_details.0" key="constraints" value="ValidLowerBound ValidUpperBound ConsistentBounds ValidType"/>
-      </eAnnotations>
-      <generalization xmi:id="ETypedElement-_generalization.0" general="ENamedElement"/>
-      <ownedAttribute xmi:id="ETypedElement-ordered" name="ordered" visibility="public" type="EBoolean" isOrdered="true">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ETypedElement-ordered-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ETypedElement-unique" name="unique" visibility="public" type="EBoolean" isOrdered="true">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ETypedElement-unique-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ETypedElement-lowerBound" name="lowerBound" visibility="public" type="EInt" isOrdered="true">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ETypedElement-lowerBound-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ETypedElement-upperBound" name="upperBound" visibility="public" type="EInt" isOrdered="true">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ETypedElement-upperBound-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ETypedElement-many" name="many" visibility="public" type="EBoolean" isOrdered="true" isReadOnly="true" isDerived="true">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ETypedElement-many-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ETypedElement-required" name="required" visibility="public" type="EBoolean" isOrdered="true" isReadOnly="true" isDerived="true">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ETypedElement-required-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ETypedElement-eType" name="eType" type="EClassifier" isOrdered="true" association="A_eType_eTypedElement">
-        <eAnnotations xmi:id="ETypedElement-eType-_http2F2Fwww.eclipse.org2Femf2F20022FGenModel" source="http://www.eclipse.org/emf/2002/GenModel">
-          <details xmi:id="ETypedElement-eType-_http2F2Fwww.eclipse.org2Femf2F20022FGenModel-_details.0" key="suppressedUnsetVisibility" value="true"/>
-          <details xmi:id="ETypedElement-eType-_http2F2Fwww.eclipse.org2Femf2F20022FGenModel-_details.1" key="suppressedIsSetVisibility" value="true"/>
-        </eAnnotations>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ETypedElement-eType-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ETypedElement-eGenericType" name="eGenericType" type="EGenericType" isOrdered="true" aggregation="composite" association="A_eGenericType_eTypedElement">
-        <eAnnotations xmi:id="ETypedElement-eGenericType-_http2F2Fwww.eclipse.org2Femf2F20022FGenModel" source="http://www.eclipse.org/emf/2002/GenModel">
-          <details xmi:id="ETypedElement-eGenericType-_http2F2Fwww.eclipse.org2Femf2F20022FGenModel-_details.0" key="suppressedUnsetVisibility" value="true"/>
-          <details xmi:id="ETypedElement-eGenericType-_http2F2Fwww.eclipse.org2Femf2F20022FGenModel-_details.1" key="suppressedIsSetVisibility" value="true"/>
-        </eAnnotations>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ETypedElement-eGenericType-_lowerValue"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ETypeParameter" name="ETypeParameter">
-      <generalization xmi:id="ETypeParameter-_generalization.0" general="ENamedElement"/>
-      <ownedAttribute xmi:id="ETypeParameter-eBounds" name="eBounds" type="EGenericType" isOrdered="true" aggregation="composite" association="A_eBounds_eTypeParameter">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ETypeParameter-eBounds-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ETypeParameter-eBounds-_upperValue" value="*"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_ePackage_eFactoryInstance" name="A_ePackage_eFactoryInstance" visibility="private" memberEnd="EFactory-ePackage EPackage-eFactoryInstance"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_eClassifiers_ePackage" name="A_eClassifiers_ePackage" visibility="private" memberEnd="EPackage-eClassifiers EClassifier-ePackage"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_eSubpackages_eSuperPackage" name="A_eSubpackages_eSuperPackage" visibility="private" memberEnd="EPackage-eSubpackages EPackage-eSuperPackage"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_eUpperBound_eGenericType" name="A_eUpperBound_eGenericType" visibility="private" memberEnd="EGenericType-eUpperBound A_eUpperBound_eGenericType-eGenericType">
-      <ownedEnd xmi:id="A_eUpperBound_eGenericType-eGenericType" name="eGenericType" type="EGenericType" association="A_eUpperBound_eGenericType"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_eTypeArguments_eGenericType" name="A_eTypeArguments_eGenericType" visibility="private" memberEnd="EGenericType-eTypeArguments A_eTypeArguments_eGenericType-eGenericType">
-      <ownedEnd xmi:id="A_eTypeArguments_eGenericType-eGenericType" name="eGenericType" type="EGenericType" association="A_eTypeArguments_eGenericType"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_eRawType_eGenericType" name="A_eRawType_eGenericType" visibility="private" memberEnd="EGenericType-eRawType A_eRawType_eGenericType-eGenericType">
-      <ownedEnd xmi:id="A_eRawType_eGenericType-eGenericType" name="eGenericType" type="EGenericType" association="A_eRawType_eGenericType"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_eLowerBound_eGenericType" name="A_eLowerBound_eGenericType" visibility="private" memberEnd="EGenericType-eLowerBound A_eLowerBound_eGenericType-eGenericType">
-      <ownedEnd xmi:id="A_eLowerBound_eGenericType-eGenericType" name="eGenericType" type="EGenericType" association="A_eLowerBound_eGenericType"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_eTypeParameter_eGenericType" name="A_eTypeParameter_eGenericType" visibility="private" memberEnd="EGenericType-eTypeParameter A_eTypeParameter_eGenericType-eGenericType">
-      <ownedEnd xmi:id="A_eTypeParameter_eGenericType-eGenericType" name="eGenericType" type="EGenericType" association="A_eTypeParameter_eGenericType"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_eClassifier_eGenericType" name="A_eClassifier_eGenericType" visibility="private" memberEnd="EGenericType-eClassifier A_eClassifier_eGenericType-eGenericType">
-      <ownedEnd xmi:id="A_eClassifier_eGenericType-eGenericType" name="eGenericType" type="EGenericType" association="A_eClassifier_eGenericType"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_eBounds_eTypeParameter" name="A_eBounds_eTypeParameter" visibility="private" memberEnd="ETypeParameter-eBounds A_eBounds_eTypeParameter-eTypeParameter">
-      <ownedEnd xmi:id="A_eBounds_eTypeParameter-eTypeParameter" name="eTypeParameter" type="ETypeParameter" association="A_eBounds_eTypeParameter"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_eTypeParameters_eClassifier" name="A_eTypeParameters_eClassifier" visibility="private" memberEnd="EClassifier-eTypeParameters A_eTypeParameters_eClassifier-eClassifier">
-      <ownedEnd xmi:id="A_eTypeParameters_eClassifier-eClassifier" name="eClassifier" type="EClassifier" association="A_eTypeParameters_eClassifier"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_eSuperTypes_eClass" name="A_eSuperTypes_eClass" visibility="private" memberEnd="EClass-eSuperTypes A_eSuperTypes_eClass-eClass">
-      <ownedEnd xmi:id="A_eSuperTypes_eClass-eClass" name="eClass" type="EClass" association="A_eSuperTypes_eClass"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_eOperations_eContainingClass" name="A_eOperations_eContainingClass" visibility="private" memberEnd="EClass-eOperations EOperation-eContainingClass"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_eTypeParameters_eOperation" name="A_eTypeParameters_eOperation" visibility="private" memberEnd="EOperation-eTypeParameters A_eTypeParameters_eOperation-eOperation">
-      <ownedEnd xmi:id="A_eTypeParameters_eOperation-eOperation" name="eOperation" type="EOperation" association="A_eTypeParameters_eOperation"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_eParameters_eOperation" name="A_eParameters_eOperation" visibility="private" memberEnd="EOperation-eParameters EParameter-eOperation"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_eExceptions_eOperation" name="A_eExceptions_eOperation" visibility="private" memberEnd="EOperation-eExceptions A_eExceptions_eOperation-eOperation">
-      <ownedEnd xmi:id="A_eExceptions_eOperation-eOperation" name="eOperation" type="EOperation" association="A_eExceptions_eOperation"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_eGenericExceptions_eOperation" name="A_eGenericExceptions_eOperation" visibility="private" memberEnd="EOperation-eGenericExceptions A_eGenericExceptions_eOperation-eOperation">
-      <ownedEnd xmi:id="A_eGenericExceptions_eOperation-eOperation" name="eOperation" type="EOperation" association="A_eGenericExceptions_eOperation"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_eAllAttributes_eClass" name="A_eAllAttributes_eClass" visibility="private" memberEnd="EClass-eAllAttributes A_eAllAttributes_eClass-eClass">
-      <ownedEnd xmi:id="A_eAllAttributes_eClass-eClass" name="eClass" type="EClass" association="A_eAllAttributes_eClass"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_eOpposite_eReference" name="A_eOpposite_eReference" visibility="private" memberEnd="EReference-eOpposite A_eOpposite_eReference-eReference">
-      <ownedEnd xmi:id="A_eOpposite_eReference-eReference" name="eReference" type="EReference" association="A_eOpposite_eReference"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_eReferenceType_eReference" name="A_eReferenceType_eReference" visibility="private" memberEnd="EReference-eReferenceType A_eReferenceType_eReference-eReference">
-      <ownedEnd xmi:id="A_eReferenceType_eReference-eReference" name="eReference" type="EReference" association="A_eReferenceType_eReference"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_eKeys_eReference" name="A_eKeys_eReference" visibility="private" memberEnd="EReference-eKeys A_eKeys_eReference-eReference">
-      <ownedEnd xmi:id="A_eKeys_eReference-eReference" name="eReference" type="EReference" association="A_eKeys_eReference"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_eAllReferences_eClass" name="A_eAllReferences_eClass" visibility="private" memberEnd="EClass-eAllReferences A_eAllReferences_eClass-eClass">
-      <ownedEnd xmi:id="A_eAllReferences_eClass-eClass" name="eClass" type="EClass" association="A_eAllReferences_eClass"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_eReferences_eClass" name="A_eReferences_eClass" visibility="private" memberEnd="EClass-eReferences A_eReferences_eClass-eClass">
-      <ownedEnd xmi:id="A_eReferences_eClass-eClass" name="eClass" type="EClass" association="A_eReferences_eClass"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_eAttributes_eClass" name="A_eAttributes_eClass" visibility="private" memberEnd="EClass-eAttributes A_eAttributes_eClass-eClass">
-      <ownedEnd xmi:id="A_eAttributes_eClass-eClass" name="eClass" type="EClass" association="A_eAttributes_eClass"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_eAllContainments_eClass" name="A_eAllContainments_eClass" visibility="private" memberEnd="EClass-eAllContainments A_eAllContainments_eClass-eClass">
-      <ownedEnd xmi:id="A_eAllContainments_eClass-eClass" name="eClass" type="EClass" association="A_eAllContainments_eClass"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_eAllOperations_eClass" name="A_eAllOperations_eClass" visibility="private" memberEnd="EClass-eAllOperations A_eAllOperations_eClass-eClass">
-      <ownedEnd xmi:id="A_eAllOperations_eClass-eClass" name="eClass" type="EClass" association="A_eAllOperations_eClass"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_eAllStructuralFeatures_eClass" name="A_eAllStructuralFeatures_eClass" visibility="private" memberEnd="EClass-eAllStructuralFeatures A_eAllStructuralFeatures_eClass-eClass">
-      <ownedEnd xmi:id="A_eAllStructuralFeatures_eClass-eClass" name="eClass" type="EClass" association="A_eAllStructuralFeatures_eClass"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_eAllSuperTypes_eClass" name="A_eAllSuperTypes_eClass" visibility="private" memberEnd="EClass-eAllSuperTypes A_eAllSuperTypes_eClass-eClass">
-      <ownedEnd xmi:id="A_eAllSuperTypes_eClass-eClass" name="eClass" type="EClass" association="A_eAllSuperTypes_eClass"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_eIDAttribute_eClass" name="A_eIDAttribute_eClass" visibility="private" memberEnd="EClass-eIDAttribute A_eIDAttribute_eClass-eClass">
-      <ownedEnd xmi:id="A_eIDAttribute_eClass-eClass" name="eClass" type="EClass" association="A_eIDAttribute_eClass"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_eStructuralFeatures_eContainingClass" name="A_eStructuralFeatures_eContainingClass" visibility="private" memberEnd="EClass-eStructuralFeatures EStructuralFeature-eContainingClass"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_eGenericSuperTypes_eClass" name="A_eGenericSuperTypes_eClass" visibility="private" memberEnd="EClass-eGenericSuperTypes A_eGenericSuperTypes_eClass-eClass">
-      <ownedEnd xmi:id="A_eGenericSuperTypes_eClass-eClass" name="eClass" type="EClass" association="A_eGenericSuperTypes_eClass"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_eAllGenericSuperTypes_eClass" name="A_eAllGenericSuperTypes_eClass" visibility="private" memberEnd="EClass-eAllGenericSuperTypes A_eAllGenericSuperTypes_eClass-eClass">
-      <ownedEnd xmi:id="A_eAllGenericSuperTypes_eClass-eClass" name="eClass" type="EClass" association="A_eAllGenericSuperTypes_eClass"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_details_eAnnotation" name="A_details_eAnnotation" visibility="private" memberEnd="EAnnotation-details A_details_eAnnotation-eAnnotation">
-      <ownedEnd xmi:id="A_details_eAnnotation-eAnnotation" name="eAnnotation" type="EAnnotation" association="A_details_eAnnotation"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_eAnnotations_eModelElement" name="A_eAnnotations_eModelElement" visibility="private" memberEnd="EModelElement-eAnnotations EAnnotation-eModelElement"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_contents_eAnnotation" name="A_contents_eAnnotation" visibility="private" memberEnd="EAnnotation-contents A_contents_eAnnotation-eAnnotation">
-      <ownedEnd xmi:id="A_contents_eAnnotation-eAnnotation" name="eAnnotation" type="EAnnotation" association="A_contents_eAnnotation"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_references_eAnnotation" name="A_references_eAnnotation" visibility="private" memberEnd="EAnnotation-references A_references_eAnnotation-eAnnotation">
-      <ownedEnd xmi:id="A_references_eAnnotation-eAnnotation" name="eAnnotation" type="EAnnotation" association="A_references_eAnnotation"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_eType_eTypedElement" name="A_eType_eTypedElement" visibility="private" memberEnd="ETypedElement-eType A_eType_eTypedElement-eTypedElement">
-      <ownedEnd xmi:id="A_eType_eTypedElement-eTypedElement" name="eTypedElement" type="ETypedElement" association="A_eType_eTypedElement"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_eGenericType_eTypedElement" name="A_eGenericType_eTypedElement" visibility="private" memberEnd="ETypedElement-eGenericType A_eGenericType_eTypedElement-eTypedElement">
-      <ownedEnd xmi:id="A_eGenericType_eTypedElement-eTypedElement" name="eTypedElement" type="ETypedElement" association="A_eGenericType_eTypedElement"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_eAttributeType_eAttribute" name="A_eAttributeType_eAttribute" visibility="private" memberEnd="EAttribute-eAttributeType A_eAttributeType_eAttribute-eAttribute">
-      <ownedEnd xmi:id="A_eAttributeType_eAttribute-eAttribute" name="eAttribute" type="EAttribute" association="A_eAttributeType_eAttribute"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_eLiterals_eEnum" name="A_eLiterals_eEnum" visibility="private" memberEnd="EEnum-eLiterals EEnumLiteral-eEnum"/>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EBigDecimal" name="EBigDecimal">
-      <eAnnotations xmi:id="EBigDecimal-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
-        <details xmi:id="EBigDecimal-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData-_details.0" key="baseType" value="http://www.w3.org/2001/XMLSchema#decimal"/>
-      </eAnnotations>
-    </packagedElement>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EBigInteger" name="EBigInteger">
-      <eAnnotations xmi:id="EBigInteger-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
-        <details xmi:id="EBigInteger-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData-_details.0" key="baseType" value="http://www.w3.org/2001/XMLSchema#integer"/>
-      </eAnnotations>
-    </packagedElement>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EBoolean" name="EBoolean">
-      <eAnnotations xmi:id="EBoolean-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
-        <details xmi:id="EBoolean-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData-_details.0" key="baseType" value="http://www.w3.org/2001/XMLSchema#boolean"/>
-      </eAnnotations>
-    </packagedElement>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EBooleanObject" name="EBooleanObject">
-      <eAnnotations xmi:id="EBooleanObject-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
-        <details xmi:id="EBooleanObject-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData-_details.0" key="name" value="EBoolean:Object"/>
-        <details xmi:id="EBooleanObject-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData-_details.1" key="baseType" value="EBoolean"/>
-      </eAnnotations>
-      <generalization xmi:id="EBooleanObject-_generalization.0" general="EBoolean"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EByte" name="EByte">
-      <eAnnotations xmi:id="EByte-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
-        <details xmi:id="EByte-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData-_details.0" key="baseType" value="http://www.w3.org/2001/XMLSchema#byte"/>
-      </eAnnotations>
-    </packagedElement>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EByteArray" name="EByteArray">
-      <eAnnotations xmi:id="EByteArray-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
-        <details xmi:id="EByteArray-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData-_details.0" key="baseType" value="http://www.w3.org/2001/XMLSchema#hexBinary"/>
-      </eAnnotations>
-    </packagedElement>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EByteObject" name="EByteObject">
-      <eAnnotations xmi:id="EByteObject-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
-        <details xmi:id="EByteObject-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData-_details.0" key="name" value="EByte:Object"/>
-        <details xmi:id="EByteObject-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData-_details.1" key="baseType" value="EByte"/>
-      </eAnnotations>
-      <generalization xmi:id="EByteObject-_generalization.0" general="EByte"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EChar" name="EChar"/>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="ECharacterObject" name="ECharacterObject">
-      <eAnnotations xmi:id="ECharacterObject-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
-        <details xmi:id="ECharacterObject-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData-_details.0" key="name" value="EChar:Object"/>
-        <details xmi:id="ECharacterObject-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData-_details.1" key="baseType" value="EChar"/>
-      </eAnnotations>
-      <generalization xmi:id="ECharacterObject-_generalization.0" general="EChar"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EDate" name="EDate"/>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EDiagnosticChain" name="EDiagnosticChain"/>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EDouble" name="EDouble">
-      <eAnnotations xmi:id="EDouble-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
-        <details xmi:id="EDouble-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData-_details.0" key="baseType" value="http://www.w3.org/2001/XMLSchema#double"/>
-      </eAnnotations>
-    </packagedElement>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EDoubleObject" name="EDoubleObject">
-      <eAnnotations xmi:id="EDoubleObject-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
-        <details xmi:id="EDoubleObject-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData-_details.0" key="name" value="EDouble:Object"/>
-        <details xmi:id="EDoubleObject-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData-_details.1" key="baseType" value="EDouble"/>
-      </eAnnotations>
-      <generalization xmi:id="EDoubleObject-_generalization.0" general="EDouble"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EEList" name="EEList">
-      <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="EEList-_ownedTemplateSignature" parameter="EEList-_ownedTemplateSignature-_ownedParameter.0">
-        <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="EEList-_ownedTemplateSignature-_ownedParameter.0" parameteredElement="EEList-_ownedTemplateSignature-_ownedParameter.0-_ownedParameteredElement">
-          <ownedParameteredElement xmi:type="uml:Class" xmi:id="EEList-_ownedTemplateSignature-_ownedParameter.0-_ownedParameteredElement" name="E" templateParameter="EEList-_ownedTemplateSignature-_ownedParameter.0"/>
-        </ownedParameter>
-      </ownedTemplateSignature>
-    </packagedElement>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EEnumerator" name="EEnumerator"/>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EFeatureMap" name="EFeatureMap"/>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EFeatureMapEntry" name="EFeatureMapEntry"/>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EFloat" name="EFloat">
-      <eAnnotations xmi:id="EFloat-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
-        <details xmi:id="EFloat-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData-_details.0" key="baseType" value="http://www.w3.org/2001/XMLSchema#float"/>
-      </eAnnotations>
-    </packagedElement>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EFloatObject" name="EFloatObject">
-      <eAnnotations xmi:id="EFloatObject-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
-        <details xmi:id="EFloatObject-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData-_details.0" key="name" value="EFloat:Object"/>
-        <details xmi:id="EFloatObject-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData-_details.1" key="baseType" value="EFloat"/>
-      </eAnnotations>
-      <generalization xmi:id="EFloatObject-_generalization.0" general="EFloat"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EInt" name="EInt">
-      <eAnnotations xmi:id="EInt-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
-        <details xmi:id="EInt-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData-_details.0" key="baseType" value="http://www.w3.org/2001/XMLSchema#int"/>
-      </eAnnotations>
-    </packagedElement>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EIntegerObject" name="EIntegerObject">
-      <eAnnotations xmi:id="EIntegerObject-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
-        <details xmi:id="EIntegerObject-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData-_details.0" key="name" value="EInt:Object"/>
-        <details xmi:id="EIntegerObject-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData-_details.1" key="baseType" value="EInt"/>
-      </eAnnotations>
-      <generalization xmi:id="EIntegerObject-_generalization.0" general="EInt"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EJavaClass" name="EJavaClass">
-      <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="EJavaClass-_ownedTemplateSignature" parameter="EJavaClass-_ownedTemplateSignature-_ownedParameter.0">
-        <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="EJavaClass-_ownedTemplateSignature-_ownedParameter.0" parameteredElement="EJavaClass-_ownedTemplateSignature-_ownedParameter.0-_ownedParameteredElement">
-          <ownedParameteredElement xmi:type="uml:Class" xmi:id="EJavaClass-_ownedTemplateSignature-_ownedParameter.0-_ownedParameteredElement" name="T" templateParameter="EJavaClass-_ownedTemplateSignature-_ownedParameter.0"/>
-        </ownedParameter>
-      </ownedTemplateSignature>
-    </packagedElement>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EJavaObject" name="EJavaObject"/>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="ELong" name="ELong">
-      <eAnnotations xmi:id="ELong-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
-        <details xmi:id="ELong-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData-_details.0" key="baseType" value="http://www.w3.org/2001/XMLSchema#long"/>
-      </eAnnotations>
-    </packagedElement>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="ELongObject" name="ELongObject">
-      <eAnnotations xmi:id="ELongObject-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
-        <details xmi:id="ELongObject-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData-_details.0" key="name" value="ELong:Object"/>
-        <details xmi:id="ELongObject-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData-_details.1" key="baseType" value="ELong"/>
-      </eAnnotations>
-      <generalization xmi:id="ELongObject-_generalization.0" general="ELong"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EMap" name="EMap">
-      <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="EMap-_ownedTemplateSignature" parameter="EMap-_ownedTemplateSignature-_ownedParameter.0 EMap-_ownedTemplateSignature-_ownedParameter.1">
-        <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="EMap-_ownedTemplateSignature-_ownedParameter.0" parameteredElement="EMap-_ownedTemplateSignature-_ownedParameter.0-_ownedParameteredElement">
-          <ownedParameteredElement xmi:type="uml:Class" xmi:id="EMap-_ownedTemplateSignature-_ownedParameter.0-_ownedParameteredElement" name="K" templateParameter="EMap-_ownedTemplateSignature-_ownedParameter.0"/>
-        </ownedParameter>
-        <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="EMap-_ownedTemplateSignature-_ownedParameter.1" parameteredElement="EMap-_ownedTemplateSignature-_ownedParameter.1-_ownedParameteredElement">
-          <ownedParameteredElement xmi:type="uml:Class" xmi:id="EMap-_ownedTemplateSignature-_ownedParameter.1-_ownedParameteredElement" name="V" templateParameter="EMap-_ownedTemplateSignature-_ownedParameter.1"/>
-        </ownedParameter>
-      </ownedTemplateSignature>
-    </packagedElement>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EResource" name="EResource"/>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EResourceSet" name="EResourceSet"/>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EShort" name="EShort">
-      <eAnnotations xmi:id="EShort-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
-        <details xmi:id="EShort-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData-_details.0" key="baseType" value="http://www.w3.org/2001/XMLSchema#short"/>
-      </eAnnotations>
-    </packagedElement>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EShortObject" name="EShortObject">
-      <eAnnotations xmi:id="EShortObject-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
-        <details xmi:id="EShortObject-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData-_details.0" key="name" value="EShort:Object"/>
-        <details xmi:id="EShortObject-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData-_details.1" key="baseType" value="EShort"/>
-      </eAnnotations>
-      <generalization xmi:id="EShortObject-_generalization.0" general="EShort"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EString" name="EString">
-      <eAnnotations xmi:id="EString-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData" source="http:///org/eclipse/emf/ecore/util/ExtendedMetaData">
-        <details xmi:id="EString-_http2F2F2Forg2Feclipse2Femf2Fecore2Futil2FExtendedMetaData-_details.0" key="baseType" value="http://www.w3.org/2001/XMLSchema#string"/>
-      </eAnnotations>
-    </packagedElement>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="ETreeIterator" name="ETreeIterator">
-      <ownedTemplateSignature xmi:type="uml:RedefinableTemplateSignature" xmi:id="ETreeIterator-_ownedTemplateSignature" parameter="ETreeIterator-_ownedTemplateSignature-_ownedParameter.0">
-        <ownedParameter xmi:type="uml:ClassifierTemplateParameter" xmi:id="ETreeIterator-_ownedTemplateSignature-_ownedParameter.0" parameteredElement="ETreeIterator-_ownedTemplateSignature-_ownedParameter.0-_ownedParameteredElement">
-          <ownedParameteredElement xmi:type="uml:Class" xmi:id="ETreeIterator-_ownedTemplateSignature-_ownedParameter.0-_ownedParameteredElement" name="E" templateParameter="ETreeIterator-_ownedTemplateSignature-_ownedParameter.0"/>
-        </ownedParameter>
-      </ownedTemplateSignature>
-    </packagedElement>
-    <packagedElement xmi:type="uml:PrimitiveType" xmi:id="EInvocationTargetException" name="EInvocationTargetException"/>
-    <profileApplication xmi:id="_profileApplication.0">
-      <eAnnotations xmi:id="_profileApplication.0-_http2F2Fwww.eclipse.org2Fuml22F2.0.02FUML" source="http://www.eclipse.org/uml2/2.0.0/UML">
-        <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA"/>
-      </eAnnotations>
-      <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
-    </profileApplication>
-    <profileApplication xmi:id="_profileApplication.1">
-      <eAnnotations xmi:id="_profileApplication.1-_http2F2Fwww.eclipse.org2Fuml22F2.0.02FUML" source="http://www.eclipse.org/uml2/2.0.0/UML">
-        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/uml2/5.0.0/UML/Profile/Standard#/"/>
-      </eAnnotations>
-      <appliedProfile href="../profiles/Standard.profile.uml#_0"/>
-    </profileApplication>
-  </uml:Model>
-  <standard:Metamodel xmi:id="_2YlIEAMYEeay-ocnA8EcrA" base_Model="_0"/>
-  <standard:Metaclass xmi:id="_2YlvIAMYEeay-ocnA8EcrA" base_Class="EAnnotation"/>
-  <standard:Metaclass xmi:id="_2YmWMAMYEeay-ocnA8EcrA" base_Class="EAttribute"/>
-  <standard:Metaclass xmi:id="_2YmWMQMYEeay-ocnA8EcrA" base_Class="EClass"/>
-  <standard:Metaclass xmi:id="_2Ym9QAMYEeay-ocnA8EcrA" base_Class="EClassifier"/>
-  <standard:Metaclass xmi:id="_2YnkUAMYEeay-ocnA8EcrA" base_Class="EClassifier-Wildcard"/>
-  <standard:Metaclass xmi:id="_2YnkUQMYEeay-ocnA8EcrA" base_Class="EDataType"/>
-  <standard:Metaclass xmi:id="_2YoLYAMYEeay-ocnA8EcrA" base_Class="EEnum"/>
-  <standard:Metaclass xmi:id="_2YoLYQMYEeay-ocnA8EcrA" base_Class="EEnumLiteral"/>
-  <standard:Metaclass xmi:id="_2YoycAMYEeay-ocnA8EcrA" base_Class="EFactory"/>
-  <standard:Metaclass xmi:id="_2YoycQMYEeay-ocnA8EcrA" base_Class="EGenericType"/>
-  <standard:Metaclass xmi:id="_2YpZgAMYEeay-ocnA8EcrA" base_Class="EModelElement"/>
-  <standard:Metaclass xmi:id="_2YpZgQMYEeay-ocnA8EcrA" base_Class="ENamedElement"/>
-  <standard:Metaclass xmi:id="_2YqAkAMYEeay-ocnA8EcrA" base_Class="EObject"/>
-  <standard:Metaclass xmi:id="_2YqAkQMYEeay-ocnA8EcrA" base_Class="EOperation"/>
-  <standard:Metaclass xmi:id="_2YqnoAMYEeay-ocnA8EcrA" base_Class="EPackage"/>
-  <standard:Metaclass xmi:id="_2YrOsAMYEeay-ocnA8EcrA" base_Class="EParameter"/>
-  <standard:Metaclass xmi:id="_2YrOsQMYEeay-ocnA8EcrA" base_Class="EReference"/>
-  <standard:Metaclass xmi:id="_2YrOsgMYEeay-ocnA8EcrA" base_Class="EStringToStringMapEntry"/>
-  <standard:Metaclass xmi:id="_2Yr1wAMYEeay-ocnA8EcrA" base_Class="EStructuralFeature"/>
-  <standard:Metaclass xmi:id="_2Yr1wQMYEeay-ocnA8EcrA" base_Class="EStructuralFeature-Wildcard"/>
-  <standard:Metaclass xmi:id="_2Ysc0AMYEeay-ocnA8EcrA" base_Class="ETypedElement"/>
-  <standard:Metaclass xmi:id="_2Ysc0QMYEeay-ocnA8EcrA" base_Class="ETypeParameter"/>
-  <standard:Metaclass xmi:id="_2YuSAAMYEeay-ocnA8EcrA" base_Class="EEList-_ownedTemplateSignature-_ownedParameter.0-_ownedParameteredElement"/>
-  <standard:Metaclass xmi:id="_2Yu5EAMYEeay-ocnA8EcrA" base_Class="EJavaClass-_ownedTemplateSignature-_ownedParameter.0-_ownedParameteredElement"/>
-  <standard:Metaclass xmi:id="_2Yu5EQMYEeay-ocnA8EcrA" base_Class="EMap-_ownedTemplateSignature-_ownedParameter.0-_ownedParameteredElement"/>
-  <standard:Metaclass xmi:id="_2Yu5EgMYEeay-ocnA8EcrA" base_Class="EMap-_ownedTemplateSignature-_ownedParameter.1-_ownedParameteredElement"/>
-  <standard:Metaclass xmi:id="_2YvgIAMYEeay-ocnA8EcrA" base_Class="ETreeIterator-_ownedTemplateSignature-_ownedParameter.0-_ownedParameteredElement"/>
-</xmi:XMI>
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/C2/resources/model/plugin/org.eclipse.uml2.uml.resources/metamodels/UML.metamodel.uml b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/C2/resources/model/plugin/org.eclipse.uml2.uml.resources/metamodels/UML.metamodel.uml
deleted file mode 100644
index 845a4c3..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/C2/resources/model/plugin/org.eclipse.uml2.uml.resources/metamodels/UML.metamodel.uml
+++ /dev/null
@@ -1,17967 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:standard="http://www.eclipse.org/uml2/5.0.0/UML/Profile/Standard" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
-  <uml:Model xmi:id="_0" name="UML" URI="http://www.omg.org/spec/UML/20131001">
-    <eAnnotations xmi:id="_http2F2Fwww.eclipse.org2Fuml22F2.0.02FUML" source="http://www.eclipse.org/uml2/2.0.0/UML">
-      <eAnnotations xmi:id="_http2F2Fwww.eclipse.org2Fuml22F2.0.02FUML-_UML2FActions" source="UML/Actions" references="ValueSpecificationAction-result ValueSpecificationAction-value ValueSpecificationAction VariableAction-variable VariableAction WriteLinkAction WriteStructuralFeatureAction-result WriteStructuralFeatureAction-value WriteStructuralFeatureAction WriteVariableAction-value WriteVariableAction ExpansionKind AcceptCallAction-returnInformation AcceptCallAction AcceptEventAction-isUnmarshall AcceptEventAction-result AcceptEventAction-trigger AcceptEventAction Action-context Action-input Action-isLocallyReentrant Action-localPostcondition Action-localPrecondition Action-output Action-context.1 Action-allActions Action-allOwnedNodes Action-containingBehavior Action ActionInputPin-fromAction ActionInputPin AddStructuralFeatureValueAction-insertAt AddStructuralFeatureValueAction-isReplaceAll AddStructuralFeatureValueAction AddVariableValueAction-insertAt AddVariableValueAction-isReplaceAll AddVariableValueAction BroadcastSignalAction-signal BroadcastSignalAction CallAction-isSynchronous CallAction-result CallAction-inputParameters CallAction-outputParameters CallAction CallBehaviorAction-behavior CallBehaviorAction-outputParameters CallBehaviorAction-inputParameters CallBehaviorAction CallOperationAction-operation CallOperationAction-target CallOperationAction-outputParameters CallOperationAction-inputParameters CallOperationAction Clause-body Clause-bodyOutput Clause-decider Clause-predecessorClause Clause-successorClause Clause-test Clause ClearAssociationAction-association ClearAssociationAction-object ClearAssociationAction ClearStructuralFeatureAction-result ClearStructuralFeatureAction ClearVariableAction ConditionalNode-clause ConditionalNode-isAssured ConditionalNode-isDeterminate ConditionalNode-result ConditionalNode-allActions ConditionalNode CreateLinkAction-endData CreateLinkAction CreateLinkObjectAction-result CreateLinkObjectAction CreateObjectAction-classifier CreateObjectAction-result CreateObjectAction DestroyLinkAction-endData DestroyLinkAction DestroyObjectAction-isDestroyLinks DestroyObjectAction-isDestroyOwnedObjects DestroyObjectAction-target DestroyObjectAction ExpansionNode-regionAsInput ExpansionNode-regionAsOutput ExpansionNode ExpansionRegion-inputElement ExpansionRegion-mode ExpansionRegion-outputElement ExpansionRegion InputPin InvocationAction-argument InvocationAction-onPort InvocationAction LinkAction-endData LinkAction-inputValue LinkAction-association LinkAction LinkEndCreationData-insertAt LinkEndCreationData-isReplaceAll LinkEndCreationData-allPins LinkEndCreationData LinkEndData-end LinkEndData-qualifier LinkEndData-value LinkEndData-allPins LinkEndData LinkEndDestructionData-destroyAt LinkEndDestructionData-isDestroyDuplicates LinkEndDestructionData-allPins LinkEndDestructionData LoopNode-bodyOutput LoopNode-bodyPart LoopNode-decider LoopNode-isTestedFirst LoopNode-loopVariable LoopNode-loopVariableInput LoopNode-result LoopNode-setupPart LoopNode-test LoopNode-allActions LoopNode-sourceNodes LoopNode OpaqueAction-body OpaqueAction-inputValue OpaqueAction-language OpaqueAction-outputValue OpaqueAction OutputPin Pin-isControl Pin QualifierValue-qualifier QualifierValue-value QualifierValue RaiseExceptionAction-exception RaiseExceptionAction ReadExtentAction-classifier ReadExtentAction-result ReadExtentAction ReadIsClassifiedObjectAction-classifier ReadIsClassifiedObjectAction-isDirect ReadIsClassifiedObjectAction-object ReadIsClassifiedObjectAction-result ReadIsClassifiedObjectAction ReadLinkAction-result ReadLinkAction-openEnd ReadLinkAction ReadLinkObjectEndAction-end ReadLinkObjectEndAction-object ReadLinkObjectEndAction-result ReadLinkObjectEndAction ReadLinkObjectEndQualifierAction-object ReadLinkObjectEndQualifierAction-qualifier ReadLinkObjectEndQualifierAction-result ReadLinkObjectEndQualifierAction ReadSelfAction-result ReadSelfAction ReadStructuralFeatureAction-result ReadStructuralFeatureAction ReadVariableAction-result ReadVariableAction ReclassifyObjectAction-isReplaceAll ReclassifyObjectAction-newClassifier ReclassifyObjectAction-object ReclassifyObjectAction-oldClassifier ReclassifyObjectAction ReduceAction-collection ReduceAction-isOrdered ReduceAction-reducer ReduceAction-result ReduceAction RemoveStructuralFeatureValueAction-isRemoveDuplicates RemoveStructuralFeatureValueAction-removeAt RemoveStructuralFeatureValueAction RemoveVariableValueAction-isRemoveDuplicates RemoveVariableValueAction-removeAt RemoveVariableValueAction ReplyAction-replyToCall ReplyAction-replyValue ReplyAction-returnInformation ReplyAction SendObjectAction-request SendObjectAction-target SendObjectAction SendSignalAction-signal SendSignalAction-target SendSignalAction SequenceNode-executableNode SequenceNode StartClassifierBehaviorAction-object StartClassifierBehaviorAction StartObjectBehaviorAction-object StartObjectBehaviorAction-outputParameters StartObjectBehaviorAction-inputParameters StartObjectBehaviorAction-behavior StartObjectBehaviorAction StructuralFeatureAction-object StructuralFeatureAction-structuralFeature StructuralFeatureAction StructuredActivityNode-activity StructuredActivityNode-edge StructuredActivityNode-mustIsolate StructuredActivityNode-node StructuredActivityNode-structuredNodeInput StructuredActivityNode-structuredNodeOutput StructuredActivityNode-variable StructuredActivityNode-allActions StructuredActivityNode-allOwnedNodes StructuredActivityNode-sourceNodes StructuredActivityNode-targetNodes StructuredActivityNode-containingActivity StructuredActivityNode TestIdentityAction-first TestIdentityAction-result TestIdentityAction-second TestIdentityAction UnmarshallAction-object UnmarshallAction-result UnmarshallAction-unmarshallType UnmarshallAction ValuePin-value ValuePin A_value_valuePin-valuePin A_value_valuePin A_result_unmarshallAction-unmarshallAction A_result_unmarshallAction A_unmarshallType_unmarshallAction-unmarshallAction A_unmarshallType_unmarshallAction A_object_unmarshallAction-unmarshallAction A_object_unmarshallAction A_first_testIdentityAction-testIdentityAction A_first_testIdentityAction A_second_testIdentityAction-testIdentityAction A_second_testIdentityAction A_result_testIdentityAction-testIdentityAction A_result_testIdentityAction A_structuredNodeOutput_structuredActivityNode-structuredActivityNode A_structuredNodeOutput_structuredActivityNode A_structuredNodeInput_structuredActivityNode-structuredActivityNode A_structuredNodeInput_structuredActivityNode A_edge_inStructuredNode A_node_inStructuredNode A_variable_scope A_object_structuralFeatureAction-structuralFeatureAction A_object_structuralFeatureAction A_structuralFeature_structuralFeatureAction-structuralFeatureAction A_structuralFeature_structuralFeatureAction A_object_startObjectBehaviorAction-startObjectBehaviorAction A_object_startObjectBehaviorAction A_object_startClassifierBehaviorAction-startClassifierBehaviorAction A_object_startClassifierBehaviorAction A_executableNode_sequenceNode-sequenceNode A_executableNode_sequenceNode A_signal_sendSignalAction-sendSignalAction A_signal_sendSignalAction A_target_sendSignalAction-sendSignalAction A_target_sendSignalAction A_request_sendObjectAction-sendObjectAction A_request_sendObjectAction A_target_sendObjectAction-sendObjectAction A_target_sendObjectAction A_returnInformation_replyAction-replyAction A_returnInformation_replyAction A_replyToCall_replyAction-replyAction A_replyToCall_replyAction A_replyValue_replyAction-replyAction A_replyValue_replyAction A_removeAt_removeVariableValueAction-removeVariableValueAction A_removeAt_removeVariableValueAction A_removeAt_removeStructuralFeatureValueAction-removeStructuralFeatureValueAction A_removeAt_removeStructuralFeatureValueAction A_collection_reduceAction-reduceAction A_collection_reduceAction A_reducer_reduceAction-reduceAction A_reducer_reduceAction A_result_reduceAction-reduceAction A_result_reduceAction A_object_reclassifyObjectAction-reclassifyObjectAction A_object_reclassifyObjectAction A_newClassifier_reclassifyObjectAction-reclassifyObjectAction A_newClassifier_reclassifyObjectAction A_oldClassifier_reclassifyObjectAction-reclassifyObjectAction A_oldClassifier_reclassifyObjectAction A_result_readVariableAction-readVariableAction A_result_readVariableAction A_result_readStructuralFeatureAction-readStructuralFeatureAction A_result_readStructuralFeatureAction A_result_readSelfAction-readSelfAction A_result_readSelfAction A_qualifier_readLinkObjectEndQualifierAction-readLinkObjectEndQualifierAction A_qualifier_readLinkObjectEndQualifierAction A_object_readLinkObjectEndQualifierAction-readLinkObjectEndQualifierAction A_object_readLinkObjectEndQualifierAction A_result_readLinkObjectEndQualifierAction-readLinkObjectEndQualifierAction A_result_readLinkObjectEndQualifierAction A_object_readLinkObjectEndAction-readLinkObjectEndAction A_object_readLinkObjectEndAction A_end_readLinkObjectEndAction-readLinkObjectEndAction A_end_readLinkObjectEndAction A_result_readLinkObjectEndAction-readLinkObjectEndAction A_result_readLinkObjectEndAction A_result_readLinkAction-readLinkAction A_result_readLinkAction A_classifier_readIsClassifiedObjectAction-readIsClassifiedObjectAction A_classifier_readIsClassifiedObjectAction A_result_readIsClassifiedObjectAction-readIsClassifiedObjectAction A_result_readIsClassifiedObjectAction A_object_readIsClassifiedObjectAction-readIsClassifiedObjectAction A_object_readIsClassifiedObjectAction A_result_readExtentAction-readExtentAction A_result_readExtentAction A_classifier_readExtentAction-readExtentAction A_classifier_readExtentAction A_exception_raiseExceptionAction-raiseExceptionAction A_exception_raiseExceptionAction A_qualifier_qualifierValue-qualifierValue A_qualifier_qualifierValue A_value_qualifierValue-qualifierValue A_value_qualifierValue A_outputValue_opaqueAction-opaqueAction A_outputValue_opaqueAction A_inputValue_opaqueAction-opaqueAction A_inputValue_opaqueAction A_setupPart_loopNode-loopNode A_setupPart_loopNode A_bodyPart_loopNode-loopNode A_bodyPart_loopNode A_loopVariable_loopNode-loopNode A_loopVariable_loopNode A_result_loopNode-loopNode A_result_loopNode A_bodyOutput_loopNode-loopNode A_bodyOutput_loopNode A_loopVariableInput_loopNode-loopNode A_loopVariableInput_loopNode A_test_loopNode-loopNode A_test_loopNode A_decider_loopNode-loopNode A_decider_loopNode A_destroyAt_linkEndDestructionData-linkEndDestructionData A_destroyAt_linkEndDestructionData A_value_linkEndData-linkEndData A_value_linkEndData A_end_linkEndData-linkEndData A_end_linkEndData A_qualifier_linkEndData-linkEndData A_qualifier_linkEndData A_insertAt_linkEndCreationData-linkEndCreationData A_insertAt_linkEndCreationData A_inputValue_linkAction-linkAction A_inputValue_linkAction A_endData_linkAction-linkAction A_endData_linkAction A_argument_invocationAction-invocationAction A_argument_invocationAction A_onPort_invocationAction-invocationAction A_onPort_invocationAction A_inputElement_regionAsInput A_outputElement_regionAsOutput A_target_destroyObjectAction-destroyObjectAction A_target_destroyObjectAction A_endData_destroyLinkAction-destroyLinkAction A_endData_destroyLinkAction A_classifier_createObjectAction-createObjectAction A_classifier_createObjectAction A_result_createObjectAction-createObjectAction A_result_createObjectAction A_result_createLinkObjectAction-createLinkObjectAction A_result_createLinkObjectAction A_endData_createLinkAction-createLinkAction A_endData_createLinkAction A_clause_conditionalNode-conditionalNode A_clause_conditionalNode A_result_conditionalNode-conditionalNode A_result_conditionalNode A_result_clearStructuralFeatureAction-clearStructuralFeatureAction A_result_clearStructuralFeatureAction A_object_clearAssociationAction-clearAssociationAction A_object_clearAssociationAction A_association_clearAssociationAction-clearAssociationAction A_association_clearAssociationAction A_decider_clause-clause A_decider_clause A_bodyOutput_clause-clause A_bodyOutput_clause A_test_clause-clause A_test_clause A_body_clause-clause A_body_clause A_predecessorClause_successorClause A_target_callOperationAction-callOperationAction A_target_callOperationAction A_operation_callOperationAction-callOperationAction A_operation_callOperationAction A_behavior_callBehaviorAction-callBehaviorAction A_behavior_callBehaviorAction A_result_callAction-callAction A_result_callAction A_signal_broadcastSignalAction-broadcastSignalAction A_signal_broadcastSignalAction A_insertAt_addVariableValueAction-addVariableValueAction A_insertAt_addVariableValueAction A_insertAt_addStructuralFeatureValueAction-addStructuralFeatureValueAction A_insertAt_addStructuralFeatureValueAction A_fromAction_actionInputPin-actionInputPin A_fromAction_actionInputPin A_output_action-action A_output_action A_context_action-action A_context_action A_input_action-action A_input_action A_localPrecondition_action-action A_localPrecondition_action A_localPostcondition_action-action A_localPostcondition_action A_trigger_acceptEventAction-acceptEventAction A_trigger_acceptEventAction A_result_acceptEventAction-acceptEventAction A_result_acceptEventAction A_returnInformation_acceptCallAction-acceptCallAction A_returnInformation_acceptCallAction A_value_writeVariableAction-writeVariableAction A_value_writeVariableAction A_result_writeStructuralFeatureAction-writeStructuralFeatureAction A_result_writeStructuralFeatureAction A_value_writeStructuralFeatureAction-writeStructuralFeatureAction A_value_writeStructuralFeatureAction A_variable_variableAction-variableAction A_variable_variableAction A_result_valueSpecificationAction-valueSpecificationAction A_result_valueSpecificationAction A_value_valueSpecificationAction-valueSpecificationAction A_value_valueSpecificationAction"/>
-      <eAnnotations xmi:id="_http2F2Fwww.eclipse.org2Fuml22F2.0.02FUML-_UML2FActivities" source="UML/Activities" references="Activity-edge Activity-group Activity-isReadOnly Activity-isSingleExecution Activity-node Activity-partition Activity-structuredNode Activity-variable Activity ActivityEdge-activity ActivityEdge-guard ActivityEdge-inGroup ActivityEdge-inPartition ActivityEdge-inStructuredNode ActivityEdge-interrupts ActivityEdge-redefinedEdge ActivityEdge-source ActivityEdge-target ActivityEdge-weight ActivityEdge-isConsistentWith ActivityEdge ActivityFinalNode ActivityGroup-containedEdge ActivityGroup-containedNode ActivityGroup-inActivity ActivityGroup-subgroup ActivityGroup-superGroup ActivityGroup-containingActivity ActivityGroup ActivityNode-activity ActivityNode-inGroup ActivityNode-inInterruptibleRegion ActivityNode-inPartition ActivityNode-inStructuredNode ActivityNode-incoming ActivityNode-outgoing ActivityNode-redefinedNode ActivityNode-containingActivity ActivityNode-isConsistentWith ActivityNode ActivityParameterNode-parameter ActivityParameterNode ActivityPartition-edge ActivityPartition-isDimension ActivityPartition-isExternal ActivityPartition-node ActivityPartition-represents ActivityPartition-subpartition ActivityPartition-superPartition ActivityPartition CentralBufferNode ControlFlow ControlNode DataStoreNode DecisionNode-decisionInput DecisionNode-decisionInputFlow DecisionNode ExceptionHandler-exceptionInput ExceptionHandler-exceptionType ExceptionHandler-handlerBody ExceptionHandler-protectedNode ExceptionHandler ExecutableNode-handler ExecutableNode FinalNode FlowFinalNode ForkNode InitialNode InterruptibleActivityRegion-interruptingEdge InterruptibleActivityRegion-node InterruptibleActivityRegion JoinNode-isCombineDuplicate JoinNode-joinSpec JoinNode MergeNode ObjectFlow-isMulticast ObjectFlow-isMultireceive ObjectFlow-selection ObjectFlow-transformation ObjectFlow ObjectNode-inState ObjectNode-isControlType ObjectNode-ordering ObjectNode-selection ObjectNode-upperBound ObjectNode Variable-activityScope Variable-scope Variable-isAccessibleBy Variable ObjectNodeOrderingKind A_selection_objectNode-objectNode A_selection_objectNode A_inState_objectNode-objectNode A_inState_objectNode A_upperBound_objectNode-objectNode A_upperBound_objectNode A_transformation_objectFlow-objectFlow A_transformation_objectFlow A_selection_objectFlow-objectFlow A_selection_objectFlow A_joinSpec_joinNode-joinNode A_joinSpec_joinNode A_interruptingEdge_interrupts A_handler_protectedNode A_handlerBody_exceptionHandler-exceptionHandler A_handlerBody_exceptionHandler A_exceptionType_exceptionHandler-exceptionHandler A_exceptionType_exceptionHandler A_exceptionInput_exceptionHandler-exceptionHandler A_exceptionInput_exceptionHandler A_decisionInput_decisionNode-decisionNode A_decisionInput_decisionNode A_decisionInputFlow_decisionNode-decisionNode A_decisionInputFlow_decisionNode A_represents_activityPartition-activityPartition A_represents_activityPartition A_subpartition_superPartition A_edge_inPartition A_parameter_activityParameterNode-activityParameterNode A_parameter_activityParameterNode A_inInterruptibleRegion_node A_inPartition_node A_incoming_target_node A_outgoing_source_node A_redefinedNode_activityNode-activityNode A_redefinedNode_activityNode A_containedEdge_inGroup A_containedNode_inGroup A_subgroup_superGroup A_redefinedEdge_activityEdge-activityEdge A_redefinedEdge_activityEdge A_weight_activityEdge-activityEdge A_weight_activityEdge A_guard_activityEdge-activityEdge A_guard_activityEdge A_structuredNode_activity A_group_inActivity A_node_activity A_variable_activityScope A_edge_activity A_partition_activity-activity A_partition_activity"/>
-      <eAnnotations xmi:id="_http2F2Fwww.eclipse.org2Fuml22F2.0.02FUML-_UML2FClassification" source="UML/Classification" references="Substitution-contract Substitution-substitutingClassifier Substitution BehavioralFeature-concurrency BehavioralFeature-isAbstract BehavioralFeature-method BehavioralFeature-ownedParameter BehavioralFeature-ownedParameterSet BehavioralFeature-raisedException BehavioralFeature-isDistinguishableFrom BehavioralFeature-inputParameters BehavioralFeature-outputParameters BehavioralFeature Classifier-attribute Classifier-collaborationUse Classifier-feature Classifier-general Classifier-generalization Classifier-inheritedMember Classifier-isAbstract Classifier-isFinalSpecialization Classifier-ownedTemplateSignature Classifier-ownedUseCase Classifier-powertypeExtent Classifier-redefinedClassifier Classifier-representation Classifier-substitution Classifier-templateParameter Classifier-useCase Classifier-allFeatures Classifier-allParents Classifier-conformsTo Classifier-general.1 Classifier-hasVisibilityOf Classifier-inherit Classifier-inheritableMembers Classifier-inheritedMember.1 Classifier-isTemplate Classifier-maySpecializeType Classifier-parents Classifier-directlyRealizedInterfaces Classifier-directlyUsedInterfaces Classifier-allRealizedInterfaces Classifier-allUsedInterfaces Classifier-isSubstitutableFor Classifier-allAttributes Classifier-allSlottableFeatures Classifier ClassifierTemplateParameter-allowSubstitutable ClassifierTemplateParameter-constrainingClassifier ClassifierTemplateParameter-parameteredElement ClassifierTemplateParameter Feature-featuringClassifier Feature-isStatic Feature Generalization-general Generalization-generalizationSet Generalization-isSubstitutable Generalization-specific Generalization GeneralizationSet-generalization GeneralizationSet-isCovering GeneralizationSet-isDisjoint GeneralizationSet-powertype GeneralizationSet InstanceSpecification-classifier InstanceSpecification-slot InstanceSpecification-specification InstanceSpecification InstanceValue-instance InstanceValue Operation-bodyCondition Operation-class Operation-datatype Operation-interface Operation-isOrdered Operation-isQuery Operation-isUnique Operation-lower Operation-ownedParameter Operation-postcondition Operation-precondition Operation-raisedException Operation-redefinedOperation Operation-templateParameter Operation-type Operation-upper Operation-isConsistentWith Operation-isOrdered.1 Operation-isUnique.1 Operation-lower.1 Operation-returnResult Operation-type.1 Operation-upper.1 Operation OperationTemplateParameter-parameteredElement OperationTemplateParameter Parameter-default Parameter-defaultValue Parameter-direction Parameter-effect Parameter-isException Parameter-isStream Parameter-operation Parameter-parameterSet Parameter-default.1 Parameter ParameterSet-condition ParameterSet-parameter ParameterSet Property-aggregation Property-association Property-associationEnd Property-class Property-datatype Property-defaultValue Property-interface Property-isComposite Property-isDerived Property-isDerivedUnion Property-isID Property-opposite Property-owningAssociation Property-qualifier Property-redefinedProperty Property-subsettedProperty Property-isAttribute Property-isCompatibleWith Property-isComposite.1 Property-isConsistentWith Property-isNavigable Property-opposite.1 Property-subsettingContext Property RedefinableElement-isLeaf RedefinableElement-redefinedElement RedefinableElement-redefinitionContext RedefinableElement-isConsistentWith RedefinableElement-isRedefinitionContextValid RedefinableElement RedefinableTemplateSignature-classifier RedefinableTemplateSignature-extendedSignature RedefinableTemplateSignature-inheritedParameter RedefinableTemplateSignature-inheritedParameter.1 RedefinableTemplateSignature-isConsistentWith RedefinableTemplateSignature Slot-definingFeature Slot-owningInstance Slot-value Slot StructuralFeature-isReadOnly StructuralFeature AggregationKind CallConcurrencyKind ParameterDirectionKind ParameterEffectKind A_definingFeature_slot-slot A_definingFeature_slot A_value_owningSlot-owningSlot A_value_owningSlot A_extendedSignature_redefinableTemplateSignature-redefinableTemplateSignature A_extendedSignature_redefinableTemplateSignature A_inheritedParameter_redefinableTemplateSignature-redefinableTemplateSignature A_inheritedParameter_redefinableTemplateSignature A_redefinitionContext_redefinableElement-redefinableElement A_redefinitionContext_redefinableElement A_redefinedElement_redefinableElement-redefinableElement A_redefinedElement_redefinableElement A_qualifier_associationEnd A_redefinedProperty_property-property A_redefinedProperty_property A_defaultValue_owningProperty-owningProperty A_defaultValue_owningProperty A_opposite_property-property A_opposite_property A_subsettedProperty_property-property A_subsettedProperty_property A_condition_parameterSet-parameterSet A_condition_parameterSet A_parameterSet_parameter A_defaultValue_owningParameter-owningParameter A_defaultValue_owningParameter A_type_operation-operation A_type_operation A_operation_templateParameter_parameteredElement A_bodyCondition_bodyContext-bodyContext A_bodyCondition_bodyContext A_postcondition_postContext-postContext A_postcondition_postContext A_redefinedOperation_operation-operation A_redefinedOperation_operation A_raisedException_operation-operation A_raisedException_operation A_precondition_preContext-preContext A_precondition_preContext A_ownedParameter_operation A_instance_instanceValue-instanceValue A_instance_instanceValue A_classifier_instanceSpecification-instanceSpecification A_classifier_instanceSpecification A_slot_owningInstance A_specification_owningInstanceSpec-owningInstanceSpec A_specification_owningInstanceSpec A_generalizationSet_generalization A_general_generalization-generalization A_general_generalization A_constrainingClassifier_classifierTemplateParameter-classifierTemplateParameter A_constrainingClassifier_classifierTemplateParameter A_classifier_templateParameter_parameteredElement A_powertypeExtent_powertype A_generalization_specific A_general_classifier-classifier A_general_classifier A_feature_featuringClassifier A_substitution_substitutingClassifier A_representation_classifier-classifier A_representation_classifier A_ownedTemplateSignature_classifier A_inheritedMember_inheritingClassifier-inheritingClassifier A_inheritedMember_inheritingClassifier A_redefinedClassifier_classifier-classifier A_redefinedClassifier_classifier A_collaborationUse_classifier-classifier A_collaborationUse_classifier A_attribute_classifier-classifier A_attribute_classifier A_ownedUseCase_classifier-classifier A_ownedUseCase_classifier A_ownedParameter_ownerFormalParam-ownerFormalParam A_ownedParameter_ownerFormalParam A_raisedException_behavioralFeature-behavioralFeature A_raisedException_behavioralFeature A_ownedParameterSet_behavioralFeature-behavioralFeature A_ownedParameterSet_behavioralFeature A_method_specification A_contract_substitution-substitution A_contract_substitution"/>
-      <eAnnotations xmi:id="_http2F2Fwww.eclipse.org2Fuml22F2.0.02FUML-_UML2FCommonBehavior" source="UML/CommonBehavior" references="AnyReceiveEvent Behavior-context Behavior-isReentrant Behavior-ownedParameter Behavior-ownedParameterSet Behavior-postcondition Behavior-precondition Behavior-specification Behavior-redefinedBehavior Behavior-context.1 Behavior-behavioredClassifier Behavior-inputParameters Behavior-outputParameters Behavior CallEvent-operation CallEvent ChangeEvent-changeExpression ChangeEvent Event FunctionBehavior-hasAllDataTypeAttributes FunctionBehavior MessageEvent OpaqueBehavior-body OpaqueBehavior-language OpaqueBehavior SignalEvent-signal SignalEvent TimeEvent-isRelative TimeEvent-when TimeEvent Trigger-event Trigger-port Trigger A_event_trigger-trigger A_event_trigger A_port_trigger-trigger A_port_trigger A_when_timeEvent-timeEvent A_when_timeEvent A_signal_signalEvent-signalEvent A_signal_signalEvent A_changeExpression_changeEvent-changeEvent A_changeExpression_changeEvent A_operation_callEvent-callEvent A_operation_callEvent A_ownedParameterSet_behavior-behavior A_ownedParameterSet_behavior A_context_behavior-behavior A_context_behavior A_precondition_behavior-behavior A_precondition_behavior A_postcondition_behavior-behavior A_postcondition_behavior A_redefinedBehavior_behavior-behavior A_redefinedBehavior_behavior A_ownedParameter_behavior-behavior A_ownedParameter_behavior"/>
-      <eAnnotations xmi:id="_http2F2Fwww.eclipse.org2Fuml22F2.0.02FUML-_UML2FCommonStructure" source="UML/CommonStructure" references="Abstraction-mapping Abstraction Comment-annotatedElement Comment-body Comment Constraint-constrainedElement Constraint-context Constraint-specification Constraint Dependency-client Dependency-supplier Dependency DirectedRelationship-source DirectedRelationship-target DirectedRelationship Element-ownedComment Element-ownedElement Element-owner Element-allOwnedElements Element-mustBeOwned Element ElementImport-alias ElementImport-importedElement ElementImport-importingNamespace ElementImport-visibility ElementImport-getName ElementImport MultiplicityElement-isOrdered MultiplicityElement-isUnique MultiplicityElement-lower MultiplicityElement-lowerValue MultiplicityElement-upper MultiplicityElement-upperValue MultiplicityElement-compatibleWith MultiplicityElement-includesMultiplicity MultiplicityElement-is MultiplicityElement-isMultivalued MultiplicityElement-lower.1 MultiplicityElement-lowerBound MultiplicityElement-upper.1 MultiplicityElement-upperBound MultiplicityElement NamedElement-clientDependency NamedElement-name NamedElement-nameExpression NamedElement-namespace NamedElement-qualifiedName NamedElement-visibility NamedElement-allNamespaces NamedElement-allOwningPackages NamedElement-isDistinguishableFrom NamedElement-qualifiedName.1 NamedElement-separator NamedElement-clientDependency.1 NamedElement Namespace-elementImport Namespace-importedMember Namespace-member Namespace-ownedMember Namespace-ownedRule Namespace-packageImport Namespace-excludeCollisions Namespace-getNamesOfMember Namespace-importMembers Namespace-importedMember.1 Namespace-membersAreDistinguishable Namespace PackageableElement-visibility PackageableElement PackageImport-importedPackage PackageImport-importingNamespace PackageImport-visibility PackageImport ParameterableElement-owningTemplateParameter ParameterableElement-templateParameter ParameterableElement-isCompatibleWith ParameterableElement-isTemplateParameter ParameterableElement Realization Relationship-relatedElement Relationship TemplateableElement-ownedTemplateSignature TemplateableElement-templateBinding TemplateableElement-isTemplate TemplateableElement-parameterableElements TemplateableElement TemplateBinding-boundElement TemplateBinding-parameterSubstitution TemplateBinding-signature TemplateBinding TemplateParameter-default TemplateParameter-ownedDefault TemplateParameter-ownedParameteredElement TemplateParameter-parameteredElement TemplateParameter-signature TemplateParameter TemplateParameterSubstitution-actual TemplateParameterSubstitution-formal TemplateParameterSubstitution-ownedActual TemplateParameterSubstitution-templateBinding TemplateParameterSubstitution TemplateSignature-ownedParameter TemplateSignature-parameter TemplateSignature-template TemplateSignature Type-package Type-conformsTo Type TypedElement-type TypedElement Usage VisibilityKind A_type_typedElement-typedElement A_type_typedElement A_ownedParameter_signature A_parameter_templateSignature-templateSignature A_parameter_templateSignature A_actual_templateParameterSubstitution-templateParameterSubstitution A_actual_templateParameterSubstitution A_ownedActual_owningTemplateParameterSubstitution-owningTemplateParameterSubstitution A_ownedActual_owningTemplateParameterSubstitution A_formal_templateParameterSubstitution-templateParameterSubstitution A_formal_templateParameterSubstitution A_ownedDefault_templateParameter-templateParameter A_ownedDefault_templateParameter A_ownedParameteredElement_owningTemplateParameter A_default_templateParameter-templateParameter A_default_templateParameter A_parameteredElement_templateParameter A_signature_templateBinding-templateBinding A_signature_templateBinding A_parameterSubstitution_templateBinding A_templateBinding_boundElement A_ownedTemplateSignature_template A_relatedElement_relationship-relationship A_relatedElement_relationship A_importedPackage_packageImport-packageImport A_importedPackage_packageImport A_elementImport_importingNamespace A_ownedMember_namespace A_ownedRule_context A_packageImport_importingNamespace A_member_memberNamespace-memberNamespace A_member_memberNamespace A_importedMember_namespace-namespace A_importedMember_namespace A_nameExpression_namedElement-namedElement A_nameExpression_namedElement A_clientDependency_client A_lowerValue_owningLower-owningLower A_lowerValue_owningLower A_upperValue_owningUpper-owningUpper A_upperValue_owningUpper A_importedElement_import-import A_importedElement_import A_ownedElement_owner A_ownedComment_owningElement-owningElement A_ownedComment_owningElement A_source_directedRelationship-directedRelationship A_source_directedRelationship A_target_directedRelationship-directedRelationship A_target_directedRelationship A_supplier_supplierDependency-supplierDependency A_supplier_supplierDependency A_constrainedElement_constraint-constraint A_constrainedElement_constraint A_specification_owningConstraint-owningConstraint A_specification_owningConstraint A_annotatedElement_comment-comment A_annotatedElement_comment A_mapping_abstraction-abstraction A_mapping_abstraction"/>
-      <eAnnotations xmi:id="_http2F2Fwww.eclipse.org2Fuml22F2.0.02FUML-_UML2FDeployments" source="UML/Deployments" references="Artifact-fileName Artifact-manifestation Artifact-nestedArtifact Artifact-ownedAttribute Artifact-ownedOperation Artifact CommunicationPath DeployedArtifact Deployment-configuration Deployment-deployedArtifact Deployment-location Deployment DeploymentSpecification-deployment DeploymentSpecification-deploymentLocation DeploymentSpecification-executionLocation DeploymentSpecification DeploymentTarget-deployedElement DeploymentTarget-deployment DeploymentTarget-deployedElement.1 DeploymentTarget Device ExecutionEnvironment Manifestation-utilizedElement Manifestation Node-nestedNode Node A_nestedNode_node-node A_nestedNode_node A_utilizedElement_manifestation-manifestation A_utilizedElement_manifestation A_deployedElement_deploymentTarget-deploymentTarget A_deployedElement_deploymentTarget A_deployment_location A_deployedArtifact_deploymentForArtifact-deploymentForArtifact A_deployedArtifact_deploymentForArtifact A_configuration_deployment A_ownedAttribute_artifact-artifact A_ownedAttribute_artifact A_ownedOperation_artifact-artifact A_ownedOperation_artifact A_nestedArtifact_artifact-artifact A_nestedArtifact_artifact A_manifestation_artifact-artifact A_manifestation_artifact"/>
-      <eAnnotations xmi:id="_http2F2Fwww.eclipse.org2Fuml22F2.0.02FUML-_UML2FInformationFlows" source="UML/InformationFlows" references="InformationFlow-conveyed InformationFlow-informationSource InformationFlow-informationTarget InformationFlow-realization InformationFlow-realizingActivityEdge InformationFlow-realizingConnector InformationFlow-realizingMessage InformationFlow InformationItem-represented InformationItem A_represented_representation-representation A_represented_representation A_conveyed_conveyingFlow-conveyingFlow A_conveyed_conveyingFlow A_realizingActivityEdge_informationFlow-informationFlow A_realizingActivityEdge_informationFlow A_realizingMessage_informationFlow-informationFlow A_realizingMessage_informationFlow A_informationSource_informationFlow-informationFlow A_informationSource_informationFlow A_realization_abstraction_flow-abstraction A_realization_abstraction_flow A_realizingConnector_informationFlow-informationFlow A_realizingConnector_informationFlow A_informationTarget_informationFlow-informationFlow A_informationTarget_informationFlow"/>
-      <eAnnotations xmi:id="_http2F2Fwww.eclipse.org2Fuml22F2.0.02FUML-_UML2FInteractions" source="UML/Interactions" references="ActionExecutionSpecification-action ActionExecutionSpecification BehaviorExecutionSpecification-behavior BehaviorExecutionSpecification CombinedFragment-cfragmentGate CombinedFragment-interactionOperator CombinedFragment-operand CombinedFragment ConsiderIgnoreFragment-message ConsiderIgnoreFragment Continuation-setting Continuation DestructionOccurrenceSpecification ExecutionOccurrenceSpecification-execution ExecutionOccurrenceSpecification ExecutionSpecification-finish ExecutionSpecification-start ExecutionSpecification Gate-isOutsideCF Gate-isInsideCF Gate-isActual Gate-isFormal Gate-getName Gate-matches Gate-isDistinguishableFrom Gate-getOperand Gate GeneralOrdering-after GeneralOrdering-before GeneralOrdering Interaction-action Interaction-formalGate Interaction-fragment Interaction-lifeline Interaction-message Interaction InteractionConstraint-maxint InteractionConstraint-minint InteractionConstraint InteractionFragment-covered InteractionFragment-enclosingInteraction InteractionFragment-enclosingOperand InteractionFragment-generalOrdering InteractionFragment InteractionOperand-fragment InteractionOperand-guard InteractionOperand InteractionUse-actualGate InteractionUse-argument InteractionUse-refersTo InteractionUse-returnValue InteractionUse-returnValueRecipient InteractionUse Lifeline-coveredBy Lifeline-decomposedAs Lifeline-interaction Lifeline-represents Lifeline-selector Lifeline Message-argument Message-connector Message-interaction Message-messageKind Message-messageSort Message-receiveEvent Message-sendEvent Message-signature Message-messageKind.1 Message-isDistinguishableFrom Message MessageEnd-message MessageEnd-oppositeEnd MessageEnd-isSend MessageEnd-isReceive MessageEnd-enclosingFragment MessageEnd MessageOccurrenceSpecification OccurrenceSpecification-covered OccurrenceSpecification-toAfter OccurrenceSpecification-toBefore OccurrenceSpecification PartDecomposition StateInvariant-covered StateInvariant-invariant StateInvariant InteractionOperatorKind MessageKind MessageSort A_invariant_stateInvariant-stateInvariant A_invariant_stateInvariant A_covered_stateInvariant-stateInvariant A_covered_stateInvariant A_covered_events-events A_covered_events A_toBefore_after A_message_messageEnd-messageEnd A_message_messageEnd A_signature_message-message A_signature_message A_connector_message-message A_connector_message A_receiveEvent_endMessage-endMessage A_receiveEvent_endMessage A_sendEvent_endMessage-endMessage A_sendEvent_endMessage A_argument_message-message A_argument_message A_selector_lifeline-lifeline A_selector_lifeline A_decomposedAs_lifeline-lifeline A_decomposedAs_lifeline A_represents_lifeline-lifeline A_represents_lifeline A_returnValueRecipient_interactionUse-interactionUse A_returnValueRecipient_interactionUse A_refersTo_interactionUse-interactionUse A_refersTo_interactionUse A_returnValue_interactionUse-interactionUse A_returnValue_interactionUse A_argument_interactionUse-interactionUse A_argument_interactionUse A_actualGate_interactionUse-interactionUse A_actualGate_interactionUse A_fragment_enclosingOperand A_guard_interactionOperand-interactionOperand A_guard_interactionOperand A_generalOrdering_interactionFragment-interactionFragment A_generalOrdering_interactionFragment A_covered_coveredBy A_minint_interactionConstraint-interactionConstraint A_minint_interactionConstraint A_maxint_interactionConstraint-interactionConstraint A_maxint_interactionConstraint A_action_interaction-interaction A_action_interaction A_formalGate_interaction-interaction A_formalGate_interaction A_lifeline_interaction A_fragment_enclosingInteraction A_message_interaction A_before_toAfter A_finish_executionSpecification-executionSpecification A_finish_executionSpecification A_start_executionSpecification-executionSpecification A_start_executionSpecification A_execution_executionOccurrenceSpecification-executionOccurrenceSpecification A_execution_executionOccurrenceSpecification A_message_considerIgnoreFragment-considerIgnoreFragment A_message_considerIgnoreFragment A_cfragmentGate_combinedFragment-combinedFragment A_cfragmentGate_combinedFragment A_operand_combinedFragment-combinedFragment A_operand_combinedFragment A_behavior_behaviorExecutionSpecification-behaviorExecutionSpecification A_behavior_behaviorExecutionSpecification A_action_actionExecutionSpecification-actionExecutionSpecification A_action_actionExecutionSpecification"/>
-      <eAnnotations xmi:id="_http2F2Fwww.eclipse.org2Fuml22F2.0.02FUML-_UML2FPackages" source="UML/Packages" references="Extension-isRequired Extension-metaclass Extension-ownedEnd Extension-isRequired.1 Extension-metaclass.1 Extension-metaclassEnd Extension ExtensionEnd-lower ExtensionEnd-type ExtensionEnd-lowerBound ExtensionEnd Image-content Image-format Image-location Image Model-viewpoint Model Package-URI Package-nestedPackage Package-nestingPackage Package-ownedStereotype Package-ownedType Package-packageMerge Package-packagedElement Package-profileApplication Package-allApplicableStereotypes Package-containingProfile Package-makesVisible Package-mustBeOwned Package-nestedPackage.1 Package-ownedStereotype.1 Package-ownedType.1 Package-visibleMembers Package PackageMerge-mergedPackage PackageMerge-receivingPackage PackageMerge Profile-metaclassReference Profile-metamodelReference Profile ProfileApplication-appliedProfile ProfileApplication-applyingPackage ProfileApplication-isStrict ProfileApplication Stereotype-icon Stereotype-profile Stereotype-containingProfile Stereotype-profile.1 Stereotype A_profile_stereotype-stereotype A_profile_stereotype A_icon_stereotype-stereotype A_icon_stereotype A_appliedProfile_profileApplication-profileApplication A_appliedProfile_profileApplication A_metaclassReference_profile-profile A_metaclassReference_profile A_metamodelReference_profile-profile A_metamodelReference_profile A_mergedPackage_packageMerge-packageMerge A_mergedPackage_packageMerge A_packagedElement_owningPackage-owningPackage A_packagedElement_owningPackage A_packageMerge_receivingPackage A_nestedPackage_nestingPackage A_profileApplication_applyingPackage A_ownedType_package A_ownedStereotype_owningPackage-owningPackage A_ownedStereotype_owningPackage A_type_extensionEnd-extensionEnd A_type_extensionEnd A_ownedEnd_extension-extension A_ownedEnd_extension"/>
-      <eAnnotations xmi:id="_http2F2Fwww.eclipse.org2Fuml22F2.0.02FUML-_UML2FSimpleClassifiers" source="UML/SimpleClassifiers" references="BehavioredClassifier-classifierBehavior BehavioredClassifier-interfaceRealization BehavioredClassifier-ownedBehavior BehavioredClassifier DataType-ownedAttribute DataType-ownedOperation DataType Enumeration-ownedLiteral Enumeration EnumerationLiteral-classifier EnumerationLiteral-enumeration EnumerationLiteral-classifier.1 EnumerationLiteral Interface-nestedClassifier Interface-ownedAttribute Interface-ownedOperation Interface-ownedReception Interface-protocol Interface-redefinedInterface Interface InterfaceRealization-contract InterfaceRealization-implementingClassifier InterfaceRealization PrimitiveType Reception-signal Reception Signal-ownedAttribute Signal A_ownedAttribute_owningSignal-owningSignal A_ownedAttribute_owningSignal A_signal_reception-reception A_signal_reception A_contract_interfaceRealization-interfaceRealization A_contract_interfaceRealization A_protocol_interface-interface A_protocol_interface A_ownedReception_interface-interface A_ownedReception_interface A_redefinedInterface_interface-interface A_redefinedInterface_interface A_nestedClassifier_interface-interface A_nestedClassifier_interface A_ownedOperation_interface A_ownedAttribute_interface A_classifier_enumerationLiteral-enumerationLiteral A_classifier_enumerationLiteral A_ownedLiteral_enumeration A_ownedAttribute_datatype A_ownedOperation_datatype A_ownedBehavior_behavioredClassifier-behavioredClassifier A_ownedBehavior_behavioredClassifier A_classifierBehavior_behavioredClassifier-behavioredClassifier A_classifierBehavior_behavioredClassifier A_interfaceRealization_implementingClassifier"/>
-      <eAnnotations xmi:id="_http2F2Fwww.eclipse.org2Fuml22F2.0.02FUML-_UML2FStateMachines" source="UML/StateMachines" references="ConnectionPointReference-entry ConnectionPointReference-exit ConnectionPointReference-state ConnectionPointReference FinalState ProtocolConformance-generalMachine ProtocolConformance-specificMachine ProtocolConformance ProtocolStateMachine-conformance ProtocolStateMachine ProtocolTransition-postCondition ProtocolTransition-preCondition ProtocolTransition-referred ProtocolTransition-referred.1 ProtocolTransition Pseudostate-kind Pseudostate-state Pseudostate-stateMachine Pseudostate Region-extendedRegion Region-redefinitionContext Region-state Region-stateMachine Region-subvertex Region-transition Region-belongsToPSM Region-containingStateMachine Region-isConsistentWith Region-isRedefinitionContextValid Region-redefinitionContext.1 Region State-connection State-connectionPoint State-deferrableTrigger State-doActivity State-entry State-exit State-isComposite State-isOrthogonal State-isSimple State-isSubmachineState State-redefinedState State-redefinitionContext State-region State-stateInvariant State-submachine State-containingStateMachine State-isComposite.1 State-isConsistentWith State-isOrthogonal.1 State-isRedefinitionContextValid State-isSimple.1 State-isSubmachineState.1 State-redefinitionContext.1 State StateMachine-connectionPoint StateMachine-extendedStateMachine StateMachine-region StateMachine-submachineState StateMachine-LCA StateMachine-ancestor StateMachine-isConsistentWith StateMachine-isRedefinitionContextValid StateMachine-LCAState StateMachine Transition-container Transition-effect Transition-guard Transition-kind Transition-redefinedTransition Transition-redefinitionContext Transition-source Transition-target Transition-trigger Transition-containingStateMachine Transition-isConsistentWith Transition-redefinitionContext.1 Transition Vertex-container Vertex-incoming Vertex-outgoing Vertex-containingStateMachine Vertex-incoming.1 Vertex-outgoing.1 Vertex-isContainedInState Vertex-isContainedInRegion Vertex PseudostateKind TransitionKind A_incoming_target_vertex A_outgoing_source_vertex A_trigger_transition-transition A_trigger_transition A_guard_transition-transition A_guard_transition A_redefinedTransition_transition-transition A_redefinedTransition_transition A_redefinitionContext_transition-transition A_redefinitionContext_transition A_effect_transition-transition A_effect_transition A_submachineState_submachine A_connectionPoint_stateMachine A_region_stateMachine A_extendedStateMachine_stateMachine-stateMachine A_extendedStateMachine_stateMachine A_redefinitionContext_state-state A_redefinitionContext_state A_region_state A_stateInvariant_owningState-owningState A_stateInvariant_owningState A_redefinedState_state-state A_redefinedState_state A_deferrableTrigger_state-state A_deferrableTrigger_state A_connection_state A_entry_state-state A_entry_state A_connectionPoint_state A_doActivity_state-state A_doActivity_state A_exit_state-state A_exit_state A_extendedRegion_region-region A_extendedRegion_region A_subvertex_container A_redefinitionContext_region-region A_redefinitionContext_region A_transition_container A_referred_protocolTransition-protocolTransition A_referred_protocolTransition A_preCondition_protocolTransition-protocolTransition A_preCondition_protocolTransition A_postCondition_owningTransition-owningTransition A_postCondition_owningTransition A_conformance_specificMachine A_generalMachine_protocolConformance-protocolConformance A_generalMachine_protocolConformance A_entry_connectionPointReference-connectionPointReference A_entry_connectionPointReference A_exit_connectionPointReference-connectionPointReference A_exit_connectionPointReference"/>
-      <eAnnotations xmi:id="_http2F2Fwww.eclipse.org2Fuml22F2.0.02FUML-_UML2FStructuredClassifiers" source="UML/StructuredClassifiers" references="Association-endType Association-isDerived Association-memberEnd Association-navigableOwnedEnd Association-ownedEnd Association-endType.1 Association AssociationClass Class-extension Class-isAbstract Class-isActive Class-nestedClassifier Class-ownedAttribute Class-ownedOperation Class-ownedReception Class-superClass Class-extension.1 Class-superClass.1 Class Collaboration-collaborationRole Collaboration CollaborationUse-roleBinding CollaborationUse-type CollaborationUse Component-isIndirectlyInstantiated Component-packagedElement Component-provided Component-realization Component-required Component-provided.1 Component-required.1 Component ComponentRealization-abstraction ComponentRealization-realizingClassifier ComponentRealization ConnectableElement-end ConnectableElement-templateParameter ConnectableElement-end.1 ConnectableElement ConnectableElementTemplateParameter-parameteredElement ConnectableElementTemplateParameter Connector-contract Connector-end Connector-kind Connector-redefinedConnector Connector-type Connector-kind.1 Connector ConnectorEnd-definingEnd ConnectorEnd-partWithPort ConnectorEnd-role ConnectorEnd-definingEnd.1 ConnectorEnd EncapsulatedClassifier-ownedPort EncapsulatedClassifier-ownedPort.1 EncapsulatedClassifier Port-isBehavior Port-isConjugated Port-isService Port-protocol Port-provided Port-redefinedPort Port-required Port-provided.1 Port-required.1 Port-basicProvided Port-basicRequired Port StructuredClassifier-ownedAttribute StructuredClassifier-ownedConnector StructuredClassifier-part StructuredClassifier-role StructuredClassifier-part.1 StructuredClassifier-allRoles StructuredClassifier ConnectorKind A_part_structuredClassifier-structuredClassifier A_part_structuredClassifier A_ownedConnector_structuredClassifier-structuredClassifier A_ownedConnector_structuredClassifier A_ownedAttribute_structuredClassifier-structuredClassifier A_ownedAttribute_structuredClassifier A_role_structuredClassifier-structuredClassifier A_role_structuredClassifier A_protocol_port-port A_protocol_port A_required_port-port A_required_port A_redefinedPort_port-port A_redefinedPort_port A_provided_port-port A_provided_port A_ownedPort_encapsulatedClassifier-encapsulatedClassifier A_ownedPort_encapsulatedClassifier A_partWithPort_connectorEnd-connectorEnd A_partWithPort_connectorEnd A_definingEnd_connectorEnd-connectorEnd A_definingEnd_connectorEnd A_end_connector-connector A_end_connector A_redefinedConnector_connector-connector A_redefinedConnector_connector A_contract_connector-connector A_contract_connector A_type_connector-connector A_type_connector A_connectableElement_templateParameter_parameteredElement A_end_role A_realizingClassifier_componentRealization-componentRealization A_realizingClassifier_componentRealization A_required_component-component A_required_component A_packagedElement_component-component A_packagedElement_component A_realization_abstraction_component A_provided_component-component A_provided_component A_type_collaborationUse-collaborationUse A_type_collaborationUse A_roleBinding_collaborationUse-collaborationUse A_roleBinding_collaborationUse A_collaborationRole_collaboration-collaboration A_collaborationRole_collaboration A_ownedOperation_class A_superClass_class-class A_superClass_class A_extension_metaclass A_ownedAttribute_class A_nestedClassifier_nestingClass-nestingClass A_nestedClassifier_nestingClass A_ownedReception_class-class A_ownedReception_class A_memberEnd_association A_endType_association-association A_endType_association A_ownedEnd_owningAssociation A_navigableOwnedEnd_association-association A_navigableOwnedEnd_association"/>
-      <eAnnotations xmi:id="_http2F2Fwww.eclipse.org2Fuml22F2.0.02FUML-_UML2FUseCases" source="UML/UseCases" references="Actor Extend-condition Extend-extendedCase Extend-extension Extend-extensionLocation Extend ExtensionPoint-useCase ExtensionPoint Include-addition Include-includingCase Include UseCase-extend UseCase-extensionPoint UseCase-include UseCase-subject UseCase-allIncludedUseCases UseCase A_extensionPoint_useCase A_include_includingCase A_subject_useCase A_extend_extension A_addition_include-include A_addition_include A_extensionLocation_extension-extension A_extensionLocation_extension A_condition_extend-extend A_condition_extend A_extendedCase_extend-extend A_extendedCase_extend"/>
-      <eAnnotations xmi:id="_http2F2Fwww.eclipse.org2Fuml22F2.0.02FUML-_UML2FValues" source="UML/Values" references="Duration-expr Duration-observation Duration DurationConstraint-firstEvent DurationConstraint-specification DurationConstraint DurationInterval-max DurationInterval-min DurationInterval DurationObservation-event DurationObservation-firstEvent DurationObservation Expression-operand Expression-symbol Expression Interval-max Interval-min Interval IntervalConstraint-specification IntervalConstraint LiteralBoolean-value LiteralBoolean-booleanValue LiteralBoolean-isComputable LiteralBoolean LiteralInteger-value LiteralInteger-integerValue LiteralInteger-isComputable LiteralInteger LiteralNull-isComputable LiteralNull-isNull LiteralNull LiteralReal-value LiteralReal-isComputable LiteralReal-realValue LiteralReal LiteralSpecification LiteralString-value LiteralString-isComputable LiteralString-stringValue LiteralString LiteralUnlimitedNatural-value LiteralUnlimitedNatural-isComputable LiteralUnlimitedNatural-unlimitedValue LiteralUnlimitedNatural Observation OpaqueExpression-behavior OpaqueExpression-body OpaqueExpression-language OpaqueExpression-result OpaqueExpression-isIntegral OpaqueExpression-isNonNegative OpaqueExpression-isPositive OpaqueExpression-result.1 OpaqueExpression-value OpaqueExpression StringExpression-owningExpression StringExpression-subExpression StringExpression-stringValue StringExpression TimeConstraint-firstEvent TimeConstraint-specification TimeConstraint TimeExpression-expr TimeExpression-observation TimeExpression TimeInterval-max TimeInterval-min TimeInterval TimeObservation-event TimeObservation-firstEvent TimeObservation ValueSpecification-booleanValue ValueSpecification-integerValue ValueSpecification-isCompatibleWith ValueSpecification-isComputable ValueSpecification-isNull ValueSpecification-realValue ValueSpecification-stringValue ValueSpecification-unlimitedValue ValueSpecification A_event_timeObservation-timeObservation A_event_timeObservation A_max_timeInterval-timeInterval A_max_timeInterval A_min_timeInterval-timeInterval A_min_timeInterval A_expr_timeExpression-timeExpression A_expr_timeExpression A_observation_timeExpression-timeExpression A_observation_timeExpression A_specification_timeConstraint-timeConstraint A_specification_timeConstraint A_subExpression_owningExpression A_result_opaqueExpression-opaqueExpression A_result_opaqueExpression A_behavior_opaqueExpression-opaqueExpression A_behavior_opaqueExpression A_specification_intervalConstraint-intervalConstraint A_specification_intervalConstraint A_max_interval-interval A_max_interval A_min_interval-interval A_min_interval A_operand_expression-expression A_operand_expression A_event_durationObservation-durationObservation A_event_durationObservation A_max_durationInterval-durationInterval A_max_durationInterval A_min_durationInterval-durationInterval A_min_durationInterval A_specification_durationConstraint-durationConstraint A_specification_durationConstraint A_expr_duration-duration A_expr_duration A_observation_duration-duration A_observation_duration"/>
-    </eAnnotations>
-    <packageImport xmi:id="_packageImport.0">
-      <importedPackage xmi:type="uml:Model" href="Ecore.metamodel.uml#_0"/>
-    </packageImport>
-    <packageImport xmi:id="_packageImport.1">
-      <importedPackage xmi:type="uml:Model" href="../libraries/UMLPrimitiveTypes.library.uml#_0"/>
-    </packageImport>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_client_clientDependency" name="A_client_clientDependency" visibility="private" memberEnd="A_client_clientDependency-client NamedElement-clientDependency">
-      <ownedEnd xmi:id="A_client_clientDependency-client" name="client" visibility="private" type="NamedElement" association="A_client_clientDependency">
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_client_clientDependency-client-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_role_end" name="A_role_end" visibility="private" memberEnd="A_role_end-role ConnectableElement-end">
-      <ownedEnd xmi:id="A_role_end-role" name="role" visibility="private" type="ConnectableElement" association="A_role_end"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_target_vertex_incoming" name="A_target_vertex_incoming" visibility="private" memberEnd="A_target_vertex_incoming-target Vertex-incoming">
-      <ownedEnd xmi:id="A_target_vertex_incoming-target" name="target" visibility="private" type="Vertex" association="A_target_vertex_incoming"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_source_vertex_outgoing" name="A_source_vertex_outgoing" visibility="private" memberEnd="A_source_vertex_outgoing-source Vertex-outgoing">
-      <ownedEnd xmi:id="A_source_vertex_outgoing-source" name="source" visibility="private" type="Vertex" association="A_source_vertex_outgoing"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_activity_structuredNode" name="A_activity_structuredNode" visibility="private" memberEnd="StructuredActivityNode-activity A_activity_structuredNode-structuredNode">
-      <ownedEnd xmi:id="A_activity_structuredNode-structuredNode" name="structuredNode" visibility="private" type="StructuredActivityNode" association="A_activity_structuredNode">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_activity_structuredNode-structuredNode-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_activity_structuredNode-structuredNode-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Interface" xmi:id="ActivityContent" name="ActivityContent" visibility="private" isAbstract="true">
-      <ownedOperation xmi:id="ActivityContent-containingActivity" name="containingActivity">
-        <ownedParameter xmi:id="ActivityContent-containingActivity-containingActivity" name="containingActivity" type="Activity" direction="return" effect="read">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityContent-containingActivity-containingActivity-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ValueSpecificationAction" name="ValueSpecificationAction">
-      <ownedComment xmi:id="ValueSpecificationAction-_ownedComment.0" annotatedElement="ValueSpecificationAction">
-        <body>A ValueSpecificationAction is an Action that evaluates a ValueSpecification and provides a result.</body>
-      </ownedComment>
-      <ownedRule xmi:id="ValueSpecificationAction-multiplicity" name="multiplicity" constrainedElement="ValueSpecificationAction">
-        <ownedComment xmi:id="ValueSpecificationAction-multiplicity-_ownedComment.0" annotatedElement="ValueSpecificationAction-multiplicity">
-          <body>The multiplicity of the result OutputPin is 1..1</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ValueSpecificationAction-multiplicity-_specification">
-          <language>OCL</language>
-          <body>result.is(1,1)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ValueSpecificationAction-compatible_type" name="compatible_type" constrainedElement="ValueSpecificationAction">
-        <ownedComment xmi:id="ValueSpecificationAction-compatible_type-_ownedComment.0" annotatedElement="ValueSpecificationAction-compatible_type">
-          <body>The type of the value ValueSpecification must conform to the type of the result OutputPin.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ValueSpecificationAction-compatible_type-_specification">
-          <language>OCL</language>
-          <body>value.type.conformsTo(result.type)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="ValueSpecificationAction-_generalization.0" general="Action"/>
-      <ownedAttribute xmi:id="ValueSpecificationAction-result" name="result" type="OutputPin" aggregation="composite" subsettedProperty="Action-output" association="A_result_valueSpecificationAction">
-        <ownedComment xmi:id="ValueSpecificationAction-result-_ownedComment.0" annotatedElement="ValueSpecificationAction-result">
-          <body>The OutputPin on which the result value is placed.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ValueSpecificationAction-value" name="value" type="ValueSpecification" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_value_valueSpecificationAction">
-        <ownedComment xmi:id="ValueSpecificationAction-value-_ownedComment.0" annotatedElement="ValueSpecificationAction-value">
-          <body>The ValueSpecification to be evaluated.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="VariableAction" name="VariableAction" isAbstract="true">
-      <ownedComment xmi:id="VariableAction-_ownedComment.0" annotatedElement="VariableAction">
-        <body>VariableAction is an abstract class for Actions that operate on a specified Variable.</body>
-      </ownedComment>
-      <ownedRule xmi:id="VariableAction-scope_of_variable" name="scope_of_variable" constrainedElement="VariableAction">
-        <ownedComment xmi:id="VariableAction-scope_of_variable-_ownedComment.0" annotatedElement="VariableAction-scope_of_variable">
-          <body>The VariableAction must be in the scope of the variable.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="VariableAction-scope_of_variable-_specification">
-          <language>OCL</language>
-          <body>variable.isAccessibleBy(self)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="VariableAction-_generalization.0" general="Action"/>
-      <ownedAttribute xmi:id="VariableAction-variable" name="variable" type="Variable" association="A_variable_variableAction">
-        <ownedComment xmi:id="VariableAction-variable-_ownedComment.0" annotatedElement="VariableAction-variable">
-          <body>The Variable to be read or written.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="WriteLinkAction" name="WriteLinkAction" isAbstract="true">
-      <ownedComment xmi:id="WriteLinkAction-_ownedComment.0" annotatedElement="WriteLinkAction">
-        <body>WriteLinkAction is an abstract class for LinkActions that create and destroy links.</body>
-      </ownedComment>
-      <ownedRule xmi:id="WriteLinkAction-allow_access" name="allow_access" constrainedElement="WriteLinkAction">
-        <ownedComment xmi:id="WriteLinkAction-allow_access-_ownedComment.0" annotatedElement="WriteLinkAction-allow_access">
-          <body>The visibility of at least one end must allow access from the context Classifier of the WriteLinkAction.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="WriteLinkAction-allow_access-_specification">
-          <language>OCL</language>
-          <body>endData.end->exists(end |&#xD;
-  end.type=_'context' or&#xD;
-  end.visibility=VisibilityKind::public or &#xD;
-  end.visibility=VisibilityKind::protected and&#xD;
-  endData.end->exists(other | &#xD;
-    other&lt;>end and _'context'.conformsTo(other.type.oclAsType(Classifier))))</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="WriteLinkAction-_generalization.0" general="LinkAction"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="WriteStructuralFeatureAction" name="WriteStructuralFeatureAction" isAbstract="true">
-      <ownedComment xmi:id="WriteStructuralFeatureAction-_ownedComment.0" annotatedElement="WriteStructuralFeatureAction">
-        <body>WriteStructuralFeatureAction is an abstract class for StructuralFeatureActions that change StructuralFeature values.</body>
-      </ownedComment>
-      <ownedRule xmi:id="WriteStructuralFeatureAction-multiplicity_of_result" name="multiplicity_of_result" constrainedElement="WriteStructuralFeatureAction">
-        <ownedComment xmi:id="WriteStructuralFeatureAction-multiplicity_of_result-_ownedComment.0" annotatedElement="WriteStructuralFeatureAction-multiplicity_of_result">
-          <body>The multiplicity of the result OutputPin must be 1..1.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="WriteStructuralFeatureAction-multiplicity_of_result-_specification">
-          <language>OCL</language>
-          <body>result &lt;> null implies result.is(1,1)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="WriteStructuralFeatureAction-type_of_value" name="type_of_value" constrainedElement="WriteStructuralFeatureAction">
-        <ownedComment xmi:id="WriteStructuralFeatureAction-type_of_value-_ownedComment.0" annotatedElement="WriteStructuralFeatureAction-type_of_value">
-          <body>The type of the value InputPin must conform to the type of the structuralFeature.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="WriteStructuralFeatureAction-type_of_value-_specification">
-          <language>OCL</language>
-          <body>value &lt;> null implies value.type.conformsTo(structuralFeature.type)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="WriteStructuralFeatureAction-multiplicity_of_value" name="multiplicity_of_value" constrainedElement="WriteStructuralFeatureAction">
-        <ownedComment xmi:id="WriteStructuralFeatureAction-multiplicity_of_value-_ownedComment.0" annotatedElement="WriteStructuralFeatureAction-multiplicity_of_value">
-          <body>The multiplicity of the value InputPin is 1..1.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="WriteStructuralFeatureAction-multiplicity_of_value-_specification">
-          <language>OCL</language>
-          <body>value&lt;>null implies value.is(1,1)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="WriteStructuralFeatureAction-type_of_result" name="type_of_result" constrainedElement="WriteStructuralFeatureAction">
-        <ownedComment xmi:id="WriteStructuralFeatureAction-type_of_result-_ownedComment.0" annotatedElement="WriteStructuralFeatureAction-type_of_result">
-          <body>The type of the result OutputPin is the same as the type of the inherited object InputPin.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="WriteStructuralFeatureAction-type_of_result-_specification">
-          <language>OCL</language>
-          <body>result &lt;> null implies result.type = object.type</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="WriteStructuralFeatureAction-_generalization.0" general="StructuralFeatureAction"/>
-      <ownedAttribute xmi:id="WriteStructuralFeatureAction-result" name="result" type="OutputPin" aggregation="composite" subsettedProperty="Action-output" association="A_result_writeStructuralFeatureAction">
-        <ownedComment xmi:id="WriteStructuralFeatureAction-result-_ownedComment.0" annotatedElement="WriteStructuralFeatureAction-result">
-          <body>The OutputPin on which is put the input object as modified by the WriteStructuralFeatureAction.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="WriteStructuralFeatureAction-result-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="WriteStructuralFeatureAction-value" name="value" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_value_writeStructuralFeatureAction">
-        <ownedComment xmi:id="WriteStructuralFeatureAction-value-_ownedComment.0" annotatedElement="WriteStructuralFeatureAction-value">
-          <body>The InputPin that provides the value to be added or removed from the StructuralFeature.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="WriteStructuralFeatureAction-value-_lowerValue"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="WriteVariableAction" name="WriteVariableAction" isAbstract="true">
-      <ownedComment xmi:id="WriteVariableAction-_ownedComment.0" annotatedElement="WriteVariableAction">
-        <body>WriteVariableAction is an abstract class for VariableActions that change Variable values.</body>
-      </ownedComment>
-      <ownedRule xmi:id="WriteVariableAction-value_type" name="value_type" constrainedElement="WriteVariableAction">
-        <ownedComment xmi:id="WriteVariableAction-value_type-_ownedComment.0" annotatedElement="WriteVariableAction-value_type">
-          <body>The type of the value InputPin must conform to the type of the variable.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="WriteVariableAction-value_type-_specification">
-          <language>OCL</language>
-          <body>value &lt;> null implies value.type.conformsTo(variable.type)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="WriteVariableAction-multiplicity" name="multiplicity" constrainedElement="WriteVariableAction">
-        <ownedComment xmi:id="WriteVariableAction-multiplicity-_ownedComment.0" annotatedElement="WriteVariableAction-multiplicity">
-          <body>The multiplicity of the value InputPin is 1..1.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="WriteVariableAction-multiplicity-_specification">
-          <language>OCL</language>
-          <body>value&lt;>null implies value.is(1,1)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="WriteVariableAction-_generalization.0" general="VariableAction"/>
-      <ownedAttribute xmi:id="WriteVariableAction-value" name="value" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_value_writeVariableAction">
-        <ownedComment xmi:id="WriteVariableAction-value-_ownedComment.0" annotatedElement="WriteVariableAction-value">
-          <body>The InputPin that gives the value to be added or removed from the Variable.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="WriteVariableAction-value-_lowerValue"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Enumeration" xmi:id="ExpansionKind" name="ExpansionKind">
-      <ownedComment xmi:id="ExpansionKind-_ownedComment.0" annotatedElement="ExpansionKind">
-        <body>ExpansionKind is an enumeration type used to specify how an ExpansionRegion executes its contents.</body>
-      </ownedComment>
-      <ownedLiteral xmi:id="ExpansionKind-parallel" name="parallel">
-        <ownedComment xmi:id="ExpansionKind-parallel-_ownedComment.0" annotatedElement="ExpansionKind-parallel">
-          <body>The content of the ExpansionRegion is executed concurrently for the elements of the input collections.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="ExpansionKind-iterative" name="iterative">
-        <ownedComment xmi:id="ExpansionKind-iterative-_ownedComment.0" annotatedElement="ExpansionKind-iterative">
-          <body>The content of the ExpansionRegion is executed iteratively for the elements of the input collections, in the order of the input elements, if the collections are ordered.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="ExpansionKind-stream" name="stream">
-        <ownedComment xmi:id="ExpansionKind-stream-_ownedComment.0" annotatedElement="ExpansionKind-stream">
-          <body>A stream of input collection elements flows into a single execution of the content of the ExpansionRegion, in the order of the collection elements if the input collections are ordered.</body>
-        </ownedComment>
-      </ownedLiteral>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="AcceptCallAction" name="AcceptCallAction">
-      <ownedComment xmi:id="AcceptCallAction-_ownedComment.0" annotatedElement="AcceptCallAction">
-        <body>An AcceptCallAction is an AcceptEventAction that handles the receipt of a synchronous call request. In addition to the values from the Operation input parameters, the Action produces an output that is needed later to supply the information to the ReplyAction necessary to return control to the caller. An AcceptCallAction is for synchronous calls. If it is used to handle an asynchronous call, execution of the subsequent ReplyAction will complete immediately with no effect.</body>
-      </ownedComment>
-      <ownedRule xmi:id="AcceptCallAction-result_pins" name="result_pins" constrainedElement="AcceptCallAction">
-        <ownedComment xmi:id="AcceptCallAction-result_pins-_ownedComment.0" annotatedElement="AcceptCallAction-result_pins">
-          <body>The number of result OutputPins must be the same as the number of input (in and inout) ownedParameters of the Operation specified by the trigger Event. The type, ordering and multiplicity of each result OutputPin must be consistent with the corresponding input Parameter.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="AcceptCallAction-result_pins-_specification">
-          <language>OCL</language>
-          <body>let parameter: OrderedSet(Parameter) = trigger.event->asSequence()->first().oclAsType(CallEvent).operation.inputParameters() in&#xD;
-result->size() = parameter->size() and&#xD;
-Sequence{1..result->size()}->forAll(i | &#xD;
-	parameter->at(i).type.conformsTo(result->at(i).type) and &#xD;
-	parameter->at(i).isOrdered = result->at(i).isOrdered and&#xD;
-	parameter->at(i).compatibleWith(result->at(i)))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="AcceptCallAction-trigger_call_event" name="trigger_call_event" constrainedElement="AcceptCallAction">
-        <ownedComment xmi:id="AcceptCallAction-trigger_call_event-_ownedComment.0" annotatedElement="AcceptCallAction-trigger_call_event">
-          <body>The action must have exactly one trigger, which must be for a CallEvent.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="AcceptCallAction-trigger_call_event-_specification">
-          <language>OCL</language>
-          <body>trigger->size()=1 and&#xD;
-trigger->asSequence()->first().event.oclIsKindOf(CallEvent)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="AcceptCallAction-unmarshall" name="unmarshall" constrainedElement="AcceptCallAction">
-        <ownedComment xmi:id="AcceptCallAction-unmarshall-_ownedComment.0" annotatedElement="AcceptCallAction-unmarshall">
-          <body>isUnmrashall must be true for an AcceptCallAction.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="AcceptCallAction-unmarshall-_specification">
-          <language>OCL</language>
-          <body>isUnmarshall = true</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="AcceptCallAction-_generalization.0" general="AcceptEventAction"/>
-      <ownedAttribute xmi:id="AcceptCallAction-returnInformation" name="returnInformation" type="OutputPin" aggregation="composite" subsettedProperty="Action-output" association="A_returnInformation_acceptCallAction">
-        <ownedComment xmi:id="AcceptCallAction-returnInformation-_ownedComment.0" annotatedElement="AcceptCallAction-returnInformation">
-          <body>An OutputPin where a value is placed containing sufficient information to perform a subsequent ReplyAction and return control to the caller. The contents of this value are opaque. It can be passed and copied but it cannot be manipulated by the model.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="AcceptEventAction" name="AcceptEventAction">
-      <ownedComment xmi:id="AcceptEventAction-_ownedComment.0" annotatedElement="AcceptEventAction">
-        <body>An AcceptEventAction is an Action that waits for the occurrence of one or more specific Events.</body>
-      </ownedComment>
-      <ownedRule xmi:id="AcceptEventAction-one_output_pin" name="one_output_pin" constrainedElement="AcceptEventAction">
-        <ownedComment xmi:id="AcceptEventAction-one_output_pin-_ownedComment.0" annotatedElement="AcceptEventAction-one_output_pin">
-          <body>If isUnmarshall=false and any of the triggers are for SignalEvents or TimeEvents, there must be exactly one result OutputPin with multiplicity 1..1.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="AcceptEventAction-one_output_pin-_specification">
-          <language>OCL</language>
-          <body>not isUnmarshall and trigger->exists(event.oclIsKindOf(SignalEvent) or event.oclIsKindOf(TimeEvent)) implies &#xD;
-	output->size() = 1 and output->first().is(1,1)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="AcceptEventAction-no_input_pins" name="no_input_pins" constrainedElement="AcceptEventAction">
-        <ownedComment xmi:id="AcceptEventAction-no_input_pins-_ownedComment.0" annotatedElement="AcceptEventAction-no_input_pins">
-          <body>AcceptEventActions may have no input pins.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="AcceptEventAction-no_input_pins-_specification">
-          <language>OCL</language>
-          <body>input->size() = 0</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="AcceptEventAction-no_output_pins" name="no_output_pins" constrainedElement="AcceptEventAction">
-        <ownedComment xmi:id="AcceptEventAction-no_output_pins-_ownedComment.0" annotatedElement="AcceptEventAction-no_output_pins">
-          <body>There are no OutputPins if the trigger events are only ChangeEvents and/or CallEvents when this action is an instance of AcceptEventAction and not an instance of a descendant of AcceptEventAction (such as AcceptCallAction).</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="AcceptEventAction-no_output_pins-_specification">
-          <language>OCL</language>
-          <body>(self.oclIsTypeOf(AcceptEventAction) and&#xD;
-   (trigger->forAll(event.oclIsKindOf(ChangeEvent) or  &#xD;
-                             event.oclIsKindOf(CallEvent))))&#xD;
-implies output->size() = 0</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="AcceptEventAction-unmarshall_signal_events" name="unmarshall_signal_events" constrainedElement="AcceptEventAction">
-        <ownedComment xmi:id="AcceptEventAction-unmarshall_signal_events-_ownedComment.0" annotatedElement="AcceptEventAction-unmarshall_signal_events">
-          <body>If isUnmarshall is true (and this is not an AcceptCallAction), there must be exactly one trigger, which is for a SignalEvent. The number of result output pins must be the same as the number of attributes of the signal. The type and ordering of each result output pin must be the same as the corresponding attribute of the signal. The multiplicity of each result output pin must be compatible with the multiplicity of the corresponding attribute.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="AcceptEventAction-unmarshall_signal_events-_specification">
-          <language>OCL</language>
-          <body>isUnmarshall and self.oclIsTypeOf(AcceptEventAction) implies&#xD;
-	trigger->size()=1 and&#xD;
-	trigger->asSequence()->first().event.oclIsKindOf(SignalEvent) and&#xD;
-	let attribute: OrderedSet(Property) = trigger->asSequence()->first().event.oclAsType(SignalEvent).signal.allAttributes() in&#xD;
-	attribute->size()>0 and result->size() = attribute->size() and&#xD;
-	Sequence{1..result->size()}->forAll(i | &#xD;
-		result->at(i).type = attribute->at(i).type and &#xD;
-		result->at(i).isOrdered = attribute->at(i).isOrdered and&#xD;
-		result->at(i).includesMultiplicity(attribute->at(i)))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="AcceptEventAction-conforming_type" name="conforming_type" constrainedElement="AcceptEventAction">
-        <ownedComment xmi:id="AcceptEventAction-conforming_type-_ownedComment.0" annotatedElement="AcceptEventAction-conforming_type">
-          <body>If isUnmarshall=false and all the triggers are for SignalEvents, then the type of the single result OutputPin must either be null or all the signals must conform to it.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="AcceptEventAction-conforming_type-_specification">
-          <language>OCL</language>
-          <body>not isUnmarshall implies &#xD;
-	result->isEmpty() or&#xD;
-	let type: Type = result->first().type in&#xD;
-	type=null or &#xD;
-		(trigger->forAll(event.oclIsKindOf(SignalEvent)) and &#xD;
-		 trigger.event.oclAsType(SignalEvent).signal->forAll(s | s.conformsTo(type)))</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="AcceptEventAction-_generalization.0" general="Action"/>
-      <ownedAttribute xmi:id="AcceptEventAction-isUnmarshall" name="isUnmarshall">
-        <ownedComment xmi:id="AcceptEventAction-isUnmarshall-_ownedComment.0" annotatedElement="AcceptEventAction-isUnmarshall">
-          <body>Indicates whether there is a single OutputPin for a SignalEvent occurrence, or multiple OutputPins for attribute values of the instance of the Signal associated with a SignalEvent occurrence.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="AcceptEventAction-isUnmarshall-_defaultValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="AcceptEventAction-result" name="result" type="OutputPin" isOrdered="true" aggregation="composite" subsettedProperty="Action-output" association="A_result_acceptEventAction">
-        <ownedComment xmi:id="AcceptEventAction-result-_ownedComment.0" annotatedElement="AcceptEventAction-result">
-          <body>OutputPins holding the values received from an Event occurrence.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="AcceptEventAction-result-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="AcceptEventAction-result-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="AcceptEventAction-trigger" name="trigger" type="Trigger" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_trigger_acceptEventAction">
-        <ownedComment xmi:id="AcceptEventAction-trigger-_ownedComment.0" annotatedElement="AcceptEventAction-trigger">
-          <body>The Triggers specifying the Events of which the AcceptEventAction waits for occurrences.</body>
-        </ownedComment>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="AcceptEventAction-trigger-_upperValue" value="*"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Action" name="Action" isAbstract="true">
-      <ownedComment xmi:id="Action-_ownedComment.0" annotatedElement="Action">
-        <body>An Action is the fundamental unit of executable functionality. The execution of an Action represents some transformation or processing in the modeled system. Actions provide the ExecutableNodes within Activities and may also be used within Interactions.</body>
-      </ownedComment>
-      <generalization xmi:id="Action-_generalization.0" general="ExecutableNode"/>
-      <ownedAttribute xmi:id="Action-context" name="context" type="Classifier" isReadOnly="true" isDerived="true" association="A_context_action">
-        <ownedComment xmi:id="Action-context-_ownedComment.0" annotatedElement="Action-context">
-          <body>The context Classifier of the Behavior that contains this Action, or the Behavior itself if it has no context.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Action-context-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Action-input" name="input" type="InputPin" isOrdered="true" isReadOnly="true" aggregation="composite" isDerived="true" isDerivedUnion="true" subsettedProperty="Element-ownedElement" association="A_input_action">
-        <ownedComment xmi:id="Action-input-_ownedComment.0" annotatedElement="Action-input">
-          <body>The ordered set of InputPins representing the inputs to the Action.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Action-input-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Action-input-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Action-isLocallyReentrant" name="isLocallyReentrant">
-        <ownedComment xmi:id="Action-isLocallyReentrant-_ownedComment.0" annotatedElement="Action-isLocallyReentrant">
-          <body>If true, the Action can begin a new, concurrent execution, even if there is already another execution of the Action ongoing. If false, the Action cannot begin a new execution until any previous execution has completed.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Action-isLocallyReentrant-_defaultValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Action-localPostcondition" name="localPostcondition" type="Constraint" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_localPostcondition_action">
-        <ownedComment xmi:id="Action-localPostcondition-_ownedComment.0" annotatedElement="Action-localPostcondition">
-          <body>A Constraint that must be satisfied when execution of the Action is completed.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Action-localPostcondition-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Action-localPostcondition-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Action-localPrecondition" name="localPrecondition" type="Constraint" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_localPrecondition_action">
-        <ownedComment xmi:id="Action-localPrecondition-_ownedComment.0" annotatedElement="Action-localPrecondition">
-          <body>A Constraint that must be satisfied when execution of the Action is started.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Action-localPrecondition-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Action-localPrecondition-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Action-output" name="output" type="OutputPin" isOrdered="true" isReadOnly="true" aggregation="composite" isDerived="true" isDerivedUnion="true" subsettedProperty="Element-ownedElement" association="A_output_action">
-        <ownedComment xmi:id="Action-output-_ownedComment.0" annotatedElement="Action-output">
-          <body>The ordered set of OutputPins representing outputs from the Action.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Action-output-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Action-output-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="Action-context.1" name="context" visibility="protected" bodyCondition="Action-context.1-spec" isQuery="true">
-        <ownedComment xmi:id="Action-context.1-_ownedComment.0" annotatedElement="Action-context.1">
-          <body>The derivation for the context property.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Action-context.1-spec" name="spec" constrainedElement="Action-context.1 Action-context">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Action-context.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (let behavior: Behavior = self.containingBehavior() in&#xD;
-if behavior=null then null&#xD;
-else if behavior._'context' = null then behavior&#xD;
-else behavior._'context'&#xD;
-endif&#xD;
-endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Action-context.1-result" name="result" type="Classifier" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Action-context.1-result-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Action-allActions" name="allActions" bodyCondition="Action-allActions-spec" isQuery="true">
-        <ownedComment xmi:id="Action-allActions-_ownedComment.0" annotatedElement="Action-allActions">
-          <body>Return this Action and all Actions contained directly or indirectly in it. By default only the Action itself is returned, but the operation is overridden for StructuredActivityNodes.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Action-allActions-spec" name="spec" constrainedElement="Action-allActions">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Action-allActions-spec-_specification">
-            <language>OCL</language>
-            <body>result = (self->asSet())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Action-allActions-result" name="result" type="Action" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Action-allActions-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Action-allActions-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Action-allOwnedNodes" name="allOwnedNodes" bodyCondition="Action-allOwnedNodes-spec" isQuery="true">
-        <ownedComment xmi:id="Action-allOwnedNodes-_ownedComment.0" annotatedElement="Action-allOwnedNodes">
-          <body>Returns all the ActivityNodes directly or indirectly owned by this Action. This includes at least all the Pins of the Action.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Action-allOwnedNodes-spec" name="spec" constrainedElement="Action-allOwnedNodes">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Action-allOwnedNodes-spec-_specification">
-            <language>OCL</language>
-            <body>result = (input.oclAsType(Pin)->asSet()->union(output->asSet()))</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Action-allOwnedNodes-result" name="result" type="ActivityNode" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Action-allOwnedNodes-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Action-allOwnedNodes-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Action-containingBehavior" name="containingBehavior" bodyCondition="Action-containingBehavior-spec" isQuery="true">
-        <ownedRule xmi:id="Action-containingBehavior-spec" name="spec" constrainedElement="Action-containingBehavior">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Action-containingBehavior-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if inStructuredNode&lt;>null then inStructuredNode.containingBehavior() &#xD;
-else if activity&lt;>null then activity&#xD;
-else interaction &#xD;
-endif&#xD;
-endif&#xD;
-)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Action-containingBehavior-result" name="result" type="Behavior" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Action-containingBehavior-result-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ActionInputPin" name="ActionInputPin">
-      <ownedComment xmi:id="ActionInputPin-_ownedComment.0" annotatedElement="ActionInputPin">
-        <body>An ActionInputPin is a kind of InputPin that executes an Action to determine the values to input to another Action.</body>
-      </ownedComment>
-      <ownedRule xmi:id="ActionInputPin-input_pin" name="input_pin" constrainedElement="ActionInputPin">
-        <ownedComment xmi:id="ActionInputPin-input_pin-_ownedComment.0" annotatedElement="ActionInputPin-input_pin">
-          <body>The fromAction of an ActionInputPin must only have ActionInputPins as InputPins.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ActionInputPin-input_pin-_specification">
-          <language>OCL</language>
-          <body>fromAction.input->forAll(oclIsKindOf(ActionInputPin))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ActionInputPin-one_output_pin" name="one_output_pin" constrainedElement="ActionInputPin">
-        <ownedComment xmi:id="ActionInputPin-one_output_pin-_ownedComment.0" annotatedElement="ActionInputPin-one_output_pin">
-          <body>The fromAction of an ActionInputPin must have exactly one OutputPin.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ActionInputPin-one_output_pin-_specification">
-          <language>OCL</language>
-          <body>fromAction.output->size() = 1</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ActionInputPin-no_control_or_object_flow" name="no_control_or_object_flow" constrainedElement="ActionInputPin">
-        <ownedComment xmi:id="ActionInputPin-no_control_or_object_flow-_ownedComment.0" annotatedElement="ActionInputPin-no_control_or_object_flow">
-          <body>The fromAction of an ActionInputPin cannot have ActivityEdges coming into or out of it or its Pins.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ActionInputPin-no_control_or_object_flow-_specification">
-          <language>OCL</language>
-          <body>fromAction.incoming->union(outgoing)->isEmpty() and&#xD;
-fromAction.input.incoming->isEmpty() and&#xD;
-fromAction.output.outgoing->isEmpty()</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="ActionInputPin-_generalization.0" general="InputPin"/>
-      <ownedAttribute xmi:id="ActionInputPin-fromAction" name="fromAction" type="Action" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_fromAction_actionInputPin">
-        <ownedComment xmi:id="ActionInputPin-fromAction-_ownedComment.0" annotatedElement="ActionInputPin-fromAction">
-          <body>The Action used to provide the values of the ActionInputPin.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="AddStructuralFeatureValueAction" name="AddStructuralFeatureValueAction">
-      <ownedComment xmi:id="AddStructuralFeatureValueAction-_ownedComment.0" annotatedElement="AddStructuralFeatureValueAction">
-        <body>An AddStructuralFeatureValueAction is a WriteStructuralFeatureAction for adding values to a StructuralFeature.</body>
-      </ownedComment>
-      <ownedRule xmi:id="AddStructuralFeatureValueAction-required_value" name="required_value" constrainedElement="AddStructuralFeatureValueAction">
-        <ownedComment xmi:id="AddStructuralFeatureValueAction-required_value-_ownedComment.0" annotatedElement="AddStructuralFeatureValueAction-required_value">
-          <body>A value InputPin is required.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="AddStructuralFeatureValueAction-required_value-_specification">
-          <language>OCL</language>
-          <body>value&lt;>null</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="AddStructuralFeatureValueAction-insertAt_pin" name="insertAt_pin" constrainedElement="AddStructuralFeatureValueAction">
-        <ownedComment xmi:id="AddStructuralFeatureValueAction-insertAt_pin-_ownedComment.0" annotatedElement="AddStructuralFeatureValueAction-insertAt_pin">
-          <body>AddStructuralFeatureActions adding a value to ordered StructuralFeatures must have a single InputPin for the insertion point with type UnlimitedNatural and multiplicity of 1..1 if isReplaceAll=false, and must have no Input Pin for the insertion point when the StructuralFeature is unordered.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="AddStructuralFeatureValueAction-insertAt_pin-_specification">
-          <language>OCL</language>
-          <body>if not structuralFeature.isOrdered then insertAt = null
-else 
-  not isReplaceAll implies
-  	insertAt&lt;>null and 
-  	insertAt->forAll(type=UnlimitedNatural and is(1,1.oclAsType(UnlimitedNatural)))
-endif</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="AddStructuralFeatureValueAction-_generalization.0" general="WriteStructuralFeatureAction"/>
-      <ownedAttribute xmi:id="AddStructuralFeatureValueAction-insertAt" name="insertAt" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_insertAt_addStructuralFeatureValueAction">
-        <ownedComment xmi:id="AddStructuralFeatureValueAction-insertAt-_ownedComment.0" annotatedElement="AddStructuralFeatureValueAction-insertAt">
-          <body>The InputPin that gives the position at which to insert the value in an ordered StructuralFeature. The type of the insertAt InputPin is UnlimitedNatural, but the value cannot be zero. It is omitted for unordered StructuralFeatures.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="AddStructuralFeatureValueAction-insertAt-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="AddStructuralFeatureValueAction-isReplaceAll" name="isReplaceAll">
-        <ownedComment xmi:id="AddStructuralFeatureValueAction-isReplaceAll-_ownedComment.0" annotatedElement="AddStructuralFeatureValueAction-isReplaceAll">
-          <body>Specifies whether existing values of the StructuralFeature should be removed before adding the new value.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="AddStructuralFeatureValueAction-isReplaceAll-_defaultValue"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="AddVariableValueAction" name="AddVariableValueAction">
-      <ownedComment xmi:id="AddVariableValueAction-_ownedComment.0" annotatedElement="AddVariableValueAction">
-        <body>An AddVariableValueAction is a WriteVariableAction for adding values to a Variable.</body>
-      </ownedComment>
-      <ownedRule xmi:id="AddVariableValueAction-required_value" name="required_value" constrainedElement="AddVariableValueAction">
-        <ownedComment xmi:id="AddVariableValueAction-required_value-_ownedComment.0" annotatedElement="AddVariableValueAction-required_value">
-          <body>A value InputPin is required.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="AddVariableValueAction-required_value-_specification">
-          <language>OCL</language>
-          <body>value &lt;> null</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="AddVariableValueAction-insertAt_pin" name="insertAt_pin" constrainedElement="AddVariableValueAction">
-        <ownedComment xmi:id="AddVariableValueAction-insertAt_pin-_ownedComment.0" annotatedElement="AddVariableValueAction-insertAt_pin">
-          <body>AddVariableValueActions for ordered Variables must have a single InputPin for the insertion point with type UnlimtedNatural and multiplicity of 1..1 if isReplaceAll=false, otherwise the Action has no InputPin for the insertion point.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="AddVariableValueAction-insertAt_pin-_specification">
-          <language>OCL</language>
-          <body>if not variable.isOrdered then insertAt = null
-else 
-  not isReplaceAll implies
-  	insertAt&lt;>null and 
-  	insertAt->forAll(type=UnlimitedNatural and is(1,1.oclAsType(UnlimitedNatural)))
-endif</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="AddVariableValueAction-_generalization.0" general="WriteVariableAction"/>
-      <ownedAttribute xmi:id="AddVariableValueAction-insertAt" name="insertAt" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_insertAt_addVariableValueAction">
-        <ownedComment xmi:id="AddVariableValueAction-insertAt-_ownedComment.0" annotatedElement="AddVariableValueAction-insertAt">
-          <body>The InputPin that gives the position at which to insert a new value or move an existing value in ordered Variables. The type of the insertAt InputPin is UnlimitedNatural, but the value cannot be zero. It is omitted for unordered Variables.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="AddVariableValueAction-insertAt-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="AddVariableValueAction-isReplaceAll" name="isReplaceAll">
-        <ownedComment xmi:id="AddVariableValueAction-isReplaceAll-_ownedComment.0" annotatedElement="AddVariableValueAction-isReplaceAll">
-          <body>Specifies whether existing values of the Variable should be removed before adding the new value.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="AddVariableValueAction-isReplaceAll-_defaultValue"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="BroadcastSignalAction" name="BroadcastSignalAction">
-      <ownedComment xmi:id="BroadcastSignalAction-_ownedComment.0" annotatedElement="BroadcastSignalAction">
-        <body>A BroadcastSignalAction is an InvocationAction that transmits a Signal instance to all the potential target objects in the system. Values from the argument InputPins are used to provide values for the attributes of the Signal. The requestor continues execution immediately after the Signal instances are sent out and cannot receive reply values.</body>
-      </ownedComment>
-      <ownedRule xmi:id="BroadcastSignalAction-number_of_arguments" name="number_of_arguments" constrainedElement="BroadcastSignalAction">
-        <ownedComment xmi:id="BroadcastSignalAction-number_of_arguments-_ownedComment.0" annotatedElement="BroadcastSignalAction-number_of_arguments">
-          <body>The number of argument InputPins must be the same as the number of attributes in the signal.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="BroadcastSignalAction-number_of_arguments-_specification">
-          <language>OCL</language>
-          <body>argument->size() = signal.allAttributes()->size()</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="BroadcastSignalAction-type_ordering_multiplicity" name="type_ordering_multiplicity" constrainedElement="BroadcastSignalAction">
-        <ownedComment xmi:id="BroadcastSignalAction-type_ordering_multiplicity-_ownedComment.0" annotatedElement="BroadcastSignalAction-type_ordering_multiplicity">
-          <body>The type, ordering, and multiplicity of an argument InputPin must be the same as the corresponding attribute of the signal.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="BroadcastSignalAction-type_ordering_multiplicity-_specification">
-          <language>OCL</language>
-          <body>let attribute: OrderedSet(Property) = signal.allAttributes() in&#xD;
-Sequence{1..argument->size()}->forAll(i | &#xD;
-	argument->at(i).type.conformsTo(attribute->at(i).type) and &#xD;
-	argument->at(i).isOrdered = attribute->at(i).isOrdered and&#xD;
-	argument->at(i).compatibleWith(attribute->at(i)))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="BroadcastSignalAction-no_onport" name="no_onport" constrainedElement="BroadcastSignalAction">
-        <ownedComment xmi:id="BroadcastSignalAction-no_onport-_ownedComment.0" annotatedElement="BroadcastSignalAction-no_onport">
-          <body>A BroadcaseSignalAction may not specify onPort.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="BroadcastSignalAction-no_onport-_specification">
-          <language>OCL</language>
-          <body>onPort=null</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="BroadcastSignalAction-_generalization.0" general="InvocationAction"/>
-      <ownedAttribute xmi:id="BroadcastSignalAction-signal" name="signal" type="Signal" association="A_signal_broadcastSignalAction">
-        <ownedComment xmi:id="BroadcastSignalAction-signal-_ownedComment.0" annotatedElement="BroadcastSignalAction-signal">
-          <body>The Signal whose instances are to be sent.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="CallAction" name="CallAction" isAbstract="true">
-      <ownedComment xmi:id="CallAction-_ownedComment.0" annotatedElement="CallAction">
-        <body>CallAction is an abstract class for Actions that invoke a Behavior with given argument values and (if the invocation is synchronous) receive reply values.</body>
-      </ownedComment>
-      <ownedRule xmi:id="CallAction-argument_pins" name="argument_pins" constrainedElement="CallAction">
-        <ownedComment xmi:id="CallAction-argument_pins-_ownedComment.0" annotatedElement="CallAction-argument_pins">
-          <body>The number of argument InputPins must be the same as the number of input (in and inout) ownedParameters of the called Behavior or Operation. The type, ordering and multiplicity of each argument InputPin must be consistent with the corresponding input Parameter.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="CallAction-argument_pins-_specification">
-          <language>OCL</language>
-          <body>let parameter: OrderedSet(Parameter) = self.inputParameters() in&#xD;
-argument->size() = parameter->size() and&#xD;
-Sequence{1..argument->size()}->forAll(i | &#xD;
-	argument->at(i).type.conformsTo(parameter->at(i).type) and &#xD;
-	argument->at(i).isOrdered = parameter->at(i).isOrdered and&#xD;
-	argument->at(i).compatibleWith(parameter->at(i)))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="CallAction-result_pins" name="result_pins" constrainedElement="CallAction">
-        <ownedComment xmi:id="CallAction-result_pins-_ownedComment.0" annotatedElement="CallAction-result_pins">
-          <body>The number of result OutputPins must be the same as the number of output (inout, out and return) ownedParameters of the called Behavior or Operation. The type, ordering and multiplicity of each result OutputPin must be consistent with the corresponding input Parameter.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="CallAction-result_pins-_specification">
-          <language>OCL</language>
-          <body>let parameter: OrderedSet(Parameter) = self.outputParameters() in&#xD;
-result->size() = parameter->size() and&#xD;
-Sequence{1..result->size()}->forAll(i | &#xD;
-	parameter->at(i).type.conformsTo(result->at(i).type) and &#xD;
-	parameter->at(i).isOrdered = result->at(i).isOrdered and&#xD;
-	parameter->at(i).compatibleWith(result->at(i)))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="CallAction-synchronous_call" name="synchronous_call" constrainedElement="CallAction">
-        <ownedComment xmi:id="CallAction-synchronous_call-_ownedComment.0" annotatedElement="CallAction-synchronous_call">
-          <body>Only synchronous CallActions can have result OutputPins.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="CallAction-synchronous_call-_specification">
-          <language>OCL</language>
-          <body>result->notEmpty() implies isSynchronous</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="CallAction-_generalization.0" general="InvocationAction"/>
-      <ownedAttribute xmi:id="CallAction-isSynchronous" name="isSynchronous">
-        <ownedComment xmi:id="CallAction-isSynchronous-_ownedComment.0" annotatedElement="CallAction-isSynchronous">
-          <body>If true, the call is synchronous and the caller waits for completion of the invoked Behavior. If false, the call is asynchronous and the caller proceeds immediately and cannot receive return values.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="CallAction-isSynchronous-_defaultValue" value="true"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="CallAction-result" name="result" type="OutputPin" isOrdered="true" aggregation="composite" subsettedProperty="Action-output" association="A_result_callAction">
-        <ownedComment xmi:id="CallAction-result-_ownedComment.0" annotatedElement="CallAction-result">
-          <body>The OutputPins on which the reply values from the invocation are placed (if the call is synchronous).</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="CallAction-result-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="CallAction-result-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="CallAction-inputParameters" name="inputParameters" isAbstract="true" isQuery="true">
-        <ownedComment xmi:id="CallAction-inputParameters-_ownedComment.0" annotatedElement="CallAction-inputParameters">
-          <body>Return the in and inout ownedParameters of the Behavior or Operation being called. (This operation is abstract and should be overridden by subclasses of CallAction.)</body>
-        </ownedComment>
-        <ownedParameter xmi:id="CallAction-inputParameters-result" name="result" type="Parameter" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="CallAction-inputParameters-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="CallAction-inputParameters-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="CallAction-outputParameters" name="outputParameters" isAbstract="true" isQuery="true">
-        <ownedComment xmi:id="CallAction-outputParameters-_ownedComment.0" annotatedElement="CallAction-outputParameters">
-          <body>Return the inout, out and return ownedParameters of the Behavior or Operation being called. (This operation is abstract and should be overridden by subclasses of CallAction.)</body>
-        </ownedComment>
-        <ownedParameter xmi:id="CallAction-outputParameters-result" name="result" type="Parameter" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="CallAction-outputParameters-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="CallAction-outputParameters-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="CallBehaviorAction" name="CallBehaviorAction">
-      <ownedComment xmi:id="CallBehaviorAction-_ownedComment.0" annotatedElement="CallBehaviorAction">
-        <body>A CallBehaviorAction is a CallAction that invokes a Behavior directly. The argument values of the CallBehaviorAction are passed on the input Parameters of the invoked Behavior. If the call is synchronous, the execution of the CallBehaviorAction waits until the execution of the invoked Behavior completes and the values of output Parameters of the Behavior are placed on the result OutputPins. If the call is asynchronous, the CallBehaviorAction completes immediately and no results values can be provided.</body>
-      </ownedComment>
-      <ownedRule xmi:id="CallBehaviorAction-no_onport" name="no_onport" constrainedElement="CallBehaviorAction">
-        <ownedComment xmi:id="CallBehaviorAction-no_onport-_ownedComment.0" annotatedElement="CallBehaviorAction-no_onport">
-          <body>A CallBehaviorAction may not specify onPort.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="CallBehaviorAction-no_onport-_specification">
-          <language>OCL</language>
-          <body>onPort=null</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="CallBehaviorAction-_generalization.0" general="CallAction"/>
-      <ownedAttribute xmi:id="CallBehaviorAction-behavior" name="behavior" type="Behavior" association="A_behavior_callBehaviorAction">
-        <ownedComment xmi:id="CallBehaviorAction-behavior-_ownedComment.0" annotatedElement="CallBehaviorAction-behavior">
-          <body>The Behavior being invoked.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedOperation xmi:id="CallBehaviorAction-outputParameters" name="outputParameters" bodyCondition="CallBehaviorAction-outputParameters-spec" isQuery="true" redefinedOperation="CallAction-outputParameters">
-        <ownedComment xmi:id="CallBehaviorAction-outputParameters-_ownedComment.0" annotatedElement="CallBehaviorAction-outputParameters">
-          <body>Return the inout, out and return ownedParameters of the Behavior being called.</body>
-        </ownedComment>
-        <ownedRule xmi:id="CallBehaviorAction-outputParameters-spec" name="spec" constrainedElement="CallBehaviorAction-outputParameters">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="CallBehaviorAction-outputParameters-spec-_specification">
-            <language>OCL</language>
-            <body>result = (behavior.outputParameters())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="CallBehaviorAction-outputParameters-result" name="result" type="Parameter" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="CallBehaviorAction-outputParameters-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="CallBehaviorAction-outputParameters-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="CallBehaviorAction-inputParameters" name="inputParameters" bodyCondition="CallBehaviorAction-inputParameters-spec" isQuery="true" redefinedOperation="CallAction-inputParameters">
-        <ownedComment xmi:id="CallBehaviorAction-inputParameters-_ownedComment.0" annotatedElement="CallBehaviorAction-inputParameters">
-          <body>Return the in and inout ownedParameters of the Behavior being called.</body>
-        </ownedComment>
-        <ownedRule xmi:id="CallBehaviorAction-inputParameters-spec" name="spec" constrainedElement="CallBehaviorAction-inputParameters">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="CallBehaviorAction-inputParameters-spec-_specification">
-            <language>OCL</language>
-            <body>result = (behavior.inputParameters())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="CallBehaviorAction-inputParameters-result" name="result" type="Parameter" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="CallBehaviorAction-inputParameters-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="CallBehaviorAction-inputParameters-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="CallOperationAction" name="CallOperationAction">
-      <ownedComment xmi:id="CallOperationAction-_ownedComment.0" annotatedElement="CallOperationAction">
-        <body>A CallOperationAction is a CallAction that transmits an Operation call request to the target object, where it may cause the invocation of associated Behavior. The argument values of the CallOperationAction are passed on the input Parameters of the Operation. If call is synchronous, the execution of the CallOperationAction waits until the execution of the invoked Operation completes and the values of output Parameters of the Operation are placed on the result OutputPins. If the call is asynchronous, the CallOperationAction completes immediately and no results values can be provided.</body>
-      </ownedComment>
-      <ownedRule xmi:id="CallOperationAction-type_target_pin" name="type_target_pin" constrainedElement="CallOperationAction">
-        <ownedComment xmi:id="CallOperationAction-type_target_pin-_ownedComment.0" annotatedElement="CallOperationAction-type_target_pin">
-          <body>If onPort has no value, the operation must be an owned or inherited feature of the type of the target InputPin, otherwise the Port given by onPort must be an owned or inherited feature of the type of the target InputPin, and the Port must have a required or provided Interface with the operation as an owned or inherited feature.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="CallOperationAction-type_target_pin-_specification">
-          <language>OCL</language>
-          <body>if onPort=null then  target.type.oclAsType(Classifier).allFeatures()->includes(operation)&#xD;
-else target.type.oclAsType(Classifier).allFeatures()->includes(onPort) and onPort.provided->union(onPort.required).allFeatures()->includes(operation)&#xD;
-endif</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="CallOperationAction-_generalization.0" general="CallAction"/>
-      <ownedAttribute xmi:id="CallOperationAction-operation" name="operation" type="Operation" association="A_operation_callOperationAction">
-        <ownedComment xmi:id="CallOperationAction-operation-_ownedComment.0" annotatedElement="CallOperationAction-operation">
-          <body>The Operation being invoked.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="CallOperationAction-target" name="target" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_target_callOperationAction">
-        <ownedComment xmi:id="CallOperationAction-target-_ownedComment.0" annotatedElement="CallOperationAction-target">
-          <body>The InputPin that provides the target object to which the Operation call request is sent.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedOperation xmi:id="CallOperationAction-outputParameters" name="outputParameters" bodyCondition="CallOperationAction-outputParameters-spec" isQuery="true" redefinedOperation="CallAction-outputParameters">
-        <ownedComment xmi:id="CallOperationAction-outputParameters-_ownedComment.0" annotatedElement="CallOperationAction-outputParameters">
-          <body>Return the inout, out and return ownedParameters of the Operation being called.</body>
-        </ownedComment>
-        <ownedRule xmi:id="CallOperationAction-outputParameters-spec" name="spec" constrainedElement="CallOperationAction-outputParameters">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="CallOperationAction-outputParameters-spec-_specification">
-            <language>OCL</language>
-            <body>result = (operation.outputParameters())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="CallOperationAction-outputParameters-result" name="result" type="Parameter" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="CallOperationAction-outputParameters-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="CallOperationAction-outputParameters-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="CallOperationAction-inputParameters" name="inputParameters" bodyCondition="CallOperationAction-inputParameters-spec" isQuery="true" redefinedOperation="CallAction-inputParameters">
-        <ownedComment xmi:id="CallOperationAction-inputParameters-_ownedComment.0" annotatedElement="CallOperationAction-inputParameters">
-          <body>Return the in and inout ownedParameters of the Operation being called.</body>
-        </ownedComment>
-        <ownedRule xmi:id="CallOperationAction-inputParameters-spec" name="spec" constrainedElement="CallOperationAction-inputParameters">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="CallOperationAction-inputParameters-spec-_specification">
-            <language>OCL</language>
-            <body>result = (operation.inputParameters())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="CallOperationAction-inputParameters-result" name="result" type="Parameter" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="CallOperationAction-inputParameters-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="CallOperationAction-inputParameters-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Clause" name="Clause">
-      <ownedComment xmi:id="Clause-_ownedComment.0" annotatedElement="Clause">
-        <body>A Clause is an Element that represents a single branch of a ConditionalNode, including a test and a body section. The body section is executed only if (but not necessarily if) the test section evaluates to true.</body>
-      </ownedComment>
-      <ownedRule xmi:id="Clause-body_output_pins" name="body_output_pins" constrainedElement="Clause">
-        <ownedComment xmi:id="Clause-body_output_pins-_ownedComment.0" annotatedElement="Clause-body_output_pins">
-          <body>The bodyOutput Pins are OutputPins on Actions in the body of the Clause.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Clause-body_output_pins-_specification">
-          <language>OCL</language>
-          <body>_'body'.oclAsType(Action).allActions().output->includesAll(bodyOutput)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Clause-decider_output" name="decider_output" constrainedElement="Clause">
-        <ownedComment xmi:id="Clause-decider_output-_ownedComment.0" annotatedElement="Clause-decider_output">
-          <body>The decider Pin must be on an Action in the test section of the Clause and must be of type Boolean with multiplicity 1..1.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Clause-decider_output-_specification">
-          <language>OCL</language>
-          <body>test.oclAsType(Action).allActions().output->includes(decider) and&#xD;
-decider.type = Boolean and&#xD;
-decider.is(1,1)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Clause-test_and_body" name="test_and_body" constrainedElement="Clause">
-        <ownedComment xmi:id="Clause-test_and_body-_ownedComment.0" annotatedElement="Clause-test_and_body">
-          <body>The test and body parts of a ConditionalNode must be disjoint with each other.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Clause-test_and_body-_specification">
-          <language>OCL</language>
-          <body>test->intersection(_'body')->isEmpty()</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="Clause-_generalization.0" general="Element"/>
-      <ownedAttribute xmi:id="Clause-body" name="body" type="ExecutableNode" association="A_body_clause">
-        <ownedComment xmi:id="Clause-body-_ownedComment.0" annotatedElement="Clause-body">
-          <body>The set of ExecutableNodes that are executed if the test evaluates to true and the Clause is chosen over other Clauses within the ConditionalNode that also have tests that evaluate to true.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Clause-body-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Clause-body-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Clause-bodyOutput" name="bodyOutput" type="OutputPin" isOrdered="true" association="A_bodyOutput_clause">
-        <ownedComment xmi:id="Clause-bodyOutput-_ownedComment.0" annotatedElement="Clause-bodyOutput">
-          <body>The OutputPins on Actions within the body section whose values are moved to the result OutputPins of the containing ConditionalNode after execution of the body.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Clause-bodyOutput-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Clause-bodyOutput-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Clause-decider" name="decider" type="OutputPin" association="A_decider_clause">
-        <ownedComment xmi:id="Clause-decider-_ownedComment.0" annotatedElement="Clause-decider">
-          <body>An OutputPin on an Action in the test section whose Boolean value determines the result of the test.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Clause-predecessorClause" name="predecessorClause" type="Clause" association="A_predecessorClause_successorClause">
-        <ownedComment xmi:id="Clause-predecessorClause-_ownedComment.0" annotatedElement="Clause-predecessorClause">
-          <body>A set of Clauses whose tests must all evaluate to false before this Clause can evaluate its test.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Clause-predecessorClause-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Clause-predecessorClause-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Clause-successorClause" name="successorClause" type="Clause" association="A_predecessorClause_successorClause">
-        <ownedComment xmi:id="Clause-successorClause-_ownedComment.0" annotatedElement="Clause-successorClause">
-          <body>A set of Clauses that may not evaluate their tests unless the test for this Clause evaluates to false.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Clause-successorClause-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Clause-successorClause-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Clause-test" name="test" type="ExecutableNode" association="A_test_clause">
-        <ownedComment xmi:id="Clause-test-_ownedComment.0" annotatedElement="Clause-test">
-          <body>The set of ExecutableNodes that are executed in order to provide a test result for the Clause.</body>
-        </ownedComment>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Clause-test-_upperValue" value="*"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ClearAssociationAction" name="ClearAssociationAction">
-      <ownedComment xmi:id="ClearAssociationAction-_ownedComment.0" annotatedElement="ClearAssociationAction">
-        <body>A ClearAssociationAction is an Action that destroys all links of an Association in which a particular object participates.</body>
-      </ownedComment>
-      <ownedRule xmi:id="ClearAssociationAction-multiplicity" name="multiplicity" constrainedElement="ClearAssociationAction">
-        <ownedComment xmi:id="ClearAssociationAction-multiplicity-_ownedComment.0" annotatedElement="ClearAssociationAction-multiplicity">
-          <body>The multiplicity of the object InputPin is 1..1.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ClearAssociationAction-multiplicity-_specification">
-          <language>OCL</language>
-          <body>object.is(1,1)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ClearAssociationAction-same_type" name="same_type" constrainedElement="ClearAssociationAction">
-        <ownedComment xmi:id="ClearAssociationAction-same_type-_ownedComment.0" annotatedElement="ClearAssociationAction-same_type">
-          <body>The type of the InputPin must conform to the type of at least one of the memberEnds of the association.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ClearAssociationAction-same_type-_specification">
-          <language>OCL</language>
-          <body>association.memberEnd->exists(self.object.type.conformsTo(type))</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="ClearAssociationAction-_generalization.0" general="Action"/>
-      <ownedAttribute xmi:id="ClearAssociationAction-association" name="association" type="Association" association="A_association_clearAssociationAction">
-        <ownedComment xmi:id="ClearAssociationAction-association-_ownedComment.0" annotatedElement="ClearAssociationAction-association">
-          <body>The Association to be cleared.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ClearAssociationAction-object" name="object" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_object_clearAssociationAction">
-        <ownedComment xmi:id="ClearAssociationAction-object-_ownedComment.0" annotatedElement="ClearAssociationAction-object">
-          <body>The InputPin that gives the object whose participation in the Association is to be cleared.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ClearStructuralFeatureAction" name="ClearStructuralFeatureAction">
-      <ownedComment xmi:id="ClearStructuralFeatureAction-_ownedComment.0" annotatedElement="ClearStructuralFeatureAction">
-        <body>A ClearStructuralFeatureAction is a StructuralFeatureAction that removes all values of a StructuralFeature.</body>
-      </ownedComment>
-      <ownedRule xmi:id="ClearStructuralFeatureAction-type_of_result" name="type_of_result" constrainedElement="ClearStructuralFeatureAction">
-        <ownedComment xmi:id="ClearStructuralFeatureAction-type_of_result-_ownedComment.0" annotatedElement="ClearStructuralFeatureAction-type_of_result">
-          <body>The type of the result OutputPin is the same as the type of the inherited object InputPin.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ClearStructuralFeatureAction-type_of_result-_specification">
-          <language>OCL</language>
-          <body>result&lt;>null implies result.type = object.type</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ClearStructuralFeatureAction-multiplicity_of_result" name="multiplicity_of_result" constrainedElement="ClearStructuralFeatureAction">
-        <ownedComment xmi:id="ClearStructuralFeatureAction-multiplicity_of_result-_ownedComment.0" annotatedElement="ClearStructuralFeatureAction-multiplicity_of_result">
-          <body>The multiplicity of the result OutputPin must be 1..1.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ClearStructuralFeatureAction-multiplicity_of_result-_specification">
-          <language>OCL</language>
-          <body>result&lt;>null implies result.is(1,1)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="ClearStructuralFeatureAction-_generalization.0" general="StructuralFeatureAction"/>
-      <ownedAttribute xmi:id="ClearStructuralFeatureAction-result" name="result" type="OutputPin" aggregation="composite" subsettedProperty="Action-output" association="A_result_clearStructuralFeatureAction">
-        <ownedComment xmi:id="ClearStructuralFeatureAction-result-_ownedComment.0" annotatedElement="ClearStructuralFeatureAction-result">
-          <body>The OutputPin on which is put the input object as modified by the ClearStructuralFeatureAction.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ClearStructuralFeatureAction-result-_lowerValue"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ClearVariableAction" name="ClearVariableAction">
-      <ownedComment xmi:id="ClearVariableAction-_ownedComment.0" annotatedElement="ClearVariableAction">
-        <body>A ClearVariableAction is a VariableAction that removes all values of a Variable.</body>
-      </ownedComment>
-      <generalization xmi:id="ClearVariableAction-_generalization.0" general="VariableAction"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ConditionalNode" name="ConditionalNode">
-      <ownedComment xmi:id="ConditionalNode-_ownedComment.0" annotatedElement="ConditionalNode">
-        <body>A ConditionalNode is a StructuredActivityNode that chooses one among some number of alternative collections of ExecutableNodes to execute.</body>
-      </ownedComment>
-      <ownedRule xmi:id="ConditionalNode-result_no_incoming" name="result_no_incoming" constrainedElement="ConditionalNode">
-        <ownedComment xmi:id="ConditionalNode-result_no_incoming-_ownedComment.0" annotatedElement="ConditionalNode-result_no_incoming">
-          <body>The result OutputPins have no incoming edges.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ConditionalNode-result_no_incoming-_specification">
-          <language>OCL</language>
-          <body>result.incoming->isEmpty()</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ConditionalNode-no_input_pins" name="no_input_pins" constrainedElement="ConditionalNode">
-        <ownedComment xmi:id="ConditionalNode-no_input_pins-_ownedComment.0" annotatedElement="ConditionalNode-no_input_pins">
-          <body>A ConditionalNode has no InputPins.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ConditionalNode-no_input_pins-_specification">
-          <language>OCL</language>
-          <body>input->isEmpty()</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ConditionalNode-one_clause_with_executable_node" name="one_clause_with_executable_node" constrainedElement="ConditionalNode">
-        <ownedComment xmi:id="ConditionalNode-one_clause_with_executable_node-_ownedComment.0" annotatedElement="ConditionalNode-one_clause_with_executable_node">
-          <body>No ExecutableNode in the ConditionNode may appear in the test or body part of more than one clause of a ConditionalNode.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ConditionalNode-one_clause_with_executable_node-_specification">
-          <language>OCL</language>
-          <body>node->select(oclIsKindOf(ExecutableNode)).oclAsType(ExecutableNode)->forAll(n | &#xD;
-	self.clause->select(test->union(_'body')->includes(n))->size()=1)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ConditionalNode-matching_output_pins" name="matching_output_pins" constrainedElement="ConditionalNode">
-        <ownedComment xmi:id="ConditionalNode-matching_output_pins-_ownedComment.0" annotatedElement="ConditionalNode-matching_output_pins">
-          <body>Each clause of a ConditionalNode must have the same number of bodyOutput pins as the ConditionalNode has result OutputPins, and each clause bodyOutput Pin must be compatible with the corresponding result OutputPin (by positional order) in type, multiplicity, ordering, and uniqueness.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ConditionalNode-matching_output_pins-_specification">
-          <language>OCL</language>
-          <body>clause->forAll(&#xD;
-	bodyOutput->size()=self.result->size() and&#xD;
-	Sequence{1..self.result->size()}->forAll(i |&#xD;
-		bodyOutput->at(i).type.conformsTo(result->at(i).type) and&#xD;
-		bodyOutput->at(i).isOrdered = result->at(i).isOrdered and&#xD;
-		bodyOutput->at(i).isUnique = result->at(i).isUnique and&#xD;
-		bodyOutput->at(i).compatibleWith(result->at(i))))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ConditionalNode-executable_nodes" name="executable_nodes" constrainedElement="ConditionalNode">
-        <ownedComment xmi:id="ConditionalNode-executable_nodes-_ownedComment.0" annotatedElement="ConditionalNode-executable_nodes">
-          <body>The union of the ExecutableNodes in the test and body parts of all clauses must be the same as the subset of nodes contained in the ConditionalNode (considered as a StructuredActivityNode) that are ExecutableNodes.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ConditionalNode-executable_nodes-_specification">
-          <language>OCL</language>
-          <body>clause.test->union(clause._'body') = node->select(oclIsKindOf(ExecutableNode)).oclAsType(ExecutableNode)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ConditionalNode-clause_no_predecessor" name="clause_no_predecessor" constrainedElement="ConditionalNode">
-        <ownedComment xmi:id="ConditionalNode-clause_no_predecessor-_ownedComment.0" annotatedElement="ConditionalNode-clause_no_predecessor">
-          <body>No two clauses within a ConditionalNode may be predecessorClauses of each other, either directly or indirectly.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ConditionalNode-clause_no_predecessor-_specification">
-          <language>OCL</language>
-          <body>clause->closure(predecessorClause)->intersection(clause)->isEmpty()</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="ConditionalNode-_generalization.0" general="StructuredActivityNode"/>
-      <ownedAttribute xmi:id="ConditionalNode-clause" name="clause" type="Clause" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_clause_conditionalNode">
-        <ownedComment xmi:id="ConditionalNode-clause-_ownedComment.0" annotatedElement="ConditionalNode-clause">
-          <body>The set of Clauses composing the ConditionalNode.</body>
-        </ownedComment>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ConditionalNode-clause-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ConditionalNode-isAssured" name="isAssured">
-        <ownedComment xmi:id="ConditionalNode-isAssured-_ownedComment.0" annotatedElement="ConditionalNode-isAssured">
-          <body>If true, the modeler asserts that the test for at least one Clause of the ConditionalNode will succeed.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="ConditionalNode-isAssured-_defaultValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ConditionalNode-isDeterminate" name="isDeterminate">
-        <ownedComment xmi:id="ConditionalNode-isDeterminate-_ownedComment.0" annotatedElement="ConditionalNode-isDeterminate">
-          <body>If true, the modeler asserts that the test for at most one Clause of the ConditionalNode will succeed.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="ConditionalNode-isDeterminate-_defaultValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ConditionalNode-result" name="result" type="OutputPin" isOrdered="true" aggregation="composite" redefinedProperty="StructuredActivityNode-structuredNodeOutput" association="A_result_conditionalNode">
-        <ownedComment xmi:id="ConditionalNode-result-_ownedComment.0" annotatedElement="ConditionalNode-result">
-          <body>The OutputPins that onto which are moved values from the bodyOutputs of the Clause selected for execution.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ConditionalNode-result-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ConditionalNode-result-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="ConditionalNode-allActions" name="allActions" bodyCondition="ConditionalNode-allActions-spec" isQuery="true" redefinedOperation="Action-allActions StructuredActivityNode-allActions">
-        <ownedComment xmi:id="ConditionalNode-allActions-_ownedComment.0" annotatedElement="ConditionalNode-allActions">
-          <body>Return only this ConditionalNode. This prevents Actions within the ConditionalNode from having their OutputPins used as bodyOutputs or decider Pins in containing LoopNodes or ConditionalNodes.</body>
-        </ownedComment>
-        <ownedRule xmi:id="ConditionalNode-allActions-spec" name="spec" constrainedElement="ConditionalNode-allActions">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="ConditionalNode-allActions-spec-_specification">
-            <language>OCL</language>
-            <body>result = (self->asSet())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="ConditionalNode-allActions-result" name="result" type="Action" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ConditionalNode-allActions-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ConditionalNode-allActions-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="CreateLinkAction" name="CreateLinkAction">
-      <ownedComment xmi:id="CreateLinkAction-_ownedComment.0" annotatedElement="CreateLinkAction">
-        <body>A CreateLinkAction is a WriteLinkAction for creating links.</body>
-      </ownedComment>
-      <ownedRule xmi:id="CreateLinkAction-association_not_abstract" name="association_not_abstract" constrainedElement="CreateLinkAction">
-        <ownedComment xmi:id="CreateLinkAction-association_not_abstract-_ownedComment.0" annotatedElement="CreateLinkAction-association_not_abstract">
-          <body>The Association cannot be an abstract Classifier.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="CreateLinkAction-association_not_abstract-_specification">
-          <language>OCL</language>
-          <body>not self.association().isAbstract</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="CreateLinkAction-_generalization.0" general="WriteLinkAction"/>
-      <ownedAttribute xmi:id="CreateLinkAction-endData" name="endData" type="LinkEndCreationData" aggregation="composite" redefinedProperty="LinkAction-endData" association="A_endData_createLinkAction">
-        <ownedComment xmi:id="CreateLinkAction-endData-_ownedComment.0" annotatedElement="CreateLinkAction-endData">
-          <body>The LinkEndData that specifies the values to be placed on the Association ends for the new link.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="CreateLinkAction-endData-_lowerValue" value="2"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="CreateLinkAction-endData-_upperValue" value="*"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="CreateLinkObjectAction" name="CreateLinkObjectAction">
-      <ownedComment xmi:id="CreateLinkObjectAction-_ownedComment.0" annotatedElement="CreateLinkObjectAction">
-        <body>A CreateLinkObjectAction is a CreateLinkAction for creating link objects (AssociationClasse instances).</body>
-      </ownedComment>
-      <ownedRule xmi:id="CreateLinkObjectAction-multiplicity" name="multiplicity" constrainedElement="CreateLinkObjectAction">
-        <ownedComment xmi:id="CreateLinkObjectAction-multiplicity-_ownedComment.0" annotatedElement="CreateLinkObjectAction-multiplicity">
-          <body>The multiplicity of the OutputPin is 1..1.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="CreateLinkObjectAction-multiplicity-_specification">
-          <language>OCL</language>
-          <body>result.is(1,1)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="CreateLinkObjectAction-type_of_result" name="type_of_result" constrainedElement="CreateLinkObjectAction">
-        <ownedComment xmi:id="CreateLinkObjectAction-type_of_result-_ownedComment.0" annotatedElement="CreateLinkObjectAction-type_of_result">
-          <body>The type of the result OutputPin must be the same as the Association of the CreateLinkObjectAction.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="CreateLinkObjectAction-type_of_result-_specification">
-          <language>OCL</language>
-          <body>result.type = association()</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="CreateLinkObjectAction-association_class" name="association_class" constrainedElement="CreateLinkObjectAction">
-        <ownedComment xmi:id="CreateLinkObjectAction-association_class-_ownedComment.0" annotatedElement="CreateLinkObjectAction-association_class">
-          <body>The Association must be an AssociationClass.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="CreateLinkObjectAction-association_class-_specification">
-          <language>OCL</language>
-          <body>self.association().oclIsKindOf(AssociationClass)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="CreateLinkObjectAction-_generalization.0" general="CreateLinkAction"/>
-      <ownedAttribute xmi:id="CreateLinkObjectAction-result" name="result" type="OutputPin" aggregation="composite" subsettedProperty="Action-output" association="A_result_createLinkObjectAction">
-        <ownedComment xmi:id="CreateLinkObjectAction-result-_ownedComment.0" annotatedElement="CreateLinkObjectAction-result">
-          <body>The output pin on which the newly created link object is placed.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="CreateObjectAction" name="CreateObjectAction">
-      <ownedComment xmi:id="CreateObjectAction-_ownedComment.0" annotatedElement="CreateObjectAction">
-        <body>A CreateObjectAction is an Action that creates an instance of the specified Classifier.</body>
-      </ownedComment>
-      <ownedRule xmi:id="CreateObjectAction-classifier_not_abstract" name="classifier_not_abstract" constrainedElement="CreateObjectAction">
-        <ownedComment xmi:id="CreateObjectAction-classifier_not_abstract-_ownedComment.0" annotatedElement="CreateObjectAction-classifier_not_abstract">
-          <body>The classifier cannot be abstract.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="CreateObjectAction-classifier_not_abstract-_specification">
-          <language>OCL</language>
-          <body>not classifier.isAbstract</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="CreateObjectAction-multiplicity" name="multiplicity" constrainedElement="CreateObjectAction">
-        <ownedComment xmi:id="CreateObjectAction-multiplicity-_ownedComment.0" annotatedElement="CreateObjectAction-multiplicity">
-          <body>The multiplicity of the result OutputPin is 1..1.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="CreateObjectAction-multiplicity-_specification">
-          <language>OCL</language>
-          <body>result.is(1,1)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="CreateObjectAction-classifier_not_association_class" name="classifier_not_association_class" constrainedElement="CreateObjectAction">
-        <ownedComment xmi:id="CreateObjectAction-classifier_not_association_class-_ownedComment.0" annotatedElement="CreateObjectAction-classifier_not_association_class">
-          <body>The classifier cannot be an AssociationClass.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="CreateObjectAction-classifier_not_association_class-_specification">
-          <language>OCL</language>
-          <body>not classifier.oclIsKindOf(AssociationClass)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="CreateObjectAction-same_type" name="same_type" constrainedElement="CreateObjectAction">
-        <ownedComment xmi:id="CreateObjectAction-same_type-_ownedComment.0" annotatedElement="CreateObjectAction-same_type">
-          <body>The type of the result OutputPin must be the same as the classifier of the CreateObjectAction.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="CreateObjectAction-same_type-_specification">
-          <language>OCL</language>
-          <body>result.type = classifier</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="CreateObjectAction-_generalization.0" general="Action"/>
-      <ownedAttribute xmi:id="CreateObjectAction-classifier" name="classifier" type="Classifier" association="A_classifier_createObjectAction">
-        <ownedComment xmi:id="CreateObjectAction-classifier-_ownedComment.0" annotatedElement="CreateObjectAction-classifier">
-          <body>The Classifier to be instantiated.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="CreateObjectAction-result" name="result" type="OutputPin" aggregation="composite" subsettedProperty="Action-output" association="A_result_createObjectAction">
-        <ownedComment xmi:id="CreateObjectAction-result-_ownedComment.0" annotatedElement="CreateObjectAction-result">
-          <body>The OutputPin on which the newly created object is placed.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="DestroyLinkAction" name="DestroyLinkAction">
-      <ownedComment xmi:id="DestroyLinkAction-_ownedComment.0" annotatedElement="DestroyLinkAction">
-        <body>A DestroyLinkAction is a WriteLinkAction that destroys links (including link objects).</body>
-      </ownedComment>
-      <generalization xmi:id="DestroyLinkAction-_generalization.0" general="WriteLinkAction"/>
-      <ownedAttribute xmi:id="DestroyLinkAction-endData" name="endData" type="LinkEndDestructionData" aggregation="composite" redefinedProperty="LinkAction-endData" association="A_endData_destroyLinkAction">
-        <ownedComment xmi:id="DestroyLinkAction-endData-_ownedComment.0" annotatedElement="DestroyLinkAction-endData">
-          <body>The LinkEndData that the values of the Association ends for the links to be destroyed.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="DestroyLinkAction-endData-_lowerValue" value="2"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DestroyLinkAction-endData-_upperValue" value="*"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="DestroyObjectAction" name="DestroyObjectAction">
-      <ownedComment xmi:id="DestroyObjectAction-_ownedComment.0" annotatedElement="DestroyObjectAction">
-        <body>A DestroyObjectAction is an Action that destroys objects.</body>
-      </ownedComment>
-      <ownedRule xmi:id="DestroyObjectAction-multiplicity" name="multiplicity" constrainedElement="DestroyObjectAction">
-        <ownedComment xmi:id="DestroyObjectAction-multiplicity-_ownedComment.0" annotatedElement="DestroyObjectAction-multiplicity">
-          <body>The multiplicity of the targe IinputPin is 1..1.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="DestroyObjectAction-multiplicity-_specification">
-          <language>OCL</language>
-          <body>target.is(1,1)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="DestroyObjectAction-no_type" name="no_type" constrainedElement="DestroyObjectAction">
-        <ownedComment xmi:id="DestroyObjectAction-no_type-_ownedComment.0" annotatedElement="DestroyObjectAction-no_type">
-          <body>The target InputPin has no type.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="DestroyObjectAction-no_type-_specification">
-          <language>OCL</language>
-          <body>target.type= null</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="DestroyObjectAction-_generalization.0" general="Action"/>
-      <ownedAttribute xmi:id="DestroyObjectAction-isDestroyLinks" name="isDestroyLinks">
-        <ownedComment xmi:id="DestroyObjectAction-isDestroyLinks-_ownedComment.0" annotatedElement="DestroyObjectAction-isDestroyLinks">
-          <body>Specifies whether links in which the object participates are destroyed along with the object.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="DestroyObjectAction-isDestroyLinks-_defaultValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="DestroyObjectAction-isDestroyOwnedObjects" name="isDestroyOwnedObjects">
-        <ownedComment xmi:id="DestroyObjectAction-isDestroyOwnedObjects-_ownedComment.0" annotatedElement="DestroyObjectAction-isDestroyOwnedObjects">
-          <body>Specifies whether objects owned by the object (via composition) are destroyed along with the object.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="DestroyObjectAction-isDestroyOwnedObjects-_defaultValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="DestroyObjectAction-target" name="target" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_target_destroyObjectAction">
-        <ownedComment xmi:id="DestroyObjectAction-target-_ownedComment.0" annotatedElement="DestroyObjectAction-target">
-          <body>The InputPin providing the object to be destroyed.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ExpansionNode" name="ExpansionNode">
-      <ownedComment xmi:id="ExpansionNode-_ownedComment.0" annotatedElement="ExpansionNode">
-        <body>An ExpansionNode is an ObjectNode used to indicate a collection input or output for an ExpansionRegion. A collection input of an ExpansionRegion contains a collection that is broken into its individual elements inside the region, whose content is executed once per element. A collection output of an ExpansionRegion combines individual elements produced by the execution of the region into a collection for use outside the region.</body>
-      </ownedComment>
-      <ownedRule xmi:id="ExpansionNode-region_as_input_or_output" name="region_as_input_or_output" constrainedElement="ExpansionNode">
-        <ownedComment xmi:id="ExpansionNode-region_as_input_or_output-_ownedComment.0" annotatedElement="ExpansionNode-region_as_input_or_output">
-          <body>One of regionAsInput or regionAsOutput must be non-empty, but not both.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ExpansionNode-region_as_input_or_output-_specification">
-          <language>OCL</language>
-          <body>regionAsInput->notEmpty() xor regionAsOutput->notEmpty()</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="ExpansionNode-_generalization.0" general="ObjectNode"/>
-      <ownedAttribute xmi:id="ExpansionNode-regionAsInput" name="regionAsInput" type="ExpansionRegion" association="A_inputElement_regionAsInput">
-        <ownedComment xmi:id="ExpansionNode-regionAsInput-_ownedComment.0" annotatedElement="ExpansionNode-regionAsInput">
-          <body>The ExpansionRegion for which the ExpansionNode is an input.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ExpansionNode-regionAsInput-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ExpansionNode-regionAsOutput" name="regionAsOutput" type="ExpansionRegion" association="A_outputElement_regionAsOutput">
-        <ownedComment xmi:id="ExpansionNode-regionAsOutput-_ownedComment.0" annotatedElement="ExpansionNode-regionAsOutput">
-          <body>The ExpansionRegion for which the ExpansionNode is an output.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ExpansionNode-regionAsOutput-_lowerValue"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ExpansionRegion" name="ExpansionRegion">
-      <ownedComment xmi:id="ExpansionRegion-_ownedComment.0" annotatedElement="ExpansionRegion">
-        <body>An ExpansionRegion is a StructuredActivityNode that executes its content multiple times corresponding to elements of input collection(s).</body>
-      </ownedComment>
-      <generalization xmi:id="ExpansionRegion-_generalization.0" general="StructuredActivityNode"/>
-      <ownedAttribute xmi:id="ExpansionRegion-inputElement" name="inputElement" type="ExpansionNode" association="A_inputElement_regionAsInput">
-        <ownedComment xmi:id="ExpansionRegion-inputElement-_ownedComment.0" annotatedElement="ExpansionRegion-inputElement">
-          <body>The ExpansionNodes that hold the input collections for the ExpansionRegion.</body>
-        </ownedComment>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ExpansionRegion-inputElement-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ExpansionRegion-mode" name="mode" type="ExpansionKind">
-        <ownedComment xmi:id="ExpansionRegion-mode-_ownedComment.0" annotatedElement="ExpansionRegion-mode">
-          <body>The mode in which the ExpansionRegion executes its contents. If parallel, executions are concurrent. If iterative, executions are sequential. If stream, a stream of values flows into a single execution.</body>
-        </ownedComment>
-        <defaultValue xmi:type="uml:InstanceValue" xmi:id="ExpansionRegion-mode-_defaultValue" type="ExpansionKind" instance="ExpansionKind-iterative"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ExpansionRegion-outputElement" name="outputElement" type="ExpansionNode" association="A_outputElement_regionAsOutput">
-        <ownedComment xmi:id="ExpansionRegion-outputElement-_ownedComment.0" annotatedElement="ExpansionRegion-outputElement">
-          <body>The ExpansionNodes that form the output collections of the ExpansionRegion.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ExpansionRegion-outputElement-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ExpansionRegion-outputElement-_upperValue" value="*"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="InputPin" name="InputPin">
-      <ownedComment xmi:id="InputPin-_ownedComment.0" annotatedElement="InputPin">
-        <body>An InputPin is a Pin that holds input values to be consumed by an Action.</body>
-      </ownedComment>
-      <ownedRule xmi:id="InputPin-outgoing_edges_structured_only" name="outgoing_edges_structured_only" constrainedElement="InputPin">
-        <ownedComment xmi:id="InputPin-outgoing_edges_structured_only-_ownedComment.0" annotatedElement="InputPin-outgoing_edges_structured_only">
-          <body>An InputPin may have outgoing ActivityEdges only when it is owned by a StructuredActivityNode, and these edges must target a node contained (directly or indirectly) in the owning StructuredActivityNode.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="InputPin-outgoing_edges_structured_only-_specification">
-          <language>OCL</language>
-          <body>outgoing->notEmpty() implies&#xD;
-	action&lt;>null and&#xD;
-	action.oclIsKindOf(StructuredActivityNode) and&#xD;
-	action.oclAsType(StructuredActivityNode).allOwnedNodes()->includesAll(outgoing.target)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="InputPin-_generalization.0" general="Pin"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="InvocationAction" name="InvocationAction" isAbstract="true">
-      <ownedComment xmi:id="InvocationAction-_ownedComment.0" annotatedElement="InvocationAction">
-        <body>InvocationAction is an abstract class for the various actions that request Behavior invocation.</body>
-      </ownedComment>
-      <generalization xmi:id="InvocationAction-_generalization.0" general="Action"/>
-      <ownedAttribute xmi:id="InvocationAction-argument" name="argument" type="InputPin" isOrdered="true" aggregation="composite" subsettedProperty="Action-input" association="A_argument_invocationAction">
-        <ownedComment xmi:id="InvocationAction-argument-_ownedComment.0" annotatedElement="InvocationAction-argument">
-          <body>The InputPins that provide the argument values passed in the invocation request.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="InvocationAction-argument-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InvocationAction-argument-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="InvocationAction-onPort" name="onPort" type="Port" association="A_onPort_invocationAction">
-        <ownedComment xmi:id="InvocationAction-onPort-_ownedComment.0" annotatedElement="InvocationAction-onPort">
-          <body>For CallOperationActions, SendSignalActions, and SendObjectActions, an optional Port of the target object through which the invocation request is sent.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="InvocationAction-onPort-_lowerValue"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="LinkAction" name="LinkAction" isAbstract="true">
-      <ownedComment xmi:id="LinkAction-_ownedComment.0" annotatedElement="LinkAction">
-        <body>LinkAction is an abstract class for all Actions that identify the links to be acted on using LinkEndData.</body>
-      </ownedComment>
-      <ownedRule xmi:id="LinkAction-same_pins" name="same_pins" constrainedElement="LinkAction">
-        <ownedComment xmi:id="LinkAction-same_pins-_ownedComment.0" annotatedElement="LinkAction-same_pins">
-          <body>The inputValue InputPins is the same as the union of all the InputPins referenced by the endData.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="LinkAction-same_pins-_specification">
-          <language>OCL</language>
-          <body>inputValue->asBag()=endData.allPins()</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="LinkAction-same_association" name="same_association" constrainedElement="LinkAction">
-        <ownedComment xmi:id="LinkAction-same_association-_ownedComment.0" annotatedElement="LinkAction-same_association">
-          <body>The ends of the endData must all be from the same Association and include all and only the memberEnds of that association.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="LinkAction-same_association-_specification">
-          <language>OCL</language>
-          <body>endData.end = self.association().memberEnd->asBag()</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="LinkAction-not_static" name="not_static" constrainedElement="LinkAction">
-        <ownedComment xmi:id="LinkAction-not_static-_ownedComment.0" annotatedElement="LinkAction-not_static">
-          <body>The ends of the endData must not be static.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="LinkAction-not_static-_specification">
-          <language>OCL</language>
-          <body>endData->forAll(not end.isStatic)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="LinkAction-_generalization.0" general="Action"/>
-      <ownedAttribute xmi:id="LinkAction-endData" name="endData" type="LinkEndData" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_endData_linkAction">
-        <ownedComment xmi:id="LinkAction-endData-_ownedComment.0" annotatedElement="LinkAction-endData">
-          <body>The LinkEndData identifying the values on the ends of the links acting on by this LinkAction.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="LinkAction-endData-_lowerValue" value="2"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="LinkAction-endData-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="LinkAction-inputValue" name="inputValue" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_inputValue_linkAction">
-        <ownedComment xmi:id="LinkAction-inputValue-_ownedComment.0" annotatedElement="LinkAction-inputValue">
-          <body>InputPins used by the LinkEndData of the LinkAction.</body>
-        </ownedComment>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="LinkAction-inputValue-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="LinkAction-association" name="association" bodyCondition="LinkAction-association-spec" isQuery="true">
-        <ownedComment xmi:id="LinkAction-association-_ownedComment.0" annotatedElement="LinkAction-association">
-          <body>Returns the Association acted on by this LinkAction.</body>
-        </ownedComment>
-        <ownedRule xmi:id="LinkAction-association-spec" name="spec" constrainedElement="LinkAction-association">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="LinkAction-association-spec-_specification">
-            <language>OCL</language>
-            <body>result = (endData->asSequence()->first().end.association)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="LinkAction-association-result" name="result" type="Association" direction="return"/>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="LinkEndCreationData" name="LinkEndCreationData">
-      <ownedComment xmi:id="LinkEndCreationData-_ownedComment.0" annotatedElement="LinkEndCreationData">
-        <body>LinkEndCreationData is LinkEndData used to provide values for one end of a link to be created by a CreateLinkAction.</body>
-      </ownedComment>
-      <ownedRule xmi:id="LinkEndCreationData-insertAt_pin" name="insertAt_pin" constrainedElement="LinkEndCreationData">
-        <ownedComment xmi:id="LinkEndCreationData-insertAt_pin-_ownedComment.0" annotatedElement="LinkEndCreationData-insertAt_pin">
-          <body>LinkEndCreationData for ordered Association ends must have a single insertAt InputPin for the insertion point with type UnlimitedNatural and multiplicity of 1..1, if isReplaceAll=false, and must have no InputPin for the insertion point when the association ends are unordered.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="LinkEndCreationData-insertAt_pin-_specification">
-          <language>OCL</language>
-          <body>if  not end.isOrdered
-then insertAt = null
-else
-	not isReplaceAll=false implies
-	insertAt &lt;> null and insertAt->forAll(type=UnlimitedNatural and is(1,1))
-endif</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="LinkEndCreationData-_generalization.0" general="LinkEndData"/>
-      <ownedAttribute xmi:id="LinkEndCreationData-insertAt" name="insertAt" type="InputPin" association="A_insertAt_linkEndCreationData">
-        <ownedComment xmi:id="LinkEndCreationData-insertAt-_ownedComment.0" annotatedElement="LinkEndCreationData-insertAt">
-          <body>For ordered Association ends, the InputPin that provides the position where the new link should be inserted or where an existing link should be moved to. The type of the insertAt InputPin is UnlimitedNatural, but the input cannot be zero. It is omitted for Association ends that are not ordered.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="LinkEndCreationData-insertAt-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="LinkEndCreationData-isReplaceAll" name="isReplaceAll">
-        <ownedComment xmi:id="LinkEndCreationData-isReplaceAll-_ownedComment.0" annotatedElement="LinkEndCreationData-isReplaceAll">
-          <body>Specifies whether the existing links emanating from the object on this end should be destroyed before creating a new link.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="LinkEndCreationData-isReplaceAll-_defaultValue"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="LinkEndCreationData-allPins" name="allPins" bodyCondition="LinkEndCreationData-allPins-spec" isQuery="true" redefinedOperation="LinkEndData-allPins">
-        <ownedComment xmi:id="LinkEndCreationData-allPins-_ownedComment.0" annotatedElement="LinkEndCreationData-allPins">
-          <body>Adds the insertAt InputPin (if any) to the set of all Pins.</body>
-        </ownedComment>
-        <ownedRule xmi:id="LinkEndCreationData-allPins-spec" name="spec" constrainedElement="LinkEndCreationData-allPins">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="LinkEndCreationData-allPins-spec-_specification">
-            <language>OCL</language>
-            <body>result = (self.LinkEndData::allPins()->including(insertAt))</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="LinkEndCreationData-allPins-result" name="result" type="InputPin" isUnique="false" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="LinkEndCreationData-allPins-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="LinkEndCreationData-allPins-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="LinkEndData" name="LinkEndData">
-      <ownedComment xmi:id="LinkEndData-_ownedComment.0" annotatedElement="LinkEndData">
-        <body>LinkEndData is an Element that identifies on end of a link to be read or written by a LinkAction. As a link (that is not a link object) cannot be passed as a runtime value to or from an Action, it is instead identified by its end objects and qualifier values, if any. A LinkEndData instance provides these values for a single Association end.</body>
-      </ownedComment>
-      <ownedRule xmi:id="LinkEndData-same_type" name="same_type" constrainedElement="LinkEndData">
-        <ownedComment xmi:id="LinkEndData-same_type-_ownedComment.0" annotatedElement="LinkEndData-same_type">
-          <body>The type of the value InputPin conforms to the type of the Association end.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="LinkEndData-same_type-_specification">
-          <language>OCL</language>
-          <body>value&lt;>null implies value.type.conformsTo(end.type)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="LinkEndData-multiplicity" name="multiplicity" constrainedElement="LinkEndData">
-        <ownedComment xmi:id="LinkEndData-multiplicity-_ownedComment.0" annotatedElement="LinkEndData-multiplicity">
-          <body>The multiplicity of the value InputPin must be 1..1.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="LinkEndData-multiplicity-_specification">
-          <language>OCL</language>
-          <body>value&lt;>null implies value.is(1,1)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="LinkEndData-end_object_input_pin" name="end_object_input_pin" constrainedElement="LinkEndData">
-        <ownedComment xmi:id="LinkEndData-end_object_input_pin-_ownedComment.0" annotatedElement="LinkEndData-end_object_input_pin">
-          <body>The value InputPin is not also the qualifier value InputPin.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="LinkEndData-end_object_input_pin-_specification">
-          <language>OCL</language>
-          <body>value->excludesAll(qualifier.value)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="LinkEndData-property_is_association_end" name="property_is_association_end" constrainedElement="LinkEndData">
-        <ownedComment xmi:id="LinkEndData-property_is_association_end-_ownedComment.0" annotatedElement="LinkEndData-property_is_association_end">
-          <body>The Property must be an Association memberEnd.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="LinkEndData-property_is_association_end-_specification">
-          <language>OCL</language>
-          <body>end.association &lt;> null</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="LinkEndData-qualifiers" name="qualifiers" constrainedElement="LinkEndData">
-        <ownedComment xmi:id="LinkEndData-qualifiers-_ownedComment.0" annotatedElement="LinkEndData-qualifiers">
-          <body>The qualifiers must be qualifiers of the Association end.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="LinkEndData-qualifiers-_specification">
-          <language>OCL</language>
-          <body>end.qualifier->includesAll(qualifier.qualifier)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="LinkEndData-_generalization.0" general="Element"/>
-      <ownedAttribute xmi:id="LinkEndData-end" name="end" type="Property" association="A_end_linkEndData">
-        <ownedComment xmi:id="LinkEndData-end-_ownedComment.0" annotatedElement="LinkEndData-end">
-          <body>The Association end for which this LinkEndData specifies values.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="LinkEndData-qualifier" name="qualifier" type="QualifierValue" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_qualifier_linkEndData">
-        <ownedComment xmi:id="LinkEndData-qualifier-_ownedComment.0" annotatedElement="LinkEndData-qualifier">
-          <body>A set of QualifierValues used to provide values for the qualifiers of the end.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="LinkEndData-qualifier-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="LinkEndData-qualifier-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="LinkEndData-value" name="value" type="InputPin" association="A_value_linkEndData">
-        <ownedComment xmi:id="LinkEndData-value-_ownedComment.0" annotatedElement="LinkEndData-value">
-          <body>The InputPin that provides the specified value for the given end. This InputPin is omitted if the LinkEndData specifies the &quot;open&quot; end for a ReadLinkAction.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="LinkEndData-value-_lowerValue"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="LinkEndData-allPins" name="allPins" bodyCondition="LinkEndData-allPins-spec" isQuery="true">
-        <ownedComment xmi:id="LinkEndData-allPins-_ownedComment.0" annotatedElement="LinkEndData-allPins">
-          <body>Returns all the InputPins referenced by this LinkEndData. By default this includes the value and qualifier InputPins, but subclasses may override the operation to add other InputPins.</body>
-        </ownedComment>
-        <ownedRule xmi:id="LinkEndData-allPins-spec" name="spec" constrainedElement="LinkEndData-allPins">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="LinkEndData-allPins-spec-_specification">
-            <language>OCL</language>
-            <body>result = (value->asBag()->union(qualifier.value))</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="LinkEndData-allPins-result" name="result" type="InputPin" isUnique="false" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="LinkEndData-allPins-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="LinkEndData-allPins-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="LinkEndDestructionData" name="LinkEndDestructionData">
-      <ownedComment xmi:id="LinkEndDestructionData-_ownedComment.0" annotatedElement="LinkEndDestructionData">
-        <body>LinkEndDestructionData is LinkEndData used to provide values for one end of a link to be destroyed by a DestroyLinkAction.</body>
-      </ownedComment>
-      <ownedRule xmi:id="LinkEndDestructionData-destroyAt_pin" name="destroyAt_pin" constrainedElement="LinkEndDestructionData">
-        <ownedComment xmi:id="LinkEndDestructionData-destroyAt_pin-_ownedComment.0" annotatedElement="LinkEndDestructionData-destroyAt_pin">
-          <body>LinkEndDestructionData for ordered, nonunique Association ends must have a single destroyAt InputPin if isDestroyDuplicates is false, which must be of type UnlimitedNatural and have a multiplicity of 1..1. Otherwise, the action has no destroyAt input pin.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="LinkEndDestructionData-destroyAt_pin-_specification">
-          <language>OCL</language>
-          <body>if  not end.isOrdered or end.isUnique or isDestroyDuplicates&#xD;
-then destroyAt = null&#xD;
-else&#xD;
-	destroyAt &lt;> null and &#xD;
-	destroyAt->forAll(type=UnlimitedNatural and is(1,1))&#xD;
-endif</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="LinkEndDestructionData-_generalization.0" general="LinkEndData"/>
-      <ownedAttribute xmi:id="LinkEndDestructionData-destroyAt" name="destroyAt" type="InputPin" association="A_destroyAt_linkEndDestructionData">
-        <ownedComment xmi:id="LinkEndDestructionData-destroyAt-_ownedComment.0" annotatedElement="LinkEndDestructionData-destroyAt">
-          <body>The InputPin that provides the position of an existing link to be destroyed in an ordered, nonunique Association end. The type of the destroyAt InputPin is UnlimitedNatural, but the value cannot be zero or unlimited.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="LinkEndDestructionData-destroyAt-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="LinkEndDestructionData-isDestroyDuplicates" name="isDestroyDuplicates">
-        <ownedComment xmi:id="LinkEndDestructionData-isDestroyDuplicates-_ownedComment.0" annotatedElement="LinkEndDestructionData-isDestroyDuplicates">
-          <body>Specifies whether to destroy duplicates of the value in nonunique Association ends.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="LinkEndDestructionData-isDestroyDuplicates-_defaultValue"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="LinkEndDestructionData-allPins" name="allPins" bodyCondition="LinkEndDestructionData-allPins-spec" isQuery="true" redefinedOperation="LinkEndData-allPins">
-        <ownedComment xmi:id="LinkEndDestructionData-allPins-_ownedComment.0" annotatedElement="LinkEndDestructionData-allPins">
-          <body>Adds the destroyAt InputPin (if any) to the set of all Pins.</body>
-        </ownedComment>
-        <ownedRule xmi:id="LinkEndDestructionData-allPins-spec" name="spec" constrainedElement="LinkEndDestructionData-allPins">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="LinkEndDestructionData-allPins-spec-_specification">
-            <language>OCL</language>
-            <body>result = (self.LinkEndData::allPins()->including(destroyAt))</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="LinkEndDestructionData-allPins-result" name="result" type="InputPin" isUnique="false" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="LinkEndDestructionData-allPins-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="LinkEndDestructionData-allPins-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="LoopNode" name="LoopNode">
-      <ownedComment xmi:id="LoopNode-_ownedComment.0" annotatedElement="LoopNode">
-        <body>A LoopNode is a StructuredActivityNode that represents an iterative loop with setup, test, and body sections.</body>
-      </ownedComment>
-      <ownedRule xmi:id="LoopNode-result_no_incoming" name="result_no_incoming" constrainedElement="LoopNode">
-        <ownedComment xmi:id="LoopNode-result_no_incoming-_ownedComment.0" annotatedElement="LoopNode-result_no_incoming">
-          <body>The result OutputPins have no incoming edges.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="LoopNode-result_no_incoming-_specification">
-          <language>OCL</language>
-          <body>result.incoming->isEmpty()</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="LoopNode-input_edges" name="input_edges" constrainedElement="LoopNode">
-        <ownedComment xmi:id="LoopNode-input_edges-_ownedComment.0" annotatedElement="LoopNode-input_edges">
-          <body>The loopVariableInputs must not have outgoing edges.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="LoopNode-input_edges-_specification">
-          <language>OCL</language>
-          <body>loopVariableInput.outgoing->isEmpty()</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="LoopNode-executable_nodes" name="executable_nodes" constrainedElement="LoopNode">
-        <ownedComment xmi:id="LoopNode-executable_nodes-_ownedComment.0" annotatedElement="LoopNode-executable_nodes">
-          <body>The union of the ExecutableNodes in the setupPart, test and bodyPart of a LoopNode must be the same as the subset of nodes contained in the LoopNode (considered as a StructuredActivityNode) that are ExecutableNodes.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="LoopNode-executable_nodes-_specification">
-          <language>OCL</language>
-          <body>setupPart->union(test)->union(bodyPart)=node->select(oclIsKindOf(ExecutableNode)).oclAsType(ExecutableNode)->asSet()</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="LoopNode-body_output_pins" name="body_output_pins" constrainedElement="LoopNode">
-        <ownedComment xmi:id="LoopNode-body_output_pins-_ownedComment.0" annotatedElement="LoopNode-body_output_pins">
-          <body>The bodyOutput pins are OutputPins on Actions in the body of the LoopNode.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="LoopNode-body_output_pins-_specification">
-          <language>OCL</language>
-          <body>bodyPart.oclAsType(Action).allActions().output->includesAll(bodyOutput)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="LoopNode-setup_test_and_body" name="setup_test_and_body" constrainedElement="LoopNode">
-        <ownedComment xmi:id="LoopNode-setup_test_and_body-_ownedComment.0" annotatedElement="LoopNode-setup_test_and_body">
-          <body>The test and body parts of a ConditionalNode must be disjoint with each other.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="LoopNode-setup_test_and_body-_specification">
-          <language>OCL</language>
-          <body>setupPart->intersection(test)->isEmpty() and&#xD;
-setupPart->intersection(bodyPart)->isEmpty() and&#xD;
-test->intersection(bodyPart)->isEmpty()</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="LoopNode-matching_output_pins" name="matching_output_pins" constrainedElement="LoopNode">
-        <ownedComment xmi:id="LoopNode-matching_output_pins-_ownedComment.0" annotatedElement="LoopNode-matching_output_pins">
-          <body>A LoopNode must have the same number of bodyOutput Pins as loopVariables, and each bodyOutput Pin must be compatible with the corresponding loopVariable (by positional order) in type, multiplicity, ordering and uniqueness.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="LoopNode-matching_output_pins-_specification">
-          <language>OCL</language>
-          <body>bodyOutput->size()=loopVariable->size() and&#xD;
-Sequence{1..loopVariable->size()}->forAll(i |&#xD;
-	bodyOutput->at(i).type.conformsTo(loopVariable->at(i).type) and&#xD;
-	bodyOutput->at(i).isOrdered = loopVariable->at(i).isOrdered and&#xD;
-	bodyOutput->at(i).isUnique = loopVariable->at(i).isUnique and&#xD;
-	loopVariable->at(i).includesMultiplicity(bodyOutput->at(i)))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="LoopNode-matching_loop_variables" name="matching_loop_variables" constrainedElement="LoopNode">
-        <ownedComment xmi:id="LoopNode-matching_loop_variables-_ownedComment.0" annotatedElement="LoopNode-matching_loop_variables">
-          <body>A LoopNode must have the same number of loopVariableInputs and loopVariables, and they must match in type, uniqueness and multiplicity.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="LoopNode-matching_loop_variables-_specification">
-          <language>OCL</language>
-          <body>loopVariableInput->size()=loopVariable->size() and&#xD;
-loopVariableInput.type=loopVariable.type and&#xD;
-loopVariableInput.isUnique=loopVariable.isUnique and&#xD;
-loopVariableInput.lower=loopVariable.lower and&#xD;
-loopVariableInput.upper=loopVariable.upper</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="LoopNode-matching_result_pins" name="matching_result_pins" constrainedElement="LoopNode">
-        <ownedComment xmi:id="LoopNode-matching_result_pins-_ownedComment.0" annotatedElement="LoopNode-matching_result_pins">
-          <body>A LoopNode must have the same number of result OutputPins and loopVariables, and they must match in type, uniqueness and multiplicity.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="LoopNode-matching_result_pins-_specification">
-          <language>OCL</language>
-          <body>result->size()=loopVariable->size() and&#xD;
-result.type=loopVariable.type and&#xD;
-result.isUnique=loopVariable.isUnique and&#xD;
-result.lower=loopVariable.lower and&#xD;
-result.upper=loopVariable.upper</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="LoopNode-loop_variable_outgoing" name="loop_variable_outgoing" constrainedElement="LoopNode">
-        <ownedComment xmi:id="LoopNode-loop_variable_outgoing-_ownedComment.0" annotatedElement="LoopNode-loop_variable_outgoing">
-          <body>All ActivityEdges outgoing from loopVariable OutputPins must have targets within the LoopNode.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="LoopNode-loop_variable_outgoing-_specification">
-          <language>OCL</language>
-          <body>allOwnedNodes()->includesAll(loopVariable.outgoing.target)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="LoopNode-_generalization.0" general="StructuredActivityNode"/>
-      <ownedAttribute xmi:id="LoopNode-bodyOutput" name="bodyOutput" type="OutputPin" isOrdered="true" association="A_bodyOutput_loopNode">
-        <ownedComment xmi:id="LoopNode-bodyOutput-_ownedComment.0" annotatedElement="LoopNode-bodyOutput">
-          <body>The OutputPins on Actions within the bodyPart, the values of which are moved to the loopVariable OutputPins after the completion of each execution of the bodyPart, before the next iteration of the loop begins or before the loop exits.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="LoopNode-bodyOutput-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="LoopNode-bodyOutput-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="LoopNode-bodyPart" name="bodyPart" type="ExecutableNode" association="A_bodyPart_loopNode">
-        <ownedComment xmi:id="LoopNode-bodyPart-_ownedComment.0" annotatedElement="LoopNode-bodyPart">
-          <body>The set of ExecutableNodes that perform the repetitive computations of the loop. The bodyPart is executed as long as the test section produces a true value.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="LoopNode-bodyPart-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="LoopNode-bodyPart-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="LoopNode-decider" name="decider" type="OutputPin" association="A_decider_loopNode">
-        <ownedComment xmi:id="LoopNode-decider-_ownedComment.0" annotatedElement="LoopNode-decider">
-          <body>An OutputPin on an Action in the test section whose Boolean value determines whether to continue executing the loop bodyPart.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="LoopNode-isTestedFirst" name="isTestedFirst">
-        <ownedComment xmi:id="LoopNode-isTestedFirst-_ownedComment.0" annotatedElement="LoopNode-isTestedFirst">
-          <body>If true, the test is performed before the first execution of the bodyPart. If false, the bodyPart is executed once before the test is performed.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="LoopNode-isTestedFirst-_defaultValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="LoopNode-loopVariable" name="loopVariable" type="OutputPin" isOrdered="true" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_loopVariable_loopNode">
-        <ownedComment xmi:id="LoopNode-loopVariable-_ownedComment.0" annotatedElement="LoopNode-loopVariable">
-          <body>A list of OutputPins that hold the values of the loop variables during an execution of the loop. When the test fails, the values are moved to the result OutputPins of the loop.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="LoopNode-loopVariable-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="LoopNode-loopVariable-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="LoopNode-loopVariableInput" name="loopVariableInput" type="InputPin" isOrdered="true" aggregation="composite" redefinedProperty="StructuredActivityNode-structuredNodeInput" association="A_loopVariableInput_loopNode">
-        <ownedComment xmi:id="LoopNode-loopVariableInput-_ownedComment.0" annotatedElement="LoopNode-loopVariableInput">
-          <body>A list of InputPins whose values are moved into the loopVariable Pins before the first iteration of the loop.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="LoopNode-loopVariableInput-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="LoopNode-loopVariableInput-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="LoopNode-result" name="result" type="OutputPin" isOrdered="true" aggregation="composite" redefinedProperty="StructuredActivityNode-structuredNodeOutput" association="A_result_loopNode">
-        <ownedComment xmi:id="LoopNode-result-_ownedComment.0" annotatedElement="LoopNode-result">
-          <body>A list of OutputPins that receive the loopVariable values after the last iteration of the loop and constitute the output of the LoopNode.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="LoopNode-result-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="LoopNode-result-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="LoopNode-setupPart" name="setupPart" type="ExecutableNode" association="A_setupPart_loopNode">
-        <ownedComment xmi:id="LoopNode-setupPart-_ownedComment.0" annotatedElement="LoopNode-setupPart">
-          <body>The set of ExecutableNodes executed before the first iteration of the loop, in order to initialize values or perform other setup computations.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="LoopNode-setupPart-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="LoopNode-setupPart-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="LoopNode-test" name="test" type="ExecutableNode" association="A_test_loopNode">
-        <ownedComment xmi:id="LoopNode-test-_ownedComment.0" annotatedElement="LoopNode-test">
-          <body>The set of ExecutableNodes executed in order to provide the test result for the loop.</body>
-        </ownedComment>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="LoopNode-test-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="LoopNode-allActions" name="allActions" bodyCondition="LoopNode-allActions-spec" isQuery="true" redefinedOperation="Action-allActions StructuredActivityNode-allActions">
-        <ownedComment xmi:id="LoopNode-allActions-_ownedComment.0" annotatedElement="LoopNode-allActions">
-          <body>Return only this LoopNode. This prevents Actions within the LoopNode from having their OutputPins used as bodyOutputs or decider Pins in containing LoopNodes or ConditionalNodes.</body>
-        </ownedComment>
-        <ownedRule xmi:id="LoopNode-allActions-spec" name="spec" constrainedElement="LoopNode-allActions">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="LoopNode-allActions-spec-_specification">
-            <language>OCL</language>
-            <body>result = (self->asSet())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="LoopNode-allActions-result" name="result" type="Action" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="LoopNode-allActions-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="LoopNode-allActions-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="LoopNode-sourceNodes" name="sourceNodes" bodyCondition="LoopNode-sourceNodes-spec" isQuery="true" redefinedOperation="StructuredActivityNode-sourceNodes">
-        <ownedComment xmi:id="LoopNode-sourceNodes-_ownedComment.0" annotatedElement="LoopNode-sourceNodes">
-          <body>Return the loopVariable OutputPins in addition to other source nodes for the LoopNode as a StructuredActivityNode.</body>
-        </ownedComment>
-        <ownedRule xmi:id="LoopNode-sourceNodes-spec" name="spec" constrainedElement="LoopNode-sourceNodes">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="LoopNode-sourceNodes-spec-_specification">
-            <language>OCL</language>
-            <body>result = (self.StructuredActivityNode::sourceNodes()->union(loopVariable))</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="LoopNode-sourceNodes-result" name="result" type="ActivityNode" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="LoopNode-sourceNodes-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="LoopNode-sourceNodes-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="OpaqueAction" name="OpaqueAction">
-      <ownedComment xmi:id="OpaqueAction-_ownedComment.0" annotatedElement="OpaqueAction">
-        <body>An OpaqueAction is an Action whose functionality is not specified within UML.</body>
-      </ownedComment>
-      <ownedRule xmi:id="OpaqueAction-language_body_size" name="language_body_size" constrainedElement="OpaqueAction">
-        <ownedComment xmi:id="OpaqueAction-language_body_size-_ownedComment.0" annotatedElement="OpaqueAction-language_body_size">
-          <body>If the language attribute is not empty, then the size of the body and language lists must be the same.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="OpaqueAction-language_body_size-_specification">
-          <language>OCL</language>
-          <body>language->notEmpty() implies (_'body'->size() = language->size())</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="OpaqueAction-_generalization.0" general="Action"/>
-      <ownedAttribute xmi:id="OpaqueAction-body" name="body" isOrdered="true" isUnique="false">
-        <ownedComment xmi:id="OpaqueAction-body-_ownedComment.0" annotatedElement="OpaqueAction-body">
-          <body>Provides a textual specification of the functionality of the Action, in one or more languages other than UML.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="OpaqueAction-body-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="OpaqueAction-body-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="OpaqueAction-inputValue" name="inputValue" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_inputValue_opaqueAction">
-        <ownedComment xmi:id="OpaqueAction-inputValue-_ownedComment.0" annotatedElement="OpaqueAction-inputValue">
-          <body>The InputPins providing inputs to the OpaqueAction.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="OpaqueAction-inputValue-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="OpaqueAction-inputValue-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="OpaqueAction-language" name="language" isOrdered="true">
-        <ownedComment xmi:id="OpaqueAction-language-_ownedComment.0" annotatedElement="OpaqueAction-language">
-          <body>If provided, a specification of the language used for each of the body Strings.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="OpaqueAction-language-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="OpaqueAction-language-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="OpaqueAction-outputValue" name="outputValue" type="OutputPin" aggregation="composite" subsettedProperty="Action-output" association="A_outputValue_opaqueAction">
-        <ownedComment xmi:id="OpaqueAction-outputValue-_ownedComment.0" annotatedElement="OpaqueAction-outputValue">
-          <body>The OutputPins on which the OpaqueAction provides outputs.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="OpaqueAction-outputValue-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="OpaqueAction-outputValue-_upperValue" value="*"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="OutputPin" name="OutputPin">
-      <ownedComment xmi:id="OutputPin-_ownedComment.0" annotatedElement="OutputPin">
-        <body>An OutputPin is a Pin that holds output values produced by an Action.</body>
-      </ownedComment>
-      <ownedRule xmi:id="OutputPin-incoming_edges_structured_only" name="incoming_edges_structured_only" constrainedElement="OutputPin">
-        <ownedComment xmi:id="OutputPin-incoming_edges_structured_only-_ownedComment.0" annotatedElement="OutputPin-incoming_edges_structured_only">
-          <body>An OutputPin may have incoming ActivityEdges only when it is owned by a StructuredActivityNode, and these edges must have sources contained (directly or indirectly) in the owning StructuredActivityNode.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="OutputPin-incoming_edges_structured_only-_specification">
-          <language>OCL</language>
-          <body>incoming->notEmpty() implies&#xD;
-	action&lt;>null and&#xD;
-	action.oclIsKindOf(StructuredActivityNode) and&#xD;
-	action.oclAsType(StructuredActivityNode).allOwnedNodes()->includesAll(incoming.source)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="OutputPin-_generalization.0" general="Pin"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Pin" name="Pin" isAbstract="true">
-      <ownedComment xmi:id="Pin-_ownedComment.0" annotatedElement="Pin">
-        <body>A Pin is an ObjectNode and MultiplicityElement that provides input values to an Action or accepts output values from an Action.</body>
-      </ownedComment>
-      <ownedRule xmi:id="Pin-control_pins" name="control_pins" constrainedElement="Pin">
-        <ownedComment xmi:id="Pin-control_pins-_ownedComment.0" annotatedElement="Pin-control_pins">
-          <body>A control Pin has a control type.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Pin-control_pins-_specification">
-          <language>OCL</language>
-          <body>isControl implies isControlType</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Pin-not_unique" name="not_unique" constrainedElement="Pin">
-        <ownedComment xmi:id="Pin-not_unique-_ownedComment.0" annotatedElement="Pin-not_unique">
-          <body>Pin multiplicity is not unique.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Pin-not_unique-_specification">
-          <language>OCL</language>
-          <body>not isUnique</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="Pin-_generalization.0" general="ObjectNode"/>
-      <generalization xmi:id="Pin-_generalization.1" general="MultiplicityElement"/>
-      <ownedAttribute xmi:id="Pin-isControl" name="isControl">
-        <ownedComment xmi:id="Pin-isControl-_ownedComment.0" annotatedElement="Pin-isControl">
-          <body>Indicates whether the Pin provides data to the Action or just controls how the Action executes.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Pin-isControl-_defaultValue"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="QualifierValue" name="QualifierValue">
-      <ownedComment xmi:id="QualifierValue-_ownedComment.0" annotatedElement="QualifierValue">
-        <body>A QualifierValue is an Element that is used as part of LinkEndData to provide the value for a single qualifier of the end given by the LinkEndData.</body>
-      </ownedComment>
-      <ownedRule xmi:id="QualifierValue-multiplicity_of_qualifier" name="multiplicity_of_qualifier" constrainedElement="QualifierValue">
-        <ownedComment xmi:id="QualifierValue-multiplicity_of_qualifier-_ownedComment.0" annotatedElement="QualifierValue-multiplicity_of_qualifier">
-          <body>The multiplicity of the value InputPin is 1..1.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="QualifierValue-multiplicity_of_qualifier-_specification">
-          <language>OCL</language>
-          <body>value.is(1,1)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="QualifierValue-type_of_qualifier" name="type_of_qualifier" constrainedElement="QualifierValue">
-        <ownedComment xmi:id="QualifierValue-type_of_qualifier-_ownedComment.0" annotatedElement="QualifierValue-type_of_qualifier">
-          <body>The type of the value InputPin conforms to the type of the qualifier Property.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="QualifierValue-type_of_qualifier-_specification">
-          <language>OCL</language>
-          <body>value.type.conformsTo(qualifier.type)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="QualifierValue-qualifier_attribute" name="qualifier_attribute" constrainedElement="QualifierValue">
-        <ownedComment xmi:id="QualifierValue-qualifier_attribute-_ownedComment.0" annotatedElement="QualifierValue-qualifier_attribute">
-          <body>The qualifier must be a qualifier of the Association end of the linkEndData that owns this QualifierValue.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="QualifierValue-qualifier_attribute-_specification">
-          <language>OCL</language>
-          <body>linkEndData.end.qualifier->includes(qualifier)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="QualifierValue-_generalization.0" general="Element"/>
-      <ownedAttribute xmi:id="QualifierValue-qualifier" name="qualifier" type="Property" association="A_qualifier_qualifierValue">
-        <ownedComment xmi:id="QualifierValue-qualifier-_ownedComment.0" annotatedElement="QualifierValue-qualifier">
-          <body>The qualifier Property for which the value is to be specified.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="QualifierValue-value" name="value" type="InputPin" association="A_value_qualifierValue">
-        <ownedComment xmi:id="QualifierValue-value-_ownedComment.0" annotatedElement="QualifierValue-value">
-          <body>The InputPin from which the specified value for the qualifier is taken.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="RaiseExceptionAction" name="RaiseExceptionAction">
-      <ownedComment xmi:id="RaiseExceptionAction-_ownedComment.0" annotatedElement="RaiseExceptionAction">
-        <body>A RaiseExceptionAction is an Action that causes an exception to occur. The input value becomes the exception object.</body>
-      </ownedComment>
-      <generalization xmi:id="RaiseExceptionAction-_generalization.0" general="Action"/>
-      <ownedAttribute xmi:id="RaiseExceptionAction-exception" name="exception" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_exception_raiseExceptionAction">
-        <ownedComment xmi:id="RaiseExceptionAction-exception-_ownedComment.0" annotatedElement="RaiseExceptionAction-exception">
-          <body>An InputPin whose value becomes the exception object.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ReadExtentAction" name="ReadExtentAction">
-      <ownedComment xmi:id="ReadExtentAction-_ownedComment.0" annotatedElement="ReadExtentAction">
-        <body>A ReadExtentAction is an Action that retrieves the current instances of a Classifier.</body>
-      </ownedComment>
-      <ownedRule xmi:id="ReadExtentAction-type_is_classifier" name="type_is_classifier" constrainedElement="ReadExtentAction">
-        <ownedComment xmi:id="ReadExtentAction-type_is_classifier-_ownedComment.0" annotatedElement="ReadExtentAction-type_is_classifier">
-          <body>The type of the result OutputPin is the classifier.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReadExtentAction-type_is_classifier-_specification">
-          <language>OCL</language>
-          <body>result.type = classifier</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ReadExtentAction-multiplicity_of_result" name="multiplicity_of_result" constrainedElement="ReadExtentAction">
-        <ownedComment xmi:id="ReadExtentAction-multiplicity_of_result-_ownedComment.0" annotatedElement="ReadExtentAction-multiplicity_of_result">
-          <body>The multiplicity of the result OutputPin is 0..*.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReadExtentAction-multiplicity_of_result-_specification">
-          <language>OCL</language>
-          <body>result.is(0,*)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="ReadExtentAction-_generalization.0" general="Action"/>
-      <ownedAttribute xmi:id="ReadExtentAction-classifier" name="classifier" type="Classifier" association="A_classifier_readExtentAction">
-        <ownedComment xmi:id="ReadExtentAction-classifier-_ownedComment.0" annotatedElement="ReadExtentAction-classifier">
-          <body>The Classifier whose instances are to be retrieved.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ReadExtentAction-result" name="result" type="OutputPin" aggregation="composite" subsettedProperty="Action-output" association="A_result_readExtentAction">
-        <ownedComment xmi:id="ReadExtentAction-result-_ownedComment.0" annotatedElement="ReadExtentAction-result">
-          <body>The OutputPin on which the Classifier instances are placed.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ReadIsClassifiedObjectAction" name="ReadIsClassifiedObjectAction">
-      <ownedComment xmi:id="ReadIsClassifiedObjectAction-_ownedComment.0" annotatedElement="ReadIsClassifiedObjectAction">
-        <body>A ReadIsClassifiedObjectAction is an Action that determines whether an object is classified by a given Classifier.</body>
-      </ownedComment>
-      <ownedRule xmi:id="ReadIsClassifiedObjectAction-no_type" name="no_type" constrainedElement="ReadIsClassifiedObjectAction">
-        <ownedComment xmi:id="ReadIsClassifiedObjectAction-no_type-_ownedComment.0" annotatedElement="ReadIsClassifiedObjectAction-no_type">
-          <body>The object InputPin has no type.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReadIsClassifiedObjectAction-no_type-_specification">
-          <language>OCL</language>
-          <body>object.type = null</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ReadIsClassifiedObjectAction-multiplicity_of_output" name="multiplicity_of_output" constrainedElement="ReadIsClassifiedObjectAction">
-        <ownedComment xmi:id="ReadIsClassifiedObjectAction-multiplicity_of_output-_ownedComment.0" annotatedElement="ReadIsClassifiedObjectAction-multiplicity_of_output">
-          <body>The multiplicity of the result OutputPin is 1..1.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReadIsClassifiedObjectAction-multiplicity_of_output-_specification">
-          <language>OCL</language>
-          <body>result.is(1,1)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ReadIsClassifiedObjectAction-boolean_result" name="boolean_result" constrainedElement="ReadIsClassifiedObjectAction">
-        <ownedComment xmi:id="ReadIsClassifiedObjectAction-boolean_result-_ownedComment.0" annotatedElement="ReadIsClassifiedObjectAction-boolean_result">
-          <body>The type of the result OutputPin is Boolean.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReadIsClassifiedObjectAction-boolean_result-_specification">
-          <language>OCL</language>
-          <body>result.type = Boolean</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ReadIsClassifiedObjectAction-multiplicity_of_input" name="multiplicity_of_input" constrainedElement="ReadIsClassifiedObjectAction">
-        <ownedComment xmi:id="ReadIsClassifiedObjectAction-multiplicity_of_input-_ownedComment.0" annotatedElement="ReadIsClassifiedObjectAction-multiplicity_of_input">
-          <body>The multiplicity of the object InputPin is 1..1.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReadIsClassifiedObjectAction-multiplicity_of_input-_specification">
-          <language>OCL</language>
-          <body>object.is(1,1)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="ReadIsClassifiedObjectAction-_generalization.0" general="Action"/>
-      <ownedAttribute xmi:id="ReadIsClassifiedObjectAction-classifier" name="classifier" type="Classifier" association="A_classifier_readIsClassifiedObjectAction">
-        <ownedComment xmi:id="ReadIsClassifiedObjectAction-classifier-_ownedComment.0" annotatedElement="ReadIsClassifiedObjectAction-classifier">
-          <body>The Classifier against which the classification of the input object is tested.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ReadIsClassifiedObjectAction-isDirect" name="isDirect">
-        <ownedComment xmi:id="ReadIsClassifiedObjectAction-isDirect-_ownedComment.0" annotatedElement="ReadIsClassifiedObjectAction-isDirect">
-          <body>Indicates whether the input object must be directly classified by the given Classifier or whether it may also be an instance of a specialization of the given Classifier.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="ReadIsClassifiedObjectAction-isDirect-_defaultValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ReadIsClassifiedObjectAction-object" name="object" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_object_readIsClassifiedObjectAction">
-        <ownedComment xmi:id="ReadIsClassifiedObjectAction-object-_ownedComment.0" annotatedElement="ReadIsClassifiedObjectAction-object">
-          <body>The InputPin that holds the object whose classification is to be tested.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ReadIsClassifiedObjectAction-result" name="result" type="OutputPin" aggregation="composite" subsettedProperty="Action-output" association="A_result_readIsClassifiedObjectAction">
-        <ownedComment xmi:id="ReadIsClassifiedObjectAction-result-_ownedComment.0" annotatedElement="ReadIsClassifiedObjectAction-result">
-          <body>The OutputPin that holds the Boolean result of the test.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ReadLinkAction" name="ReadLinkAction">
-      <ownedComment xmi:id="ReadLinkAction-_ownedComment.0" annotatedElement="ReadLinkAction">
-        <body>A ReadLinkAction is a LinkAction that navigates across an Association to retrieve the objects on one end.</body>
-      </ownedComment>
-      <ownedRule xmi:id="ReadLinkAction-type_and_ordering" name="type_and_ordering" constrainedElement="ReadLinkAction">
-        <ownedComment xmi:id="ReadLinkAction-type_and_ordering-_ownedComment.0" annotatedElement="ReadLinkAction-type_and_ordering">
-          <body>The type and ordering of the result OutputPin are same as the type and ordering of the open Association end.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReadLinkAction-type_and_ordering-_specification">
-          <language>OCL</language>
-          <body>self.openEnd()->forAll(type=result.type and isOrdered=result.isOrdered)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ReadLinkAction-compatible_multiplicity" name="compatible_multiplicity" constrainedElement="ReadLinkAction">
-        <ownedComment xmi:id="ReadLinkAction-compatible_multiplicity-_ownedComment.0" annotatedElement="ReadLinkAction-compatible_multiplicity">
-          <body>The multiplicity of the open Association end must be compatible with the multiplicity of the result OutputPin.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReadLinkAction-compatible_multiplicity-_specification">
-          <language>OCL</language>
-          <body>self.openEnd()->first().compatibleWith(result)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ReadLinkAction-visibility" name="visibility" constrainedElement="ReadLinkAction">
-        <ownedComment xmi:id="ReadLinkAction-visibility-_ownedComment.0" annotatedElement="ReadLinkAction-visibility">
-          <body>Visibility of the open end must allow access from the object performing the action.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReadLinkAction-visibility-_specification">
-          <language>OCL</language>
-          <body>let openEnd : Property = self.openEnd()->first() in
-  openEnd.visibility = VisibilityKind::public or 
-  endData->exists(oed | 
-    oed.end&lt;>openEnd and 
-    (_'context' = oed.end.type or 
-      (openEnd.visibility = VisibilityKind::protected and 
-        _'context'.conformsTo(oed.end.type.oclAsType(Classifier)))))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ReadLinkAction-one_open_end" name="one_open_end" constrainedElement="ReadLinkAction">
-        <ownedComment xmi:id="ReadLinkAction-one_open_end-_ownedComment.0" annotatedElement="ReadLinkAction-one_open_end">
-          <body>Exactly one linkEndData specification (corresponding to the &quot;open&quot; end) must not have an value InputPin.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReadLinkAction-one_open_end-_specification">
-          <language>OCL</language>
-          <body>self.openEnd()->size() = 1</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ReadLinkAction-navigable_open_end" name="navigable_open_end" constrainedElement="ReadLinkAction">
-        <ownedComment xmi:id="ReadLinkAction-navigable_open_end-_ownedComment.0" annotatedElement="ReadLinkAction-navigable_open_end">
-          <body>The open end must be navigable.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReadLinkAction-navigable_open_end-_specification">
-          <language>OCL</language>
-          <body>self.openEnd()->first().isNavigable()</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="ReadLinkAction-_generalization.0" general="LinkAction"/>
-      <ownedAttribute xmi:id="ReadLinkAction-result" name="result" type="OutputPin" aggregation="composite" subsettedProperty="Action-output" association="A_result_readLinkAction">
-        <ownedComment xmi:id="ReadLinkAction-result-_ownedComment.0" annotatedElement="ReadLinkAction-result">
-          <body>The OutputPin on which the objects retrieved from the &quot;open&quot; end of those links whose values on other ends are given by the endData.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedOperation xmi:id="ReadLinkAction-openEnd" name="openEnd" bodyCondition="ReadLinkAction-openEnd-spec" isQuery="true">
-        <ownedComment xmi:id="ReadLinkAction-openEnd-_ownedComment.0" annotatedElement="ReadLinkAction-openEnd">
-          <body>Returns the ends corresponding to endData with no value InputPin. (A well-formed ReadLinkAction is constrained to have only one of these.)</body>
-        </ownedComment>
-        <ownedRule xmi:id="ReadLinkAction-openEnd-spec" name="spec" constrainedElement="ReadLinkAction-openEnd">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="ReadLinkAction-openEnd-spec-_specification">
-            <language>OCL</language>
-            <body>result = (endData->select(value=null).end->asOrderedSet())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="ReadLinkAction-openEnd-result" name="result" type="Property" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ReadLinkAction-openEnd-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ReadLinkAction-openEnd-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ReadLinkObjectEndAction" name="ReadLinkObjectEndAction">
-      <ownedComment xmi:id="ReadLinkObjectEndAction-_ownedComment.0" annotatedElement="ReadLinkObjectEndAction">
-        <body>A ReadLinkObjectEndAction is an Action that retrieves an end object from a link object.</body>
-      </ownedComment>
-      <ownedRule xmi:id="ReadLinkObjectEndAction-property" name="property" constrainedElement="ReadLinkObjectEndAction">
-        <ownedComment xmi:id="ReadLinkObjectEndAction-property-_ownedComment.0" annotatedElement="ReadLinkObjectEndAction-property">
-          <body>The end Property must be an Association memberEnd.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReadLinkObjectEndAction-property-_specification">
-          <language>OCL</language>
-          <body>end.association &lt;> null</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ReadLinkObjectEndAction-multiplicity_of_object" name="multiplicity_of_object" constrainedElement="ReadLinkObjectEndAction">
-        <ownedComment xmi:id="ReadLinkObjectEndAction-multiplicity_of_object-_ownedComment.0" annotatedElement="ReadLinkObjectEndAction-multiplicity_of_object">
-          <body>The multiplicity of the object InputPin is 1..1.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReadLinkObjectEndAction-multiplicity_of_object-_specification">
-          <language>OCL</language>
-          <body>object.is(1,1)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ReadLinkObjectEndAction-ends_of_association" name="ends_of_association" constrainedElement="ReadLinkObjectEndAction">
-        <ownedComment xmi:id="ReadLinkObjectEndAction-ends_of_association-_ownedComment.0" annotatedElement="ReadLinkObjectEndAction-ends_of_association">
-          <body>The ends of the association must not be static.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReadLinkObjectEndAction-ends_of_association-_specification">
-          <language>OCL</language>
-          <body>end.association.memberEnd->forAll(e | not e.isStatic)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ReadLinkObjectEndAction-type_of_result" name="type_of_result" constrainedElement="ReadLinkObjectEndAction">
-        <ownedComment xmi:id="ReadLinkObjectEndAction-type_of_result-_ownedComment.0" annotatedElement="ReadLinkObjectEndAction-type_of_result">
-          <body>The type of the result OutputPin is the same as the type of the end Property.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReadLinkObjectEndAction-type_of_result-_specification">
-          <language>OCL</language>
-          <body>result.type = end.type</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ReadLinkObjectEndAction-multiplicity_of_result" name="multiplicity_of_result" constrainedElement="ReadLinkObjectEndAction">
-        <ownedComment xmi:id="ReadLinkObjectEndAction-multiplicity_of_result-_ownedComment.0" annotatedElement="ReadLinkObjectEndAction-multiplicity_of_result">
-          <body>The multiplicity of the result OutputPin is 1..1.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReadLinkObjectEndAction-multiplicity_of_result-_specification">
-          <language>OCL</language>
-          <body>result.is(1,1)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ReadLinkObjectEndAction-type_of_object" name="type_of_object" constrainedElement="ReadLinkObjectEndAction">
-        <ownedComment xmi:id="ReadLinkObjectEndAction-type_of_object-_ownedComment.0" annotatedElement="ReadLinkObjectEndAction-type_of_object">
-          <body>The type of the object InputPin is the AssociationClass that owns the end Property.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReadLinkObjectEndAction-type_of_object-_specification">
-          <language>OCL</language>
-          <body>object.type = end.association</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ReadLinkObjectEndAction-association_of_association" name="association_of_association" constrainedElement="ReadLinkObjectEndAction">
-        <ownedComment xmi:id="ReadLinkObjectEndAction-association_of_association-_ownedComment.0" annotatedElement="ReadLinkObjectEndAction-association_of_association">
-          <body>The association of the end must be an AssociationClass.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReadLinkObjectEndAction-association_of_association-_specification">
-          <language>OCL</language>
-          <body>end.association.oclIsKindOf(AssociationClass)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="ReadLinkObjectEndAction-_generalization.0" general="Action"/>
-      <ownedAttribute xmi:id="ReadLinkObjectEndAction-end" name="end" type="Property" association="A_end_readLinkObjectEndAction">
-        <ownedComment xmi:id="ReadLinkObjectEndAction-end-_ownedComment.0" annotatedElement="ReadLinkObjectEndAction-end">
-          <body>The Association end to be read.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ReadLinkObjectEndAction-object" name="object" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_object_readLinkObjectEndAction">
-        <ownedComment xmi:id="ReadLinkObjectEndAction-object-_ownedComment.0" annotatedElement="ReadLinkObjectEndAction-object">
-          <body>The input pin from which the link object is obtained.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ReadLinkObjectEndAction-result" name="result" type="OutputPin" aggregation="composite" subsettedProperty="Action-output" association="A_result_readLinkObjectEndAction">
-        <ownedComment xmi:id="ReadLinkObjectEndAction-result-_ownedComment.0" annotatedElement="ReadLinkObjectEndAction-result">
-          <body>The OutputPin where the result value is placed.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ReadLinkObjectEndQualifierAction" name="ReadLinkObjectEndQualifierAction">
-      <ownedComment xmi:id="ReadLinkObjectEndQualifierAction-_ownedComment.0" annotatedElement="ReadLinkObjectEndQualifierAction">
-        <body>A ReadLinkObjectEndQualifierAction is an Action that retrieves a qualifier end value from a link object.</body>
-      </ownedComment>
-      <ownedRule xmi:id="ReadLinkObjectEndQualifierAction-multiplicity_of_object" name="multiplicity_of_object" constrainedElement="ReadLinkObjectEndQualifierAction">
-        <ownedComment xmi:id="ReadLinkObjectEndQualifierAction-multiplicity_of_object-_ownedComment.0" annotatedElement="ReadLinkObjectEndQualifierAction-multiplicity_of_object">
-          <body>The multiplicity of the object InputPin is 1..1.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReadLinkObjectEndQualifierAction-multiplicity_of_object-_specification">
-          <language>OCL</language>
-          <body>object.is(1,1)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ReadLinkObjectEndQualifierAction-type_of_object" name="type_of_object" constrainedElement="ReadLinkObjectEndQualifierAction">
-        <ownedComment xmi:id="ReadLinkObjectEndQualifierAction-type_of_object-_ownedComment.0" annotatedElement="ReadLinkObjectEndQualifierAction-type_of_object">
-          <body>The type of the object InputPin is the AssociationClass that owns the Association end that has the given qualifier Property.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReadLinkObjectEndQualifierAction-type_of_object-_specification">
-          <language>OCL</language>
-          <body>object.type = qualifier.associationEnd.association</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ReadLinkObjectEndQualifierAction-multiplicity_of_qualifier" name="multiplicity_of_qualifier" constrainedElement="ReadLinkObjectEndQualifierAction">
-        <ownedComment xmi:id="ReadLinkObjectEndQualifierAction-multiplicity_of_qualifier-_ownedComment.0" annotatedElement="ReadLinkObjectEndQualifierAction-multiplicity_of_qualifier">
-          <body>The multiplicity of the qualifier Property is 1..1.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReadLinkObjectEndQualifierAction-multiplicity_of_qualifier-_specification">
-          <language>OCL</language>
-          <body>qualifier.is(1,1)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ReadLinkObjectEndQualifierAction-ends_of_association" name="ends_of_association" constrainedElement="ReadLinkObjectEndQualifierAction">
-        <ownedComment xmi:id="ReadLinkObjectEndQualifierAction-ends_of_association-_ownedComment.0" annotatedElement="ReadLinkObjectEndQualifierAction-ends_of_association">
-          <body>The ends of the Association must not be static.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReadLinkObjectEndQualifierAction-ends_of_association-_specification">
-          <language>OCL</language>
-          <body>qualifier.associationEnd.association.memberEnd->forAll(e | not e.isStatic)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ReadLinkObjectEndQualifierAction-multiplicity_of_result" name="multiplicity_of_result" constrainedElement="ReadLinkObjectEndQualifierAction">
-        <ownedComment xmi:id="ReadLinkObjectEndQualifierAction-multiplicity_of_result-_ownedComment.0" annotatedElement="ReadLinkObjectEndQualifierAction-multiplicity_of_result">
-          <body>The multiplicity of the result OutputPin is 1..1.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReadLinkObjectEndQualifierAction-multiplicity_of_result-_specification">
-          <language>OCL</language>
-          <body>result.is(1,1)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ReadLinkObjectEndQualifierAction-same_type" name="same_type" constrainedElement="ReadLinkObjectEndQualifierAction">
-        <ownedComment xmi:id="ReadLinkObjectEndQualifierAction-same_type-_ownedComment.0" annotatedElement="ReadLinkObjectEndQualifierAction-same_type">
-          <body>The type of the result OutputPin is the same as the type of the qualifier Property.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReadLinkObjectEndQualifierAction-same_type-_specification">
-          <language>OCL</language>
-          <body>result.type = qualifier.type</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ReadLinkObjectEndQualifierAction-association_of_association" name="association_of_association" constrainedElement="ReadLinkObjectEndQualifierAction">
-        <ownedComment xmi:id="ReadLinkObjectEndQualifierAction-association_of_association-_ownedComment.0" annotatedElement="ReadLinkObjectEndQualifierAction-association_of_association">
-          <body>The association of the Association end of the qualifier Property must be an AssociationClass.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReadLinkObjectEndQualifierAction-association_of_association-_specification">
-          <language>OCL</language>
-          <body>qualifier.associationEnd.association.oclIsKindOf(AssociationClass)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ReadLinkObjectEndQualifierAction-qualifier_attribute" name="qualifier_attribute" constrainedElement="ReadLinkObjectEndQualifierAction">
-        <ownedComment xmi:id="ReadLinkObjectEndQualifierAction-qualifier_attribute-_ownedComment.0" annotatedElement="ReadLinkObjectEndQualifierAction-qualifier_attribute">
-          <body>The qualifier Property must be a qualifier of an Association end.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReadLinkObjectEndQualifierAction-qualifier_attribute-_specification">
-          <language>OCL</language>
-          <body>qualifier.associationEnd &lt;> null</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="ReadLinkObjectEndQualifierAction-_generalization.0" general="Action"/>
-      <ownedAttribute xmi:id="ReadLinkObjectEndQualifierAction-object" name="object" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_object_readLinkObjectEndQualifierAction">
-        <ownedComment xmi:id="ReadLinkObjectEndQualifierAction-object-_ownedComment.0" annotatedElement="ReadLinkObjectEndQualifierAction-object">
-          <body>The InputPin from which the link object is obtained.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ReadLinkObjectEndQualifierAction-qualifier" name="qualifier" type="Property" association="A_qualifier_readLinkObjectEndQualifierAction">
-        <ownedComment xmi:id="ReadLinkObjectEndQualifierAction-qualifier-_ownedComment.0" annotatedElement="ReadLinkObjectEndQualifierAction-qualifier">
-          <body>The qualifier Property to be read.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ReadLinkObjectEndQualifierAction-result" name="result" type="OutputPin" aggregation="composite" subsettedProperty="Action-output" association="A_result_readLinkObjectEndQualifierAction">
-        <ownedComment xmi:id="ReadLinkObjectEndQualifierAction-result-_ownedComment.0" annotatedElement="ReadLinkObjectEndQualifierAction-result">
-          <body>The OutputPin where the result value is placed.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ReadSelfAction" name="ReadSelfAction">
-      <ownedComment xmi:id="ReadSelfAction-_ownedComment.0" annotatedElement="ReadSelfAction">
-        <body>A ReadSelfAction is an Action that retrieves the context object of the Behavior execution within which the ReadSelfAction execution is taking place.</body>
-      </ownedComment>
-      <ownedRule xmi:id="ReadSelfAction-contained" name="contained" constrainedElement="ReadSelfAction">
-        <ownedComment xmi:id="ReadSelfAction-contained-_ownedComment.0" annotatedElement="ReadSelfAction-contained">
-          <body>A ReadSelfAction must have a context Classifier.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReadSelfAction-contained-_specification">
-          <language>OCL</language>
-          <body>_'context' &lt;> null</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ReadSelfAction-multiplicity" name="multiplicity" constrainedElement="ReadSelfAction">
-        <ownedComment xmi:id="ReadSelfAction-multiplicity-_ownedComment.0" annotatedElement="ReadSelfAction-multiplicity">
-          <body>The multiplicity of the result OutputPin is 1..1.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReadSelfAction-multiplicity-_specification">
-          <language>OCL</language>
-          <body>result.is(1,1)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ReadSelfAction-not_static" name="not_static" constrainedElement="ReadSelfAction">
-        <ownedComment xmi:id="ReadSelfAction-not_static-_ownedComment.0" annotatedElement="ReadSelfAction-not_static">
-          <body>If the ReadSelfAction is contained in an Behavior that is acting as a method, then the Operation of the method must not be static.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReadSelfAction-not_static-_specification">
-          <language>OCL</language>
-          <body>let behavior: Behavior = self.containingBehavior() in&#xD;
-behavior.specification&lt;>null implies not behavior.specification.isStatic</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ReadSelfAction-type" name="type" constrainedElement="ReadSelfAction">
-        <ownedComment xmi:id="ReadSelfAction-type-_ownedComment.0" annotatedElement="ReadSelfAction-type">
-          <body>The type of the result OutputPin is the context Classifier.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReadSelfAction-type-_specification">
-          <language>OCL</language>
-          <body>result.type = _'context'</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="ReadSelfAction-_generalization.0" general="Action"/>
-      <ownedAttribute xmi:id="ReadSelfAction-result" name="result" type="OutputPin" aggregation="composite" subsettedProperty="Action-output" association="A_result_readSelfAction">
-        <ownedComment xmi:id="ReadSelfAction-result-_ownedComment.0" annotatedElement="ReadSelfAction-result">
-          <body>The OutputPin on which the context object is placed.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ReadStructuralFeatureAction" name="ReadStructuralFeatureAction">
-      <ownedComment xmi:id="ReadStructuralFeatureAction-_ownedComment.0" annotatedElement="ReadStructuralFeatureAction">
-        <body>A ReadStructuralFeatureAction is a StructuralFeatureAction that retrieves the values of a StructuralFeature.</body>
-      </ownedComment>
-      <ownedRule xmi:id="ReadStructuralFeatureAction-multiplicity" name="multiplicity" constrainedElement="ReadStructuralFeatureAction">
-        <ownedComment xmi:id="ReadStructuralFeatureAction-multiplicity-_ownedComment.0" annotatedElement="ReadStructuralFeatureAction-multiplicity">
-          <body>The multiplicity of the StructuralFeature must be compatible with the multiplicity of the result OutputPin.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReadStructuralFeatureAction-multiplicity-_specification">
-          <language>OCL</language>
-          <body>structuralFeature.compatibleWith(result)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ReadStructuralFeatureAction-type_and_ordering" name="type_and_ordering" constrainedElement="ReadStructuralFeatureAction">
-        <ownedComment xmi:id="ReadStructuralFeatureAction-type_and_ordering-_ownedComment.0" annotatedElement="ReadStructuralFeatureAction-type_and_ordering">
-          <body>The type and ordering of the result OutputPin are the same as the type and ordering of the StructuralFeature.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReadStructuralFeatureAction-type_and_ordering-_specification">
-          <language>OCL</language>
-          <body>result.type =structuralFeature.type and 
-result.isOrdered = structuralFeature.isOrdered</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="ReadStructuralFeatureAction-_generalization.0" general="StructuralFeatureAction"/>
-      <ownedAttribute xmi:id="ReadStructuralFeatureAction-result" name="result" type="OutputPin" aggregation="composite" subsettedProperty="Action-output" association="A_result_readStructuralFeatureAction">
-        <ownedComment xmi:id="ReadStructuralFeatureAction-result-_ownedComment.0" annotatedElement="ReadStructuralFeatureAction-result">
-          <body>The OutputPin on which the result values are placed.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ReadVariableAction" name="ReadVariableAction">
-      <ownedComment xmi:id="ReadVariableAction-_ownedComment.0" annotatedElement="ReadVariableAction">
-        <body>A ReadVariableAction is a VariableAction that retrieves the values of a Variable.</body>
-      </ownedComment>
-      <ownedRule xmi:id="ReadVariableAction-type_and_ordering" name="type_and_ordering" constrainedElement="ReadVariableAction">
-        <ownedComment xmi:id="ReadVariableAction-type_and_ordering-_ownedComment.0" annotatedElement="ReadVariableAction-type_and_ordering">
-          <body>The type and ordering of the result OutputPin are the same as the type and ordering of the variable.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReadVariableAction-type_and_ordering-_specification">
-          <language>OCL</language>
-          <body>result.type =variable.type and 
-result.isOrdered = variable.isOrdered</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ReadVariableAction-compatible_multiplicity" name="compatible_multiplicity" constrainedElement="ReadVariableAction">
-        <ownedComment xmi:id="ReadVariableAction-compatible_multiplicity-_ownedComment.0" annotatedElement="ReadVariableAction-compatible_multiplicity">
-          <body>The multiplicity of the variable must be compatible with the multiplicity of the output pin.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReadVariableAction-compatible_multiplicity-_specification">
-          <language>OCL</language>
-          <body>variable.compatibleWith(result)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="ReadVariableAction-_generalization.0" general="VariableAction"/>
-      <ownedAttribute xmi:id="ReadVariableAction-result" name="result" type="OutputPin" aggregation="composite" subsettedProperty="Action-output" association="A_result_readVariableAction">
-        <ownedComment xmi:id="ReadVariableAction-result-_ownedComment.0" annotatedElement="ReadVariableAction-result">
-          <body>The OutputPin on which the result values are placed.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ReclassifyObjectAction" name="ReclassifyObjectAction">
-      <ownedComment xmi:id="ReclassifyObjectAction-_ownedComment.0" annotatedElement="ReclassifyObjectAction">
-        <body>A ReclassifyObjectAction is an Action that changes the Classifiers that classify an object.</body>
-      </ownedComment>
-      <ownedRule xmi:id="ReclassifyObjectAction-input_pin" name="input_pin" constrainedElement="ReclassifyObjectAction">
-        <ownedComment xmi:id="ReclassifyObjectAction-input_pin-_ownedComment.0" annotatedElement="ReclassifyObjectAction-input_pin">
-          <body>The object InputPin has no type.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReclassifyObjectAction-input_pin-_specification">
-          <language>OCL</language>
-          <body>object.type = null</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ReclassifyObjectAction-classifier_not_abstract" name="classifier_not_abstract" constrainedElement="ReclassifyObjectAction">
-        <ownedComment xmi:id="ReclassifyObjectAction-classifier_not_abstract-_ownedComment.0" annotatedElement="ReclassifyObjectAction-classifier_not_abstract">
-          <body>None of the newClassifiers may be abstract.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReclassifyObjectAction-classifier_not_abstract-_specification">
-          <language>OCL</language>
-          <body>not newClassifier->exists(isAbstract)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ReclassifyObjectAction-multiplicity" name="multiplicity" constrainedElement="ReclassifyObjectAction">
-        <ownedComment xmi:id="ReclassifyObjectAction-multiplicity-_ownedComment.0" annotatedElement="ReclassifyObjectAction-multiplicity">
-          <body>The multiplicity of the object InputPin is 1..1.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReclassifyObjectAction-multiplicity-_specification">
-          <language>OCL</language>
-          <body>object.is(1,1)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="ReclassifyObjectAction-_generalization.0" general="Action"/>
-      <ownedAttribute xmi:id="ReclassifyObjectAction-isReplaceAll" name="isReplaceAll">
-        <ownedComment xmi:id="ReclassifyObjectAction-isReplaceAll-_ownedComment.0" annotatedElement="ReclassifyObjectAction-isReplaceAll">
-          <body>Specifies whether existing Classifiers should be removed before adding the new Classifiers.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="ReclassifyObjectAction-isReplaceAll-_defaultValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ReclassifyObjectAction-newClassifier" name="newClassifier" type="Classifier" association="A_newClassifier_reclassifyObjectAction">
-        <ownedComment xmi:id="ReclassifyObjectAction-newClassifier-_ownedComment.0" annotatedElement="ReclassifyObjectAction-newClassifier">
-          <body>A set of Classifiers to be added to the Classifiers of the given object.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ReclassifyObjectAction-newClassifier-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ReclassifyObjectAction-newClassifier-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ReclassifyObjectAction-object" name="object" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_object_reclassifyObjectAction">
-        <ownedComment xmi:id="ReclassifyObjectAction-object-_ownedComment.0" annotatedElement="ReclassifyObjectAction-object">
-          <body>The InputPin that holds the object to be reclassified.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ReclassifyObjectAction-oldClassifier" name="oldClassifier" type="Classifier" association="A_oldClassifier_reclassifyObjectAction">
-        <ownedComment xmi:id="ReclassifyObjectAction-oldClassifier-_ownedComment.0" annotatedElement="ReclassifyObjectAction-oldClassifier">
-          <body>A set of Classifiers to be removed from the Classifiers of the given object.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ReclassifyObjectAction-oldClassifier-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ReclassifyObjectAction-oldClassifier-_upperValue" value="*"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ReduceAction" name="ReduceAction">
-      <ownedComment xmi:id="ReduceAction-_ownedComment.0" annotatedElement="ReduceAction">
-        <body>A ReduceAction is an Action that reduces a collection to a single value by repeatedly combining the elements of the collection using a reducer Behavior.</body>
-      </ownedComment>
-      <ownedRule xmi:id="ReduceAction-reducer_inputs_output" name="reducer_inputs_output" constrainedElement="ReduceAction">
-        <ownedComment xmi:id="ReduceAction-reducer_inputs_output-_ownedComment.0" annotatedElement="ReduceAction-reducer_inputs_output">
-          <body>The reducer Behavior must have two input ownedParameters and one output ownedParameter, where the type of the output Parameter and the type of elements of the input collection conform to the types of the input Parameters.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReduceAction-reducer_inputs_output-_specification">
-          <language>OCL</language>
-          <body>let inputs: OrderedSet(Parameter) = reducer.inputParameters() in&#xD;
-let outputs: OrderedSet(Parameter) = reducer.outputParameters() in&#xD;
-inputs->size()=2 and outputs->size()=1 and&#xD;
-inputs.type->forAll(t | &#xD;
-	outputs.type->forAll(conformsTo(t)) and &#xD;
-	-- Note that the following only checks the case when the collection is via multiple tokens.&#xD;
-	collection.upperBound()>1 implies collection.type.conformsTo(t))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ReduceAction-input_type_is_collection" name="input_type_is_collection" constrainedElement="ReduceAction">
-        <ownedComment xmi:id="ReduceAction-input_type_is_collection-_ownedComment.0" annotatedElement="ReduceAction-input_type_is_collection">
-          <body>The type of the collection InputPin must be a collection.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReduceAction-input_type_is_collection-_specification" language=""/>
-      </ownedRule>
-      <ownedRule xmi:id="ReduceAction-output_types_are_compatible" name="output_types_are_compatible" constrainedElement="ReduceAction">
-        <ownedComment xmi:id="ReduceAction-output_types_are_compatible-_ownedComment.0" annotatedElement="ReduceAction-output_types_are_compatible">
-          <body>The type of the output of the reducer Behavior must conform to the type of the result OutputPin.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReduceAction-output_types_are_compatible-_specification">
-          <language>OCL</language>
-          <body>reducer.outputParameters().type->forAll(conformsTo(result.type))</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="ReduceAction-_generalization.0" general="Action"/>
-      <ownedAttribute xmi:id="ReduceAction-collection" name="collection" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_collection_reduceAction">
-        <ownedComment xmi:id="ReduceAction-collection-_ownedComment.0" annotatedElement="ReduceAction-collection">
-          <body>The InputPin that provides the collection to be reduced.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ReduceAction-isOrdered" name="isOrdered">
-        <ownedComment xmi:id="ReduceAction-isOrdered-_ownedComment.0" annotatedElement="ReduceAction-isOrdered">
-          <body>Indicates whether the order of the input collection should determine the order in which the reducer Behavior is applied to its elements.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="ReduceAction-isOrdered-_defaultValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ReduceAction-reducer" name="reducer" type="Behavior" association="A_reducer_reduceAction">
-        <ownedComment xmi:id="ReduceAction-reducer-_ownedComment.0" annotatedElement="ReduceAction-reducer">
-          <body>A Behavior that is repreatedly applied to two elements of the input collection to produce a value that is of the same type as elements of the collection.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ReduceAction-result" name="result" type="OutputPin" aggregation="composite" subsettedProperty="Action-output" association="A_result_reduceAction">
-        <ownedComment xmi:id="ReduceAction-result-_ownedComment.0" annotatedElement="ReduceAction-result">
-          <body>The output pin on which the result value is placed.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="RemoveStructuralFeatureValueAction" name="RemoveStructuralFeatureValueAction">
-      <ownedComment xmi:id="RemoveStructuralFeatureValueAction-_ownedComment.0" annotatedElement="RemoveStructuralFeatureValueAction">
-        <body>A RemoveStructuralFeatureValueAction is a WriteStructuralFeatureAction that removes values from a StructuralFeature.</body>
-      </ownedComment>
-      <ownedRule xmi:id="RemoveStructuralFeatureValueAction-removeAt_and_value" name="removeAt_and_value" constrainedElement="RemoveStructuralFeatureValueAction">
-        <ownedComment xmi:id="RemoveStructuralFeatureValueAction-removeAt_and_value-_ownedComment.0" annotatedElement="RemoveStructuralFeatureValueAction-removeAt_and_value">
-          <body>RemoveStructuralFeatureValueActions removing a value from ordered, non-unique StructuralFeatures must have a single removeAt InputPin and no value InputPin, if isRemoveDuplicates is false. The removeAt InputPin must be of type Unlimited Natural with multiplicity 1..1. Otherwise, the Action has a value InputPin and no removeAt InputPin.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="RemoveStructuralFeatureValueAction-removeAt_and_value-_specification">
-          <language>OCL</language>
-          <body>if structuralFeature.isOrdered and not structuralFeature.isUnique and  not isRemoveDuplicates then&#xD;
-  value = null and&#xD;
-  removeAt &lt;> null and&#xD;
-  removeAt.type = UnlimitedNatural and&#xD;
-  removeAt.is(1,1)&#xD;
-else&#xD;
-  removeAt = null and value &lt;> null&#xD;
-endif</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="RemoveStructuralFeatureValueAction-_generalization.0" general="WriteStructuralFeatureAction"/>
-      <ownedAttribute xmi:id="RemoveStructuralFeatureValueAction-isRemoveDuplicates" name="isRemoveDuplicates">
-        <ownedComment xmi:id="RemoveStructuralFeatureValueAction-isRemoveDuplicates-_ownedComment.0" annotatedElement="RemoveStructuralFeatureValueAction-isRemoveDuplicates">
-          <body>Specifies whether to remove duplicates of the value in nonunique StructuralFeatures.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="RemoveStructuralFeatureValueAction-isRemoveDuplicates-_defaultValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="RemoveStructuralFeatureValueAction-removeAt" name="removeAt" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_removeAt_removeStructuralFeatureValueAction">
-        <ownedComment xmi:id="RemoveStructuralFeatureValueAction-removeAt-_ownedComment.0" annotatedElement="RemoveStructuralFeatureValueAction-removeAt">
-          <body>An InputPin that provides the position of an existing value to remove in ordered, nonunique structural features. The type of the removeAt InputPin is UnlimitedNatural, but the value cannot be zero or unlimited.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="RemoveStructuralFeatureValueAction-removeAt-_lowerValue"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="RemoveVariableValueAction" name="RemoveVariableValueAction">
-      <ownedComment xmi:id="RemoveVariableValueAction-_ownedComment.0" annotatedElement="RemoveVariableValueAction">
-        <body>A RemoveVariableValueAction is a WriteVariableAction that removes values from a Variables.</body>
-      </ownedComment>
-      <ownedRule xmi:id="RemoveVariableValueAction-removeAt_and_value" name="removeAt_and_value" constrainedElement="RemoveVariableValueAction">
-        <ownedComment xmi:id="RemoveVariableValueAction-removeAt_and_value-_ownedComment.0" annotatedElement="RemoveVariableValueAction-removeAt_and_value">
-          <body>ReadVariableActions removing a value from ordered, non-unique Variables must have a single removeAt InputPin and no value InputPin, if isRemoveDuplicates is false. The removeAt InputPin must be of type Unlimited Natural with multiplicity 1..1. Otherwise, the Action has a value InputPin and no removeAt InputPin.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="RemoveVariableValueAction-removeAt_and_value-_specification">
-          <language>OCL</language>
-          <body>if  variable.isOrdered and not variable.isUnique and not isRemoveDuplicates then &#xD;
-  value = null and&#xD;
-  removeAt &lt;> null and&#xD;
-  removeAt.type = UnlimitedNatural and&#xD;
-  removeAt.is(1,1)&#xD;
-else&#xD;
-  removeAt = null and value &lt;> null&#xD;
-endif</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="RemoveVariableValueAction-_generalization.0" general="WriteVariableAction"/>
-      <ownedAttribute xmi:id="RemoveVariableValueAction-isRemoveDuplicates" name="isRemoveDuplicates">
-        <ownedComment xmi:id="RemoveVariableValueAction-isRemoveDuplicates-_ownedComment.0" annotatedElement="RemoveVariableValueAction-isRemoveDuplicates">
-          <body>Specifies whether to remove duplicates of the value in nonunique Variables.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="RemoveVariableValueAction-isRemoveDuplicates-_defaultValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="RemoveVariableValueAction-removeAt" name="removeAt" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_removeAt_removeVariableValueAction">
-        <ownedComment xmi:id="RemoveVariableValueAction-removeAt-_ownedComment.0" annotatedElement="RemoveVariableValueAction-removeAt">
-          <body>An InputPin that provides the position of an existing value to remove in ordered, nonunique Variables. The type of the removeAt InputPin is UnlimitedNatural, but the value cannot be zero or unlimited.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="RemoveVariableValueAction-removeAt-_lowerValue"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ReplyAction" name="ReplyAction">
-      <ownedComment xmi:id="ReplyAction-_ownedComment.0" annotatedElement="ReplyAction">
-        <body>A ReplyAction is an Action that accepts a set of reply values and a value containing return information produced by a previous AcceptCallAction. The ReplyAction returns the values to the caller of the previous call, completing execution of the call.</body>
-      </ownedComment>
-      <ownedRule xmi:id="ReplyAction-pins_match_parameter" name="pins_match_parameter" constrainedElement="ReplyAction">
-        <ownedComment xmi:id="ReplyAction-pins_match_parameter-_ownedComment.0" annotatedElement="ReplyAction-pins_match_parameter">
-          <body>The replyValue InputPins must match the output (return, out, and inout) parameters of the operation of the event of the replyToCall Trigger in number, type, ordering, and multiplicity.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReplyAction-pins_match_parameter-_specification">
-          <language>OCL</language>
-          <body>let parameter:OrderedSet(Parameter) = replyToCall.event.oclAsType(CallEvent).operation.outputParameters() in&#xD;
-replyValue->size()=parameter->size() and&#xD;
-Sequence{1..replyValue->size()}->forAll(i |&#xD;
-	replyValue->at(i).type.conformsTo(parameter->at(i).type) and&#xD;
-	replyValue->at(i).isOrdered=parameter->at(i).isOrdered and&#xD;
-	replyValue->at(i).compatibleWith(parameter->at(i)))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ReplyAction-event_on_reply_to_call_trigger" name="event_on_reply_to_call_trigger" constrainedElement="ReplyAction">
-        <ownedComment xmi:id="ReplyAction-event_on_reply_to_call_trigger-_ownedComment.0" annotatedElement="ReplyAction-event_on_reply_to_call_trigger">
-          <body>The event of the replyToCall Trigger must be a CallEvent.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ReplyAction-event_on_reply_to_call_trigger-_specification">
-          <language>OCL</language>
-          <body>replyToCall.event.oclIsKindOf(CallEvent)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="ReplyAction-_generalization.0" general="Action"/>
-      <ownedAttribute xmi:id="ReplyAction-replyToCall" name="replyToCall" type="Trigger" association="A_replyToCall_replyAction">
-        <ownedComment xmi:id="ReplyAction-replyToCall-_ownedComment.0" annotatedElement="ReplyAction-replyToCall">
-          <body>The Trigger specifying the Operation whose call is being replied to.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ReplyAction-replyValue" name="replyValue" type="InputPin" isOrdered="true" aggregation="composite" subsettedProperty="Action-input" association="A_replyValue_replyAction">
-        <ownedComment xmi:id="ReplyAction-replyValue-_ownedComment.0" annotatedElement="ReplyAction-replyValue">
-          <body>A list of InputPins providing the values for the output (inout, out, and return) Parameters of the Operation. These values are returned to the caller.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ReplyAction-replyValue-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ReplyAction-replyValue-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ReplyAction-returnInformation" name="returnInformation" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_returnInformation_replyAction">
-        <ownedComment xmi:id="ReplyAction-returnInformation-_ownedComment.0" annotatedElement="ReplyAction-returnInformation">
-          <body>An InputPin that holds the return information value produced by an earlier AcceptCallAction.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="SendObjectAction" name="SendObjectAction">
-      <ownedComment xmi:id="SendObjectAction-_ownedComment.0" annotatedElement="SendObjectAction">
-        <body>A SendObjectAction is an InvocationAction that transmits an input object to the target object, which is handled as a request message by the target object. The requestor continues execution immediately after the object is sent out and cannot receive reply values.</body>
-      </ownedComment>
-      <ownedRule xmi:id="SendObjectAction-type_target_pin" name="type_target_pin" constrainedElement="SendObjectAction">
-        <ownedComment xmi:id="SendObjectAction-type_target_pin-_ownedComment.0" annotatedElement="SendObjectAction-type_target_pin">
-          <body>If onPort is not empty, the Port given by onPort must be an owned or inherited feature of the type of the target InputPin.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="SendObjectAction-type_target_pin-_specification">
-          <language>OCL</language>
-          <body>onPort&lt;>null implies target.type.oclAsType(Classifier).allFeatures()->includes(onPort)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="SendObjectAction-_generalization.0" general="InvocationAction"/>
-      <ownedAttribute xmi:id="SendObjectAction-request" name="request" type="InputPin" aggregation="composite" redefinedProperty="InvocationAction-argument" association="A_request_sendObjectAction">
-        <ownedComment xmi:id="SendObjectAction-request-_ownedComment.0" annotatedElement="SendObjectAction-request">
-          <body>The request object, which is transmitted to the target object. The object may be copied in transmission, so identity might not be preserved.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="SendObjectAction-target" name="target" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_target_sendObjectAction">
-        <ownedComment xmi:id="SendObjectAction-target-_ownedComment.0" annotatedElement="SendObjectAction-target">
-          <body>The target object to which the object is sent.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="SendSignalAction" name="SendSignalAction">
-      <ownedComment xmi:id="SendSignalAction-_ownedComment.0" annotatedElement="SendSignalAction">
-        <body>A SendSignalAction is an InvocationAction that creates a Signal instance and transmits it to the target object. Values from the argument InputPins are used to provide values for the attributes of the Signal. The requestor continues execution immediately after the Signal instance is sent out and cannot receive reply values.</body>
-      </ownedComment>
-      <ownedRule xmi:id="SendSignalAction-type_ordering_multiplicity" name="type_ordering_multiplicity" constrainedElement="SendSignalAction">
-        <ownedComment xmi:id="SendSignalAction-type_ordering_multiplicity-_ownedComment.0" annotatedElement="SendSignalAction-type_ordering_multiplicity">
-          <body>The type, ordering, and multiplicity of an argument InputPin must be the same as the corresponding attribute of the signal.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="SendSignalAction-type_ordering_multiplicity-_specification">
-          <language>OCL</language>
-          <body>let attribute: OrderedSet(Property) = signal.allAttributes() in&#xD;
-Sequence{1..argument->size()}->forAll(i | &#xD;
-	argument->at(i).type.conformsTo(attribute->at(i).type) and &#xD;
-	argument->at(i).isOrdered = attribute->at(i).isOrdered and&#xD;
-	argument->at(i).compatibleWith(attribute->at(i)))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="SendSignalAction-number_order" name="number_order" constrainedElement="SendSignalAction">
-        <ownedComment xmi:id="SendSignalAction-number_order-_ownedComment.0" annotatedElement="SendSignalAction-number_order">
-          <body>The number and order of argument InputPins must be the same as the number and order of attributes of the signal.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="SendSignalAction-number_order-_specification">
-          <language>OCL</language>
-          <body>argument->size()=signal.allAttributes()->size()</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="SendSignalAction-type_target_pin" name="type_target_pin" constrainedElement="SendSignalAction">
-        <ownedComment xmi:id="SendSignalAction-type_target_pin-_ownedComment.0" annotatedElement="SendSignalAction-type_target_pin">
-          <body>If onPort is not empty, the Port given by onPort must be an owned or inherited feature of the type of the target InputPin.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="SendSignalAction-type_target_pin-_specification">
-          <language>OCL</language>
-          <body>not onPort->isEmpty() implies target.type.oclAsType(Classifier).allFeatures()->includes(onPort)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="SendSignalAction-_generalization.0" general="InvocationAction"/>
-      <ownedAttribute xmi:id="SendSignalAction-signal" name="signal" type="Signal" association="A_signal_sendSignalAction">
-        <ownedComment xmi:id="SendSignalAction-signal-_ownedComment.0" annotatedElement="SendSignalAction-signal">
-          <body>The Signal whose instance is transmitted to the target.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="SendSignalAction-target" name="target" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_target_sendSignalAction">
-        <ownedComment xmi:id="SendSignalAction-target-_ownedComment.0" annotatedElement="SendSignalAction-target">
-          <body>The InputPin that provides the target object to which the Signal instance is sent.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="SequenceNode" name="SequenceNode">
-      <ownedComment xmi:id="SequenceNode-_ownedComment.0" annotatedElement="SequenceNode">
-        <body>A SequenceNode is a StructuredActivityNode that executes a sequence of ExecutableNodes in order.</body>
-      </ownedComment>
-      <generalization xmi:id="SequenceNode-_generalization.0" general="StructuredActivityNode"/>
-      <ownedAttribute xmi:id="SequenceNode-executableNode" name="executableNode" type="ExecutableNode" isOrdered="true" aggregation="composite" redefinedProperty="StructuredActivityNode-node" association="A_executableNode_sequenceNode">
-        <ownedComment xmi:id="SequenceNode-executableNode-_ownedComment.0" annotatedElement="SequenceNode-executableNode">
-          <body>The ordered set of ExecutableNodes to be sequenced.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="SequenceNode-executableNode-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="SequenceNode-executableNode-_upperValue" value="*"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="StartClassifierBehaviorAction" name="StartClassifierBehaviorAction">
-      <ownedComment xmi:id="StartClassifierBehaviorAction-_ownedComment.0" annotatedElement="StartClassifierBehaviorAction">
-        <body>A StartClassifierBehaviorAction is an Action that starts the classifierBehavior of the input object.</body>
-      </ownedComment>
-      <ownedRule xmi:id="StartClassifierBehaviorAction-multiplicity" name="multiplicity" constrainedElement="StartClassifierBehaviorAction">
-        <ownedComment xmi:id="StartClassifierBehaviorAction-multiplicity-_ownedComment.0" annotatedElement="StartClassifierBehaviorAction-multiplicity">
-          <body>The multiplicity of the object InputPin is 1..1</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="StartClassifierBehaviorAction-multiplicity-_specification">
-          <language>OCL</language>
-          <body>object.is(1,1)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="StartClassifierBehaviorAction-type_has_classifier" name="type_has_classifier" constrainedElement="StartClassifierBehaviorAction">
-        <ownedComment xmi:id="StartClassifierBehaviorAction-type_has_classifier-_ownedComment.0" annotatedElement="StartClassifierBehaviorAction-type_has_classifier">
-          <body>If the InputPin has a type, then the type or one of its ancestors must have a classifierBehavior.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="StartClassifierBehaviorAction-type_has_classifier-_specification">
-          <language>OCL</language>
-          <body>object.type->notEmpty() implies &#xD;
-   (object.type.oclIsKindOf(BehavioredClassifier) and object.type.oclAsType(BehavioredClassifier).classifierBehavior&lt;>null)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="StartClassifierBehaviorAction-_generalization.0" general="Action"/>
-      <ownedAttribute xmi:id="StartClassifierBehaviorAction-object" name="object" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_object_startClassifierBehaviorAction">
-        <ownedComment xmi:id="StartClassifierBehaviorAction-object-_ownedComment.0" annotatedElement="StartClassifierBehaviorAction-object">
-          <body>The InputPin that holds the object whose classifierBehavior is to be started.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="StartObjectBehaviorAction" name="StartObjectBehaviorAction">
-      <ownedComment xmi:id="StartObjectBehaviorAction-_ownedComment.0" annotatedElement="StartObjectBehaviorAction">
-        <body>A StartObjectBehaviorAction is an InvocationAction that starts the execution either of a directly instantiated Behavior or of the classifierBehavior of an object. Argument values may be supplied for the input Parameters of the Behavior. If the Behavior is invoked synchronously, then output values may be obtained for output Parameters.</body>
-      </ownedComment>
-      <ownedRule xmi:id="StartObjectBehaviorAction-multiplicity_of_object" name="multiplicity_of_object" constrainedElement="StartObjectBehaviorAction">
-        <ownedComment xmi:id="StartObjectBehaviorAction-multiplicity_of_object-_ownedComment.0" annotatedElement="StartObjectBehaviorAction-multiplicity_of_object">
-          <body>The multiplicity of the object InputPin must be 1..1.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="StartObjectBehaviorAction-multiplicity_of_object-_specification">
-          <language>OCL</language>
-          <body>object.is(1,1)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="StartObjectBehaviorAction-type_of_object" name="type_of_object" constrainedElement="StartObjectBehaviorAction">
-        <ownedComment xmi:id="StartObjectBehaviorAction-type_of_object-_ownedComment.0" annotatedElement="StartObjectBehaviorAction-type_of_object">
-          <body>The type of the object InputPin must be either a Behavior or a BehavioredClassifier with a classifierBehavior.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="StartObjectBehaviorAction-type_of_object-_specification">
-          <language>OCL</language>
-          <body>self.behavior()&lt;>null</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="StartObjectBehaviorAction-no_onport" name="no_onport" constrainedElement="StartObjectBehaviorAction">
-        <ownedComment xmi:id="StartObjectBehaviorAction-no_onport-_ownedComment.0" annotatedElement="StartObjectBehaviorAction-no_onport">
-          <body>A StartObjectBehaviorAction may not specify onPort.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="StartObjectBehaviorAction-no_onport-_specification">
-          <language>OCL</language>
-          <body>onPort->isEmpty()</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="StartObjectBehaviorAction-_generalization.0" general="CallAction"/>
-      <ownedAttribute xmi:id="StartObjectBehaviorAction-object" name="object" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_object_startObjectBehaviorAction">
-        <ownedComment xmi:id="StartObjectBehaviorAction-object-_ownedComment.0" annotatedElement="StartObjectBehaviorAction-object">
-          <body>An InputPin that holds the object that is either a Behavior to be started or has a classifierBehavior to be started.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedOperation xmi:id="StartObjectBehaviorAction-outputParameters" name="outputParameters" bodyCondition="StartObjectBehaviorAction-outputParameters-spec" isQuery="true" redefinedOperation="CallAction-outputParameters">
-        <ownedComment xmi:id="StartObjectBehaviorAction-outputParameters-_ownedComment.0" annotatedElement="StartObjectBehaviorAction-outputParameters">
-          <body>Return the inout, out and return ownedParameters of the Behavior being called.</body>
-        </ownedComment>
-        <ownedRule xmi:id="StartObjectBehaviorAction-outputParameters-spec" name="spec" constrainedElement="StartObjectBehaviorAction-outputParameters">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="StartObjectBehaviorAction-outputParameters-spec-_specification">
-            <language>OCL</language>
-            <body>result = (self.behavior().outputParameters())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="StartObjectBehaviorAction-outputParameters-result" name="result" type="Parameter" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="StartObjectBehaviorAction-outputParameters-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StartObjectBehaviorAction-outputParameters-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="StartObjectBehaviorAction-inputParameters" name="inputParameters" bodyCondition="StartObjectBehaviorAction-inputParameters-spec" isQuery="true" redefinedOperation="CallAction-inputParameters">
-        <ownedComment xmi:id="StartObjectBehaviorAction-inputParameters-_ownedComment.0" annotatedElement="StartObjectBehaviorAction-inputParameters">
-          <body>Return the in and inout ownedParameters of the Behavior being called.</body>
-        </ownedComment>
-        <ownedRule xmi:id="StartObjectBehaviorAction-inputParameters-spec" name="spec" constrainedElement="StartObjectBehaviorAction-inputParameters">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="StartObjectBehaviorAction-inputParameters-spec-_specification">
-            <language>OCL</language>
-            <body>result = (self.behavior().inputParameters())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="StartObjectBehaviorAction-inputParameters-result" name="result" type="Parameter" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="StartObjectBehaviorAction-inputParameters-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StartObjectBehaviorAction-inputParameters-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="StartObjectBehaviorAction-behavior" name="behavior" bodyCondition="StartObjectBehaviorAction-behavior-spec" isQuery="true">
-        <ownedComment xmi:id="StartObjectBehaviorAction-behavior-_ownedComment.0" annotatedElement="StartObjectBehaviorAction-behavior">
-          <body>If the type of the object InputPin is a Behavior, then that Behavior. Otherwise, if the type of the object InputPin is a BehavioredClassifier, then the classifierBehavior of that BehavioredClassifier.</body>
-        </ownedComment>
-        <ownedRule xmi:id="StartObjectBehaviorAction-behavior-spec" name="spec" constrainedElement="StartObjectBehaviorAction-behavior">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="StartObjectBehaviorAction-behavior-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if object.type.oclIsKindOf(Behavior) then&#xD;
-  object.type.oclAsType(Behavior)&#xD;
-else if object.type.oclIsKindOf(BehavioredClassifier) then&#xD;
-  object.type.oclAsType(BehavioredClassifier).classifierBehavior&#xD;
-else&#xD;
-  null&#xD;
-endif&#xD;
-endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="StartObjectBehaviorAction-behavior-result" name="result" type="Behavior" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="StartObjectBehaviorAction-behavior-result-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="StructuralFeatureAction" name="StructuralFeatureAction" isAbstract="true">
-      <ownedComment xmi:id="StructuralFeatureAction-_ownedComment.0" annotatedElement="StructuralFeatureAction">
-        <body>StructuralFeatureAction is an abstract class for all Actions that operate on StructuralFeatures.</body>
-      </ownedComment>
-      <ownedRule xmi:id="StructuralFeatureAction-multiplicity" name="multiplicity" constrainedElement="StructuralFeatureAction">
-        <ownedComment xmi:id="StructuralFeatureAction-multiplicity-_ownedComment.0" annotatedElement="StructuralFeatureAction-multiplicity">
-          <body>The multiplicity of the object InputPin must be 1..1.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="StructuralFeatureAction-multiplicity-_specification">
-          <language>OCL</language>
-          <body>object.is(1,1)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="StructuralFeatureAction-object_type" name="object_type" constrainedElement="StructuralFeatureAction">
-        <ownedComment xmi:id="StructuralFeatureAction-object_type-_ownedComment.0" annotatedElement="StructuralFeatureAction-object_type">
-          <body>The structuralFeature must either be an owned or inherited feature of the type of the object InputPin, or it must be an owned end of a binary Association whose opposite end had as a type to which the type of the object InputPin conforms.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="StructuralFeatureAction-object_type-_specification">
-          <language>OCL</language>
-          <body>object.type.oclAsType(Classifier).allFeatures()->includes(structuralFeature) or&#xD;
-	object.type.conformsTo(structuralFeature.oclAsType(Property).opposite.type)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="StructuralFeatureAction-visibility" name="visibility" constrainedElement="StructuralFeatureAction">
-        <ownedComment xmi:id="StructuralFeatureAction-visibility-_ownedComment.0" annotatedElement="StructuralFeatureAction-visibility">
-          <body>The visibility of the structuralFeature must allow access from the object performing the ReadStructuralFeatureAction.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="StructuralFeatureAction-visibility-_specification">
-          <language>OCL</language>
-          <body>structuralFeature.visibility = VisibilityKind::public or
-_'context'.allFeatures()->includes(structuralFeature) or
-structuralFeature.visibility=VisibilityKind::protected and
-_'context'.conformsTo(structuralFeature.oclAsType(Property).opposite.type.oclAsType(Classifier))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="StructuralFeatureAction-not_static" name="not_static" constrainedElement="StructuralFeatureAction">
-        <ownedComment xmi:id="StructuralFeatureAction-not_static-_ownedComment.0" annotatedElement="StructuralFeatureAction-not_static">
-          <body>The structuralFeature must not be static.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="StructuralFeatureAction-not_static-_specification">
-          <language>OCL</language>
-          <body>not structuralFeature.isStatic</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="StructuralFeatureAction-one_featuring_classifier" name="one_featuring_classifier" constrainedElement="StructuralFeatureAction">
-        <ownedComment xmi:id="StructuralFeatureAction-one_featuring_classifier-_ownedComment.0" annotatedElement="StructuralFeatureAction-one_featuring_classifier">
-          <body>The structuralFeature must have exactly one featuringClassifier.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="StructuralFeatureAction-one_featuring_classifier-_specification">
-          <language>OCL</language>
-          <body>structuralFeature.featuringClassifier->size() = 1</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="StructuralFeatureAction-_generalization.0" general="Action"/>
-      <ownedAttribute xmi:id="StructuralFeatureAction-object" name="object" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_object_structuralFeatureAction">
-        <ownedComment xmi:id="StructuralFeatureAction-object-_ownedComment.0" annotatedElement="StructuralFeatureAction-object">
-          <body>The InputPin from which the object whose StructuralFeature is to be read or written is obtained.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="StructuralFeatureAction-structuralFeature" name="structuralFeature" type="StructuralFeature" association="A_structuralFeature_structuralFeatureAction">
-        <ownedComment xmi:id="StructuralFeatureAction-structuralFeature-_ownedComment.0" annotatedElement="StructuralFeatureAction-structuralFeature">
-          <body>The StructuralFeature to be read or written.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="StructuredActivityNode" name="StructuredActivityNode">
-      <ownedComment xmi:id="StructuredActivityNode-_ownedComment.0" annotatedElement="StructuredActivityNode">
-        <body>A StructuredActivityNode is an Action that is also an ActivityGroup and whose behavior is specified by the ActivityNodes and ActivityEdges it so contains. Unlike other kinds of ActivityGroup, a StructuredActivityNode owns the ActivityNodes and ActivityEdges it contains, and so a node or edge can only be directly contained in one StructuredActivityNode, though StructuredActivityNodes may be nested.</body>
-      </ownedComment>
-      <ownedRule xmi:id="StructuredActivityNode-output_pin_edges" name="output_pin_edges" constrainedElement="StructuredActivityNode">
-        <ownedComment xmi:id="StructuredActivityNode-output_pin_edges-_ownedComment.0" annotatedElement="StructuredActivityNode-output_pin_edges">
-          <body>The outgoing ActivityEdges of the OutputPins of a StructuredActivityNode must have targets that are not within the StructuredActivityNode.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="StructuredActivityNode-output_pin_edges-_specification">
-          <language>OCL</language>
-          <body>output.outgoing.target->excludesAll(allOwnedNodes()-input)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="StructuredActivityNode-edges" name="edges" constrainedElement="StructuredActivityNode">
-        <ownedComment xmi:id="StructuredActivityNode-edges-_ownedComment.0" annotatedElement="StructuredActivityNode-edges">
-          <body>The edges of a StructuredActivityNode are all the ActivityEdges with source and target ActivityNodes contained directly or indirectly within the StructuredActivityNode and at least one of the source or target not contained in any more deeply nested StructuredActivityNode.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="StructuredActivityNode-edges-_specification">
-          <language>OCL</language>
-          <body>edge=self.sourceNodes().outgoing->intersection(self.allOwnedNodes().incoming)->&#xD;
-	union(self.targetNodes().incoming->intersection(self.allOwnedNodes().outgoing))->asSet()</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="StructuredActivityNode-input_pin_edges" name="input_pin_edges" constrainedElement="StructuredActivityNode">
-        <ownedComment xmi:id="StructuredActivityNode-input_pin_edges-_ownedComment.0" annotatedElement="StructuredActivityNode-input_pin_edges">
-          <body>The incoming ActivityEdges of an InputPin of a StructuredActivityNode must have sources that are not within the StructuredActivityNode.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="StructuredActivityNode-input_pin_edges-_specification">
-          <language>OCL</language>
-          <body>input.incoming.source->excludesAll(allOwnedNodes()-output)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="StructuredActivityNode-_generalization.0" general="Namespace"/>
-      <generalization xmi:id="StructuredActivityNode-_generalization.1" general="ActivityGroup"/>
-      <generalization xmi:id="StructuredActivityNode-_generalization.2" general="Action"/>
-      <ownedAttribute xmi:id="StructuredActivityNode-activity" name="activity" visibility="protected" type="Activity" isDerived="true" redefinedProperty="ActivityGroup-inActivity ActivityNode-activity" association="A_activity_structuredNode">
-        <ownedComment xmi:id="StructuredActivityNode-activity-_ownedComment.0" annotatedElement="StructuredActivityNode-activity">
-          <body>The Activity immediately containing the StructuredActivityNode, if it is not contained in another StructuredActivityNode.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="StructuredActivityNode-activity-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="StructuredActivityNode-edge" name="edge" type="ActivityEdge" aggregation="composite" subsettedProperty="ActivityGroup-containedEdge Element-ownedElement" association="A_edge_inStructuredNode">
-        <ownedComment xmi:id="StructuredActivityNode-edge-_ownedComment.0" annotatedElement="StructuredActivityNode-edge">
-          <body>The ActivityEdges immediately contained in the StructuredActivityNode.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="StructuredActivityNode-edge-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StructuredActivityNode-edge-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="StructuredActivityNode-mustIsolate" name="mustIsolate">
-        <ownedComment xmi:id="StructuredActivityNode-mustIsolate-_ownedComment.0" annotatedElement="StructuredActivityNode-mustIsolate">
-          <body>If true, then any object used by an Action within the StructuredActivityNode cannot be accessed by any Action outside the node until the StructuredActivityNode as a whole completes. Any concurrent Actions that would result in accessing such objects are required to have their execution deferred until the completion of the StructuredActivityNode.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="StructuredActivityNode-mustIsolate-_defaultValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="StructuredActivityNode-node" name="node" type="ActivityNode" aggregation="composite" subsettedProperty="ActivityGroup-containedNode Element-ownedElement" association="A_node_inStructuredNode">
-        <ownedComment xmi:id="StructuredActivityNode-node-_ownedComment.0" annotatedElement="StructuredActivityNode-node">
-          <body>The ActivityNodes immediately contained in the StructuredActivityNode.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="StructuredActivityNode-node-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StructuredActivityNode-node-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="StructuredActivityNode-structuredNodeInput" name="structuredNodeInput" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_structuredNodeInput_structuredActivityNode">
-        <ownedComment xmi:id="StructuredActivityNode-structuredNodeInput-_ownedComment.0" annotatedElement="StructuredActivityNode-structuredNodeInput">
-          <body>The InputPins owned by the StructuredActivityNode.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="StructuredActivityNode-structuredNodeInput-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StructuredActivityNode-structuredNodeInput-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="StructuredActivityNode-structuredNodeOutput" name="structuredNodeOutput" type="OutputPin" aggregation="composite" subsettedProperty="Action-output" association="A_structuredNodeOutput_structuredActivityNode">
-        <ownedComment xmi:id="StructuredActivityNode-structuredNodeOutput-_ownedComment.0" annotatedElement="StructuredActivityNode-structuredNodeOutput">
-          <body>The OutputPins owned by the StructuredActivityNode.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="StructuredActivityNode-structuredNodeOutput-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StructuredActivityNode-structuredNodeOutput-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="StructuredActivityNode-variable" name="variable" type="Variable" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_variable_scope">
-        <ownedComment xmi:id="StructuredActivityNode-variable-_ownedComment.0" annotatedElement="StructuredActivityNode-variable">
-          <body>The Variables defined in the scope of the StructuredActivityNode.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="StructuredActivityNode-variable-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StructuredActivityNode-variable-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="StructuredActivityNode-allActions" name="allActions" bodyCondition="StructuredActivityNode-allActions-spec" isQuery="true" redefinedOperation="Action-allActions">
-        <ownedComment xmi:id="StructuredActivityNode-allActions-_ownedComment.0" annotatedElement="StructuredActivityNode-allActions">
-          <body>Returns this StructuredActivityNode and all Actions contained in it.</body>
-        </ownedComment>
-        <ownedRule xmi:id="StructuredActivityNode-allActions-spec" name="spec" constrainedElement="StructuredActivityNode-allActions">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="StructuredActivityNode-allActions-spec-_specification">
-            <language>OCL</language>
-            <body>result = (node->select(oclIsKindOf(Action)).oclAsType(Action).allActions()->including(self)->asSet())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="StructuredActivityNode-allActions-result" name="result" type="Action" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="StructuredActivityNode-allActions-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StructuredActivityNode-allActions-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="StructuredActivityNode-allOwnedNodes" name="allOwnedNodes" bodyCondition="StructuredActivityNode-allOwnedNodes-spec" isQuery="true" redefinedOperation="Action-allOwnedNodes">
-        <ownedComment xmi:id="StructuredActivityNode-allOwnedNodes-_ownedComment.0" annotatedElement="StructuredActivityNode-allOwnedNodes">
-          <body>Returns all the ActivityNodes contained directly or indirectly within this StructuredActivityNode, in addition to the Pins of the StructuredActivityNode.</body>
-        </ownedComment>
-        <ownedRule xmi:id="StructuredActivityNode-allOwnedNodes-spec" name="spec" constrainedElement="StructuredActivityNode-allOwnedNodes">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="StructuredActivityNode-allOwnedNodes-spec-_specification">
-            <language>OCL</language>
-            <body>result = (self.Action::allOwnedNodes()->union(node)->union(node->select(oclIsKindOf(Action)).oclAsType(Action).allOwnedNodes())->asSet())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="StructuredActivityNode-allOwnedNodes-result" name="result" type="ActivityNode" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="StructuredActivityNode-allOwnedNodes-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StructuredActivityNode-allOwnedNodes-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="StructuredActivityNode-sourceNodes" name="sourceNodes" bodyCondition="StructuredActivityNode-sourceNodes-spec" isQuery="true">
-        <ownedComment xmi:id="StructuredActivityNode-sourceNodes-_ownedComment.0" annotatedElement="StructuredActivityNode-sourceNodes">
-          <body>Return those ActivityNodes contained immediately within the StructuredActivityNode that may act as sources of edges owned by the StructuredActivityNode.</body>
-        </ownedComment>
-        <ownedRule xmi:id="StructuredActivityNode-sourceNodes-spec" name="spec" constrainedElement="StructuredActivityNode-sourceNodes">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="StructuredActivityNode-sourceNodes-spec-_specification">
-            <language>OCL</language>
-            <body>result = (node->union(input.oclAsType(ActivityNode)->asSet())->&#xD;
-  union(node->select(oclIsKindOf(Action)).oclAsType(Action).output)->asSet())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="StructuredActivityNode-sourceNodes-result" name="result" type="ActivityNode" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="StructuredActivityNode-sourceNodes-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StructuredActivityNode-sourceNodes-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="StructuredActivityNode-targetNodes" name="targetNodes" bodyCondition="StructuredActivityNode-targetNodes-spec" isQuery="true">
-        <ownedComment xmi:id="StructuredActivityNode-targetNodes-_ownedComment.0" annotatedElement="StructuredActivityNode-targetNodes">
-          <body>Return those ActivityNodes contained immediately within the StructuredActivityNode that may act as targets of edges owned by the StructuredActivityNode.</body>
-        </ownedComment>
-        <ownedRule xmi:id="StructuredActivityNode-targetNodes-spec" name="spec" constrainedElement="StructuredActivityNode-targetNodes">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="StructuredActivityNode-targetNodes-spec-_specification">
-            <language>OCL</language>
-            <body>result = (node->union(output.oclAsType(ActivityNode)->asSet())->&#xD;
-  union(node->select(oclIsKindOf(Action)).oclAsType(Action).input)->asSet())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="StructuredActivityNode-targetNodes-result" name="result" type="ActivityNode" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="StructuredActivityNode-targetNodes-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StructuredActivityNode-targetNodes-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="StructuredActivityNode-containingActivity" name="containingActivity" bodyCondition="StructuredActivityNode-containingActivity-spec" isQuery="true" redefinedOperation="ActivityGroup-containingActivity ActivityNode-containingActivity ActivityContent-containingActivity">
-        <ownedComment xmi:id="StructuredActivityNode-containingActivity-_ownedComment.0" annotatedElement="StructuredActivityNode-containingActivity">
-          <body>The Activity that directly or indirectly contains this StructuredActivityNode (considered as an Action).</body>
-        </ownedComment>
-        <ownedRule xmi:id="StructuredActivityNode-containingActivity-spec" name="spec" constrainedElement="StructuredActivityNode-containingActivity">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="StructuredActivityNode-containingActivity-spec-_specification">
-            <language>OCL</language>
-            <body>result = (self.Action::containingActivity())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="StructuredActivityNode-containingActivity-result" name="result" type="Activity" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="StructuredActivityNode-containingActivity-result-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="TestIdentityAction" name="TestIdentityAction">
-      <ownedComment xmi:id="TestIdentityAction-_ownedComment.0" annotatedElement="TestIdentityAction">
-        <body>A TestIdentityAction is an Action that tests if two values are identical objects.</body>
-      </ownedComment>
-      <ownedRule xmi:id="TestIdentityAction-multiplicity" name="multiplicity" constrainedElement="TestIdentityAction">
-        <ownedComment xmi:id="TestIdentityAction-multiplicity-_ownedComment.0" annotatedElement="TestIdentityAction-multiplicity">
-          <body>The multiplicity of the InputPins is 1..1.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="TestIdentityAction-multiplicity-_specification">
-          <language>OCL</language>
-          <body>first.is(1,1) and second.is(1,1)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="TestIdentityAction-no_type" name="no_type" constrainedElement="TestIdentityAction">
-        <ownedComment xmi:id="TestIdentityAction-no_type-_ownedComment.0" annotatedElement="TestIdentityAction-no_type">
-          <body>The InputPins have no type.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="TestIdentityAction-no_type-_specification">
-          <language>OCL</language>
-          <body>first.type= null and second.type = null</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="TestIdentityAction-result_is_boolean" name="result_is_boolean" constrainedElement="TestIdentityAction">
-        <ownedComment xmi:id="TestIdentityAction-result_is_boolean-_ownedComment.0" annotatedElement="TestIdentityAction-result_is_boolean">
-          <body>The type of the result OutputPin is Boolean.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="TestIdentityAction-result_is_boolean-_specification">
-          <language>OCL</language>
-          <body>result.type=Boolean</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="TestIdentityAction-_generalization.0" general="Action"/>
-      <ownedAttribute xmi:id="TestIdentityAction-first" name="first" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_first_testIdentityAction">
-        <ownedComment xmi:id="TestIdentityAction-first-_ownedComment.0" annotatedElement="TestIdentityAction-first">
-          <body>The InputPin on which the first input object is placed.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="TestIdentityAction-result" name="result" type="OutputPin" aggregation="composite" subsettedProperty="Action-output" association="A_result_testIdentityAction">
-        <ownedComment xmi:id="TestIdentityAction-result-_ownedComment.0" annotatedElement="TestIdentityAction-result">
-          <body>The OutputPin whose Boolean value indicates whether the two input objects are identical.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="TestIdentityAction-second" name="second" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_second_testIdentityAction">
-        <ownedComment xmi:id="TestIdentityAction-second-_ownedComment.0" annotatedElement="TestIdentityAction-second">
-          <body>The OutputPin on which the second input object is placed.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="UnmarshallAction" name="UnmarshallAction">
-      <ownedComment xmi:id="UnmarshallAction-_ownedComment.0" annotatedElement="UnmarshallAction">
-        <body>An UnmarshallAction is an Action that retrieves the values of the StructuralFeatures of an object and places them on OutputPins.</body>
-      </ownedComment>
-      <ownedRule xmi:id="UnmarshallAction-structural_feature" name="structural_feature" constrainedElement="UnmarshallAction">
-        <ownedComment xmi:id="UnmarshallAction-structural_feature-_ownedComment.0" annotatedElement="UnmarshallAction-structural_feature">
-          <body>The unmarshallType must have at least one StructuralFeature.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="UnmarshallAction-structural_feature-_specification">
-          <language>OCL</language>
-          <body>unmarshallType.allAttributes()->size() >= 1</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="UnmarshallAction-number_of_result" name="number_of_result" constrainedElement="UnmarshallAction">
-        <ownedComment xmi:id="UnmarshallAction-number_of_result-_ownedComment.0" annotatedElement="UnmarshallAction-number_of_result">
-          <body>The number of result outputPins must be the same as the number of attributes of the unmarshallType.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="UnmarshallAction-number_of_result-_specification">
-          <language>OCL</language>
-          <body>unmarshallType.allAttributes()->size() = result->size()</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="UnmarshallAction-type_ordering_and_multiplicity" name="type_ordering_and_multiplicity" constrainedElement="UnmarshallAction">
-        <ownedComment xmi:id="UnmarshallAction-type_ordering_and_multiplicity-_ownedComment.0" annotatedElement="UnmarshallAction-type_ordering_and_multiplicity">
-          <body>The type, ordering and multiplicity of each attribute of the unmarshallType must be compatible with the type, ordering and multiplicity of the corresponding result OutputPin.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="UnmarshallAction-type_ordering_and_multiplicity-_specification">
-          <language>OCL</language>
-          <body>let attribute:OrderedSet(Property) = unmarshallType.allAttributes() in&#xD;
-Sequence{1..result->size()}->forAll(i | &#xD;
-	attribute->at(i).type.conformsTo(result->at(i).type) and&#xD;
-	attribute->at(i).isOrdered=result->at(i).isOrdered and&#xD;
-	attribute->at(i).compatibleWith(result->at(i)))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="UnmarshallAction-multiplicity_of_object" name="multiplicity_of_object" constrainedElement="UnmarshallAction">
-        <ownedComment xmi:id="UnmarshallAction-multiplicity_of_object-_ownedComment.0" annotatedElement="UnmarshallAction-multiplicity_of_object">
-          <body>The multiplicity of the object InputPin is 1..1</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="UnmarshallAction-multiplicity_of_object-_specification">
-          <language>OCL</language>
-          <body>object.is(1,1)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="UnmarshallAction-object_type" name="object_type" constrainedElement="UnmarshallAction">
-        <ownedComment xmi:id="UnmarshallAction-object_type-_ownedComment.0" annotatedElement="UnmarshallAction-object_type">
-          <body>The type of the object InputPin conform to the unmarshallType.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="UnmarshallAction-object_type-_specification">
-          <language>OCL</language>
-          <body>object.type.conformsTo(unmarshallType)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="UnmarshallAction-_generalization.0" general="Action"/>
-      <ownedAttribute xmi:id="UnmarshallAction-object" name="object" type="InputPin" aggregation="composite" subsettedProperty="Action-input" association="A_object_unmarshallAction">
-        <ownedComment xmi:id="UnmarshallAction-object-_ownedComment.0" annotatedElement="UnmarshallAction-object">
-          <body>The InputPin that gives the object to be unmarshalled.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="UnmarshallAction-result" name="result" type="OutputPin" isOrdered="true" aggregation="composite" subsettedProperty="Action-output" association="A_result_unmarshallAction">
-        <ownedComment xmi:id="UnmarshallAction-result-_ownedComment.0" annotatedElement="UnmarshallAction-result">
-          <body>The OutputPins on which are placed the values of the StructuralFeatures of the input object.</body>
-        </ownedComment>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="UnmarshallAction-result-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="UnmarshallAction-unmarshallType" name="unmarshallType" type="Classifier" association="A_unmarshallType_unmarshallAction">
-        <ownedComment xmi:id="UnmarshallAction-unmarshallType-_ownedComment.0" annotatedElement="UnmarshallAction-unmarshallType">
-          <body>The type of the object to be unmarshalled.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ValuePin" name="ValuePin">
-      <ownedComment xmi:id="ValuePin-_ownedComment.0" annotatedElement="ValuePin">
-        <body>A ValuePin is an InputPin that provides a value by evaluating a ValueSpecification.</body>
-      </ownedComment>
-      <ownedRule xmi:id="ValuePin-no_incoming_edges" name="no_incoming_edges" constrainedElement="ValuePin">
-        <ownedComment xmi:id="ValuePin-no_incoming_edges-_ownedComment.0" annotatedElement="ValuePin-no_incoming_edges">
-          <body>A ValuePin may have no incoming ActivityEdges.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ValuePin-no_incoming_edges-_specification">
-          <language>OCL</language>
-          <body>incoming->isEmpty()</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ValuePin-compatible_type" name="compatible_type" constrainedElement="ValuePin">
-        <ownedComment xmi:id="ValuePin-compatible_type-_ownedComment.0" annotatedElement="ValuePin-compatible_type">
-          <body>The type of the value ValueSpecification must conform to the type of the ValuePin.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ValuePin-compatible_type-_specification">
-          <language>OCL</language>
-          <body>value.type.conformsTo(type)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="ValuePin-_generalization.0" general="InputPin"/>
-      <ownedAttribute xmi:id="ValuePin-value" name="value" type="ValueSpecification" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_value_valuePin">
-        <ownedComment xmi:id="ValuePin-value-_ownedComment.0" annotatedElement="ValuePin-value">
-          <body>The ValueSpecification that is evaluated to obtain the value that the ValuePin will provide.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_value_valuePin" name="A_value_valuePin" visibility="private" memberEnd="ValuePin-value A_value_valuePin-valuePin">
-      <ownedEnd xmi:id="A_value_valuePin-valuePin" name="valuePin" type="ValuePin" subsettedProperty="Element-owner" association="A_value_valuePin">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_value_valuePin-valuePin-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_result_unmarshallAction" name="A_result_unmarshallAction" visibility="private" memberEnd="UnmarshallAction-result A_result_unmarshallAction-unmarshallAction">
-      <ownedEnd xmi:id="A_result_unmarshallAction-unmarshallAction" name="unmarshallAction" type="UnmarshallAction" subsettedProperty="A_output_action-action" association="A_result_unmarshallAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_result_unmarshallAction-unmarshallAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_unmarshallType_unmarshallAction" name="A_unmarshallType_unmarshallAction" visibility="private" memberEnd="UnmarshallAction-unmarshallType A_unmarshallType_unmarshallAction-unmarshallAction">
-      <ownedEnd xmi:id="A_unmarshallType_unmarshallAction-unmarshallAction" name="unmarshallAction" type="UnmarshallAction" association="A_unmarshallType_unmarshallAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_unmarshallType_unmarshallAction-unmarshallAction-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_unmarshallType_unmarshallAction-unmarshallAction-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_object_unmarshallAction" name="A_object_unmarshallAction" visibility="private" memberEnd="UnmarshallAction-object A_object_unmarshallAction-unmarshallAction">
-      <ownedEnd xmi:id="A_object_unmarshallAction-unmarshallAction" name="unmarshallAction" type="UnmarshallAction" subsettedProperty="A_input_action-action" association="A_object_unmarshallAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_object_unmarshallAction-unmarshallAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_first_testIdentityAction" name="A_first_testIdentityAction" visibility="private" memberEnd="TestIdentityAction-first A_first_testIdentityAction-testIdentityAction">
-      <ownedEnd xmi:id="A_first_testIdentityAction-testIdentityAction" name="testIdentityAction" type="TestIdentityAction" subsettedProperty="A_input_action-action" association="A_first_testIdentityAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_first_testIdentityAction-testIdentityAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_second_testIdentityAction" name="A_second_testIdentityAction" visibility="private" memberEnd="TestIdentityAction-second A_second_testIdentityAction-testIdentityAction">
-      <ownedEnd xmi:id="A_second_testIdentityAction-testIdentityAction" name="testIdentityAction" type="TestIdentityAction" subsettedProperty="A_input_action-action" association="A_second_testIdentityAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_second_testIdentityAction-testIdentityAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_result_testIdentityAction" name="A_result_testIdentityAction" visibility="private" memberEnd="TestIdentityAction-result A_result_testIdentityAction-testIdentityAction">
-      <ownedEnd xmi:id="A_result_testIdentityAction-testIdentityAction" name="testIdentityAction" type="TestIdentityAction" subsettedProperty="A_output_action-action" association="A_result_testIdentityAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_result_testIdentityAction-testIdentityAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_structuredNodeOutput_structuredActivityNode" name="A_structuredNodeOutput_structuredActivityNode" visibility="private" memberEnd="StructuredActivityNode-structuredNodeOutput A_structuredNodeOutput_structuredActivityNode-structuredActivityNode">
-      <ownedEnd xmi:id="A_structuredNodeOutput_structuredActivityNode-structuredActivityNode" name="structuredActivityNode" type="StructuredActivityNode" subsettedProperty="A_output_action-action" association="A_structuredNodeOutput_structuredActivityNode">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_structuredNodeOutput_structuredActivityNode-structuredActivityNode-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_structuredNodeInput_structuredActivityNode" name="A_structuredNodeInput_structuredActivityNode" visibility="private" memberEnd="StructuredActivityNode-structuredNodeInput A_structuredNodeInput_structuredActivityNode-structuredActivityNode">
-      <ownedEnd xmi:id="A_structuredNodeInput_structuredActivityNode-structuredActivityNode" name="structuredActivityNode" type="StructuredActivityNode" subsettedProperty="A_input_action-action" association="A_structuredNodeInput_structuredActivityNode">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_structuredNodeInput_structuredActivityNode-structuredActivityNode-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_edge_inStructuredNode" name="A_edge_inStructuredNode" visibility="private" memberEnd="StructuredActivityNode-edge ActivityEdge-inStructuredNode"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_node_inStructuredNode" name="A_node_inStructuredNode" visibility="private" memberEnd="StructuredActivityNode-node ActivityNode-inStructuredNode"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_variable_scope" name="A_variable_scope" visibility="private" memberEnd="StructuredActivityNode-variable Variable-scope"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_object_structuralFeatureAction" name="A_object_structuralFeatureAction" visibility="private" memberEnd="StructuralFeatureAction-object A_object_structuralFeatureAction-structuralFeatureAction">
-      <ownedEnd xmi:id="A_object_structuralFeatureAction-structuralFeatureAction" name="structuralFeatureAction" type="StructuralFeatureAction" subsettedProperty="A_input_action-action" association="A_object_structuralFeatureAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_object_structuralFeatureAction-structuralFeatureAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_structuralFeature_structuralFeatureAction" name="A_structuralFeature_structuralFeatureAction" visibility="private" memberEnd="StructuralFeatureAction-structuralFeature A_structuralFeature_structuralFeatureAction-structuralFeatureAction">
-      <ownedEnd xmi:id="A_structuralFeature_structuralFeatureAction-structuralFeatureAction" name="structuralFeatureAction" type="StructuralFeatureAction" association="A_structuralFeature_structuralFeatureAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_structuralFeature_structuralFeatureAction-structuralFeatureAction-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_structuralFeature_structuralFeatureAction-structuralFeatureAction-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_object_startObjectBehaviorAction" name="A_object_startObjectBehaviorAction" visibility="private" memberEnd="StartObjectBehaviorAction-object A_object_startObjectBehaviorAction-startObjectBehaviorAction">
-      <ownedEnd xmi:id="A_object_startObjectBehaviorAction-startObjectBehaviorAction" name="startObjectBehaviorAction" type="StartObjectBehaviorAction" subsettedProperty="A_input_action-action" association="A_object_startObjectBehaviorAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_object_startObjectBehaviorAction-startObjectBehaviorAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_object_startClassifierBehaviorAction" name="A_object_startClassifierBehaviorAction" visibility="private" memberEnd="StartClassifierBehaviorAction-object A_object_startClassifierBehaviorAction-startClassifierBehaviorAction">
-      <ownedEnd xmi:id="A_object_startClassifierBehaviorAction-startClassifierBehaviorAction" name="startClassifierBehaviorAction" type="StartClassifierBehaviorAction" subsettedProperty="A_input_action-action" association="A_object_startClassifierBehaviorAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_object_startClassifierBehaviorAction-startClassifierBehaviorAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_executableNode_sequenceNode" name="A_executableNode_sequenceNode" visibility="private" memberEnd="SequenceNode-executableNode A_executableNode_sequenceNode-sequenceNode">
-      <ownedEnd xmi:id="A_executableNode_sequenceNode-sequenceNode" name="sequenceNode" type="SequenceNode" subsettedProperty="ActivityNode-inStructuredNode" association="A_executableNode_sequenceNode">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_executableNode_sequenceNode-sequenceNode-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_signal_sendSignalAction" name="A_signal_sendSignalAction" visibility="private" memberEnd="SendSignalAction-signal A_signal_sendSignalAction-sendSignalAction">
-      <ownedEnd xmi:id="A_signal_sendSignalAction-sendSignalAction" name="sendSignalAction" type="SendSignalAction" association="A_signal_sendSignalAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_signal_sendSignalAction-sendSignalAction-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_signal_sendSignalAction-sendSignalAction-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_target_sendSignalAction" name="A_target_sendSignalAction" visibility="private" memberEnd="SendSignalAction-target A_target_sendSignalAction-sendSignalAction">
-      <ownedEnd xmi:id="A_target_sendSignalAction-sendSignalAction" name="sendSignalAction" type="SendSignalAction" subsettedProperty="A_input_action-action" association="A_target_sendSignalAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_target_sendSignalAction-sendSignalAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_request_sendObjectAction" name="A_request_sendObjectAction" visibility="private" memberEnd="SendObjectAction-request A_request_sendObjectAction-sendObjectAction">
-      <generalization xmi:id="A_request_sendObjectAction-_generalization.0" general="A_argument_invocationAction"/>
-      <ownedEnd xmi:id="A_request_sendObjectAction-sendObjectAction" name="sendObjectAction" type="SendObjectAction" redefinedProperty="A_argument_invocationAction-invocationAction" association="A_request_sendObjectAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_request_sendObjectAction-sendObjectAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_target_sendObjectAction" name="A_target_sendObjectAction" visibility="private" memberEnd="SendObjectAction-target A_target_sendObjectAction-sendObjectAction">
-      <ownedEnd xmi:id="A_target_sendObjectAction-sendObjectAction" name="sendObjectAction" type="SendObjectAction" subsettedProperty="A_input_action-action" association="A_target_sendObjectAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_target_sendObjectAction-sendObjectAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_returnInformation_replyAction" name="A_returnInformation_replyAction" visibility="private" memberEnd="ReplyAction-returnInformation A_returnInformation_replyAction-replyAction">
-      <ownedEnd xmi:id="A_returnInformation_replyAction-replyAction" name="replyAction" type="ReplyAction" subsettedProperty="A_input_action-action" association="A_returnInformation_replyAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_returnInformation_replyAction-replyAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_replyToCall_replyAction" name="A_replyToCall_replyAction" visibility="private" memberEnd="ReplyAction-replyToCall A_replyToCall_replyAction-replyAction">
-      <ownedEnd xmi:id="A_replyToCall_replyAction-replyAction" name="replyAction" type="ReplyAction" association="A_replyToCall_replyAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_replyToCall_replyAction-replyAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_replyValue_replyAction" name="A_replyValue_replyAction" visibility="private" memberEnd="ReplyAction-replyValue A_replyValue_replyAction-replyAction">
-      <ownedEnd xmi:id="A_replyValue_replyAction-replyAction" name="replyAction" type="ReplyAction" subsettedProperty="A_input_action-action" association="A_replyValue_replyAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_replyValue_replyAction-replyAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_removeAt_removeVariableValueAction" name="A_removeAt_removeVariableValueAction" visibility="private" memberEnd="RemoveVariableValueAction-removeAt A_removeAt_removeVariableValueAction-removeVariableValueAction">
-      <ownedEnd xmi:id="A_removeAt_removeVariableValueAction-removeVariableValueAction" name="removeVariableValueAction" type="RemoveVariableValueAction" subsettedProperty="A_input_action-action" association="A_removeAt_removeVariableValueAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_removeAt_removeVariableValueAction-removeVariableValueAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_removeAt_removeStructuralFeatureValueAction" name="A_removeAt_removeStructuralFeatureValueAction" visibility="private" memberEnd="RemoveStructuralFeatureValueAction-removeAt A_removeAt_removeStructuralFeatureValueAction-removeStructuralFeatureValueAction">
-      <ownedEnd xmi:id="A_removeAt_removeStructuralFeatureValueAction-removeStructuralFeatureValueAction" name="removeStructuralFeatureValueAction" type="RemoveStructuralFeatureValueAction" subsettedProperty="A_input_action-action" association="A_removeAt_removeStructuralFeatureValueAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_removeAt_removeStructuralFeatureValueAction-removeStructuralFeatureValueAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_collection_reduceAction" name="A_collection_reduceAction" visibility="private" memberEnd="ReduceAction-collection A_collection_reduceAction-reduceAction">
-      <ownedEnd xmi:id="A_collection_reduceAction-reduceAction" name="reduceAction" type="ReduceAction" subsettedProperty="A_input_action-action" association="A_collection_reduceAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_collection_reduceAction-reduceAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_reducer_reduceAction" name="A_reducer_reduceAction" visibility="private" memberEnd="ReduceAction-reducer A_reducer_reduceAction-reduceAction">
-      <ownedEnd xmi:id="A_reducer_reduceAction-reduceAction" name="reduceAction" type="ReduceAction" association="A_reducer_reduceAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_reducer_reduceAction-reduceAction-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_reducer_reduceAction-reduceAction-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_result_reduceAction" name="A_result_reduceAction" visibility="private" memberEnd="ReduceAction-result A_result_reduceAction-reduceAction">
-      <ownedEnd xmi:id="A_result_reduceAction-reduceAction" name="reduceAction" type="ReduceAction" subsettedProperty="A_output_action-action" association="A_result_reduceAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_result_reduceAction-reduceAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_object_reclassifyObjectAction" name="A_object_reclassifyObjectAction" visibility="private" memberEnd="ReclassifyObjectAction-object A_object_reclassifyObjectAction-reclassifyObjectAction">
-      <ownedEnd xmi:id="A_object_reclassifyObjectAction-reclassifyObjectAction" name="reclassifyObjectAction" type="ReclassifyObjectAction" subsettedProperty="A_input_action-action" association="A_object_reclassifyObjectAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_object_reclassifyObjectAction-reclassifyObjectAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_newClassifier_reclassifyObjectAction" name="A_newClassifier_reclassifyObjectAction" visibility="private" memberEnd="ReclassifyObjectAction-newClassifier A_newClassifier_reclassifyObjectAction-reclassifyObjectAction">
-      <ownedEnd xmi:id="A_newClassifier_reclassifyObjectAction-reclassifyObjectAction" name="reclassifyObjectAction" type="ReclassifyObjectAction" association="A_newClassifier_reclassifyObjectAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_newClassifier_reclassifyObjectAction-reclassifyObjectAction-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_newClassifier_reclassifyObjectAction-reclassifyObjectAction-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_oldClassifier_reclassifyObjectAction" name="A_oldClassifier_reclassifyObjectAction" visibility="private" memberEnd="ReclassifyObjectAction-oldClassifier A_oldClassifier_reclassifyObjectAction-reclassifyObjectAction">
-      <ownedEnd xmi:id="A_oldClassifier_reclassifyObjectAction-reclassifyObjectAction" name="reclassifyObjectAction" type="ReclassifyObjectAction" association="A_oldClassifier_reclassifyObjectAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_oldClassifier_reclassifyObjectAction-reclassifyObjectAction-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_oldClassifier_reclassifyObjectAction-reclassifyObjectAction-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_result_readVariableAction" name="A_result_readVariableAction" visibility="private" memberEnd="ReadVariableAction-result A_result_readVariableAction-readVariableAction">
-      <ownedEnd xmi:id="A_result_readVariableAction-readVariableAction" name="readVariableAction" type="ReadVariableAction" subsettedProperty="A_output_action-action" association="A_result_readVariableAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_result_readVariableAction-readVariableAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_result_readStructuralFeatureAction" name="A_result_readStructuralFeatureAction" visibility="private" memberEnd="ReadStructuralFeatureAction-result A_result_readStructuralFeatureAction-readStructuralFeatureAction">
-      <ownedEnd xmi:id="A_result_readStructuralFeatureAction-readStructuralFeatureAction" name="readStructuralFeatureAction" type="ReadStructuralFeatureAction" subsettedProperty="A_output_action-action" association="A_result_readStructuralFeatureAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_result_readStructuralFeatureAction-readStructuralFeatureAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_result_readSelfAction" name="A_result_readSelfAction" visibility="private" memberEnd="ReadSelfAction-result A_result_readSelfAction-readSelfAction">
-      <ownedEnd xmi:id="A_result_readSelfAction-readSelfAction" name="readSelfAction" type="ReadSelfAction" subsettedProperty="A_output_action-action" association="A_result_readSelfAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_result_readSelfAction-readSelfAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_qualifier_readLinkObjectEndQualifierAction" name="A_qualifier_readLinkObjectEndQualifierAction" visibility="private" memberEnd="ReadLinkObjectEndQualifierAction-qualifier A_qualifier_readLinkObjectEndQualifierAction-readLinkObjectEndQualifierAction">
-      <ownedEnd xmi:id="A_qualifier_readLinkObjectEndQualifierAction-readLinkObjectEndQualifierAction" name="readLinkObjectEndQualifierAction" type="ReadLinkObjectEndQualifierAction" association="A_qualifier_readLinkObjectEndQualifierAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_qualifier_readLinkObjectEndQualifierAction-readLinkObjectEndQualifierAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_object_readLinkObjectEndQualifierAction" name="A_object_readLinkObjectEndQualifierAction" visibility="private" memberEnd="ReadLinkObjectEndQualifierAction-object A_object_readLinkObjectEndQualifierAction-readLinkObjectEndQualifierAction">
-      <ownedEnd xmi:id="A_object_readLinkObjectEndQualifierAction-readLinkObjectEndQualifierAction" name="readLinkObjectEndQualifierAction" type="ReadLinkObjectEndQualifierAction" subsettedProperty="A_input_action-action" association="A_object_readLinkObjectEndQualifierAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_object_readLinkObjectEndQualifierAction-readLinkObjectEndQualifierAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_result_readLinkObjectEndQualifierAction" name="A_result_readLinkObjectEndQualifierAction" visibility="private" memberEnd="ReadLinkObjectEndQualifierAction-result A_result_readLinkObjectEndQualifierAction-readLinkObjectEndQualifierAction">
-      <ownedEnd xmi:id="A_result_readLinkObjectEndQualifierAction-readLinkObjectEndQualifierAction" name="readLinkObjectEndQualifierAction" type="ReadLinkObjectEndQualifierAction" subsettedProperty="A_output_action-action" association="A_result_readLinkObjectEndQualifierAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_result_readLinkObjectEndQualifierAction-readLinkObjectEndQualifierAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_object_readLinkObjectEndAction" name="A_object_readLinkObjectEndAction" visibility="private" memberEnd="ReadLinkObjectEndAction-object A_object_readLinkObjectEndAction-readLinkObjectEndAction">
-      <ownedEnd xmi:id="A_object_readLinkObjectEndAction-readLinkObjectEndAction" name="readLinkObjectEndAction" type="ReadLinkObjectEndAction" subsettedProperty="A_input_action-action" association="A_object_readLinkObjectEndAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_object_readLinkObjectEndAction-readLinkObjectEndAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_end_readLinkObjectEndAction" name="A_end_readLinkObjectEndAction" visibility="private" memberEnd="ReadLinkObjectEndAction-end A_end_readLinkObjectEndAction-readLinkObjectEndAction">
-      <ownedEnd xmi:id="A_end_readLinkObjectEndAction-readLinkObjectEndAction" name="readLinkObjectEndAction" type="ReadLinkObjectEndAction" association="A_end_readLinkObjectEndAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_end_readLinkObjectEndAction-readLinkObjectEndAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_result_readLinkObjectEndAction" name="A_result_readLinkObjectEndAction" visibility="private" memberEnd="ReadLinkObjectEndAction-result A_result_readLinkObjectEndAction-readLinkObjectEndAction">
-      <ownedEnd xmi:id="A_result_readLinkObjectEndAction-readLinkObjectEndAction" name="readLinkObjectEndAction" type="ReadLinkObjectEndAction" subsettedProperty="A_output_action-action" association="A_result_readLinkObjectEndAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_result_readLinkObjectEndAction-readLinkObjectEndAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_result_readLinkAction" name="A_result_readLinkAction" visibility="private" memberEnd="ReadLinkAction-result A_result_readLinkAction-readLinkAction">
-      <ownedEnd xmi:id="A_result_readLinkAction-readLinkAction" name="readLinkAction" type="ReadLinkAction" subsettedProperty="A_output_action-action" association="A_result_readLinkAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_result_readLinkAction-readLinkAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_classifier_readIsClassifiedObjectAction" name="A_classifier_readIsClassifiedObjectAction" visibility="private" memberEnd="ReadIsClassifiedObjectAction-classifier A_classifier_readIsClassifiedObjectAction-readIsClassifiedObjectAction">
-      <ownedEnd xmi:id="A_classifier_readIsClassifiedObjectAction-readIsClassifiedObjectAction" name="readIsClassifiedObjectAction" type="ReadIsClassifiedObjectAction" association="A_classifier_readIsClassifiedObjectAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_classifier_readIsClassifiedObjectAction-readIsClassifiedObjectAction-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_classifier_readIsClassifiedObjectAction-readIsClassifiedObjectAction-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_result_readIsClassifiedObjectAction" name="A_result_readIsClassifiedObjectAction" visibility="private" memberEnd="ReadIsClassifiedObjectAction-result A_result_readIsClassifiedObjectAction-readIsClassifiedObjectAction">
-      <ownedEnd xmi:id="A_result_readIsClassifiedObjectAction-readIsClassifiedObjectAction" name="readIsClassifiedObjectAction" type="ReadIsClassifiedObjectAction" subsettedProperty="A_output_action-action" association="A_result_readIsClassifiedObjectAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_result_readIsClassifiedObjectAction-readIsClassifiedObjectAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_object_readIsClassifiedObjectAction" name="A_object_readIsClassifiedObjectAction" visibility="private" memberEnd="ReadIsClassifiedObjectAction-object A_object_readIsClassifiedObjectAction-readIsClassifiedObjectAction">
-      <ownedEnd xmi:id="A_object_readIsClassifiedObjectAction-readIsClassifiedObjectAction" name="readIsClassifiedObjectAction" type="ReadIsClassifiedObjectAction" subsettedProperty="A_input_action-action" association="A_object_readIsClassifiedObjectAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_object_readIsClassifiedObjectAction-readIsClassifiedObjectAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_result_readExtentAction" name="A_result_readExtentAction" visibility="private" memberEnd="ReadExtentAction-result A_result_readExtentAction-readExtentAction">
-      <ownedEnd xmi:id="A_result_readExtentAction-readExtentAction" name="readExtentAction" type="ReadExtentAction" subsettedProperty="A_output_action-action" association="A_result_readExtentAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_result_readExtentAction-readExtentAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_classifier_readExtentAction" name="A_classifier_readExtentAction" visibility="private" memberEnd="ReadExtentAction-classifier A_classifier_readExtentAction-readExtentAction">
-      <ownedEnd xmi:id="A_classifier_readExtentAction-readExtentAction" name="readExtentAction" type="ReadExtentAction" association="A_classifier_readExtentAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_classifier_readExtentAction-readExtentAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_exception_raiseExceptionAction" name="A_exception_raiseExceptionAction" visibility="private" memberEnd="RaiseExceptionAction-exception A_exception_raiseExceptionAction-raiseExceptionAction">
-      <ownedEnd xmi:id="A_exception_raiseExceptionAction-raiseExceptionAction" name="raiseExceptionAction" type="RaiseExceptionAction" subsettedProperty="A_input_action-action" association="A_exception_raiseExceptionAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_exception_raiseExceptionAction-raiseExceptionAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_qualifier_qualifierValue" name="A_qualifier_qualifierValue" visibility="private" memberEnd="QualifierValue-qualifier A_qualifier_qualifierValue-qualifierValue">
-      <ownedEnd xmi:id="A_qualifier_qualifierValue-qualifierValue" name="qualifierValue" type="QualifierValue" association="A_qualifier_qualifierValue">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_qualifier_qualifierValue-qualifierValue-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_qualifier_qualifierValue-qualifierValue-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_value_qualifierValue" name="A_value_qualifierValue" visibility="private" memberEnd="QualifierValue-value A_value_qualifierValue-qualifierValue">
-      <ownedEnd xmi:id="A_value_qualifierValue-qualifierValue" name="qualifierValue" type="QualifierValue" association="A_value_qualifierValue">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_value_qualifierValue-qualifierValue-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_outputValue_opaqueAction" name="A_outputValue_opaqueAction" visibility="private" memberEnd="OpaqueAction-outputValue A_outputValue_opaqueAction-opaqueAction">
-      <ownedEnd xmi:id="A_outputValue_opaqueAction-opaqueAction" name="opaqueAction" type="OpaqueAction" subsettedProperty="A_output_action-action" association="A_outputValue_opaqueAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_outputValue_opaqueAction-opaqueAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_inputValue_opaqueAction" name="A_inputValue_opaqueAction" visibility="private" memberEnd="OpaqueAction-inputValue A_inputValue_opaqueAction-opaqueAction">
-      <ownedEnd xmi:id="A_inputValue_opaqueAction-opaqueAction" name="opaqueAction" type="OpaqueAction" subsettedProperty="A_input_action-action" association="A_inputValue_opaqueAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_inputValue_opaqueAction-opaqueAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_setupPart_loopNode" name="A_setupPart_loopNode" visibility="private" memberEnd="LoopNode-setupPart A_setupPart_loopNode-loopNode">
-      <ownedEnd xmi:id="A_setupPart_loopNode-loopNode" name="loopNode" type="LoopNode" association="A_setupPart_loopNode">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_setupPart_loopNode-loopNode-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_bodyPart_loopNode" name="A_bodyPart_loopNode" visibility="private" memberEnd="LoopNode-bodyPart A_bodyPart_loopNode-loopNode">
-      <ownedEnd xmi:id="A_bodyPart_loopNode-loopNode" name="loopNode" type="LoopNode" association="A_bodyPart_loopNode">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_bodyPart_loopNode-loopNode-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_loopVariable_loopNode" name="A_loopVariable_loopNode" visibility="private" memberEnd="LoopNode-loopVariable A_loopVariable_loopNode-loopNode">
-      <ownedEnd xmi:id="A_loopVariable_loopNode-loopNode" name="loopNode" type="LoopNode" subsettedProperty="Element-owner" association="A_loopVariable_loopNode">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_loopVariable_loopNode-loopNode-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_result_loopNode" name="A_result_loopNode" visibility="private" memberEnd="LoopNode-result A_result_loopNode-loopNode">
-      <ownedEnd xmi:id="A_result_loopNode-loopNode" name="loopNode" type="LoopNode" subsettedProperty="A_structuredNodeOutput_structuredActivityNode-structuredActivityNode" association="A_result_loopNode">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_result_loopNode-loopNode-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_bodyOutput_loopNode" name="A_bodyOutput_loopNode" visibility="private" memberEnd="LoopNode-bodyOutput A_bodyOutput_loopNode-loopNode">
-      <ownedEnd xmi:id="A_bodyOutput_loopNode-loopNode" name="loopNode" type="LoopNode" association="A_bodyOutput_loopNode">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_bodyOutput_loopNode-loopNode-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_bodyOutput_loopNode-loopNode-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_loopVariableInput_loopNode" name="A_loopVariableInput_loopNode" visibility="private" memberEnd="LoopNode-loopVariableInput A_loopVariableInput_loopNode-loopNode">
-      <ownedEnd xmi:id="A_loopVariableInput_loopNode-loopNode" name="loopNode" type="LoopNode" subsettedProperty="A_structuredNodeInput_structuredActivityNode-structuredActivityNode" association="A_loopVariableInput_loopNode">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_loopVariableInput_loopNode-loopNode-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_test_loopNode" name="A_test_loopNode" visibility="private" memberEnd="LoopNode-test A_test_loopNode-loopNode">
-      <ownedEnd xmi:id="A_test_loopNode-loopNode" name="loopNode" type="LoopNode" association="A_test_loopNode">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_test_loopNode-loopNode-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_decider_loopNode" name="A_decider_loopNode" visibility="private" memberEnd="LoopNode-decider A_decider_loopNode-loopNode">
-      <ownedEnd xmi:id="A_decider_loopNode-loopNode" name="loopNode" type="LoopNode" association="A_decider_loopNode">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_decider_loopNode-loopNode-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_destroyAt_linkEndDestructionData" name="A_destroyAt_linkEndDestructionData" visibility="private" memberEnd="LinkEndDestructionData-destroyAt A_destroyAt_linkEndDestructionData-linkEndDestructionData">
-      <ownedEnd xmi:id="A_destroyAt_linkEndDestructionData-linkEndDestructionData" name="linkEndDestructionData" type="LinkEndDestructionData" association="A_destroyAt_linkEndDestructionData">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_destroyAt_linkEndDestructionData-linkEndDestructionData-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_value_linkEndData" name="A_value_linkEndData" visibility="private" memberEnd="LinkEndData-value A_value_linkEndData-linkEndData">
-      <ownedEnd xmi:id="A_value_linkEndData-linkEndData" name="linkEndData" type="LinkEndData" association="A_value_linkEndData">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_value_linkEndData-linkEndData-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_end_linkEndData" name="A_end_linkEndData" visibility="private" memberEnd="LinkEndData-end A_end_linkEndData-linkEndData">
-      <ownedEnd xmi:id="A_end_linkEndData-linkEndData" name="linkEndData" type="LinkEndData" association="A_end_linkEndData">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_end_linkEndData-linkEndData-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_end_linkEndData-linkEndData-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_qualifier_linkEndData" name="A_qualifier_linkEndData" visibility="private" memberEnd="LinkEndData-qualifier A_qualifier_linkEndData-linkEndData">
-      <ownedEnd xmi:id="A_qualifier_linkEndData-linkEndData" name="linkEndData" type="LinkEndData" subsettedProperty="Element-owner" association="A_qualifier_linkEndData"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_insertAt_linkEndCreationData" name="A_insertAt_linkEndCreationData" visibility="private" memberEnd="LinkEndCreationData-insertAt A_insertAt_linkEndCreationData-linkEndCreationData">
-      <ownedEnd xmi:id="A_insertAt_linkEndCreationData-linkEndCreationData" name="linkEndCreationData" type="LinkEndCreationData" association="A_insertAt_linkEndCreationData">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_insertAt_linkEndCreationData-linkEndCreationData-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_inputValue_linkAction" name="A_inputValue_linkAction" visibility="private" memberEnd="LinkAction-inputValue A_inputValue_linkAction-linkAction">
-      <ownedEnd xmi:id="A_inputValue_linkAction-linkAction" name="linkAction" type="LinkAction" subsettedProperty="A_input_action-action" association="A_inputValue_linkAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_inputValue_linkAction-linkAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_endData_linkAction" name="A_endData_linkAction" visibility="private" memberEnd="LinkAction-endData A_endData_linkAction-linkAction">
-      <ownedEnd xmi:id="A_endData_linkAction-linkAction" name="linkAction" type="LinkAction" subsettedProperty="Element-owner" association="A_endData_linkAction"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_argument_invocationAction" name="A_argument_invocationAction" visibility="private" memberEnd="InvocationAction-argument A_argument_invocationAction-invocationAction">
-      <ownedEnd xmi:id="A_argument_invocationAction-invocationAction" name="invocationAction" type="InvocationAction" subsettedProperty="A_input_action-action" association="A_argument_invocationAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_argument_invocationAction-invocationAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_onPort_invocationAction" name="A_onPort_invocationAction" visibility="private" memberEnd="InvocationAction-onPort A_onPort_invocationAction-invocationAction">
-      <ownedEnd xmi:id="A_onPort_invocationAction-invocationAction" name="invocationAction" type="InvocationAction" association="A_onPort_invocationAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_onPort_invocationAction-invocationAction-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_onPort_invocationAction-invocationAction-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_inputElement_regionAsInput" name="A_inputElement_regionAsInput" visibility="private" memberEnd="ExpansionRegion-inputElement ExpansionNode-regionAsInput"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_outputElement_regionAsOutput" name="A_outputElement_regionAsOutput" visibility="private" memberEnd="ExpansionRegion-outputElement ExpansionNode-regionAsOutput"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_target_destroyObjectAction" name="A_target_destroyObjectAction" visibility="private" memberEnd="DestroyObjectAction-target A_target_destroyObjectAction-destroyObjectAction">
-      <ownedEnd xmi:id="A_target_destroyObjectAction-destroyObjectAction" name="destroyObjectAction" type="DestroyObjectAction" subsettedProperty="A_input_action-action" association="A_target_destroyObjectAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_target_destroyObjectAction-destroyObjectAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_endData_destroyLinkAction" name="A_endData_destroyLinkAction" visibility="private" memberEnd="DestroyLinkAction-endData A_endData_destroyLinkAction-destroyLinkAction">
-      <generalization xmi:id="A_endData_destroyLinkAction-_generalization.0" general="A_endData_linkAction"/>
-      <ownedEnd xmi:id="A_endData_destroyLinkAction-destroyLinkAction" name="destroyLinkAction" type="DestroyLinkAction" redefinedProperty="A_endData_linkAction-linkAction" association="A_endData_destroyLinkAction"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_classifier_createObjectAction" name="A_classifier_createObjectAction" visibility="private" memberEnd="CreateObjectAction-classifier A_classifier_createObjectAction-createObjectAction">
-      <ownedEnd xmi:id="A_classifier_createObjectAction-createObjectAction" name="createObjectAction" type="CreateObjectAction" association="A_classifier_createObjectAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_classifier_createObjectAction-createObjectAction-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_classifier_createObjectAction-createObjectAction-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_result_createObjectAction" name="A_result_createObjectAction" visibility="private" memberEnd="CreateObjectAction-result A_result_createObjectAction-createObjectAction">
-      <ownedEnd xmi:id="A_result_createObjectAction-createObjectAction" name="createObjectAction" type="CreateObjectAction" subsettedProperty="A_output_action-action" association="A_result_createObjectAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_result_createObjectAction-createObjectAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_result_createLinkObjectAction" name="A_result_createLinkObjectAction" visibility="private" memberEnd="CreateLinkObjectAction-result A_result_createLinkObjectAction-createLinkObjectAction">
-      <ownedEnd xmi:id="A_result_createLinkObjectAction-createLinkObjectAction" name="createLinkObjectAction" type="CreateLinkObjectAction" subsettedProperty="A_output_action-action" association="A_result_createLinkObjectAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_result_createLinkObjectAction-createLinkObjectAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_endData_createLinkAction" name="A_endData_createLinkAction" visibility="private" memberEnd="CreateLinkAction-endData A_endData_createLinkAction-createLinkAction">
-      <generalization xmi:id="A_endData_createLinkAction-_generalization.0" general="A_endData_linkAction"/>
-      <ownedEnd xmi:id="A_endData_createLinkAction-createLinkAction" name="createLinkAction" type="CreateLinkAction" redefinedProperty="A_endData_linkAction-linkAction" association="A_endData_createLinkAction"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_clause_conditionalNode" name="A_clause_conditionalNode" visibility="private" memberEnd="ConditionalNode-clause A_clause_conditionalNode-conditionalNode">
-      <ownedEnd xmi:id="A_clause_conditionalNode-conditionalNode" name="conditionalNode" type="ConditionalNode" subsettedProperty="Element-owner" association="A_clause_conditionalNode"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_result_conditionalNode" name="A_result_conditionalNode" visibility="private" memberEnd="ConditionalNode-result A_result_conditionalNode-conditionalNode">
-      <ownedEnd xmi:id="A_result_conditionalNode-conditionalNode" name="conditionalNode" type="ConditionalNode" subsettedProperty="A_structuredNodeOutput_structuredActivityNode-structuredActivityNode" association="A_result_conditionalNode">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_result_conditionalNode-conditionalNode-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_result_clearStructuralFeatureAction" name="A_result_clearStructuralFeatureAction" visibility="private" memberEnd="ClearStructuralFeatureAction-result A_result_clearStructuralFeatureAction-clearStructuralFeatureAction">
-      <ownedEnd xmi:id="A_result_clearStructuralFeatureAction-clearStructuralFeatureAction" name="clearStructuralFeatureAction" type="ClearStructuralFeatureAction" subsettedProperty="A_output_action-action" association="A_result_clearStructuralFeatureAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_result_clearStructuralFeatureAction-clearStructuralFeatureAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_object_clearAssociationAction" name="A_object_clearAssociationAction" visibility="private" memberEnd="ClearAssociationAction-object A_object_clearAssociationAction-clearAssociationAction">
-      <ownedEnd xmi:id="A_object_clearAssociationAction-clearAssociationAction" name="clearAssociationAction" type="ClearAssociationAction" subsettedProperty="A_input_action-action" association="A_object_clearAssociationAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_object_clearAssociationAction-clearAssociationAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_association_clearAssociationAction" name="A_association_clearAssociationAction" visibility="private" memberEnd="ClearAssociationAction-association A_association_clearAssociationAction-clearAssociationAction">
-      <ownedEnd xmi:id="A_association_clearAssociationAction-clearAssociationAction" name="clearAssociationAction" type="ClearAssociationAction" association="A_association_clearAssociationAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_association_clearAssociationAction-clearAssociationAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_decider_clause" name="A_decider_clause" visibility="private" memberEnd="Clause-decider A_decider_clause-clause">
-      <ownedEnd xmi:id="A_decider_clause-clause" name="clause" type="Clause" association="A_decider_clause">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_decider_clause-clause-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_bodyOutput_clause" name="A_bodyOutput_clause" visibility="private" memberEnd="Clause-bodyOutput A_bodyOutput_clause-clause">
-      <ownedEnd xmi:id="A_bodyOutput_clause-clause" name="clause" type="Clause" association="A_bodyOutput_clause">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_bodyOutput_clause-clause-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_bodyOutput_clause-clause-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_test_clause" name="A_test_clause" visibility="private" memberEnd="Clause-test A_test_clause-clause">
-      <ownedEnd xmi:id="A_test_clause-clause" name="clause" type="Clause" association="A_test_clause">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_test_clause-clause-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_body_clause" name="A_body_clause" visibility="private" memberEnd="Clause-body A_body_clause-clause">
-      <ownedEnd xmi:id="A_body_clause-clause" name="clause" type="Clause" association="A_body_clause">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_body_clause-clause-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_predecessorClause_successorClause" name="A_predecessorClause_successorClause" visibility="private" memberEnd="Clause-predecessorClause Clause-successorClause"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_target_callOperationAction" name="A_target_callOperationAction" visibility="private" memberEnd="CallOperationAction-target A_target_callOperationAction-callOperationAction">
-      <ownedEnd xmi:id="A_target_callOperationAction-callOperationAction" name="callOperationAction" type="CallOperationAction" subsettedProperty="A_input_action-action" association="A_target_callOperationAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_target_callOperationAction-callOperationAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_operation_callOperationAction" name="A_operation_callOperationAction" visibility="private" memberEnd="CallOperationAction-operation A_operation_callOperationAction-callOperationAction">
-      <ownedEnd xmi:id="A_operation_callOperationAction-callOperationAction" name="callOperationAction" type="CallOperationAction" association="A_operation_callOperationAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_operation_callOperationAction-callOperationAction-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_operation_callOperationAction-callOperationAction-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_behavior_callBehaviorAction" name="A_behavior_callBehaviorAction" visibility="private" memberEnd="CallBehaviorAction-behavior A_behavior_callBehaviorAction-callBehaviorAction">
-      <ownedEnd xmi:id="A_behavior_callBehaviorAction-callBehaviorAction" name="callBehaviorAction" type="CallBehaviorAction" association="A_behavior_callBehaviorAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_behavior_callBehaviorAction-callBehaviorAction-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_behavior_callBehaviorAction-callBehaviorAction-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_result_callAction" name="A_result_callAction" visibility="private" memberEnd="CallAction-result A_result_callAction-callAction">
-      <ownedEnd xmi:id="A_result_callAction-callAction" name="callAction" type="CallAction" subsettedProperty="A_output_action-action" association="A_result_callAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_result_callAction-callAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_signal_broadcastSignalAction" name="A_signal_broadcastSignalAction" visibility="private" memberEnd="BroadcastSignalAction-signal A_signal_broadcastSignalAction-broadcastSignalAction">
-      <ownedEnd xmi:id="A_signal_broadcastSignalAction-broadcastSignalAction" name="broadcastSignalAction" type="BroadcastSignalAction" association="A_signal_broadcastSignalAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_signal_broadcastSignalAction-broadcastSignalAction-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_signal_broadcastSignalAction-broadcastSignalAction-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_insertAt_addVariableValueAction" name="A_insertAt_addVariableValueAction" visibility="private" memberEnd="AddVariableValueAction-insertAt A_insertAt_addVariableValueAction-addVariableValueAction">
-      <ownedEnd xmi:id="A_insertAt_addVariableValueAction-addVariableValueAction" name="addVariableValueAction" type="AddVariableValueAction" subsettedProperty="A_input_action-action" association="A_insertAt_addVariableValueAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_insertAt_addVariableValueAction-addVariableValueAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_insertAt_addStructuralFeatureValueAction" name="A_insertAt_addStructuralFeatureValueAction" visibility="private" memberEnd="AddStructuralFeatureValueAction-insertAt A_insertAt_addStructuralFeatureValueAction-addStructuralFeatureValueAction">
-      <ownedEnd xmi:id="A_insertAt_addStructuralFeatureValueAction-addStructuralFeatureValueAction" name="addStructuralFeatureValueAction" type="AddStructuralFeatureValueAction" subsettedProperty="A_input_action-action" association="A_insertAt_addStructuralFeatureValueAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_insertAt_addStructuralFeatureValueAction-addStructuralFeatureValueAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_fromAction_actionInputPin" name="A_fromAction_actionInputPin" visibility="private" memberEnd="ActionInputPin-fromAction A_fromAction_actionInputPin-actionInputPin">
-      <ownedEnd xmi:id="A_fromAction_actionInputPin-actionInputPin" name="actionInputPin" type="ActionInputPin" subsettedProperty="Element-owner" association="A_fromAction_actionInputPin">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_fromAction_actionInputPin-actionInputPin-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_output_action" name="A_output_action" visibility="private" isDerived="true" memberEnd="Action-output A_output_action-action">
-      <ownedEnd xmi:id="A_output_action-action" name="action" type="Action" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="Element-owner" association="A_output_action">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_output_action-action-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_context_action" name="A_context_action" visibility="private" isDerived="true" memberEnd="Action-context A_context_action-action">
-      <ownedEnd xmi:id="A_context_action-action" name="action" type="Action" association="A_context_action">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_context_action-action-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_context_action-action-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_input_action" name="A_input_action" visibility="private" isDerived="true" memberEnd="Action-input A_input_action-action">
-      <ownedEnd xmi:id="A_input_action-action" name="action" type="Action" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="Element-owner" association="A_input_action">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_input_action-action-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_localPrecondition_action" name="A_localPrecondition_action" visibility="private" memberEnd="Action-localPrecondition A_localPrecondition_action-action">
-      <ownedEnd xmi:id="A_localPrecondition_action-action" name="action" type="Action" subsettedProperty="Element-owner" association="A_localPrecondition_action">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_localPrecondition_action-action-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_localPostcondition_action" name="A_localPostcondition_action" visibility="private" memberEnd="Action-localPostcondition A_localPostcondition_action-action">
-      <ownedEnd xmi:id="A_localPostcondition_action-action" name="action" type="Action" subsettedProperty="Element-owner" association="A_localPostcondition_action">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_localPostcondition_action-action-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_trigger_acceptEventAction" name="A_trigger_acceptEventAction" visibility="private" memberEnd="AcceptEventAction-trigger A_trigger_acceptEventAction-acceptEventAction">
-      <ownedEnd xmi:id="A_trigger_acceptEventAction-acceptEventAction" name="acceptEventAction" type="AcceptEventAction" subsettedProperty="Element-owner" association="A_trigger_acceptEventAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_trigger_acceptEventAction-acceptEventAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_result_acceptEventAction" name="A_result_acceptEventAction" visibility="private" memberEnd="AcceptEventAction-result A_result_acceptEventAction-acceptEventAction">
-      <ownedEnd xmi:id="A_result_acceptEventAction-acceptEventAction" name="acceptEventAction" type="AcceptEventAction" subsettedProperty="A_output_action-action" association="A_result_acceptEventAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_result_acceptEventAction-acceptEventAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_returnInformation_acceptCallAction" name="A_returnInformation_acceptCallAction" visibility="private" memberEnd="AcceptCallAction-returnInformation A_returnInformation_acceptCallAction-acceptCallAction">
-      <ownedEnd xmi:id="A_returnInformation_acceptCallAction-acceptCallAction" name="acceptCallAction" type="AcceptCallAction" subsettedProperty="A_output_action-action" association="A_returnInformation_acceptCallAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_returnInformation_acceptCallAction-acceptCallAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_value_writeVariableAction" name="A_value_writeVariableAction" visibility="private" memberEnd="WriteVariableAction-value A_value_writeVariableAction-writeVariableAction">
-      <ownedEnd xmi:id="A_value_writeVariableAction-writeVariableAction" name="writeVariableAction" type="WriteVariableAction" subsettedProperty="A_input_action-action" association="A_value_writeVariableAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_value_writeVariableAction-writeVariableAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_result_writeStructuralFeatureAction" name="A_result_writeStructuralFeatureAction" visibility="private" memberEnd="WriteStructuralFeatureAction-result A_result_writeStructuralFeatureAction-writeStructuralFeatureAction">
-      <ownedEnd xmi:id="A_result_writeStructuralFeatureAction-writeStructuralFeatureAction" name="writeStructuralFeatureAction" type="WriteStructuralFeatureAction" subsettedProperty="A_output_action-action" association="A_result_writeStructuralFeatureAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_result_writeStructuralFeatureAction-writeStructuralFeatureAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_value_writeStructuralFeatureAction" name="A_value_writeStructuralFeatureAction" visibility="private" memberEnd="WriteStructuralFeatureAction-value A_value_writeStructuralFeatureAction-writeStructuralFeatureAction">
-      <ownedEnd xmi:id="A_value_writeStructuralFeatureAction-writeStructuralFeatureAction" name="writeStructuralFeatureAction" type="WriteStructuralFeatureAction" subsettedProperty="A_input_action-action" association="A_value_writeStructuralFeatureAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_value_writeStructuralFeatureAction-writeStructuralFeatureAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_variable_variableAction" name="A_variable_variableAction" visibility="private" memberEnd="VariableAction-variable A_variable_variableAction-variableAction">
-      <ownedEnd xmi:id="A_variable_variableAction-variableAction" name="variableAction" type="VariableAction" association="A_variable_variableAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_variable_variableAction-variableAction-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_variable_variableAction-variableAction-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_result_valueSpecificationAction" name="A_result_valueSpecificationAction" visibility="private" memberEnd="ValueSpecificationAction-result A_result_valueSpecificationAction-valueSpecificationAction">
-      <ownedEnd xmi:id="A_result_valueSpecificationAction-valueSpecificationAction" name="valueSpecificationAction" type="ValueSpecificationAction" subsettedProperty="A_output_action-action" association="A_result_valueSpecificationAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_result_valueSpecificationAction-valueSpecificationAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_value_valueSpecificationAction" name="A_value_valueSpecificationAction" visibility="private" memberEnd="ValueSpecificationAction-value A_value_valueSpecificationAction-valueSpecificationAction">
-      <ownedEnd xmi:id="A_value_valueSpecificationAction-valueSpecificationAction" name="valueSpecificationAction" type="ValueSpecificationAction" subsettedProperty="Element-owner" association="A_value_valueSpecificationAction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_value_valueSpecificationAction-valueSpecificationAction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Activity" name="Activity">
-      <ownedComment xmi:id="Activity-_ownedComment.0" annotatedElement="Activity">
-        <body>An Activity is the specification of parameterized Behavior as the coordinated sequencing of subordinate units.</body>
-      </ownedComment>
-      <ownedRule xmi:id="Activity-maximum_one_parameter_node" name="maximum_one_parameter_node" constrainedElement="Activity">
-        <ownedComment xmi:id="Activity-maximum_one_parameter_node-_ownedComment.0" annotatedElement="Activity-maximum_one_parameter_node">
-          <body>A Parameter with direction other than inout must have exactly one ActivityParameterNode in an Activity.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Activity-maximum_one_parameter_node-_specification">
-          <language>OCL</language>
-          <body>ownedParameter->forAll(p | &#xD;
-   p.direction &lt;> ParameterDirectionKind::inout implies node->select(&#xD;
-       oclIsKindOf(ActivityParameterNode) and oclAsType(ActivityParameterNode).parameter = p)->size()= 1)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Activity-maximum_two_parameter_nodes" name="maximum_two_parameter_nodes" constrainedElement="Activity">
-        <ownedComment xmi:id="Activity-maximum_two_parameter_nodes-_ownedComment.0" annotatedElement="Activity-maximum_two_parameter_nodes">
-          <body>A Parameter with direction inout must have exactly two ActivityParameterNodes in an Activity, at most one with incoming ActivityEdges and at most one with outgoing ActivityEdges.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Activity-maximum_two_parameter_nodes-_specification">
-          <language>OCL</language>
-          <body>ownedParameter->forAll(p | &#xD;
-p.direction = ParameterDirectionKind::inout implies&#xD;
-let associatedNodes : Set(ActivityNode) = node->select(&#xD;
-       oclIsKindOf(ActivityParameterNode) and oclAsType(ActivityParameterNode).parameter = p) in &#xD;
-  associatedNodes->size()=2 and&#xD;
-  associatedNodes->select(incoming->notEmpty())->size()&lt;=1 and&#xD;
-  associatedNodes->select(outgoing->notEmpty())->size()&lt;=1&#xD;
-)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="Activity-_generalization.0" general="Behavior"/>
-      <ownedAttribute xmi:id="Activity-ownedGroup" name="ownedGroup" visibility="protected" type="ActivityGroup" aggregation="composite" subsettedProperty="Activity-group">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Activity-ownedGroup-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Activity-ownedGroup-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Activity-ownedNode" name="ownedNode" visibility="protected" type="ActivityNode" aggregation="composite" subsettedProperty="Activity-node">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Activity-ownedNode-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Activity-ownedNode-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Activity-edge" name="edge" type="ActivityEdge" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_edge_activity">
-        <ownedComment xmi:id="Activity-edge-_ownedComment.0" annotatedElement="Activity-edge">
-          <body>ActivityEdges expressing flow between the nodes of the Activity.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Activity-edge-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Activity-edge-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Activity-group" name="group" visibility="protected" type="ActivityGroup" aggregation="composite" isDerived="true" subsettedProperty="Element-ownedElement" association="A_group_inActivity">
-        <ownedComment xmi:id="Activity-group-_ownedComment.0" annotatedElement="Activity-group">
-          <body>Top-level ActivityGroups in the Activity.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Activity-group-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Activity-group-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Activity-isReadOnly" name="isReadOnly">
-        <ownedComment xmi:id="Activity-isReadOnly-_ownedComment.0" annotatedElement="Activity-isReadOnly">
-          <body>If true, this Activity must not make any changes to objects. The default is false (an Activity may make nonlocal changes). (This is an assertion, not an executable property. It may be used by an execution engine to optimize model execution. If the assertion is violated by the Activity, then the model is ill-formed.)</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Activity-isReadOnly-_defaultValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Activity-isSingleExecution" name="isSingleExecution">
-        <ownedComment xmi:id="Activity-isSingleExecution-_ownedComment.0" annotatedElement="Activity-isSingleExecution">
-          <body>If true, all invocations of the Activity are handled by the same execution.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Activity-isSingleExecution-_defaultValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Activity-node" name="node" visibility="protected" type="ActivityNode" aggregation="composite" isDerived="true" subsettedProperty="Element-ownedElement" association="A_node_activity">
-        <ownedComment xmi:id="Activity-node-_ownedComment.0" annotatedElement="Activity-node">
-          <body>ActivityNodes coordinated by the Activity.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Activity-node-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Activity-node-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Activity-partition" name="partition" visibility="protected" type="ActivityPartition" subsettedProperty="Activity-group Activity-ownedGroup" association="A_partition_activity">
-        <ownedComment xmi:id="Activity-partition-_ownedComment.0" annotatedElement="Activity-partition">
-          <body>Top-level ActivityPartitions in the Activity.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Activity-partition-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Activity-partition-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Activity-structuredNode" name="structuredNode" visibility="protected" type="StructuredActivityNode" aggregation="composite" subsettedProperty="Activity-group Activity-node" association="A_structuredNode_activity">
-        <ownedComment xmi:id="Activity-structuredNode-_ownedComment.0" annotatedElement="Activity-structuredNode">
-          <body>Top-level StructuredActivityNodes in the Activity.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Activity-structuredNode-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Activity-structuredNode-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Activity-variable" name="variable" type="Variable" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_variable_activityScope">
-        <ownedComment xmi:id="Activity-variable-_ownedComment.0" annotatedElement="Activity-variable">
-          <body>Top-level Variables defined by the Activity.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Activity-variable-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Activity-variable-_upperValue" value="*"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ActivityEdge" name="ActivityEdge" isAbstract="true">
-      <ownedComment xmi:id="ActivityEdge-_ownedComment.0" annotatedElement="ActivityEdge">
-        <body>An ActivityEdge is an abstract class for directed connections between two ActivityNodes.</body>
-      </ownedComment>
-      <ownedRule xmi:id="ActivityEdge-source_and_target" name="source_and_target" constrainedElement="ActivityEdge">
-        <ownedComment xmi:id="ActivityEdge-source_and_target-_ownedComment.0" annotatedElement="ActivityEdge-source_and_target">
-          <body>If an ActivityEdge is directly owned by an Activity, then its source and target must be directly or indirectly contained in the same Activity.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ActivityEdge-source_and_target-_specification">
-          <language>OCL</language>
-          <body>activity&lt;>null implies source.containingActivity() = activity and target.containingActivity() = activity</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="ActivityEdge-_generalization.0" general="RedefinableElement"/>
-      <ownedAttribute xmi:id="ActivityEdge-activity" name="activity" type="Activity" subsettedProperty="Element-owner" association="A_edge_activity">
-        <ownedComment xmi:id="ActivityEdge-activity-_ownedComment.0" annotatedElement="ActivityEdge-activity">
-          <body>The Activity containing the ActivityEdge, if it is directly owned by an Activity.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityEdge-activity-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ActivityEdge-guard" name="guard" type="ValueSpecification" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_guard_activityEdge">
-        <ownedComment xmi:id="ActivityEdge-guard-_ownedComment.0" annotatedElement="ActivityEdge-guard">
-          <body>A ValueSpecification that is evaluated to determine if a token can traverse the ActivityEdge. If an ActivityEdge has no guard, then there is no restriction on tokens traversing the edge.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityEdge-guard-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ActivityEdge-inGroup" name="inGroup" type="ActivityGroup" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="A_containedEdge_inGroup">
-        <ownedComment xmi:id="ActivityEdge-inGroup-_ownedComment.0" annotatedElement="ActivityEdge-inGroup">
-          <body>ActivityGroups containing the ActivityEdge.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityEdge-inGroup-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ActivityEdge-inGroup-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ActivityEdge-inPartition" name="inPartition" type="ActivityPartition" subsettedProperty="ActivityEdge-inGroup" association="A_edge_inPartition">
-        <ownedComment xmi:id="ActivityEdge-inPartition-_ownedComment.0" annotatedElement="ActivityEdge-inPartition">
-          <body>ActivityPartitions containing the ActivityEdge.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityEdge-inPartition-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ActivityEdge-inPartition-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ActivityEdge-inStructuredNode" name="inStructuredNode" type="StructuredActivityNode" subsettedProperty="ActivityEdge-inGroup Element-owner" association="A_edge_inStructuredNode">
-        <ownedComment xmi:id="ActivityEdge-inStructuredNode-_ownedComment.0" annotatedElement="ActivityEdge-inStructuredNode">
-          <body>The StructuredActivityNode containing the ActivityEdge, if it is owned by a StructuredActivityNode.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityEdge-inStructuredNode-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ActivityEdge-interrupts" name="interrupts" type="InterruptibleActivityRegion" association="A_interruptingEdge_interrupts">
-        <ownedComment xmi:id="ActivityEdge-interrupts-_ownedComment.0" annotatedElement="ActivityEdge-interrupts">
-          <body>The InterruptibleActivityRegion for which this ActivityEdge is an interruptingEdge.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityEdge-interrupts-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ActivityEdge-redefinedEdge" name="redefinedEdge" type="ActivityEdge" subsettedProperty="RedefinableElement-redefinedElement" association="A_redefinedEdge_activityEdge">
-        <ownedComment xmi:id="ActivityEdge-redefinedEdge-_ownedComment.0" annotatedElement="ActivityEdge-redefinedEdge">
-          <body>ActivityEdges from a generalization of the Activity containing this ActivityEdge that are redefined by this ActivityEdge.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityEdge-redefinedEdge-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ActivityEdge-redefinedEdge-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ActivityEdge-source" name="source" type="ActivityNode" association="A_outgoing_source_node">
-        <ownedComment xmi:id="ActivityEdge-source-_ownedComment.0" annotatedElement="ActivityEdge-source">
-          <body>The ActivityNode from which tokens are taken when they traverse the ActivityEdge.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ActivityEdge-target" name="target" type="ActivityNode" association="A_incoming_target_node">
-        <ownedComment xmi:id="ActivityEdge-target-_ownedComment.0" annotatedElement="ActivityEdge-target">
-          <body>The ActivityNode to which tokens are put when they traverse the ActivityEdge.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ActivityEdge-weight" name="weight" type="ValueSpecification" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_weight_activityEdge">
-        <ownedComment xmi:id="ActivityEdge-weight-_ownedComment.0" annotatedElement="ActivityEdge-weight">
-          <body>The minimum number of tokens that must traverse the ActivityEdge at the same time. If no weight is specified, this is equivalent to specifying a constant value of 1.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityEdge-weight-_lowerValue"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="ActivityEdge-isConsistentWith" name="isConsistentWith" bodyCondition="ActivityEdge-isConsistentWith-spec" isQuery="true" redefinedOperation="RedefinableElement-isConsistentWith">
-        <ownedRule xmi:id="ActivityEdge-isConsistentWith-spec" name="spec" constrainedElement="ActivityEdge-isConsistentWith">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="ActivityEdge-isConsistentWith-spec-_specification">
-            <language>OCL</language>
-            <body>result = (redefiningElement.oclIsKindOf(ActivityEdge))</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="ActivityEdge-isConsistentWith-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="ActivityEdge-isConsistentWith-redefiningElement" name="redefiningElement" type="RedefinableElement"/>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ActivityFinalNode" name="ActivityFinalNode">
-      <ownedComment xmi:id="ActivityFinalNode-_ownedComment.0" annotatedElement="ActivityFinalNode">
-        <body>An ActivityFinalNode is a FinalNode that terminates the execution of its owning Activity or StructuredActivityNode.</body>
-      </ownedComment>
-      <generalization xmi:id="ActivityFinalNode-_generalization.0" general="FinalNode"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ActivityGroup" name="ActivityGroup" isAbstract="true">
-      <ownedComment xmi:id="ActivityGroup-_ownedComment.0" annotatedElement="ActivityGroup">
-        <body>ActivityGroup is an abstract class for defining sets of ActivityNodes and ActivityEdges in an Activity.</body>
-      </ownedComment>
-      <ownedRule xmi:id="ActivityGroup-nodes_and_edges" name="nodes_and_edges" constrainedElement="ActivityGroup">
-        <ownedComment xmi:id="ActivityGroup-nodes_and_edges-_ownedComment.0" annotatedElement="ActivityGroup-nodes_and_edges">
-          <body>All containedNodes and containeEdges of an ActivityGroup must be in the same Activity as the group.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ActivityGroup-nodes_and_edges-_specification">
-          <language>OCL</language>
-          <body>containedNode->forAll(activity = self.containingActivity()) and &#xD;
-containedEdge->forAll(activity = self.containingActivity())</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ActivityGroup-not_contained" name="not_contained" constrainedElement="ActivityGroup">
-        <ownedComment xmi:id="ActivityGroup-not_contained-_ownedComment.0" annotatedElement="ActivityGroup-not_contained">
-          <body>No containedNode or containedEdge of an ActivityGroup may be contained by its subgroups or its superGroups, transitively.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ActivityGroup-not_contained-_specification">
-          <language>OCL</language>
-          <body>subgroup->closure(subgroup).containedNode->excludesAll(containedNode) and&#xD;
-superGroup->closure(superGroup).containedNode->excludesAll(containedNode) and &#xD;
-subgroup->closure(subgroup).containedEdge->excludesAll(containedEdge) and &#xD;
-superGroup->closure(superGroup).containedEdge->excludesAll(containedEdge)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="ActivityGroup-_generalization.0" general="ActivityContent"/>
-      <generalization xmi:id="ActivityGroup-_generalization.1" general="NamedElement"/>
-      <ownedAttribute xmi:id="ActivityGroup-containedEdge" name="containedEdge" type="ActivityEdge" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="A_containedEdge_inGroup">
-        <ownedComment xmi:id="ActivityGroup-containedEdge-_ownedComment.0" annotatedElement="ActivityGroup-containedEdge">
-          <body>ActivityEdges immediately contained in the ActivityGroup.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityGroup-containedEdge-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ActivityGroup-containedEdge-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ActivityGroup-containedNode" name="containedNode" type="ActivityNode" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="A_containedNode_inGroup">
-        <ownedComment xmi:id="ActivityGroup-containedNode-_ownedComment.0" annotatedElement="ActivityGroup-containedNode">
-          <body>ActivityNodes immediately contained in the ActivityGroup.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityGroup-containedNode-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ActivityGroup-containedNode-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ActivityGroup-inActivity" name="inActivity" visibility="protected" type="Activity" subsettedProperty="Element-owner" association="A_group_inActivity">
-        <ownedComment xmi:id="ActivityGroup-inActivity-_ownedComment.0" annotatedElement="ActivityGroup-inActivity">
-          <body>The Activity containing the ActivityGroup, if it is directly owned by an Activity.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityGroup-inActivity-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ActivityGroup-subgroup" name="subgroup" type="ActivityGroup" isReadOnly="true" aggregation="composite" isDerived="true" isDerivedUnion="true" subsettedProperty="Element-ownedElement" association="A_subgroup_superGroup">
-        <ownedComment xmi:id="ActivityGroup-subgroup-_ownedComment.0" annotatedElement="ActivityGroup-subgroup">
-          <body>Other ActivityGroups immediately contained in this ActivityGroup.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityGroup-subgroup-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ActivityGroup-subgroup-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ActivityGroup-superGroup" name="superGroup" type="ActivityGroup" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="Element-owner" association="A_subgroup_superGroup">
-        <ownedComment xmi:id="ActivityGroup-superGroup-_ownedComment.0" annotatedElement="ActivityGroup-superGroup">
-          <body>The ActivityGroup immediately containing this ActivityGroup, if it is directly owned by another ActivityGroup.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityGroup-superGroup-_lowerValue"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="ActivityGroup-containingActivity" name="containingActivity" bodyCondition="ActivityGroup-containingActivity-spec" isQuery="true" redefinedOperation="ActivityContent-containingActivity">
-        <ownedComment xmi:id="ActivityGroup-containingActivity-_ownedComment.0" annotatedElement="ActivityGroup-containingActivity">
-          <body>The Activity that directly or indirectly contains this ActivityGroup.</body>
-        </ownedComment>
-        <ownedRule xmi:id="ActivityGroup-containingActivity-spec" name="spec" constrainedElement="ActivityGroup-containingActivity">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="ActivityGroup-containingActivity-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if superGroup&lt;>null then superGroup.containingActivity()&#xD;
-else inActivity&#xD;
-endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="ActivityGroup-containingActivity-result" name="result" type="Activity" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityGroup-containingActivity-result-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ActivityNode" name="ActivityNode" isAbstract="true">
-      <ownedComment xmi:id="ActivityNode-_ownedComment.0" annotatedElement="ActivityNode">
-        <body>ActivityNode is an abstract class for points in the flow of an Activity connected by ActivityEdges.</body>
-      </ownedComment>
-      <generalization xmi:id="ActivityNode-_generalization.0" general="ActivityContent"/>
-      <generalization xmi:id="ActivityNode-_generalization.1" general="RedefinableElement"/>
-      <ownedAttribute xmi:id="ActivityNode-activity" name="activity" visibility="protected" type="Activity" subsettedProperty="Element-owner" association="A_node_activity">
-        <ownedComment xmi:id="ActivityNode-activity-_ownedComment.0" annotatedElement="ActivityNode-activity">
-          <body>The Activity containing the ActivityNode, if it is directly owned by an Activity.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityNode-activity-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ActivityNode-inGroup" name="inGroup" type="ActivityGroup" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="A_containedNode_inGroup">
-        <ownedComment xmi:id="ActivityNode-inGroup-_ownedComment.0" annotatedElement="ActivityNode-inGroup">
-          <body>ActivityGroups containing the ActivityNode.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityNode-inGroup-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ActivityNode-inGroup-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ActivityNode-inInterruptibleRegion" name="inInterruptibleRegion" type="InterruptibleActivityRegion" subsettedProperty="ActivityNode-inGroup" association="A_inInterruptibleRegion_node">
-        <ownedComment xmi:id="ActivityNode-inInterruptibleRegion-_ownedComment.0" annotatedElement="ActivityNode-inInterruptibleRegion">
-          <body>InterruptibleActivityRegions containing the ActivityNode.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityNode-inInterruptibleRegion-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ActivityNode-inInterruptibleRegion-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ActivityNode-inPartition" name="inPartition" type="ActivityPartition" subsettedProperty="ActivityNode-inGroup" association="A_inPartition_node">
-        <ownedComment xmi:id="ActivityNode-inPartition-_ownedComment.0" annotatedElement="ActivityNode-inPartition">
-          <body>ActivityPartitions containing the ActivityNode.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityNode-inPartition-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ActivityNode-inPartition-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ActivityNode-inStructuredNode" name="inStructuredNode" type="StructuredActivityNode" subsettedProperty="ActivityNode-inGroup Element-owner" association="A_node_inStructuredNode">
-        <ownedComment xmi:id="ActivityNode-inStructuredNode-_ownedComment.0" annotatedElement="ActivityNode-inStructuredNode">
-          <body>The StructuredActivityNode containing the ActvityNode, if it is directly owned by a StructuredActivityNode.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityNode-inStructuredNode-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ActivityNode-incoming" name="incoming" type="ActivityEdge" association="A_incoming_target_node">
-        <ownedComment xmi:id="ActivityNode-incoming-_ownedComment.0" annotatedElement="ActivityNode-incoming">
-          <body>ActivityEdges that have the ActivityNode as their target.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityNode-incoming-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ActivityNode-incoming-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ActivityNode-outgoing" name="outgoing" type="ActivityEdge" association="A_outgoing_source_node">
-        <ownedComment xmi:id="ActivityNode-outgoing-_ownedComment.0" annotatedElement="ActivityNode-outgoing">
-          <body>ActivityEdges that have the ActivityNode as their source.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityNode-outgoing-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ActivityNode-outgoing-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ActivityNode-redefinedNode" name="redefinedNode" type="ActivityNode" subsettedProperty="RedefinableElement-redefinedElement" association="A_redefinedNode_activityNode">
-        <ownedComment xmi:id="ActivityNode-redefinedNode-_ownedComment.0" annotatedElement="ActivityNode-redefinedNode">
-          <body>ActivityNodes from a generalization of the Activity containining this ActivityNode that are redefined by this ActivityNode.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityNode-redefinedNode-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ActivityNode-redefinedNode-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="ActivityNode-containingActivity" name="containingActivity" bodyCondition="ActivityNode-containingActivity-spec" isQuery="true" redefinedOperation="ActivityContent-containingActivity">
-        <ownedComment xmi:id="ActivityNode-containingActivity-_ownedComment.0" annotatedElement="ActivityNode-containingActivity">
-          <body>The Activity that directly or indirectly contains this ActivityNode.</body>
-        </ownedComment>
-        <ownedRule xmi:id="ActivityNode-containingActivity-spec" name="spec" constrainedElement="ActivityNode-containingActivity">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="ActivityNode-containingActivity-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if inStructuredNode&lt;>null then inStructuredNode.containingActivity()&#xD;
-else activity&#xD;
-endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="ActivityNode-containingActivity-result" name="result" type="Activity" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityNode-containingActivity-result-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="ActivityNode-isConsistentWith" name="isConsistentWith" bodyCondition="ActivityNode-isConsistentWith-spec" isQuery="true" redefinedOperation="RedefinableElement-isConsistentWith">
-        <ownedRule xmi:id="ActivityNode-isConsistentWith-spec" name="spec" constrainedElement="ActivityNode-isConsistentWith">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="ActivityNode-isConsistentWith-spec-_specification">
-            <language>OCL</language>
-            <body>result = (redefiningElement.oclIsKindOf(ActivityNode))</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="ActivityNode-isConsistentWith-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="ActivityNode-isConsistentWith-redefiningElement" name="redefiningElement" type="RedefinableElement"/>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ActivityParameterNode" name="ActivityParameterNode">
-      <ownedComment xmi:id="ActivityParameterNode-_ownedComment.0" annotatedElement="ActivityParameterNode">
-        <body>An ActivityParameterNode is an ObjectNode for accepting values from the input Parameters or providing values to the output Parameters of an Activity.</body>
-      </ownedComment>
-      <ownedRule xmi:id="ActivityParameterNode-no_outgoing_edges" name="no_outgoing_edges" constrainedElement="ActivityParameterNode">
-        <ownedComment xmi:id="ActivityParameterNode-no_outgoing_edges-_ownedComment.0" annotatedElement="ActivityParameterNode-no_outgoing_edges">
-          <body>An ActivityParameterNode with no outgoing ActivityEdges and one or more incoming ActivityEdges must have a parameter with direction out, inout, or return.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ActivityParameterNode-no_outgoing_edges-_specification">
-          <language>OCL</language>
-          <body>(incoming->notEmpty() and outgoing->isEmpty()) implies &#xD;
-	(parameter.direction = ParameterDirectionKind::out or &#xD;
-	 parameter.direction = ParameterDirectionKind::inout or &#xD;
-	 parameter.direction = ParameterDirectionKind::return)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ActivityParameterNode-has_parameters" name="has_parameters" constrainedElement="ActivityParameterNode">
-        <ownedComment xmi:id="ActivityParameterNode-has_parameters-_ownedComment.0" annotatedElement="ActivityParameterNode-has_parameters">
-          <body>The parameter of an ActivityParameterNode must be from the containing Activity.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ActivityParameterNode-has_parameters-_specification">
-          <language>OCL</language>
-          <body>activity.ownedParameter->includes(parameter)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ActivityParameterNode-same_type" name="same_type" constrainedElement="ActivityParameterNode">
-        <ownedComment xmi:id="ActivityParameterNode-same_type-_ownedComment.0" annotatedElement="ActivityParameterNode-same_type">
-          <body>The type of an ActivityParameterNode is the same as the type of its parameter.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ActivityParameterNode-same_type-_specification">
-          <language>OCL</language>
-          <body>type = parameter.type</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ActivityParameterNode-no_incoming_edges" name="no_incoming_edges" constrainedElement="ActivityParameterNode">
-        <ownedComment xmi:id="ActivityParameterNode-no_incoming_edges-_ownedComment.0" annotatedElement="ActivityParameterNode-no_incoming_edges">
-          <body>An ActivityParameterNode with no incoming ActivityEdges and one or more outgoing ActivityEdges must have a parameter with direction in or inout.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ActivityParameterNode-no_incoming_edges-_specification">
-          <language>OCL</language>
-          <body>(outgoing->notEmpty() and incoming->isEmpty()) implies &#xD;
-	(parameter.direction = ParameterDirectionKind::_'in' or &#xD;
-	 parameter.direction = ParameterDirectionKind::inout)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ActivityParameterNode-no_edges" name="no_edges" constrainedElement="ActivityParameterNode">
-        <ownedComment xmi:id="ActivityParameterNode-no_edges-_ownedComment.0" annotatedElement="ActivityParameterNode-no_edges">
-          <body>An ActivityParameterNode may have all incoming ActivityEdges or all outgoing ActivityEdges, but it must not have both incoming and outgoing ActivityEdges.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ActivityParameterNode-no_edges-_specification">
-          <language>OCL</language>
-          <body>incoming->isEmpty() or outgoing->isEmpty()</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="ActivityParameterNode-_generalization.0" general="ObjectNode"/>
-      <ownedAttribute xmi:id="ActivityParameterNode-parameter" name="parameter" type="Parameter" association="A_parameter_activityParameterNode">
-        <ownedComment xmi:id="ActivityParameterNode-parameter-_ownedComment.0" annotatedElement="ActivityParameterNode-parameter">
-          <body>The Parameter for which the ActivityParameterNode will be accepting or providing values.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ActivityPartition" name="ActivityPartition">
-      <ownedComment xmi:id="ActivityPartition-_ownedComment.0" annotatedElement="ActivityPartition">
-        <body>An ActivityPartition is a kind of ActivityGroup for identifying ActivityNodes that have some characteristic in common.</body>
-      </ownedComment>
-      <ownedRule xmi:id="ActivityPartition-represents_classifier" name="represents_classifier" constrainedElement="ActivityPartition">
-        <ownedComment xmi:id="ActivityPartition-represents_classifier-_ownedComment.0" annotatedElement="ActivityPartition-represents_classifier">
-          <body>If a non-external ActivityPartition represents a Classifier and has a superPartition, then the superPartition must represent a Classifier, and the Classifier of the subpartition must be nested (nestedClassifier or ownedBehavior) in the Classifier represented by the superPartition, or be at the contained end of a composition Association with the Classifier represented by the superPartition.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ActivityPartition-represents_classifier-_specification">
-          <language>OCL</language>
-          <body>(not isExternal and represents.oclIsKindOf(Classifier) and superPartition->notEmpty()) implies&#xD;
-(&#xD;
-   let representedClassifier : Classifier = represents.oclAsType(Classifier) in&#xD;
-     superPartition.represents.oclIsKindOf(Classifier) and&#xD;
-      let representedSuperClassifier : Classifier = superPartition.represents.oclAsType(Classifier) in&#xD;
-       (representedSuperClassifier.oclIsKindOf(BehavioredClassifier) and representedClassifier.oclIsKindOf(Behavior) and &#xD;
-        representedSuperClassifier.oclAsType(BehavioredClassifier).ownedBehavior->includes(representedClassifier.oclAsType(Behavior))) &#xD;
-       or&#xD;
-       (representedSuperClassifier.oclIsKindOf(Class) and  representedSuperClassifier.oclAsType(Class).nestedClassifier->includes(representedClassifier))&#xD;
-       or&#xD;
-       (Association.allInstances()->exists(a | a.memberEnd->exists(end1 | end1.isComposite and end1.type = representedClassifier and &#xD;
-                                                                      a.memberEnd->exists(end2 | end1&lt;>end2 and end2.type = representedSuperClassifier))))&#xD;
-)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ActivityPartition-represents_property_and_is_contained" name="represents_property_and_is_contained" constrainedElement="ActivityPartition">
-        <ownedComment xmi:id="ActivityPartition-represents_property_and_is_contained-_ownedComment.0" annotatedElement="ActivityPartition-represents_property_and_is_contained">
-          <body>If an ActivityPartition represents a Property and has a superPartition, then the Property must be of a Classifier represented by the superPartition, or of a Classifier that is the type of a Property represented by the superPartition.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ActivityPartition-represents_property_and_is_contained-_specification">
-          <language>OCL</language>
-          <body>(represents.oclIsKindOf(Property) and superPartition->notEmpty()) implies&#xD;
-(&#xD;
-  (superPartition.represents.oclIsKindOf(Classifier) and represents.owner = superPartition.represents) or &#xD;
-  (superPartition.represents.oclIsKindOf(Property) and represents.owner = superPartition.represents.oclAsType(Property).type)&#xD;
-)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ActivityPartition-represents_property" name="represents_property" constrainedElement="ActivityPartition">
-        <ownedComment xmi:id="ActivityPartition-represents_property-_ownedComment.0" annotatedElement="ActivityPartition-represents_property">
-          <body>If an ActivityPartition represents a Property and has a superPartition representing a Classifier, then all the other non-external subpartitions of the superPartition must represent Properties directly owned by the same Classifier.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ActivityPartition-represents_property-_specification">
-          <language>OCL</language>
-          <body>(represents.oclIsKindOf(Property) and superPartition->notEmpty() and superPartition.represents.oclIsKindOf(Classifier)) implies&#xD;
-(&#xD;
-  let representedClassifier : Classifier = superPartition.represents.oclAsType(Classifier)&#xD;
-  in&#xD;
-    superPartition.subpartition->reject(isExternal)->forAll(p | &#xD;
-       p.represents.oclIsKindOf(Property) and p.owner=representedClassifier)&#xD;
-)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ActivityPartition-dimension_not_contained" name="dimension_not_contained" constrainedElement="ActivityPartition">
-        <ownedComment xmi:id="ActivityPartition-dimension_not_contained-_ownedComment.0" annotatedElement="ActivityPartition-dimension_not_contained">
-          <body>An ActvivityPartition with isDimension = true may not be contained by another ActivityPartition.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ActivityPartition-dimension_not_contained-_specification">
-          <language>OCL</language>
-          <body>isDimension implies superPartition->isEmpty()</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="ActivityPartition-_generalization.0" general="ActivityGroup"/>
-      <ownedAttribute xmi:id="ActivityPartition-edge" name="edge" type="ActivityEdge" subsettedProperty="ActivityGroup-containedEdge" association="A_edge_inPartition">
-        <ownedComment xmi:id="ActivityPartition-edge-_ownedComment.0" annotatedElement="ActivityPartition-edge">
-          <body>ActivityEdges immediately contained in the ActivityPartition.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityPartition-edge-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ActivityPartition-edge-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ActivityPartition-isDimension" name="isDimension">
-        <ownedComment xmi:id="ActivityPartition-isDimension-_ownedComment.0" annotatedElement="ActivityPartition-isDimension">
-          <body>Indicates whether the ActivityPartition groups other ActivityPartitions along a dimension.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="ActivityPartition-isDimension-_defaultValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ActivityPartition-isExternal" name="isExternal">
-        <ownedComment xmi:id="ActivityPartition-isExternal-_ownedComment.0" annotatedElement="ActivityPartition-isExternal">
-          <body>Indicates whether the ActivityPartition represents an entity to which the partitioning structure does not apply.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="ActivityPartition-isExternal-_defaultValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ActivityPartition-node" name="node" type="ActivityNode" subsettedProperty="ActivityGroup-containedNode" association="A_inPartition_node">
-        <ownedComment xmi:id="ActivityPartition-node-_ownedComment.0" annotatedElement="ActivityPartition-node">
-          <body>ActivityNodes immediately contained in the ActivityPartition.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityPartition-node-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ActivityPartition-node-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ActivityPartition-represents" name="represents" type="Element" association="A_represents_activityPartition">
-        <ownedComment xmi:id="ActivityPartition-represents-_ownedComment.0" annotatedElement="ActivityPartition-represents">
-          <body>An Element represented by the functionality modeled within the ActivityPartition.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityPartition-represents-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ActivityPartition-subpartition" name="subpartition" type="ActivityPartition" aggregation="composite" subsettedProperty="ActivityGroup-subgroup" association="A_subpartition_superPartition">
-        <ownedComment xmi:id="ActivityPartition-subpartition-_ownedComment.0" annotatedElement="ActivityPartition-subpartition">
-          <body>Other ActivityPartitions immediately contained in this ActivityPartition (as its subgroups).</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityPartition-subpartition-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ActivityPartition-subpartition-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ActivityPartition-superPartition" name="superPartition" type="ActivityPartition" subsettedProperty="ActivityGroup-superGroup" association="A_subpartition_superPartition">
-        <ownedComment xmi:id="ActivityPartition-superPartition-_ownedComment.0" annotatedElement="ActivityPartition-superPartition">
-          <body>Other ActivityPartitions immediately containing this ActivityPartition (as its superGroups).</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ActivityPartition-superPartition-_lowerValue"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="CentralBufferNode" name="CentralBufferNode">
-      <ownedComment xmi:id="CentralBufferNode-_ownedComment.0" annotatedElement="CentralBufferNode">
-        <body>A CentralBufferNode is an ObjectNode for managing flows from multiple sources and targets.</body>
-      </ownedComment>
-      <generalization xmi:id="CentralBufferNode-_generalization.0" general="ObjectNode"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ControlFlow" name="ControlFlow">
-      <ownedComment xmi:id="ControlFlow-_ownedComment.0" annotatedElement="ControlFlow">
-        <body>A ControlFlow is an ActivityEdge traversed by control tokens or object tokens of control type, which are use to control the execution of ExecutableNodes.</body>
-      </ownedComment>
-      <ownedRule xmi:id="ControlFlow-object_nodes" name="object_nodes" constrainedElement="ControlFlow">
-        <ownedComment xmi:id="ControlFlow-object_nodes-_ownedComment.0" annotatedElement="ControlFlow-object_nodes">
-          <body>ControlFlows may not have ObjectNodes at either end, except for ObjectNodes with control type.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ControlFlow-object_nodes-_specification">
-          <language>OCL</language>
-          <body>(source.oclIsKindOf(ObjectNode) implies source.oclAsType(ObjectNode).isControlType) and &#xD;
-(target.oclIsKindOf(ObjectNode) implies target.oclAsType(ObjectNode).isControlType)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="ControlFlow-_generalization.0" general="ActivityEdge"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ControlNode" name="ControlNode" isAbstract="true">
-      <ownedComment xmi:id="ControlNode-_ownedComment.0" annotatedElement="ControlNode">
-        <body>A ControlNode is an abstract ActivityNode that coordinates flows in an Activity.</body>
-      </ownedComment>
-      <generalization xmi:id="ControlNode-_generalization.0" general="ActivityNode"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="DataStoreNode" name="DataStoreNode">
-      <ownedComment xmi:id="DataStoreNode-_ownedComment.0" annotatedElement="DataStoreNode">
-        <body>A DataStoreNode is a CentralBufferNode for persistent data.</body>
-      </ownedComment>
-      <generalization xmi:id="DataStoreNode-_generalization.0" general="CentralBufferNode"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="DecisionNode" name="DecisionNode">
-      <ownedComment xmi:id="DecisionNode-_ownedComment.0" annotatedElement="DecisionNode">
-        <body>A DecisionNode is a ControlNode that chooses between outgoing ActivityEdges for the routing of tokens.</body>
-      </ownedComment>
-      <ownedRule xmi:id="DecisionNode-zero_input_parameters" name="zero_input_parameters" constrainedElement="DecisionNode">
-        <ownedComment xmi:id="DecisionNode-zero_input_parameters-_ownedComment.0" annotatedElement="DecisionNode-zero_input_parameters">
-          <body>If the DecisionNode has no decisionInputFlow and an incoming ControlFlow, then any decisionInput Behavior has no in parameters.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="DecisionNode-zero_input_parameters-_specification">
-          <language>OCL</language>
-          <body>(decisionInput&lt;>null and decisionInputFlow=null and incoming->exists(oclIsKindOf(ControlFlow))) implies&#xD;
-   decisionInput.inputParameters()->isEmpty()</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="DecisionNode-edges" name="edges" constrainedElement="DecisionNode">
-        <ownedComment xmi:id="DecisionNode-edges-_ownedComment.0" annotatedElement="DecisionNode-edges">
-          <body>The ActivityEdges incoming to and outgoing from a DecisionNode, other than the decisionInputFlow (if any), must be either all ObjectFlows or all ControlFlows.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="DecisionNode-edges-_specification">
-          <language>OCL</language>
-          <body>let allEdges: Set(ActivityEdge) = incoming->union(outgoing) in&#xD;
-let allRelevantEdges: Set(ActivityEdge) = if decisionInputFlow->notEmpty() then allEdges->excluding(decisionInputFlow) else allEdges endif in&#xD;
-allRelevantEdges->forAll(oclIsKindOf(ControlFlow)) or allRelevantEdges->forAll(oclIsKindOf(ObjectFlow))&#xD;
-</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="DecisionNode-decision_input_flow_incoming" name="decision_input_flow_incoming" constrainedElement="DecisionNode">
-        <ownedComment xmi:id="DecisionNode-decision_input_flow_incoming-_ownedComment.0" annotatedElement="DecisionNode-decision_input_flow_incoming">
-          <body>The decisionInputFlow of a DecisionNode must be an incoming ActivityEdge of the DecisionNode.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="DecisionNode-decision_input_flow_incoming-_specification">
-          <language>OCL</language>
-          <body>incoming->includes(decisionInputFlow)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="DecisionNode-two_input_parameters" name="two_input_parameters" constrainedElement="DecisionNode">
-        <ownedComment xmi:id="DecisionNode-two_input_parameters-_ownedComment.0" annotatedElement="DecisionNode-two_input_parameters">
-          <body>If the DecisionNode has a decisionInputFlow and an second incoming ObjectFlow, then any decisionInput has two in Parameters, the first of which has a type that is the same as or a supertype of the type of object tokens offered on the non-decisionInputFlow and the second of which has a type that is the same as or a supertype of the type of object tokens offered on the decisionInputFlow.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="DecisionNode-two_input_parameters-_specification">
-          <language>OCL</language>
-          <body>(decisionInput&lt;>null and decisionInputFlow&lt;>null and incoming->forAll(oclIsKindOf(ObjectFlow))) implies&#xD;
-	decisionInput.inputParameters()->size()=2</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="DecisionNode-incoming_outgoing_edges" name="incoming_outgoing_edges" constrainedElement="DecisionNode">
-        <ownedComment xmi:id="DecisionNode-incoming_outgoing_edges-_ownedComment.0" annotatedElement="DecisionNode-incoming_outgoing_edges">
-          <body>A DecisionNode has one or two incoming ActivityEdges and at least one outgoing ActivityEdge.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="DecisionNode-incoming_outgoing_edges-_specification">
-          <language>OCL</language>
-          <body>(incoming->size() = 1 or incoming->size() = 2) and outgoing->size() > 0</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="DecisionNode-incoming_control_one_input_parameter" name="incoming_control_one_input_parameter" constrainedElement="DecisionNode">
-        <ownedComment xmi:id="DecisionNode-incoming_control_one_input_parameter-_ownedComment.0" annotatedElement="DecisionNode-incoming_control_one_input_parameter">
-          <body>If the DecisionNode has a decisionInputFlow and an incoming ControlFlow, then any decisionInput Behavior has one in Parameter whose type is the same as or a supertype of the type of object tokens offered on the decisionInputFlow.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="DecisionNode-incoming_control_one_input_parameter-_specification">
-          <language>OCL</language>
-          <body>(decisionInput&lt;>null and decisionInputFlow&lt;>null and incoming->exists(oclIsKindOf(ControlFlow))) implies&#xD;
-	decisionInput.inputParameters()->size()=1</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="DecisionNode-parameters" name="parameters" constrainedElement="DecisionNode">
-        <ownedComment xmi:id="DecisionNode-parameters-_ownedComment.0" annotatedElement="DecisionNode-parameters">
-          <body>A decisionInput Behavior has no out parameters, no inout parameters, and one return parameter.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="DecisionNode-parameters-_specification">
-          <language>OCL</language>
-          <body>decisionInput&lt;>null implies &#xD;
-  (decisionInput.ownedParameter->forAll(par | &#xD;
-     par.direction &lt;> ParameterDirectionKind::out and &#xD;
-     par.direction &lt;> ParameterDirectionKind::inout ) and&#xD;
-   decisionInput.ownedParameter->one(par | &#xD;
-     par.direction &lt;> ParameterDirectionKind::return))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="DecisionNode-incoming_object_one_input_parameter" name="incoming_object_one_input_parameter" constrainedElement="DecisionNode">
-        <ownedComment xmi:id="DecisionNode-incoming_object_one_input_parameter-_ownedComment.0" annotatedElement="DecisionNode-incoming_object_one_input_parameter">
-          <body>If the DecisionNode has no decisionInputFlow and an incoming ObjectFlow, then any decisionInput Behavior has one in Parameter whose type is the same as or a supertype of the type of object tokens offered on the incoming ObjectFlow.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="DecisionNode-incoming_object_one_input_parameter-_specification">
-          <language>OCL</language>
-          <body>(decisionInput&lt;>null and decisionInputFlow=null and incoming->forAll(oclIsKindOf(ObjectFlow))) implies&#xD;
-	decisionInput.inputParameters()->size()=1</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="DecisionNode-_generalization.0" general="ControlNode"/>
-      <ownedAttribute xmi:id="DecisionNode-decisionInput" name="decisionInput" type="Behavior" association="A_decisionInput_decisionNode">
-        <ownedComment xmi:id="DecisionNode-decisionInput-_ownedComment.0" annotatedElement="DecisionNode-decisionInput">
-          <body>A Behavior that is executed to provide an input to guard ValueSpecifications on ActivityEdges outgoing from the DecisionNode.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="DecisionNode-decisionInput-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="DecisionNode-decisionInputFlow" name="decisionInputFlow" type="ObjectFlow" association="A_decisionInputFlow_decisionNode">
-        <ownedComment xmi:id="DecisionNode-decisionInputFlow-_ownedComment.0" annotatedElement="DecisionNode-decisionInputFlow">
-          <body>An additional ActivityEdge incoming to the DecisionNode that provides a decision input value for the guards ValueSpecifications on ActivityEdges outgoing from the DecisionNode.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="DecisionNode-decisionInputFlow-_lowerValue"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ExceptionHandler" name="ExceptionHandler">
-      <ownedComment xmi:id="ExceptionHandler-_ownedComment.0" annotatedElement="ExceptionHandler">
-        <body>An ExceptionHandler is an Element that specifies a handlerBody ExecutableNode to execute in case the specified exception occurs during the execution of the protected ExecutableNode.</body>
-      </ownedComment>
-      <ownedRule xmi:id="ExceptionHandler-handler_body_edges" name="handler_body_edges" constrainedElement="ExceptionHandler">
-        <ownedComment xmi:id="ExceptionHandler-handler_body_edges-_ownedComment.0" annotatedElement="ExceptionHandler-handler_body_edges">
-          <body>The handlerBody has no incoming or outgoing ActivityEdges and the exceptionInput has no incoming ActivityEdges.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ExceptionHandler-handler_body_edges-_specification">
-          <language>OCL</language>
-          <body>handlerBody.incoming->isEmpty() and handlerBody.outgoing->isEmpty() and exceptionInput.incoming->isEmpty()</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ExceptionHandler-output_pins" name="output_pins" constrainedElement="ExceptionHandler">
-        <ownedComment xmi:id="ExceptionHandler-output_pins-_ownedComment.0" annotatedElement="ExceptionHandler-output_pins">
-          <body>If the protectedNode is an Action with OutputPins, then the handlerBody must also be an Action with the same number of OutputPins, which are compatible in type, ordering, and multiplicity to those of the protectedNode.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ExceptionHandler-output_pins-_specification">
-          <language>OCL</language>
-          <body>(protectedNode.oclIsKindOf(Action) and protectedNode.oclAsType(Action).output->notEmpty()) implies&#xD;
-(&#xD;
-  handlerBody.oclIsKindOf(Action) and &#xD;
-  let protectedNodeOutput : OrderedSet(OutputPin) = protectedNode.oclAsType(Action).output,&#xD;
-        handlerBodyOutput : OrderedSet(OutputPin) =  handlerBody.oclAsType(Action).output in&#xD;
-    protectedNodeOutput->size() = handlerBodyOutput->size() and&#xD;
-    Sequence{1..protectedNodeOutput->size()}->forAll(i |&#xD;
-    	handlerBodyOutput->at(i).type.conformsTo(protectedNodeOutput->at(i).type) and&#xD;
-    	handlerBodyOutput->at(i).isOrdered=protectedNodeOutput->at(i).isOrdered and&#xD;
-    	handlerBodyOutput->at(i).compatibleWith(protectedNodeOutput->at(i)))&#xD;
-)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ExceptionHandler-one_input" name="one_input" constrainedElement="ExceptionHandler">
-        <ownedComment xmi:id="ExceptionHandler-one_input-_ownedComment.0" annotatedElement="ExceptionHandler-one_input">
-          <body>The handlerBody is an Action with one InputPin, and that InputPin is the same as the exceptionInput.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ExceptionHandler-one_input-_specification">
-          <language>OCL</language>
-          <body>handlerBody.oclIsKindOf(Action) and&#xD;
-let inputs: OrderedSet(InputPin) = handlerBody.oclAsType(Action).input in&#xD;
-inputs->size()=1 and inputs->first()=exceptionInput</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ExceptionHandler-edge_source_target" name="edge_source_target" constrainedElement="ExceptionHandler">
-        <ownedComment xmi:id="ExceptionHandler-edge_source_target-_ownedComment.0" annotatedElement="ExceptionHandler-edge_source_target">
-          <body>An ActivityEdge that has a source within the handlerBody of an ExceptionHandler must have its target in the handlerBody also, and vice versa.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ExceptionHandler-edge_source_target-_specification">
-          <language>OCL</language>
-          <body>let nodes:Set(ActivityNode) = handlerBody.oclAsType(Action).allOwnedNodes() in&#xD;
-nodes.outgoing->forAll(nodes->includes(target)) and&#xD;
-nodes.incoming->forAll(nodes->includes(source))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ExceptionHandler-handler_body_owner" name="handler_body_owner" constrainedElement="ExceptionHandler">
-        <ownedComment xmi:id="ExceptionHandler-handler_body_owner-_ownedComment.0" annotatedElement="ExceptionHandler-handler_body_owner">
-          <body>The handlerBody must have the same owner as the protectedNode.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ExceptionHandler-handler_body_owner-_specification">
-          <language>OCL</language>
-          <body>handlerBody.owner=protectedNode.owner</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ExceptionHandler-exception_input_type" name="exception_input_type" constrainedElement="ExceptionHandler">
-        <ownedComment xmi:id="ExceptionHandler-exception_input_type-_ownedComment.0" annotatedElement="ExceptionHandler-exception_input_type">
-          <body>The exceptionInput must either have no type or every exceptionType must conform to the exceptionInput type.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ExceptionHandler-exception_input_type-_specification">
-          <language>OCL</language>
-          <body>exceptionInput.type=null or &#xD;
-exceptionType->forAll(conformsTo(exceptionInput.type.oclAsType(Classifier)))</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="ExceptionHandler-_generalization.0" general="Element"/>
-      <ownedAttribute xmi:id="ExceptionHandler-exceptionInput" name="exceptionInput" type="ObjectNode" association="A_exceptionInput_exceptionHandler">
-        <ownedComment xmi:id="ExceptionHandler-exceptionInput-_ownedComment.0" annotatedElement="ExceptionHandler-exceptionInput">
-          <body>An ObjectNode within the handlerBody. When the ExceptionHandler catches an exception, the exception token is placed on this ObjectNode, causing the handlerBody to execute.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ExceptionHandler-exceptionType" name="exceptionType" type="Classifier" association="A_exceptionType_exceptionHandler">
-        <ownedComment xmi:id="ExceptionHandler-exceptionType-_ownedComment.0" annotatedElement="ExceptionHandler-exceptionType">
-          <body>The Classifiers whose instances the ExceptionHandler catches as exceptions. If an exception occurs whose type is any exceptionType, the ExceptionHandler catches the exception and executes the handlerBody.</body>
-        </ownedComment>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ExceptionHandler-exceptionType-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ExceptionHandler-handlerBody" name="handlerBody" type="ExecutableNode" association="A_handlerBody_exceptionHandler">
-        <ownedComment xmi:id="ExceptionHandler-handlerBody-_ownedComment.0" annotatedElement="ExceptionHandler-handlerBody">
-          <body>An ExecutableNode that is executed if the ExceptionHandler catches an exception.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ExceptionHandler-protectedNode" name="protectedNode" type="ExecutableNode" subsettedProperty="Element-owner" association="A_handler_protectedNode">
-        <ownedComment xmi:id="ExceptionHandler-protectedNode-_ownedComment.0" annotatedElement="ExceptionHandler-protectedNode">
-          <body>The ExecutableNode protected by the ExceptionHandler. If an exception propagates out of the protectedNode and has a type matching one of the exceptionTypes, then it is caught by this ExceptionHandler.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ExecutableNode" name="ExecutableNode" isAbstract="true">
-      <ownedComment xmi:id="ExecutableNode-_ownedComment.0" annotatedElement="ExecutableNode">
-        <body>An ExecutableNode is an abstract class for ActivityNodes whose execution may be controlled using ControlFlows and to which ExceptionHandlers may be attached.</body>
-      </ownedComment>
-      <generalization xmi:id="ExecutableNode-_generalization.0" general="ActivityNode"/>
-      <ownedAttribute xmi:id="ExecutableNode-handler" name="handler" type="ExceptionHandler" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_handler_protectedNode">
-        <ownedComment xmi:id="ExecutableNode-handler-_ownedComment.0" annotatedElement="ExecutableNode-handler">
-          <body>A set of ExceptionHandlers that are examined if an exception propagates out of the ExceptionNode.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ExecutableNode-handler-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ExecutableNode-handler-_upperValue" value="*"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="FinalNode" name="FinalNode" isAbstract="true">
-      <ownedComment xmi:id="FinalNode-_ownedComment.0" annotatedElement="FinalNode">
-        <body>A FinalNode is an abstract ControlNode at which a flow in an Activity stops.</body>
-      </ownedComment>
-      <ownedRule xmi:id="FinalNode-no_outgoing_edges" name="no_outgoing_edges" constrainedElement="FinalNode">
-        <ownedComment xmi:id="FinalNode-no_outgoing_edges-_ownedComment.0" annotatedElement="FinalNode-no_outgoing_edges">
-          <body>A FinalNode has no outgoing ActivityEdges.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="FinalNode-no_outgoing_edges-_specification">
-          <language>OCL</language>
-          <body>outgoing->isEmpty()</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="FinalNode-_generalization.0" general="ControlNode"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="FlowFinalNode" name="FlowFinalNode">
-      <ownedComment xmi:id="FlowFinalNode-_ownedComment.0" annotatedElement="FlowFinalNode">
-        <body>A FlowFinalNode is a FinalNode that terminates a flow by consuming the tokens offered to it.</body>
-      </ownedComment>
-      <generalization xmi:id="FlowFinalNode-_generalization.0" general="FinalNode"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ForkNode" name="ForkNode">
-      <ownedComment xmi:id="ForkNode-_ownedComment.0" annotatedElement="ForkNode">
-        <body>A ForkNode is a ControlNode that splits a flow into multiple concurrent flows.</body>
-      </ownedComment>
-      <ownedRule xmi:id="ForkNode-edges" name="edges" constrainedElement="ForkNode">
-        <ownedComment xmi:id="ForkNode-edges-_ownedComment.0" annotatedElement="ForkNode-edges">
-          <body>The ActivityEdges incoming to and outgoing from a ForkNode must be either all ObjectFlows or all ControlFlows.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ForkNode-edges-_specification">
-          <language>OCL</language>
-          <body>let allEdges : Set(ActivityEdge) = incoming->union(outgoing) in&#xD;
-allEdges->forAll(oclIsKindOf(ControlFlow)) or allEdges->forAll(oclIsKindOf(ObjectFlow))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ForkNode-one_incoming_edge" name="one_incoming_edge" constrainedElement="ForkNode">
-        <ownedComment xmi:id="ForkNode-one_incoming_edge-_ownedComment.0" annotatedElement="ForkNode-one_incoming_edge">
-          <body>A ForkNode has one incoming ActivityEdge.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ForkNode-one_incoming_edge-_specification">
-          <language>OCL</language>
-          <body>incoming->size()=1</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="ForkNode-_generalization.0" general="ControlNode"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="InitialNode" name="InitialNode">
-      <ownedComment xmi:id="InitialNode-_ownedComment.0" annotatedElement="InitialNode">
-        <body>An InitialNode is a ControlNode that offers a single control token when initially enabled.</body>
-      </ownedComment>
-      <ownedRule xmi:id="InitialNode-no_incoming_edges" name="no_incoming_edges" constrainedElement="InitialNode">
-        <ownedComment xmi:id="InitialNode-no_incoming_edges-_ownedComment.0" annotatedElement="InitialNode-no_incoming_edges">
-          <body>An InitialNode has no incoming ActivityEdges.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="InitialNode-no_incoming_edges-_specification">
-          <language>OCL</language>
-          <body>incoming->isEmpty()</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="InitialNode-control_edges" name="control_edges" constrainedElement="InitialNode">
-        <ownedComment xmi:id="InitialNode-control_edges-_ownedComment.0" annotatedElement="InitialNode-control_edges">
-          <body>All the outgoing ActivityEdges from an InitialNode must be ControlFlows.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="InitialNode-control_edges-_specification">
-          <language>OCL</language>
-          <body>outgoing->forAll(oclIsKindOf(ControlFlow))</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="InitialNode-_generalization.0" general="ControlNode"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="InterruptibleActivityRegion" name="InterruptibleActivityRegion">
-      <ownedComment xmi:id="InterruptibleActivityRegion-_ownedComment.0" annotatedElement="InterruptibleActivityRegion">
-        <body>An InterruptibleActivityRegion is an ActivityGroup that supports the termination of tokens flowing in the portions of an activity within it.</body>
-      </ownedComment>
-      <ownedRule xmi:id="InterruptibleActivityRegion-interrupting_edges" name="interrupting_edges" constrainedElement="InterruptibleActivityRegion">
-        <ownedComment xmi:id="InterruptibleActivityRegion-interrupting_edges-_ownedComment.0" annotatedElement="InterruptibleActivityRegion-interrupting_edges">
-          <body>The interruptingEdges of an InterruptibleActivityRegion must have their source in the region and their target outside the region, but within the same Activity containing the region.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="InterruptibleActivityRegion-interrupting_edges-_specification">
-          <language>OCL</language>
-          <body>interruptingEdge->forAll(edge | &#xD;
-  node->includes(edge.source) and node->excludes(edge.target) and edge.target.containingActivity() = inActivity)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="InterruptibleActivityRegion-_generalization.0" general="ActivityGroup"/>
-      <ownedAttribute xmi:id="InterruptibleActivityRegion-interruptingEdge" name="interruptingEdge" type="ActivityEdge" association="A_interruptingEdge_interrupts">
-        <ownedComment xmi:id="InterruptibleActivityRegion-interruptingEdge-_ownedComment.0" annotatedElement="InterruptibleActivityRegion-interruptingEdge">
-          <body>The ActivityEdges leaving the InterruptibleActivityRegion on which a traversing token will result in the termination of other tokens flowing in the InterruptibleActivityRegion.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="InterruptibleActivityRegion-interruptingEdge-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InterruptibleActivityRegion-interruptingEdge-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="InterruptibleActivityRegion-node" name="node" type="ActivityNode" subsettedProperty="ActivityGroup-containedNode" association="A_inInterruptibleRegion_node">
-        <ownedComment xmi:id="InterruptibleActivityRegion-node-_ownedComment.0" annotatedElement="InterruptibleActivityRegion-node">
-          <body>ActivityNodes immediately contained in the InterruptibleActivityRegion.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="InterruptibleActivityRegion-node-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InterruptibleActivityRegion-node-_upperValue" value="*"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="JoinNode" name="JoinNode">
-      <ownedComment xmi:id="JoinNode-_ownedComment.0" annotatedElement="JoinNode">
-        <body>A JoinNode is a ControlNode that synchronizes multiple flows.</body>
-      </ownedComment>
-      <ownedRule xmi:id="JoinNode-one_outgoing_edge" name="one_outgoing_edge" constrainedElement="JoinNode">
-        <ownedComment xmi:id="JoinNode-one_outgoing_edge-_ownedComment.0" annotatedElement="JoinNode-one_outgoing_edge">
-          <body>A JoinNode has one outgoing ActivityEdge.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="JoinNode-one_outgoing_edge-_specification">
-          <language>OCL</language>
-          <body>outgoing->size() = 1</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="JoinNode-incoming_object_flow" name="incoming_object_flow" constrainedElement="JoinNode">
-        <ownedComment xmi:id="JoinNode-incoming_object_flow-_ownedComment.0" annotatedElement="JoinNode-incoming_object_flow">
-          <body>If one of the incoming ActivityEdges of a JoinNode is an ObjectFlow, then its outgoing ActivityEdge must be an ObjectFlow. Otherwise its outgoing ActivityEdge must be a ControlFlow.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="JoinNode-incoming_object_flow-_specification">
-          <language>OCL</language>
-          <body>if incoming->exists(oclIsKindOf(ObjectFlow)) then outgoing->forAll(oclIsKindOf(ObjectFlow))&#xD;
-else outgoing->forAll(oclIsKindOf(ControlFlow))&#xD;
-endif</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="JoinNode-_generalization.0" general="ControlNode"/>
-      <ownedAttribute xmi:id="JoinNode-isCombineDuplicate" name="isCombineDuplicate">
-        <ownedComment xmi:id="JoinNode-isCombineDuplicate-_ownedComment.0" annotatedElement="JoinNode-isCombineDuplicate">
-          <body>Indicates whether incoming tokens having objects with the same identity are combined into one by the JoinNode.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="JoinNode-isCombineDuplicate-_defaultValue" value="true"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="JoinNode-joinSpec" name="joinSpec" type="ValueSpecification" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_joinSpec_joinNode">
-        <ownedComment xmi:id="JoinNode-joinSpec-_ownedComment.0" annotatedElement="JoinNode-joinSpec">
-          <body>A ValueSpecification giving the condition under which the JoinNode will offer a token on its outgoing ActivityEdge. If no joinSpec is specified, then the JoinNode will offer an outgoing token if tokens are offered on all of its incoming ActivityEdges (an &quot;and&quot; condition).</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="JoinNode-joinSpec-_lowerValue"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="MergeNode" name="MergeNode">
-      <ownedComment xmi:id="MergeNode-_ownedComment.0" annotatedElement="MergeNode">
-        <body>A merge node is a control node that brings together multiple alternate flows. It is not used to synchronize concurrent flows but to accept one among several alternate flows.</body>
-      </ownedComment>
-      <ownedRule xmi:id="MergeNode-one_outgoing_edge" name="one_outgoing_edge" constrainedElement="MergeNode">
-        <ownedComment xmi:id="MergeNode-one_outgoing_edge-_ownedComment.0" annotatedElement="MergeNode-one_outgoing_edge">
-          <body>A MergeNode has one outgoing ActivityEdge.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="MergeNode-one_outgoing_edge-_specification">
-          <language>OCL</language>
-          <body>outgoing->size()=1</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="MergeNode-edges" name="edges" constrainedElement="MergeNode">
-        <ownedComment xmi:id="MergeNode-edges-_ownedComment.0" annotatedElement="MergeNode-edges">
-          <body>The ActivityEdges incoming to and outgoing from a MergeNode must be either all ObjectFlows or all ControlFlows.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="MergeNode-edges-_specification">
-          <language>OCL</language>
-          <body>let allEdges : Set(ActivityEdge) = incoming->union(outgoing) in&#xD;
-allEdges->forAll(oclIsKindOf(ControlFlow)) or allEdges->forAll(oclIsKindOf(ObjectFlow))</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="MergeNode-_generalization.0" general="ControlNode"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ObjectFlow" name="ObjectFlow">
-      <ownedComment xmi:id="ObjectFlow-_ownedComment.0" annotatedElement="ObjectFlow">
-        <body>An ObjectFlow is an ActivityEdge that is traversed by object tokens that may hold values. Object flows also support multicast/receive, token selection from object nodes, and transformation of tokens.</body>
-      </ownedComment>
-      <ownedRule xmi:id="ObjectFlow-input_and_output_parameter" name="input_and_output_parameter" constrainedElement="ObjectFlow">
-        <ownedComment xmi:id="ObjectFlow-input_and_output_parameter-_ownedComment.0" annotatedElement="ObjectFlow-input_and_output_parameter">
-          <body>A selection Behavior has one input Parameter and one output Parameter. The input Parameter must have the same as or a supertype of the type of the source ObjectNode, be non-unique and have multiplicity 0..*. The output Parameter must be the same or a subtype of the type of source ObjectNode. The Behavior cannot have side effects.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ObjectFlow-input_and_output_parameter-_specification">
-          <language>OCL</language>
-          <body>selection&lt;>null implies&#xD;
-	selection.inputParameters()->size()=1 and&#xD;
-	selection.inputParameters()->forAll(not isUnique and is(0,*)) and&#xD;
-	selection.outputParameters()->size()=1</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ObjectFlow-no_executable_nodes" name="no_executable_nodes" constrainedElement="ObjectFlow">
-        <ownedComment xmi:id="ObjectFlow-no_executable_nodes-_ownedComment.0" annotatedElement="ObjectFlow-no_executable_nodes">
-          <body>ObjectFlows may not have ExecutableNodes at either end.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ObjectFlow-no_executable_nodes-_specification">
-          <language>OCL</language>
-          <body>not (source.oclIsKindOf(ExecutableNode) or target.oclIsKindOf(ExecutableNode))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ObjectFlow-transformation_behavior" name="transformation_behavior" constrainedElement="ObjectFlow">
-        <ownedComment xmi:id="ObjectFlow-transformation_behavior-_ownedComment.0" annotatedElement="ObjectFlow-transformation_behavior">
-          <body>A transformation Behavior has one input Parameter and one output Parameter. The input Parameter must be the same as or a supertype of the type of object token coming from the source end. The output Parameter must be the same or a subtype of the type of object token expected downstream. The Behavior cannot have side effects.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ObjectFlow-transformation_behavior-_specification">
-          <language>OCL</language>
-          <body>transformation&lt;>null implies&#xD;
-	transformation.inputParameters()->size()=1 and&#xD;
-	transformation.outputParameters()->size()=1</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ObjectFlow-selection_behavior" name="selection_behavior" constrainedElement="ObjectFlow">
-        <ownedComment xmi:id="ObjectFlow-selection_behavior-_ownedComment.0" annotatedElement="ObjectFlow-selection_behavior">
-          <body>An ObjectFlow may have a selection Behavior only if it has an ObjectNode as its source.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ObjectFlow-selection_behavior-_specification">
-          <language>OCL</language>
-          <body>selection&lt;>null implies source.oclIsKindOf(ObjectNode)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ObjectFlow-compatible_types" name="compatible_types" constrainedElement="ObjectFlow">
-        <ownedComment xmi:id="ObjectFlow-compatible_types-_ownedComment.0" annotatedElement="ObjectFlow-compatible_types">
-          <body>ObjectNodes connected by an ObjectFlow, with optionally intervening ControlNodes, must have compatible types. In particular, the downstream ObjectNode type must be the same or a supertype of the upstream ObjectNode type.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ObjectFlow-compatible_types-_specification" language=""/>
-      </ownedRule>
-      <ownedRule xmi:id="ObjectFlow-same_upper_bounds" name="same_upper_bounds" constrainedElement="ObjectFlow">
-        <ownedComment xmi:id="ObjectFlow-same_upper_bounds-_ownedComment.0" annotatedElement="ObjectFlow-same_upper_bounds">
-          <body>ObjectNodes connected by an ObjectFlow, with optionally intervening ControlNodes, must have the same upperBounds.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ObjectFlow-same_upper_bounds-_specification" language=""/>
-      </ownedRule>
-      <ownedRule xmi:id="ObjectFlow-target" name="target" constrainedElement="ObjectFlow">
-        <ownedComment xmi:id="ObjectFlow-target-_ownedComment.0" annotatedElement="ObjectFlow-target">
-          <body>An ObjectFlow with a constant weight may not target an ObjectNode, with optionally intervening ControlNodes, that has an upper bound less than the weight.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ObjectFlow-target-_specification" language=""/>
-      </ownedRule>
-      <ownedRule xmi:id="ObjectFlow-is_multicast_or_is_multireceive" name="is_multicast_or_is_multireceive" constrainedElement="ObjectFlow">
-        <ownedComment xmi:id="ObjectFlow-is_multicast_or_is_multireceive-_ownedComment.0" annotatedElement="ObjectFlow-is_multicast_or_is_multireceive">
-          <body>isMulticast and isMultireceive cannot both be true.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ObjectFlow-is_multicast_or_is_multireceive-_specification">
-          <language>OCL</language>
-          <body>not (isMulticast and isMultireceive)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="ObjectFlow-_generalization.0" general="ActivityEdge"/>
-      <ownedAttribute xmi:id="ObjectFlow-isMulticast" name="isMulticast">
-        <ownedComment xmi:id="ObjectFlow-isMulticast-_ownedComment.0" annotatedElement="ObjectFlow-isMulticast">
-          <body>Indicates whether the objects in the ObjectFlow are passed by multicasting.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="ObjectFlow-isMulticast-_defaultValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ObjectFlow-isMultireceive" name="isMultireceive">
-        <ownedComment xmi:id="ObjectFlow-isMultireceive-_ownedComment.0" annotatedElement="ObjectFlow-isMultireceive">
-          <body>Indicates whether the objects in the ObjectFlow are gathered from respondents to multicasting.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="ObjectFlow-isMultireceive-_defaultValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ObjectFlow-selection" name="selection" type="Behavior" association="A_selection_objectFlow">
-        <ownedComment xmi:id="ObjectFlow-selection-_ownedComment.0" annotatedElement="ObjectFlow-selection">
-          <body>A Behavior used to select tokens from a source ObjectNode.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ObjectFlow-selection-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ObjectFlow-transformation" name="transformation" type="Behavior" association="A_transformation_objectFlow">
-        <ownedComment xmi:id="ObjectFlow-transformation-_ownedComment.0" annotatedElement="ObjectFlow-transformation">
-          <body>A Behavior used to change or replace object tokens flowing along the ObjectFlow.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ObjectFlow-transformation-_lowerValue"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ObjectNode" name="ObjectNode" isAbstract="true">
-      <ownedComment xmi:id="ObjectNode-_ownedComment.0" annotatedElement="ObjectNode">
-        <body>An ObjectNode is an abstract ActivityNode that may hold tokens within the object flow in an Activity. ObjectNodes also support token selection, limitation on the number of tokens held, specification of the state required for tokens being held, and carrying control values.</body>
-      </ownedComment>
-      <ownedRule xmi:id="ObjectNode-input_output_parameter" name="input_output_parameter" constrainedElement="ObjectNode">
-        <ownedComment xmi:id="ObjectNode-input_output_parameter-_ownedComment.0" annotatedElement="ObjectNode-input_output_parameter">
-          <body>A selection Behavior has one input Parameter and one output Parameter. The input Parameter must have the same type as  or a supertype of the type of ObjectNode, be non-unique, and have multiplicity 0..*. The output Parameter must be the same or a subtype of the type of ObjectNode. The Behavior cannot have side effects.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ObjectNode-input_output_parameter-_specification">
-          <language>OCL</language>
-          <body>selection&lt;>null implies&#xD;
-	selection.inputParameters()->size()=1 and&#xD;
-	selection.inputParameters()->forAll(p | not p.isUnique and p.is(0,*) and self.type.conformsTo(p.type)) and&#xD;
-	selection.outputParameters()->size()=1 and&#xD;
-		selection.inputParameters()->forAll(p | self.type.conformsTo(p.type))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ObjectNode-selection_behavior" name="selection_behavior" constrainedElement="ObjectNode">
-        <ownedComment xmi:id="ObjectNode-selection_behavior-_ownedComment.0" annotatedElement="ObjectNode-selection_behavior">
-          <body>If an ObjectNode has a selection Behavior, then the ordering of the object node is ordered, and vice versa.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ObjectNode-selection_behavior-_specification">
-          <language>OCL</language>
-          <body>(selection&lt;>null) = (ordering=ObjectNodeOrderingKind::ordered)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ObjectNode-object_flow_edges" name="object_flow_edges" constrainedElement="ObjectNode">
-        <ownedComment xmi:id="ObjectNode-object_flow_edges-_ownedComment.0" annotatedElement="ObjectNode-object_flow_edges">
-          <body>If isControlType=false, the ActivityEdges incoming to or outgoing from an ObjectNode must all be ObjectFlows.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ObjectNode-object_flow_edges-_specification">
-          <language>OCL</language>
-          <body>(not isControlType) implies incoming->union(outgoing)->forAll(oclIsKindOf(ObjectFlow))</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="ObjectNode-_generalization.0" general="TypedElement"/>
-      <generalization xmi:id="ObjectNode-_generalization.1" general="ActivityNode"/>
-      <ownedAttribute xmi:id="ObjectNode-inState" name="inState" type="State" association="A_inState_objectNode">
-        <ownedComment xmi:id="ObjectNode-inState-_ownedComment.0" annotatedElement="ObjectNode-inState">
-          <body>The States required to be associated with the values held by tokens on this ObjectNode.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ObjectNode-inState-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ObjectNode-inState-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ObjectNode-isControlType" name="isControlType">
-        <ownedComment xmi:id="ObjectNode-isControlType-_ownedComment.0" annotatedElement="ObjectNode-isControlType">
-          <body>Indicates whether the type of the ObjectNode is to be treated as representing control values that may traverse ControlFlows.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="ObjectNode-isControlType-_defaultValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ObjectNode-ordering" name="ordering" type="ObjectNodeOrderingKind">
-        <ownedComment xmi:id="ObjectNode-ordering-_ownedComment.0" annotatedElement="ObjectNode-ordering">
-          <body>Indicates how the tokens held by the ObjectNode are ordered for selection to traverse ActivityEdges outgoing from the ObjectNode.</body>
-        </ownedComment>
-        <defaultValue xmi:type="uml:InstanceValue" xmi:id="ObjectNode-ordering-_defaultValue" type="ObjectNodeOrderingKind" instance="ObjectNodeOrderingKind-FIFO"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ObjectNode-selection" name="selection" type="Behavior" association="A_selection_objectNode">
-        <ownedComment xmi:id="ObjectNode-selection-_ownedComment.0" annotatedElement="ObjectNode-selection">
-          <body>A Behavior used to select tokens to be offered on outgoing ActivityEdges.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ObjectNode-selection-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ObjectNode-upperBound" name="upperBound" type="ValueSpecification" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_upperBound_objectNode">
-        <ownedComment xmi:id="ObjectNode-upperBound-_ownedComment.0" annotatedElement="ObjectNode-upperBound">
-          <body>The maximum number of tokens that may be held by this ObjectNode. Tokens cannot flow into the ObjectNode if the upperBound is reached. If no upperBound is specified, then there is no limit on how many tokens the ObjectNode can hold.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ObjectNode-upperBound-_lowerValue"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Variable" name="Variable">
-      <ownedComment xmi:id="Variable-_ownedComment.0" annotatedElement="Variable">
-        <body>A Variable is a ConnectableElement that may store values during the execution of an Activity. Reading and writing the values of a Variable provides an alternative means for passing data than the use of ObjectFlows. A Variable may be owned directly by an Activity, in which case it is accessible from anywhere within that activity, or it may be owned by a StructuredActivityNode, in which case it is only accessible within that node.</body>
-      </ownedComment>
-      <generalization xmi:id="Variable-_generalization.0" general="ConnectableElement"/>
-      <generalization xmi:id="Variable-_generalization.1" general="MultiplicityElement"/>
-      <ownedAttribute xmi:id="Variable-activityScope" name="activityScope" type="Activity" subsettedProperty="NamedElement-namespace" association="A_variable_activityScope">
-        <ownedComment xmi:id="Variable-activityScope-_ownedComment.0" annotatedElement="Variable-activityScope">
-          <body>An Activity that owns the Variable.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Variable-activityScope-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Variable-scope" name="scope" type="StructuredActivityNode" subsettedProperty="NamedElement-namespace" association="A_variable_scope">
-        <ownedComment xmi:id="Variable-scope-_ownedComment.0" annotatedElement="Variable-scope">
-          <body>A StructuredActivityNode that owns the Variable.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Variable-scope-_lowerValue"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="Variable-isAccessibleBy" name="isAccessibleBy" bodyCondition="Variable-isAccessibleBy-spec" isQuery="true">
-        <ownedComment xmi:id="Variable-isAccessibleBy-_ownedComment.0" annotatedElement="Variable-isAccessibleBy">
-          <body>A Variable is accessible by Actions within its scope (the Activity or StructuredActivityNode that owns it).</body>
-        </ownedComment>
-        <ownedRule xmi:id="Variable-isAccessibleBy-spec" name="spec" constrainedElement="Variable-isAccessibleBy">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Variable-isAccessibleBy-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if scope&lt;>null then scope.allOwnedNodes()->includes(a)&#xD;
-else a.containingActivity()=activityScope&#xD;
-endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Variable-isAccessibleBy-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Variable-isAccessibleBy-a" name="a" type="Action"/>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Enumeration" xmi:id="ObjectNodeOrderingKind" name="ObjectNodeOrderingKind">
-      <ownedComment xmi:id="ObjectNodeOrderingKind-_ownedComment.0" annotatedElement="ObjectNodeOrderingKind">
-        <body>ObjectNodeOrderingKind is an enumeration indicating queuing order for offering the tokens held by an ObjectNode.</body>
-      </ownedComment>
-      <ownedLiteral xmi:id="ObjectNodeOrderingKind-unordered" name="unordered">
-        <ownedComment xmi:id="ObjectNodeOrderingKind-unordered-_ownedComment.0" annotatedElement="ObjectNodeOrderingKind-unordered">
-          <body>Indicates that tokens are unordered.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="ObjectNodeOrderingKind-ordered" name="ordered">
-        <ownedComment xmi:id="ObjectNodeOrderingKind-ordered-_ownedComment.0" annotatedElement="ObjectNodeOrderingKind-ordered">
-          <body>Indicates that tokens are ordered.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="ObjectNodeOrderingKind-LIFO" name="LIFO">
-        <ownedComment xmi:id="ObjectNodeOrderingKind-LIFO-_ownedComment.0" annotatedElement="ObjectNodeOrderingKind-LIFO">
-          <body>Indicates that tokens are queued in a last in, first out manner.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="ObjectNodeOrderingKind-FIFO" name="FIFO">
-        <ownedComment xmi:id="ObjectNodeOrderingKind-FIFO-_ownedComment.0" annotatedElement="ObjectNodeOrderingKind-FIFO">
-          <body>Indicates that tokens are queued in a first in, first out manner.</body>
-        </ownedComment>
-      </ownedLiteral>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_selection_objectNode" name="A_selection_objectNode" visibility="private" memberEnd="ObjectNode-selection A_selection_objectNode-objectNode">
-      <ownedEnd xmi:id="A_selection_objectNode-objectNode" name="objectNode" type="ObjectNode" association="A_selection_objectNode">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_selection_objectNode-objectNode-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_selection_objectNode-objectNode-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_inState_objectNode" name="A_inState_objectNode" visibility="private" memberEnd="ObjectNode-inState A_inState_objectNode-objectNode">
-      <ownedEnd xmi:id="A_inState_objectNode-objectNode" name="objectNode" type="ObjectNode" association="A_inState_objectNode">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_inState_objectNode-objectNode-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_inState_objectNode-objectNode-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_upperBound_objectNode" name="A_upperBound_objectNode" visibility="private" memberEnd="ObjectNode-upperBound A_upperBound_objectNode-objectNode">
-      <ownedEnd xmi:id="A_upperBound_objectNode-objectNode" name="objectNode" type="ObjectNode" subsettedProperty="Element-owner" association="A_upperBound_objectNode">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_upperBound_objectNode-objectNode-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_transformation_objectFlow" name="A_transformation_objectFlow" visibility="private" memberEnd="ObjectFlow-transformation A_transformation_objectFlow-objectFlow">
-      <ownedEnd xmi:id="A_transformation_objectFlow-objectFlow" name="objectFlow" type="ObjectFlow" association="A_transformation_objectFlow">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_transformation_objectFlow-objectFlow-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_transformation_objectFlow-objectFlow-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_selection_objectFlow" name="A_selection_objectFlow" visibility="private" memberEnd="ObjectFlow-selection A_selection_objectFlow-objectFlow">
-      <ownedEnd xmi:id="A_selection_objectFlow-objectFlow" name="objectFlow" type="ObjectFlow" association="A_selection_objectFlow">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_selection_objectFlow-objectFlow-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_selection_objectFlow-objectFlow-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_joinSpec_joinNode" name="A_joinSpec_joinNode" visibility="private" memberEnd="JoinNode-joinSpec A_joinSpec_joinNode-joinNode">
-      <ownedEnd xmi:id="A_joinSpec_joinNode-joinNode" name="joinNode" type="JoinNode" subsettedProperty="Element-owner" association="A_joinSpec_joinNode">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_joinSpec_joinNode-joinNode-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_interruptingEdge_interrupts" name="A_interruptingEdge_interrupts" visibility="private" memberEnd="InterruptibleActivityRegion-interruptingEdge ActivityEdge-interrupts"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_handler_protectedNode" name="A_handler_protectedNode" visibility="private" memberEnd="ExecutableNode-handler ExceptionHandler-protectedNode"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_handlerBody_exceptionHandler" name="A_handlerBody_exceptionHandler" visibility="private" memberEnd="ExceptionHandler-handlerBody A_handlerBody_exceptionHandler-exceptionHandler">
-      <ownedEnd xmi:id="A_handlerBody_exceptionHandler-exceptionHandler" name="exceptionHandler" type="ExceptionHandler" association="A_handlerBody_exceptionHandler">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_handlerBody_exceptionHandler-exceptionHandler-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_handlerBody_exceptionHandler-exceptionHandler-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_exceptionType_exceptionHandler" name="A_exceptionType_exceptionHandler" visibility="private" memberEnd="ExceptionHandler-exceptionType A_exceptionType_exceptionHandler-exceptionHandler">
-      <ownedEnd xmi:id="A_exceptionType_exceptionHandler-exceptionHandler" name="exceptionHandler" type="ExceptionHandler" association="A_exceptionType_exceptionHandler">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_exceptionType_exceptionHandler-exceptionHandler-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_exceptionType_exceptionHandler-exceptionHandler-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_exceptionInput_exceptionHandler" name="A_exceptionInput_exceptionHandler" visibility="private" memberEnd="ExceptionHandler-exceptionInput A_exceptionInput_exceptionHandler-exceptionHandler">
-      <ownedEnd xmi:id="A_exceptionInput_exceptionHandler-exceptionHandler" name="exceptionHandler" type="ExceptionHandler" association="A_exceptionInput_exceptionHandler">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_exceptionInput_exceptionHandler-exceptionHandler-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_exceptionInput_exceptionHandler-exceptionHandler-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_decisionInput_decisionNode" name="A_decisionInput_decisionNode" visibility="private" memberEnd="DecisionNode-decisionInput A_decisionInput_decisionNode-decisionNode">
-      <ownedEnd xmi:id="A_decisionInput_decisionNode-decisionNode" name="decisionNode" type="DecisionNode" association="A_decisionInput_decisionNode">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_decisionInput_decisionNode-decisionNode-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_decisionInput_decisionNode-decisionNode-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_decisionInputFlow_decisionNode" name="A_decisionInputFlow_decisionNode" visibility="private" memberEnd="DecisionNode-decisionInputFlow A_decisionInputFlow_decisionNode-decisionNode">
-      <ownedEnd xmi:id="A_decisionInputFlow_decisionNode-decisionNode" name="decisionNode" type="DecisionNode" association="A_decisionInputFlow_decisionNode">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_decisionInputFlow_decisionNode-decisionNode-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_represents_activityPartition" name="A_represents_activityPartition" visibility="private" memberEnd="ActivityPartition-represents A_represents_activityPartition-activityPartition">
-      <ownedEnd xmi:id="A_represents_activityPartition-activityPartition" name="activityPartition" type="ActivityPartition" association="A_represents_activityPartition">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_represents_activityPartition-activityPartition-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_represents_activityPartition-activityPartition-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_subpartition_superPartition" name="A_subpartition_superPartition" visibility="private" memberEnd="ActivityPartition-subpartition ActivityPartition-superPartition"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_edge_inPartition" name="A_edge_inPartition" visibility="private" memberEnd="ActivityPartition-edge ActivityEdge-inPartition"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_parameter_activityParameterNode" name="A_parameter_activityParameterNode" visibility="private" memberEnd="ActivityParameterNode-parameter A_parameter_activityParameterNode-activityParameterNode">
-      <ownedEnd xmi:id="A_parameter_activityParameterNode-activityParameterNode" name="activityParameterNode" type="ActivityParameterNode" association="A_parameter_activityParameterNode">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_parameter_activityParameterNode-activityParameterNode-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_parameter_activityParameterNode-activityParameterNode-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_inInterruptibleRegion_node" name="A_inInterruptibleRegion_node" visibility="private" memberEnd="ActivityNode-inInterruptibleRegion InterruptibleActivityRegion-node"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_inPartition_node" name="A_inPartition_node" visibility="private" memberEnd="ActivityNode-inPartition ActivityPartition-node"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_incoming_target_node" name="A_incoming_target_node" visibility="private" memberEnd="ActivityNode-incoming ActivityEdge-target"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_outgoing_source_node" name="A_outgoing_source_node" visibility="private" memberEnd="ActivityNode-outgoing ActivityEdge-source"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_redefinedNode_activityNode" name="A_redefinedNode_activityNode" visibility="private" memberEnd="ActivityNode-redefinedNode A_redefinedNode_activityNode-activityNode">
-      <ownedEnd xmi:id="A_redefinedNode_activityNode-activityNode" name="activityNode" type="ActivityNode" subsettedProperty="A_redefinedElement_redefinableElement-redefinableElement" association="A_redefinedNode_activityNode">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_redefinedNode_activityNode-activityNode-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_redefinedNode_activityNode-activityNode-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_containedEdge_inGroup" name="A_containedEdge_inGroup" visibility="private" isDerived="true" memberEnd="ActivityGroup-containedEdge ActivityEdge-inGroup"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_containedNode_inGroup" name="A_containedNode_inGroup" visibility="private" isDerived="true" memberEnd="ActivityGroup-containedNode ActivityNode-inGroup"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_subgroup_superGroup" name="A_subgroup_superGroup" visibility="private" isDerived="true" memberEnd="ActivityGroup-subgroup ActivityGroup-superGroup"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_redefinedEdge_activityEdge" name="A_redefinedEdge_activityEdge" visibility="private" memberEnd="ActivityEdge-redefinedEdge A_redefinedEdge_activityEdge-activityEdge">
-      <ownedEnd xmi:id="A_redefinedEdge_activityEdge-activityEdge" name="activityEdge" type="ActivityEdge" subsettedProperty="A_redefinedElement_redefinableElement-redefinableElement" association="A_redefinedEdge_activityEdge">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_redefinedEdge_activityEdge-activityEdge-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_redefinedEdge_activityEdge-activityEdge-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_weight_activityEdge" name="A_weight_activityEdge" visibility="private" memberEnd="ActivityEdge-weight A_weight_activityEdge-activityEdge">
-      <ownedEnd xmi:id="A_weight_activityEdge-activityEdge" name="activityEdge" type="ActivityEdge" subsettedProperty="Element-owner" association="A_weight_activityEdge">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_weight_activityEdge-activityEdge-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_guard_activityEdge" name="A_guard_activityEdge" visibility="private" memberEnd="ActivityEdge-guard A_guard_activityEdge-activityEdge">
-      <ownedEnd xmi:id="A_guard_activityEdge-activityEdge" name="activityEdge" type="ActivityEdge" subsettedProperty="Element-owner" association="A_guard_activityEdge">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_guard_activityEdge-activityEdge-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_structuredNode_activity" name="A_structuredNode_activity" visibility="private" memberEnd="Activity-structuredNode A_structuredNode_activity-activity">
-      <ownedEnd xmi:id="A_structuredNode_activity-activity" name="activity" visibility="private" type="Activity" association="A_structuredNode_activity">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_structuredNode_activity-activity-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_group_inActivity" name="A_group_inActivity" visibility="private" memberEnd="Activity-group ActivityGroup-inActivity"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_node_activity" name="A_node_activity" visibility="private" memberEnd="Activity-node ActivityNode-activity"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_variable_activityScope" name="A_variable_activityScope" visibility="private" memberEnd="Activity-variable Variable-activityScope"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_edge_activity" name="A_edge_activity" visibility="private" memberEnd="Activity-edge ActivityEdge-activity"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_partition_activity" name="A_partition_activity" visibility="private" memberEnd="Activity-partition A_partition_activity-activity">
-      <ownedEnd xmi:id="A_partition_activity-activity" name="activity" type="Activity" subsettedProperty="ActivityGroup-inActivity" association="A_partition_activity">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_partition_activity-activity-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Substitution" name="Substitution">
-      <ownedComment xmi:id="Substitution-_ownedComment.0" annotatedElement="Substitution">
-        <body>A substitution is a relationship between two classifiers signifying that the substituting classifier complies with the contract specified by the contract classifier. This implies that instances of the substituting classifier are runtime substitutable where instances of the contract classifier are expected.</body>
-      </ownedComment>
-      <generalization xmi:id="Substitution-_generalization.0" general="Realization"/>
-      <ownedAttribute xmi:id="Substitution-contract" name="contract" type="Classifier" subsettedProperty="Dependency-supplier" association="A_contract_substitution">
-        <ownedComment xmi:id="Substitution-contract-_ownedComment.0" annotatedElement="Substitution-contract">
-          <body>The contract with which the substituting classifier complies.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Substitution-substitutingClassifier" name="substitutingClassifier" type="Classifier" subsettedProperty="Dependency-client Element-owner" association="A_substitution_substitutingClassifier">
-        <ownedComment xmi:id="Substitution-substitutingClassifier-_ownedComment.0" annotatedElement="Substitution-substitutingClassifier">
-          <body>Instances of the substituting classifier are runtime substitutable where instances of the contract classifier are expected.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="BehavioralFeature" name="BehavioralFeature" isAbstract="true">
-      <ownedComment xmi:id="BehavioralFeature-_ownedComment.0" annotatedElement="BehavioralFeature">
-        <body>A BehavioralFeature is a feature of a Classifier that specifies an aspect of the behavior of its instances.  A BehavioralFeature is implemented (realized) by a Behavior. A BehavioralFeature specifies that a Classifier will respond to a designated request by invoking its implementing method.</body>
-      </ownedComment>
-      <ownedRule xmi:id="BehavioralFeature-abstract_no_method" name="abstract_no_method" constrainedElement="BehavioralFeature">
-        <ownedComment xmi:id="BehavioralFeature-abstract_no_method-_ownedComment.0" annotatedElement="BehavioralFeature-abstract_no_method">
-          <body>When isAbstract is true there are no methods.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="BehavioralFeature-abstract_no_method-_specification">
-          <language>OCL</language>
-          <body>isAbstract implies method->isEmpty()</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="BehavioralFeature-_generalization.0" general="Feature"/>
-      <generalization xmi:id="BehavioralFeature-_generalization.1" general="Namespace"/>
-      <ownedAttribute xmi:id="BehavioralFeature-concurrency" name="concurrency" type="CallConcurrencyKind">
-        <ownedComment xmi:id="BehavioralFeature-concurrency-_ownedComment.0" annotatedElement="BehavioralFeature-concurrency">
-          <body>Specifies the semantics of concurrent calls to the same passive instance (i.e., an instance originating from a Class with isActive being false). Active instances control access to their own BehavioralFeatures.</body>
-        </ownedComment>
-        <defaultValue xmi:type="uml:InstanceValue" xmi:id="BehavioralFeature-concurrency-_defaultValue" type="CallConcurrencyKind" instance="CallConcurrencyKind-sequential"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="BehavioralFeature-isAbstract" name="isAbstract">
-        <ownedComment xmi:id="BehavioralFeature-isAbstract-_ownedComment.0" annotatedElement="BehavioralFeature-isAbstract">
-          <body>If true, then the BehavioralFeature does not have an implementation, and one must be supplied by a more specific Classifier. If false, the BehavioralFeature must have an implementation in the Classifier or one must be inherited.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="BehavioralFeature-isAbstract-_defaultValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="BehavioralFeature-method" name="method" type="Behavior" association="A_method_specification">
-        <ownedComment xmi:id="BehavioralFeature-method-_ownedComment.0" annotatedElement="BehavioralFeature-method">
-          <body>A Behavior that implements the BehavioralFeature. There may be at most one Behavior for a particular pairing of a Classifier (as owner of the Behavior) and a BehavioralFeature (as specification of the Behavior).</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BehavioralFeature-method-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="BehavioralFeature-method-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="BehavioralFeature-ownedParameter" name="ownedParameter" type="Parameter" isOrdered="true" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_ownedParameter_ownerFormalParam">
-        <ownedComment xmi:id="BehavioralFeature-ownedParameter-_ownedComment.0" annotatedElement="BehavioralFeature-ownedParameter">
-          <body>The ordered set of formal Parameters of this BehavioralFeature.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BehavioralFeature-ownedParameter-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="BehavioralFeature-ownedParameter-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="BehavioralFeature-ownedParameterSet" name="ownedParameterSet" type="ParameterSet" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_ownedParameterSet_behavioralFeature">
-        <ownedComment xmi:id="BehavioralFeature-ownedParameterSet-_ownedComment.0" annotatedElement="BehavioralFeature-ownedParameterSet">
-          <body>The ParameterSets owned by this BehavioralFeature.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BehavioralFeature-ownedParameterSet-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="BehavioralFeature-ownedParameterSet-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="BehavioralFeature-raisedException" name="raisedException" type="Type" association="A_raisedException_behavioralFeature">
-        <ownedComment xmi:id="BehavioralFeature-raisedException-_ownedComment.0" annotatedElement="BehavioralFeature-raisedException">
-          <body>The Types representing exceptions that may be raised during an invocation of this BehavioralFeature.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BehavioralFeature-raisedException-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="BehavioralFeature-raisedException-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="BehavioralFeature-createReturnResult" name="createReturnResult">
-        <ownedComment xmi:id="BehavioralFeature-createReturnResult-_ownedComment.0" annotatedElement="BehavioralFeature-createReturnResult">
-          <body>Creates a return result parameter with the specified name and type.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="BehavioralFeature-createReturnResult-_ownedParameter.0" type="Parameter" direction="return"/>
-        <ownedParameter xmi:id="BehavioralFeature-createReturnResult-name" name="name" effect="read">
-          <ownedComment xmi:id="BehavioralFeature-createReturnResult-name-_ownedComment.0" annotatedElement="BehavioralFeature-createReturnResult-name">
-            <body>The name for the new return result, or null.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BehavioralFeature-createReturnResult-name-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="BehavioralFeature-createReturnResult-name-_upperValue" value="1"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="BehavioralFeature-createReturnResult-type" name="type" type="Type" effect="read">
-          <ownedComment xmi:id="BehavioralFeature-createReturnResult-type-_ownedComment.0" annotatedElement="BehavioralFeature-createReturnResult-type">
-            <body>The type for the new return result, or null.</body>
-          </ownedComment>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BehavioralFeature-createReturnResult-type-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="BehavioralFeature-createReturnResult-type-_upperValue" value="1"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="BehavioralFeature-isDistinguishableFrom" name="isDistinguishableFrom" bodyCondition="BehavioralFeature-isDistinguishableFrom-spec" isQuery="true" redefinedOperation="NamedElement-isDistinguishableFrom">
-        <ownedComment xmi:id="BehavioralFeature-isDistinguishableFrom-_ownedComment.0" annotatedElement="BehavioralFeature-isDistinguishableFrom">
-          <body>The query isDistinguishableFrom() determines whether two BehavioralFeatures may coexist in the same Namespace. It specifies that they must have different signatures.</body>
-        </ownedComment>
-        <ownedRule xmi:id="BehavioralFeature-isDistinguishableFrom-spec" name="spec" constrainedElement="BehavioralFeature-isDistinguishableFrom">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="BehavioralFeature-isDistinguishableFrom-spec-_specification">
-            <language>OCL</language>
-            <body>result = ((n.oclIsKindOf(BehavioralFeature) and ns.getNamesOfMember(self)->intersection(ns.getNamesOfMember(n))->notEmpty()) implies
-  Set{self}->including(n.oclAsType(BehavioralFeature))->isUnique(ownedParameter->collect(p|
-  Tuple { name=p.name, type=p.type,effect=p.effect,direction=p.direction,isException=p.isException,
-              isStream=p.isStream,isOrdered=p.isOrdered,isUnique=p.isUnique,lower=p.lower, upper=p.upper }))
-  )</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="BehavioralFeature-isDistinguishableFrom-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="BehavioralFeature-isDistinguishableFrom-n" name="n" type="NamedElement"/>
-        <ownedParameter xmi:id="BehavioralFeature-isDistinguishableFrom-ns" name="ns" type="Namespace"/>
-      </ownedOperation>
-      <ownedOperation xmi:id="BehavioralFeature-inputParameters" name="inputParameters" bodyCondition="BehavioralFeature-inputParameters-spec" isQuery="true">
-        <ownedComment xmi:id="BehavioralFeature-inputParameters-_ownedComment.0" annotatedElement="BehavioralFeature-inputParameters">
-          <body>The ownedParameters with direction in and inout.</body>
-        </ownedComment>
-        <ownedRule xmi:id="BehavioralFeature-inputParameters-spec" name="spec" constrainedElement="BehavioralFeature-inputParameters">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="BehavioralFeature-inputParameters-spec-_specification">
-            <language>OCL</language>
-            <body>result = (ownedParameter->select(direction=ParameterDirectionKind::_'in' or direction=ParameterDirectionKind::inout))</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="BehavioralFeature-inputParameters-result" name="result" type="Parameter" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BehavioralFeature-inputParameters-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="BehavioralFeature-inputParameters-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="BehavioralFeature-outputParameters" name="outputParameters" bodyCondition="BehavioralFeature-outputParameters-spec" isQuery="true">
-        <ownedComment xmi:id="BehavioralFeature-outputParameters-_ownedComment.0" annotatedElement="BehavioralFeature-outputParameters">
-          <body>The ownedParameters with direction out, inout, or return.</body>
-        </ownedComment>
-        <ownedRule xmi:id="BehavioralFeature-outputParameters-spec" name="spec" constrainedElement="BehavioralFeature-outputParameters">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="BehavioralFeature-outputParameters-spec-_specification">
-            <language>OCL</language>
-            <body>result = (ownedParameter->select(direction=ParameterDirectionKind::out or direction=ParameterDirectionKind::inout or direction=ParameterDirectionKind::return))</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="BehavioralFeature-outputParameters-result" name="result" type="Parameter" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BehavioralFeature-outputParameters-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="BehavioralFeature-outputParameters-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Classifier" name="Classifier" isAbstract="true">
-      <ownedComment xmi:id="Classifier-_ownedComment.0" annotatedElement="Classifier">
-        <body>A Classifier represents a classification of instances according to their Features.</body>
-      </ownedComment>
-      <ownedRule xmi:id="Classifier-specialize_type" name="specialize_type" constrainedElement="Classifier">
-        <ownedComment xmi:id="Classifier-specialize_type-_ownedComment.0" annotatedElement="Classifier-specialize_type">
-          <body>A Classifier may only specialize Classifiers of a valid type.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Classifier-specialize_type-_specification">
-          <language>OCL</language>
-          <body>parents()->forAll(c | self.maySpecializeType(c))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Classifier-maps_to_generalization_set" name="maps_to_generalization_set" constrainedElement="Classifier">
-        <ownedComment xmi:id="Classifier-maps_to_generalization_set-_ownedComment.0" annotatedElement="Classifier-maps_to_generalization_set">
-          <body>The Classifier that maps to a GeneralizationSet may neither be a specific nor a general Classifier in any of the Generalization relationships defined for that GeneralizationSet. In other words, a power type may not be an instance of itself nor may its instances also be its subclasses.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Classifier-maps_to_generalization_set-_specification">
-          <language>OCL</language>
-          <body>powertypeExtent->forAll( gs | &#xD;
-  gs.generalization->forAll( gen | &#xD;
-    not (gen.general = self) and not gen.general.allParents()->includes(self) and not (gen.specific = self) and not self.allParents()->includes(gen.specific) &#xD;
-  ))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Classifier-non_final_parents" name="non_final_parents" constrainedElement="Classifier">
-        <ownedComment xmi:id="Classifier-non_final_parents-_ownedComment.0" annotatedElement="Classifier-non_final_parents">
-          <body>The parents of a Classifier must be non-final.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Classifier-non_final_parents-_specification">
-          <language>OCL</language>
-          <body>parents()->forAll(not isFinalSpecialization)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Classifier-no_cycles_in_generalization" name="no_cycles_in_generalization" constrainedElement="Classifier">
-        <ownedComment xmi:id="Classifier-no_cycles_in_generalization-_ownedComment.0" annotatedElement="Classifier-no_cycles_in_generalization">
-          <body>Generalization hierarchies must be directed and acyclical. A Classifier can not be both a transitively general and transitively specific Classifier of the same Classifier.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Classifier-no_cycles_in_generalization-_specification">
-          <language>OCL</language>
-          <body>not allParents()->includes(self)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="Classifier-_generalization.0" general="Namespace"/>
-      <generalization xmi:id="Classifier-_generalization.1" general="Type"/>
-      <generalization xmi:id="Classifier-_generalization.2" general="TemplateableElement"/>
-      <generalization xmi:id="Classifier-_generalization.3" general="RedefinableElement"/>
-      <ownedAttribute xmi:id="Classifier-attribute" name="attribute" type="Property" isOrdered="true" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="A_redefinitionContext_redefinableElement-redefinableElement Classifier-feature" association="A_attribute_classifier">
-        <ownedComment xmi:id="Classifier-attribute-_ownedComment.0" annotatedElement="Classifier-attribute">
-          <body>All of the Properties that are direct (i.e., not inherited or imported) attributes of the Classifier.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-attribute-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-attribute-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Classifier-collaborationUse" name="collaborationUse" type="CollaborationUse" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_collaborationUse_classifier">
-        <ownedComment xmi:id="Classifier-collaborationUse-_ownedComment.0" annotatedElement="Classifier-collaborationUse">
-          <body>The CollaborationUses owned by the Classifier.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-collaborationUse-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-collaborationUse-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Classifier-feature" name="feature" type="Feature" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="Namespace-member" association="A_feature_featuringClassifier">
-        <ownedComment xmi:id="Classifier-feature-_ownedComment.0" annotatedElement="Classifier-feature">
-          <body>Specifies each Feature directly defined in the classifier. Note that there may be members of the Classifier that are of the type Feature but are not included, e.g., inherited features.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-feature-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-feature-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Classifier-general" name="general" type="Classifier" isDerived="true" association="A_general_classifier">
-        <ownedComment xmi:id="Classifier-general-_ownedComment.0" annotatedElement="Classifier-general">
-          <body>The generalizing Classifiers for this Classifier.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-general-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-general-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Classifier-generalization" name="generalization" type="Generalization" aggregation="composite" subsettedProperty="A_source_directedRelationship-directedRelationship Element-ownedElement" association="A_generalization_specific">
-        <ownedComment xmi:id="Classifier-generalization-_ownedComment.0" annotatedElement="Classifier-generalization">
-          <body>The Generalization relationships for this Classifier. These Generalizations navigate to more general Classifiers in the generalization hierarchy.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-generalization-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-generalization-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Classifier-inheritedMember" name="inheritedMember" type="NamedElement" isReadOnly="true" isDerived="true" subsettedProperty="Namespace-member" association="A_inheritedMember_inheritingClassifier">
-        <ownedComment xmi:id="Classifier-inheritedMember-_ownedComment.0" annotatedElement="Classifier-inheritedMember">
-          <body>All elements inherited by this Classifier from its general Classifiers.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-inheritedMember-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-inheritedMember-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Classifier-isAbstract" name="isAbstract">
-        <ownedComment xmi:id="Classifier-isAbstract-_ownedComment.0" annotatedElement="Classifier-isAbstract">
-          <body>If true, the Classifier can only be instantiated by instantiating one of its specializations. An abstract Classifier is intended to be used by other Classifiers e.g., as the target of Associations or Generalizations.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Classifier-isAbstract-_defaultValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Classifier-isFinalSpecialization" name="isFinalSpecialization">
-        <ownedComment xmi:id="Classifier-isFinalSpecialization-_ownedComment.0" annotatedElement="Classifier-isFinalSpecialization">
-          <body>If true, the Classifier cannot be specialized.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Classifier-isFinalSpecialization-_defaultValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Classifier-ownedTemplateSignature" name="ownedTemplateSignature" type="RedefinableTemplateSignature" aggregation="composite" redefinedProperty="TemplateableElement-ownedTemplateSignature" subsettedProperty="A_redefinitionContext_redefinableElement-redefinableElement" association="A_ownedTemplateSignature_classifier">
-        <ownedComment xmi:id="Classifier-ownedTemplateSignature-_ownedComment.0" annotatedElement="Classifier-ownedTemplateSignature">
-          <body>The optional RedefinableTemplateSignature specifying the formal template parameters.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-ownedTemplateSignature-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Classifier-ownedUseCase" name="ownedUseCase" type="UseCase" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_ownedUseCase_classifier">
-        <ownedComment xmi:id="Classifier-ownedUseCase-_ownedComment.0" annotatedElement="Classifier-ownedUseCase">
-          <body>The UseCases owned by this classifier.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-ownedUseCase-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-ownedUseCase-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Classifier-powertypeExtent" name="powertypeExtent" type="GeneralizationSet" association="A_powertypeExtent_powertype">
-        <ownedComment xmi:id="Classifier-powertypeExtent-_ownedComment.0" annotatedElement="Classifier-powertypeExtent">
-          <body>The GeneralizationSet of which this Classifier is a power type.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-powertypeExtent-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-powertypeExtent-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Classifier-redefinedClassifier" name="redefinedClassifier" type="Classifier" subsettedProperty="RedefinableElement-redefinedElement" association="A_redefinedClassifier_classifier">
-        <ownedComment xmi:id="Classifier-redefinedClassifier-_ownedComment.0" annotatedElement="Classifier-redefinedClassifier">
-          <body>The Classifiers redefined by this Classifier.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-redefinedClassifier-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-redefinedClassifier-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Classifier-representation" name="representation" type="CollaborationUse" subsettedProperty="Classifier-collaborationUse" association="A_representation_classifier">
-        <ownedComment xmi:id="Classifier-representation-_ownedComment.0" annotatedElement="Classifier-representation">
-          <body>A CollaborationUse which indicates the Collaboration that represents this Classifier.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-representation-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Classifier-substitution" name="substitution" type="Substitution" aggregation="composite" subsettedProperty="Element-ownedElement NamedElement-clientDependency" association="A_substitution_substitutingClassifier">
-        <ownedComment xmi:id="Classifier-substitution-_ownedComment.0" annotatedElement="Classifier-substitution">
-          <body>The Substitutions owned by this Classifier.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-substitution-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-substitution-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Classifier-templateParameter" name="templateParameter" type="ClassifierTemplateParameter" redefinedProperty="ParameterableElement-templateParameter" association="A_classifier_templateParameter_parameteredElement">
-        <ownedComment xmi:id="Classifier-templateParameter-_ownedComment.0" annotatedElement="Classifier-templateParameter">
-          <body>TheClassifierTemplateParameter that exposes this element as a formal parameter.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-templateParameter-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Classifier-useCase" name="useCase" type="UseCase" association="A_subject_useCase">
-        <ownedComment xmi:id="Classifier-useCase-_ownedComment.0" annotatedElement="Classifier-useCase">
-          <body>The set of UseCases for which this Classifier is the subject.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-useCase-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-useCase-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="Classifier-getAllAttributes" name="getAllAttributes" isQuery="true">
-        <ownedComment xmi:id="Classifier-getAllAttributes-_ownedComment.0" annotatedElement="Classifier-getAllAttributes">
-          <body>Retrieves all the attributes of this classifier, including those inherited from its parents.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Classifier-getAllAttributes-_ownedParameter.0" type="Property" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-getAllAttributes-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-getAllAttributes-_ownedParameter.0-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Classifier-getAllOperations" name="getAllOperations" isQuery="true">
-        <ownedComment xmi:id="Classifier-getAllOperations-_ownedComment.0" annotatedElement="Classifier-getAllOperations">
-          <body>Retrieves all the operations of this classifier, including those inherited from its parents.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Classifier-getAllOperations-_ownedParameter.0" type="Operation" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-getAllOperations-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-getAllOperations-_ownedParameter.0-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Classifier-getAllUsedInterfaces" name="getAllUsedInterfaces">
-        <ownedComment xmi:id="Classifier-getAllUsedInterfaces-_ownedComment.0" annotatedElement="Classifier-getAllUsedInterfaces">
-          <body>Retrieves all the interfaces on which this classifier or any of its parents has a usage dependency.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Classifier-getAllUsedInterfaces-_ownedParameter.0" type="Interface" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-getAllUsedInterfaces-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-getAllUsedInterfaces-_ownedParameter.0-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Classifier-getOperation" name="getOperation" isQuery="true">
-        <ownedComment xmi:id="Classifier-getOperation-_ownedComment.0" annotatedElement="Classifier-getOperation">
-          <body>Retrieves the first operation with the specified name, parameter names, and parameter types from this classifier.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Classifier-getOperation-_ownedParameter.0" type="Operation" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-getOperation-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-getOperation-_ownedParameter.0-_upperValue" value="1"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Classifier-getOperation-name" name="name" effect="read">
-          <ownedComment xmi:id="Classifier-getOperation-name-_ownedComment.0" annotatedElement="Classifier-getOperation-name">
-            <body>The name of the operation to retrieve, or null.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-getOperation-name-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-getOperation-name-_upperValue" value="1"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Classifier-getOperation-parameterNames" name="parameterNames" isOrdered="true" effect="read">
-          <ownedComment xmi:id="Classifier-getOperation-parameterNames-_ownedComment.0" annotatedElement="Classifier-getOperation-parameterNames">
-            <body>The parameter names of the operation to retrieve, or null.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-getOperation-parameterNames-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-getOperation-parameterNames-_upperValue" value="*"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Classifier-getOperation-parameterTypes" name="parameterTypes" type="Type" isOrdered="true" isUnique="false" effect="read">
-          <ownedComment xmi:id="Classifier-getOperation-parameterTypes-_ownedComment.0" annotatedElement="Classifier-getOperation-parameterTypes">
-            <body>The parameter types of the operation to retrieve, or null.</body>
-          </ownedComment>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-getOperation-parameterTypes-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-getOperation-parameterTypes-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Classifier-getOperation.1" name="getOperation" isQuery="true">
-        <ownedComment xmi:id="Classifier-getOperation.1-_ownedComment.0" annotatedElement="Classifier-getOperation.1">
-          <body>Retrieves the first operation with the specified name, parameter names, and parameter types from this classifier, ignoring case if indicated.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Classifier-getOperation.1-_ownedParameter.0" type="Operation" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-getOperation.1-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-getOperation.1-_ownedParameter.0-_upperValue" value="1"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Classifier-getOperation.1-name" name="name" effect="read">
-          <ownedComment xmi:id="Classifier-getOperation.1-name-_ownedComment.0" annotatedElement="Classifier-getOperation.1-name">
-            <body>The name of the operation to retrieve, or null.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-getOperation.1-name-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-getOperation.1-name-_upperValue" value="1"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Classifier-getOperation.1-parameterNames" name="parameterNames" isOrdered="true" effect="read">
-          <ownedComment xmi:id="Classifier-getOperation.1-parameterNames-_ownedComment.0" annotatedElement="Classifier-getOperation.1-parameterNames">
-            <body>The parameter names of the operation to retrieve, or null.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-getOperation.1-parameterNames-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-getOperation.1-parameterNames-_upperValue" value="*"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Classifier-getOperation.1-parameterTypes" name="parameterTypes" type="Type" isOrdered="true" isUnique="false" effect="read">
-          <ownedComment xmi:id="Classifier-getOperation.1-parameterTypes-_ownedComment.0" annotatedElement="Classifier-getOperation.1-parameterTypes">
-            <body>The parameter types of the operation to retrieve, or null.</body>
-          </ownedComment>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-getOperation.1-parameterTypes-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-getOperation.1-parameterTypes-_upperValue" value="*"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Classifier-getOperation.1-ignoreCase" name="ignoreCase" effect="read">
-          <ownedComment xmi:id="Classifier-getOperation.1-ignoreCase-_ownedComment.0" annotatedElement="Classifier-getOperation.1-ignoreCase">
-            <body>Whether to ignore case in String comparisons.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Classifier-getOperations" name="getOperations" isQuery="true">
-        <ownedComment xmi:id="Classifier-getOperations-_ownedComment.0" annotatedElement="Classifier-getOperations">
-          <body>Retrieves the operations of this classifier.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Classifier-getOperations-_ownedParameter.0" type="Operation" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-getOperations-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-getOperations-_ownedParameter.0-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Classifier-getUsedInterfaces" name="getUsedInterfaces">
-        <ownedComment xmi:id="Classifier-getUsedInterfaces-_ownedComment.0" annotatedElement="Classifier-getUsedInterfaces">
-          <body>Retrieves the interfaces on which this classifier has a usage dependency.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Classifier-getUsedInterfaces-_ownedParameter.0" type="Interface" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-getUsedInterfaces-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-getUsedInterfaces-_ownedParameter.0-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Classifier-allFeatures" name="allFeatures" bodyCondition="Classifier-allFeatures-spec" isQuery="true">
-        <ownedComment xmi:id="Classifier-allFeatures-_ownedComment.0" annotatedElement="Classifier-allFeatures">
-          <body>The query allFeatures() gives all of the Features in the namespace of the Classifier. In general, through mechanisms such as inheritance, this will be a larger set than feature.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Classifier-allFeatures-spec" name="spec" constrainedElement="Classifier-allFeatures">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Classifier-allFeatures-spec-_specification">
-            <language>OCL</language>
-            <body>result = (member->select(oclIsKindOf(Feature))->collect(oclAsType(Feature))->asSet())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Classifier-allFeatures-result" name="result" type="Feature" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-allFeatures-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-allFeatures-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Classifier-allParents" name="allParents" bodyCondition="Classifier-allParents-spec" isQuery="true">
-        <ownedComment xmi:id="Classifier-allParents-_ownedComment.0" annotatedElement="Classifier-allParents">
-          <body>The query allParents() gives all of the direct and indirect ancestors of a generalized Classifier.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Classifier-allParents-spec" name="spec" constrainedElement="Classifier-allParents">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Classifier-allParents-spec-_specification">
-            <language>OCL</language>
-            <body>result = (parents()->union(parents()->collect(allParents())->asSet()))</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Classifier-allParents-result" name="result" type="Classifier" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-allParents-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-allParents-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Classifier-conformsTo" name="conformsTo" bodyCondition="Classifier-conformsTo-spec" isQuery="true" redefinedOperation="Type-conformsTo">
-        <ownedComment xmi:id="Classifier-conformsTo-_ownedComment.0" annotatedElement="Classifier-conformsTo">
-          <body>The query conformsTo() gives true for a Classifier that defines a type that conforms to another. This is used, for example, in the specification of signature conformance for operations.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Classifier-conformsTo-spec" name="spec" constrainedElement="Classifier-conformsTo">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Classifier-conformsTo-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if other.oclIsKindOf(Classifier) then&#xD;
-  let otherClassifier : Classifier = other.oclAsType(Classifier) in&#xD;
-    self = otherClassifier or allParents()->includes(otherClassifier)&#xD;
-else&#xD;
-  false&#xD;
-endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Classifier-conformsTo-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Classifier-conformsTo-other" name="other" type="Type"/>
-      </ownedOperation>
-      <ownedOperation xmi:id="Classifier-general.1" name="general" visibility="protected" bodyCondition="Classifier-general.1-spec" isQuery="true">
-        <ownedComment xmi:id="Classifier-general.1-_ownedComment.0" annotatedElement="Classifier-general.1">
-          <body>The general Classifiers are the ones referenced by the Generalization relationships.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Classifier-general.1-spec" name="spec" constrainedElement="Classifier-general.1 Classifier-general">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Classifier-general.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (parents())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Classifier-general.1-result" name="result" type="Classifier" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-general.1-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-general.1-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Classifier-hasVisibilityOf" name="hasVisibilityOf" bodyCondition="Classifier-hasVisibilityOf-spec" isQuery="true" precondition="Classifier-hasVisibilityOf-pre">
-        <ownedComment xmi:id="Classifier-hasVisibilityOf-_ownedComment.0" annotatedElement="Classifier-hasVisibilityOf">
-          <body>The query hasVisibilityOf() determines whether a NamedElement is visible in the classifier. Non-private members are visible. It is only called when the argument is something owned by a parent.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Classifier-hasVisibilityOf-pre" name="pre" constrainedElement="Classifier-hasVisibilityOf">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Classifier-hasVisibilityOf-pre-_specification">
-            <language>OCL</language>
-            <body>allParents()->including(self)->collect(member)->includes(n)</body>
-          </specification>
-        </ownedRule>
-        <ownedRule xmi:id="Classifier-hasVisibilityOf-spec" name="spec" constrainedElement="Classifier-hasVisibilityOf">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Classifier-hasVisibilityOf-spec-_specification">
-            <language>OCL</language>
-            <body>result = (n.visibility &lt;> VisibilityKind::private)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Classifier-hasVisibilityOf-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Classifier-hasVisibilityOf-n" name="n" type="NamedElement"/>
-      </ownedOperation>
-      <ownedOperation xmi:id="Classifier-inherit" name="inherit" bodyCondition="Classifier-inherit-spec" isQuery="true">
-        <ownedComment xmi:id="Classifier-inherit-_ownedComment.0" annotatedElement="Classifier-inherit">
-          <body>The query inherit() defines how to inherit a set of elements passed as its argument.  It excludes redefined elements from the result.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Classifier-inherit-spec" name="spec" constrainedElement="Classifier-inherit">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Classifier-inherit-spec-_specification">
-            <language>OCL</language>
-            <body>result = (inhs->reject(inh |&#xD;
-  inh.oclIsKindOf(RedefinableElement) and&#xD;
-  ownedMember->select(oclIsKindOf(RedefinableElement))->&#xD;
-    select(redefinedElement->includes(inh.oclAsType(RedefinableElement)))&#xD;
-       ->notEmpty()))</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Classifier-inherit-result" name="result" type="NamedElement" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-inherit-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-inherit-result-_upperValue" value="*"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Classifier-inherit-inhs" name="inhs" type="NamedElement">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-inherit-inhs-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-inherit-inhs-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Classifier-inheritableMembers" name="inheritableMembers" bodyCondition="Classifier-inheritableMembers-spec" isQuery="true" precondition="Classifier-inheritableMembers-pre">
-        <ownedComment xmi:id="Classifier-inheritableMembers-_ownedComment.0" annotatedElement="Classifier-inheritableMembers">
-          <body>The query inheritableMembers() gives all of the members of a Classifier that may be inherited in one of its descendants, subject to whatever visibility restrictions apply.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Classifier-inheritableMembers-pre" name="pre" constrainedElement="Classifier-inheritableMembers">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Classifier-inheritableMembers-pre-_specification">
-            <language>OCL</language>
-            <body>c.allParents()->includes(self)</body>
-          </specification>
-        </ownedRule>
-        <ownedRule xmi:id="Classifier-inheritableMembers-spec" name="spec" constrainedElement="Classifier-inheritableMembers">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Classifier-inheritableMembers-spec-_specification">
-            <language>OCL</language>
-            <body>result = (member->select(m | c.hasVisibilityOf(m)))</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Classifier-inheritableMembers-result" name="result" type="NamedElement" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-inheritableMembers-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-inheritableMembers-result-_upperValue" value="*"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Classifier-inheritableMembers-c" name="c" type="Classifier"/>
-      </ownedOperation>
-      <ownedOperation xmi:id="Classifier-inheritedMember.1" name="inheritedMember" visibility="protected" bodyCondition="Classifier-inheritedMember.1-spec" isQuery="true">
-        <ownedComment xmi:id="Classifier-inheritedMember.1-_ownedComment.0" annotatedElement="Classifier-inheritedMember.1">
-          <body>The inheritedMember association is derived by inheriting the inheritable members of the parents.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Classifier-inheritedMember.1-spec" name="spec" constrainedElement="Classifier-inheritedMember.1 Classifier-inheritedMember">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Classifier-inheritedMember.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (inherit(parents()->collect(inheritableMembers(self))->asSet()))</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Classifier-inheritedMember.1-result" name="result" type="NamedElement" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-inheritedMember.1-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-inheritedMember.1-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Classifier-isTemplate" name="isTemplate" bodyCondition="Classifier-isTemplate-spec" isQuery="true" redefinedOperation="TemplateableElement-isTemplate">
-        <ownedComment xmi:id="Classifier-isTemplate-_ownedComment.0" annotatedElement="Classifier-isTemplate">
-          <body>The query isTemplate() returns whether this Classifier is actually a template.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Classifier-isTemplate-spec" name="spec" constrainedElement="Classifier-isTemplate">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Classifier-isTemplate-spec-_specification">
-            <language>OCL</language>
-            <body>result = (ownedTemplateSignature &lt;> null or general->exists(g | g.isTemplate()))</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Classifier-isTemplate-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Classifier-maySpecializeType" name="maySpecializeType" bodyCondition="Classifier-maySpecializeType-spec" isQuery="true">
-        <ownedComment xmi:id="Classifier-maySpecializeType-_ownedComment.0" annotatedElement="Classifier-maySpecializeType">
-          <body>The query maySpecializeType() determines whether this classifier may have a generalization relationship to classifiers of the specified type. By default a classifier may specialize classifiers of the same or a more general type. It is intended to be redefined by classifiers that have different specialization constraints.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Classifier-maySpecializeType-spec" name="spec" constrainedElement="Classifier-maySpecializeType">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Classifier-maySpecializeType-spec-_specification">
-            <language>OCL</language>
-            <body>result = (self.oclIsKindOf(c.oclType()))</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Classifier-maySpecializeType-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Classifier-maySpecializeType-c" name="c" type="Classifier"/>
-      </ownedOperation>
-      <ownedOperation xmi:id="Classifier-parents" name="parents" bodyCondition="Classifier-parents-spec" isQuery="true">
-        <ownedComment xmi:id="Classifier-parents-_ownedComment.0" annotatedElement="Classifier-parents">
-          <body>The query parents() gives all of the immediate ancestors of a generalized Classifier.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Classifier-parents-spec" name="spec" constrainedElement="Classifier-parents">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Classifier-parents-spec-_specification">
-            <language>OCL</language>
-            <body>result = (generalization.general->asSet())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Classifier-parents-result" name="result" type="Classifier" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-parents-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-parents-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Classifier-directlyRealizedInterfaces" name="directlyRealizedInterfaces" bodyCondition="Classifier-directlyRealizedInterfaces-spec" isQuery="true">
-        <ownedComment xmi:id="Classifier-directlyRealizedInterfaces-_ownedComment.0" annotatedElement="Classifier-directlyRealizedInterfaces">
-          <body>The Interfaces directly realized by this Classifier</body>
-        </ownedComment>
-        <ownedRule xmi:id="Classifier-directlyRealizedInterfaces-spec" name="spec" constrainedElement="Classifier-directlyRealizedInterfaces">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Classifier-directlyRealizedInterfaces-spec-_specification">
-            <language>OCL</language>
-            <body>result = ((clientDependency->&#xD;
-  select(oclIsKindOf(Realization) and supplier->forAll(oclIsKindOf(Interface))))->&#xD;
-      collect(supplier.oclAsType(Interface))->asSet())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Classifier-directlyRealizedInterfaces-result" name="result" type="Interface" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-directlyRealizedInterfaces-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-directlyRealizedInterfaces-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Classifier-directlyUsedInterfaces" name="directlyUsedInterfaces" bodyCondition="Classifier-directlyUsedInterfaces-spec" isQuery="true">
-        <ownedComment xmi:id="Classifier-directlyUsedInterfaces-_ownedComment.0" annotatedElement="Classifier-directlyUsedInterfaces">
-          <body>The Interfaces directly used by this Classifier</body>
-        </ownedComment>
-        <ownedRule xmi:id="Classifier-directlyUsedInterfaces-spec" name="spec" constrainedElement="Classifier-directlyUsedInterfaces">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Classifier-directlyUsedInterfaces-spec-_specification">
-            <language>OCL</language>
-            <body>result = ((supplierDependency->&#xD;
-  select(oclIsKindOf(Usage) and client->forAll(oclIsKindOf(Interface))))->&#xD;
-    collect(client.oclAsType(Interface))->asSet())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Classifier-directlyUsedInterfaces-result" name="result" type="Interface" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-directlyUsedInterfaces-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-directlyUsedInterfaces-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Classifier-allRealizedInterfaces" name="allRealizedInterfaces" bodyCondition="Classifier-allRealizedInterfaces-spec" isQuery="true">
-        <ownedComment xmi:id="Classifier-allRealizedInterfaces-_ownedComment.0" annotatedElement="Classifier-allRealizedInterfaces">
-          <body>The Interfaces realized by this Classifier and all of its generalizations</body>
-        </ownedComment>
-        <ownedRule xmi:id="Classifier-allRealizedInterfaces-spec" name="spec" constrainedElement="Classifier-allRealizedInterfaces">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Classifier-allRealizedInterfaces-spec-_specification">
-            <language>OCL</language>
-            <body>result = (directlyRealizedInterfaces()->union(self.allParents()->collect(directlyRealizedInterfaces()))->asSet())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Classifier-allRealizedInterfaces-result" name="result" type="Interface" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-allRealizedInterfaces-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-allRealizedInterfaces-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Classifier-allUsedInterfaces" name="allUsedInterfaces" bodyCondition="Classifier-allUsedInterfaces-spec" isQuery="true">
-        <ownedComment xmi:id="Classifier-allUsedInterfaces-_ownedComment.0" annotatedElement="Classifier-allUsedInterfaces">
-          <body>The Interfaces used by this Classifier and all of its generalizations</body>
-        </ownedComment>
-        <ownedRule xmi:id="Classifier-allUsedInterfaces-spec" name="spec" constrainedElement="Classifier-allUsedInterfaces">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Classifier-allUsedInterfaces-spec-_specification">
-            <language>OCL</language>
-            <body>result = (directlyUsedInterfaces()->union(self.allParents()->collect(directlyUsedInterfaces()))->asSet())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Classifier-allUsedInterfaces-result" name="result" type="Interface" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-allUsedInterfaces-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-allUsedInterfaces-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Classifier-isSubstitutableFor" name="isSubstitutableFor" bodyCondition="Classifier-isSubstitutableFor-spec" isQuery="true">
-        <ownedRule xmi:id="Classifier-isSubstitutableFor-spec" name="spec" constrainedElement="Classifier-isSubstitutableFor">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Classifier-isSubstitutableFor-spec-_specification">
-            <language>OCL</language>
-            <body>result = (substitution.contract->includes(contract))</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Classifier-isSubstitutableFor-contract" name="contract" type="Classifier"/>
-        <ownedParameter xmi:id="Classifier-isSubstitutableFor-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Classifier-allAttributes" name="allAttributes" bodyCondition="Classifier-allAttributes-spec" isQuery="true">
-        <ownedComment xmi:id="Classifier-allAttributes-_ownedComment.0" annotatedElement="Classifier-allAttributes">
-          <body>The query allAttributes gives an ordered set of all owned and inherited attributes of the Classifier. All owned attributes appear before any inherited attributes, and the attributes inherited from any more specific parent Classifier appear before those of any more general parent Classifier. However, if the Classifier has multiple immediate parents, then the relative ordering of the sets of attributes from those parents is not defined.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Classifier-allAttributes-spec" name="spec" constrainedElement="Classifier-allAttributes">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Classifier-allAttributes-spec-_specification">
-            <language>OCL</language>
-            <body>result = (attribute->asSequence()->union(parents()->asSequence().allAttributes())->select(p | member->includes(p))->asOrderedSet())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Classifier-allAttributes-result" name="result" type="Property" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-allAttributes-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-allAttributes-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Classifier-allSlottableFeatures" name="allSlottableFeatures" bodyCondition="Classifier-allSlottableFeatures-spec" isQuery="true">
-        <ownedComment xmi:id="Classifier-allSlottableFeatures-_ownedComment.0" annotatedElement="Classifier-allSlottableFeatures">
-          <body>All StructuralFeatures related to the Classifier that may have Slots, including direct attributes, inherited attributes, private attributes in generalizations, and memberEnds of Associations, but excluding redefined StructuralFeatures.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Classifier-allSlottableFeatures-spec" name="spec" constrainedElement="Classifier-allSlottableFeatures">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Classifier-allSlottableFeatures-spec-_specification">
-            <language>OCL</language>
-            <body>result = (member->select(oclIsKindOf(StructuralFeature))->&#xD;
-  collect(oclAsType(StructuralFeature))->&#xD;
-   union(self.inherit(self.allParents()->collect(p | p.attribute)->asSet())->&#xD;
-     collect(oclAsType(StructuralFeature)))->asSet())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Classifier-allSlottableFeatures-result" name="result" type="StructuralFeature" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier-allSlottableFeatures-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Classifier-allSlottableFeatures-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ClassifierTemplateParameter" name="ClassifierTemplateParameter">
-      <ownedComment xmi:id="ClassifierTemplateParameter-_ownedComment.0" annotatedElement="ClassifierTemplateParameter">
-        <body>A ClassifierTemplateParameter exposes a Classifier as a formal template parameter.</body>
-      </ownedComment>
-      <ownedRule xmi:id="ClassifierTemplateParameter-has_constraining_classifier" name="has_constraining_classifier" constrainedElement="ClassifierTemplateParameter">
-        <ownedComment xmi:id="ClassifierTemplateParameter-has_constraining_classifier-_ownedComment.0" annotatedElement="ClassifierTemplateParameter-has_constraining_classifier">
-          <body>If allowSubstitutable is true, then there must be a constrainingClassifier.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ClassifierTemplateParameter-has_constraining_classifier-_specification">
-          <language>OCL</language>
-          <body>allowSubstitutable implies constrainingClassifier->notEmpty()</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ClassifierTemplateParameter-parametered_element_no_features" name="parametered_element_no_features" constrainedElement="ClassifierTemplateParameter">
-        <ownedComment xmi:id="ClassifierTemplateParameter-parametered_element_no_features-_ownedComment.0" annotatedElement="ClassifierTemplateParameter-parametered_element_no_features">
-          <body>The parameteredElement has no direct features, and if constrainedElement is empty it has no generalizations.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ClassifierTemplateParameter-parametered_element_no_features-_specification">
-          <language>OCL</language>
-          <body>parameteredElement.feature->isEmpty() and (constrainingClassifier->isEmpty() implies  parameteredElement.allParents()->isEmpty())</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ClassifierTemplateParameter-matching_abstract" name="matching_abstract" constrainedElement="ClassifierTemplateParameter">
-        <ownedComment xmi:id="ClassifierTemplateParameter-matching_abstract-_ownedComment.0" annotatedElement="ClassifierTemplateParameter-matching_abstract">
-          <body>If the parameteredElement is not abstract, then the Classifier used as an argument shall not be abstract.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ClassifierTemplateParameter-matching_abstract-_specification">
-          <language>OCL</language>
-          <body>(not parameteredElement.isAbstract) implies templateParameterSubstitution.actual->forAll(a | not a.oclAsType(Classifier).isAbstract)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ClassifierTemplateParameter-actual_is_classifier" name="actual_is_classifier" constrainedElement="ClassifierTemplateParameter">
-        <ownedComment xmi:id="ClassifierTemplateParameter-actual_is_classifier-_ownedComment.0" annotatedElement="ClassifierTemplateParameter-actual_is_classifier">
-          <body>The argument to a ClassifierTemplateParameter is a Classifier.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ClassifierTemplateParameter-actual_is_classifier-_specification">
-          <language>OCL</language>
-          <body> templateParameterSubstitution.actual->forAll(a | a.oclIsKindOf(Classifier))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ClassifierTemplateParameter-constraining_classifiers_constrain_args" name="constraining_classifiers_constrain_args" constrainedElement="ClassifierTemplateParameter">
-        <ownedComment xmi:id="ClassifierTemplateParameter-constraining_classifiers_constrain_args-_ownedComment.0" annotatedElement="ClassifierTemplateParameter-constraining_classifiers_constrain_args">
-          <body>If there are any constrainingClassifiers, then every argument must be the same as or a specialization of them, or if allowSubstitutable is true, then it can also be substitutable.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ClassifierTemplateParameter-constraining_classifiers_constrain_args-_specification">
-          <language>OCL</language>
-          <body>templateParameterSubstitution.actual->forAll( a |&#xD;
-  let arg : Classifier = a.oclAsType(Classifier) in&#xD;
-    constrainingClassifier->forAll(&#xD;
-      cc |  &#xD;
-         arg = cc or arg.conformsTo(cc) or (allowSubstitutable and arg.isSubstitutableFor(cc))&#xD;
-      )&#xD;
-)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ClassifierTemplateParameter-constraining_classifiers_constrain_parametered_element" name="constraining_classifiers_constrain_parametered_element" constrainedElement="ClassifierTemplateParameter">
-        <ownedComment xmi:id="ClassifierTemplateParameter-constraining_classifiers_constrain_parametered_element-_ownedComment.0" annotatedElement="ClassifierTemplateParameter-constraining_classifiers_constrain_parametered_element">
-          <body>If there are any constrainingClassifiers, then the parameteredElement must be the same as or a specialization of them, or if allowSubstitutable is true, then it can also be substitutable.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ClassifierTemplateParameter-constraining_classifiers_constrain_parametered_element-_specification">
-          <language>OCL</language>
-          <body>constrainingClassifier->forAll(&#xD;
-     cc |  parameteredElement = cc or parameteredElement.conformsTo(cc) or (allowSubstitutable and parameteredElement.isSubstitutableFor(cc))&#xD;
-)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="ClassifierTemplateParameter-_generalization.0" general="TemplateParameter"/>
-      <ownedAttribute xmi:id="ClassifierTemplateParameter-allowSubstitutable" name="allowSubstitutable">
-        <ownedComment xmi:id="ClassifierTemplateParameter-allowSubstitutable-_ownedComment.0" annotatedElement="ClassifierTemplateParameter-allowSubstitutable">
-          <body>Constrains the required relationship between an actual parameter and the parameteredElement for this formal parameter.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="ClassifierTemplateParameter-allowSubstitutable-_defaultValue" value="true"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ClassifierTemplateParameter-constrainingClassifier" name="constrainingClassifier" type="Classifier" association="A_constrainingClassifier_classifierTemplateParameter">
-        <ownedComment xmi:id="ClassifierTemplateParameter-constrainingClassifier-_ownedComment.0" annotatedElement="ClassifierTemplateParameter-constrainingClassifier">
-          <body>The classifiers that constrain the argument that can be used for the parameter. If the allowSubstitutable attribute is true, then any Classifier that is compatible with this constraining Classifier can be substituted; otherwise, it must be either this Classifier or one of its specializations. If this property is empty, there are no constraints on the Classifier that can be used as an argument.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ClassifierTemplateParameter-constrainingClassifier-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ClassifierTemplateParameter-constrainingClassifier-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ClassifierTemplateParameter-parameteredElement" name="parameteredElement" type="Classifier" redefinedProperty="TemplateParameter-parameteredElement" association="A_classifier_templateParameter_parameteredElement">
-        <ownedComment xmi:id="ClassifierTemplateParameter-parameteredElement-_ownedComment.0" annotatedElement="ClassifierTemplateParameter-parameteredElement">
-          <body>The Classifier exposed by this ClassifierTemplateParameter.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Feature" name="Feature" isAbstract="true">
-      <ownedComment xmi:id="Feature-_ownedComment.0" annotatedElement="Feature">
-        <body>A Feature declares a behavioral or structural characteristic of Classifiers.</body>
-      </ownedComment>
-      <generalization xmi:id="Feature-_generalization.0" general="RedefinableElement"/>
-      <ownedAttribute xmi:id="Feature-featuringClassifier" name="featuringClassifier" type="Classifier" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="A_member_memberNamespace-memberNamespace" association="A_feature_featuringClassifier">
-        <ownedComment xmi:id="Feature-featuringClassifier-_ownedComment.0" annotatedElement="Feature-featuringClassifier">
-          <body>The Classifiers that have this Feature as a feature.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Feature-featuringClassifier-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Feature-featuringClassifier-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Feature-isStatic" name="isStatic">
-        <ownedComment xmi:id="Feature-isStatic-_ownedComment.0" annotatedElement="Feature-isStatic">
-          <body>Specifies whether this Feature characterizes individual instances classified by the Classifier (false) or the Classifier itself (true).</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Feature-isStatic-_defaultValue"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Generalization" name="Generalization">
-      <ownedComment xmi:id="Generalization-_ownedComment.0" annotatedElement="Generalization">
-        <body>A Generalization is a taxonomic relationship between a more general Classifier and a more specific Classifier. Each instance of the specific Classifier is also an instance of the general Classifier. The specific Classifier inherits the features of the more general Classifier. A Generalization is owned by the specific Classifier.</body>
-      </ownedComment>
-      <generalization xmi:id="Generalization-_generalization.0" general="DirectedRelationship"/>
-      <ownedAttribute xmi:id="Generalization-general" name="general" type="Classifier" subsettedProperty="DirectedRelationship-target" association="A_general_generalization">
-        <ownedComment xmi:id="Generalization-general-_ownedComment.0" annotatedElement="Generalization-general">
-          <body>The general classifier in the Generalization relationship.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Generalization-generalizationSet" name="generalizationSet" type="GeneralizationSet" association="A_generalizationSet_generalization">
-        <ownedComment xmi:id="Generalization-generalizationSet-_ownedComment.0" annotatedElement="Generalization-generalizationSet">
-          <body>Represents a set of instances of Generalization.  A Generalization may appear in many GeneralizationSets.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Generalization-generalizationSet-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Generalization-generalizationSet-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Generalization-isSubstitutable" name="isSubstitutable">
-        <ownedComment xmi:id="Generalization-isSubstitutable-_ownedComment.0" annotatedElement="Generalization-isSubstitutable">
-          <body>Indicates whether the specific Classifier can be used wherever the general Classifier can be used. If true, the execution traces of the specific Classifier shall be a superset of the execution traces of the general Classifier. If false, there is no such constraint on execution traces. If unset, the modeler has not stated whether there is such a constraint or not.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Generalization-isSubstitutable-_lowerValue"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Generalization-isSubstitutable-_defaultValue" value="true"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Generalization-specific" name="specific" type="Classifier" subsettedProperty="DirectedRelationship-source Element-owner" association="A_generalization_specific">
-        <ownedComment xmi:id="Generalization-specific-_ownedComment.0" annotatedElement="Generalization-specific">
-          <body>The specializing Classifier in the Generalization relationship.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="GeneralizationSet" name="GeneralizationSet">
-      <ownedComment xmi:id="GeneralizationSet-_ownedComment.0" annotatedElement="GeneralizationSet">
-        <body>A GeneralizationSet is a PackageableElement whose instances represent sets of Generalization relationships.</body>
-      </ownedComment>
-      <ownedRule xmi:id="GeneralizationSet-generalization_same_classifier" name="generalization_same_classifier" constrainedElement="GeneralizationSet">
-        <ownedComment xmi:id="GeneralizationSet-generalization_same_classifier-_ownedComment.0" annotatedElement="GeneralizationSet-generalization_same_classifier">
-          <body>Every Generalization associated with a particular GeneralizationSet must have the same general Classifier.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="GeneralizationSet-generalization_same_classifier-_specification">
-          <language>OCL</language>
-          <body>generalization->collect(general)->asSet()->size() &lt;= 1</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="GeneralizationSet-maps_to_generalization_set" name="maps_to_generalization_set" constrainedElement="GeneralizationSet">
-        <ownedComment xmi:id="GeneralizationSet-maps_to_generalization_set-_ownedComment.0" annotatedElement="GeneralizationSet-maps_to_generalization_set">
-          <body>The Classifier that maps to a GeneralizationSet may neither be a specific nor a general Classifier in any of the Generalization relationships defined for that GeneralizationSet. In other words, a power type may not be an instance of itself nor may its instances be its subclasses.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="GeneralizationSet-maps_to_generalization_set-_specification">
-          <language>OCL</language>
-          <body>powertype &lt;> null implies generalization->forAll( gen | &#xD;
-    not (gen.general = powertype) and not gen.general.allParents()->includes(powertype) and not (gen.specific = powertype) and not powertype.allParents()->includes(gen.specific)&#xD;
-  )</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="GeneralizationSet-_generalization.0" general="PackageableElement"/>
-      <ownedAttribute xmi:id="GeneralizationSet-generalization" name="generalization" type="Generalization" association="A_generalizationSet_generalization">
-        <ownedComment xmi:id="GeneralizationSet-generalization-_ownedComment.0" annotatedElement="GeneralizationSet-generalization">
-          <body>Designates the instances of Generalization that are members of this GeneralizationSet.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="GeneralizationSet-generalization-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="GeneralizationSet-generalization-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="GeneralizationSet-isCovering" name="isCovering">
-        <ownedComment xmi:id="GeneralizationSet-isCovering-_ownedComment.0" annotatedElement="GeneralizationSet-isCovering">
-          <body>Indicates (via the associated Generalizations) whether or not the set of specific Classifiers are covering for a particular general classifier. When isCovering is true, every instance of a particular general Classifier is also an instance of at least one of its specific Classifiers for the GeneralizationSet. When isCovering is false, there are one or more instances of the particular general Classifier that are not instances of at least one of its specific Classifiers defined for the GeneralizationSet.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="GeneralizationSet-isCovering-_defaultValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="GeneralizationSet-isDisjoint" name="isDisjoint">
-        <ownedComment xmi:id="GeneralizationSet-isDisjoint-_ownedComment.0" annotatedElement="GeneralizationSet-isDisjoint">
-          <body>Indicates whether or not the set of specific Classifiers in a Generalization relationship have instance in common. If isDisjoint is true, the specific Classifiers for a particular GeneralizationSet have no members in common; that is, their intersection is empty. If isDisjoint is false, the specific Classifiers in a particular GeneralizationSet have one or more members in common; that is, their intersection is not empty.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="GeneralizationSet-isDisjoint-_defaultValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="GeneralizationSet-powertype" name="powertype" type="Classifier" association="A_powertypeExtent_powertype">
-        <ownedComment xmi:id="GeneralizationSet-powertype-_ownedComment.0" annotatedElement="GeneralizationSet-powertype">
-          <body>Designates the Classifier that is defined as the power type for the associated GeneralizationSet, if there is one.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="GeneralizationSet-powertype-_lowerValue"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="InstanceSpecification" name="InstanceSpecification">
-      <ownedComment xmi:id="InstanceSpecification-_ownedComment.0" annotatedElement="InstanceSpecification">
-        <body>An InstanceSpecification is a model element that represents an instance in a modeled system. An InstanceSpecification can act as a DeploymentTarget in a Deployment relationship, in the case that it represents an instance of a Node. It can also act as a DeployedArtifact, if it represents an instance of an Artifact.</body>
-      </ownedComment>
-      <ownedRule xmi:id="InstanceSpecification-deployment_artifact" name="deployment_artifact" constrainedElement="InstanceSpecification">
-        <ownedComment xmi:id="InstanceSpecification-deployment_artifact-_ownedComment.0" annotatedElement="InstanceSpecification-deployment_artifact">
-          <body>An InstanceSpecification can act as a DeployedArtifact if it represents an instance of an Artifact.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="InstanceSpecification-deployment_artifact-_specification">
-          <language>OCL</language>
-          <body>deploymentForArtifact->notEmpty() implies classifier->exists(oclIsKindOf(Artifact))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="InstanceSpecification-structural_feature" name="structural_feature" constrainedElement="InstanceSpecification">
-        <ownedComment xmi:id="InstanceSpecification-structural_feature-_ownedComment.0" annotatedElement="InstanceSpecification-structural_feature">
-          <body>No more than one slot in an InstanceSpecification may have the same definingFeature.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="InstanceSpecification-structural_feature-_specification">
-          <language>OCL</language>
-          <body>classifier->forAll(c | (c.allSlottableFeatures()->forAll(f | slot->select(s | s.definingFeature = f)->size() &lt;= 1)))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="InstanceSpecification-defining_feature" name="defining_feature" constrainedElement="InstanceSpecification">
-        <ownedComment xmi:id="InstanceSpecification-defining_feature-_ownedComment.0" annotatedElement="InstanceSpecification-defining_feature">
-          <body>The definingFeature of each slot is a StructuralFeature related to a classifier of the InstanceSpecification, including direct attributes, inherited attributes, private attributes in generalizations, and memberEnds of Associations, but excluding redefined StructuralFeatures.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="InstanceSpecification-defining_feature-_specification">
-          <language>OCL</language>
-          <body>slot->forAll(s | classifier->exists (c | c.allSlottableFeatures()->includes (s.definingFeature)))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="InstanceSpecification-deployment_target" name="deployment_target" constrainedElement="InstanceSpecification">
-        <ownedComment xmi:id="InstanceSpecification-deployment_target-_ownedComment.0" annotatedElement="InstanceSpecification-deployment_target">
-          <body>An InstanceSpecification can act as a DeploymentTarget if it represents an instance of a Node and functions as a part in the internal structure of an encompassing Node.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="InstanceSpecification-deployment_target-_specification">
-          <language>OCL</language>
-          <body>deployment->notEmpty() implies classifier->exists(node | node.oclIsKindOf(Node) and Node.allInstances()->exists(n | n.part->exists(p | p.type = node)))</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="InstanceSpecification-_generalization.0" general="DeploymentTarget"/>
-      <generalization xmi:id="InstanceSpecification-_generalization.1" general="PackageableElement"/>
-      <generalization xmi:id="InstanceSpecification-_generalization.2" general="DeployedArtifact"/>
-      <ownedAttribute xmi:id="InstanceSpecification-classifier" name="classifier" type="Classifier" association="A_classifier_instanceSpecification">
-        <ownedComment xmi:id="InstanceSpecification-classifier-_ownedComment.0" annotatedElement="InstanceSpecification-classifier">
-          <body>The Classifier or Classifiers of the represented instance. If multiple Classifiers are specified, the instance is classified by all of them.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="InstanceSpecification-classifier-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InstanceSpecification-classifier-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="InstanceSpecification-slot" name="slot" type="Slot" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_slot_owningInstance">
-        <ownedComment xmi:id="InstanceSpecification-slot-_ownedComment.0" annotatedElement="InstanceSpecification-slot">
-          <body>A Slot giving the value or values of a StructuralFeature of the instance. An InstanceSpecification can have one Slot per StructuralFeature of its Classifiers, including inherited features. It is not necessary to model a Slot for every StructuralFeature, in which case the InstanceSpecification is a partial description.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="InstanceSpecification-slot-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InstanceSpecification-slot-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="InstanceSpecification-specification" name="specification" type="ValueSpecification" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_specification_owningInstanceSpec">
-        <ownedComment xmi:id="InstanceSpecification-specification-_ownedComment.0" annotatedElement="InstanceSpecification-specification">
-          <body>A specification of how to compute, derive, or construct the instance.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="InstanceSpecification-specification-_lowerValue"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="InstanceValue" name="InstanceValue">
-      <ownedComment xmi:id="InstanceValue-_ownedComment.0" annotatedElement="InstanceValue">
-        <body>An InstanceValue is a ValueSpecification that identifies an instance.</body>
-      </ownedComment>
-      <generalization xmi:id="InstanceValue-_generalization.0" general="ValueSpecification"/>
-      <ownedAttribute xmi:id="InstanceValue-instance" name="instance" type="InstanceSpecification" association="A_instance_instanceValue">
-        <ownedComment xmi:id="InstanceValue-instance-_ownedComment.0" annotatedElement="InstanceValue-instance">
-          <body>The InstanceSpecification that represents the specified value.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedOperation xmi:id="InstanceValue-stringValue" name="stringValue" visibility="protected" isQuery="true">
-        <ownedParameter xmi:id="InstanceValue-stringValue-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Operation" name="Operation">
-      <ownedComment xmi:id="Operation-_ownedComment.0" annotatedElement="Operation">
-        <body>An Operation is a BehavioralFeature of a Classifier that specifies the name, type, parameters, and constraints for invoking an associated Behavior. An Operation may invoke both the execution of method behaviors as well as other behavioral responses. Operation specializes TemplateableElement in order to support specification of template operations and bound operations. Operation specializes ParameterableElement to specify that an operation can be exposed as a formal template parameter, and provided as an actual parameter in a binding of a template.</body>
-      </ownedComment>
-      <ownedRule xmi:id="Operation-at_most_one_return" name="at_most_one_return" constrainedElement="Operation">
-        <ownedComment xmi:id="Operation-at_most_one_return-_ownedComment.0" annotatedElement="Operation-at_most_one_return">
-          <body>An Operation can have at most one return parameter; i.e., an owned parameter with the direction set to 'return.'</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Operation-at_most_one_return-_specification">
-          <language>OCL</language>
-          <body>self.ownedParameter->select(direction = ParameterDirectionKind::return)->size() &lt;= 1</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Operation-only_body_for_query" name="only_body_for_query" constrainedElement="Operation">
-        <ownedComment xmi:id="Operation-only_body_for_query-_ownedComment.0" annotatedElement="Operation-only_body_for_query">
-          <body>A bodyCondition can only be specified for a query Operation.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Operation-only_body_for_query-_specification">
-          <language>OCL</language>
-          <body>bodyCondition &lt;> null implies isQuery</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="Operation-_generalization.0" general="TemplateableElement"/>
-      <generalization xmi:id="Operation-_generalization.1" general="ParameterableElement"/>
-      <generalization xmi:id="Operation-_generalization.2" general="BehavioralFeature"/>
-      <ownedAttribute xmi:id="Operation-bodyCondition" name="bodyCondition" type="Constraint" aggregation="composite" subsettedProperty="Namespace-ownedRule" association="A_bodyCondition_bodyContext">
-        <ownedComment xmi:id="Operation-bodyCondition-_ownedComment.0" annotatedElement="Operation-bodyCondition">
-          <body>An optional Constraint on the result values of an invocation of this Operation.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Operation-bodyCondition-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Operation-class" name="class" type="Class" subsettedProperty="Feature-featuringClassifier NamedElement-namespace RedefinableElement-redefinitionContext" association="A_ownedOperation_class">
-        <ownedComment xmi:id="Operation-class-_ownedComment.0" annotatedElement="Operation-class">
-          <body>The Class that owns this operation, if any.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Operation-class-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Operation-datatype" name="datatype" type="DataType" subsettedProperty="Feature-featuringClassifier NamedElement-namespace RedefinableElement-redefinitionContext" association="A_ownedOperation_datatype">
-        <ownedComment xmi:id="Operation-datatype-_ownedComment.0" annotatedElement="Operation-datatype">
-          <body>The DataType that owns this Operation, if any.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Operation-datatype-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Operation-interface" name="interface" type="Interface" subsettedProperty="Feature-featuringClassifier NamedElement-namespace RedefinableElement-redefinitionContext" association="A_ownedOperation_interface">
-        <ownedComment xmi:id="Operation-interface-_ownedComment.0" annotatedElement="Operation-interface">
-          <body>The Interface that owns this Operation, if any.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Operation-interface-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Operation-isOrdered" name="isOrdered" isReadOnly="true" isDerived="true">
-        <ownedComment xmi:id="Operation-isOrdered-_ownedComment.0" annotatedElement="Operation-isOrdered">
-          <body>Specifies whether the return parameter is ordered or not, if present.  This information is derived from the return result for this Operation.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Operation-isQuery" name="isQuery">
-        <ownedComment xmi:id="Operation-isQuery-_ownedComment.0" annotatedElement="Operation-isQuery">
-          <body>Specifies whether an execution of the BehavioralFeature leaves the state of the system unchanged (isQuery=true) or whether side effects may occur (isQuery=false).</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Operation-isQuery-_defaultValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Operation-isUnique" name="isUnique" isReadOnly="true" isDerived="true">
-        <ownedComment xmi:id="Operation-isUnique-_ownedComment.0" annotatedElement="Operation-isUnique">
-          <body>Specifies whether the return parameter is unique or not, if present. This information is derived from the return result for this Operation.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Operation-isUnique-_defaultValue" value="true"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Operation-lower" name="lower" isReadOnly="true" isDerived="true">
-        <ownedComment xmi:id="Operation-lower-_ownedComment.0" annotatedElement="Operation-lower">
-          <body>Specifies the lower multiplicity of the return parameter, if present. This information is derived from the return result for this Operation.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Operation-lower-_lowerValue"/>
-        <defaultValue xmi:type="uml:LiteralInteger" xmi:id="Operation-lower-_defaultValue" value="1"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Operation-ownedParameter" name="ownedParameter" type="Parameter" isOrdered="true" aggregation="composite" redefinedProperty="BehavioralFeature-ownedParameter" association="A_ownedParameter_operation">
-        <ownedComment xmi:id="Operation-ownedParameter-_ownedComment.0" annotatedElement="Operation-ownedParameter">
-          <body>The parameters owned by this Operation.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Operation-ownedParameter-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Operation-ownedParameter-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Operation-postcondition" name="postcondition" type="Constraint" aggregation="composite" subsettedProperty="Namespace-ownedRule" association="A_postcondition_postContext">
-        <ownedComment xmi:id="Operation-postcondition-_ownedComment.0" annotatedElement="Operation-postcondition">
-          <body>An optional set of Constraints specifying the state of the system when the Operation is completed.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Operation-postcondition-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Operation-postcondition-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Operation-precondition" name="precondition" type="Constraint" aggregation="composite" subsettedProperty="Namespace-ownedRule" association="A_precondition_preContext">
-        <ownedComment xmi:id="Operation-precondition-_ownedComment.0" annotatedElement="Operation-precondition">
-          <body>An optional set of Constraints on the state of the system when the Operation is invoked.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Operation-precondition-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Operation-precondition-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Operation-raisedException" name="raisedException" type="Type" redefinedProperty="BehavioralFeature-raisedException" association="A_raisedException_operation">
-        <ownedComment xmi:id="Operation-raisedException-_ownedComment.0" annotatedElement="Operation-raisedException">
-          <body>The Types representing exceptions that may be raised during an invocation of this operation.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Operation-raisedException-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Operation-raisedException-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Operation-redefinedOperation" name="redefinedOperation" type="Operation" subsettedProperty="RedefinableElement-redefinedElement" association="A_redefinedOperation_operation">
-        <ownedComment xmi:id="Operation-redefinedOperation-_ownedComment.0" annotatedElement="Operation-redefinedOperation">
-          <body>The Operations that are redefined by this Operation.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Operation-redefinedOperation-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Operation-redefinedOperation-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Operation-templateParameter" name="templateParameter" type="OperationTemplateParameter" redefinedProperty="ParameterableElement-templateParameter" association="A_operation_templateParameter_parameteredElement">
-        <ownedComment xmi:id="Operation-templateParameter-_ownedComment.0" annotatedElement="Operation-templateParameter">
-          <body>The OperationTemplateParameter that exposes this element as a formal parameter.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Operation-templateParameter-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Operation-type" name="type" type="Type" isReadOnly="true" isDerived="true" association="A_type_operation">
-        <ownedComment xmi:id="Operation-type-_ownedComment.0" annotatedElement="Operation-type">
-          <body>The return type of the operation, if present. This information is derived from the return result for this Operation.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Operation-type-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Operation-upper" name="upper" isReadOnly="true" isDerived="true">
-        <ownedComment xmi:id="Operation-upper-_ownedComment.0" annotatedElement="Operation-upper">
-          <body>The upper multiplicity of the return parameter, if present. This information is derived from the return result for this Operation.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Operation-upper-_lowerValue"/>
-        <defaultValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Operation-upper-_defaultValue" value="1"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="Operation-getReturnResult" name="getReturnResult">
-        <ownedComment xmi:id="Operation-getReturnResult-_ownedComment.0" annotatedElement="Operation-getReturnResult">
-          <body>Retrieves the (only) return result parameter for this operation.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Operation-getReturnResult-_ownedParameter.0" type="Parameter" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Operation-getReturnResult-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Operation-getReturnResult-_ownedParameter.0-_upperValue" value="1"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Operation-setIsOrdered" name="setIsOrdered">
-        <ownedParameter xmi:id="Operation-setIsOrdered-newIsOrdered" name="newIsOrdered" effect="read">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Operation-setIsUnique" name="setIsUnique">
-        <ownedParameter xmi:id="Operation-setIsUnique-newIsUnique" name="newIsUnique" effect="read">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Operation-setLower" name="setLower">
-        <ownedParameter xmi:id="Operation-setLower-newLower" name="newLower" effect="read">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Operation-setType" name="setType">
-        <ownedParameter xmi:id="Operation-setType-newType" name="newType" type="Type" effect="read"/>
-      </ownedOperation>
-      <ownedOperation xmi:id="Operation-setUpper" name="setUpper">
-        <ownedParameter xmi:id="Operation-setUpper-newUpper" name="newUpper" effect="read">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Operation-isConsistentWith" name="isConsistentWith" bodyCondition="Operation-isConsistentWith-spec" isQuery="true" precondition="Operation-isConsistentWith-pre" redefinedOperation="RedefinableElement-isConsistentWith">
-        <ownedComment xmi:id="Operation-isConsistentWith-_ownedComment.0" annotatedElement="Operation-isConsistentWith">
-          <body>The query isConsistentWith() specifies, for any two Operations in a context in which redefinition is possible, whether redefinition would be consistent. A redefining operation is consistent with a redefined operation if&#xD;
-it has the same number of owned parameters, and for each parameter the following holds:&#xD;
-&#xD;
-- Direction, ordering and uniqueness are the same.&#xD;
-- The corresponding types are covariant, contravariant or invariant.&#xD;
-- The multiplicities are compatible, depending on the parameter direction.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Operation-isConsistentWith-spec" name="spec" constrainedElement="Operation-isConsistentWith">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Operation-isConsistentWith-spec-_specification">
-            <language>OCL</language>
-            <body>result = (redefiningElement.oclIsKindOf(Operation) and&#xD;
-let op : Operation = redefiningElement.oclAsType(Operation) in&#xD;
-	self.ownedParameter->size() = op.ownedParameter->size() and&#xD;
-	Sequence{1..self.ownedParameter->size()}->&#xD;
-		forAll(i |  &#xD;
-		  let redefiningParam : Parameter = op.ownedParameter->at(i),&#xD;
-               redefinedParam : Parameter = self.ownedParameter->at(i) in&#xD;
-                 (redefiningParam.isUnique = redefinedParam.isUnique) and&#xD;
-                 (redefiningParam.isOrdered = redefinedParam. isOrdered) and&#xD;
-                 (redefiningParam.direction = redefinedParam.direction) and&#xD;
-                 (redefiningParam.type.conformsTo(redefinedParam.type) or&#xD;
-                     redefinedParam.type.conformsTo(redefiningParam.type)) and&#xD;
-                 (redefiningParam.direction = ParameterDirectionKind::inout implies&#xD;
-                         (redefinedParam.compatibleWith(redefiningParam) and&#xD;
-                         redefiningParam.compatibleWith(redefinedParam))) and&#xD;
-                 (redefiningParam.direction = ParameterDirectionKind::_'in' implies&#xD;
-                         redefinedParam.compatibleWith(redefiningParam)) and&#xD;
-                 ((redefiningParam.direction = ParameterDirectionKind::out or&#xD;
-                      redefiningParam.direction = ParameterDirectionKind::return) implies&#xD;
-                         redefiningParam.compatibleWith(redefinedParam))&#xD;
-		))</body>
-          </specification>
-        </ownedRule>
-        <ownedRule xmi:id="Operation-isConsistentWith-pre" name="pre" constrainedElement="Operation-isConsistentWith">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Operation-isConsistentWith-pre-_specification">
-            <language>OCL</language>
-            <body>redefiningElement.isRedefinitionContextValid(self)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Operation-isConsistentWith-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Operation-isConsistentWith-redefiningElement" name="redefiningElement" type="RedefinableElement"/>
-      </ownedOperation>
-      <ownedOperation xmi:id="Operation-isOrdered.1" name="isOrdered" bodyCondition="Operation-isOrdered.1-spec" isQuery="true">
-        <ownedComment xmi:id="Operation-isOrdered.1-_ownedComment.0" annotatedElement="Operation-isOrdered.1">
-          <body>If this operation has a return parameter, isOrdered equals the value of isOrdered for that parameter. Otherwise isOrdered is false.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Operation-isOrdered.1-spec" name="spec" constrainedElement="Operation-isOrdered.1 Operation-isOrdered">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Operation-isOrdered.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if returnResult()->notEmpty() then returnResult()-> exists(isOrdered) else false endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Operation-isOrdered.1-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Operation-isUnique.1" name="isUnique" bodyCondition="Operation-isUnique.1-spec" isQuery="true">
-        <ownedComment xmi:id="Operation-isUnique.1-_ownedComment.0" annotatedElement="Operation-isUnique.1">
-          <body>If this operation has a return parameter, isUnique equals the value of isUnique for that parameter. Otherwise isUnique is true.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Operation-isUnique.1-spec" name="spec" constrainedElement="Operation-isUnique.1 Operation-isUnique">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Operation-isUnique.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if returnResult()->notEmpty() then returnResult()->exists(isUnique) else true endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Operation-isUnique.1-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Operation-lower.1" name="lower" visibility="protected" bodyCondition="Operation-lower.1-spec" isQuery="true">
-        <ownedComment xmi:id="Operation-lower.1-_ownedComment.0" annotatedElement="Operation-lower.1">
-          <body>If this operation has a return parameter, lower equals the value of lower for that parameter. Otherwise lower has no value.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Operation-lower.1-spec" name="spec" constrainedElement="Operation-lower.1 Operation-lower">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Operation-lower.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if returnResult()->notEmpty() then returnResult()->any(true).lower else null endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Operation-lower.1-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Operation-returnResult" name="returnResult" bodyCondition="Operation-returnResult-spec" isQuery="true">
-        <ownedComment xmi:id="Operation-returnResult-_ownedComment.0" annotatedElement="Operation-returnResult">
-          <body>The query returnResult() returns the set containing the return parameter of the Operation if one exists, otherwise, it returns an empty set</body>
-        </ownedComment>
-        <ownedRule xmi:id="Operation-returnResult-spec" name="spec" constrainedElement="Operation-returnResult">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Operation-returnResult-spec-_specification">
-            <language>OCL</language>
-            <body>result = (ownedParameter->select (direction = ParameterDirectionKind::return)->asSet())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Operation-returnResult-result" name="result" type="Parameter" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Operation-returnResult-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Operation-returnResult-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Operation-type.1" name="type" visibility="protected" bodyCondition="Operation-type.1-spec" isQuery="true">
-        <ownedComment xmi:id="Operation-type.1-_ownedComment.0" annotatedElement="Operation-type.1">
-          <body>If this operation has a return parameter, type equals the value of type for that parameter. Otherwise type has no value.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Operation-type.1-spec" name="spec" constrainedElement="Operation-type.1 Operation-type">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Operation-type.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if returnResult()->notEmpty() then returnResult()->any(true).type else null endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Operation-type.1-result" name="result" type="Type" direction="return"/>
-      </ownedOperation>
-      <ownedOperation xmi:id="Operation-upper.1" name="upper" visibility="protected" bodyCondition="Operation-upper.1-spec" isQuery="true">
-        <ownedComment xmi:id="Operation-upper.1-_ownedComment.0" annotatedElement="Operation-upper.1">
-          <body>If this operation has a return parameter, upper equals the value of upper for that parameter. Otherwise upper has no value.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Operation-upper.1-spec" name="spec" constrainedElement="Operation-upper.1 Operation-upper">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Operation-upper.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if returnResult()->notEmpty() then returnResult()->any(true).upper else null endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Operation-upper.1-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="OperationTemplateParameter" name="OperationTemplateParameter">
-      <ownedComment xmi:id="OperationTemplateParameter-_ownedComment.0" annotatedElement="OperationTemplateParameter">
-        <body>An OperationTemplateParameter exposes an Operation as a formal parameter for a template.</body>
-      </ownedComment>
-      <ownedRule xmi:id="OperationTemplateParameter-match_default_signature" name="match_default_signature" constrainedElement="OperationTemplateParameter">
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="OperationTemplateParameter-match_default_signature-_specification">
-          <ownedComment xmi:id="OperationTemplateParameter-match_default_signature-_specification-_ownedComment.0" annotatedElement="OperationTemplateParameter-match_default_signature-_specification">
-            <body>A default for an OperationTemplateParameter must be an Operation with the same Parameter types, directions and multiplicities as the exposed Operation.</body>
-          </ownedComment>
-          <language>OCL</language>
-          <body>default->notEmpty() implies (default.oclIsKindOf(Operation) and (let defaultOp : Operation = default.oclAsType(Operation) in &#xD;
-    defaultOp.ownedParameter->size() = parameteredElement.ownedParameter->size() and&#xD;
-    Sequence{1.. defaultOp.ownedParameter->size()}->forAll( ix | &#xD;
-        let p1: Parameter = defaultOp.ownedParameter->at(ix), p2 : Parameter = parameteredElement.ownedParameter->at(ix) in&#xD;
-          p1.type = p2.type and p1.upper = p2.upper and p1.lower = p2.lower and p1.direction = p2.direction and p1.isOrdered = p2.isOrdered and p1.isUnique = p2.isUnique)))</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="OperationTemplateParameter-_generalization.0" general="TemplateParameter"/>
-      <ownedAttribute xmi:id="OperationTemplateParameter-parameteredElement" name="parameteredElement" type="Operation" redefinedProperty="TemplateParameter-parameteredElement" association="A_operation_templateParameter_parameteredElement">
-        <ownedComment xmi:id="OperationTemplateParameter-parameteredElement-_ownedComment.0" annotatedElement="OperationTemplateParameter-parameteredElement">
-          <body>The Operation exposed by this OperationTemplateParameter.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Parameter" name="Parameter">
-      <ownedComment xmi:id="Parameter-_ownedComment.0" annotatedElement="Parameter">
-        <body>A Parameter is a specification of an argument used to pass information into or out of an invocation of a BehavioralFeature.  Parameters can be treated as ConnectableElements within Collaborations.</body>
-      </ownedComment>
-      <ownedRule xmi:id="Parameter-in_and_out" name="in_and_out" constrainedElement="Parameter">
-        <ownedComment xmi:id="Parameter-in_and_out-_ownedComment.0" annotatedElement="Parameter-in_and_out">
-          <body>Only in and inout Parameters may have a delete effect. Only out, inout, and return Parameters may have a create effect.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Parameter-in_and_out-_specification">
-          <language>OCL</language>
-          <body>(effect = ParameterEffectKind::delete implies (direction = ParameterDirectionKind::_'in' or direction = ParameterDirectionKind::inout))&#xD;
-and&#xD;
-(effect = ParameterEffectKind::create implies (direction = ParameterDirectionKind::out or direction = ParameterDirectionKind::inout or direction = ParameterDirectionKind::return))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Parameter-not_exception" name="not_exception" constrainedElement="Parameter">
-        <ownedComment xmi:id="Parameter-not_exception-_ownedComment.0" annotatedElement="Parameter-not_exception">
-          <body>An input Parameter cannot be an exception.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Parameter-not_exception-_specification">
-          <language>OCL</language>
-          <body>isException implies (direction &lt;> ParameterDirectionKind::_'in' and direction &lt;> ParameterDirectionKind::inout)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Parameter-connector_end" name="connector_end" constrainedElement="Parameter">
-        <ownedComment xmi:id="Parameter-connector_end-_ownedComment.0" annotatedElement="Parameter-connector_end">
-          <body>A Parameter may only be associated with a Connector end within the context of a Collaboration.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Parameter-connector_end-_specification">
-          <language>OCL</language>
-          <body>end->notEmpty() implies collaboration->notEmpty()</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Parameter-reentrant_behaviors" name="reentrant_behaviors" constrainedElement="Parameter">
-        <ownedComment xmi:id="Parameter-reentrant_behaviors-_ownedComment.0" annotatedElement="Parameter-reentrant_behaviors">
-          <body>Reentrant behaviors cannot have stream Parameters.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Parameter-reentrant_behaviors-_specification">
-          <language>OCL</language>
-          <body>(isStream and behavior &lt;> null) implies not behavior.isReentrant</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Parameter-stream_and_exception" name="stream_and_exception" constrainedElement="Parameter">
-        <ownedComment xmi:id="Parameter-stream_and_exception-_ownedComment.0" annotatedElement="Parameter-stream_and_exception">
-          <body>A Parameter cannot be a stream and exception at the same time.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Parameter-stream_and_exception-_specification">
-          <language>OCL</language>
-          <body>not (isException and isStream)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Parameter-object_effect" name="object_effect" constrainedElement="Parameter">
-        <ownedComment xmi:id="Parameter-object_effect-_ownedComment.0" annotatedElement="Parameter-object_effect">
-          <body>Parameters typed by DataTypes cannot have an effect.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Parameter-object_effect-_specification">
-          <language>OCL</language>
-          <body>(type.oclIsKindOf(DataType)) implies (effect = null)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="Parameter-_generalization.0" general="MultiplicityElement"/>
-      <generalization xmi:id="Parameter-_generalization.1" general="ConnectableElement"/>
-      <ownedAttribute xmi:id="Parameter-default" name="default" isDerived="true">
-        <ownedComment xmi:id="Parameter-default-_ownedComment.0" annotatedElement="Parameter-default">
-          <body>A String that represents a value to be used when no argument is supplied for the Parameter.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Parameter-default-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Parameter-defaultValue" name="defaultValue" type="ValueSpecification" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_defaultValue_owningParameter">
-        <ownedComment xmi:id="Parameter-defaultValue-_ownedComment.0" annotatedElement="Parameter-defaultValue">
-          <body>Specifies a ValueSpecification that represents a value to be used when no argument is supplied for the Parameter.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Parameter-defaultValue-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Parameter-direction" name="direction" type="ParameterDirectionKind">
-        <ownedComment xmi:id="Parameter-direction-_ownedComment.0" annotatedElement="Parameter-direction">
-          <body>Indicates whether a parameter is being sent into or out of a behavioral element.</body>
-        </ownedComment>
-        <defaultValue xmi:type="uml:InstanceValue" xmi:id="Parameter-direction-_defaultValue" type="ParameterDirectionKind" instance="ParameterDirectionKind-in"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Parameter-effect" name="effect" type="ParameterEffectKind">
-        <ownedComment xmi:id="Parameter-effect-_ownedComment.0" annotatedElement="Parameter-effect">
-          <body>Specifies the effect that executions of the owner of the Parameter have on objects passed in or out of the parameter.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Parameter-effect-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Parameter-isException" name="isException">
-        <ownedComment xmi:id="Parameter-isException-_ownedComment.0" annotatedElement="Parameter-isException">
-          <body>Tells whether an output parameter may emit a value to the exclusion of the other outputs.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Parameter-isException-_defaultValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Parameter-isStream" name="isStream">
-        <ownedComment xmi:id="Parameter-isStream-_ownedComment.0" annotatedElement="Parameter-isStream">
-          <body>Tells whether an input parameter may accept values while its behavior is executing, or whether an output parameter may post values while the behavior is executing.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Parameter-isStream-_defaultValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Parameter-operation" name="operation" type="Operation" subsettedProperty="A_ownedParameter_ownerFormalParam-ownerFormalParam NamedElement-namespace" association="A_ownedParameter_operation">
-        <ownedComment xmi:id="Parameter-operation-_ownedComment.0" annotatedElement="Parameter-operation">
-          <body>The Operation owning this parameter.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Parameter-operation-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Parameter-parameterSet" name="parameterSet" type="ParameterSet" association="A_parameterSet_parameter">
-        <ownedComment xmi:id="Parameter-parameterSet-_ownedComment.0" annotatedElement="Parameter-parameterSet">
-          <body>The ParameterSets containing the parameter. See ParameterSet.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Parameter-parameterSet-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Parameter-parameterSet-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="Parameter-isSetDefault" name="isSetDefault" visibility="protected" isQuery="true">
-        <ownedParameter xmi:id="Parameter-isSetDefault-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Parameter-setBooleanDefaultValue" name="setBooleanDefaultValue">
-        <ownedComment xmi:id="Parameter-setBooleanDefaultValue-_ownedComment.0" annotatedElement="Parameter-setBooleanDefaultValue">
-          <body>Sets the default value for this parameter to the specified Boolean value.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Parameter-setBooleanDefaultValue-value" name="value" effect="read">
-          <ownedComment xmi:id="Parameter-setBooleanDefaultValue-value-_ownedComment.0" annotatedElement="Parameter-setBooleanDefaultValue-value">
-            <body>The new default value.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Parameter-setDefault" name="setDefault" visibility="protected">
-        <ownedParameter xmi:id="Parameter-setDefault-newDefault" name="newDefault" visibility="protected" effect="read">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Parameter-setIntegerDefaultValue" name="setIntegerDefaultValue">
-        <ownedComment xmi:id="Parameter-setIntegerDefaultValue-_ownedComment.0" annotatedElement="Parameter-setIntegerDefaultValue">
-          <body>Sets the default value for this parameter to the specified integer value.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Parameter-setIntegerDefaultValue-value" name="value" effect="read">
-          <ownedComment xmi:id="Parameter-setIntegerDefaultValue-value-_ownedComment.0" annotatedElement="Parameter-setIntegerDefaultValue-value">
-            <body>The new default value.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Parameter-setNullDefaultValue" name="setNullDefaultValue">
-        <ownedComment xmi:id="Parameter-setNullDefaultValue-_ownedComment.0" annotatedElement="Parameter-setNullDefaultValue">
-          <body>Sets the default value for this parameter to the null value.</body>
-        </ownedComment>
-      </ownedOperation>
-      <ownedOperation xmi:id="Parameter-setRealDefaultValue" name="setRealDefaultValue">
-        <ownedComment xmi:id="Parameter-setRealDefaultValue-_ownedComment.0" annotatedElement="Parameter-setRealDefaultValue">
-          <body>Sets the default value for this parameter to the specified real value.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Parameter-setRealDefaultValue-value" name="value" effect="read">
-          <ownedComment xmi:id="Parameter-setRealDefaultValue-value-_ownedComment.0" annotatedElement="Parameter-setRealDefaultValue-value">
-            <body>The new default value.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Real"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Parameter-setStringDefaultValue" name="setStringDefaultValue">
-        <ownedComment xmi:id="Parameter-setStringDefaultValue-_ownedComment.0" annotatedElement="Parameter-setStringDefaultValue">
-          <body>Sets the default value for this parameter to the specified string value.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Parameter-setStringDefaultValue-value" name="value" effect="read">
-          <ownedComment xmi:id="Parameter-setStringDefaultValue-value-_ownedComment.0" annotatedElement="Parameter-setStringDefaultValue-value">
-            <body>The new default value.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Parameter-setUnlimitedNaturalDefaultValue" name="setUnlimitedNaturalDefaultValue">
-        <ownedComment xmi:id="Parameter-setUnlimitedNaturalDefaultValue-_ownedComment.0" annotatedElement="Parameter-setUnlimitedNaturalDefaultValue">
-          <body>Sets the default value for this parameter to the specified unlimited natural value.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Parameter-setUnlimitedNaturalDefaultValue-value" name="value" effect="read">
-          <ownedComment xmi:id="Parameter-setUnlimitedNaturalDefaultValue-value-_ownedComment.0" annotatedElement="Parameter-setUnlimitedNaturalDefaultValue-value">
-            <body>The new default value.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Parameter-unsetDefault" name="unsetDefault" visibility="protected"/>
-      <ownedOperation xmi:id="Parameter-default.1" name="default" visibility="protected" bodyCondition="Parameter-default.1-spec" isQuery="true">
-        <ownedComment xmi:id="Parameter-default.1-_ownedComment.0" annotatedElement="Parameter-default.1">
-          <body>Derivation for Parameter::/default</body>
-        </ownedComment>
-        <ownedRule xmi:id="Parameter-default.1-spec" name="spec" constrainedElement="Parameter-default.1 Parameter-default">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Parameter-default.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if self.type = String then defaultValue.stringValue() else null endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Parameter-default.1-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Parameter-default.1-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Parameter-default.1-result-_upperValue" value="1"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ParameterSet" name="ParameterSet">
-      <ownedComment xmi:id="ParameterSet-_ownedComment.0" annotatedElement="ParameterSet">
-        <body>A ParameterSet designates alternative sets of inputs or outputs that a Behavior may use.</body>
-      </ownedComment>
-      <ownedRule xmi:id="ParameterSet-same_parameterized_entity" name="same_parameterized_entity" constrainedElement="ParameterSet">
-        <ownedComment xmi:id="ParameterSet-same_parameterized_entity-_ownedComment.0" annotatedElement="ParameterSet-same_parameterized_entity">
-          <body>The Parameters in a ParameterSet must all be inputs or all be outputs of the same parameterized entity, and the ParameterSet is owned by that entity.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ParameterSet-same_parameterized_entity-_specification">
-          <language>OCL</language>
-          <body>parameter->forAll(p1, p2 | self.owner = p1.owner and self.owner = p2.owner and p1.direction = p2.direction)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ParameterSet-input" name="input" constrainedElement="ParameterSet">
-        <ownedComment xmi:id="ParameterSet-input-_ownedComment.0" annotatedElement="ParameterSet-input">
-          <body>If a parameterized entity has input Parameters that are in a ParameterSet, then any inputs that are not in a ParameterSet must be streaming. Same for output Parameters.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ParameterSet-input-_specification">
-          <language>OCL</language>
-          <body>((parameter->exists(direction = ParameterDirectionKind::_'in')) implies &#xD;
-    behavioralFeature.ownedParameter->select(p | p.direction = ParameterDirectionKind::_'in' and p.parameterSet->isEmpty())->forAll(isStream))&#xD;
-    and&#xD;
-((parameter->exists(direction = ParameterDirectionKind::out)) implies &#xD;
-    behavioralFeature.ownedParameter->select(p | p.direction = ParameterDirectionKind::out and p.parameterSet->isEmpty())->forAll(isStream))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ParameterSet-two_parameter_sets" name="two_parameter_sets" constrainedElement="ParameterSet">
-        <ownedComment xmi:id="ParameterSet-two_parameter_sets-_ownedComment.0" annotatedElement="ParameterSet-two_parameter_sets">
-          <body>Two ParameterSets cannot have exactly the same set of Parameters.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ParameterSet-two_parameter_sets-_specification">
-          <language>OCL</language>
-          <body>parameter->forAll(parameterSet->forAll(s1, s2 | s1->size() = s2->size() implies s1.parameter->exists(p | not s2.parameter->includes(p))))</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="ParameterSet-_generalization.0" general="NamedElement"/>
-      <ownedAttribute xmi:id="ParameterSet-condition" name="condition" type="Constraint" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_condition_parameterSet">
-        <ownedComment xmi:id="ParameterSet-condition-_ownedComment.0" annotatedElement="ParameterSet-condition">
-          <body>A constraint that should be satisfied for the owner of the Parameters in an input ParameterSet to start execution using the values provided for those Parameters, or the owner of the Parameters in an output ParameterSet to end execution providing the values for those Parameters, if all preconditions and conditions on input ParameterSets were satisfied.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ParameterSet-condition-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ParameterSet-condition-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ParameterSet-parameter" name="parameter" type="Parameter" association="A_parameterSet_parameter">
-        <ownedComment xmi:id="ParameterSet-parameter-_ownedComment.0" annotatedElement="ParameterSet-parameter">
-          <body>Parameters in the ParameterSet.</body>
-        </ownedComment>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ParameterSet-parameter-_upperValue" value="*"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Property" name="Property">
-      <ownedComment xmi:id="Property-_ownedComment.0" annotatedElement="Property">
-        <body>A Property is a StructuralFeature. A Property related by ownedAttribute to a Classifier (other than an association) represents an attribute and might also represent an association end. It relates an instance of the Classifier to a value or set of values of the type of the attribute. A Property related by memberEnd to an Association represents an end of the Association. The type of the Property is the type of the end of the Association. A Property has the capability of being a DeploymentTarget in a Deployment relationship. This enables modeling the deployment to hierarchical nodes that have Properties functioning as internal parts.  Property specializes ParameterableElement to specify that a Property can be exposed as a formal template parameter, and provided as an actual parameter in a binding of a template.</body>
-      </ownedComment>
-      <ownedRule xmi:id="Property-subsetting_context_conforms" name="subsetting_context_conforms" constrainedElement="Property">
-        <ownedComment xmi:id="Property-subsetting_context_conforms-_ownedComment.0" annotatedElement="Property-subsetting_context_conforms">
-          <body>Subsetting may only occur when the context of the subsetting property conforms to the context of the subsetted property.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Property-subsetting_context_conforms-_specification">
-          <language>OCL</language>
-          <body>subsettedProperty->notEmpty() implies
-  (subsettingContext()->notEmpty() and subsettingContext()->forAll (sc |
-    subsettedProperty->forAll(sp |
-      sp.subsettingContext()->exists(c | sc.conformsTo(c)))))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Property-derived_union_is_read_only" name="derived_union_is_read_only" constrainedElement="Property">
-        <ownedComment xmi:id="Property-derived_union_is_read_only-_ownedComment.0" annotatedElement="Property-derived_union_is_read_only">
-          <body>A derived union is read only.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Property-derived_union_is_read_only-_specification">
-          <language>OCL</language>
-          <body>isDerivedUnion implies isReadOnly</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Property-multiplicity_of_composite" name="multiplicity_of_composite" constrainedElement="Property">
-        <ownedComment xmi:id="Property-multiplicity_of_composite-_ownedComment.0" annotatedElement="Property-multiplicity_of_composite">
-          <body>A multiplicity on the composing end of a composite aggregation must not have an upper bound greater than 1.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Property-multiplicity_of_composite-_specification">
-          <language>OCL</language>
-          <body>isComposite and association &lt;> null implies opposite.upperBound() &lt;= 1</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Property-redefined_property_inherited" name="redefined_property_inherited" constrainedElement="Property">
-        <ownedComment xmi:id="Property-redefined_property_inherited-_ownedComment.0" annotatedElement="Property-redefined_property_inherited">
-          <body>A redefined Property must be inherited from a more general Classifier.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Property-redefined_property_inherited-_specification">
-          <language>OCL</language>
-          <body>(redefinedProperty->notEmpty()) implies&#xD;
-  (redefinitionContext->notEmpty() and&#xD;
-      redefinedProperty->forAll(rp|&#xD;
-        ((redefinitionContext->collect(fc|&#xD;
-          fc.allParents()))->asSet())->collect(c| c.allFeatures())->asSet()->includes(rp)))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Property-subsetting_rules" name="subsetting_rules" constrainedElement="Property">
-        <ownedComment xmi:id="Property-subsetting_rules-_ownedComment.0" annotatedElement="Property-subsetting_rules">
-          <body>A subsetting Property may strengthen the type of the subsetted Property, and its upper bound may be less.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Property-subsetting_rules-_specification">
-          <language>OCL</language>
-          <body>subsettedProperty->forAll(sp |
-  self.type.conformsTo(sp.type) and
-    ((self.upperBound()->notEmpty() and sp.upperBound()->notEmpty()) implies
-      self.upperBound() &lt;= sp.upperBound() ))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Property-binding_to_attribute" name="binding_to_attribute" constrainedElement="Property">
-        <ownedComment xmi:id="Property-binding_to_attribute-_ownedComment.0" annotatedElement="Property-binding_to_attribute">
-          <body>A binding of a PropertyTemplateParameter representing an attribute must be to an attribute.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Property-binding_to_attribute-_specification">
-          <language>OCL</language>
-          <body>(self.isAttribute()&#xD;
-and (templateParameterSubstitution->notEmpty())&#xD;
-implies (templateParameterSubstitution->forAll(ts |&#xD;
-    ts.formal.oclIsKindOf(Property)&#xD;
-    and ts.formal.oclAsType(Property).isAttribute())))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Property-derived_union_is_derived" name="derived_union_is_derived" constrainedElement="Property">
-        <ownedComment xmi:id="Property-derived_union_is_derived-_ownedComment.0" annotatedElement="Property-derived_union_is_derived">
-          <body>A derived union is derived.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Property-derived_union_is_derived-_specification">
-          <language>OCL</language>
-          <body>isDerivedUnion implies isDerived</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Property-deployment_target" name="deployment_target" constrainedElement="Property">
-        <ownedComment xmi:id="Property-deployment_target-_ownedComment.0" annotatedElement="Property-deployment_target">
-          <body>A Property can be a DeploymentTarget if it is a kind of Node and functions as a part in the internal structure of an encompassing Node.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Property-deployment_target-_specification">
-          <language>OCL</language>
-          <body>deployment->notEmpty() implies owner.oclIsKindOf(Node) and Node.allInstances()->exists(n | n.part->exists(p | p = self))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Property-subsetted_property_names" name="subsetted_property_names" constrainedElement="Property">
-        <ownedComment xmi:id="Property-subsetted_property_names-_ownedComment.0" annotatedElement="Property-subsetted_property_names">
-          <body>A Property may not subset a Property with the same name.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Property-subsetted_property_names-_specification">
-          <language>OCL</language>
-          <body>subsettedProperty->forAll(sp | sp.name &lt;> name)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Property-type_of_opposite_end" name="type_of_opposite_end" constrainedElement="Property">
-        <ownedComment xmi:id="Property-type_of_opposite_end-_ownedComment.0" annotatedElement="Property-type_of_opposite_end">
-          <body>If a Property is a classifier-owned end of a binary Association, its owner must be the type of the opposite end.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Property-type_of_opposite_end-_specification">
-          <language>OCL</language>
-          <body>(opposite->notEmpty() and owningAssociation->isEmpty()) implies classifier = opposite.type</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Property-qualified_is_association_end" name="qualified_is_association_end" constrainedElement="Property">
-        <ownedComment xmi:id="Property-qualified_is_association_end-_ownedComment.0" annotatedElement="Property-qualified_is_association_end">
-          <body>All qualified Properties must be Association ends</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Property-qualified_is_association_end-_specification">
-          <language>OCL</language>
-          <body>qualifier->notEmpty() implies association->notEmpty()</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="Property-_generalization.0" general="ConnectableElement"/>
-      <generalization xmi:id="Property-_generalization.1" general="DeploymentTarget"/>
-      <generalization xmi:id="Property-_generalization.2" general="StructuralFeature"/>
-      <ownedAttribute xmi:id="Property-default" name="default" visibility="protected" isDerived="true">
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Property-default-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Property-aggregation" name="aggregation" type="AggregationKind">
-        <ownedComment xmi:id="Property-aggregation-_ownedComment.0" annotatedElement="Property-aggregation">
-          <body>Specifies the kind of aggregation that applies to the Property.</body>
-        </ownedComment>
-        <defaultValue xmi:type="uml:InstanceValue" xmi:id="Property-aggregation-_defaultValue" type="AggregationKind" instance="AggregationKind-none"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Property-association" name="association" type="Association" subsettedProperty="A_member_memberNamespace-memberNamespace" association="A_memberEnd_association">
-        <ownedComment xmi:id="Property-association-_ownedComment.0" annotatedElement="Property-association">
-          <body>The Association of which this Property is a member, if any.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Property-association-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Property-associationEnd" name="associationEnd" type="Property" subsettedProperty="Element-owner" association="A_qualifier_associationEnd">
-        <ownedComment xmi:id="Property-associationEnd-_ownedComment.0" annotatedElement="Property-associationEnd">
-          <body>Designates the optional association end that owns a qualifier attribute.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Property-associationEnd-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Property-class" name="class" type="Class" subsettedProperty="A_attribute_classifier-classifier A_ownedAttribute_structuredClassifier-structuredClassifier NamedElement-namespace Feature-featuringClassifier RedefinableElement-redefinitionContext" association="A_ownedAttribute_class">
-        <ownedComment xmi:id="Property-class-_ownedComment.0" annotatedElement="Property-class">
-          <body>The Class that owns this Property, if any.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Property-class-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Property-datatype" name="datatype" type="DataType" subsettedProperty="A_attribute_classifier-classifier NamedElement-namespace Feature-featuringClassifier RedefinableElement-redefinitionContext" association="A_ownedAttribute_datatype">
-        <ownedComment xmi:id="Property-datatype-_ownedComment.0" annotatedElement="Property-datatype">
-          <body>The DataType that owns this Property, if any.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Property-datatype-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Property-defaultValue" name="defaultValue" type="ValueSpecification" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_defaultValue_owningProperty">
-        <ownedComment xmi:id="Property-defaultValue-_ownedComment.0" annotatedElement="Property-defaultValue">
-          <body>A ValueSpecification that is evaluated to give a default value for the Property when an instance of the owning Classifier is instantiated.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Property-defaultValue-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Property-interface" name="interface" type="Interface" subsettedProperty="A_attribute_classifier-classifier NamedElement-namespace Feature-featuringClassifier RedefinableElement-redefinitionContext" association="A_ownedAttribute_interface">
-        <ownedComment xmi:id="Property-interface-_ownedComment.0" annotatedElement="Property-interface">
-          <body>The Interface that owns this Property, if any.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Property-interface-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Property-isComposite" name="isComposite" isDerived="true">
-        <ownedComment xmi:id="Property-isComposite-_ownedComment.0" annotatedElement="Property-isComposite">
-          <body>If isComposite is true, the object containing the attribute is a container for the object or value contained in the attribute. This is a derived value, indicating whether the aggregation of the Property is composite or not.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Property-isComposite-_defaultValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Property-isDerived" name="isDerived">
-        <ownedComment xmi:id="Property-isDerived-_ownedComment.0" annotatedElement="Property-isDerived">
-          <body>Specifies whether the Property is derived, i.e., whether its value or values can be computed from other information.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Property-isDerived-_defaultValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Property-isDerivedUnion" name="isDerivedUnion">
-        <ownedComment xmi:id="Property-isDerivedUnion-_ownedComment.0" annotatedElement="Property-isDerivedUnion">
-          <body>Specifies whether the property is derived as the union of all of the Properties that are constrained to subset it.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Property-isDerivedUnion-_defaultValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Property-isID" name="isID">
-        <ownedComment xmi:id="Property-isID-_ownedComment.0" annotatedElement="Property-isID">
-          <body>True indicates this property can be used to uniquely identify an instance of the containing Class.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Property-isID-_defaultValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Property-opposite" name="opposite" type="Property" isDerived="true" association="A_opposite_property">
-        <ownedComment xmi:id="Property-opposite-_ownedComment.0" annotatedElement="Property-opposite">
-          <body>In the case where the Property is one end of a binary association this gives the other end.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Property-opposite-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Property-owningAssociation" name="owningAssociation" type="Association" subsettedProperty="Feature-featuringClassifier NamedElement-namespace Property-association RedefinableElement-redefinitionContext" association="A_ownedEnd_owningAssociation">
-        <ownedComment xmi:id="Property-owningAssociation-_ownedComment.0" annotatedElement="Property-owningAssociation">
-          <body>The owning association of this property, if any.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Property-owningAssociation-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Property-qualifier" name="qualifier" type="Property" isOrdered="true" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_qualifier_associationEnd">
-        <ownedComment xmi:id="Property-qualifier-_ownedComment.0" annotatedElement="Property-qualifier">
-          <body>An optional list of ordered qualifier attributes for the end.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Property-qualifier-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Property-qualifier-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Property-redefinedProperty" name="redefinedProperty" type="Property" subsettedProperty="RedefinableElement-redefinedElement" association="A_redefinedProperty_property">
-        <ownedComment xmi:id="Property-redefinedProperty-_ownedComment.0" annotatedElement="Property-redefinedProperty">
-          <body>The properties that are redefined by this property, if any.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Property-redefinedProperty-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Property-redefinedProperty-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Property-subsettedProperty" name="subsettedProperty" type="Property" association="A_subsettedProperty_property">
-        <ownedComment xmi:id="Property-subsettedProperty-_ownedComment.0" annotatedElement="Property-subsettedProperty">
-          <body>The properties of which this Property is constrained to be a subset, if any.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Property-subsettedProperty-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Property-subsettedProperty-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="Property-getDefault" name="getDefault" isQuery="true">
-        <ownedComment xmi:id="Property-getDefault-_ownedComment.0" annotatedElement="Property-getDefault">
-          <body>Retrieves a string representation of the default value for this property.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Property-getDefault-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Property-getDefault-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Property-getDefault-result-_upperValue" value="1"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Property-getOtherEnd" name="getOtherEnd">
-        <ownedComment xmi:id="Property-getOtherEnd-_ownedComment.0" annotatedElement="Property-getOtherEnd">
-          <body>Retrieves the other end of the (binary) association in which this property is a member end.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Property-getOtherEnd-_ownedParameter.0" type="Property" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Property-getOtherEnd-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Property-getOtherEnd-_ownedParameter.0-_upperValue" value="1"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Property-isSetDefault" name="isSetDefault" visibility="protected" isQuery="true">
-        <ownedParameter xmi:id="Property-isSetDefault-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Property-setBooleanDefaultValue" name="setBooleanDefaultValue">
-        <ownedComment xmi:id="Property-setBooleanDefaultValue-_ownedComment.0" annotatedElement="Property-setBooleanDefaultValue">
-          <body>Sets the default value for this property to the specified Boolean value.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Property-setBooleanDefaultValue-value" name="value" effect="read">
-          <ownedComment xmi:id="Property-setBooleanDefaultValue-value-_ownedComment.0" annotatedElement="Property-setBooleanDefaultValue-value">
-            <body>The new default value.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Property-setDefault" name="setDefault">
-        <ownedComment xmi:id="Property-setDefault-_ownedComment.0" annotatedElement="Property-setDefault">
-          <body>Sets the default value for this property based on the specified string representation.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Property-setDefault-newDefault" name="newDefault" effect="read">
-          <ownedComment xmi:id="Property-setDefault-newDefault-_ownedComment.0" annotatedElement="Property-setDefault-newDefault">
-            <body>A string repesentation of the new default value.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Property-setIntegerDefaultValue" name="setIntegerDefaultValue">
-        <ownedComment xmi:id="Property-setIntegerDefaultValue-_ownedComment.0" annotatedElement="Property-setIntegerDefaultValue">
-          <body>Sets the default value for this property to the specified integer value.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Property-setIntegerDefaultValue-value" name="value" effect="read">
-          <ownedComment xmi:id="Property-setIntegerDefaultValue-value-_ownedComment.0" annotatedElement="Property-setIntegerDefaultValue-value">
-            <body>The new default value.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Property-setIsComposite" name="setIsComposite" visibility="protected">
-        <ownedParameter xmi:id="Property-setIsComposite-newIsComposite" name="newIsComposite" effect="read">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Property-setIsNavigable" name="setIsNavigable">
-        <ownedComment xmi:id="Property-setIsNavigable-_ownedComment.0" annotatedElement="Property-setIsNavigable">
-          <body>Sets the navigability of this property as indicated.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Property-setIsNavigable-isNavigable" name="isNavigable" effect="read">
-          <ownedComment xmi:id="Property-setIsNavigable-isNavigable-_ownedComment.0" annotatedElement="Property-setIsNavigable-isNavigable">
-            <body>The new navigability.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Property-setNullDefaultValue" name="setNullDefaultValue">
-        <ownedComment xmi:id="Property-setNullDefaultValue-_ownedComment.0" annotatedElement="Property-setNullDefaultValue">
-          <body>Sets the default value for this property to the null value.</body>
-        </ownedComment>
-      </ownedOperation>
-      <ownedOperation xmi:id="Property-setOpposite" name="setOpposite" visibility="protected">
-        <ownedParameter xmi:id="Property-setOpposite-newOpposite" name="newOpposite" visibility="protected" type="Property" effect="read"/>
-      </ownedOperation>
-      <ownedOperation xmi:id="Property-setRealDefaultValue" name="setRealDefaultValue">
-        <ownedComment xmi:id="Property-setRealDefaultValue-_ownedComment.0" annotatedElement="Property-setRealDefaultValue">
-          <body>Sets the default value for this property to the specified real value.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Property-setRealDefaultValue-value" name="value" effect="read">
-          <ownedComment xmi:id="Property-setRealDefaultValue-value-_ownedComment.0" annotatedElement="Property-setRealDefaultValue-value">
-            <body>The new default value.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Real"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Property-setStringDefaultValue" name="setStringDefaultValue">
-        <ownedComment xmi:id="Property-setStringDefaultValue-_ownedComment.0" annotatedElement="Property-setStringDefaultValue">
-          <body>Sets the default value for this property to the specified string value.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Property-setStringDefaultValue-value" name="value" effect="read">
-          <ownedComment xmi:id="Property-setStringDefaultValue-value-_ownedComment.0" annotatedElement="Property-setStringDefaultValue-value">
-            <body>The new default value.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Property-setUnlimitedNaturalDefaultValue" name="setUnlimitedNaturalDefaultValue">
-        <ownedComment xmi:id="Property-setUnlimitedNaturalDefaultValue-_ownedComment.0" annotatedElement="Property-setUnlimitedNaturalDefaultValue">
-          <body>Sets the default value for this property to the specified unlimited natural value.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Property-setUnlimitedNaturalDefaultValue-value" name="value" effect="read">
-          <ownedComment xmi:id="Property-setUnlimitedNaturalDefaultValue-value-_ownedComment.0" annotatedElement="Property-setUnlimitedNaturalDefaultValue-value">
-            <body>The new default value.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Property-unsetDefault" name="unsetDefault" visibility="protected"/>
-      <ownedOperation xmi:id="Property-isAttribute" name="isAttribute" bodyCondition="Property-isAttribute-spec" isQuery="true">
-        <ownedComment xmi:id="Property-isAttribute-_ownedComment.0" annotatedElement="Property-isAttribute">
-          <body>The query isAttribute() is true if the Property is defined as an attribute of some Classifier.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Property-isAttribute-spec" name="spec" constrainedElement="Property-isAttribute">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Property-isAttribute-spec-_specification">
-            <language>OCL</language>
-            <body>result = (not classifier->isEmpty())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Property-isAttribute-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Property-isCompatibleWith" name="isCompatibleWith" bodyCondition="Property-isCompatibleWith-spec" isQuery="true" redefinedOperation="ParameterableElement-isCompatibleWith">
-        <ownedComment xmi:id="Property-isCompatibleWith-_ownedComment.0" annotatedElement="Property-isCompatibleWith">
-          <body>The query isCompatibleWith() determines if this Property is compatible with the specified ParameterableElement. This Property is compatible with ParameterableElement p if the kind of this Property is thesame as or a subtype of the kind of p. Further, if p is a TypedElement, then the type of this Property must be conformant with the type of p.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Property-isCompatibleWith-spec" name="spec" constrainedElement="Property-isCompatibleWith">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Property-isCompatibleWith-spec-_specification">
-            <language>OCL</language>
-            <body>result = (self.oclIsKindOf(p.oclType()) and (p.oclIsKindOf(TypedElement) implies&#xD;
-self.type.conformsTo(p.oclAsType(TypedElement).type)))</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Property-isCompatibleWith-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Property-isCompatibleWith-p" name="p" type="ParameterableElement"/>
-      </ownedOperation>
-      <ownedOperation xmi:id="Property-isComposite.1" name="isComposite" bodyCondition="Property-isComposite.1-spec" isQuery="true">
-        <ownedComment xmi:id="Property-isComposite.1-_ownedComment.0" annotatedElement="Property-isComposite.1">
-          <body>The value of isComposite is true only if aggregation is composite.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Property-isComposite.1-spec" name="spec" constrainedElement="Property-isComposite.1 Property-isComposite">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Property-isComposite.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (aggregation = AggregationKind::composite)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Property-isComposite.1-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Property-isConsistentWith" name="isConsistentWith" bodyCondition="Property-isConsistentWith-spec" isQuery="true" precondition="Property-isConsistentWith-pre" redefinedOperation="RedefinableElement-isConsistentWith">
-        <ownedComment xmi:id="Property-isConsistentWith-_ownedComment.0" annotatedElement="Property-isConsistentWith">
-          <body>The query isConsistentWith() specifies, for any two Properties in a context in which redefinition is possible, whether redefinition would be logically consistent. A redefining Property is consistent with a redefined Property if the type of the redefining Property conforms to the type of the redefined Property, and the multiplicity of the redefining Property (if specified) is contained in the multiplicity of the redefined Property.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Property-isConsistentWith-pre" name="pre" constrainedElement="Property-isConsistentWith">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Property-isConsistentWith-pre-_specification">
-            <language>OCL</language>
-            <body>redefiningElement.isRedefinitionContextValid(self)</body>
-          </specification>
-        </ownedRule>
-        <ownedRule xmi:id="Property-isConsistentWith-spec" name="spec" constrainedElement="Property-isConsistentWith">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Property-isConsistentWith-spec-_specification">
-            <language>OCL</language>
-            <body>result = (redefiningElement.oclIsKindOf(Property) and 
-  let prop : Property = redefiningElement.oclAsType(Property) in 
-  (prop.type.conformsTo(self.type) and 
-  ((prop.lowerBound()->notEmpty() and self.lowerBound()->notEmpty()) implies prop.lowerBound() >= self.lowerBound()) and 
-  ((prop.upperBound()->notEmpty() and self.upperBound()->notEmpty()) implies prop.lowerBound() &lt;= self.lowerBound()) and 
-  (self.isComposite implies prop.isComposite)))</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Property-isConsistentWith-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Property-isConsistentWith-redefiningElement" name="redefiningElement" type="RedefinableElement"/>
-      </ownedOperation>
-      <ownedOperation xmi:id="Property-isNavigable" name="isNavigable" bodyCondition="Property-isNavigable-spec" isQuery="true">
-        <ownedComment xmi:id="Property-isNavigable-_ownedComment.0" annotatedElement="Property-isNavigable">
-          <body>The query isNavigable() indicates whether it is possible to navigate across the property.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Property-isNavigable-spec" name="spec" constrainedElement="Property-isNavigable">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Property-isNavigable-spec-_specification">
-            <language>OCL</language>
-            <body>result = (not classifier->isEmpty() or association.navigableOwnedEnd->includes(self))</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Property-isNavigable-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Property-opposite.1" name="opposite" visibility="protected" bodyCondition="Property-opposite.1-spec" isQuery="true">
-        <ownedComment xmi:id="Property-opposite.1-_ownedComment.0" annotatedElement="Property-opposite.1">
-          <body>If this property is a memberEnd of a binary association, then opposite gives the other end.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Property-opposite.1-spec" name="spec" constrainedElement="Property-opposite.1 Property-opposite">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Property-opposite.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if association &lt;> null and association.memberEnd->size() = 2
-then
-    association.memberEnd->any(e | e &lt;> self)
-else
-    null
-endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Property-opposite.1-result" name="result" type="Property" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Property-opposite.1-result-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Property-subsettingContext" name="subsettingContext" bodyCondition="Property-subsettingContext-spec" isQuery="true">
-        <ownedComment xmi:id="Property-subsettingContext-_ownedComment.0" annotatedElement="Property-subsettingContext">
-          <body>The query subsettingContext() gives the context for subsetting a Property. It consists, in the case of an attribute, of the corresponding Classifier, and in the case of an association end, all of the Classifiers at the other ends.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Property-subsettingContext-spec" name="spec" constrainedElement="Property-subsettingContext">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Property-subsettingContext-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if association &lt;> null
-then association.memberEnd->excluding(self)->collect(type)->asSet()
-else 
-  if classifier&lt;>null
-  then classifier->asSet()
-  else Set{} 
-  endif
-endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Property-subsettingContext-result" name="result" type="Type" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Property-subsettingContext-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Property-subsettingContext-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="RedefinableElement" name="RedefinableElement" isAbstract="true">
-      <ownedComment xmi:id="RedefinableElement-_ownedComment.0" annotatedElement="RedefinableElement">
-        <body>A RedefinableElement is an element that, when defined in the context of a Classifier, can be redefined more specifically or differently in the context of another Classifier that specializes (directly or indirectly) the context Classifier.</body>
-      </ownedComment>
-      <ownedRule xmi:id="RedefinableElement-redefinition_consistent" name="redefinition_consistent" constrainedElement="RedefinableElement">
-        <ownedComment xmi:id="RedefinableElement-redefinition_consistent-_ownedComment.0" annotatedElement="RedefinableElement-redefinition_consistent">
-          <body>A redefining element must be consistent with each redefined element.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="RedefinableElement-redefinition_consistent-_specification">
-          <language>OCL</language>
-          <body>redefinedElement->forAll(re | re.isConsistentWith(self))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="RedefinableElement-non_leaf_redefinition" name="non_leaf_redefinition" constrainedElement="RedefinableElement">
-        <ownedComment xmi:id="RedefinableElement-non_leaf_redefinition-_ownedComment.0" annotatedElement="RedefinableElement-non_leaf_redefinition">
-          <body>A RedefinableElement can only redefine non-leaf RedefinableElements.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="RedefinableElement-non_leaf_redefinition-_specification">
-          <language>OCL</language>
-          <body>redefinedElement->forAll(re | not re.isLeaf)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="RedefinableElement-redefinition_context_valid" name="redefinition_context_valid" constrainedElement="RedefinableElement">
-        <ownedComment xmi:id="RedefinableElement-redefinition_context_valid-_ownedComment.0" annotatedElement="RedefinableElement-redefinition_context_valid">
-          <body>At least one of the redefinition contexts of the redefining element must be a specialization of at least one of the redefinition contexts for each redefined element.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="RedefinableElement-redefinition_context_valid-_specification">
-          <language>OCL</language>
-          <body>redefinedElement->forAll(re | self.isRedefinitionContextValid(re))</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="RedefinableElement-_generalization.0" general="NamedElement"/>
-      <ownedAttribute xmi:id="RedefinableElement-isLeaf" name="isLeaf">
-        <ownedComment xmi:id="RedefinableElement-isLeaf-_ownedComment.0" annotatedElement="RedefinableElement-isLeaf">
-          <body>Indicates whether it is possible to further redefine a RedefinableElement. If the value is true, then it is not possible to further redefine the RedefinableElement.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="RedefinableElement-isLeaf-_defaultValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="RedefinableElement-redefinedElement" name="redefinedElement" type="RedefinableElement" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="A_redefinedElement_redefinableElement">
-        <ownedComment xmi:id="RedefinableElement-redefinedElement-_ownedComment.0" annotatedElement="RedefinableElement-redefinedElement">
-          <body>The RedefinableElement that is being redefined by this element.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="RedefinableElement-redefinedElement-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="RedefinableElement-redefinedElement-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="RedefinableElement-redefinitionContext" name="redefinitionContext" type="Classifier" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="A_redefinitionContext_redefinableElement">
-        <ownedComment xmi:id="RedefinableElement-redefinitionContext-_ownedComment.0" annotatedElement="RedefinableElement-redefinitionContext">
-          <body>The contexts that this element may be redefined from.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="RedefinableElement-redefinitionContext-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="RedefinableElement-redefinitionContext-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="RedefinableElement-isConsistentWith" name="isConsistentWith" bodyCondition="RedefinableElement-isConsistentWith-spec" isQuery="true" precondition="RedefinableElement-isConsistentWith-pre">
-        <ownedComment xmi:id="RedefinableElement-isConsistentWith-_ownedComment.0" annotatedElement="RedefinableElement-isConsistentWith">
-          <body>The query isConsistentWith() specifies, for any two RedefinableElements in a context in which redefinition is possible, whether redefinition would be logically consistent. By default, this is false; this operation must be overridden for subclasses of RedefinableElement to define the consistency conditions.</body>
-        </ownedComment>
-        <ownedRule xmi:id="RedefinableElement-isConsistentWith-spec" name="spec" constrainedElement="RedefinableElement-isConsistentWith">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="RedefinableElement-isConsistentWith-spec-_specification">
-            <language>OCL</language>
-            <body>result = (false)</body>
-          </specification>
-        </ownedRule>
-        <ownedRule xmi:id="RedefinableElement-isConsistentWith-pre" name="pre" constrainedElement="RedefinableElement-isConsistentWith">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="RedefinableElement-isConsistentWith-pre-_specification">
-            <language>OCL</language>
-            <body>redefiningElement.isRedefinitionContextValid(self)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="RedefinableElement-isConsistentWith-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="RedefinableElement-isConsistentWith-redefiningElement" name="redefiningElement" type="RedefinableElement"/>
-      </ownedOperation>
-      <ownedOperation xmi:id="RedefinableElement-isRedefinitionContextValid" name="isRedefinitionContextValid" bodyCondition="RedefinableElement-isRedefinitionContextValid-spec" isQuery="true">
-        <ownedComment xmi:id="RedefinableElement-isRedefinitionContextValid-_ownedComment.0" annotatedElement="RedefinableElement-isRedefinitionContextValid">
-          <body>The query isRedefinitionContextValid() specifies whether the redefinition contexts of this RedefinableElement are properly related to the redefinition contexts of the specified RedefinableElement to allow this element to redefine the other. By default at least one of the redefinition contexts of this element must be a specialization of at least one of the redefinition contexts of the specified element.</body>
-        </ownedComment>
-        <ownedRule xmi:id="RedefinableElement-isRedefinitionContextValid-spec" name="spec" constrainedElement="RedefinableElement-isRedefinitionContextValid">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="RedefinableElement-isRedefinitionContextValid-spec-_specification">
-            <language>OCL</language>
-            <body>result = (redefinitionContext->exists(c | c.allParents()->includesAll(redefinedElement.redefinitionContext)))</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="RedefinableElement-isRedefinitionContextValid-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="RedefinableElement-isRedefinitionContextValid-redefinedElement" name="redefinedElement" type="RedefinableElement"/>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="RedefinableTemplateSignature" name="RedefinableTemplateSignature">
-      <ownedComment xmi:id="RedefinableTemplateSignature-_ownedComment.0" annotatedElement="RedefinableTemplateSignature">
-        <body>A RedefinableTemplateSignature supports the addition of formal template parameters in a specialization of a template classifier.</body>
-      </ownedComment>
-      <ownedRule xmi:id="RedefinableTemplateSignature-redefines_parents" name="redefines_parents" constrainedElement="RedefinableTemplateSignature">
-        <ownedComment xmi:id="RedefinableTemplateSignature-redefines_parents-_ownedComment.0" annotatedElement="RedefinableTemplateSignature-redefines_parents">
-          <body>If any of the parent Classifiers are a template, then the extendedSignature must include the signature of that Classifier.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="RedefinableTemplateSignature-redefines_parents-_specification">
-          <language>OCL</language>
-          <body>classifier.allParents()->forAll(c | c.ownedTemplateSignature->notEmpty() implies self->closure(extendedSignature)->includes(c.ownedTemplateSignature))</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="RedefinableTemplateSignature-_generalization.0" general="RedefinableElement"/>
-      <generalization xmi:id="RedefinableTemplateSignature-_generalization.1" general="TemplateSignature"/>
-      <ownedAttribute xmi:id="RedefinableTemplateSignature-classifier" name="classifier" type="Classifier" redefinedProperty="TemplateSignature-template" subsettedProperty="RedefinableElement-redefinitionContext" association="A_ownedTemplateSignature_classifier">
-        <ownedComment xmi:id="RedefinableTemplateSignature-classifier-_ownedComment.0" annotatedElement="RedefinableTemplateSignature-classifier">
-          <body>The Classifier that owns this RedefinableTemplateSignature.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="RedefinableTemplateSignature-extendedSignature" name="extendedSignature" type="RedefinableTemplateSignature" subsettedProperty="RedefinableElement-redefinedElement" association="A_extendedSignature_redefinableTemplateSignature">
-        <ownedComment xmi:id="RedefinableTemplateSignature-extendedSignature-_ownedComment.0" annotatedElement="RedefinableTemplateSignature-extendedSignature">
-          <body>The signatures extended by this RedefinableTemplateSignature.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="RedefinableTemplateSignature-extendedSignature-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="RedefinableTemplateSignature-extendedSignature-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="RedefinableTemplateSignature-inheritedParameter" name="inheritedParameter" type="TemplateParameter" isReadOnly="true" isDerived="true" subsettedProperty="TemplateSignature-parameter" association="A_inheritedParameter_redefinableTemplateSignature">
-        <ownedComment xmi:id="RedefinableTemplateSignature-inheritedParameter-_ownedComment.0" annotatedElement="RedefinableTemplateSignature-inheritedParameter">
-          <body>The formal template parameters of the extended signatures.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="RedefinableTemplateSignature-inheritedParameter-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="RedefinableTemplateSignature-inheritedParameter-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="RedefinableTemplateSignature-inheritedParameter.1" name="inheritedParameter" visibility="protected" bodyCondition="RedefinableTemplateSignature-inheritedParameter.1-spec" isQuery="true">
-        <ownedComment xmi:id="RedefinableTemplateSignature-inheritedParameter.1-_ownedComment.0" annotatedElement="RedefinableTemplateSignature-inheritedParameter.1">
-          <body>Derivation for RedefinableTemplateSignature::/inheritedParameter</body>
-        </ownedComment>
-        <ownedRule xmi:id="RedefinableTemplateSignature-inheritedParameter.1-spec" name="spec" constrainedElement="RedefinableTemplateSignature-inheritedParameter.1 RedefinableTemplateSignature-inheritedParameter">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="RedefinableTemplateSignature-inheritedParameter.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if extendedSignature->isEmpty() then Set{} else extendedSignature.parameter->asSet() endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="RedefinableTemplateSignature-inheritedParameter.1-result" name="result" type="TemplateParameter" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="RedefinableTemplateSignature-inheritedParameter.1-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="RedefinableTemplateSignature-inheritedParameter.1-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="RedefinableTemplateSignature-isConsistentWith" name="isConsistentWith" bodyCondition="RedefinableTemplateSignature-isConsistentWith-spec" isQuery="true" precondition="RedefinableTemplateSignature-isConsistentWith-pre" redefinedOperation="RedefinableElement-isConsistentWith">
-        <ownedComment xmi:id="RedefinableTemplateSignature-isConsistentWith-_ownedComment.0" annotatedElement="RedefinableTemplateSignature-isConsistentWith">
-          <body>The query isConsistentWith() specifies, for any two RedefinableTemplateSignatures in a context in which redefinition is possible, whether redefinition would be logically consistent. A redefining template signature is always consistent with a redefined template signature, as redefinition only adds new formal parameters.</body>
-        </ownedComment>
-        <ownedRule xmi:id="RedefinableTemplateSignature-isConsistentWith-spec" name="spec" constrainedElement="RedefinableTemplateSignature-isConsistentWith">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="RedefinableTemplateSignature-isConsistentWith-spec-spec" name="spec">
-            <language>OCL</language>
-            <body>result = (redefiningElement.oclIsKindOf(RedefinableTemplateSignature))</body>
-          </specification>
-        </ownedRule>
-        <ownedRule xmi:id="RedefinableTemplateSignature-isConsistentWith-pre" name="pre" constrainedElement="RedefinableTemplateSignature-isConsistentWith">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="RedefinableTemplateSignature-isConsistentWith-pre-_specification">
-            <language>OCL</language>
-            <body>redefiningElement.isRedefinitionContextValid(self)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="RedefinableTemplateSignature-isConsistentWith-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="RedefinableTemplateSignature-isConsistentWith-redefiningElement" name="redefiningElement" type="RedefinableElement"/>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Slot" name="Slot">
-      <ownedComment xmi:id="Slot-_ownedComment.0" annotatedElement="Slot">
-        <body>A Slot designates that an entity modeled by an InstanceSpecification has a value or values for a specific StructuralFeature.</body>
-      </ownedComment>
-      <generalization xmi:id="Slot-_generalization.0" general="Element"/>
-      <ownedAttribute xmi:id="Slot-definingFeature" name="definingFeature" type="StructuralFeature" association="A_definingFeature_slot">
-        <ownedComment xmi:id="Slot-definingFeature-_ownedComment.0" annotatedElement="Slot-definingFeature">
-          <body>The StructuralFeature that specifies the values that may be held by the Slot.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Slot-owningInstance" name="owningInstance" type="InstanceSpecification" subsettedProperty="Element-owner" association="A_slot_owningInstance">
-        <ownedComment xmi:id="Slot-owningInstance-_ownedComment.0" annotatedElement="Slot-owningInstance">
-          <body>The InstanceSpecification that owns this Slot.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Slot-value" name="value" type="ValueSpecification" isOrdered="true" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_value_owningSlot">
-        <ownedComment xmi:id="Slot-value-_ownedComment.0" annotatedElement="Slot-value">
-          <body>The value or values held by the Slot.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Slot-value-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Slot-value-_upperValue" value="*"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="StructuralFeature" name="StructuralFeature" isAbstract="true">
-      <ownedComment xmi:id="StructuralFeature-_ownedComment.0" annotatedElement="StructuralFeature">
-        <body>A StructuralFeature is a typed feature of a Classifier that specifies the structure of instances of the Classifier.</body>
-      </ownedComment>
-      <generalization xmi:id="StructuralFeature-_generalization.0" general="MultiplicityElement"/>
-      <generalization xmi:id="StructuralFeature-_generalization.1" general="TypedElement"/>
-      <generalization xmi:id="StructuralFeature-_generalization.2" general="Feature"/>
-      <ownedAttribute xmi:id="StructuralFeature-isReadOnly" name="isReadOnly">
-        <ownedComment xmi:id="StructuralFeature-isReadOnly-_ownedComment.0" annotatedElement="StructuralFeature-isReadOnly">
-          <body>If isReadOnly is true, the StructuralFeature may not be written to after initialization.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="StructuralFeature-isReadOnly-_defaultValue"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Enumeration" xmi:id="AggregationKind" name="AggregationKind" visibility="private">
-      <ownedComment xmi:id="AggregationKind-_ownedComment.0" annotatedElement="AggregationKind">
-        <body>AggregationKind is an Enumeration for specifying the kind of aggregation of a Property.</body>
-      </ownedComment>
-      <ownedLiteral xmi:id="AggregationKind-none" name="none">
-        <ownedComment xmi:id="AggregationKind-none-_ownedComment.0" annotatedElement="AggregationKind-none">
-          <body>Indicates that the Property has no aggregation.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="AggregationKind-shared" name="shared">
-        <ownedComment xmi:id="AggregationKind-shared-_ownedComment.0" annotatedElement="AggregationKind-shared">
-          <body>Indicates that the Property has shared aggregation.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="AggregationKind-composite" name="composite">
-        <ownedComment xmi:id="AggregationKind-composite-_ownedComment.0" annotatedElement="AggregationKind-composite">
-          <body>Indicates that the Property is aggregated compositely, i.e., the composite object has responsibility for the existence and storage of the composed objects (parts).</body>
-        </ownedComment>
-      </ownedLiteral>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Enumeration" xmi:id="CallConcurrencyKind" name="CallConcurrencyKind">
-      <ownedComment xmi:id="CallConcurrencyKind-_ownedComment.0" annotatedElement="CallConcurrencyKind">
-        <body>CallConcurrencyKind is an Enumeration used to specify the semantics of concurrent calls to a BehavioralFeature.</body>
-      </ownedComment>
-      <ownedLiteral xmi:id="CallConcurrencyKind-sequential" name="sequential">
-        <ownedComment xmi:id="CallConcurrencyKind-sequential-_ownedComment.0" annotatedElement="CallConcurrencyKind-sequential">
-          <body>No concurrency management mechanism is associated with the BehavioralFeature and, therefore, concurrency conflicts may occur. Instances that invoke a BehavioralFeature need to coordinate so that only one invocation to a target on any BehavioralFeature occurs at once.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="CallConcurrencyKind-guarded" name="guarded">
-        <ownedComment xmi:id="CallConcurrencyKind-guarded-_ownedComment.0" annotatedElement="CallConcurrencyKind-guarded">
-          <body>Multiple invocations of a BehavioralFeature that overlap in time may occur to one instance, but only one is allowed to commence. The others are blocked until the performance of the currently executing BehavioralFeature is complete. It is the responsibility of the system designer to ensure that deadlocks do not occur due to simultaneous blocking.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="CallConcurrencyKind-concurrent" name="concurrent">
-        <ownedComment xmi:id="CallConcurrencyKind-concurrent-_ownedComment.0" annotatedElement="CallConcurrencyKind-concurrent">
-          <body>Multiple invocations of a BehavioralFeature that overlap in time may occur to one instance and all of them may proceed concurrently.</body>
-        </ownedComment>
-      </ownedLiteral>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Enumeration" xmi:id="ParameterDirectionKind" name="ParameterDirectionKind">
-      <ownedComment xmi:id="ParameterDirectionKind-_ownedComment.0" annotatedElement="ParameterDirectionKind">
-        <body>ParameterDirectionKind is an Enumeration that defines literals used to specify direction of parameters.</body>
-      </ownedComment>
-      <ownedLiteral xmi:id="ParameterDirectionKind-in" name="in">
-        <ownedComment xmi:id="ParameterDirectionKind-in-_ownedComment.0" annotatedElement="ParameterDirectionKind-in">
-          <body>Indicates that Parameter values are passed in by the caller.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="ParameterDirectionKind-inout" name="inout">
-        <ownedComment xmi:id="ParameterDirectionKind-inout-_ownedComment.0" annotatedElement="ParameterDirectionKind-inout">
-          <body>Indicates that Parameter values are passed in by the caller and (possibly different) values passed out to the caller.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="ParameterDirectionKind-out" name="out">
-        <ownedComment xmi:id="ParameterDirectionKind-out-_ownedComment.0" annotatedElement="ParameterDirectionKind-out">
-          <body>Indicates that Parameter values are passed out to the caller.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="ParameterDirectionKind-return" name="return">
-        <ownedComment xmi:id="ParameterDirectionKind-return-_ownedComment.0" annotatedElement="ParameterDirectionKind-return">
-          <body>Indicates that Parameter values are passed as return values back to the caller.</body>
-        </ownedComment>
-      </ownedLiteral>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Enumeration" xmi:id="ParameterEffectKind" name="ParameterEffectKind" visibility="private">
-      <ownedComment xmi:id="ParameterEffectKind-_ownedComment.0" annotatedElement="ParameterEffectKind">
-        <body>ParameterEffectKind is an Enumeration that indicates the effect of a Behavior on values passed in or out of its parameters.</body>
-      </ownedComment>
-      <ownedLiteral xmi:id="ParameterEffectKind-create" name="create">
-        <ownedComment xmi:id="ParameterEffectKind-create-_ownedComment.0" annotatedElement="ParameterEffectKind-create">
-          <body>Indicates that the behavior creates values.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="ParameterEffectKind-read" name="read">
-        <ownedComment xmi:id="ParameterEffectKind-read-_ownedComment.0" annotatedElement="ParameterEffectKind-read">
-          <body>Indicates objects that are values of the parameter have values of their properties, or links in which they participate, or their classifiers retrieved during executions of the behavior.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="ParameterEffectKind-update" name="update">
-        <ownedComment xmi:id="ParameterEffectKind-update-_ownedComment.0" annotatedElement="ParameterEffectKind-update">
-          <body>Indicates objects that are values of the parameter have values of their properties, or links in which they participate, or their classification changed during executions of the behavior.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="ParameterEffectKind-delete" name="delete">
-        <ownedComment xmi:id="ParameterEffectKind-delete-_ownedComment.0" annotatedElement="ParameterEffectKind-delete">
-          <body>Indicates objects that are values of the parameter do not exist after executions of the behavior are finished.</body>
-        </ownedComment>
-      </ownedLiteral>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_definingFeature_slot" name="A_definingFeature_slot" visibility="private" memberEnd="Slot-definingFeature A_definingFeature_slot-slot">
-      <ownedEnd xmi:id="A_definingFeature_slot-slot" name="slot" type="Slot" association="A_definingFeature_slot">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_definingFeature_slot-slot-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_definingFeature_slot-slot-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_value_owningSlot" name="A_value_owningSlot" visibility="private" memberEnd="Slot-value A_value_owningSlot-owningSlot">
-      <ownedEnd xmi:id="A_value_owningSlot-owningSlot" name="owningSlot" type="Slot" subsettedProperty="Element-owner" association="A_value_owningSlot">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_value_owningSlot-owningSlot-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_extendedSignature_redefinableTemplateSignature" name="A_extendedSignature_redefinableTemplateSignature" visibility="private" memberEnd="RedefinableTemplateSignature-extendedSignature A_extendedSignature_redefinableTemplateSignature-redefinableTemplateSignature">
-      <ownedEnd xmi:id="A_extendedSignature_redefinableTemplateSignature-redefinableTemplateSignature" name="redefinableTemplateSignature" type="RedefinableTemplateSignature" subsettedProperty="A_redefinedElement_redefinableElement-redefinableElement" association="A_extendedSignature_redefinableTemplateSignature">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_extendedSignature_redefinableTemplateSignature-redefinableTemplateSignature-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_extendedSignature_redefinableTemplateSignature-redefinableTemplateSignature-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_inheritedParameter_redefinableTemplateSignature" name="A_inheritedParameter_redefinableTemplateSignature" visibility="private" isDerived="true" memberEnd="RedefinableTemplateSignature-inheritedParameter A_inheritedParameter_redefinableTemplateSignature-redefinableTemplateSignature">
-      <ownedEnd xmi:id="A_inheritedParameter_redefinableTemplateSignature-redefinableTemplateSignature" name="redefinableTemplateSignature" type="RedefinableTemplateSignature" subsettedProperty="A_parameter_templateSignature-templateSignature" association="A_inheritedParameter_redefinableTemplateSignature">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_inheritedParameter_redefinableTemplateSignature-redefinableTemplateSignature-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_inheritedParameter_redefinableTemplateSignature-redefinableTemplateSignature-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_redefinitionContext_redefinableElement" name="A_redefinitionContext_redefinableElement" visibility="private" isDerived="true" memberEnd="RedefinableElement-redefinitionContext A_redefinitionContext_redefinableElement-redefinableElement">
-      <ownedEnd xmi:id="A_redefinitionContext_redefinableElement-redefinableElement" name="redefinableElement" type="RedefinableElement" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="A_redefinitionContext_redefinableElement">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_redefinitionContext_redefinableElement-redefinableElement-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_redefinitionContext_redefinableElement-redefinableElement-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_redefinedElement_redefinableElement" name="A_redefinedElement_redefinableElement" visibility="private" isDerived="true" memberEnd="RedefinableElement-redefinedElement A_redefinedElement_redefinableElement-redefinableElement">
-      <ownedEnd xmi:id="A_redefinedElement_redefinableElement-redefinableElement" name="redefinableElement" type="RedefinableElement" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="A_redefinedElement_redefinableElement">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_redefinedElement_redefinableElement-redefinableElement-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_redefinedElement_redefinableElement-redefinableElement-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_qualifier_associationEnd" name="A_qualifier_associationEnd" visibility="private" memberEnd="Property-qualifier Property-associationEnd"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_redefinedProperty_property" name="A_redefinedProperty_property" visibility="private" memberEnd="Property-redefinedProperty A_redefinedProperty_property-property">
-      <ownedEnd xmi:id="A_redefinedProperty_property-property" name="property" type="Property" subsettedProperty="A_redefinedElement_redefinableElement-redefinableElement" association="A_redefinedProperty_property">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_redefinedProperty_property-property-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_redefinedProperty_property-property-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_defaultValue_owningProperty" name="A_defaultValue_owningProperty" visibility="private" memberEnd="Property-defaultValue A_defaultValue_owningProperty-owningProperty">
-      <ownedEnd xmi:id="A_defaultValue_owningProperty-owningProperty" name="owningProperty" type="Property" subsettedProperty="Element-owner" association="A_defaultValue_owningProperty">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_defaultValue_owningProperty-owningProperty-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_opposite_property" name="A_opposite_property" visibility="private" isDerived="true" memberEnd="Property-opposite A_opposite_property-property">
-      <ownedEnd xmi:id="A_opposite_property-property" name="property" type="Property" association="A_opposite_property">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_opposite_property-property-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_subsettedProperty_property" name="A_subsettedProperty_property" visibility="private" memberEnd="Property-subsettedProperty A_subsettedProperty_property-property">
-      <ownedEnd xmi:id="A_subsettedProperty_property-property" name="property" type="Property" association="A_subsettedProperty_property">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_subsettedProperty_property-property-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_subsettedProperty_property-property-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_condition_parameterSet" name="A_condition_parameterSet" visibility="private" memberEnd="ParameterSet-condition A_condition_parameterSet-parameterSet">
-      <ownedEnd xmi:id="A_condition_parameterSet-parameterSet" name="parameterSet" type="ParameterSet" subsettedProperty="Element-owner" association="A_condition_parameterSet">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_condition_parameterSet-parameterSet-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_parameterSet_parameter" name="A_parameterSet_parameter" visibility="private" memberEnd="Parameter-parameterSet ParameterSet-parameter"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_defaultValue_owningParameter" name="A_defaultValue_owningParameter" visibility="private" memberEnd="Parameter-defaultValue A_defaultValue_owningParameter-owningParameter">
-      <ownedEnd xmi:id="A_defaultValue_owningParameter-owningParameter" name="owningParameter" type="Parameter" subsettedProperty="Element-owner" association="A_defaultValue_owningParameter">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_defaultValue_owningParameter-owningParameter-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_type_operation" name="A_type_operation" visibility="private" isDerived="true" memberEnd="Operation-type A_type_operation-operation">
-      <ownedEnd xmi:id="A_type_operation-operation" name="operation" type="Operation" association="A_type_operation">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_type_operation-operation-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_type_operation-operation-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_operation_templateParameter_parameteredElement" name="A_operation_templateParameter_parameteredElement" visibility="private" memberEnd="Operation-templateParameter OperationTemplateParameter-parameteredElement"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_bodyCondition_bodyContext" name="A_bodyCondition_bodyContext" visibility="private" memberEnd="Operation-bodyCondition A_bodyCondition_bodyContext-bodyContext">
-      <ownedEnd xmi:id="A_bodyCondition_bodyContext-bodyContext" name="bodyContext" type="Operation" subsettedProperty="Constraint-context" association="A_bodyCondition_bodyContext">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_bodyCondition_bodyContext-bodyContext-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_postcondition_postContext" name="A_postcondition_postContext" visibility="private" memberEnd="Operation-postcondition A_postcondition_postContext-postContext">
-      <ownedEnd xmi:id="A_postcondition_postContext-postContext" name="postContext" type="Operation" subsettedProperty="Constraint-context" association="A_postcondition_postContext">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_postcondition_postContext-postContext-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_redefinedOperation_operation" name="A_redefinedOperation_operation" visibility="private" memberEnd="Operation-redefinedOperation A_redefinedOperation_operation-operation">
-      <ownedEnd xmi:id="A_redefinedOperation_operation-operation" name="operation" type="Operation" subsettedProperty="A_redefinedElement_redefinableElement-redefinableElement" association="A_redefinedOperation_operation">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_redefinedOperation_operation-operation-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_redefinedOperation_operation-operation-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_raisedException_operation" name="A_raisedException_operation" visibility="private" memberEnd="Operation-raisedException A_raisedException_operation-operation">
-      <ownedEnd xmi:id="A_raisedException_operation-operation" name="operation" type="Operation" subsettedProperty="A_raisedException_behavioralFeature-behavioralFeature" association="A_raisedException_operation">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_raisedException_operation-operation-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_raisedException_operation-operation-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_precondition_preContext" name="A_precondition_preContext" visibility="private" memberEnd="Operation-precondition A_precondition_preContext-preContext">
-      <ownedEnd xmi:id="A_precondition_preContext-preContext" name="preContext" type="Operation" subsettedProperty="Constraint-context" association="A_precondition_preContext">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_precondition_preContext-preContext-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedParameter_operation" name="A_ownedParameter_operation" visibility="private" memberEnd="Operation-ownedParameter Parameter-operation"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_instance_instanceValue" name="A_instance_instanceValue" visibility="private" memberEnd="InstanceValue-instance A_instance_instanceValue-instanceValue">
-      <ownedEnd xmi:id="A_instance_instanceValue-instanceValue" name="instanceValue" type="InstanceValue" association="A_instance_instanceValue">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_instance_instanceValue-instanceValue-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_instance_instanceValue-instanceValue-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_classifier_instanceSpecification" name="A_classifier_instanceSpecification" visibility="private" memberEnd="InstanceSpecification-classifier A_classifier_instanceSpecification-instanceSpecification">
-      <ownedEnd xmi:id="A_classifier_instanceSpecification-instanceSpecification" name="instanceSpecification" type="InstanceSpecification" association="A_classifier_instanceSpecification">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_classifier_instanceSpecification-instanceSpecification-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_classifier_instanceSpecification-instanceSpecification-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_slot_owningInstance" name="A_slot_owningInstance" visibility="private" memberEnd="InstanceSpecification-slot Slot-owningInstance"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_specification_owningInstanceSpec" name="A_specification_owningInstanceSpec" visibility="private" memberEnd="InstanceSpecification-specification A_specification_owningInstanceSpec-owningInstanceSpec">
-      <ownedEnd xmi:id="A_specification_owningInstanceSpec-owningInstanceSpec" name="owningInstanceSpec" type="InstanceSpecification" subsettedProperty="Element-owner" association="A_specification_owningInstanceSpec">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_specification_owningInstanceSpec-owningInstanceSpec-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_generalizationSet_generalization" name="A_generalizationSet_generalization" visibility="private" memberEnd="Generalization-generalizationSet GeneralizationSet-generalization"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_general_generalization" name="A_general_generalization" visibility="private" memberEnd="Generalization-general A_general_generalization-generalization">
-      <ownedEnd xmi:id="A_general_generalization-generalization" name="generalization" type="Generalization" subsettedProperty="A_target_directedRelationship-directedRelationship" association="A_general_generalization">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_general_generalization-generalization-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_general_generalization-generalization-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_constrainingClassifier_classifierTemplateParameter" name="A_constrainingClassifier_classifierTemplateParameter" visibility="private" memberEnd="ClassifierTemplateParameter-constrainingClassifier A_constrainingClassifier_classifierTemplateParameter-classifierTemplateParameter">
-      <ownedEnd xmi:id="A_constrainingClassifier_classifierTemplateParameter-classifierTemplateParameter" name="classifierTemplateParameter" type="ClassifierTemplateParameter" association="A_constrainingClassifier_classifierTemplateParameter">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_constrainingClassifier_classifierTemplateParameter-classifierTemplateParameter-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_constrainingClassifier_classifierTemplateParameter-classifierTemplateParameter-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_classifier_templateParameter_parameteredElement" name="A_classifier_templateParameter_parameteredElement" visibility="private" memberEnd="Classifier-templateParameter ClassifierTemplateParameter-parameteredElement"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_powertypeExtent_powertype" name="A_powertypeExtent_powertype" visibility="private" memberEnd="Classifier-powertypeExtent GeneralizationSet-powertype"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_generalization_specific" name="A_generalization_specific" visibility="private" memberEnd="Classifier-generalization Generalization-specific"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_general_classifier" name="A_general_classifier" visibility="private" isDerived="true" memberEnd="Classifier-general A_general_classifier-classifier">
-      <ownedEnd xmi:id="A_general_classifier-classifier" name="classifier" type="Classifier" association="A_general_classifier">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_general_classifier-classifier-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_general_classifier-classifier-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_feature_featuringClassifier" name="A_feature_featuringClassifier" visibility="private" isDerived="true" memberEnd="Classifier-feature Feature-featuringClassifier"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_substitution_substitutingClassifier" name="A_substitution_substitutingClassifier" visibility="private" memberEnd="Classifier-substitution Substitution-substitutingClassifier"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_representation_classifier" name="A_representation_classifier" visibility="private" memberEnd="Classifier-representation A_representation_classifier-classifier">
-      <generalization xmi:id="A_representation_classifier-_generalization.0" general="A_collaborationUse_classifier"/>
-      <ownedEnd xmi:id="A_representation_classifier-classifier" name="classifier" type="Classifier" redefinedProperty="A_collaborationUse_classifier-classifier" association="A_representation_classifier">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_representation_classifier-classifier-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedTemplateSignature_classifier" name="A_ownedTemplateSignature_classifier" visibility="private" memberEnd="Classifier-ownedTemplateSignature RedefinableTemplateSignature-classifier"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_inheritedMember_inheritingClassifier" name="A_inheritedMember_inheritingClassifier" visibility="private" isDerived="true" memberEnd="Classifier-inheritedMember A_inheritedMember_inheritingClassifier-inheritingClassifier">
-      <ownedEnd xmi:id="A_inheritedMember_inheritingClassifier-inheritingClassifier" name="inheritingClassifier" type="Classifier" subsettedProperty="A_member_memberNamespace-memberNamespace" association="A_inheritedMember_inheritingClassifier">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_inheritedMember_inheritingClassifier-inheritingClassifier-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_inheritedMember_inheritingClassifier-inheritingClassifier-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_redefinedClassifier_classifier" name="A_redefinedClassifier_classifier" visibility="private" memberEnd="Classifier-redefinedClassifier A_redefinedClassifier_classifier-classifier">
-      <ownedEnd xmi:id="A_redefinedClassifier_classifier-classifier" name="classifier" type="Classifier" subsettedProperty="A_redefinedElement_redefinableElement-redefinableElement" association="A_redefinedClassifier_classifier">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_redefinedClassifier_classifier-classifier-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_redefinedClassifier_classifier-classifier-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_collaborationUse_classifier" name="A_collaborationUse_classifier" visibility="private" memberEnd="Classifier-collaborationUse A_collaborationUse_classifier-classifier">
-      <ownedEnd xmi:id="A_collaborationUse_classifier-classifier" name="classifier" type="Classifier" subsettedProperty="Element-owner" association="A_collaborationUse_classifier">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_collaborationUse_classifier-classifier-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_attribute_classifier" name="A_attribute_classifier" visibility="private" isDerived="true" memberEnd="Classifier-attribute A_attribute_classifier-classifier">
-      <ownedEnd xmi:id="A_attribute_classifier-classifier" name="classifier" type="Classifier" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="Feature-featuringClassifier RedefinableElement-redefinitionContext" association="A_attribute_classifier">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_attribute_classifier-classifier-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedUseCase_classifier" name="A_ownedUseCase_classifier" visibility="private" memberEnd="Classifier-ownedUseCase A_ownedUseCase_classifier-classifier">
-      <ownedEnd xmi:id="A_ownedUseCase_classifier-classifier" name="classifier" type="Classifier" subsettedProperty="NamedElement-namespace" association="A_ownedUseCase_classifier">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_ownedUseCase_classifier-classifier-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedParameter_ownerFormalParam" name="A_ownedParameter_ownerFormalParam" visibility="private" memberEnd="BehavioralFeature-ownedParameter A_ownedParameter_ownerFormalParam-ownerFormalParam">
-      <ownedEnd xmi:id="A_ownedParameter_ownerFormalParam-ownerFormalParam" name="ownerFormalParam" type="BehavioralFeature" subsettedProperty="NamedElement-namespace" association="A_ownedParameter_ownerFormalParam">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_ownedParameter_ownerFormalParam-ownerFormalParam-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_raisedException_behavioralFeature" name="A_raisedException_behavioralFeature" visibility="private" memberEnd="BehavioralFeature-raisedException A_raisedException_behavioralFeature-behavioralFeature">
-      <ownedEnd xmi:id="A_raisedException_behavioralFeature-behavioralFeature" name="behavioralFeature" type="BehavioralFeature" association="A_raisedException_behavioralFeature">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_raisedException_behavioralFeature-behavioralFeature-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_raisedException_behavioralFeature-behavioralFeature-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedParameterSet_behavioralFeature" name="A_ownedParameterSet_behavioralFeature" visibility="private" memberEnd="BehavioralFeature-ownedParameterSet A_ownedParameterSet_behavioralFeature-behavioralFeature">
-      <ownedEnd xmi:id="A_ownedParameterSet_behavioralFeature-behavioralFeature" name="behavioralFeature" type="BehavioralFeature" subsettedProperty="NamedElement-namespace" association="A_ownedParameterSet_behavioralFeature">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_ownedParameterSet_behavioralFeature-behavioralFeature-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_method_specification" name="A_method_specification" visibility="private" memberEnd="BehavioralFeature-method Behavior-specification"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_contract_substitution" name="A_contract_substitution" visibility="private" memberEnd="Substitution-contract A_contract_substitution-substitution">
-      <ownedEnd xmi:id="A_contract_substitution-substitution" name="substitution" type="Substitution" subsettedProperty="A_supplier_supplierDependency-supplierDependency" association="A_contract_substitution">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_contract_substitution-substitution-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_contract_substitution-substitution-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="AnyReceiveEvent" name="AnyReceiveEvent">
-      <ownedComment xmi:id="AnyReceiveEvent-_ownedComment.0" annotatedElement="AnyReceiveEvent">
-        <body>A trigger for an AnyReceiveEvent is triggered by the receipt of any message that is not explicitly handled by any related trigger.</body>
-      </ownedComment>
-      <generalization xmi:id="AnyReceiveEvent-_generalization.0" general="MessageEvent"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Behavior" name="Behavior" isAbstract="true">
-      <ownedComment xmi:id="Behavior-_ownedComment.0" annotatedElement="Behavior">
-        <body>Behavior is a specification of how its context BehavioredClassifier changes state over time. This specification may be either a definition of possible behavior execution or emergent behavior, or a selective illustration of an interesting subset of possible executions. The latter form is typically used for capturing examples, such as a trace of a particular execution.</body>
-      </ownedComment>
-      <ownedRule xmi:id="Behavior-most_one_behavior" name="most_one_behavior" constrainedElement="Behavior">
-        <ownedComment xmi:id="Behavior-most_one_behavior-_ownedComment.0" annotatedElement="Behavior-most_one_behavior">
-          <body>There may be at most one Behavior for a given pairing of BehavioredClassifier (as owner of the Behavior) and BehavioralFeature (as specification of the Behavior).</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Behavior-most_one_behavior-_specification">
-          <language>OCL</language>
-          <body>specification &lt;> null implies _'context'.ownedBehavior->select(specification=self.specification)->size() = 1</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Behavior-parameters_match" name="parameters_match" constrainedElement="Behavior">
-        <ownedComment xmi:id="Behavior-parameters_match-_ownedComment.0" annotatedElement="Behavior-parameters_match">
-          <body>If a Behavior has a specification BehavioralFeature, then it must have the same number of ownedParameters as its specification. The Behavior Parameters must also &quot;match&quot; the BehavioralParameter Parameters, but the exact requirements for this matching are not formalized.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Behavior-parameters_match-_specification">
-          <language>OCL</language>
-          <body>specification &lt;> null implies ownedParameter->size() = specification.ownedParameter->size()</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Behavior-feature_of_context_classifier" name="feature_of_context_classifier" constrainedElement="Behavior">
-        <ownedComment xmi:id="Behavior-feature_of_context_classifier-_ownedComment.0" annotatedElement="Behavior-feature_of_context_classifier">
-          <body>The specification BehavioralFeature must be a feature (possibly inherited) of the context BehavioredClassifier of the Behavior.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Behavior-feature_of_context_classifier-_specification">
-          <language>OCL</language>
-          <body>_'context'.feature->includes(specification)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="Behavior-_generalization.0" general="Class"/>
-      <ownedAttribute xmi:id="Behavior-context" name="context" type="BehavioredClassifier" isReadOnly="true" isDerived="true" subsettedProperty="RedefinableElement-redefinitionContext" association="A_context_behavior">
-        <ownedComment xmi:id="Behavior-context-_ownedComment.0" annotatedElement="Behavior-context">
-          <body>The BehavioredClassifier that is the context for the execution of the Behavior. A Behavior that is directly owned as a nestedClassifier does not have a context. Otherwise, to determine the context of a Behavior, find the first BehavioredClassifier reached by following the chain of owner relationships from the Behavior, if any. If there is such a BehavioredClassifier, then it is the context, unless it is itself a Behavior with a non-empty context, in which case that is also the context for the original Behavior. For example, following this algorithm, the context of an entry Behavior in a StateMachine is the BehavioredClassifier that owns the StateMachine. The features of the context BehavioredClassifier as well as the Elements visible to the context Classifier are visible to the Behavior.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Behavior-context-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Behavior-isReentrant" name="isReentrant">
-        <ownedComment xmi:id="Behavior-isReentrant-_ownedComment.0" annotatedElement="Behavior-isReentrant">
-          <body>Tells whether the Behavior can be invoked while it is still executing from a previous invocation.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Behavior-isReentrant-_lowerValue"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Behavior-isReentrant-_defaultValue" value="true"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Behavior-ownedParameter" name="ownedParameter" type="Parameter" isOrdered="true" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_ownedParameter_behavior">
-        <ownedComment xmi:id="Behavior-ownedParameter-_ownedComment.0" annotatedElement="Behavior-ownedParameter">
-          <body>References a list of Parameters to the Behavior which describes the order and type of arguments that can be given when the Behavior is invoked and of the values which will be returned when the Behavior completes its execution.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Behavior-ownedParameter-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Behavior-ownedParameter-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Behavior-ownedParameterSet" name="ownedParameterSet" type="ParameterSet" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_ownedParameterSet_behavior">
-        <ownedComment xmi:id="Behavior-ownedParameterSet-_ownedComment.0" annotatedElement="Behavior-ownedParameterSet">
-          <body>The ParameterSets owned by this Behavior.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Behavior-ownedParameterSet-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Behavior-ownedParameterSet-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Behavior-postcondition" name="postcondition" type="Constraint" aggregation="composite" subsettedProperty="Namespace-ownedRule" association="A_postcondition_behavior">
-        <ownedComment xmi:id="Behavior-postcondition-_ownedComment.0" annotatedElement="Behavior-postcondition">
-          <body>An optional set of Constraints specifying what is fulfilled after the execution of the Behavior is completed, if its precondition was fulfilled before its invocation.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Behavior-postcondition-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Behavior-postcondition-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Behavior-precondition" name="precondition" type="Constraint" aggregation="composite" subsettedProperty="Namespace-ownedRule" association="A_precondition_behavior">
-        <ownedComment xmi:id="Behavior-precondition-_ownedComment.0" annotatedElement="Behavior-precondition">
-          <body>An optional set of Constraints specifying what must be fulfilled before the Behavior is invoked.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Behavior-precondition-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Behavior-precondition-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Behavior-specification" name="specification" type="BehavioralFeature" association="A_method_specification">
-        <ownedComment xmi:id="Behavior-specification-_ownedComment.0" annotatedElement="Behavior-specification">
-          <body>Designates a BehavioralFeature that the Behavior implements. The BehavioralFeature must be owned by the BehavioredClassifier that owns the Behavior or be inherited by it. The Parameters of the BehavioralFeature and the implementing Behavior must match. A Behavior does not need to have a specification, in which case it either is the classifierBehavior of a BehavioredClassifier or it can only be invoked by another Behavior of the Classifier.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Behavior-specification-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Behavior-redefinedBehavior" name="redefinedBehavior" type="Behavior" subsettedProperty="Classifier-redefinedClassifier" association="A_redefinedBehavior_behavior">
-        <ownedComment xmi:id="Behavior-redefinedBehavior-_ownedComment.0" annotatedElement="Behavior-redefinedBehavior">
-          <body>References the Behavior that this Behavior redefines. A subtype of Behavior may redefine any other subtype of Behavior. If the Behavior implements a BehavioralFeature, it replaces the redefined Behavior. If the Behavior is a classifierBehavior, it extends the redefined Behavior.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Behavior-redefinedBehavior-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Behavior-redefinedBehavior-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="Behavior-context.1" name="context" visibility="protected" bodyCondition="Behavior-context.1-spec" isQuery="true">
-        <ownedComment xmi:id="Behavior-context.1-_ownedComment.0" annotatedElement="Behavior-context.1">
-          <body>A Behavior that is directly owned as a nestedClassifier does not have a context. Otherwise, to determine the context of a Behavior, find the first BehavioredClassifier reached by following the chain of owner relationships from the Behavior, if any. If there is such a BehavioredClassifier, then it is the context, unless it is itself a Behavior with a non-empty context, in which case that is also the context for the original Behavior.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Behavior-context.1-spec" name="spec" constrainedElement="Behavior-context.1 Behavior-context">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Behavior-context.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if nestingClass &lt;> null then&#xD;
-    null&#xD;
-else&#xD;
-    let b:BehavioredClassifier = self.behavioredClassifier(self.owner) in&#xD;
-    if b.oclIsKindOf(Behavior) and b.oclAsType(Behavior)._'context' &lt;> null then &#xD;
-        b.oclAsType(Behavior)._'context'&#xD;
-    else &#xD;
-        b &#xD;
-    endif&#xD;
-endif&#xD;
-        )</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Behavior-context.1-result" name="result" type="BehavioredClassifier" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Behavior-context.1-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Behavior-context.1-result-_upperValue" value="1"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Behavior-behavioredClassifier" name="behavioredClassifier" isQuery="true" precondition="Behavior-behavioredClassifier-spec">
-        <ownedComment xmi:id="Behavior-behavioredClassifier-_ownedComment.0" annotatedElement="Behavior-behavioredClassifier">
-          <body>The first BehavioredClassifier reached by following the chain of owner relationships from the Behavior, if any.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Behavior-behavioredClassifier-spec" name="spec" constrainedElement="Behavior-behavioredClassifier">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Behavior-behavioredClassifier-spec-_specification">
-            <language>OCL</language>
-            <body>if from.oclIsKindOf(BehavioredClassifier) then&#xD;
-    from.oclAsType(BehavioredClassifier)&#xD;
-else if from.owner = null then&#xD;
-    null&#xD;
-else&#xD;
-    self.behavioredClassifier(from.owner)&#xD;
-endif&#xD;
-endif</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Behavior-behavioredClassifier-from" name="from" type="Element"/>
-        <ownedParameter xmi:id="Behavior-behavioredClassifier-result" name="result" type="BehavioredClassifier" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Behavior-behavioredClassifier-result-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Behavior-inputParameters" name="inputParameters" bodyCondition="Behavior-inputParameters-spec" isQuery="true">
-        <ownedComment xmi:id="Behavior-inputParameters-_ownedComment.0" annotatedElement="Behavior-inputParameters">
-          <body>The in and inout ownedParameters of the Behavior.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Behavior-inputParameters-spec" name="spec" constrainedElement="Behavior-inputParameters">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Behavior-inputParameters-spec-_specification">
-            <language>OCL</language>
-            <body>result = (ownedParameter->select(direction=ParameterDirectionKind::_'in' or direction=ParameterDirectionKind::inout))</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Behavior-inputParameters-result" name="result" type="Parameter" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Behavior-inputParameters-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Behavior-inputParameters-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Behavior-outputParameters" name="outputParameters" bodyCondition="Behavior-outputParameters-spec" isQuery="true">
-        <ownedComment xmi:id="Behavior-outputParameters-_ownedComment.0" annotatedElement="Behavior-outputParameters">
-          <body>The out, inout and return ownedParameters.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Behavior-outputParameters-spec" name="spec" constrainedElement="Behavior-outputParameters">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Behavior-outputParameters-spec-_specification">
-            <language>OCL</language>
-            <body>result = (ownedParameter->select(direction=ParameterDirectionKind::out or direction=ParameterDirectionKind::inout or direction=ParameterDirectionKind::return))</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Behavior-outputParameters-result" name="result" type="Parameter" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Behavior-outputParameters-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Behavior-outputParameters-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="CallEvent" name="CallEvent">
-      <ownedComment xmi:id="CallEvent-_ownedComment.0" annotatedElement="CallEvent">
-        <body>A CallEvent models the receipt by an object of a message invoking a call of an Operation.</body>
-      </ownedComment>
-      <generalization xmi:id="CallEvent-_generalization.0" general="MessageEvent"/>
-      <ownedAttribute xmi:id="CallEvent-operation" name="operation" type="Operation" association="A_operation_callEvent">
-        <ownedComment xmi:id="CallEvent-operation-_ownedComment.0" annotatedElement="CallEvent-operation">
-          <body>Designates the Operation whose invocation raised the CalEvent.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ChangeEvent" name="ChangeEvent">
-      <ownedComment xmi:id="ChangeEvent-_ownedComment.0" annotatedElement="ChangeEvent">
-        <body>A ChangeEvent models a change in the system configuration that makes a condition true.</body>
-      </ownedComment>
-      <generalization xmi:id="ChangeEvent-_generalization.0" general="Event"/>
-      <ownedAttribute xmi:id="ChangeEvent-changeExpression" name="changeExpression" type="ValueSpecification" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_changeExpression_changeEvent">
-        <ownedComment xmi:id="ChangeEvent-changeExpression-_ownedComment.0" annotatedElement="ChangeEvent-changeExpression">
-          <body>A Boolean-valued ValueSpecification that will result in a ChangeEvent whenever its value changes from false to true.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Event" name="Event" isAbstract="true">
-      <ownedComment xmi:id="Event-_ownedComment.0" annotatedElement="Event">
-        <body>An Event is the specification of some occurrence that may potentially trigger effects by an object.</body>
-      </ownedComment>
-      <generalization xmi:id="Event-_generalization.0" general="PackageableElement"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="FunctionBehavior" name="FunctionBehavior">
-      <ownedComment xmi:id="FunctionBehavior-_ownedComment.0" annotatedElement="FunctionBehavior">
-        <body>A FunctionBehavior is an OpaqueBehavior that does not access or modify any objects or other external data.</body>
-      </ownedComment>
-      <ownedRule xmi:id="FunctionBehavior-one_output_parameter" name="one_output_parameter" constrainedElement="FunctionBehavior">
-        <ownedComment xmi:id="FunctionBehavior-one_output_parameter-_ownedComment.0" annotatedElement="FunctionBehavior-one_output_parameter">
-          <body>A FunctionBehavior has at least one output Parameter.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="FunctionBehavior-one_output_parameter-_specification">
-          <language>OCL</language>
-          <body>self.ownedParameter->&#xD;
-  select(p | p.direction = ParameterDirectionKind::out or p.direction= ParameterDirectionKind::inout or p.direction= ParameterDirectionKind::return)->size() >= 1</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="FunctionBehavior-types_of_parameters" name="types_of_parameters" constrainedElement="FunctionBehavior">
-        <ownedComment xmi:id="FunctionBehavior-types_of_parameters-_ownedComment.0" annotatedElement="FunctionBehavior-types_of_parameters">
-          <body>The types of the ownedParameters are all DataTypes, which may not nest anything but other DataTypes.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="FunctionBehavior-types_of_parameters-_specification">
-          <language>OCL</language>
-          <body>ownedParameter->forAll(p | p.type &lt;> null and&#xD;
-  p.type.oclIsTypeOf(DataType) and hasAllDataTypeAttributes(p.type.oclAsType(DataType)))</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="FunctionBehavior-_generalization.0" general="OpaqueBehavior"/>
-      <ownedOperation xmi:id="FunctionBehavior-hasAllDataTypeAttributes" name="hasAllDataTypeAttributes" bodyCondition="FunctionBehavior-hasAllDataTypeAttributes-spec" isQuery="true">
-        <ownedComment xmi:id="FunctionBehavior-hasAllDataTypeAttributes-_ownedComment.0" annotatedElement="FunctionBehavior-hasAllDataTypeAttributes">
-          <body>The hasAllDataTypeAttributes query tests whether the types of the attributes of the given DataType are all DataTypes, and similarly for all those DataTypes.</body>
-        </ownedComment>
-        <ownedRule xmi:id="FunctionBehavior-hasAllDataTypeAttributes-spec" name="spec" constrainedElement="FunctionBehavior-hasAllDataTypeAttributes">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="FunctionBehavior-hasAllDataTypeAttributes-spec-_specification">
-            <language>OCL</language>
-            <body>result = (d.ownedAttribute->forAll(a |&#xD;
-    a.type.oclIsKindOf(DataType) and&#xD;
-      hasAllDataTypeAttributes(a.type.oclAsType(DataType))))</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="FunctionBehavior-hasAllDataTypeAttributes-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="FunctionBehavior-hasAllDataTypeAttributes-d" name="d" type="DataType"/>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="MessageEvent" name="MessageEvent" isAbstract="true">
-      <ownedComment xmi:id="MessageEvent-_ownedComment.0" annotatedElement="MessageEvent">
-        <body>A MessageEvent specifies the receipt by an object of either an Operation call or a Signal instance.</body>
-      </ownedComment>
-      <generalization xmi:id="MessageEvent-_generalization.0" general="Event"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="OpaqueBehavior" name="OpaqueBehavior">
-      <ownedComment xmi:id="OpaqueBehavior-_ownedComment.0" annotatedElement="OpaqueBehavior">
-        <body>An OpaqueBehavior is a Behavior whose specification is given in a textual language other than UML.</body>
-      </ownedComment>
-      <generalization xmi:id="OpaqueBehavior-_generalization.0" general="Behavior"/>
-      <ownedAttribute xmi:id="OpaqueBehavior-body" name="body" isOrdered="true" isUnique="false">
-        <ownedComment xmi:id="OpaqueBehavior-body-_ownedComment.0" annotatedElement="OpaqueBehavior-body">
-          <body>Specifies the behavior in one or more languages.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="OpaqueBehavior-body-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="OpaqueBehavior-body-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="OpaqueBehavior-language" name="language" isOrdered="true">
-        <ownedComment xmi:id="OpaqueBehavior-language-_ownedComment.0" annotatedElement="OpaqueBehavior-language">
-          <body>Languages the body strings use in the same order as the body strings.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="OpaqueBehavior-language-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="OpaqueBehavior-language-_upperValue" value="*"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="SignalEvent" name="SignalEvent">
-      <ownedComment xmi:id="SignalEvent-_ownedComment.0" annotatedElement="SignalEvent">
-        <body>A SignalEvent represents the receipt of an asynchronous Signal instance.</body>
-      </ownedComment>
-      <generalization xmi:id="SignalEvent-_generalization.0" general="MessageEvent"/>
-      <ownedAttribute xmi:id="SignalEvent-signal" name="signal" type="Signal" association="A_signal_signalEvent">
-        <ownedComment xmi:id="SignalEvent-signal-_ownedComment.0" annotatedElement="SignalEvent-signal">
-          <body>The specific Signal that is associated with this SignalEvent.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="TimeEvent" name="TimeEvent">
-      <ownedComment xmi:id="TimeEvent-_ownedComment.0" annotatedElement="TimeEvent">
-        <body>A TimeEvent is an Event that occurs at a specific point in time.</body>
-      </ownedComment>
-      <ownedRule xmi:id="TimeEvent-when_non_negative" name="when_non_negative" constrainedElement="TimeEvent">
-        <ownedComment xmi:id="TimeEvent-when_non_negative-_ownedComment.0" annotatedElement="TimeEvent-when_non_negative">
-          <body>The ValueSpecification when must return a non-negative Integer.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="TimeEvent-when_non_negative-_specification">
-          <language>OCL</language>
-          <body>when.integerValue() >= 0</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="TimeEvent-_generalization.0" general="Event"/>
-      <ownedAttribute xmi:id="TimeEvent-isRelative" name="isRelative">
-        <ownedComment xmi:id="TimeEvent-isRelative-_ownedComment.0" annotatedElement="TimeEvent-isRelative">
-          <body>Specifies whether the TimeEvent is specified as an absolute or relative time.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="TimeEvent-isRelative-_defaultValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="TimeEvent-when" name="when" type="TimeExpression" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_when_timeEvent">
-        <ownedComment xmi:id="TimeEvent-when-_ownedComment.0" annotatedElement="TimeEvent-when">
-          <body>Specifies the time of the TimeEvent.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Trigger" name="Trigger">
-      <ownedComment xmi:id="Trigger-_ownedComment.0" annotatedElement="Trigger">
-        <body>A Trigger specifies a specific point  at which an Event occurrence may trigger an effect in a Behavior. A Trigger may be qualified by the Port on which the Event occurred.</body>
-      </ownedComment>
-      <ownedRule xmi:id="Trigger-trigger_with_ports" name="trigger_with_ports" constrainedElement="Trigger">
-        <ownedComment xmi:id="Trigger-trigger_with_ports-_ownedComment.0" annotatedElement="Trigger-trigger_with_ports">
-          <body>If a Trigger specifies one or more ports, the event of the Trigger must be a MessageEvent.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Trigger-trigger_with_ports-_specification">
-          <language>OCL</language>
-          <body>port->notEmpty() implies event.oclIsKindOf(MessageEvent)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="Trigger-_generalization.0" general="NamedElement"/>
-      <ownedAttribute xmi:id="Trigger-event" name="event" type="Event" association="A_event_trigger">
-        <ownedComment xmi:id="Trigger-event-_ownedComment.0" annotatedElement="Trigger-event">
-          <body>The Event that detected by the Trigger.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Trigger-port" name="port" type="Port" association="A_port_trigger">
-        <ownedComment xmi:id="Trigger-port-_ownedComment.0" annotatedElement="Trigger-port">
-          <body>A optional Port of through which the given effect is detected.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Trigger-port-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Trigger-port-_upperValue" value="*"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_event_trigger" name="A_event_trigger" visibility="private" memberEnd="Trigger-event A_event_trigger-trigger">
-      <ownedEnd xmi:id="A_event_trigger-trigger" name="trigger" type="Trigger" association="A_event_trigger">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_event_trigger-trigger-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_event_trigger-trigger-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_port_trigger" name="A_port_trigger" visibility="private" memberEnd="Trigger-port A_port_trigger-trigger">
-      <ownedEnd xmi:id="A_port_trigger-trigger" name="trigger" type="Trigger" association="A_port_trigger">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_port_trigger-trigger-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_port_trigger-trigger-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_when_timeEvent" name="A_when_timeEvent" visibility="private" memberEnd="TimeEvent-when A_when_timeEvent-timeEvent">
-      <ownedEnd xmi:id="A_when_timeEvent-timeEvent" name="timeEvent" type="TimeEvent" subsettedProperty="Element-owner" association="A_when_timeEvent">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_when_timeEvent-timeEvent-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_signal_signalEvent" name="A_signal_signalEvent" visibility="private" memberEnd="SignalEvent-signal A_signal_signalEvent-signalEvent">
-      <ownedEnd xmi:id="A_signal_signalEvent-signalEvent" name="signalEvent" type="SignalEvent" association="A_signal_signalEvent">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_signal_signalEvent-signalEvent-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_signal_signalEvent-signalEvent-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_changeExpression_changeEvent" name="A_changeExpression_changeEvent" visibility="private" memberEnd="ChangeEvent-changeExpression A_changeExpression_changeEvent-changeEvent">
-      <ownedEnd xmi:id="A_changeExpression_changeEvent-changeEvent" name="changeEvent" type="ChangeEvent" subsettedProperty="Element-owner" association="A_changeExpression_changeEvent">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_changeExpression_changeEvent-changeEvent-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_operation_callEvent" name="A_operation_callEvent" visibility="private" memberEnd="CallEvent-operation A_operation_callEvent-callEvent">
-      <ownedEnd xmi:id="A_operation_callEvent-callEvent" name="callEvent" type="CallEvent" association="A_operation_callEvent">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_operation_callEvent-callEvent-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_operation_callEvent-callEvent-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedParameterSet_behavior" name="A_ownedParameterSet_behavior" visibility="private" memberEnd="Behavior-ownedParameterSet A_ownedParameterSet_behavior-behavior">
-      <ownedEnd xmi:id="A_ownedParameterSet_behavior-behavior" name="behavior" type="Behavior" subsettedProperty="NamedElement-namespace" association="A_ownedParameterSet_behavior">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_ownedParameterSet_behavior-behavior-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_context_behavior" name="A_context_behavior" visibility="private" isDerived="true" memberEnd="Behavior-context A_context_behavior-behavior">
-      <ownedEnd xmi:id="A_context_behavior-behavior" name="behavior" type="Behavior" subsettedProperty="A_redefinitionContext_redefinableElement-redefinableElement" association="A_context_behavior">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_context_behavior-behavior-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_context_behavior-behavior-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_precondition_behavior" name="A_precondition_behavior" visibility="private" memberEnd="Behavior-precondition A_precondition_behavior-behavior">
-      <ownedEnd xmi:id="A_precondition_behavior-behavior" name="behavior" type="Behavior" subsettedProperty="Constraint-context" association="A_precondition_behavior">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_precondition_behavior-behavior-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_postcondition_behavior" name="A_postcondition_behavior" visibility="private" memberEnd="Behavior-postcondition A_postcondition_behavior-behavior">
-      <ownedEnd xmi:id="A_postcondition_behavior-behavior" name="behavior" type="Behavior" subsettedProperty="Constraint-context" association="A_postcondition_behavior">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_postcondition_behavior-behavior-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_redefinedBehavior_behavior" name="A_redefinedBehavior_behavior" visibility="private" memberEnd="Behavior-redefinedBehavior A_redefinedBehavior_behavior-behavior">
-      <ownedEnd xmi:id="A_redefinedBehavior_behavior-behavior" name="behavior" type="Behavior" subsettedProperty="A_redefinedClassifier_classifier-classifier" association="A_redefinedBehavior_behavior">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_redefinedBehavior_behavior-behavior-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_redefinedBehavior_behavior-behavior-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedParameter_behavior" name="A_ownedParameter_behavior" visibility="private" memberEnd="Behavior-ownedParameter A_ownedParameter_behavior-behavior">
-      <ownedEnd xmi:id="A_ownedParameter_behavior-behavior" name="behavior" type="Behavior" subsettedProperty="NamedElement-namespace" association="A_ownedParameter_behavior">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_ownedParameter_behavior-behavior-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Abstraction" name="Abstraction">
-      <ownedComment xmi:id="Abstraction-_ownedComment.0" annotatedElement="Abstraction">
-        <body>An Abstraction is a Relationship that relates two Elements or sets of Elements that represent the same concept at different levels of abstraction or from different viewpoints.</body>
-      </ownedComment>
-      <generalization xmi:id="Abstraction-_generalization.0" general="Dependency"/>
-      <ownedAttribute xmi:id="Abstraction-mapping" name="mapping" type="OpaqueExpression" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_mapping_abstraction">
-        <ownedComment xmi:id="Abstraction-mapping-_ownedComment.0" annotatedElement="Abstraction-mapping">
-          <body>An OpaqueExpression that states the abstraction relationship between the supplier(s) and the client(s). In some cases, such as derivation, it is usually formal and unidirectional; in other cases, such as trace, it is usually informal and bidirectional. The mapping expression is optional and may be omitted if the precise relationship between the Elements is not specified.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Abstraction-mapping-_lowerValue"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Comment" name="Comment">
-      <ownedComment xmi:id="Comment-_ownedComment.0" annotatedElement="Comment">
-        <body>A Comment is a textual annotation that can be attached to a set of Elements.</body>
-      </ownedComment>
-      <generalization xmi:id="Comment-_generalization.0" general="Element"/>
-      <ownedAttribute xmi:id="Comment-annotatedElement" name="annotatedElement" type="Element" association="A_annotatedElement_comment">
-        <ownedComment xmi:id="Comment-annotatedElement-_ownedComment.0" annotatedElement="Comment-annotatedElement">
-          <body>References the Element(s) being commented.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Comment-annotatedElement-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Comment-annotatedElement-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Comment-body" name="body">
-        <ownedComment xmi:id="Comment-body-_ownedComment.0" annotatedElement="Comment-body">
-          <body>Specifies a string that is the comment.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Comment-body-_lowerValue"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Constraint" name="Constraint">
-      <ownedComment xmi:id="Constraint-_ownedComment.0" annotatedElement="Constraint">
-        <body>A Constraint is a condition or restriction expressed in natural language text or in a machine readable language for the purpose of declaring some of the semantics of an Element or set of Elements.</body>
-      </ownedComment>
-      <ownedRule xmi:id="Constraint-boolean_value" name="boolean_value" constrainedElement="Constraint">
-        <ownedComment xmi:id="Constraint-boolean_value-_ownedComment.0" annotatedElement="Constraint-boolean_value">
-          <body>The ValueSpecification for a Constraint must evaluate to a Boolean value.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Constraint-boolean_value-_specification" language=""/>
-      </ownedRule>
-      <ownedRule xmi:id="Constraint-no_side_effects" name="no_side_effects" constrainedElement="Constraint">
-        <ownedComment xmi:id="Constraint-no_side_effects-_ownedComment.0" annotatedElement="Constraint-no_side_effects">
-          <body>Evaluating the ValueSpecification for a Constraint must not have side effects.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Constraint-no_side_effects-_specification" language=""/>
-      </ownedRule>
-      <ownedRule xmi:id="Constraint-not_apply_to_self" name="not_apply_to_self" constrainedElement="Constraint">
-        <ownedComment xmi:id="Constraint-not_apply_to_self-_ownedComment.0" annotatedElement="Constraint-not_apply_to_self">
-          <body>A Constraint cannot be applied to itself.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Constraint-not_apply_to_self-_specification">
-          <language>OCL</language>
-          <body>not constrainedElement->includes(self)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="Constraint-_generalization.0" general="PackageableElement"/>
-      <ownedAttribute xmi:id="Constraint-constrainedElement" name="constrainedElement" type="Element" isOrdered="true" association="A_constrainedElement_constraint">
-        <ownedComment xmi:id="Constraint-constrainedElement-_ownedComment.0" annotatedElement="Constraint-constrainedElement">
-          <body>The ordered set of Elements referenced by this Constraint.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Constraint-constrainedElement-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Constraint-constrainedElement-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Constraint-context" name="context" type="Namespace" subsettedProperty="NamedElement-namespace" association="A_ownedRule_context">
-        <ownedComment xmi:id="Constraint-context-_ownedComment.0" annotatedElement="Constraint-context">
-          <body>Specifies the Namespace that owns the Constraint.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Constraint-context-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Constraint-specification" name="specification" type="ValueSpecification" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_specification_owningConstraint">
-        <ownedComment xmi:id="Constraint-specification-_ownedComment.0" annotatedElement="Constraint-specification">
-          <body>A condition that must be true when evaluated in order for the Constraint to be satisfied.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Dependency" name="Dependency">
-      <ownedComment xmi:id="Dependency-_ownedComment.0" annotatedElement="Dependency">
-        <body>A Dependency is a Relationship that signifies that a single model Element or a set of model Elements requires other model Elements for their specification or implementation. This means that the complete semantics of the client Element(s) are either semantically or structurally dependent on the definition of the supplier Element(s).</body>
-      </ownedComment>
-      <generalization xmi:id="Dependency-_generalization.0" general="DirectedRelationship"/>
-      <generalization xmi:id="Dependency-_generalization.1" general="PackageableElement"/>
-      <ownedAttribute xmi:id="Dependency-client" name="client" type="NamedElement" subsettedProperty="DirectedRelationship-source" association="A_clientDependency_client">
-        <ownedComment xmi:id="Dependency-client-_ownedComment.0" annotatedElement="Dependency-client">
-          <body>The Element(s) dependent on the supplier Element(s). In some cases (such as a trace Abstraction) the assignment of direction (that is, the designation of the client Element) is at the discretion of the modeler and is a stipulation.</body>
-        </ownedComment>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Dependency-client-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Dependency-supplier" name="supplier" type="NamedElement" subsettedProperty="DirectedRelationship-target" association="A_supplier_supplierDependency">
-        <ownedComment xmi:id="Dependency-supplier-_ownedComment.0" annotatedElement="Dependency-supplier">
-          <body>The Element(s) on which the client Element(s) depend in some respect. The modeler may stipulate a sense of Dependency direction suitable for their domain.</body>
-        </ownedComment>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Dependency-supplier-_upperValue" value="*"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="DirectedRelationship" name="DirectedRelationship" isAbstract="true">
-      <ownedComment xmi:id="DirectedRelationship-_ownedComment.0" annotatedElement="DirectedRelationship">
-        <body>A DirectedRelationship represents a relationship between a collection of source model Elements and a collection of target model Elements.</body>
-      </ownedComment>
-      <generalization xmi:id="DirectedRelationship-_generalization.0" general="Relationship"/>
-      <ownedAttribute xmi:id="DirectedRelationship-source" name="source" type="Element" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="Relationship-relatedElement" association="A_source_directedRelationship">
-        <ownedComment xmi:id="DirectedRelationship-source-_ownedComment.0" annotatedElement="DirectedRelationship-source">
-          <body>Specifies the source Element(s) of the DirectedRelationship.</body>
-        </ownedComment>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DirectedRelationship-source-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="DirectedRelationship-target" name="target" type="Element" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="Relationship-relatedElement" association="A_target_directedRelationship">
-        <ownedComment xmi:id="DirectedRelationship-target-_ownedComment.0" annotatedElement="DirectedRelationship-target">
-          <body>Specifies the target Element(s) of the DirectedRelationship.</body>
-        </ownedComment>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DirectedRelationship-target-_upperValue" value="*"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Element" name="Element" isAbstract="true">
-      <ownedComment xmi:id="Element-_ownedComment.0" annotatedElement="Element">
-        <body>An Element is a constituent of a model. As such, it has the capability of owning other Elements.</body>
-      </ownedComment>
-      <ownedRule xmi:id="Element-has_owner" name="has_owner" constrainedElement="Element">
-        <ownedComment xmi:id="Element-has_owner-_ownedComment.0" annotatedElement="Element-has_owner">
-          <body>Elements that must be owned must have an owner.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Element-has_owner-_specification">
-          <language>OCL</language>
-          <body>mustBeOwned() implies owner->notEmpty()</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Element-not_own_self" name="not_own_self" constrainedElement="Element">
-        <ownedComment xmi:id="Element-not_own_self-_ownedComment.0" annotatedElement="Element-not_own_self">
-          <body>An element may not directly or indirectly own itself.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Element-not_own_self-_specification">
-          <language>OCL</language>
-          <body>not allOwnedElements()->includes(self)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="Element-_generalization.0">
-        <general xmi:type="uml:Class" href="Ecore.metamodel.uml#EModelElement"/>
-      </generalization>
-      <ownedAttribute xmi:id="Element-ownedComment" name="ownedComment" type="Comment" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_ownedComment_owningElement">
-        <ownedComment xmi:id="Element-ownedComment-_ownedComment.0" annotatedElement="Element-ownedComment">
-          <body>The Comments owned by this Element.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-ownedComment-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-ownedComment-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Element-ownedElement" name="ownedElement" type="Element" isReadOnly="true" aggregation="composite" isDerived="true" isDerivedUnion="true" association="A_ownedElement_owner">
-        <ownedComment xmi:id="Element-ownedElement-_ownedComment.0" annotatedElement="Element-ownedElement">
-          <body>The Elements owned by this Element.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-ownedElement-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-ownedElement-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Element-owner" name="owner" type="Element" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="A_ownedElement_owner">
-        <ownedComment xmi:id="Element-owner-_ownedComment.0" annotatedElement="Element-owner">
-          <body>The Element that owns this Element.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-owner-_lowerValue"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="Element-addKeyword" name="addKeyword">
-        <ownedComment xmi:id="Element-addKeyword-_ownedComment.0" annotatedElement="Element-addKeyword">
-          <body>Adds the specified keyword to this element.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Element-addKeyword-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Element-addKeyword-keyword" name="keyword" effect="read">
-          <ownedComment xmi:id="Element-addKeyword-keyword-_ownedComment.0" annotatedElement="Element-addKeyword-keyword">
-            <body>The keyword to add.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Element-applyStereotype" name="applyStereotype">
-        <ownedComment xmi:id="Element-applyStereotype-_ownedComment.0" annotatedElement="Element-applyStereotype">
-          <body>Applies the specified stereotype to this element.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Element-applyStereotype-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:Class" href="Ecore.metamodel.uml#EObject"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Element-applyStereotype-stereotype" name="stereotype" type="Stereotype" effect="read">
-          <ownedComment xmi:id="Element-applyStereotype-stereotype-_ownedComment.0" annotatedElement="Element-applyStereotype-stereotype">
-            <body>The stereotype to apply.</body>
-          </ownedComment>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Element-createEAnnotation" name="createEAnnotation">
-        <ownedComment xmi:id="Element-createEAnnotation-_ownedComment.0" annotatedElement="Element-createEAnnotation">
-          <body>Creates an annotation with the specified source and this element as its model element.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Element-createEAnnotation-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:Class" href="Ecore.metamodel.uml#EAnnotation"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Element-createEAnnotation-source" name="source" effect="read">
-          <ownedComment xmi:id="Element-createEAnnotation-source-_ownedComment.0" annotatedElement="Element-createEAnnotation-source">
-            <body>The source for the new annotation.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Element-destroy" name="destroy">
-        <ownedComment xmi:id="Element-destroy-_ownedComment.0" annotatedElement="Element-destroy">
-          <body>Destroys this element by removing all cross references to/from it and removing it from its containing resource or object.</body>
-        </ownedComment>
-      </ownedOperation>
-      <ownedOperation xmi:id="Element-getKeywords" name="getKeywords" isQuery="true">
-        <ownedComment xmi:id="Element-getKeywords-_ownedComment.0" annotatedElement="Element-getKeywords">
-          <body>Retrieves the keywords for this element.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Element-getKeywords-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-getKeywords-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-getKeywords-_ownedParameter.0-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Element-getApplicableStereotype" name="getApplicableStereotype" isQuery="true">
-        <ownedComment xmi:id="Element-getApplicableStereotype-_ownedComment.0" annotatedElement="Element-getApplicableStereotype">
-          <body>Retrieves the stereotype with the specified qualified name that is applicable to this element, or null if no such stereotype is applicable.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Element-getApplicableStereotype-_ownedParameter.0" type="Stereotype" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-getApplicableStereotype-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-getApplicableStereotype-_ownedParameter.0-_upperValue" value="1"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Element-getApplicableStereotype-qualifiedName" name="qualifiedName" effect="read">
-          <ownedComment xmi:id="Element-getApplicableStereotype-qualifiedName-_ownedComment.0" annotatedElement="Element-getApplicableStereotype-qualifiedName">
-            <body>The qualified name of the applicable stereotype to retrieve.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Element-getApplicableStereotypes" name="getApplicableStereotypes" isQuery="true">
-        <ownedComment xmi:id="Element-getApplicableStereotypes-_ownedComment.0" annotatedElement="Element-getApplicableStereotypes">
-          <body>Retrieves the stereotypes that are applicable to this element, including those that are required and/or may already be applied.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Element-getApplicableStereotypes-_ownedParameter.0" type="Stereotype" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-getApplicableStereotypes-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-getApplicableStereotypes-_ownedParameter.0-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Element-getAppliedStereotype" name="getAppliedStereotype" isQuery="true">
-        <ownedComment xmi:id="Element-getAppliedStereotype-_ownedComment.0" annotatedElement="Element-getAppliedStereotype">
-          <body>Retrieves the stereotype with the specified qualified name that is applied to this element, or null if no such stereotype is  applied.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Element-getAppliedStereotype-_ownedParameter.0" type="Stereotype" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-getAppliedStereotype-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-getAppliedStereotype-_ownedParameter.0-_upperValue" value="1"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Element-getAppliedStereotype-qualifiedName" name="qualifiedName" effect="read">
-          <ownedComment xmi:id="Element-getAppliedStereotype-qualifiedName-_ownedComment.0" annotatedElement="Element-getAppliedStereotype-qualifiedName">
-            <body>The qualified name of the applied stereotype to retrieve.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Element-getAppliedStereotypes" name="getAppliedStereotypes" isQuery="true">
-        <ownedComment xmi:id="Element-getAppliedStereotypes-_ownedComment.0" annotatedElement="Element-getAppliedStereotypes">
-          <body>Retrieves the stereotypes that are applied to this element.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Element-getAppliedStereotypes-_ownedParameter.0" type="Stereotype" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-getAppliedStereotypes-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-getAppliedStereotypes-_ownedParameter.0-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Element-getAppliedSubstereotype" name="getAppliedSubstereotype" isQuery="true">
-        <ownedComment xmi:id="Element-getAppliedSubstereotype-_ownedComment.0" annotatedElement="Element-getAppliedSubstereotype">
-          <body>Retrieves the substereotype of the specified stereotype with the specified qualified name that is applied to this element, or null if no such stereotype is applied.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Element-getAppliedSubstereotype-_ownedParameter.0" type="Stereotype" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-getAppliedSubstereotype-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-getAppliedSubstereotype-_ownedParameter.0-_upperValue" value="1"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Element-getAppliedSubstereotype-stereotype" name="stereotype" type="Stereotype" effect="read">
-          <ownedComment xmi:id="Element-getAppliedSubstereotype-stereotype-_ownedComment.0" annotatedElement="Element-getAppliedSubstereotype-stereotype">
-            <body>The superstereotype of the applied substereotype to retrieve.</body>
-          </ownedComment>
-        </ownedParameter>
-        <ownedParameter xmi:id="Element-getAppliedSubstereotype-qualifiedName" name="qualifiedName" effect="read">
-          <ownedComment xmi:id="Element-getAppliedSubstereotype-qualifiedName-_ownedComment.0" annotatedElement="Element-getAppliedSubstereotype-qualifiedName">
-            <body>The qualified name of the applied substereotype to retrieve.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Element-getAppliedSubstereotypes" name="getAppliedSubstereotypes" isQuery="true">
-        <ownedComment xmi:id="Element-getAppliedSubstereotypes-_ownedComment.0" annotatedElement="Element-getAppliedSubstereotypes">
-          <body>Retrieves the substereotypes of the specified stereotype that are applied to this element.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Element-getAppliedSubstereotypes-_ownedParameter.0" type="Stereotype" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-getAppliedSubstereotypes-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-getAppliedSubstereotypes-_ownedParameter.0-_upperValue" value="*"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Element-getAppliedSubstereotypes-stereotype" name="stereotype" type="Stereotype" effect="read">
-          <ownedComment xmi:id="Element-getAppliedSubstereotypes-stereotype-_ownedComment.0" annotatedElement="Element-getAppliedSubstereotypes-stereotype">
-            <body>The superstereotype of the applied substereotypes to retrieve.</body>
-          </ownedComment>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Element-getModel" name="getModel" isQuery="true">
-        <ownedComment xmi:id="Element-getModel-_ownedComment.0" annotatedElement="Element-getModel">
-          <body>Retrieves the model that owns (either directly or indirectly) this element.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Element-getModel-_ownedParameter.0" type="Model" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-getModel-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-getModel-_ownedParameter.0-_upperValue" value="1"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Element-getNearestPackage" name="getNearestPackage" isQuery="true">
-        <ownedComment xmi:id="Element-getNearestPackage-_ownedComment.0" annotatedElement="Element-getNearestPackage">
-          <body>Retrieves the nearest package that owns (either directly or indirectly) this element, or the element itself (if it is a package).</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Element-getNearestPackage-_ownedParameter.0" type="Package" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-getNearestPackage-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-getNearestPackage-_ownedParameter.0-_upperValue" value="1"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Element-getRelationships" name="getRelationships">
-        <ownedComment xmi:id="Element-getRelationships-_ownedComment.0" annotatedElement="Element-getRelationships">
-          <body>Retrieves the relationships in which this element is involved.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Element-getRelationships-_ownedParameter.0" type="Relationship" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-getRelationships-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-getRelationships-_ownedParameter.0-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Element-getRelationships.1" name="getRelationships">
-        <ownedComment xmi:id="Element-getRelationships.1-_ownedComment.0" annotatedElement="Element-getRelationships.1">
-          <body>Retrieves the relationships of the specified type in which this element is involved.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Element-getRelationships.1-_ownedParameter.0" type="Relationship" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-getRelationships.1-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-getRelationships.1-_ownedParameter.0-_upperValue" value="*"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Element-getRelationships.1-eClass" name="eClass" effect="read">
-          <ownedComment xmi:id="Element-getRelationships.1-eClass-_ownedComment.0" annotatedElement="Element-getRelationships.1-eClass">
-            <body>The (meta)type of the relationships to retrieve.</body>
-          </ownedComment>
-          <type xmi:type="uml:Class" href="Ecore.metamodel.uml#EClass"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Element-getRequiredStereotype" name="getRequiredStereotype" isQuery="true">
-        <ownedComment xmi:id="Element-getRequiredStereotype-_ownedComment.0" annotatedElement="Element-getRequiredStereotype">
-          <body>Retrieves the stereotype with the specified qualified name that is required for this element, or null if no such stereotype is required.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Element-getRequiredStereotype-_ownedParameter.0" type="Stereotype" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-getRequiredStereotype-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-getRequiredStereotype-_ownedParameter.0-_upperValue" value="1"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Element-getRequiredStereotype-qualifiedName" name="qualifiedName" effect="read">
-          <ownedComment xmi:id="Element-getRequiredStereotype-qualifiedName-_ownedComment.0" annotatedElement="Element-getRequiredStereotype-qualifiedName">
-            <body>The qualified name of the required stereotype to retrieve.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Element-getRequiredStereotypes" name="getRequiredStereotypes" isQuery="true">
-        <ownedComment xmi:id="Element-getRequiredStereotypes-_ownedComment.0" annotatedElement="Element-getRequiredStereotypes">
-          <body>Retrieves the stereotypes that are required for this element.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Element-getRequiredStereotypes-_ownedParameter.0" type="Stereotype" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-getRequiredStereotypes-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-getRequiredStereotypes-_ownedParameter.0-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Element-getSourceDirectedRelationships" name="getSourceDirectedRelationships">
-        <ownedComment xmi:id="Element-getSourceDirectedRelationships-_ownedComment.0" annotatedElement="Element-getSourceDirectedRelationships">
-          <body>Retrieves the directed relationships for which this element is a source.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Element-getSourceDirectedRelationships-_ownedParameter.0" type="DirectedRelationship" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-getSourceDirectedRelationships-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-getSourceDirectedRelationships-_ownedParameter.0-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Element-getSourceDirectedRelationships.1" name="getSourceDirectedRelationships">
-        <ownedComment xmi:id="Element-getSourceDirectedRelationships.1-_ownedComment.0" annotatedElement="Element-getSourceDirectedRelationships.1">
-          <body>Retrieves the directed relationships of the specified type for which this element is a source.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Element-getSourceDirectedRelationships.1-_ownedParameter.0" type="DirectedRelationship" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-getSourceDirectedRelationships.1-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-getSourceDirectedRelationships.1-_ownedParameter.0-_upperValue" value="*"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Element-getSourceDirectedRelationships.1-eClass" name="eClass" effect="read">
-          <ownedComment xmi:id="Element-getSourceDirectedRelationships.1-eClass-_ownedComment.0" annotatedElement="Element-getSourceDirectedRelationships.1-eClass">
-            <body>The (meta)type of the directed relationships to retrieve.</body>
-          </ownedComment>
-          <type xmi:type="uml:Class" href="Ecore.metamodel.uml#EClass"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Element-getStereotypeApplication" name="getStereotypeApplication" isQuery="true">
-        <ownedComment xmi:id="Element-getStereotypeApplication-_ownedComment.0" annotatedElement="Element-getStereotypeApplication">
-          <body>Retrieves the application of the specified stereotype for this element, or null if no such stereotype application exists.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Element-getStereotypeApplication-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:Class" href="Ecore.metamodel.uml#EObject"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-getStereotypeApplication-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-getStereotypeApplication-_ownedParameter.0-_upperValue" value="1"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Element-getStereotypeApplication-stereotype" name="stereotype" type="Stereotype" effect="read">
-          <ownedComment xmi:id="Element-getStereotypeApplication-stereotype-_ownedComment.0" annotatedElement="Element-getStereotypeApplication-stereotype">
-            <body>The stereotype for which to retrieve an application.</body>
-          </ownedComment>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Element-getStereotypeApplications" name="getStereotypeApplications" isQuery="true">
-        <ownedComment xmi:id="Element-getStereotypeApplications-_ownedComment.0" annotatedElement="Element-getStereotypeApplications">
-          <body>Retrieves the stereotype applications for this element.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Element-getStereotypeApplications-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:Class" href="Ecore.metamodel.uml#EObject"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-getStereotypeApplications-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-getStereotypeApplications-_ownedParameter.0-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Element-getTargetDirectedRelationships" name="getTargetDirectedRelationships">
-        <ownedComment xmi:id="Element-getTargetDirectedRelationships-_ownedComment.0" annotatedElement="Element-getTargetDirectedRelationships">
-          <body>Retrieves the directed relationships for which this element is a target.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Element-getTargetDirectedRelationships-_ownedParameter.0" type="DirectedRelationship" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-getTargetDirectedRelationships-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-getTargetDirectedRelationships-_ownedParameter.0-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Element-getTargetDirectedRelationships.1" name="getTargetDirectedRelationships">
-        <ownedComment xmi:id="Element-getTargetDirectedRelationships.1-_ownedComment.0" annotatedElement="Element-getTargetDirectedRelationships.1">
-          <body>Retrieves the directed relationships of the specified type for which this element is a target.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Element-getTargetDirectedRelationships.1-_ownedParameter.0" type="DirectedRelationship" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-getTargetDirectedRelationships.1-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-getTargetDirectedRelationships.1-_ownedParameter.0-_upperValue" value="*"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Element-getTargetDirectedRelationships.1-eClass" name="eClass" effect="read">
-          <ownedComment xmi:id="Element-getTargetDirectedRelationships.1-eClass-_ownedComment.0" annotatedElement="Element-getTargetDirectedRelationships.1-eClass">
-            <body>The (meta)type of the directed relationships to retrieve.</body>
-          </ownedComment>
-          <type xmi:type="uml:Class" href="Ecore.metamodel.uml#EClass"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Element-getValue" name="getValue" isQuery="true">
-        <ownedComment xmi:id="Element-getValue-_ownedComment.0" annotatedElement="Element-getValue">
-          <body>Retrieves the value of the property with the specified name in the specified stereotype for this element.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Element-getValue-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="Ecore.metamodel.uml#EJavaObject"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-getValue-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-getValue-_ownedParameter.0-_upperValue" value="1"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Element-getValue-stereotype" name="stereotype" type="Stereotype" effect="read">
-          <ownedComment xmi:id="Element-getValue-stereotype-_ownedComment.0" annotatedElement="Element-getValue-stereotype">
-            <body>The stereotype for which to retrieve the value.</body>
-          </ownedComment>
-        </ownedParameter>
-        <ownedParameter xmi:id="Element-getValue-propertyName" name="propertyName" effect="read">
-          <ownedComment xmi:id="Element-getValue-propertyName-_ownedComment.0" annotatedElement="Element-getValue-propertyName">
-            <body>The name of the property whose value to retrieve.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Element-hasKeyword" name="hasKeyword" isQuery="true">
-        <ownedComment xmi:id="Element-hasKeyword-_ownedComment.0" annotatedElement="Element-hasKeyword">
-          <body>Determines whether this element has the specified keyword.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Element-hasKeyword-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Element-hasKeyword-keyword" name="keyword" effect="read">
-          <ownedComment xmi:id="Element-hasKeyword-keyword-_ownedComment.0" annotatedElement="Element-hasKeyword-keyword">
-            <body>The keyword in question.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Element-hasValue" name="hasValue" isQuery="true">
-        <ownedComment xmi:id="Element-hasValue-_ownedComment.0" annotatedElement="Element-hasValue">
-          <body>Determines whether this element has a (non-default) value for the property with the specified name in the specified stereotype.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Element-hasValue-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Element-hasValue-stereotype" name="stereotype" type="Stereotype" effect="read">
-          <ownedComment xmi:id="Element-hasValue-stereotype-_ownedComment.0" annotatedElement="Element-hasValue-stereotype">
-            <body>The stereotype for which to test the property.</body>
-          </ownedComment>
-        </ownedParameter>
-        <ownedParameter xmi:id="Element-hasValue-propertyName" name="propertyName" effect="read">
-          <ownedComment xmi:id="Element-hasValue-propertyName-_ownedComment.0" annotatedElement="Element-hasValue-propertyName">
-            <body>The name of the property in question.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Element-isStereotypeApplicable" name="isStereotypeApplicable" isQuery="true">
-        <ownedComment xmi:id="Element-isStereotypeApplicable-_ownedComment.0" annotatedElement="Element-isStereotypeApplicable">
-          <body>Determines whether the specified stereotype is applicable to this element.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Element-isStereotypeApplicable-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Element-isStereotypeApplicable-stereotype" name="stereotype" type="Stereotype" effect="read">
-          <ownedComment xmi:id="Element-isStereotypeApplicable-stereotype-_ownedComment.0" annotatedElement="Element-isStereotypeApplicable-stereotype">
-            <body>The stereotype in question.</body>
-          </ownedComment>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Element-isStereotypeApplied" name="isStereotypeApplied" isQuery="true">
-        <ownedComment xmi:id="Element-isStereotypeApplied-_ownedComment.0" annotatedElement="Element-isStereotypeApplied">
-          <body>Determines whether the specified stereotype is applied to this element.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Element-isStereotypeApplied-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Element-isStereotypeApplied-stereotype" name="stereotype" type="Stereotype" effect="read">
-          <ownedComment xmi:id="Element-isStereotypeApplied-stereotype-_ownedComment.0" annotatedElement="Element-isStereotypeApplied-stereotype">
-            <body>The stereotype in question.</body>
-          </ownedComment>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Element-isStereotypeRequired" name="isStereotypeRequired" isQuery="true">
-        <ownedComment xmi:id="Element-isStereotypeRequired-_ownedComment.0" annotatedElement="Element-isStereotypeRequired">
-          <body>Determines whether the specified stereotype is required for this element.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Element-isStereotypeRequired-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Element-isStereotypeRequired-stereotype" name="stereotype" type="Stereotype" effect="read">
-          <ownedComment xmi:id="Element-isStereotypeRequired-stereotype-_ownedComment.0" annotatedElement="Element-isStereotypeRequired-stereotype">
-            <body>The stereotype in question.</body>
-          </ownedComment>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Element-removeKeyword" name="removeKeyword">
-        <ownedComment xmi:id="Element-removeKeyword-_ownedComment.0" annotatedElement="Element-removeKeyword">
-          <body>Removes the specified keyword from this element.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Element-removeKeyword-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Element-removeKeyword-keyword" name="keyword" effect="read">
-          <ownedComment xmi:id="Element-removeKeyword-keyword-_ownedComment.0" annotatedElement="Element-removeKeyword-keyword">
-            <body>The keyword to remove.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Element-setValue" name="setValue">
-        <ownedComment xmi:id="Element-setValue-_ownedComment.0" annotatedElement="Element-setValue">
-          <body>Sets the value of the property with the specified name in the specified stereotype for this element.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Element-setValue-stereotype" name="stereotype" type="Stereotype" effect="read">
-          <ownedComment xmi:id="Element-setValue-stereotype-_ownedComment.0" annotatedElement="Element-setValue-stereotype">
-            <body>The stereotype for which to set the value.</body>
-          </ownedComment>
-        </ownedParameter>
-        <ownedParameter xmi:id="Element-setValue-propertyName" name="propertyName" effect="read">
-          <ownedComment xmi:id="Element-setValue-propertyName-_ownedComment.0" annotatedElement="Element-setValue-propertyName">
-            <body>The name of the property whose value to set.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Element-setValue-newValue" name="newValue" effect="read">
-          <ownedComment xmi:id="Element-setValue-newValue-_ownedComment.0" annotatedElement="Element-setValue-newValue">
-            <body>The new value for the property.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="Ecore.metamodel.uml#EJavaObject"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Element-unapplyStereotype" name="unapplyStereotype">
-        <ownedComment xmi:id="Element-unapplyStereotype-_ownedComment.0" annotatedElement="Element-unapplyStereotype">
-          <body>Unapplies the specified stereotype from this element.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Element-unapplyStereotype-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:Class" href="Ecore.metamodel.uml#EObject"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Element-unapplyStereotype-stereotype" name="stereotype" type="Stereotype" effect="read">
-          <ownedComment xmi:id="Element-unapplyStereotype-stereotype-_ownedComment.0" annotatedElement="Element-unapplyStereotype-stereotype">
-            <body>The stereotype to unapply.</body>
-          </ownedComment>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Element-allOwnedElements" name="allOwnedElements" bodyCondition="Element-allOwnedElements-spec" isQuery="true">
-        <ownedComment xmi:id="Element-allOwnedElements-_ownedComment.0" annotatedElement="Element-allOwnedElements">
-          <body>The query allOwnedElements() gives all of the direct and indirect ownedElements of an Element.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Element-allOwnedElements-spec" name="spec" constrainedElement="Element-allOwnedElements">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Element-allOwnedElements-spec-_specification">
-            <language>OCL</language>
-            <body>result = (ownedElement->union(ownedElement->collect(e | e.allOwnedElements()))->asSet())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Element-allOwnedElements-result" name="result" type="Element" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Element-allOwnedElements-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Element-allOwnedElements-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Element-mustBeOwned" name="mustBeOwned" bodyCondition="Element-mustBeOwned-spec" isQuery="true">
-        <ownedComment xmi:id="Element-mustBeOwned-_ownedComment.0" annotatedElement="Element-mustBeOwned">
-          <body>The query mustBeOwned() indicates whether Elements of this type must have an owner. Subclasses of Element that do not require an owner must override this operation.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Element-mustBeOwned-spec" name="spec" constrainedElement="Element-mustBeOwned">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Element-mustBeOwned-spec-_specification">
-            <language>OCL</language>
-            <body>result = (true)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Element-mustBeOwned-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ElementImport" name="ElementImport">
-      <ownedComment xmi:id="ElementImport-_ownedComment.0" annotatedElement="ElementImport">
-        <body>An ElementImport identifies a NamedElement in a Namespace other than the one that owns that NamedElement and allows the NamedElement to be referenced using an unqualified name in the Namespace owning the ElementImport.</body>
-      </ownedComment>
-      <ownedRule xmi:id="ElementImport-imported_element_is_public" name="imported_element_is_public" constrainedElement="ElementImport">
-        <ownedComment xmi:id="ElementImport-imported_element_is_public-_ownedComment.0" annotatedElement="ElementImport-imported_element_is_public">
-          <body>An importedElement has either public visibility or no visibility at all.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ElementImport-imported_element_is_public-_specification">
-          <language>OCL</language>
-          <body>importedElement.visibility &lt;> null implies importedElement.visibility = VisibilityKind::public</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ElementImport-visibility_public_or_private" name="visibility_public_or_private" constrainedElement="ElementImport">
-        <ownedComment xmi:id="ElementImport-visibility_public_or_private-_ownedComment.0" annotatedElement="ElementImport-visibility_public_or_private">
-          <body>The visibility of an ElementImport is either public or private.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ElementImport-visibility_public_or_private-_specification">
-          <language>OCL</language>
-          <body>visibility = VisibilityKind::public or visibility = VisibilityKind::private</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="ElementImport-_generalization.0" general="DirectedRelationship"/>
-      <ownedAttribute xmi:id="ElementImport-alias" name="alias">
-        <ownedComment xmi:id="ElementImport-alias-_ownedComment.0" annotatedElement="ElementImport-alias">
-          <body>Specifies the name that should be added to the importing Namespace in lieu of the name of the imported PackagableElement. The alias must not clash with any other member in the importing Namespace. By default, no alias is used.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ElementImport-alias-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ElementImport-importedElement" name="importedElement" type="PackageableElement" subsettedProperty="DirectedRelationship-target" association="A_importedElement_import">
-        <ownedComment xmi:id="ElementImport-importedElement-_ownedComment.0" annotatedElement="ElementImport-importedElement">
-          <body>Specifies the PackageableElement whose name is to be added to a Namespace.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ElementImport-importingNamespace" name="importingNamespace" type="Namespace" subsettedProperty="DirectedRelationship-source Element-owner" association="A_elementImport_importingNamespace">
-        <ownedComment xmi:id="ElementImport-importingNamespace-_ownedComment.0" annotatedElement="ElementImport-importingNamespace">
-          <body>Specifies the Namespace that imports a PackageableElement from another Namespace.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ElementImport-visibility" name="visibility" type="VisibilityKind">
-        <ownedComment xmi:id="ElementImport-visibility-_ownedComment.0" annotatedElement="ElementImport-visibility">
-          <body>Specifies the visibility of the imported PackageableElement within the importingNamespace, i.e., whether the  importedElement will in turn be visible to other Namespaces. If the ElementImport is public, the importedElement will be visible outside the importingNamespace while, if the ElementImport is private, it will not.</body>
-        </ownedComment>
-        <defaultValue xmi:type="uml:InstanceValue" xmi:id="ElementImport-visibility-_defaultValue" type="VisibilityKind" instance="VisibilityKind-public"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="ElementImport-getName" name="getName" bodyCondition="ElementImport-getName-spec" isQuery="true">
-        <ownedComment xmi:id="ElementImport-getName-_ownedComment.0" annotatedElement="ElementImport-getName">
-          <body>The query getName() returns the name under which the imported PackageableElement will be known in the importing namespace.</body>
-        </ownedComment>
-        <ownedRule xmi:id="ElementImport-getName-spec" name="spec" constrainedElement="ElementImport-getName">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="ElementImport-getName-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if alias->notEmpty() then
-  alias
-else
-  importedElement.name
-endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="ElementImport-getName-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="MultiplicityElement" name="MultiplicityElement" isAbstract="true">
-      <ownedComment xmi:id="MultiplicityElement-_ownedComment.0" annotatedElement="MultiplicityElement">
-        <body>A multiplicity is a definition of an inclusive interval of non-negative integers beginning with a lower bound and ending with a (possibly infinite) upper bound. A MultiplicityElement embeds this information to specify the allowable cardinalities for an instantiation of the Element.</body>
-      </ownedComment>
-      <ownedRule xmi:id="MultiplicityElement-upper_ge_lower" name="upper_ge_lower" constrainedElement="MultiplicityElement">
-        <ownedComment xmi:id="MultiplicityElement-upper_ge_lower-_ownedComment.0" annotatedElement="MultiplicityElement-upper_ge_lower">
-          <body>The upper bound must be greater than or equal to the lower bound.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-upper_ge_lower-_specification">
-          <language>OCL</language>
-          <body>upperBound() >= lowerBound()</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="MultiplicityElement-lower_ge_0" name="lower_ge_0" constrainedElement="MultiplicityElement">
-        <ownedComment xmi:id="MultiplicityElement-lower_ge_0-_ownedComment.0" annotatedElement="MultiplicityElement-lower_ge_0">
-          <body>The lower bound must be a non-negative integer literal.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-lower_ge_0-_specification">
-          <language>OCL</language>
-          <body>lowerBound() >= 0</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="MultiplicityElement-value_specification_no_side_effects" name="value_specification_no_side_effects" constrainedElement="MultiplicityElement">
-        <ownedComment xmi:id="MultiplicityElement-value_specification_no_side_effects-_ownedComment.0" annotatedElement="MultiplicityElement-value_specification_no_side_effects">
-          <body>If a non-literal ValueSpecification is used for lowerValue or upperValue, then evaluating that specification must not have side effects.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-value_specification_no_side_effects-_specification" language=""/>
-      </ownedRule>
-      <ownedRule xmi:id="MultiplicityElement-value_specification_constant" name="value_specification_constant" constrainedElement="MultiplicityElement">
-        <ownedComment xmi:id="MultiplicityElement-value_specification_constant-_ownedComment.0" annotatedElement="MultiplicityElement-value_specification_constant">
-          <body>If a non-literal ValueSpecification is used for lowerValue or upperValue, then that specification must be a constant expression.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-value_specification_constant-_specification" language=""/>
-      </ownedRule>
-      <ownedRule xmi:id="MultiplicityElement-lower_is_integer" name="lower_is_integer" constrainedElement="MultiplicityElement">
-        <ownedComment xmi:id="MultiplicityElement-lower_is_integer-_ownedComment.0" annotatedElement="MultiplicityElement-lower_is_integer">
-          <body>If it is not empty, then lowerValue must have an Integer value.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-lower_is_integer-_specification">
-          <language>OCL</language>
-          <body>lowerValue &lt;> null implies lowerValue.integerValue() &lt;> null</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="MultiplicityElement-upper_is_unlimitedNatural" name="upper_is_unlimitedNatural" constrainedElement="MultiplicityElement">
-        <ownedComment xmi:id="MultiplicityElement-upper_is_unlimitedNatural-_ownedComment.0" annotatedElement="MultiplicityElement-upper_is_unlimitedNatural">
-          <body>If it is not empty, then upperValue must have an UnlimitedNatural value.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-upper_is_unlimitedNatural-_specification">
-          <language>OCL</language>
-          <body>upperValue &lt;> null implies upperValue.unlimitedValue() &lt;> null</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="MultiplicityElement-_generalization.0" general="Element"/>
-      <ownedAttribute xmi:id="MultiplicityElement-isOrdered" name="isOrdered">
-        <ownedComment xmi:id="MultiplicityElement-isOrdered-_ownedComment.0" annotatedElement="MultiplicityElement-isOrdered">
-          <body>For a multivalued multiplicity, this attribute specifies whether the values in an instantiation of this MultiplicityElement are sequentially ordered.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="MultiplicityElement-isOrdered-_defaultValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="MultiplicityElement-isUnique" name="isUnique">
-        <ownedComment xmi:id="MultiplicityElement-isUnique-_ownedComment.0" annotatedElement="MultiplicityElement-isUnique">
-          <body>For a multivalued multiplicity, this attributes specifies whether the values in an instantiation of this MultiplicityElement are unique.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="MultiplicityElement-isUnique-_defaultValue" value="true"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="MultiplicityElement-lower" name="lower" isDerived="true">
-        <ownedComment xmi:id="MultiplicityElement-lower-_ownedComment.0" annotatedElement="MultiplicityElement-lower">
-          <body>The lower bound of the multiplicity interval.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        <defaultValue xmi:type="uml:LiteralInteger" xmi:id="MultiplicityElement-lower-_defaultValue" value="1"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="MultiplicityElement-lowerValue" name="lowerValue" type="ValueSpecification" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_lowerValue_owningLower">
-        <ownedComment xmi:id="MultiplicityElement-lowerValue-_ownedComment.0" annotatedElement="MultiplicityElement-lowerValue">
-          <body>The specification of the lower bound for this multiplicity.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="MultiplicityElement-lowerValue-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="MultiplicityElement-upper" name="upper" isDerived="true">
-        <ownedComment xmi:id="MultiplicityElement-upper-_ownedComment.0" annotatedElement="MultiplicityElement-upper">
-          <body>The upper bound of the multiplicity interval.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-        <defaultValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="MultiplicityElement-upper-_defaultValue" value="1"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="MultiplicityElement-upperValue" name="upperValue" type="ValueSpecification" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_upperValue_owningUpper">
-        <ownedComment xmi:id="MultiplicityElement-upperValue-_ownedComment.0" annotatedElement="MultiplicityElement-upperValue">
-          <body>The specification of the upper bound for this multiplicity.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="MultiplicityElement-upperValue-_lowerValue"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="MultiplicityElement-setLower" name="setLower" visibility="protected">
-        <ownedParameter xmi:id="MultiplicityElement-setLower-newLower" name="newLower" visibility="protected" effect="read">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="MultiplicityElement-setUpper" name="setUpper" visibility="protected">
-        <ownedParameter xmi:id="MultiplicityElement-setUpper-newUpper" name="newUpper" visibility="protected" effect="read">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="MultiplicityElement-compatibleWith" name="compatibleWith" bodyCondition="MultiplicityElement-compatibleWith-spec" isQuery="true">
-        <ownedComment xmi:id="MultiplicityElement-compatibleWith-_ownedComment.0" annotatedElement="MultiplicityElement-compatibleWith">
-          <body>The operation compatibleWith takes another multiplicity as input. It returns true if the other multiplicity is wider than, or the same as, self.</body>
-        </ownedComment>
-        <ownedRule xmi:id="MultiplicityElement-compatibleWith-spec" name="spec" constrainedElement="MultiplicityElement-compatibleWith">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-compatibleWith-spec-_specification">
-            <language>OCL</language>
-            <body>result = ((other.lowerBound() &lt;= self.lowerBound()) and ((other.upperBound() = *) or (self.upperBound() &lt;= other.upperBound())))</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="MultiplicityElement-compatibleWith-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="MultiplicityElement-compatibleWith-other" name="other" type="MultiplicityElement"/>
-      </ownedOperation>
-      <ownedOperation xmi:id="MultiplicityElement-includesMultiplicity" name="includesMultiplicity" bodyCondition="MultiplicityElement-includesMultiplicity-spec" isQuery="true" precondition="MultiplicityElement-includesMultiplicity-pre">
-        <ownedComment xmi:id="MultiplicityElement-includesMultiplicity-_ownedComment.0" annotatedElement="MultiplicityElement-includesMultiplicity">
-          <body>The query includesMultiplicity() checks whether this multiplicity includes all the cardinalities allowed by the specified multiplicity.</body>
-        </ownedComment>
-        <ownedRule xmi:id="MultiplicityElement-includesMultiplicity-pre" name="pre" constrainedElement="MultiplicityElement-includesMultiplicity">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-includesMultiplicity-pre-_specification">
-            <language>OCL</language>
-            <body>self.upperBound()->notEmpty() and self.lowerBound()->notEmpty() and M.upperBound()->notEmpty() and M.lowerBound()->notEmpty()</body>
-          </specification>
-        </ownedRule>
-        <ownedRule xmi:id="MultiplicityElement-includesMultiplicity-spec" name="spec" constrainedElement="MultiplicityElement-includesMultiplicity">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-includesMultiplicity-spec-_specification">
-            <language>OCL</language>
-            <body>result = ((self.lowerBound() &lt;= M.lowerBound()) and (self.upperBound() >= M.upperBound()))</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="MultiplicityElement-includesMultiplicity-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="MultiplicityElement-includesMultiplicity-M" name="M" type="MultiplicityElement"/>
-      </ownedOperation>
-      <ownedOperation xmi:id="MultiplicityElement-is" name="is" bodyCondition="MultiplicityElement-is-spec" isQuery="true">
-        <ownedComment xmi:id="MultiplicityElement-is-_ownedComment.0" annotatedElement="MultiplicityElement-is">
-          <body>The operation is determines if the upper and lower bound of the ranges are the ones given.</body>
-        </ownedComment>
-        <ownedRule xmi:id="MultiplicityElement-is-spec" name="spec" constrainedElement="MultiplicityElement-is">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-is-spec-_specification">
-            <language>OCL</language>
-            <body>result = (lowerbound = self.lowerBound() and upperbound = self.upperBound())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="MultiplicityElement-is-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="MultiplicityElement-is-lowerbound" name="lowerbound">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="MultiplicityElement-is-upperbound" name="upperbound">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="MultiplicityElement-isMultivalued" name="isMultivalued" bodyCondition="MultiplicityElement-isMultivalued-spec" isQuery="true" precondition="MultiplicityElement-isMultivalued-pre">
-        <ownedComment xmi:id="MultiplicityElement-isMultivalued-_ownedComment.0" annotatedElement="MultiplicityElement-isMultivalued">
-          <body>The query isMultivalued() checks whether this multiplicity has an upper bound greater than one.</body>
-        </ownedComment>
-        <ownedRule xmi:id="MultiplicityElement-isMultivalued-pre" name="pre" constrainedElement="MultiplicityElement-isMultivalued">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-isMultivalued-pre-_specification">
-            <language>OCL</language>
-            <body>upperBound()->notEmpty()</body>
-          </specification>
-        </ownedRule>
-        <ownedRule xmi:id="MultiplicityElement-isMultivalued-spec" name="spec" constrainedElement="MultiplicityElement-isMultivalued">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-isMultivalued-spec-_specification">
-            <language>OCL</language>
-            <body>result = (upperBound() > 1)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="MultiplicityElement-isMultivalued-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="MultiplicityElement-lower.1" name="lower" visibility="protected" bodyCondition="MultiplicityElement-lower.1-spec" isQuery="true">
-        <ownedComment xmi:id="MultiplicityElement-lower.1-_ownedComment.0" annotatedElement="MultiplicityElement-lower.1">
-          <body>The derived lower attribute must equal the lowerBound.</body>
-        </ownedComment>
-        <ownedRule xmi:id="MultiplicityElement-lower.1-spec" name="spec" constrainedElement="MultiplicityElement-lower.1 MultiplicityElement-lower">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-lower.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (lowerBound())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="MultiplicityElement-lower.1-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="MultiplicityElement-lower.1-result-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="MultiplicityElement-lowerBound" name="lowerBound" bodyCondition="MultiplicityElement-lowerBound-spec" isQuery="true">
-        <ownedComment xmi:id="MultiplicityElement-lowerBound-_ownedComment.0" annotatedElement="MultiplicityElement-lowerBound">
-          <body>The query lowerBound() returns the lower bound of the multiplicity as an integer, which is the integerValue of lowerValue, if this is given, and 1 otherwise.</body>
-        </ownedComment>
-        <ownedRule xmi:id="MultiplicityElement-lowerBound-spec" name="spec" constrainedElement="MultiplicityElement-lowerBound">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-lowerBound-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if (lowerValue=null or lowerValue.integerValue()=null) then 1 else lowerValue.integerValue() endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="MultiplicityElement-lowerBound-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="MultiplicityElement-upper.1" name="upper" visibility="protected" bodyCondition="MultiplicityElement-upper.1-spec" isQuery="true">
-        <ownedComment xmi:id="MultiplicityElement-upper.1-_ownedComment.0" annotatedElement="MultiplicityElement-upper.1">
-          <body>The derived upper attribute must equal the upperBound.</body>
-        </ownedComment>
-        <ownedRule xmi:id="MultiplicityElement-upper.1-spec" name="spec" constrainedElement="MultiplicityElement-upper.1 MultiplicityElement-upper">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-upper.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (upperBound())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="MultiplicityElement-upper.1-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="MultiplicityElement-upper.1-result-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="MultiplicityElement-upperBound" name="upperBound" bodyCondition="MultiplicityElement-upperBound-spec" isQuery="true">
-        <ownedComment xmi:id="MultiplicityElement-upperBound-_ownedComment.0" annotatedElement="MultiplicityElement-upperBound">
-          <body>The query upperBound() returns the upper bound of the multiplicity for a bounded multiplicity as an unlimited natural, which is the unlimitedNaturalValue of upperValue, if given, and 1, otherwise.</body>
-        </ownedComment>
-        <ownedRule xmi:id="MultiplicityElement-upperBound-spec" name="spec" constrainedElement="MultiplicityElement-upperBound">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="MultiplicityElement-upperBound-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if (upperValue=null or upperValue.unlimitedValue()=null) then 1 else upperValue.unlimitedValue() endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="MultiplicityElement-upperBound-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="NamedElement" name="NamedElement" isAbstract="true">
-      <ownedComment xmi:id="NamedElement-_ownedComment.0" annotatedElement="NamedElement">
-        <body>A NamedElement is an Element in a model that may have a name. The name may be given directly and/or via the use of a StringExpression.</body>
-      </ownedComment>
-      <ownedRule xmi:id="NamedElement-visibility_needs_ownership" name="visibility_needs_ownership" constrainedElement="NamedElement">
-        <ownedComment xmi:id="NamedElement-visibility_needs_ownership-_ownedComment.0" annotatedElement="NamedElement-visibility_needs_ownership">
-          <body>If a NamedElement is owned by something other than a Namespace, it does not have a visibility. One that is not owned by anything (and hence must be a Package, as this is the only kind of NamedElement that overrides mustBeOwned()) may have a visibility.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="NamedElement-visibility_needs_ownership-_specification">
-          <language>OCL</language>
-          <body>(namespace = null and owner &lt;> null) implies visibility = null</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="NamedElement-has_qualified_name" name="has_qualified_name" constrainedElement="NamedElement">
-        <ownedComment xmi:id="NamedElement-has_qualified_name-_ownedComment.0" annotatedElement="NamedElement-has_qualified_name">
-          <body>When there is a name, and all of the containing Namespaces have a name, the qualifiedName is constructed from the name of the NamedElement and the names of the containing Namespaces.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="NamedElement-has_qualified_name-_specification">
-          <language>OCL</language>
-          <body>(name &lt;> null and allNamespaces()->select(ns | ns.name = null)->isEmpty()) implies
-  qualifiedName = allNamespaces()->iterate( ns : Namespace; agg: String = name | ns.name.concat(self.separator()).concat(agg))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="NamedElement-has_no_qualified_name" name="has_no_qualified_name" constrainedElement="NamedElement">
-        <ownedComment xmi:id="NamedElement-has_no_qualified_name-_ownedComment.0" annotatedElement="NamedElement-has_no_qualified_name">
-          <body>If there is no name, or one of the containing Namespaces has no name, there is no qualifiedName.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="NamedElement-has_no_qualified_name-_specification">
-          <language>OCL</language>
-          <body>name=null or allNamespaces()->select( ns | ns.name=null )->notEmpty() implies qualifiedName = null</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="NamedElement-_generalization.0" general="Element"/>
-      <ownedAttribute xmi:id="NamedElement-clientDependency" name="clientDependency" type="Dependency" isReadOnly="true" isDerived="true" subsettedProperty="A_source_directedRelationship-directedRelationship" association="A_client_clientDependency">
-        <ownedComment xmi:id="NamedElement-clientDependency-_ownedComment.0" annotatedElement="NamedElement-clientDependency">
-          <body>Indicates the Dependencies that reference this NamedElement as a client.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="NamedElement-clientDependency-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="NamedElement-clientDependency-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="NamedElement-name" name="name">
-        <ownedComment xmi:id="NamedElement-name-_ownedComment.0" annotatedElement="NamedElement-name">
-          <body>The name of the NamedElement.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="NamedElement-name-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="NamedElement-nameExpression" name="nameExpression" type="StringExpression" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_nameExpression_namedElement">
-        <ownedComment xmi:id="NamedElement-nameExpression-_ownedComment.0" annotatedElement="NamedElement-nameExpression">
-          <body>The StringExpression used to define the name of this NamedElement.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="NamedElement-nameExpression-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="NamedElement-namespace" name="namespace" type="Namespace" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="A_member_memberNamespace-memberNamespace Element-owner" association="A_ownedMember_namespace">
-        <ownedComment xmi:id="NamedElement-namespace-_ownedComment.0" annotatedElement="NamedElement-namespace">
-          <body>Specifies the Namespace that owns the NamedElement.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="NamedElement-namespace-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="NamedElement-qualifiedName" name="qualifiedName" isReadOnly="true" isDerived="true">
-        <ownedComment xmi:id="NamedElement-qualifiedName-_ownedComment.0" annotatedElement="NamedElement-qualifiedName">
-          <body>A name that allows the NamedElement to be identified within a hierarchy of nested Namespaces. It is constructed from the names of the containing Namespaces starting at the root of the hierarchy and ending with the name of the NamedElement itself.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="NamedElement-qualifiedName-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="NamedElement-visibility" name="visibility" type="VisibilityKind">
-        <ownedComment xmi:id="NamedElement-visibility-_ownedComment.0" annotatedElement="NamedElement-visibility">
-          <body>Determines whether and how the NamedElement is visible outside its owning Namespace.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="NamedElement-visibility-_lowerValue"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="NamedElement-createDependency" name="createDependency">
-        <ownedComment xmi:id="NamedElement-createDependency-_ownedComment.0" annotatedElement="NamedElement-createDependency">
-          <body>Creates a dependency between this named element and the specified supplier, owned by this named element's nearest package.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="NamedElement-createDependency-_ownedParameter.0" type="Dependency" direction="return"/>
-        <ownedParameter xmi:id="NamedElement-createDependency-supplier" name="supplier" type="NamedElement" effect="read">
-          <ownedComment xmi:id="NamedElement-createDependency-supplier-_ownedComment.0" annotatedElement="NamedElement-createDependency-supplier">
-            <body>The supplier for the new dependency.</body>
-          </ownedComment>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="NamedElement-createUsage" name="createUsage">
-        <ownedComment xmi:id="NamedElement-createUsage-_ownedComment.0" annotatedElement="NamedElement-createUsage">
-          <body>Creates a usage between this named element and the specified supplier, owned by this named element's nearest package.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="NamedElement-createUsage-_ownedParameter.0" type="Usage" direction="return"/>
-        <ownedParameter xmi:id="NamedElement-createUsage-supplier" name="supplier" type="NamedElement">
-          <ownedComment xmi:id="NamedElement-createUsage-supplier-_ownedComment.0" annotatedElement="NamedElement-createUsage-supplier">
-            <body>The supplier for the new usage.</body>
-          </ownedComment>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="NamedElement-getLabel" name="getLabel" isQuery="true">
-        <ownedComment xmi:id="NamedElement-getLabel-_ownedComment.0" annotatedElement="NamedElement-getLabel">
-          <body>Retrieves a localized label for this named element.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="NamedElement-getLabel-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="NamedElement-getLabel-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="NamedElement-getLabel-_ownedParameter.0-_upperValue" value="1"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="NamedElement-getLabel.1" name="getLabel" isQuery="true">
-        <ownedComment xmi:id="NamedElement-getLabel.1-_ownedComment.0" annotatedElement="NamedElement-getLabel.1">
-          <body>Retrieves a label for this named element, localized if indicated.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="NamedElement-getLabel.1-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="NamedElement-getLabel.1-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="NamedElement-getLabel.1-_ownedParameter.0-_upperValue" value="1"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="NamedElement-getLabel.1-localize" name="localize" effect="read">
-          <ownedComment xmi:id="NamedElement-getLabel.1-localize-_ownedComment.0" annotatedElement="NamedElement-getLabel.1-localize">
-            <body>Whether to localize the label.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="NamedElement-namespace.1" name="namespace" visibility="protected">
-        <ownedParameter xmi:id="NamedElement-namespace.1-result" name="result" type="Namespace" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="NamedElement-namespace.1-result-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="NamedElement-allNamespaces" name="allNamespaces" bodyCondition="NamedElement-allNamespaces-spec" isQuery="true">
-        <ownedComment xmi:id="NamedElement-allNamespaces-_ownedComment.0" annotatedElement="NamedElement-allNamespaces">
-          <body>The query allNamespaces() gives the sequence of Namespaces in which the NamedElement is nested, working outwards.</body>
-        </ownedComment>
-        <ownedRule xmi:id="NamedElement-allNamespaces-spec" name="spec" constrainedElement="NamedElement-allNamespaces">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="NamedElement-allNamespaces-spec-_specification">
-            <language>OCL</language>
-            <body>result = (
-if owner = null
-  then OrderedSet{}
-else
-  let enclosingNamespace : Namespace =
-    if owner.oclIsKindOf(TemplateParameter) and owner.oclAsType(TemplateParameter).signature.template.oclIsKindOf(Namespace)
-      then owner.oclAsType(TemplateParameter).signature.template.oclAsType(Namespace)
-    else
-      namespace
-    endif
-  in enclosingNamespace.allNamespaces()->prepend(enclosingNamespace)
-endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="NamedElement-allNamespaces-result" name="result" type="Namespace" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="NamedElement-allNamespaces-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="NamedElement-allNamespaces-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="NamedElement-allOwningPackages" name="allOwningPackages" bodyCondition="NamedElement-allOwningPackages-spec" isQuery="true">
-        <ownedComment xmi:id="NamedElement-allOwningPackages-_ownedComment.0" annotatedElement="NamedElement-allOwningPackages">
-          <body>The query allOwningPackages() returns the set of all the enclosing Namespaces of this NamedElement, working outwards, that are Packages, up to but not including the first such Namespace that is not a Package.</body>
-        </ownedComment>
-        <ownedRule xmi:id="NamedElement-allOwningPackages-spec" name="spec" constrainedElement="NamedElement-allOwningPackages">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="NamedElement-allOwningPackages-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if namespace.oclIsKindOf(Package)&#xD;
-then&#xD;
-  let owningPackage : Package = namespace.oclAsType(Package) in&#xD;
-    owningPackage->union(owningPackage.allOwningPackages())&#xD;
-else&#xD;
-  null&#xD;
-endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="NamedElement-allOwningPackages-result" name="result" type="Package" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="NamedElement-allOwningPackages-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="NamedElement-allOwningPackages-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="NamedElement-isDistinguishableFrom" name="isDistinguishableFrom" bodyCondition="NamedElement-isDistinguishableFrom-spec" isQuery="true">
-        <ownedComment xmi:id="NamedElement-isDistinguishableFrom-_ownedComment.0" annotatedElement="NamedElement-isDistinguishableFrom">
-          <body>The query isDistinguishableFrom() determines whether two NamedElements may logically co-exist within a Namespace. By default, two named elements are distinguishable if (a) they have types neither of which is a kind of the other or (b) they have different names.</body>
-        </ownedComment>
-        <ownedRule xmi:id="NamedElement-isDistinguishableFrom-spec" name="spec" constrainedElement="NamedElement-isDistinguishableFrom">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="NamedElement-isDistinguishableFrom-spec-_specification">
-            <language>OCL</language>
-            <body>result = ((self.oclIsKindOf(n.oclType()) or n.oclIsKindOf(self.oclType())) implies
-    ns.getNamesOfMember(self)->intersection(ns.getNamesOfMember(n))->isEmpty()
-)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="NamedElement-isDistinguishableFrom-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="NamedElement-isDistinguishableFrom-n" name="n" type="NamedElement"/>
-        <ownedParameter xmi:id="NamedElement-isDistinguishableFrom-ns" name="ns" type="Namespace"/>
-      </ownedOperation>
-      <ownedOperation xmi:id="NamedElement-qualifiedName.1" name="qualifiedName" visibility="protected" bodyCondition="NamedElement-qualifiedName.1-spec" isQuery="true">
-        <ownedComment xmi:id="NamedElement-qualifiedName.1-_ownedComment.0" annotatedElement="NamedElement-qualifiedName.1">
-          <body>When a NamedElement has a name, and all of its containing Namespaces have a name, the qualifiedName is constructed from the name of the NamedElement and the names of the containing Namespaces.</body>
-        </ownedComment>
-        <ownedRule xmi:id="NamedElement-qualifiedName.1-spec" name="spec" constrainedElement="NamedElement-qualifiedName.1 NamedElement-qualifiedName">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="NamedElement-qualifiedName.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if self.name &lt;> null and self.allNamespaces()->select( ns | ns.name=null )->isEmpty()
-then 
-    self.allNamespaces()->iterate( ns : Namespace; agg: String = self.name | ns.name.concat(self.separator()).concat(agg))
-else
-   null
-endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="NamedElement-qualifiedName.1-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="NamedElement-qualifiedName.1-result-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="NamedElement-separator" name="separator" bodyCondition="NamedElement-separator-spec" isQuery="true">
-        <ownedComment xmi:id="NamedElement-separator-_ownedComment.0" annotatedElement="NamedElement-separator">
-          <body>The query separator() gives the string that is used to separate names when constructing a qualifiedName.</body>
-        </ownedComment>
-        <ownedRule xmi:id="NamedElement-separator-spec" name="spec" constrainedElement="NamedElement-separator">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="NamedElement-separator-spec-_specification">
-            <language>OCL</language>
-            <body>result = ('::')</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="NamedElement-separator-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="NamedElement-clientDependency.1" name="clientDependency" visibility="protected" bodyCondition="NamedElement-clientDependency.1-spec" isQuery="true">
-        <ownedRule xmi:id="NamedElement-clientDependency.1-spec" name="spec" constrainedElement="NamedElement-clientDependency.1 NamedElement-clientDependency">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="NamedElement-clientDependency.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (Dependency.allInstances()->select(d | d.client->includes(self)))</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="NamedElement-clientDependency.1-result" name="result" type="Dependency" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="NamedElement-clientDependency.1-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="NamedElement-clientDependency.1-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Namespace" name="Namespace" isAbstract="true">
-      <ownedComment xmi:id="Namespace-_ownedComment.0" annotatedElement="Namespace">
-        <body>A Namespace is an Element in a model that owns and/or imports a set of NamedElements that can be identified by name.</body>
-      </ownedComment>
-      <ownedRule xmi:id="Namespace-members_distinguishable" name="members_distinguishable" constrainedElement="Namespace">
-        <ownedComment xmi:id="Namespace-members_distinguishable-_ownedComment.0" annotatedElement="Namespace-members_distinguishable">
-          <body>All the members of a Namespace are distinguishable within it.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Namespace-members_distinguishable-_specification">
-          <language>OCL</language>
-          <body>membersAreDistinguishable()</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Namespace-cannot_import_self" name="cannot_import_self" constrainedElement="Namespace">
-        <ownedComment xmi:id="Namespace-cannot_import_self-_ownedComment.0" annotatedElement="Namespace-cannot_import_self">
-          <body>A Namespace cannot have a PackageImport to itself.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Namespace-cannot_import_self-_specification">
-          <language>OCL</language>
-          <body>packageImport.importedPackage.oclAsType(Namespace)->excludes(self)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Namespace-cannot_import_ownedMembers" name="cannot_import_ownedMembers" constrainedElement="Namespace">
-        <ownedComment xmi:id="Namespace-cannot_import_ownedMembers-_ownedComment.0" annotatedElement="Namespace-cannot_import_ownedMembers">
-          <body>A Namespace cannot have an ElementImport to one of its ownedMembers.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Namespace-cannot_import_ownedMembers-_specification">
-          <language>OCL</language>
-          <body>elementImport.importedElement.oclAsType(Element)->excludesAll(ownedMember)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="Namespace-_generalization.0" general="NamedElement"/>
-      <ownedAttribute xmi:id="Namespace-elementImport" name="elementImport" type="ElementImport" aggregation="composite" subsettedProperty="A_source_directedRelationship-directedRelationship Element-ownedElement" association="A_elementImport_importingNamespace">
-        <ownedComment xmi:id="Namespace-elementImport-_ownedComment.0" annotatedElement="Namespace-elementImport">
-          <body>References the ElementImports owned by the Namespace.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-elementImport-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-elementImport-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Namespace-importedMember" name="importedMember" type="PackageableElement" isReadOnly="true" isDerived="true" subsettedProperty="Namespace-member" association="A_importedMember_namespace">
-        <ownedComment xmi:id="Namespace-importedMember-_ownedComment.0" annotatedElement="Namespace-importedMember">
-          <body>References the PackageableElements that are members of this Namespace as a result of either PackageImports or ElementImports.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-importedMember-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-importedMember-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Namespace-member" name="member" type="NamedElement" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="A_member_memberNamespace">
-        <ownedComment xmi:id="Namespace-member-_ownedComment.0" annotatedElement="Namespace-member">
-          <body>A collection of NamedElements identifiable within the Namespace, either by being owned or by being introduced by importing or inheritance.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-member-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-member-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Namespace-ownedMember" name="ownedMember" type="NamedElement" isReadOnly="true" aggregation="composite" isDerived="true" isDerivedUnion="true" subsettedProperty="Element-ownedElement Namespace-member" association="A_ownedMember_namespace">
-        <ownedComment xmi:id="Namespace-ownedMember-_ownedComment.0" annotatedElement="Namespace-ownedMember">
-          <body>A collection of NamedElements owned by the Namespace.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-ownedMember-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-ownedMember-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Namespace-ownedRule" name="ownedRule" type="Constraint" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_ownedRule_context">
-        <ownedComment xmi:id="Namespace-ownedRule-_ownedComment.0" annotatedElement="Namespace-ownedRule">
-          <body>Specifies a set of Constraints owned by this Namespace.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-ownedRule-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-ownedRule-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Namespace-packageImport" name="packageImport" type="PackageImport" aggregation="composite" subsettedProperty="A_source_directedRelationship-directedRelationship Element-ownedElement" association="A_packageImport_importingNamespace">
-        <ownedComment xmi:id="Namespace-packageImport-_ownedComment.0" annotatedElement="Namespace-packageImport">
-          <body>References the PackageImports owned by the Namespace.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-packageImport-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-packageImport-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="Namespace-createElementImport" name="createElementImport">
-        <ownedComment xmi:id="Namespace-createElementImport-_ownedComment.0" annotatedElement="Namespace-createElementImport">
-          <body>Creates an import of the specified element into this namespace with the specified visibility.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Namespace-createElementImport-_ownedParameter.0" type="ElementImport" direction="return"/>
-        <ownedParameter xmi:id="Namespace-createElementImport-element" name="element" type="PackageableElement" effect="read">
-          <ownedComment xmi:id="Namespace-createElementImport-element-_ownedComment.0" annotatedElement="Namespace-createElementImport-element">
-            <body>The element to import.</body>
-          </ownedComment>
-        </ownedParameter>
-        <ownedParameter xmi:id="Namespace-createElementImport-visibility" name="visibility" type="VisibilityKind" effect="read">
-          <ownedComment xmi:id="Namespace-createElementImport-visibility-_ownedComment.0" annotatedElement="Namespace-createElementImport-visibility">
-            <body>The visibility for the new element import.</body>
-          </ownedComment>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Namespace-createPackageImport" name="createPackageImport">
-        <ownedComment xmi:id="Namespace-createPackageImport-_ownedComment.0" annotatedElement="Namespace-createPackageImport">
-          <body>Creates an import of the specified package into this namespace with the specified visibility.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Namespace-createPackageImport-_ownedParameter.0" type="PackageImport" direction="return"/>
-        <ownedParameter xmi:id="Namespace-createPackageImport-package_" name="package_" type="Package" effect="read">
-          <ownedComment xmi:id="Namespace-createPackageImport-package_-_ownedComment.0" annotatedElement="Namespace-createPackageImport-package_">
-            <body>The package to import.</body>
-          </ownedComment>
-        </ownedParameter>
-        <ownedParameter xmi:id="Namespace-createPackageImport-visibility" name="visibility" type="VisibilityKind" effect="read">
-          <ownedComment xmi:id="Namespace-createPackageImport-visibility-_ownedComment.0" annotatedElement="Namespace-createPackageImport-visibility">
-            <body>The visibility for the new package import.</body>
-          </ownedComment>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Namespace-getImportedElements" name="getImportedElements" isQuery="true">
-        <ownedComment xmi:id="Namespace-getImportedElements-_ownedComment.0" annotatedElement="Namespace-getImportedElements">
-          <body>Retrieves the elements imported by this namespace.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Namespace-getImportedElements-_ownedParameter.0" type="PackageableElement" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-getImportedElements-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-getImportedElements-_ownedParameter.0-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Namespace-getImportedPackages" name="getImportedPackages" isQuery="true">
-        <ownedComment xmi:id="Namespace-getImportedPackages-_ownedComment.0" annotatedElement="Namespace-getImportedPackages">
-          <body>Retrieves the packages imported by this namespace.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Namespace-getImportedPackages-_ownedParameter.0" type="Package" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-getImportedPackages-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-getImportedPackages-_ownedParameter.0-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Namespace-ownedMember.1" name="ownedMember" visibility="protected">
-        <ownedParameter xmi:id="Namespace-ownedMember.1-result" name="result" type="NamedElement" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-ownedMember.1-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-ownedMember.1-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Namespace-excludeCollisions" name="excludeCollisions" bodyCondition="Namespace-excludeCollisions-spec" isQuery="true">
-        <ownedComment xmi:id="Namespace-excludeCollisions-_ownedComment.0" annotatedElement="Namespace-excludeCollisions">
-          <body>The query excludeCollisions() excludes from a set of PackageableElements any that would not be distinguishable from each other in this Namespace.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Namespace-excludeCollisions-spec" name="spec" constrainedElement="Namespace-excludeCollisions">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Namespace-excludeCollisions-spec-_specification">
-            <language>OCL</language>
-            <body>result = (imps->reject(imp1  | imps->exists(imp2 | not imp1.isDistinguishableFrom(imp2, self))))</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Namespace-excludeCollisions-result" name="result" type="PackageableElement" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-excludeCollisions-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-excludeCollisions-result-_upperValue" value="*"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Namespace-excludeCollisions-imps" name="imps" type="PackageableElement">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-excludeCollisions-imps-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-excludeCollisions-imps-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Namespace-getNamesOfMember" name="getNamesOfMember" bodyCondition="Namespace-getNamesOfMember-spec" isQuery="true">
-        <ownedComment xmi:id="Namespace-getNamesOfMember-_ownedComment.0" annotatedElement="Namespace-getNamesOfMember">
-          <body>The query getNamesOfMember() gives a set of all of the names that a member would have in a Namespace, taking importing into account. In general a member can have multiple names in a Namespace if it is imported more than once with different aliases.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Namespace-getNamesOfMember-spec" name="spec" constrainedElement="Namespace-getNamesOfMember">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Namespace-getNamesOfMember-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if self.ownedMember ->includes(element)
-then Set{element.name}
-else let elementImports : Set(ElementImport) = self.elementImport->select(ei | ei.importedElement = element) in
-  if elementImports->notEmpty()
-  then
-     elementImports->collect(el | el.getName())->asSet()
-  else 
-     self.packageImport->select(pi | pi.importedPackage.visibleMembers().oclAsType(NamedElement)->includes(element))-> collect(pi | pi.importedPackage.getNamesOfMember(element))->asSet()
-  endif
-endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Namespace-getNamesOfMember-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-getNamesOfMember-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-getNamesOfMember-result-_upperValue" value="*"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Namespace-getNamesOfMember-element" name="element" type="NamedElement"/>
-      </ownedOperation>
-      <ownedOperation xmi:id="Namespace-importMembers" name="importMembers" bodyCondition="Namespace-importMembers-spec" isQuery="true">
-        <ownedComment xmi:id="Namespace-importMembers-_ownedComment.0" annotatedElement="Namespace-importMembers">
-          <body>The query importMembers() defines which of a set of PackageableElements are actually imported into the Namespace. This excludes hidden ones, i.e., those which have names that conflict with names of ownedMembers, and it also excludes PackageableElements that would have the indistinguishable names when imported.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Namespace-importMembers-spec" name="spec" constrainedElement="Namespace-importMembers">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Namespace-importMembers-spec-_specification">
-            <language>OCL</language>
-            <body>result = (self.excludeCollisions(imps)->select(imp | self.ownedMember->forAll(mem | imp.isDistinguishableFrom(mem, self))))</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Namespace-importMembers-result" name="result" type="PackageableElement" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-importMembers-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-importMembers-result-_upperValue" value="*"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Namespace-importMembers-imps" name="imps" type="PackageableElement">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-importMembers-imps-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-importMembers-imps-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Namespace-importedMember.1" name="importedMember" visibility="protected" bodyCondition="Namespace-importedMember.1-spec" isQuery="true">
-        <ownedComment xmi:id="Namespace-importedMember.1-_ownedComment.0" annotatedElement="Namespace-importedMember.1">
-          <body>The importedMember property is derived as the PackageableElements that are members of this Namespace as a result of either PackageImports or ElementImports.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Namespace-importedMember.1-spec" name="spec" constrainedElement="Namespace-importedMember.1 Namespace-importedMember">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Namespace-importedMember.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (self.importMembers(elementImport.importedElement->asSet()->union(packageImport.importedPackage->collect(p | p.visibleMembers()))->asSet()))</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Namespace-importedMember.1-result" name="result" type="PackageableElement" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Namespace-importedMember.1-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Namespace-importedMember.1-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Namespace-membersAreDistinguishable" name="membersAreDistinguishable" bodyCondition="Namespace-membersAreDistinguishable-spec" isQuery="true">
-        <ownedComment xmi:id="Namespace-membersAreDistinguishable-_ownedComment.0" annotatedElement="Namespace-membersAreDistinguishable">
-          <body>The Boolean query membersAreDistinguishable() determines whether all of the Namespace's members are distinguishable within it.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Namespace-membersAreDistinguishable-spec" name="spec" constrainedElement="Namespace-membersAreDistinguishable">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Namespace-membersAreDistinguishable-spec-_specification">
-            <language>OCL</language>
-            <body>result = (member->forAll( memb |
-   member->excluding(memb)->forAll(other |
-       memb.isDistinguishableFrom(other, self))))</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Namespace-membersAreDistinguishable-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="PackageableElement" name="PackageableElement" isAbstract="true">
-      <ownedComment xmi:id="PackageableElement-_ownedComment.0" annotatedElement="PackageableElement">
-        <body>A PackageableElement is a NamedElement that may be owned directly by a Package. A PackageableElement is also able to serve as the parameteredElement of a TemplateParameter.</body>
-      </ownedComment>
-      <ownedRule xmi:id="PackageableElement-namespace_needs_visibility" name="namespace_needs_visibility" constrainedElement="PackageableElement">
-        <ownedComment xmi:id="PackageableElement-namespace_needs_visibility-_ownedComment.0" annotatedElement="PackageableElement-namespace_needs_visibility">
-          <body>A PackageableElement owned by a Namespace must have a visibility.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="PackageableElement-namespace_needs_visibility-_specification">
-          <language>OCL</language>
-          <body>visibility = null implies namespace = null</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="PackageableElement-_generalization.0" general="ParameterableElement"/>
-      <generalization xmi:id="PackageableElement-_generalization.1" general="NamedElement"/>
-      <ownedAttribute xmi:id="PackageableElement-visibility" name="visibility" type="VisibilityKind" redefinedProperty="NamedElement-visibility">
-        <ownedComment xmi:id="PackageableElement-visibility-_ownedComment.0" annotatedElement="PackageableElement-visibility">
-          <body>A PackageableElement must have a visibility specified if it is owned by a Namespace. The default visibility is public.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PackageableElement-visibility-_lowerValue"/>
-        <defaultValue xmi:type="uml:InstanceValue" xmi:id="PackageableElement-visibility-_defaultValue" type="VisibilityKind" instance="VisibilityKind-public"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="PackageImport" name="PackageImport">
-      <ownedComment xmi:id="PackageImport-_ownedComment.0" annotatedElement="PackageImport">
-        <body>A PackageImport is a Relationship that imports all the non-private members of a Package into the Namespace owning the PackageImport, so that those Elements may be referred to by their unqualified names in the importingNamespace.</body>
-      </ownedComment>
-      <ownedRule xmi:id="PackageImport-public_or_private" name="public_or_private" constrainedElement="PackageImport">
-        <ownedComment xmi:id="PackageImport-public_or_private-_ownedComment.0" annotatedElement="PackageImport-public_or_private">
-          <body>The visibility of a PackageImport is either public or private.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="PackageImport-public_or_private-_specification">
-          <language>OCL</language>
-          <body>visibility = VisibilityKind::public or visibility = VisibilityKind::private</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="PackageImport-_generalization.0" general="DirectedRelationship"/>
-      <ownedAttribute xmi:id="PackageImport-importedPackage" name="importedPackage" type="Package" subsettedProperty="DirectedRelationship-target" association="A_importedPackage_packageImport">
-        <ownedComment xmi:id="PackageImport-importedPackage-_ownedComment.0" annotatedElement="PackageImport-importedPackage">
-          <body>Specifies the Package whose members are imported into a Namespace.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="PackageImport-importingNamespace" name="importingNamespace" type="Namespace" subsettedProperty="DirectedRelationship-source Element-owner" association="A_packageImport_importingNamespace">
-        <ownedComment xmi:id="PackageImport-importingNamespace-_ownedComment.0" annotatedElement="PackageImport-importingNamespace">
-          <body>Specifies the Namespace that imports the members from a Package.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="PackageImport-visibility" name="visibility" type="VisibilityKind">
-        <ownedComment xmi:id="PackageImport-visibility-_ownedComment.0" annotatedElement="PackageImport-visibility">
-          <body>Specifies the visibility of the imported PackageableElements within the importingNamespace, i.e., whether imported Elements will in turn be visible to other Namespaces. If the PackageImport is public, the imported Elements will be visible outside the importingNamespace, while, if the PackageImport is private, they will not.</body>
-        </ownedComment>
-        <defaultValue xmi:type="uml:InstanceValue" xmi:id="PackageImport-visibility-_defaultValue" type="VisibilityKind" instance="VisibilityKind-public"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ParameterableElement" name="ParameterableElement" isAbstract="true">
-      <ownedComment xmi:id="ParameterableElement-_ownedComment.0" annotatedElement="ParameterableElement">
-        <body>A ParameterableElement is an Element that can be exposed as a formal TemplateParameter for a template, or specified as an actual parameter in a binding of a template.</body>
-      </ownedComment>
-      <generalization xmi:id="ParameterableElement-_generalization.0" general="Element"/>
-      <ownedAttribute xmi:id="ParameterableElement-owningTemplateParameter" name="owningTemplateParameter" type="TemplateParameter" subsettedProperty="Element-owner ParameterableElement-templateParameter" association="A_ownedParameteredElement_owningTemplateParameter">
-        <ownedComment xmi:id="ParameterableElement-owningTemplateParameter-_ownedComment.0" annotatedElement="ParameterableElement-owningTemplateParameter">
-          <body>The formal TemplateParameter that owns this ParameterableElement.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ParameterableElement-owningTemplateParameter-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ParameterableElement-templateParameter" name="templateParameter" type="TemplateParameter" association="A_parameteredElement_templateParameter">
-        <ownedComment xmi:id="ParameterableElement-templateParameter-_ownedComment.0" annotatedElement="ParameterableElement-templateParameter">
-          <body>The TemplateParameter that exposes this ParameterableElement as a formal parameter.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ParameterableElement-templateParameter-_lowerValue"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="ParameterableElement-isCompatibleWith" name="isCompatibleWith" bodyCondition="ParameterableElement-isCompatibleWith-spec" isQuery="true">
-        <ownedComment xmi:id="ParameterableElement-isCompatibleWith-_ownedComment.0" annotatedElement="ParameterableElement-isCompatibleWith">
-          <body>The query isCompatibleWith() determines if this ParameterableElement is compatible with the specified ParameterableElement. By default, this ParameterableElement is compatible with another ParameterableElement p if the kind of this ParameterableElement is the same as or a subtype of the kind of p. Subclasses of ParameterableElement should override this operation to specify different compatibility constraints.</body>
-        </ownedComment>
-        <ownedRule xmi:id="ParameterableElement-isCompatibleWith-spec" name="spec" constrainedElement="ParameterableElement-isCompatibleWith">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="ParameterableElement-isCompatibleWith-spec-_specification">
-            <language>OCL</language>
-            <body>result = (self.oclIsKindOf(p.oclType()))</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="ParameterableElement-isCompatibleWith-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="ParameterableElement-isCompatibleWith-p" name="p" type="ParameterableElement"/>
-      </ownedOperation>
-      <ownedOperation xmi:id="ParameterableElement-isTemplateParameter" name="isTemplateParameter" bodyCondition="ParameterableElement-isTemplateParameter-spec" isQuery="true">
-        <ownedComment xmi:id="ParameterableElement-isTemplateParameter-_ownedComment.0" annotatedElement="ParameterableElement-isTemplateParameter">
-          <body>The query isTemplateParameter() determines if this ParameterableElement is exposed as a formal TemplateParameter.</body>
-        </ownedComment>
-        <ownedRule xmi:id="ParameterableElement-isTemplateParameter-spec" name="spec" constrainedElement="ParameterableElement-isTemplateParameter">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="ParameterableElement-isTemplateParameter-spec-_specification">
-            <language>OCL</language>
-            <body>result = (templateParameter->notEmpty())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="ParameterableElement-isTemplateParameter-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Realization" name="Realization">
-      <ownedComment xmi:id="Realization-_ownedComment.0" annotatedElement="Realization">
-        <body>Realization is a specialized Abstraction relationship between two sets of model Elements, one representing a specification (the supplier) and the other represents an implementation of the latter (the client). Realization can be used to model stepwise refinement, optimizations, transformations, templates, model synthesis, framework composition, etc.</body>
-      </ownedComment>
-      <generalization xmi:id="Realization-_generalization.0" general="Abstraction"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Relationship" name="Relationship" isAbstract="true">
-      <ownedComment xmi:id="Relationship-_ownedComment.0" annotatedElement="Relationship">
-        <body>Relationship is an abstract concept that specifies some kind of relationship between Elements.</body>
-      </ownedComment>
-      <generalization xmi:id="Relationship-_generalization.0" general="Element"/>
-      <ownedAttribute xmi:id="Relationship-relatedElement" name="relatedElement" type="Element" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="A_relatedElement_relationship">
-        <ownedComment xmi:id="Relationship-relatedElement-_ownedComment.0" annotatedElement="Relationship-relatedElement">
-          <body>Specifies the elements related by the Relationship.</body>
-        </ownedComment>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Relationship-relatedElement-_upperValue" value="*"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="TemplateableElement" name="TemplateableElement" isAbstract="true">
-      <ownedComment xmi:id="TemplateableElement-_ownedComment.0" annotatedElement="TemplateableElement">
-        <body>A TemplateableElement is an Element that can optionally be defined as a template and bound to other templates.</body>
-      </ownedComment>
-      <generalization xmi:id="TemplateableElement-_generalization.0" general="Element"/>
-      <ownedAttribute xmi:id="TemplateableElement-ownedTemplateSignature" name="ownedTemplateSignature" type="TemplateSignature" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_ownedTemplateSignature_template">
-        <ownedComment xmi:id="TemplateableElement-ownedTemplateSignature-_ownedComment.0" annotatedElement="TemplateableElement-ownedTemplateSignature">
-          <body>The optional TemplateSignature specifying the formal TemplateParameters for this TemplateableElement. If a TemplateableElement has a TemplateSignature, then it is a template.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="TemplateableElement-ownedTemplateSignature-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="TemplateableElement-templateBinding" name="templateBinding" type="TemplateBinding" aggregation="composite" subsettedProperty="A_source_directedRelationship-directedRelationship Element-ownedElement" association="A_templateBinding_boundElement">
-        <ownedComment xmi:id="TemplateableElement-templateBinding-_ownedComment.0" annotatedElement="TemplateableElement-templateBinding">
-          <body>The optional TemplateBindings from this TemplateableElement to one or more templates.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="TemplateableElement-templateBinding-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="TemplateableElement-templateBinding-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="TemplateableElement-isTemplate" name="isTemplate" bodyCondition="TemplateableElement-isTemplate-spec" isQuery="true">
-        <ownedComment xmi:id="TemplateableElement-isTemplate-_ownedComment.0" annotatedElement="TemplateableElement-isTemplate">
-          <body>The query isTemplate() returns whether this TemplateableElement is actually a template.</body>
-        </ownedComment>
-        <ownedRule xmi:id="TemplateableElement-isTemplate-spec" name="spec" constrainedElement="TemplateableElement-isTemplate">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="TemplateableElement-isTemplate-spec-_specification">
-            <language>OCL</language>
-            <body>result = (ownedTemplateSignature &lt;> null)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="TemplateableElement-isTemplate-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="TemplateableElement-parameterableElements" name="parameterableElements" bodyCondition="TemplateableElement-parameterableElements-spec" isQuery="true">
-        <ownedComment xmi:id="TemplateableElement-parameterableElements-_ownedComment.0" annotatedElement="TemplateableElement-parameterableElements">
-          <body>The query parameterableElements() returns the set of ParameterableElements that may be used as the parameteredElements for a TemplateParameter of this TemplateableElement. By default, this set includes all the ownedElements. Subclasses may override this operation if they choose to restrict the set of ParameterableElements.</body>
-        </ownedComment>
-        <ownedRule xmi:id="TemplateableElement-parameterableElements-spec" name="spec" constrainedElement="TemplateableElement-parameterableElements">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="TemplateableElement-parameterableElements-spec-_specification">
-            <language>OCL</language>
-            <body>result = (self.allOwnedElements()->select(oclIsKindOf(ParameterableElement)).oclAsType(ParameterableElement)->asSet())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="TemplateableElement-parameterableElements-result" name="result" type="ParameterableElement" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="TemplateableElement-parameterableElements-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="TemplateableElement-parameterableElements-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="TemplateBinding" name="TemplateBinding">
-      <ownedComment xmi:id="TemplateBinding-_ownedComment.0" annotatedElement="TemplateBinding">
-        <body>A TemplateBinding is a DirectedRelationship between a TemplateableElement and a template. A TemplateBinding specifies the TemplateParameterSubstitutions of actual parameters for the formal parameters of the template.</body>
-      </ownedComment>
-      <ownedRule xmi:id="TemplateBinding-parameter_substitution_formal" name="parameter_substitution_formal" constrainedElement="TemplateBinding">
-        <ownedComment xmi:id="TemplateBinding-parameter_substitution_formal-_ownedComment.0" annotatedElement="TemplateBinding-parameter_substitution_formal">
-          <body>Each parameterSubstitution must refer to a formal TemplateParameter of the target TemplateSignature.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="TemplateBinding-parameter_substitution_formal-_specification">
-          <language>OCL</language>
-          <body>parameterSubstitution->forAll(b | signature.parameter->includes(b.formal))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="TemplateBinding-one_parameter_substitution" name="one_parameter_substitution" constrainedElement="TemplateBinding">
-        <ownedComment xmi:id="TemplateBinding-one_parameter_substitution-_ownedComment.0" annotatedElement="TemplateBinding-one_parameter_substitution">
-          <body>A TemplateBiinding contains at most one TemplateParameterSubstitution for each formal TemplateParameter of the target TemplateSignature.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="TemplateBinding-one_parameter_substitution-_specification">
-          <language>OCL</language>
-          <body>signature.parameter->forAll(p | parameterSubstitution->select(b | b.formal = p)->size() &lt;= 1)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="TemplateBinding-_generalization.0" general="DirectedRelationship"/>
-      <ownedAttribute xmi:id="TemplateBinding-boundElement" name="boundElement" type="TemplateableElement" subsettedProperty="DirectedRelationship-source Element-owner" association="A_templateBinding_boundElement">
-        <ownedComment xmi:id="TemplateBinding-boundElement-_ownedComment.0" annotatedElement="TemplateBinding-boundElement">
-          <body>The TemplateableElement that is bound by this TemplateBinding.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="TemplateBinding-parameterSubstitution" name="parameterSubstitution" type="TemplateParameterSubstitution" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_parameterSubstitution_templateBinding">
-        <ownedComment xmi:id="TemplateBinding-parameterSubstitution-_ownedComment.0" annotatedElement="TemplateBinding-parameterSubstitution">
-          <body>The TemplateParameterSubstitutions owned by this TemplateBinding.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="TemplateBinding-parameterSubstitution-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="TemplateBinding-parameterSubstitution-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="TemplateBinding-signature" name="signature" type="TemplateSignature" subsettedProperty="DirectedRelationship-target" association="A_signature_templateBinding">
-        <ownedComment xmi:id="TemplateBinding-signature-_ownedComment.0" annotatedElement="TemplateBinding-signature">
-          <body>The TemplateSignature for the template that is the target of this TemplateBinding.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="TemplateParameter" name="TemplateParameter">
-      <ownedComment xmi:id="TemplateParameter-_ownedComment.0" annotatedElement="TemplateParameter">
-        <body>A TemplateParameter exposes a ParameterableElement as a formal parameter of a template.</body>
-      </ownedComment>
-      <ownedRule xmi:id="TemplateParameter-must_be_compatible" name="must_be_compatible" constrainedElement="TemplateParameter">
-        <ownedComment xmi:id="TemplateParameter-must_be_compatible-_ownedComment.0" annotatedElement="TemplateParameter-must_be_compatible">
-          <body>The default must be compatible with the formal TemplateParameter.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="TemplateParameter-must_be_compatible-_specification">
-          <language>OCL</language>
-          <body>default &lt;> null implies default.isCompatibleWith(parameteredElement)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="TemplateParameter-_generalization.0" general="Element"/>
-      <ownedAttribute xmi:id="TemplateParameter-default" name="default" type="ParameterableElement" association="A_default_templateParameter">
-        <ownedComment xmi:id="TemplateParameter-default-_ownedComment.0" annotatedElement="TemplateParameter-default">
-          <body>The ParameterableElement that is the default for this formal TemplateParameter.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="TemplateParameter-default-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="TemplateParameter-ownedDefault" name="ownedDefault" type="ParameterableElement" aggregation="composite" subsettedProperty="Element-ownedElement TemplateParameter-default" association="A_ownedDefault_templateParameter">
-        <ownedComment xmi:id="TemplateParameter-ownedDefault-_ownedComment.0" annotatedElement="TemplateParameter-ownedDefault">
-          <body>The ParameterableElement that is owned by this TemplateParameter for the purpose of providing a default.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="TemplateParameter-ownedDefault-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="TemplateParameter-ownedParameteredElement" name="ownedParameteredElement" type="ParameterableElement" aggregation="composite" subsettedProperty="Element-ownedElement TemplateParameter-parameteredElement" association="A_ownedParameteredElement_owningTemplateParameter">
-        <ownedComment xmi:id="TemplateParameter-ownedParameteredElement-_ownedComment.0" annotatedElement="TemplateParameter-ownedParameteredElement">
-          <body>The ParameterableElement that is owned by this TemplateParameter for the purpose of exposing it as the parameteredElement.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="TemplateParameter-ownedParameteredElement-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="TemplateParameter-parameteredElement" name="parameteredElement" type="ParameterableElement" association="A_parameteredElement_templateParameter">
-        <ownedComment xmi:id="TemplateParameter-parameteredElement-_ownedComment.0" annotatedElement="TemplateParameter-parameteredElement">
-          <body>The ParameterableElement exposed by this TemplateParameter.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="TemplateParameter-signature" name="signature" type="TemplateSignature" subsettedProperty="A_parameter_templateSignature-templateSignature Element-owner" association="A_ownedParameter_signature">
-        <ownedComment xmi:id="TemplateParameter-signature-_ownedComment.0" annotatedElement="TemplateParameter-signature">
-          <body>The TemplateSignature that owns this TemplateParameter.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="TemplateParameterSubstitution" name="TemplateParameterSubstitution">
-      <ownedComment xmi:id="TemplateParameterSubstitution-_ownedComment.0" annotatedElement="TemplateParameterSubstitution">
-        <body>A TemplateParameterSubstitution relates the actual parameter to a formal TemplateParameter as part of a template binding.</body>
-      </ownedComment>
-      <ownedRule xmi:id="TemplateParameterSubstitution-must_be_compatible" name="must_be_compatible" constrainedElement="TemplateParameterSubstitution">
-        <ownedComment xmi:id="TemplateParameterSubstitution-must_be_compatible-_ownedComment.0" annotatedElement="TemplateParameterSubstitution-must_be_compatible">
-          <body>The actual ParameterableElement must be compatible with the formal TemplateParameter, e.g., the actual ParameterableElement for a Class TemplateParameter must be a Class.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="TemplateParameterSubstitution-must_be_compatible-_specification">
-          <language>OCL</language>
-          <body>actual->forAll(a | a.isCompatibleWith(formal.parameteredElement))</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="TemplateParameterSubstitution-_generalization.0" general="Element"/>
-      <ownedAttribute xmi:id="TemplateParameterSubstitution-actual" name="actual" type="ParameterableElement" association="A_actual_templateParameterSubstitution">
-        <ownedComment xmi:id="TemplateParameterSubstitution-actual-_ownedComment.0" annotatedElement="TemplateParameterSubstitution-actual">
-          <body>The ParameterableElement that is the actual parameter for this TemplateParameterSubstitution.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="TemplateParameterSubstitution-formal" name="formal" type="TemplateParameter" association="A_formal_templateParameterSubstitution">
-        <ownedComment xmi:id="TemplateParameterSubstitution-formal-_ownedComment.0" annotatedElement="TemplateParameterSubstitution-formal">
-          <body>The formal TemplateParameter that is associated with this TemplateParameterSubstitution.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="TemplateParameterSubstitution-ownedActual" name="ownedActual" type="ParameterableElement" aggregation="composite" subsettedProperty="Element-ownedElement TemplateParameterSubstitution-actual" association="A_ownedActual_owningTemplateParameterSubstitution">
-        <ownedComment xmi:id="TemplateParameterSubstitution-ownedActual-_ownedComment.0" annotatedElement="TemplateParameterSubstitution-ownedActual">
-          <body>The ParameterableElement that is owned by this TemplateParameterSubstitution as its actual parameter.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="TemplateParameterSubstitution-ownedActual-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="TemplateParameterSubstitution-templateBinding" name="templateBinding" type="TemplateBinding" subsettedProperty="Element-owner" association="A_parameterSubstitution_templateBinding">
-        <ownedComment xmi:id="TemplateParameterSubstitution-templateBinding-_ownedComment.0" annotatedElement="TemplateParameterSubstitution-templateBinding">
-          <body>The TemplateBinding that owns this TemplateParameterSubstitution.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="TemplateSignature" name="TemplateSignature">
-      <ownedComment xmi:id="TemplateSignature-_ownedComment.0" annotatedElement="TemplateSignature">
-        <body>A Template Signature bundles the set of formal TemplateParameters for a template.</body>
-      </ownedComment>
-      <ownedRule xmi:id="TemplateSignature-own_elements" name="own_elements" constrainedElement="TemplateSignature">
-        <ownedComment xmi:id="TemplateSignature-own_elements-_ownedComment.0" annotatedElement="TemplateSignature-own_elements">
-          <body>Parameters must own the ParameterableElements they parameter or those ParameterableElements must be owned by the TemplateableElement being templated.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="TemplateSignature-own_elements-_specification">
-          <language>OCL</language>
-          <body>template.ownedElement->includesAll(parameter.parameteredElement->asSet() - parameter.ownedParameteredElement->asSet())</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="TemplateSignature-unique_parameters" name="unique_parameters" constrainedElement="TemplateSignature">
-        <ownedComment xmi:id="TemplateSignature-unique_parameters-_ownedComment.0" annotatedElement="TemplateSignature-unique_parameters">
-          <body>The names of the parameters of a TemplateSignature are unique.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="TemplateSignature-unique_parameters-_specification">
-          <language>OCL</language>
-          <body>parameter->forAll( p1, p2 | (p1 &lt;> p2 and p1.parameteredElement.oclIsKindOf(NamedElement) and p2.parameteredElement.oclIsKindOf(NamedElement) ) implies&#xD;
-   p1.parameteredElement.oclAsType(NamedElement).name &lt;> p2.parameteredElement.oclAsType(NamedElement).name)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="TemplateSignature-_generalization.0" general="Element"/>
-      <ownedAttribute xmi:id="TemplateSignature-ownedParameter" name="ownedParameter" type="TemplateParameter" isOrdered="true" aggregation="composite" subsettedProperty="Element-ownedElement TemplateSignature-parameter" association="A_ownedParameter_signature">
-        <ownedComment xmi:id="TemplateSignature-ownedParameter-_ownedComment.0" annotatedElement="TemplateSignature-ownedParameter">
-          <body>The formal parameters that are owned by this TemplateSignature.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="TemplateSignature-ownedParameter-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="TemplateSignature-ownedParameter-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="TemplateSignature-parameter" name="parameter" type="TemplateParameter" isOrdered="true" association="A_parameter_templateSignature">
-        <ownedComment xmi:id="TemplateSignature-parameter-_ownedComment.0" annotatedElement="TemplateSignature-parameter">
-          <body>The ordered set of all formal TemplateParameters for this TemplateSignature.</body>
-        </ownedComment>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="TemplateSignature-parameter-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="TemplateSignature-template" name="template" type="TemplateableElement" subsettedProperty="Element-owner" association="A_ownedTemplateSignature_template">
-        <ownedComment xmi:id="TemplateSignature-template-_ownedComment.0" annotatedElement="TemplateSignature-template">
-          <body>The TemplateableElement that owns this TemplateSignature.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Type" name="Type" isAbstract="true">
-      <ownedComment xmi:id="Type-_ownedComment.0" annotatedElement="Type">
-        <body>A Type constrains the values represented by a TypedElement.</body>
-      </ownedComment>
-      <generalization xmi:id="Type-_generalization.0" general="PackageableElement"/>
-      <ownedAttribute xmi:id="Type-package" name="package" type="Package" subsettedProperty="A_packagedElement_owningPackage-owningPackage NamedElement-namespace" association="A_ownedType_package">
-        <ownedComment xmi:id="Type-package-_ownedComment.0" annotatedElement="Type-package">
-          <body>Specifies the owning Package of this Type, if any.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Type-package-_lowerValue"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="Type-createAssociation" name="createAssociation">
-        <ownedComment xmi:id="Type-createAssociation-_ownedComment.0" annotatedElement="Type-createAssociation">
-          <body>Creates a(n) (binary) association between this type and the specified other type, with the specified navigabilities, aggregations, names, lower bounds, and upper bounds, and owned by this type's nearest package.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Type-createAssociation-_ownedParameter.0" type="Association" direction="return"/>
-        <ownedParameter xmi:id="Type-createAssociation-end1IsNavigable" name="end1IsNavigable" effect="read">
-          <ownedComment xmi:id="Type-createAssociation-end1IsNavigable-_ownedComment.0" annotatedElement="Type-createAssociation-end1IsNavigable">
-            <body>The navigability for the first end of the new association.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Type-createAssociation-end1Aggregation" name="end1Aggregation" type="AggregationKind" effect="read">
-          <ownedComment xmi:id="Type-createAssociation-end1Aggregation-_ownedComment.0" annotatedElement="Type-createAssociation-end1Aggregation">
-            <body>The aggregation for the first end of the new association.</body>
-          </ownedComment>
-        </ownedParameter>
-        <ownedParameter xmi:id="Type-createAssociation-end1Name" name="end1Name" effect="read">
-          <ownedComment xmi:id="Type-createAssociation-end1Name-_ownedComment.0" annotatedElement="Type-createAssociation-end1Name">
-            <body>The name for the first end of the new association.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Type-createAssociation-end1Lower" name="end1Lower" effect="read">
-          <ownedComment xmi:id="Type-createAssociation-end1Lower-_ownedComment.0" annotatedElement="Type-createAssociation-end1Lower">
-            <body>The lower bound for the first end of the new association.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Type-createAssociation-end1Upper" name="end1Upper" effect="read">
-          <ownedComment xmi:id="Type-createAssociation-end1Upper-_ownedComment.0" annotatedElement="Type-createAssociation-end1Upper">
-            <body>The upper bound for the first end of the new association.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Type-createAssociation-end1Type" name="end1Type" type="Type" effect="read">
-          <ownedComment xmi:id="Type-createAssociation-end1Type-_ownedComment.0" annotatedElement="Type-createAssociation-end1Type">
-            <body>The type for the first end of the new association.</body>
-          </ownedComment>
-        </ownedParameter>
-        <ownedParameter xmi:id="Type-createAssociation-end2IsNavigable" name="end2IsNavigable" effect="read">
-          <ownedComment xmi:id="Type-createAssociation-end2IsNavigable-_ownedComment.0" annotatedElement="Type-createAssociation-end2IsNavigable">
-            <body>The navigability for the second end of the new association.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Type-createAssociation-end2Aggregation" name="end2Aggregation" type="AggregationKind" effect="read">
-          <ownedComment xmi:id="Type-createAssociation-end2Aggregation-_ownedComment.0" annotatedElement="Type-createAssociation-end2Aggregation">
-            <body>The aggregation for the second end of the new association.</body>
-          </ownedComment>
-        </ownedParameter>
-        <ownedParameter xmi:id="Type-createAssociation-end2Name" name="end2Name" effect="read">
-          <ownedComment xmi:id="Type-createAssociation-end2Name-_ownedComment.0" annotatedElement="Type-createAssociation-end2Name">
-            <body>The name for the second end of the new association.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Type-createAssociation-end2Lower" name="end2Lower" effect="read">
-          <ownedComment xmi:id="Type-createAssociation-end2Lower-_ownedComment.0" annotatedElement="Type-createAssociation-end2Lower">
-            <body>The lower bound for the second end of the new association.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Type-createAssociation-end2Upper" name="end2Upper" effect="read">
-          <ownedComment xmi:id="Type-createAssociation-end2Upper-_ownedComment.0" annotatedElement="Type-createAssociation-end2Upper">
-            <body>The upper bound for the second end of the new association.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Type-getAssociations" name="getAssociations">
-        <ownedComment xmi:id="Type-getAssociations-_ownedComment.0" annotatedElement="Type-getAssociations">
-          <body>Retrieves the associations in which this type is involved.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Type-getAssociations-_ownedParameter.0" type="Association" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Type-getAssociations-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Type-getAssociations-_ownedParameter.0-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Type-conformsTo" name="conformsTo" bodyCondition="Type-conformsTo-spec" isQuery="true">
-        <ownedComment xmi:id="Type-conformsTo-_ownedComment.0" annotatedElement="Type-conformsTo">
-          <body>The query conformsTo() gives true for a Type that conforms to another. By default, two Types do not conform to each other. This query is intended to be redefined for specific conformance situations.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Type-conformsTo-spec" name="spec" constrainedElement="Type-conformsTo">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Type-conformsTo-spec-_specification">
-            <language>OCL</language>
-            <body>result = (false)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Type-conformsTo-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Type-conformsTo-other" name="other" type="Type"/>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="TypedElement" name="TypedElement" isAbstract="true">
-      <ownedComment xmi:id="TypedElement-_ownedComment.0" annotatedElement="TypedElement">
-        <body>A TypedElement is a NamedElement that may have a Type specified for it.</body>
-      </ownedComment>
-      <generalization xmi:id="TypedElement-_generalization.0" general="NamedElement"/>
-      <ownedAttribute xmi:id="TypedElement-type" name="type" type="Type" association="A_type_typedElement">
-        <ownedComment xmi:id="TypedElement-type-_ownedComment.0" annotatedElement="TypedElement-type">
-          <body>The type of the TypedElement.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="TypedElement-type-_lowerValue"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Usage" name="Usage">
-      <ownedComment xmi:id="Usage-_ownedComment.0" annotatedElement="Usage">
-        <body>A Usage is a Dependency in which the client Element requires the supplier Element (or set of Elements) for its full implementation or operation.</body>
-      </ownedComment>
-      <generalization xmi:id="Usage-_generalization.0" general="Dependency"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Enumeration" xmi:id="VisibilityKind" name="VisibilityKind" visibility="private">
-      <ownedComment xmi:id="VisibilityKind-_ownedComment.0" annotatedElement="VisibilityKind">
-        <body>VisibilityKind is an enumeration type that defines literals to determine the visibility of Elements in a model.</body>
-      </ownedComment>
-      <ownedLiteral xmi:id="VisibilityKind-public" name="public">
-        <ownedComment xmi:id="VisibilityKind-public-_ownedComment.0" annotatedElement="VisibilityKind-public">
-          <body>A Named Element with public visibility is visible to all elements that can access the contents of the Namespace that owns it.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="VisibilityKind-private" name="private">
-        <ownedComment xmi:id="VisibilityKind-private-_ownedComment.0" annotatedElement="VisibilityKind-private">
-          <body>A NamedElement with private visibility is only visible inside the Namespace that owns it.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="VisibilityKind-protected" name="protected">
-        <ownedComment xmi:id="VisibilityKind-protected-_ownedComment.0" annotatedElement="VisibilityKind-protected">
-          <body>A NamedElement with protected visibility is visible to Elements that have a generalization relationship to the Namespace that owns it.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="VisibilityKind-package" name="package">
-        <ownedComment xmi:id="VisibilityKind-package-_ownedComment.0" annotatedElement="VisibilityKind-package">
-          <body>A NamedElement with package visibility is visible to all Elements within the nearest enclosing Package (given that other owning Elements have proper visibility). Outside the nearest enclosing Package, a NamedElement marked as having package visibility is not visible.  Only NamedElements that are not owned by Packages can be marked as having package visibility.</body>
-        </ownedComment>
-      </ownedLiteral>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_type_typedElement" name="A_type_typedElement" visibility="private" memberEnd="TypedElement-type A_type_typedElement-typedElement">
-      <ownedEnd xmi:id="A_type_typedElement-typedElement" name="typedElement" type="TypedElement" association="A_type_typedElement">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_type_typedElement-typedElement-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_type_typedElement-typedElement-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedParameter_signature" name="A_ownedParameter_signature" visibility="private" memberEnd="TemplateSignature-ownedParameter TemplateParameter-signature"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_parameter_templateSignature" name="A_parameter_templateSignature" visibility="private" memberEnd="TemplateSignature-parameter A_parameter_templateSignature-templateSignature">
-      <ownedEnd xmi:id="A_parameter_templateSignature-templateSignature" name="templateSignature" type="TemplateSignature" association="A_parameter_templateSignature">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_parameter_templateSignature-templateSignature-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_parameter_templateSignature-templateSignature-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_actual_templateParameterSubstitution" name="A_actual_templateParameterSubstitution" visibility="private" memberEnd="TemplateParameterSubstitution-actual A_actual_templateParameterSubstitution-templateParameterSubstitution">
-      <ownedEnd xmi:id="A_actual_templateParameterSubstitution-templateParameterSubstitution" name="templateParameterSubstitution" type="TemplateParameterSubstitution" association="A_actual_templateParameterSubstitution">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_actual_templateParameterSubstitution-templateParameterSubstitution-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_actual_templateParameterSubstitution-templateParameterSubstitution-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedActual_owningTemplateParameterSubstitution" name="A_ownedActual_owningTemplateParameterSubstitution" visibility="private" memberEnd="TemplateParameterSubstitution-ownedActual A_ownedActual_owningTemplateParameterSubstitution-owningTemplateParameterSubstitution">
-      <generalization xmi:id="A_ownedActual_owningTemplateParameterSubstitution-_generalization.0" general="A_actual_templateParameterSubstitution"/>
-      <ownedEnd xmi:id="A_ownedActual_owningTemplateParameterSubstitution-owningTemplateParameterSubstitution" name="owningTemplateParameterSubstitution" type="TemplateParameterSubstitution" redefinedProperty="A_actual_templateParameterSubstitution-templateParameterSubstitution" subsettedProperty="Element-owner" association="A_ownedActual_owningTemplateParameterSubstitution">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_ownedActual_owningTemplateParameterSubstitution-owningTemplateParameterSubstitution-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_formal_templateParameterSubstitution" name="A_formal_templateParameterSubstitution" visibility="private" memberEnd="TemplateParameterSubstitution-formal A_formal_templateParameterSubstitution-templateParameterSubstitution">
-      <ownedEnd xmi:id="A_formal_templateParameterSubstitution-templateParameterSubstitution" name="templateParameterSubstitution" type="TemplateParameterSubstitution" association="A_formal_templateParameterSubstitution">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_formal_templateParameterSubstitution-templateParameterSubstitution-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_formal_templateParameterSubstitution-templateParameterSubstitution-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedDefault_templateParameter" name="A_ownedDefault_templateParameter" visibility="private" memberEnd="TemplateParameter-ownedDefault A_ownedDefault_templateParameter-templateParameter">
-      <generalization xmi:id="A_ownedDefault_templateParameter-_generalization.0" general="A_default_templateParameter"/>
-      <ownedEnd xmi:id="A_ownedDefault_templateParameter-templateParameter" name="templateParameter" type="TemplateParameter" redefinedProperty="A_default_templateParameter-templateParameter" subsettedProperty="Element-owner" association="A_ownedDefault_templateParameter">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_ownedDefault_templateParameter-templateParameter-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedParameteredElement_owningTemplateParameter" name="A_ownedParameteredElement_owningTemplateParameter" visibility="private" memberEnd="TemplateParameter-ownedParameteredElement ParameterableElement-owningTemplateParameter"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_default_templateParameter" name="A_default_templateParameter" visibility="private" memberEnd="TemplateParameter-default A_default_templateParameter-templateParameter">
-      <ownedEnd xmi:id="A_default_templateParameter-templateParameter" name="templateParameter" type="TemplateParameter" association="A_default_templateParameter">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_default_templateParameter-templateParameter-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_default_templateParameter-templateParameter-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_parameteredElement_templateParameter" name="A_parameteredElement_templateParameter" visibility="private" memberEnd="TemplateParameter-parameteredElement ParameterableElement-templateParameter"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_signature_templateBinding" name="A_signature_templateBinding" visibility="private" memberEnd="TemplateBinding-signature A_signature_templateBinding-templateBinding">
-      <ownedEnd xmi:id="A_signature_templateBinding-templateBinding" name="templateBinding" type="TemplateBinding" subsettedProperty="A_target_directedRelationship-directedRelationship" association="A_signature_templateBinding">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_signature_templateBinding-templateBinding-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_signature_templateBinding-templateBinding-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_parameterSubstitution_templateBinding" name="A_parameterSubstitution_templateBinding" visibility="private" memberEnd="TemplateBinding-parameterSubstitution TemplateParameterSubstitution-templateBinding"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_templateBinding_boundElement" name="A_templateBinding_boundElement" visibility="private" memberEnd="TemplateableElement-templateBinding TemplateBinding-boundElement"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedTemplateSignature_template" name="A_ownedTemplateSignature_template" visibility="private" memberEnd="TemplateableElement-ownedTemplateSignature TemplateSignature-template"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_relatedElement_relationship" name="A_relatedElement_relationship" visibility="private" isDerived="true" memberEnd="Relationship-relatedElement A_relatedElement_relationship-relationship">
-      <ownedEnd xmi:id="A_relatedElement_relationship-relationship" name="relationship" type="Relationship" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="A_relatedElement_relationship">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_relatedElement_relationship-relationship-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_relatedElement_relationship-relationship-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_importedPackage_packageImport" name="A_importedPackage_packageImport" visibility="private" memberEnd="PackageImport-importedPackage A_importedPackage_packageImport-packageImport">
-      <ownedEnd xmi:id="A_importedPackage_packageImport-packageImport" name="packageImport" type="PackageImport" subsettedProperty="A_target_directedRelationship-directedRelationship" association="A_importedPackage_packageImport">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_importedPackage_packageImport-packageImport-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_importedPackage_packageImport-packageImport-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_elementImport_importingNamespace" name="A_elementImport_importingNamespace" visibility="private" memberEnd="Namespace-elementImport ElementImport-importingNamespace"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedMember_namespace" name="A_ownedMember_namespace" visibility="private" isDerived="true" memberEnd="Namespace-ownedMember NamedElement-namespace"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedRule_context" name="A_ownedRule_context" visibility="private" memberEnd="Namespace-ownedRule Constraint-context"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_packageImport_importingNamespace" name="A_packageImport_importingNamespace" visibility="private" memberEnd="Namespace-packageImport PackageImport-importingNamespace"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_member_memberNamespace" name="A_member_memberNamespace" visibility="private" isDerived="true" memberEnd="Namespace-member A_member_memberNamespace-memberNamespace">
-      <ownedEnd xmi:id="A_member_memberNamespace-memberNamespace" name="memberNamespace" type="Namespace" isReadOnly="true" isDerived="true" isDerivedUnion="true" association="A_member_memberNamespace">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_member_memberNamespace-memberNamespace-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_member_memberNamespace-memberNamespace-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_importedMember_namespace" name="A_importedMember_namespace" visibility="private" isDerived="true" memberEnd="Namespace-importedMember A_importedMember_namespace-namespace">
-      <ownedEnd xmi:id="A_importedMember_namespace-namespace" name="namespace" type="Namespace" subsettedProperty="A_member_memberNamespace-memberNamespace" association="A_importedMember_namespace">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_importedMember_namespace-namespace-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_importedMember_namespace-namespace-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_nameExpression_namedElement" name="A_nameExpression_namedElement" visibility="private" memberEnd="NamedElement-nameExpression A_nameExpression_namedElement-namedElement">
-      <ownedEnd xmi:id="A_nameExpression_namedElement-namedElement" name="namedElement" type="NamedElement" subsettedProperty="Element-owner" association="A_nameExpression_namedElement">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_nameExpression_namedElement-namedElement-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_clientDependency_client" name="A_clientDependency_client" visibility="private" memberEnd="Dependency-client A_clientDependency_client-clientDependency">
-      <ownedEnd xmi:id="A_clientDependency_client-clientDependency" name="clientDependency" visibility="private" type="Dependency" association="A_clientDependency_client">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_clientDependency_client-clientDependency-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_clientDependency_client-clientDependency-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_lowerValue_owningLower" name="A_lowerValue_owningLower" visibility="private" memberEnd="MultiplicityElement-lowerValue A_lowerValue_owningLower-owningLower">
-      <ownedEnd xmi:id="A_lowerValue_owningLower-owningLower" name="owningLower" type="MultiplicityElement" subsettedProperty="Element-owner" association="A_lowerValue_owningLower">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_lowerValue_owningLower-owningLower-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_upperValue_owningUpper" name="A_upperValue_owningUpper" visibility="private" memberEnd="MultiplicityElement-upperValue A_upperValue_owningUpper-owningUpper">
-      <ownedEnd xmi:id="A_upperValue_owningUpper-owningUpper" name="owningUpper" type="MultiplicityElement" subsettedProperty="Element-owner" association="A_upperValue_owningUpper">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_upperValue_owningUpper-owningUpper-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_importedElement_import" name="A_importedElement_import" visibility="private" memberEnd="ElementImport-importedElement A_importedElement_import-import">
-      <ownedEnd xmi:id="A_importedElement_import-import" name="import" type="ElementImport" subsettedProperty="A_target_directedRelationship-directedRelationship" association="A_importedElement_import">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_importedElement_import-import-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_importedElement_import-import-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedElement_owner" name="A_ownedElement_owner" visibility="private" isDerived="true" memberEnd="Element-ownedElement Element-owner"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedComment_owningElement" name="A_ownedComment_owningElement" visibility="private" memberEnd="Element-ownedComment A_ownedComment_owningElement-owningElement">
-      <ownedEnd xmi:id="A_ownedComment_owningElement-owningElement" name="owningElement" type="Element" subsettedProperty="Element-owner" association="A_ownedComment_owningElement">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_ownedComment_owningElement-owningElement-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_source_directedRelationship" name="A_source_directedRelationship" visibility="private" isDerived="true" memberEnd="DirectedRelationship-source A_source_directedRelationship-directedRelationship">
-      <ownedEnd xmi:id="A_source_directedRelationship-directedRelationship" name="directedRelationship" type="DirectedRelationship" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="A_relatedElement_relationship-relationship" association="A_source_directedRelationship">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_source_directedRelationship-directedRelationship-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_source_directedRelationship-directedRelationship-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_target_directedRelationship" name="A_target_directedRelationship" visibility="private" isDerived="true" memberEnd="DirectedRelationship-target A_target_directedRelationship-directedRelationship">
-      <ownedEnd xmi:id="A_target_directedRelationship-directedRelationship" name="directedRelationship" type="DirectedRelationship" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="A_relatedElement_relationship-relationship" association="A_target_directedRelationship">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_target_directedRelationship-directedRelationship-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_target_directedRelationship-directedRelationship-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_supplier_supplierDependency" name="A_supplier_supplierDependency" visibility="private" memberEnd="Dependency-supplier A_supplier_supplierDependency-supplierDependency">
-      <ownedEnd xmi:id="A_supplier_supplierDependency-supplierDependency" name="supplierDependency" type="Dependency" subsettedProperty="A_target_directedRelationship-directedRelationship" association="A_supplier_supplierDependency">
-        <ownedComment xmi:id="A_supplier_supplierDependency-supplierDependency-_ownedComment.0" annotatedElement="A_supplier_supplierDependency-supplierDependency">
-          <body>Indicates the dependencies that reference the supplier.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_supplier_supplierDependency-supplierDependency-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_supplier_supplierDependency-supplierDependency-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_constrainedElement_constraint" name="A_constrainedElement_constraint" visibility="private" memberEnd="Constraint-constrainedElement A_constrainedElement_constraint-constraint">
-      <ownedEnd xmi:id="A_constrainedElement_constraint-constraint" name="constraint" type="Constraint" association="A_constrainedElement_constraint">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_constrainedElement_constraint-constraint-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_constrainedElement_constraint-constraint-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_specification_owningConstraint" name="A_specification_owningConstraint" visibility="private" memberEnd="Constraint-specification A_specification_owningConstraint-owningConstraint">
-      <ownedEnd xmi:id="A_specification_owningConstraint-owningConstraint" name="owningConstraint" type="Constraint" subsettedProperty="Element-owner" association="A_specification_owningConstraint">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_specification_owningConstraint-owningConstraint-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_annotatedElement_comment" name="A_annotatedElement_comment" visibility="private" memberEnd="Comment-annotatedElement A_annotatedElement_comment-comment">
-      <ownedEnd xmi:id="A_annotatedElement_comment-comment" name="comment" type="Comment" association="A_annotatedElement_comment">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_annotatedElement_comment-comment-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_annotatedElement_comment-comment-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_mapping_abstraction" name="A_mapping_abstraction" visibility="private" memberEnd="Abstraction-mapping A_mapping_abstraction-abstraction">
-      <ownedEnd xmi:id="A_mapping_abstraction-abstraction" name="abstraction" type="Abstraction" subsettedProperty="Element-owner" association="A_mapping_abstraction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_mapping_abstraction-abstraction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Artifact" name="Artifact">
-      <ownedComment xmi:id="Artifact-_ownedComment.0" annotatedElement="Artifact">
-        <body>An artifact is the specification of a physical piece of information that is used or produced by a software development process, or by deployment and operation of a system. Examples of artifacts include model files, source files, scripts, and binary executable files, a table in a database system, a development deliverable, or a word-processing document, a mail message.
-An artifact is the source of a deployment to a node.</body>
-      </ownedComment>
-      <generalization xmi:id="Artifact-_generalization.0" general="Classifier"/>
-      <generalization xmi:id="Artifact-_generalization.1" general="DeployedArtifact"/>
-      <ownedAttribute xmi:id="Artifact-fileName" name="fileName">
-        <ownedComment xmi:id="Artifact-fileName-_ownedComment.0" annotatedElement="Artifact-fileName">
-          <body>A concrete name that is used to refer to the Artifact in a physical context. Example: file system name, universal resource locator.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Artifact-fileName-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Artifact-manifestation" name="manifestation" type="Manifestation" aggregation="composite" subsettedProperty="Element-ownedElement NamedElement-clientDependency" association="A_manifestation_artifact">
-        <ownedComment xmi:id="Artifact-manifestation-_ownedComment.0" annotatedElement="Artifact-manifestation">
-          <body>The set of model elements that are manifested in the Artifact. That is, these model elements are utilized in the construction (or generation) of the artifact.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Artifact-manifestation-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Artifact-manifestation-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Artifact-nestedArtifact" name="nestedArtifact" type="Artifact" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_nestedArtifact_artifact">
-        <ownedComment xmi:id="Artifact-nestedArtifact-_ownedComment.0" annotatedElement="Artifact-nestedArtifact">
-          <body>The Artifacts that are defined (nested) within the Artifact. The association is a specialization of the ownedMember association from Namespace to NamedElement.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Artifact-nestedArtifact-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Artifact-nestedArtifact-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Artifact-ownedAttribute" name="ownedAttribute" type="Property" isOrdered="true" aggregation="composite" subsettedProperty="Classifier-attribute Namespace-ownedMember" association="A_ownedAttribute_artifact">
-        <ownedComment xmi:id="Artifact-ownedAttribute-_ownedComment.0" annotatedElement="Artifact-ownedAttribute">
-          <body>The attributes or association ends defined for the Artifact. The association is a specialization of the ownedMember association.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Artifact-ownedAttribute-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Artifact-ownedAttribute-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Artifact-ownedOperation" name="ownedOperation" type="Operation" isOrdered="true" aggregation="composite" subsettedProperty="A_redefinitionContext_redefinableElement-redefinableElement Classifier-feature Namespace-ownedMember" association="A_ownedOperation_artifact">
-        <ownedComment xmi:id="Artifact-ownedOperation-_ownedComment.0" annotatedElement="Artifact-ownedOperation">
-          <body>The Operations defined for the Artifact. The association is a specialization of the ownedMember association.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Artifact-ownedOperation-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Artifact-ownedOperation-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="Artifact-createOwnedAttribute" name="createOwnedAttribute">
-        <ownedComment xmi:id="Artifact-createOwnedAttribute-_ownedComment.0" annotatedElement="Artifact-createOwnedAttribute">
-          <body>Creates a property with the specified name, type, lower bound, and upper bound as an owned attribute of this artifact.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Artifact-createOwnedAttribute-_ownedParameter.0" type="Property" direction="return"/>
-        <ownedParameter xmi:id="Artifact-createOwnedAttribute-name" name="name" effect="read">
-          <ownedComment xmi:id="Artifact-createOwnedAttribute-name-_ownedComment.0" annotatedElement="Artifact-createOwnedAttribute-name">
-            <body>The name for the new attribute, or null.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Artifact-createOwnedAttribute-name-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Artifact-createOwnedAttribute-name-_upperValue" value="1"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Artifact-createOwnedAttribute-type" name="type" type="Type" effect="read">
-          <ownedComment xmi:id="Artifact-createOwnedAttribute-type-_ownedComment.0" annotatedElement="Artifact-createOwnedAttribute-type">
-            <body>The type for the new attribute, or null.</body>
-          </ownedComment>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Artifact-createOwnedAttribute-type-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Artifact-createOwnedAttribute-type-_upperValue" value="1"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Artifact-createOwnedAttribute-lower" name="lower" effect="read">
-          <ownedComment xmi:id="Artifact-createOwnedAttribute-lower-_ownedComment.0" annotatedElement="Artifact-createOwnedAttribute-lower">
-            <body>The lower bound for the new attribute.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Artifact-createOwnedAttribute-upper" name="upper" effect="read">
-          <ownedComment xmi:id="Artifact-createOwnedAttribute-upper-_ownedComment.0" annotatedElement="Artifact-createOwnedAttribute-upper">
-            <body>The upper bound for the new attribute.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Artifact-createOwnedOperation" name="createOwnedOperation">
-        <ownedComment xmi:id="Artifact-createOwnedOperation-_ownedComment.0" annotatedElement="Artifact-createOwnedOperation">
-          <body>Creates an operation with the specified name, parameter names, parameter types, and return type (or null) as an owned operation of this artifact.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Artifact-createOwnedOperation-_ownedParameter.0" type="Operation" direction="return"/>
-        <ownedParameter xmi:id="Artifact-createOwnedOperation-name" name="name" effect="read">
-          <ownedComment xmi:id="Artifact-createOwnedOperation-name-_ownedComment.0" annotatedElement="Artifact-createOwnedOperation-name">
-            <body>The name for the new operation, or null.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Artifact-createOwnedOperation-name-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Artifact-createOwnedOperation-name-_upperValue" value="1"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Artifact-createOwnedOperation-parameterNames" name="parameterNames" effect="read">
-          <ownedComment xmi:id="Artifact-createOwnedOperation-parameterNames-_ownedComment.0" annotatedElement="Artifact-createOwnedOperation-parameterNames">
-            <body>The parameter names for  the new operation, or null.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Artifact-createOwnedOperation-parameterNames-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Artifact-createOwnedOperation-parameterNames-_upperValue" value="*"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Artifact-createOwnedOperation-parameterTypes" name="parameterTypes" type="Type" effect="read">
-          <ownedComment xmi:id="Artifact-createOwnedOperation-parameterTypes-_ownedComment.0" annotatedElement="Artifact-createOwnedOperation-parameterTypes">
-            <body>The parameter types for the new operation, or null.</body>
-          </ownedComment>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Artifact-createOwnedOperation-parameterTypes-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Artifact-createOwnedOperation-parameterTypes-_upperValue" value="*"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Artifact-createOwnedOperation-returnType" name="returnType" type="Type" effect="read">
-          <ownedComment xmi:id="Artifact-createOwnedOperation-returnType-_ownedComment.0" annotatedElement="Artifact-createOwnedOperation-returnType">
-            <body>The return type for the new operation, or null.</body>
-          </ownedComment>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Artifact-createOwnedOperation-returnType-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Artifact-createOwnedOperation-returnType-_upperValue" value="1"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="CommunicationPath" name="CommunicationPath">
-      <ownedComment xmi:id="CommunicationPath-_ownedComment.0" annotatedElement="CommunicationPath">
-        <body>A communication path is an association between two deployment targets, through which they are able to exchange signals and messages.</body>
-      </ownedComment>
-      <ownedRule xmi:id="CommunicationPath-association_ends" name="association_ends" constrainedElement="CommunicationPath">
-        <ownedComment xmi:id="CommunicationPath-association_ends-_ownedComment.0" annotatedElement="CommunicationPath-association_ends">
-          <body>The association ends of a CommunicationPath are typed by DeploymentTargets.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="CommunicationPath-association_ends-_specification">
-          <language>OCL</language>
-          <body>endType->forAll (oclIsKindOf(DeploymentTarget))</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="CommunicationPath-_generalization.0" general="Association"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="DeployedArtifact" name="DeployedArtifact" isAbstract="true">
-      <ownedComment xmi:id="DeployedArtifact-_ownedComment.0" annotatedElement="DeployedArtifact">
-        <body>A deployed artifact is an artifact or artifact instance that has been deployed to a deployment target.</body>
-      </ownedComment>
-      <generalization xmi:id="DeployedArtifact-_generalization.0" general="NamedElement"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Deployment" name="Deployment">
-      <ownedComment xmi:id="Deployment-_ownedComment.0" annotatedElement="Deployment">
-        <body>A deployment is the allocation of an artifact or artifact instance to a deployment target.
-A component deployment is the deployment of one or more artifacts or artifact instances to a deployment target, optionally parameterized by a deployment specification. Examples are executables and configuration files.</body>
-      </ownedComment>
-      <generalization xmi:id="Deployment-_generalization.0" general="Dependency"/>
-      <ownedAttribute xmi:id="Deployment-configuration" name="configuration" type="DeploymentSpecification" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_configuration_deployment">
-        <ownedComment xmi:id="Deployment-configuration-_ownedComment.0" annotatedElement="Deployment-configuration">
-          <body>The specification of properties that parameterize the deployment and execution of one or more Artifacts.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Deployment-configuration-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Deployment-configuration-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Deployment-deployedArtifact" name="deployedArtifact" type="DeployedArtifact" subsettedProperty="Dependency-supplier" association="A_deployedArtifact_deploymentForArtifact">
-        <ownedComment xmi:id="Deployment-deployedArtifact-_ownedComment.0" annotatedElement="Deployment-deployedArtifact">
-          <body>The Artifacts that are deployed onto a Node. This association specializes the supplier association.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Deployment-deployedArtifact-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Deployment-deployedArtifact-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Deployment-location" name="location" type="DeploymentTarget" subsettedProperty="Dependency-client Element-owner" association="A_deployment_location">
-        <ownedComment xmi:id="Deployment-location-_ownedComment.0" annotatedElement="Deployment-location">
-          <body>The DeployedTarget which is the target of a Deployment.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="DeploymentSpecification" name="DeploymentSpecification">
-      <ownedComment xmi:id="DeploymentSpecification-_ownedComment.0" annotatedElement="DeploymentSpecification">
-        <body>A deployment specification specifies a set of properties that determine execution parameters of a component artifact that is deployed on a node. A deployment specification can be aimed at a specific type of container. An artifact that reifies or implements deployment specification properties is a deployment descriptor.</body>
-      </ownedComment>
-      <ownedRule xmi:id="DeploymentSpecification-deployment_target" name="deployment_target" constrainedElement="DeploymentSpecification">
-        <ownedComment xmi:id="DeploymentSpecification-deployment_target-_ownedComment.0" annotatedElement="DeploymentSpecification-deployment_target">
-          <body>The DeploymentTarget of a DeploymentSpecification is a kind of ExecutionEnvironment.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="DeploymentSpecification-deployment_target-_specification">
-          <language>OCL</language>
-          <body>deployment->forAll (location.oclIsKindOf(ExecutionEnvironment))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="DeploymentSpecification-deployed_elements" name="deployed_elements" constrainedElement="DeploymentSpecification">
-        <ownedComment xmi:id="DeploymentSpecification-deployed_elements-_ownedComment.0" annotatedElement="DeploymentSpecification-deployed_elements">
-          <body>The deployedElements of a DeploymentTarget that are involved in a Deployment that has an associated Deployment-Specification is a kind of Component (i.e., the configured components).</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="DeploymentSpecification-deployed_elements-_specification">
-          <language>OCL</language>
-          <body>deployment->forAll (location.deployedElement->forAll (oclIsKindOf(Component)))</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="DeploymentSpecification-_generalization.0" general="Artifact"/>
-      <ownedAttribute xmi:id="DeploymentSpecification-deployment" name="deployment" type="Deployment" subsettedProperty="Element-owner" association="A_configuration_deployment">
-        <ownedComment xmi:id="DeploymentSpecification-deployment-_ownedComment.0" annotatedElement="DeploymentSpecification-deployment">
-          <body>The deployment with which the DeploymentSpecification is associated.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="DeploymentSpecification-deployment-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="DeploymentSpecification-deploymentLocation" name="deploymentLocation">
-        <ownedComment xmi:id="DeploymentSpecification-deploymentLocation-_ownedComment.0" annotatedElement="DeploymentSpecification-deploymentLocation">
-          <body>The location where an Artifact is deployed onto a Node. This is typically a 'directory' or 'memory address.'</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="DeploymentSpecification-deploymentLocation-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="DeploymentSpecification-executionLocation" name="executionLocation">
-        <ownedComment xmi:id="DeploymentSpecification-executionLocation-_ownedComment.0" annotatedElement="DeploymentSpecification-executionLocation">
-          <body>The location where a component Artifact executes. This may be a local or remote location.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="DeploymentSpecification-executionLocation-_lowerValue"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="DeploymentTarget" name="DeploymentTarget" isAbstract="true">
-      <ownedComment xmi:id="DeploymentTarget-_ownedComment.0" annotatedElement="DeploymentTarget">
-        <body>A deployment target is the location for a deployed artifact.</body>
-      </ownedComment>
-      <generalization xmi:id="DeploymentTarget-_generalization.0" general="NamedElement"/>
-      <ownedAttribute xmi:id="DeploymentTarget-deployedElement" name="deployedElement" type="PackageableElement" isReadOnly="true" isDerived="true" association="A_deployedElement_deploymentTarget">
-        <ownedComment xmi:id="DeploymentTarget-deployedElement-_ownedComment.0" annotatedElement="DeploymentTarget-deployedElement">
-          <body>The set of elements that are manifested in an Artifact that is involved in Deployment to a DeploymentTarget.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="DeploymentTarget-deployedElement-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DeploymentTarget-deployedElement-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="DeploymentTarget-deployment" name="deployment" type="Deployment" aggregation="composite" subsettedProperty="Element-ownedElement NamedElement-clientDependency" association="A_deployment_location">
-        <ownedComment xmi:id="DeploymentTarget-deployment-_ownedComment.0" annotatedElement="DeploymentTarget-deployment">
-          <body>The set of Deployments for a DeploymentTarget.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="DeploymentTarget-deployment-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DeploymentTarget-deployment-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="DeploymentTarget-deployedElement.1" name="deployedElement" visibility="protected" bodyCondition="DeploymentTarget-deployedElement.1-spec" isQuery="true">
-        <ownedComment xmi:id="DeploymentTarget-deployedElement.1-_ownedComment.0" annotatedElement="DeploymentTarget-deployedElement.1">
-          <body>Derivation for DeploymentTarget::/deployedElement</body>
-        </ownedComment>
-        <ownedRule xmi:id="DeploymentTarget-deployedElement.1-spec" name="spec" constrainedElement="DeploymentTarget-deployedElement.1 DeploymentTarget-deployedElement">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="DeploymentTarget-deployedElement.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (deployment.deployedArtifact->select(oclIsKindOf(Artifact))->collect(oclAsType(Artifact).manifestation)->collect(utilizedElement)->asSet())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="DeploymentTarget-deployedElement.1-result" name="result" type="PackageableElement" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="DeploymentTarget-deployedElement.1-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DeploymentTarget-deployedElement.1-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Device" name="Device">
-      <ownedComment xmi:id="Device-_ownedComment.0" annotatedElement="Device">
-        <body>A device is a physical computational resource with processing capability upon which artifacts may be deployed for execution. Devices may be complex (i.e., they may consist of other devices).</body>
-      </ownedComment>
-      <generalization xmi:id="Device-_generalization.0" general="Node"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ExecutionEnvironment" name="ExecutionEnvironment">
-      <ownedComment xmi:id="ExecutionEnvironment-_ownedComment.0" annotatedElement="ExecutionEnvironment">
-        <body>An execution environment is a node that offers an execution environment for specific types of components that are deployed on it in the form of executable artifacts.</body>
-      </ownedComment>
-      <generalization xmi:id="ExecutionEnvironment-_generalization.0" general="Node"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Manifestation" name="Manifestation">
-      <ownedComment xmi:id="Manifestation-_ownedComment.0" annotatedElement="Manifestation">
-        <body>A manifestation is the concrete physical rendering of one or more model elements by an artifact.</body>
-      </ownedComment>
-      <generalization xmi:id="Manifestation-_generalization.0" general="Abstraction"/>
-      <ownedAttribute xmi:id="Manifestation-utilizedElement" name="utilizedElement" type="PackageableElement" subsettedProperty="Dependency-supplier" association="A_utilizedElement_manifestation">
-        <ownedComment xmi:id="Manifestation-utilizedElement-_ownedComment.0" annotatedElement="Manifestation-utilizedElement">
-          <body>The model element that is utilized in the manifestation in an Artifact.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Node" name="Node">
-      <ownedComment xmi:id="Node-_ownedComment.0" annotatedElement="Node">
-        <body>A Node is computational resource upon which artifacts may be deployed for execution. Nodes can be interconnected through communication paths to define network structures.</body>
-      </ownedComment>
-      <ownedRule xmi:id="Node-internal_structure" name="internal_structure" constrainedElement="Node">
-        <ownedComment xmi:id="Node-internal_structure-_ownedComment.0" annotatedElement="Node-internal_structure">
-          <body>The internal structure of a Node (if defined) consists solely of parts of type Node.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Node-internal_structure-_specification">
-          <language>OCL</language>
-          <body>part->forAll(oclIsKindOf(Node))</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="Node-_generalization.0" general="Class"/>
-      <generalization xmi:id="Node-_generalization.1" general="DeploymentTarget"/>
-      <ownedAttribute xmi:id="Node-nestedNode" name="nestedNode" type="Node" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_nestedNode_node">
-        <ownedComment xmi:id="Node-nestedNode-_ownedComment.0" annotatedElement="Node-nestedNode">
-          <body>The Nodes that are defined (nested) within the Node.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Node-nestedNode-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Node-nestedNode-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="Node-createCommunicationPath" name="createCommunicationPath">
-        <ownedComment xmi:id="Node-createCommunicationPath-_ownedComment.0" annotatedElement="Node-createCommunicationPath">
-          <body>Creates a (binary) communication path between this node and the specified other node, with the specified navigabilities, aggregations, names, lower bounds, and upper bounds, and owned by this node's nearest package.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Node-createCommunicationPath-_ownedParameter.0" type="CommunicationPath" direction="return"/>
-        <ownedParameter xmi:id="Node-createCommunicationPath-end1IsNavigable" name="end1IsNavigable" effect="read">
-          <ownedComment xmi:id="Node-createCommunicationPath-end1IsNavigable-_ownedComment.0" annotatedElement="Node-createCommunicationPath-end1IsNavigable">
-            <body>The navigability for the first end of the new communication path.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Node-createCommunicationPath-end1Aggregation" name="end1Aggregation" type="AggregationKind" effect="read">
-          <ownedComment xmi:id="Node-createCommunicationPath-end1Aggregation-_ownedComment.0" annotatedElement="Node-createCommunicationPath-end1Aggregation">
-            <body>The aggregation for the first end of the new communication path.</body>
-          </ownedComment>
-        </ownedParameter>
-        <ownedParameter xmi:id="Node-createCommunicationPath-end1Name" name="end1Name" effect="read">
-          <ownedComment xmi:id="Node-createCommunicationPath-end1Name-_ownedComment.0" annotatedElement="Node-createCommunicationPath-end1Name">
-            <body>The name for the first end of the new communication path.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Node-createCommunicationPath-end1Lower" name="end1Lower" effect="read">
-          <ownedComment xmi:id="Node-createCommunicationPath-end1Lower-_ownedComment.0" annotatedElement="Node-createCommunicationPath-end1Lower">
-            <body>The lower bound for the first end of the new communication path.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Node-createCommunicationPath-end1Upper" name="end1Upper" effect="read">
-          <ownedComment xmi:id="Node-createCommunicationPath-end1Upper-_ownedComment.0" annotatedElement="Node-createCommunicationPath-end1Upper">
-            <body>The upper bound for the first end of the new communication path.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Node-createCommunicationPath-end1Node" name="end1Node" type="Node" effect="read">
-          <ownedComment xmi:id="Node-createCommunicationPath-end1Node-_ownedComment.0" annotatedElement="Node-createCommunicationPath-end1Node">
-            <body>The type for the first end of the new communication path.</body>
-          </ownedComment>
-        </ownedParameter>
-        <ownedParameter xmi:id="Node-createCommunicationPath-end2IsNavigable" name="end2IsNavigable" effect="read">
-          <ownedComment xmi:id="Node-createCommunicationPath-end2IsNavigable-_ownedComment.0" annotatedElement="Node-createCommunicationPath-end2IsNavigable">
-            <body>The navigability for the second end of the new communication path.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Node-createCommunicationPath-end2Aggregation" name="end2Aggregation" type="AggregationKind" effect="read">
-          <ownedComment xmi:id="Node-createCommunicationPath-end2Aggregation-_ownedComment.0" annotatedElement="Node-createCommunicationPath-end2Aggregation">
-            <body>The aggregation for the second end of the new communication path.</body>
-          </ownedComment>
-        </ownedParameter>
-        <ownedParameter xmi:id="Node-createCommunicationPath-end2Name" name="end2Name" effect="read">
-          <ownedComment xmi:id="Node-createCommunicationPath-end2Name-_ownedComment.0" annotatedElement="Node-createCommunicationPath-end2Name">
-            <body>The name for the second end of the new communication path.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Node-createCommunicationPath-end2Lower" name="end2Lower" effect="read">
-          <ownedComment xmi:id="Node-createCommunicationPath-end2Lower-_ownedComment.0" annotatedElement="Node-createCommunicationPath-end2Lower">
-            <body>The lower bound for the second end of the new communication path.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Node-createCommunicationPath-end2Upper" name="end2Upper" effect="read">
-          <ownedComment xmi:id="Node-createCommunicationPath-end2Upper-_ownedComment.0" annotatedElement="Node-createCommunicationPath-end2Upper">
-            <body>The upper bound for the second end of the new communication path.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Node-getCommunicationPaths" name="getCommunicationPaths">
-        <ownedComment xmi:id="Node-getCommunicationPaths-_ownedComment.0" annotatedElement="Node-getCommunicationPaths">
-          <body>Retrieves the communication paths in which this node is involved.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Node-getCommunicationPaths-_ownedParameter.0" type="CommunicationPath" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Node-getCommunicationPaths-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Node-getCommunicationPaths-_ownedParameter.0-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_nestedNode_node" name="A_nestedNode_node" visibility="private" memberEnd="Node-nestedNode A_nestedNode_node-node">
-      <ownedEnd xmi:id="A_nestedNode_node-node" name="node" type="Node" subsettedProperty="NamedElement-namespace" association="A_nestedNode_node">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_nestedNode_node-node-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_utilizedElement_manifestation" name="A_utilizedElement_manifestation" visibility="private" memberEnd="Manifestation-utilizedElement A_utilizedElement_manifestation-manifestation">
-      <ownedEnd xmi:id="A_utilizedElement_manifestation-manifestation" name="manifestation" type="Manifestation" subsettedProperty="A_supplier_supplierDependency-supplierDependency" association="A_utilizedElement_manifestation">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_utilizedElement_manifestation-manifestation-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_utilizedElement_manifestation-manifestation-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_deployedElement_deploymentTarget" name="A_deployedElement_deploymentTarget" visibility="private" isDerived="true" memberEnd="DeploymentTarget-deployedElement A_deployedElement_deploymentTarget-deploymentTarget">
-      <ownedEnd xmi:id="A_deployedElement_deploymentTarget-deploymentTarget" name="deploymentTarget" type="DeploymentTarget" association="A_deployedElement_deploymentTarget">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_deployedElement_deploymentTarget-deploymentTarget-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_deployedElement_deploymentTarget-deploymentTarget-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_deployment_location" name="A_deployment_location" visibility="private" memberEnd="DeploymentTarget-deployment Deployment-location"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_deployedArtifact_deploymentForArtifact" name="A_deployedArtifact_deploymentForArtifact" visibility="private" memberEnd="Deployment-deployedArtifact A_deployedArtifact_deploymentForArtifact-deploymentForArtifact">
-      <ownedEnd xmi:id="A_deployedArtifact_deploymentForArtifact-deploymentForArtifact" name="deploymentForArtifact" type="Deployment" subsettedProperty="A_supplier_supplierDependency-supplierDependency" association="A_deployedArtifact_deploymentForArtifact">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_deployedArtifact_deploymentForArtifact-deploymentForArtifact-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_deployedArtifact_deploymentForArtifact-deploymentForArtifact-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_configuration_deployment" name="A_configuration_deployment" visibility="private" memberEnd="Deployment-configuration DeploymentSpecification-deployment"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedAttribute_artifact" name="A_ownedAttribute_artifact" visibility="private" memberEnd="Artifact-ownedAttribute A_ownedAttribute_artifact-artifact">
-      <ownedEnd xmi:id="A_ownedAttribute_artifact-artifact" name="artifact" type="Artifact" subsettedProperty="A_attribute_classifier-classifier NamedElement-namespace" association="A_ownedAttribute_artifact">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_ownedAttribute_artifact-artifact-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedOperation_artifact" name="A_ownedOperation_artifact" visibility="private" memberEnd="Artifact-ownedOperation A_ownedOperation_artifact-artifact">
-      <ownedEnd xmi:id="A_ownedOperation_artifact-artifact" name="artifact" type="Artifact" subsettedProperty="Feature-featuringClassifier NamedElement-namespace RedefinableElement-redefinitionContext" association="A_ownedOperation_artifact">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_ownedOperation_artifact-artifact-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_nestedArtifact_artifact" name="A_nestedArtifact_artifact" visibility="private" memberEnd="Artifact-nestedArtifact A_nestedArtifact_artifact-artifact">
-      <ownedEnd xmi:id="A_nestedArtifact_artifact-artifact" name="artifact" type="Artifact" subsettedProperty="NamedElement-namespace" association="A_nestedArtifact_artifact">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_nestedArtifact_artifact-artifact-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_manifestation_artifact" name="A_manifestation_artifact" visibility="private" memberEnd="Artifact-manifestation A_manifestation_artifact-artifact">
-      <ownedEnd xmi:id="A_manifestation_artifact-artifact" name="artifact" type="Artifact" subsettedProperty="Dependency-client Element-owner" association="A_manifestation_artifact"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="InformationFlow" name="InformationFlow">
-      <ownedComment xmi:id="InformationFlow-_ownedComment.0" annotatedElement="InformationFlow">
-        <body>InformationFlows describe circulation of information through a system in a general manner. They do not specify the nature of the information, mechanisms by which it is conveyed, sequences of exchange or any control conditions. During more detailed modeling, representation and realization links may be added to specify which model elements implement an InformationFlow and to show how information is conveyed.  InformationFlows require some kind of “information channel” for unidirectional transmission of information items from sources to targets.  They specify the information channel’s realizations, if any, and identify the information that flows along them.  Information moving along the information channel may be represented by abstract InformationItems and by concrete Classifiers.</body>
-      </ownedComment>
-      <ownedRule xmi:id="InformationFlow-must_conform" name="must_conform" constrainedElement="InformationFlow">
-        <ownedComment xmi:id="InformationFlow-must_conform-_ownedComment.0" annotatedElement="InformationFlow-must_conform">
-          <body>The sources and targets of the information flow must conform to the sources and targets or conversely the targets and sources of the realization relationships.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="InformationFlow-must_conform-_specification" language=""/>
-      </ownedRule>
-      <ownedRule xmi:id="InformationFlow-sources_and_targets_kind" name="sources_and_targets_kind" constrainedElement="InformationFlow">
-        <ownedComment xmi:id="InformationFlow-sources_and_targets_kind-_ownedComment.0" annotatedElement="InformationFlow-sources_and_targets_kind">
-          <body>The sources and targets of the information flow can only be one of the following kind: Actor, Node, UseCase, Artifact, Class, Component, Port, Property, Interface, Package, ActivityNode, ActivityPartition,&#xD;
-Behavior and InstanceSpecification except when its classifier is a relationship (i.e. it represents a link).</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="InformationFlow-sources_and_targets_kind-_specification">
-          <language>OCL</language>
-          <body>(self.informationSource->forAll( sis |&#xD;
-  oclIsKindOf(Actor) or oclIsKindOf(Node) or oclIsKindOf(UseCase) or oclIsKindOf(Artifact) or &#xD;
-  oclIsKindOf(Class) or oclIsKindOf(Component) or oclIsKindOf(Port) or oclIsKindOf(Property) or &#xD;
-  oclIsKindOf(Interface) or oclIsKindOf(Package) or oclIsKindOf(ActivityNode) or oclIsKindOf(ActivityPartition) or &#xD;
-  (oclIsKindOf(InstanceSpecification) and not sis.oclAsType(InstanceSpecification).classifier->exists(oclIsKindOf(Relationship))))) &#xD;
-&#xD;
-and&#xD;
-&#xD;
-(self.informationTarget->forAll( sit | &#xD;
-  oclIsKindOf(Actor) or oclIsKindOf(Node) or oclIsKindOf(UseCase) or oclIsKindOf(Artifact) or &#xD;
-  oclIsKindOf(Class) or oclIsKindOf(Component) or oclIsKindOf(Port) or oclIsKindOf(Property) or &#xD;
-  oclIsKindOf(Interface) or oclIsKindOf(Package) or oclIsKindOf(ActivityNode) or oclIsKindOf(ActivityPartition) or &#xD;
-(oclIsKindOf(InstanceSpecification) and not sit.oclAsType(InstanceSpecification).classifier->exists(oclIsKindOf(Relationship)))))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="InformationFlow-convey_classifiers" name="convey_classifiers" constrainedElement="InformationFlow">
-        <ownedComment xmi:id="InformationFlow-convey_classifiers-_ownedComment.0" annotatedElement="InformationFlow-convey_classifiers">
-          <body>An information flow can only convey classifiers that are allowed to represent an information item.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="InformationFlow-convey_classifiers-_specification">
-          <language>OCL</language>
-          <body>self.conveyed->forAll(oclIsKindOf(Class) or oclIsKindOf(Interface)&#xD;
-  or oclIsKindOf(InformationItem) or oclIsKindOf(Signal) or oclIsKindOf(Component))</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="InformationFlow-_generalization.0" general="DirectedRelationship"/>
-      <generalization xmi:id="InformationFlow-_generalization.1" general="PackageableElement"/>
-      <ownedAttribute xmi:id="InformationFlow-conveyed" name="conveyed" type="Classifier" association="A_conveyed_conveyingFlow">
-        <ownedComment xmi:id="InformationFlow-conveyed-_ownedComment.0" annotatedElement="InformationFlow-conveyed">
-          <body>Specifies the information items that may circulate on this information flow.</body>
-        </ownedComment>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InformationFlow-conveyed-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="InformationFlow-informationSource" name="informationSource" type="NamedElement" subsettedProperty="DirectedRelationship-source" association="A_informationSource_informationFlow">
-        <ownedComment xmi:id="InformationFlow-informationSource-_ownedComment.0" annotatedElement="InformationFlow-informationSource">
-          <body>Defines from which source the conveyed InformationItems are initiated.</body>
-        </ownedComment>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InformationFlow-informationSource-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="InformationFlow-informationTarget" name="informationTarget" type="NamedElement" subsettedProperty="DirectedRelationship-target" association="A_informationTarget_informationFlow">
-        <ownedComment xmi:id="InformationFlow-informationTarget-_ownedComment.0" annotatedElement="InformationFlow-informationTarget">
-          <body>Defines to which target the conveyed InformationItems are directed.</body>
-        </ownedComment>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InformationFlow-informationTarget-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="InformationFlow-realization" name="realization" type="Relationship" association="A_realization_abstraction_flow">
-        <ownedComment xmi:id="InformationFlow-realization-_ownedComment.0" annotatedElement="InformationFlow-realization">
-          <body>Determines which Relationship will realize the specified flow.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="InformationFlow-realization-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InformationFlow-realization-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="InformationFlow-realizingActivityEdge" name="realizingActivityEdge" type="ActivityEdge" association="A_realizingActivityEdge_informationFlow">
-        <ownedComment xmi:id="InformationFlow-realizingActivityEdge-_ownedComment.0" annotatedElement="InformationFlow-realizingActivityEdge">
-          <body>Determines which ActivityEdges will realize the specified flow.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="InformationFlow-realizingActivityEdge-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InformationFlow-realizingActivityEdge-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="InformationFlow-realizingConnector" name="realizingConnector" type="Connector" association="A_realizingConnector_informationFlow">
-        <ownedComment xmi:id="InformationFlow-realizingConnector-_ownedComment.0" annotatedElement="InformationFlow-realizingConnector">
-          <body>Determines which Connectors will realize the specified flow.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="InformationFlow-realizingConnector-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InformationFlow-realizingConnector-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="InformationFlow-realizingMessage" name="realizingMessage" type="Message" association="A_realizingMessage_informationFlow">
-        <ownedComment xmi:id="InformationFlow-realizingMessage-_ownedComment.0" annotatedElement="InformationFlow-realizingMessage">
-          <body>Determines which Messages will realize the specified flow.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="InformationFlow-realizingMessage-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InformationFlow-realizingMessage-_upperValue" value="*"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="InformationItem" name="InformationItem">
-      <ownedComment xmi:id="InformationItem-_ownedComment.0" annotatedElement="InformationItem">
-        <body>InformationItems represent many kinds of information that can flow from sources to targets in very abstract ways.  They represent the kinds of information that may move within a system, but do not elaborate details of the transferred information.  Details of transferred information are the province of other Classifiers that may ultimately define InformationItems.  Consequently, InformationItems cannot be instantiated and do not themselves have features, generalizations, or associations. An important use of InformationItems is to represent information during early design stages, possibly before the detailed modeling decisions that will ultimately define them have been made. Another purpose of InformationItems is to abstract portions of complex models in less precise, but perhaps more general and communicable, ways.</body>
-      </ownedComment>
-      <ownedRule xmi:id="InformationItem-sources_and_targets" name="sources_and_targets" constrainedElement="InformationItem">
-        <ownedComment xmi:id="InformationItem-sources_and_targets-_ownedComment.0" annotatedElement="InformationItem-sources_and_targets">
-          <body>The sources and targets of an information item (its related information flows) must designate subsets of the sources and targets of the representation information item, if any. The Classifiers that can realize an information item can only be of the following kind: Class, Interface, InformationItem, Signal, Component.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="InformationItem-sources_and_targets-_specification">
-          <language>OCL</language>
-          <body>(self.represented->select(oclIsKindOf(InformationItem))->forAll(p |&#xD;
-  p.conveyingFlow.source->forAll(q | self.conveyingFlow.source->includes(q)) and&#xD;
-    p.conveyingFlow.target->forAll(q | self.conveyingFlow.target->includes(q)))) and&#xD;
-      (self.represented->forAll(oclIsKindOf(Class) or oclIsKindOf(Interface) or&#xD;
-        oclIsKindOf(InformationItem) or oclIsKindOf(Signal) or oclIsKindOf(Component)))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="InformationItem-has_no" name="has_no" constrainedElement="InformationItem">
-        <ownedComment xmi:id="InformationItem-has_no-_ownedComment.0" annotatedElement="InformationItem-has_no">
-          <body>An informationItem has no feature, no generalization, and no associations.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="InformationItem-has_no-_specification">
-          <language>OCL</language>
-          <body>self.generalization->isEmpty() and self.feature->isEmpty()</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="InformationItem-not_instantiable" name="not_instantiable" constrainedElement="InformationItem">
-        <ownedComment xmi:id="InformationItem-not_instantiable-_ownedComment.0" annotatedElement="InformationItem-not_instantiable">
-          <body>It is not instantiable.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="InformationItem-not_instantiable-_specification">
-          <language>OCL</language>
-          <body>isAbstract</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="InformationItem-_generalization.0" general="Classifier"/>
-      <ownedAttribute xmi:id="InformationItem-represented" name="represented" type="Classifier" association="A_represented_representation">
-        <ownedComment xmi:id="InformationItem-represented-_ownedComment.0" annotatedElement="InformationItem-represented">
-          <body>Determines the classifiers that will specify the structure and nature of the information. An information item represents all its represented classifiers.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="InformationItem-represented-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InformationItem-represented-_upperValue" value="*"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_represented_representation" name="A_represented_representation" visibility="private" memberEnd="InformationItem-represented A_represented_representation-representation">
-      <ownedEnd xmi:id="A_represented_representation-representation" name="representation" type="InformationItem" association="A_represented_representation">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_represented_representation-representation-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_represented_representation-representation-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_conveyed_conveyingFlow" name="A_conveyed_conveyingFlow" visibility="private" memberEnd="InformationFlow-conveyed A_conveyed_conveyingFlow-conveyingFlow">
-      <ownedEnd xmi:id="A_conveyed_conveyingFlow-conveyingFlow" name="conveyingFlow" type="InformationFlow" association="A_conveyed_conveyingFlow">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_conveyed_conveyingFlow-conveyingFlow-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_conveyed_conveyingFlow-conveyingFlow-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_realizingActivityEdge_informationFlow" name="A_realizingActivityEdge_informationFlow" visibility="private" memberEnd="InformationFlow-realizingActivityEdge A_realizingActivityEdge_informationFlow-informationFlow">
-      <ownedEnd xmi:id="A_realizingActivityEdge_informationFlow-informationFlow" name="informationFlow" type="InformationFlow" association="A_realizingActivityEdge_informationFlow">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_realizingActivityEdge_informationFlow-informationFlow-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_realizingActivityEdge_informationFlow-informationFlow-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_realizingMessage_informationFlow" name="A_realizingMessage_informationFlow" visibility="private" memberEnd="InformationFlow-realizingMessage A_realizingMessage_informationFlow-informationFlow">
-      <ownedEnd xmi:id="A_realizingMessage_informationFlow-informationFlow" name="informationFlow" type="InformationFlow" association="A_realizingMessage_informationFlow">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_realizingMessage_informationFlow-informationFlow-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_realizingMessage_informationFlow-informationFlow-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_informationSource_informationFlow" name="A_informationSource_informationFlow" visibility="private" memberEnd="InformationFlow-informationSource A_informationSource_informationFlow-informationFlow">
-      <ownedEnd xmi:id="A_informationSource_informationFlow-informationFlow" name="informationFlow" type="InformationFlow" subsettedProperty="A_source_directedRelationship-directedRelationship" association="A_informationSource_informationFlow">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_informationSource_informationFlow-informationFlow-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_informationSource_informationFlow-informationFlow-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_realization_abstraction_flow" name="A_realization_abstraction_flow" visibility="private" memberEnd="InformationFlow-realization A_realization_abstraction_flow-abstraction">
-      <ownedEnd xmi:id="A_realization_abstraction_flow-abstraction" name="abstraction" type="InformationFlow" association="A_realization_abstraction_flow">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_realization_abstraction_flow-abstraction-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_realization_abstraction_flow-abstraction-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_realizingConnector_informationFlow" name="A_realizingConnector_informationFlow" visibility="private" memberEnd="InformationFlow-realizingConnector A_realizingConnector_informationFlow-informationFlow">
-      <ownedEnd xmi:id="A_realizingConnector_informationFlow-informationFlow" name="informationFlow" type="InformationFlow" association="A_realizingConnector_informationFlow">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_realizingConnector_informationFlow-informationFlow-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_realizingConnector_informationFlow-informationFlow-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_informationTarget_informationFlow" name="A_informationTarget_informationFlow" visibility="private" memberEnd="InformationFlow-informationTarget A_informationTarget_informationFlow-informationFlow">
-      <ownedEnd xmi:id="A_informationTarget_informationFlow-informationFlow" name="informationFlow" type="InformationFlow" subsettedProperty="A_target_directedRelationship-directedRelationship" association="A_informationTarget_informationFlow">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_informationTarget_informationFlow-informationFlow-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_informationTarget_informationFlow-informationFlow-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ActionExecutionSpecification" name="ActionExecutionSpecification">
-      <ownedComment xmi:id="ActionExecutionSpecification-_ownedComment.0" annotatedElement="ActionExecutionSpecification">
-        <body>An ActionExecutionSpecification is a kind of ExecutionSpecification representing the execution of an Action.</body>
-      </ownedComment>
-      <ownedRule xmi:id="ActionExecutionSpecification-action_referenced" name="action_referenced" constrainedElement="ActionExecutionSpecification">
-        <ownedComment xmi:id="ActionExecutionSpecification-action_referenced-_ownedComment.0" annotatedElement="ActionExecutionSpecification-action_referenced">
-          <body>The Action referenced by the ActionExecutionSpecification must be owned by the Interaction owning that ActionExecutionSpecification.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ActionExecutionSpecification-action_referenced-_specification">
-          <language>OCL</language>
-          <body>(enclosingInteraction->notEmpty() or enclosingOperand.combinedFragment->notEmpty()) and&#xD;
-let parentInteraction : Set(Interaction) = enclosingInteraction.oclAsType(Interaction)->asSet()->union(&#xD;
-enclosingOperand.combinedFragment->closure(enclosingOperand.combinedFragment)->&#xD;
-collect(enclosingInteraction).oclAsType(Interaction)->asSet()) in&#xD;
-(parentInteraction->size() = 1) and self.action.interaction->asSet() = parentInteraction</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="ActionExecutionSpecification-_generalization.0" general="ExecutionSpecification"/>
-      <ownedAttribute xmi:id="ActionExecutionSpecification-action" name="action" type="Action" association="A_action_actionExecutionSpecification">
-        <ownedComment xmi:id="ActionExecutionSpecification-action-_ownedComment.0" annotatedElement="ActionExecutionSpecification-action">
-          <body>Action whose execution is occurring.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="BehaviorExecutionSpecification" name="BehaviorExecutionSpecification">
-      <ownedComment xmi:id="BehaviorExecutionSpecification-_ownedComment.0" annotatedElement="BehaviorExecutionSpecification">
-        <body>A BehaviorExecutionSpecification is a kind of ExecutionSpecification representing the execution of a Behavior.</body>
-      </ownedComment>
-      <generalization xmi:id="BehaviorExecutionSpecification-_generalization.0" general="ExecutionSpecification"/>
-      <ownedAttribute xmi:id="BehaviorExecutionSpecification-behavior" name="behavior" type="Behavior" association="A_behavior_behaviorExecutionSpecification">
-        <ownedComment xmi:id="BehaviorExecutionSpecification-behavior-_ownedComment.0" annotatedElement="BehaviorExecutionSpecification-behavior">
-          <body>Behavior whose execution is occurring.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BehaviorExecutionSpecification-behavior-_lowerValue"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="CombinedFragment" name="CombinedFragment">
-      <ownedComment xmi:id="CombinedFragment-_ownedComment.0" annotatedElement="CombinedFragment">
-        <body>A CombinedFragment defines an expression of InteractionFragments. A CombinedFragment is defined by an interaction operator and corresponding InteractionOperands. Through the use of CombinedFragments the user will be able to describe a number of traces in a compact and concise manner.</body>
-      </ownedComment>
-      <ownedRule xmi:id="CombinedFragment-break" name="break" constrainedElement="CombinedFragment">
-        <ownedComment xmi:id="CombinedFragment-break-_ownedComment.0" annotatedElement="CombinedFragment-break">
-          <body>If the interactionOperator is break, the corresponding InteractionOperand must cover all Lifelines covered by the enclosing InteractionFragment.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="CombinedFragment-break-_specification">
-          <language>OCL</language>
-          <body>interactionOperator=InteractionOperatorKind::break  implies   &#xD;
-enclosingInteraction.oclAsType(InteractionFragment)->asSet()->union(&#xD;
-   enclosingOperand.oclAsType(InteractionFragment)->asSet()).covered->asSet() = self.covered->asSet()</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="CombinedFragment-consider_and_ignore" name="consider_and_ignore" constrainedElement="CombinedFragment">
-        <ownedComment xmi:id="CombinedFragment-consider_and_ignore-_ownedComment.0" annotatedElement="CombinedFragment-consider_and_ignore">
-          <body>The interaction operators 'consider' and 'ignore' can only be used for the ConsiderIgnoreFragment subtype of CombinedFragment</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="CombinedFragment-consider_and_ignore-_specification">
-          <language>OCL</language>
-          <body>((interactionOperator = InteractionOperatorKind::consider) or (interactionOperator =  InteractionOperatorKind::ignore)) implies oclIsKindOf(ConsiderIgnoreFragment)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="CombinedFragment-opt_loop_break_neg" name="opt_loop_break_neg" constrainedElement="CombinedFragment">
-        <ownedComment xmi:id="CombinedFragment-opt_loop_break_neg-_ownedComment.0" annotatedElement="CombinedFragment-opt_loop_break_neg">
-          <body>If the interactionOperator is opt, loop, break, assert or neg, there must be exactly one operand.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="CombinedFragment-opt_loop_break_neg-_specification">
-          <language>OCL</language>
-          <body>(interactionOperator =  InteractionOperatorKind::opt or interactionOperator = InteractionOperatorKind::loop or&#xD;
-interactionOperator = InteractionOperatorKind::break or interactionOperator = InteractionOperatorKind::assert or&#xD;
-interactionOperator = InteractionOperatorKind::neg)&#xD;
-implies operand->size()=1</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="CombinedFragment-_generalization.0" general="InteractionFragment"/>
-      <ownedAttribute xmi:id="CombinedFragment-cfragmentGate" name="cfragmentGate" type="Gate" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_cfragmentGate_combinedFragment">
-        <ownedComment xmi:id="CombinedFragment-cfragmentGate-_ownedComment.0" annotatedElement="CombinedFragment-cfragmentGate">
-          <body>Specifies the gates that form the interface between this CombinedFragment and its surroundings</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="CombinedFragment-cfragmentGate-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="CombinedFragment-cfragmentGate-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="CombinedFragment-interactionOperator" name="interactionOperator" type="InteractionOperatorKind">
-        <ownedComment xmi:id="CombinedFragment-interactionOperator-_ownedComment.0" annotatedElement="CombinedFragment-interactionOperator">
-          <body>Specifies the operation which defines the semantics of this combination of InteractionFragments.</body>
-        </ownedComment>
-        <defaultValue xmi:type="uml:InstanceValue" xmi:id="CombinedFragment-interactionOperator-_defaultValue" type="InteractionOperatorKind" instance="InteractionOperatorKind-seq"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="CombinedFragment-operand" name="operand" type="InteractionOperand" isOrdered="true" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_operand_combinedFragment">
-        <ownedComment xmi:id="CombinedFragment-operand-_ownedComment.0" annotatedElement="CombinedFragment-operand">
-          <body>The set of operands of the combined fragment.</body>
-        </ownedComment>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="CombinedFragment-operand-_upperValue" value="*"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ConsiderIgnoreFragment" name="ConsiderIgnoreFragment">
-      <ownedComment xmi:id="ConsiderIgnoreFragment-_ownedComment.0" annotatedElement="ConsiderIgnoreFragment">
-        <body>A ConsiderIgnoreFragment is a kind of CombinedFragment that is used for the consider and ignore cases, which require lists of pertinent Messages to be specified.</body>
-      </ownedComment>
-      <ownedRule xmi:id="ConsiderIgnoreFragment-consider_or_ignore" name="consider_or_ignore" constrainedElement="ConsiderIgnoreFragment">
-        <ownedComment xmi:id="ConsiderIgnoreFragment-consider_or_ignore-_ownedComment.0" annotatedElement="ConsiderIgnoreFragment-consider_or_ignore">
-          <body>The interaction operator of a ConsiderIgnoreFragment must be either 'consider' or 'ignore'.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ConsiderIgnoreFragment-consider_or_ignore-_specification">
-          <language>OCL</language>
-          <body>(interactionOperator =  InteractionOperatorKind::consider) or (interactionOperator =  InteractionOperatorKind::ignore)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ConsiderIgnoreFragment-type" name="type" constrainedElement="ConsiderIgnoreFragment">
-        <ownedComment xmi:id="ConsiderIgnoreFragment-type-_ownedComment.0" annotatedElement="ConsiderIgnoreFragment-type">
-          <body>The NamedElements must be of a type of element that can be a signature for a message (i.e.., an Operation, or a Signal).</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ConsiderIgnoreFragment-type-_specification">
-          <language>OCL</language>
-          <body>message->forAll(m | m.oclIsKindOf(Operation) or m.oclIsKindOf(Signal))</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="ConsiderIgnoreFragment-_generalization.0" general="CombinedFragment"/>
-      <ownedAttribute xmi:id="ConsiderIgnoreFragment-message" name="message" type="NamedElement" association="A_message_considerIgnoreFragment">
-        <ownedComment xmi:id="ConsiderIgnoreFragment-message-_ownedComment.0" annotatedElement="ConsiderIgnoreFragment-message">
-          <body>The set of messages that apply to this fragment.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ConsiderIgnoreFragment-message-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ConsiderIgnoreFragment-message-_upperValue" value="*"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Continuation" name="Continuation">
-      <ownedComment xmi:id="Continuation-_ownedComment.0" annotatedElement="Continuation">
-        <body>A Continuation is a syntactic way to define continuations of different branches of an alternative CombinedFragment. Continuations are intuitively similar to labels representing intermediate points in a flow of control.</body>
-      </ownedComment>
-      <ownedRule xmi:id="Continuation-first_or_last_interaction_fragment" name="first_or_last_interaction_fragment" constrainedElement="Continuation">
-        <ownedComment xmi:id="Continuation-first_or_last_interaction_fragment-_ownedComment.0" annotatedElement="Continuation-first_or_last_interaction_fragment">
-          <body>Continuations always occur as the very first InteractionFragment or the very last InteractionFragment of the enclosing InteractionOperand.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Continuation-first_or_last_interaction_fragment-_specification">
-          <language>OCL</language>
-          <body> enclosingOperand->notEmpty() and &#xD;
- let peerFragments : OrderedSet(InteractionFragment) =  enclosingOperand.fragment in &#xD;
-   ( peerFragments->notEmpty() and &#xD;
-   ((peerFragments->first() = self) or  (peerFragments->last() = self)))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Continuation-same_name" name="same_name" constrainedElement="Continuation">
-        <ownedComment xmi:id="Continuation-same_name-_ownedComment.0" annotatedElement="Continuation-same_name">
-          <body>Across all Interaction instances having the same context value, every Lifeline instance covered by a Continuation (self) must be common with one covered Lifeline instance of all other Continuation instances with the same name as self, and every Lifeline instance covered by a Continuation instance with the same name as self must be common with one covered Lifeline instance of self. Lifeline instances are common if they have the same selector and represents associationEnd values.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Continuation-same_name-_specification">
-          <language>OCL</language>
-          <body>enclosingOperand.combinedFragment->notEmpty() and&#xD;
-let parentInteraction : Set(Interaction) = &#xD;
-enclosingOperand.combinedFragment->closure(enclosingOperand.combinedFragment)->&#xD;
-collect(enclosingInteraction).oclAsType(Interaction)->asSet()&#xD;
-in &#xD;
-(parentInteraction->size() = 1) &#xD;
-and let peerInteractions : Set(Interaction) =&#xD;
- (parentInteraction->union(parentInteraction->collect(_'context')->collect(behavior)->&#xD;
- select(oclIsKindOf(Interaction)).oclAsType(Interaction)->asSet())->asSet()) in&#xD;
- (peerInteractions->notEmpty()) and &#xD;
-  let combinedFragments1 : Set(CombinedFragment) = peerInteractions.fragment->&#xD;
- select(oclIsKindOf(CombinedFragment)).oclAsType(CombinedFragment)->asSet() in&#xD;
-   combinedFragments1->notEmpty() and  combinedFragments1->closure(operand.fragment->&#xD;
-   select(oclIsKindOf(CombinedFragment)).oclAsType(CombinedFragment))->asSet().operand.fragment->&#xD;
-   select(oclIsKindOf(Continuation)).oclAsType(Continuation)->asSet()->&#xD;
-   forAll(c : Continuation |  (c.name = self.name) implies &#xD;
-  (c.covered->asSet()->forAll(cl : Lifeline | --  cl must be common to one lifeline covered by self&#xD;
-  self.covered->asSet()->&#xD;
-  select(represents = cl.represents and selector = cl.selector)->asSet()->size()=1))&#xD;
-   and&#xD;
- (self.covered->asSet()->forAll(cl : Lifeline | --  cl must be common to one lifeline covered by c&#xD;
- c.covered->asSet()->&#xD;
-  select(represents = cl.represents and selector = cl.selector)->asSet()->size()=1))&#xD;
-  )</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Continuation-global" name="global" constrainedElement="Continuation">
-        <ownedComment xmi:id="Continuation-global-_ownedComment.0" annotatedElement="Continuation-global">
-          <body>Continuations are always global in the enclosing InteractionFragment e.g., it always covers all Lifelines covered by the enclosing InteractionOperator.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Continuation-global-_specification">
-          <language>OCL</language>
-          <body>enclosingOperand->notEmpty() and&#xD;
-  let operandLifelines : Set(Lifeline) =  enclosingOperand.covered in &#xD;
-    (operandLifelines->notEmpty() and &#xD;
-    operandLifelines->forAll(ol :Lifeline |self.covered->includes(ol)))</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="Continuation-_generalization.0" general="InteractionFragment"/>
-      <ownedAttribute xmi:id="Continuation-setting" name="setting">
-        <ownedComment xmi:id="Continuation-setting-_ownedComment.0" annotatedElement="Continuation-setting">
-          <body>True: when the Continuation is at the end of the enclosing InteractionFragment and False when it is in the beginning.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Continuation-setting-_defaultValue" value="true"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="DestructionOccurrenceSpecification" name="DestructionOccurrenceSpecification">
-      <ownedComment xmi:id="DestructionOccurrenceSpecification-_ownedComment.0" annotatedElement="DestructionOccurrenceSpecification">
-        <body>A DestructionOccurenceSpecification models the destruction of an object.</body>
-      </ownedComment>
-      <ownedRule xmi:id="DestructionOccurrenceSpecification-no_occurrence_specifications_below" name="no_occurrence_specifications_below" constrainedElement="DestructionOccurrenceSpecification">
-        <ownedComment xmi:id="DestructionOccurrenceSpecification-no_occurrence_specifications_below-_ownedComment.0" annotatedElement="DestructionOccurrenceSpecification-no_occurrence_specifications_below">
-          <body>No other OccurrenceSpecifications on a given Lifeline in an InteractionOperand may appear below a DestructionOccurrenceSpecification.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="DestructionOccurrenceSpecification-no_occurrence_specifications_below-_specification">
-          <language>OCL</language>
-          <body>let o : InteractionOperand = enclosingOperand in o->notEmpty() and &#xD;
-let peerEvents : OrderedSet(OccurrenceSpecification) = covered.events->select(enclosingOperand = o)&#xD;
-in peerEvents->last() = self</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="DestructionOccurrenceSpecification-_generalization.0" general="MessageOccurrenceSpecification"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ExecutionOccurrenceSpecification" name="ExecutionOccurrenceSpecification">
-      <ownedComment xmi:id="ExecutionOccurrenceSpecification-_ownedComment.0" annotatedElement="ExecutionOccurrenceSpecification">
-        <body>An ExecutionOccurrenceSpecification represents moments in time at which Actions or Behaviors start or finish.</body>
-      </ownedComment>
-      <generalization xmi:id="ExecutionOccurrenceSpecification-_generalization.0" general="OccurrenceSpecification"/>
-      <ownedAttribute xmi:id="ExecutionOccurrenceSpecification-execution" name="execution" type="ExecutionSpecification" association="A_execution_executionOccurrenceSpecification">
-        <ownedComment xmi:id="ExecutionOccurrenceSpecification-execution-_ownedComment.0" annotatedElement="ExecutionOccurrenceSpecification-execution">
-          <body>References the execution specification describing the execution that is started or finished at this execution event.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ExecutionSpecification" name="ExecutionSpecification" isAbstract="true">
-      <ownedComment xmi:id="ExecutionSpecification-_ownedComment.0" annotatedElement="ExecutionSpecification">
-        <body>An ExecutionSpecification is a specification of the execution of a unit of Behavior or Action within the Lifeline. The duration of an ExecutionSpecification is represented by two OccurrenceSpecifications, the start OccurrenceSpecification and the finish OccurrenceSpecification.</body>
-      </ownedComment>
-      <ownedRule xmi:id="ExecutionSpecification-same_lifeline" name="same_lifeline" constrainedElement="ExecutionSpecification">
-        <ownedComment xmi:id="ExecutionSpecification-same_lifeline-_ownedComment.0" annotatedElement="ExecutionSpecification-same_lifeline">
-          <body>The startEvent and the finishEvent must be on the same Lifeline.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ExecutionSpecification-same_lifeline-_specification">
-          <language>OCL</language>
-          <body>start.covered = finish.covered</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="ExecutionSpecification-_generalization.0" general="InteractionFragment"/>
-      <ownedAttribute xmi:id="ExecutionSpecification-finish" name="finish" type="OccurrenceSpecification" association="A_finish_executionSpecification">
-        <ownedComment xmi:id="ExecutionSpecification-finish-_ownedComment.0" annotatedElement="ExecutionSpecification-finish">
-          <body>References the OccurrenceSpecification that designates the finish of the Action or Behavior.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ExecutionSpecification-start" name="start" type="OccurrenceSpecification" association="A_start_executionSpecification">
-        <ownedComment xmi:id="ExecutionSpecification-start-_ownedComment.0" annotatedElement="ExecutionSpecification-start">
-          <body>References the OccurrenceSpecification that designates the start of the Action or Behavior.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Gate" name="Gate">
-      <ownedComment xmi:id="Gate-_ownedComment.0" annotatedElement="Gate">
-        <body>A Gate is a MessageEnd which serves as a connection point for relating a Message which has a MessageEnd (sendEvent / receiveEvent) outside an InteractionFragment with another Message which has a MessageEnd (receiveEvent / sendEvent)  inside that InteractionFragment.</body>
-      </ownedComment>
-      <ownedRule xmi:id="Gate-actual_gate_matched" name="actual_gate_matched" constrainedElement="Gate">
-        <ownedComment xmi:id="Gate-actual_gate_matched-_ownedComment.0" annotatedElement="Gate-actual_gate_matched">
-          <body>If this Gate is an actualGate, it must have exactly one matching formalGate within the referred Interaction.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Gate-actual_gate_matched-_specification">
-          <language>OCL</language>
-          <body>interactionUse->notEmpty() implies interactionUse.refersTo.formalGate->select(matches(self))->size()=1</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Gate-inside_cf_matched" name="inside_cf_matched" constrainedElement="Gate">
-        <ownedComment xmi:id="Gate-inside_cf_matched-_ownedComment.0" annotatedElement="Gate-inside_cf_matched">
-          <body>If this Gate is inside a CombinedFragment, it must have exactly one matching Gate which is outside of that CombinedFragment.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Gate-inside_cf_matched-_specification">
-          <language>OCL</language>
-          <body>isInsideCF() implies combinedFragment.cfragmentGate->select(isOutsideCF() and matches(self))->size()=1</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Gate-outside_cf_matched" name="outside_cf_matched" constrainedElement="Gate">
-        <ownedComment xmi:id="Gate-outside_cf_matched-_ownedComment.0" annotatedElement="Gate-outside_cf_matched">
-          <body>If this Gate is outside an 'alt' CombinedFragment,  for every InteractionOperator inside that CombinedFragment there must be exactly one matching Gate inside the CombindedFragment with its opposing end enclosed by that InteractionOperator. If this Gate is outside CombinedFragment with operator other than 'alt',   there must be exactly one matching Gate inside that CombinedFragment.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Gate-outside_cf_matched-_specification">
-          <language>OCL</language>
-          <body>isOutsideCF() implies&#xD;
- if self.combinedFragment.interactionOperator->asOrderedSet()->first() = InteractionOperatorKind::alt&#xD;
- then self.combinedFragment.operand->forAll(op : InteractionOperand |&#xD;
- self.combinedFragment.cfragmentGate->select(isInsideCF() and &#xD;
- oppositeEnd().enclosingFragment()->includes(self.combinedFragment) and matches(self))->size()=1)&#xD;
- else  self.combinedFragment.cfragmentGate->select(isInsideCF() and matches(self))->size()=1&#xD;
- endif</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Gate-formal_gate_distinguishable" name="formal_gate_distinguishable" constrainedElement="Gate">
-        <ownedComment xmi:id="Gate-formal_gate_distinguishable-_ownedComment.0" annotatedElement="Gate-formal_gate_distinguishable">
-          <body>isFormal() implies that no other formalGate of the parent Interaction returns the same getName() as returned for self</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Gate-formal_gate_distinguishable-_specification">
-          <language>OCL</language>
-          <body>isFormal() implies interaction.formalGate->select(getName() = self.getName())->size()=1</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Gate-actual_gate_distinguishable" name="actual_gate_distinguishable" constrainedElement="Gate">
-        <ownedComment xmi:id="Gate-actual_gate_distinguishable-_ownedComment.0" annotatedElement="Gate-actual_gate_distinguishable">
-          <body>isActual() implies that no other actualGate of the parent InteractionUse returns the same getName() as returned for self</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Gate-actual_gate_distinguishable-_specification">
-          <language>OCL</language>
-          <body>isActual() implies interactionUse.actualGate->select(getName() = self.getName())->size()=1</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Gate-outside_cf_gate_distinguishable" name="outside_cf_gate_distinguishable" constrainedElement="Gate">
-        <ownedComment xmi:id="Gate-outside_cf_gate_distinguishable-_ownedComment.0" annotatedElement="Gate-outside_cf_gate_distinguishable">
-          <body>isOutsideCF() implies that no other outside cfragmentGate of the parent CombinedFragment returns the same getName() as returned for self</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Gate-outside_cf_gate_distinguishable-_specification">
-          <language>OCL</language>
-          <body>isOutsideCF() implies combinedFragment.cfragmentGate->select(getName() = self.getName())->size()=1</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Gate-inside_cf_gate_distinguishable" name="inside_cf_gate_distinguishable" constrainedElement="Gate">
-        <ownedComment xmi:id="Gate-inside_cf_gate_distinguishable-_ownedComment.0" annotatedElement="Gate-inside_cf_gate_distinguishable">
-          <body>isInsideCF() implies that no other inside cfragmentGate attached to a message with its other end in the same InteractionOperator as self, returns the same getName() as returned for self</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Gate-inside_cf_gate_distinguishable-_specification">
-          <language>OCL</language>
-          <body>isInsideCF() implies&#xD;
-let selfOperand : InteractionOperand = self.getOperand() in&#xD;
-  combinedFragment.cfragmentGate->select(isInsideCF() and getName() = self.getName())->select(getOperand() = selfOperand)->size()=1</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="Gate-_generalization.0" general="MessageEnd"/>
-      <ownedOperation xmi:id="Gate-isOutsideCF" name="isOutsideCF" bodyCondition="Gate-isOutsideCF-spec" isQuery="true">
-        <ownedComment xmi:id="Gate-isOutsideCF-_ownedComment.0" annotatedElement="Gate-isOutsideCF">
-          <body>This query returns true if this Gate is attached to the boundary of a CombinedFragment, and its other end (if present)  is outside of the same CombinedFragment.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Gate-isOutsideCF-spec" name="spec" constrainedElement="Gate-isOutsideCF">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Gate-isOutsideCF-spec-_specification">
-            <language>OCL</language>
-            <body>result = (self.oppositeEnd()-> notEmpty() and combinedFragment->notEmpty() implies&#xD;
-let oppEnd : MessageEnd = self.oppositeEnd()->asOrderedSet()->first() in&#xD;
-if oppEnd.oclIsKindOf(MessageOccurrenceSpecification) &#xD;
-then let oppMOS : MessageOccurrenceSpecification = oppEnd.oclAsType(MessageOccurrenceSpecification)&#xD;
-in  self.combinedFragment.enclosingInteraction.oclAsType(InteractionFragment)->asSet()->&#xD;
-     union(self.combinedFragment.enclosingOperand.oclAsType(InteractionFragment)->asSet()) =&#xD;
-     oppMOS.enclosingInteraction.oclAsType(InteractionFragment)->asSet()->&#xD;
-     union(oppMOS.enclosingOperand.oclAsType(InteractionFragment)->asSet())&#xD;
-else let oppGate : Gate = oppEnd.oclAsType(Gate) &#xD;
-in self.combinedFragment.enclosingInteraction.oclAsType(InteractionFragment)->asSet()->&#xD;
-     union(self.combinedFragment.enclosingOperand.oclAsType(InteractionFragment)->asSet()) =&#xD;
-     oppGate.combinedFragment.enclosingInteraction.oclAsType(InteractionFragment)->asSet()->&#xD;
-     union(oppGate.combinedFragment.enclosingOperand.oclAsType(InteractionFragment)->asSet())&#xD;
-endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Gate-isOutsideCF-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Gate-isInsideCF" name="isInsideCF" bodyCondition="Gate-isInsideCF-spec" isQuery="true">
-        <ownedComment xmi:id="Gate-isInsideCF-_ownedComment.0" annotatedElement="Gate-isInsideCF">
-          <body>This query returns true if this Gate is attached to the boundary of a CombinedFragment, and its other end (if present) is inside of an InteractionOperator of the same CombinedFragment.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Gate-isInsideCF-spec" name="spec" constrainedElement="Gate-isInsideCF">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Gate-isInsideCF-spec-_specification">
-            <language>OCL</language>
-            <body>result = (self.oppositeEnd()-> notEmpty() and combinedFragment->notEmpty() implies&#xD;
-let oppEnd : MessageEnd = self.oppositeEnd()->asOrderedSet()->first() in&#xD;
-if oppEnd.oclIsKindOf(MessageOccurrenceSpecification)&#xD;
-then let oppMOS : MessageOccurrenceSpecification&#xD;
-= oppEnd.oclAsType(MessageOccurrenceSpecification)&#xD;
-in combinedFragment = oppMOS.enclosingOperand.combinedFragment&#xD;
-else let oppGate : Gate = oppEnd.oclAsType(Gate)&#xD;
-in combinedFragment = oppGate.combinedFragment.enclosingOperand.combinedFragment&#xD;
-endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Gate-isInsideCF-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Gate-isActual" name="isActual" bodyCondition="Gate-isActual-spec" isQuery="true">
-        <ownedComment xmi:id="Gate-isActual-_ownedComment.0" annotatedElement="Gate-isActual">
-          <body>This query returns true value if this Gate is an actualGate of an InteractionUse.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Gate-isActual-spec" name="spec" constrainedElement="Gate-isActual">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Gate-isActual-spec-_specification">
-            <language>OCL</language>
-            <body>result = (interactionUse->notEmpty())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Gate-isActual-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Gate-isFormal" name="isFormal" bodyCondition="Gate-isFormal-spec" isQuery="true">
-        <ownedComment xmi:id="Gate-isFormal-_ownedComment.0" annotatedElement="Gate-isFormal">
-          <body>This query returns true if this Gate is a formalGate of an Interaction.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Gate-isFormal-spec" name="spec" constrainedElement="Gate-isFormal">
-          <ownedComment xmi:id="Gate-isFormal-spec-_ownedComment.0" annotatedElement="Gate-isFormal-spec">
-            <body>&lt;p>interaction-&amp;gt;notEmpty()&lt;/p></body>
-          </ownedComment>
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Gate-isFormal-spec-_specification">
-            <language>OCL</language>
-            <body>result = (interaction->notEmpty())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Gate-isFormal-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Gate-getName" name="getName" bodyCondition="Gate-getName-spec" isQuery="true">
-        <ownedComment xmi:id="Gate-getName-_ownedComment.0" annotatedElement="Gate-getName">
-          <body>This query returns the name of the gate, either the explicit name (.name) or the constructed name ('out_&quot; or 'in_' concatenated in front of .message.name) if the explicit name is not present.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Gate-getName-spec" name="spec" constrainedElement="Gate-getName">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Gate-getName-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if name->notEmpty() then name->asOrderedSet()->first()&#xD;
-else  if isActual() or isOutsideCF() &#xD;
-  then if isSend() &#xD;
-    then 'out_'.concat(self.message.name->asOrderedSet()->first())&#xD;
-    else 'in_'.concat(self.message.name->asOrderedSet()->first())&#xD;
-    endif&#xD;
-  else if isSend()&#xD;
-    then 'in_'.concat(self.message.name->asOrderedSet()->first())&#xD;
-    else 'out_'.concat(self.message.name->asOrderedSet()->first())&#xD;
-    endif&#xD;
-  endif&#xD;
-endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Gate-getName-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Gate-matches" name="matches" bodyCondition="Gate-matches-spec" isQuery="true">
-        <ownedComment xmi:id="Gate-matches-_ownedComment.0" annotatedElement="Gate-matches">
-          <body>This query returns true if the name of this Gate matches the name of the in parameter Gate, and the messages for the two Gates correspond. The Message for one Gate (say A) corresponds to the Message for another Gate (say B) if (A and B have the same name value) and (if A is a sendEvent then B is a receiveEvent) and (if A is a receiveEvent then B is a sendEvent) and (A and B have the same messageSort value) and (A and B have the same signature value).</body>
-        </ownedComment>
-        <ownedRule xmi:id="Gate-matches-spec" name="spec" constrainedElement="Gate-matches">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Gate-matches-spec-_specification">
-            <language>OCL</language>
-            <body>result = (self.getName() = gateToMatch.getName() and &#xD;
-self.message.messageSort = gateToMatch.message.messageSort and&#xD;
-self.message.name = gateToMatch.message.name and&#xD;
-self.message.sendEvent->includes(self) implies gateToMatch.message.receiveEvent->includes(gateToMatch)  and&#xD;
-self.message.receiveEvent->includes(self) implies gateToMatch.message.sendEvent->includes(gateToMatch) and&#xD;
-self.message.signature = gateToMatch.message.signature)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Gate-matches-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Gate-matches-gateToMatch" name="gateToMatch" type="Gate"/>
-      </ownedOperation>
-      <ownedOperation xmi:id="Gate-isDistinguishableFrom" name="isDistinguishableFrom" bodyCondition="Gate-isDistinguishableFrom-spec" isQuery="true" redefinedOperation="NamedElement-isDistinguishableFrom">
-        <ownedComment xmi:id="Gate-isDistinguishableFrom-_ownedComment.0" annotatedElement="Gate-isDistinguishableFrom">
-          <body>The query isDistinguishableFrom() specifies that two Gates may coexist in the same Namespace, without an explicit name property. The association end formalGate subsets ownedElement, and since the Gate name attribute&#xD;
-is optional, it is allowed to have two formal gates without an explicit name, but having derived names which are distinct.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Gate-isDistinguishableFrom-spec" name="spec" constrainedElement="Gate-isDistinguishableFrom">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Gate-isDistinguishableFrom-spec-_specification">
-            <language>OCL</language>
-            <body>result = (true)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Gate-isDistinguishableFrom-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Gate-isDistinguishableFrom-n" name="n" type="NamedElement"/>
-        <ownedParameter xmi:id="Gate-isDistinguishableFrom-ns" name="ns" type="Namespace"/>
-      </ownedOperation>
-      <ownedOperation xmi:id="Gate-getOperand" name="getOperand" bodyCondition="Gate-getOperand-spec" isQuery="true">
-        <ownedComment xmi:id="Gate-getOperand-_ownedComment.0" annotatedElement="Gate-getOperand">
-          <body>If the Gate is an inside Combined Fragment Gate, this operation returns the InteractionOperand that the opposite end of this Gate is included within.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Gate-getOperand-spec" name="spec" constrainedElement="Gate-getOperand">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Gate-getOperand-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if isInsideCF() then&#xD;
-  let oppEnd : MessageEnd = self.oppositeEnd()->asOrderedSet()->first() in&#xD;
-    if oppEnd.oclIsKindOf(MessageOccurrenceSpecification)&#xD;
-    then let oppMOS : MessageOccurrenceSpecification = oppEnd.oclAsType(MessageOccurrenceSpecification)&#xD;
-        in oppMOS.enclosingOperand->asOrderedSet()->first()&#xD;
-    else let oppGate : Gate = oppEnd.oclAsType(Gate)&#xD;
-        in oppGate.combinedFragment.enclosingOperand->asOrderedSet()->first()&#xD;
-    endif&#xD;
-  else null&#xD;
-endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Gate-getOperand-result" name="result" type="InteractionOperand" direction="return"/>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="GeneralOrdering" name="GeneralOrdering">
-      <ownedComment xmi:id="GeneralOrdering-_ownedComment.0" annotatedElement="GeneralOrdering">
-        <body>A GeneralOrdering represents a binary relation between two OccurrenceSpecifications, to describe that one OccurrenceSpecification must occur before the other in a valid trace. This mechanism provides the ability to define partial orders of OccurrenceSpecifications that may otherwise not have a specified order.</body>
-      </ownedComment>
-      <ownedRule xmi:id="GeneralOrdering-irreflexive_transitive_closure" name="irreflexive_transitive_closure" constrainedElement="GeneralOrdering">
-        <ownedComment xmi:id="GeneralOrdering-irreflexive_transitive_closure-_ownedComment.0" annotatedElement="GeneralOrdering-irreflexive_transitive_closure">
-          <body>An occurrence specification must not be ordered relative to itself through a series of general orderings. (In other words, the transitive closure of the general orderings is irreflexive.)</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="GeneralOrdering-irreflexive_transitive_closure-_specification">
-          <language>OCL</language>
-          <body>after->closure(toAfter.after)->excludes(before)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="GeneralOrdering-_generalization.0" general="NamedElement"/>
-      <ownedAttribute xmi:id="GeneralOrdering-after" name="after" type="OccurrenceSpecification" association="A_toBefore_after">
-        <ownedComment xmi:id="GeneralOrdering-after-_ownedComment.0" annotatedElement="GeneralOrdering-after">
-          <body>The OccurrenceSpecification referenced comes after the OccurrenceSpecification referenced by before.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="GeneralOrdering-before" name="before" type="OccurrenceSpecification" association="A_before_toAfter">
-        <ownedComment xmi:id="GeneralOrdering-before-_ownedComment.0" annotatedElement="GeneralOrdering-before">
-          <body>The OccurrenceSpecification referenced comes before the OccurrenceSpecification referenced by after.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Interaction" name="Interaction">
-      <ownedComment xmi:id="Interaction-_ownedComment.0" annotatedElement="Interaction">
-        <body>An Interaction is a unit of Behavior that focuses on the observable exchange of information between connectable elements.</body>
-      </ownedComment>
-      <ownedRule xmi:id="Interaction-not_contained" name="not_contained" constrainedElement="Interaction">
-        <ownedComment xmi:id="Interaction-not_contained-_ownedComment.0" annotatedElement="Interaction-not_contained">
-          <body>An Interaction instance must not be contained within another Interaction instance.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Interaction-not_contained-_specification">
-          <language>OCL</language>
-          <body>enclosingInteraction->isEmpty()</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="Interaction-_generalization.0" general="InteractionFragment"/>
-      <generalization xmi:id="Interaction-_generalization.1" general="Behavior"/>
-      <ownedAttribute xmi:id="Interaction-action" name="action" type="Action" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_action_interaction">
-        <ownedComment xmi:id="Interaction-action-_ownedComment.0" annotatedElement="Interaction-action">
-          <body>Actions owned by the Interaction.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Interaction-action-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Interaction-action-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Interaction-formalGate" name="formalGate" type="Gate" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_formalGate_interaction">
-        <ownedComment xmi:id="Interaction-formalGate-_ownedComment.0" annotatedElement="Interaction-formalGate">
-          <body>Specifies the gates that form the message interface between this Interaction and any InteractionUses which reference it.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Interaction-formalGate-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Interaction-formalGate-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Interaction-fragment" name="fragment" type="InteractionFragment" isOrdered="true" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_fragment_enclosingInteraction">
-        <ownedComment xmi:id="Interaction-fragment-_ownedComment.0" annotatedElement="Interaction-fragment">
-          <body>The ordered set of fragments in the Interaction.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Interaction-fragment-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Interaction-fragment-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Interaction-lifeline" name="lifeline" type="Lifeline" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_lifeline_interaction">
-        <ownedComment xmi:id="Interaction-lifeline-_ownedComment.0" annotatedElement="Interaction-lifeline">
-          <body>Specifies the participants in this Interaction.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Interaction-lifeline-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Interaction-lifeline-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Interaction-message" name="message" type="Message" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_message_interaction">
-        <ownedComment xmi:id="Interaction-message-_ownedComment.0" annotatedElement="Interaction-message">
-          <body>The Messages contained in this Interaction.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Interaction-message-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Interaction-message-_upperValue" value="*"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="InteractionConstraint" name="InteractionConstraint">
-      <ownedComment xmi:id="InteractionConstraint-_ownedComment.0" annotatedElement="InteractionConstraint">
-        <body>An InteractionConstraint is a Boolean expression that guards an operand in a CombinedFragment.</body>
-      </ownedComment>
-      <ownedRule xmi:id="InteractionConstraint-minint_maxint" name="minint_maxint" constrainedElement="InteractionConstraint">
-        <ownedComment xmi:id="InteractionConstraint-minint_maxint-_ownedComment.0" annotatedElement="InteractionConstraint-minint_maxint">
-          <body>Minint/maxint can only be present if the InteractionConstraint is associated with the operand of a loop CombinedFragment.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="InteractionConstraint-minint_maxint-_specification">
-          <language>OCL</language>
-          <body>maxint->notEmpty() or minint->notEmpty() implies&#xD;
-interactionOperand.combinedFragment.interactionOperator =&#xD;
-InteractionOperatorKind::loop</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="InteractionConstraint-minint_non_negative" name="minint_non_negative" constrainedElement="InteractionConstraint">
-        <ownedComment xmi:id="InteractionConstraint-minint_non_negative-_ownedComment.0" annotatedElement="InteractionConstraint-minint_non_negative">
-          <body>If minint is specified, then the expression must evaluate to a non-negative integer.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="InteractionConstraint-minint_non_negative-_specification">
-          <language>OCL</language>
-          <body>minint->notEmpty() implies &#xD;
-minint->asSequence()->first().integerValue() >= 0</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="InteractionConstraint-maxint_positive" name="maxint_positive" constrainedElement="InteractionConstraint">
-        <ownedComment xmi:id="InteractionConstraint-maxint_positive-_ownedComment.0" annotatedElement="InteractionConstraint-maxint_positive">
-          <body>If maxint is specified, then the expression must evaluate to a positive integer.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="InteractionConstraint-maxint_positive-_specification">
-          <language>OCL</language>
-          <body>maxint->notEmpty() implies &#xD;
-maxint->asSequence()->first().integerValue() > 0</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="InteractionConstraint-dynamic_variables" name="dynamic_variables" constrainedElement="InteractionConstraint">
-        <ownedComment xmi:id="InteractionConstraint-dynamic_variables-_ownedComment.0" annotatedElement="InteractionConstraint-dynamic_variables">
-          <body>The dynamic variables that take part in the constraint must be owned by the ConnectableElement corresponding to the covered Lifeline.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="InteractionConstraint-dynamic_variables-_specification" language=""/>
-      </ownedRule>
-      <ownedRule xmi:id="InteractionConstraint-global_data" name="global_data" constrainedElement="InteractionConstraint">
-        <ownedComment xmi:id="InteractionConstraint-global_data-_ownedComment.0" annotatedElement="InteractionConstraint-global_data">
-          <body>The constraint may contain references to global data or write-once data.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="InteractionConstraint-global_data-_specification" language=""/>
-      </ownedRule>
-      <ownedRule xmi:id="InteractionConstraint-maxint_greater_equal_minint" name="maxint_greater_equal_minint" constrainedElement="InteractionConstraint">
-        <ownedComment xmi:id="InteractionConstraint-maxint_greater_equal_minint-_ownedComment.0" annotatedElement="InteractionConstraint-maxint_greater_equal_minint">
-          <body>If maxint is specified, then minint must be specified and the evaluation of maxint must be >= the evaluation of minint.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="InteractionConstraint-maxint_greater_equal_minint-_specification">
-          <language>OCL</language>
-          <body>maxint->notEmpty() implies (minint->notEmpty() and &#xD;
-maxint->asSequence()->first().integerValue() >=&#xD;
-minint->asSequence()->first().integerValue() )</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="InteractionConstraint-_generalization.0" general="Constraint"/>
-      <ownedAttribute xmi:id="InteractionConstraint-maxint" name="maxint" type="ValueSpecification" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_maxint_interactionConstraint">
-        <ownedComment xmi:id="InteractionConstraint-maxint-_ownedComment.0" annotatedElement="InteractionConstraint-maxint">
-          <body>The maximum number of iterations of a loop</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="InteractionConstraint-maxint-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="InteractionConstraint-minint" name="minint" type="ValueSpecification" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_minint_interactionConstraint">
-        <ownedComment xmi:id="InteractionConstraint-minint-_ownedComment.0" annotatedElement="InteractionConstraint-minint">
-          <body>The minimum number of iterations of a loop</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="InteractionConstraint-minint-_lowerValue"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="InteractionFragment" name="InteractionFragment" isAbstract="true">
-      <ownedComment xmi:id="InteractionFragment-_ownedComment.0" annotatedElement="InteractionFragment">
-        <body>InteractionFragment is an abstract notion of the most general interaction unit. An InteractionFragment is a piece of an Interaction. Each InteractionFragment is conceptually like an Interaction by itself.</body>
-      </ownedComment>
-      <generalization xmi:id="InteractionFragment-_generalization.0" general="NamedElement"/>
-      <ownedAttribute xmi:id="InteractionFragment-covered" name="covered" type="Lifeline" association="A_covered_coveredBy">
-        <ownedComment xmi:id="InteractionFragment-covered-_ownedComment.0" annotatedElement="InteractionFragment-covered">
-          <body>References the Lifelines that the InteractionFragment involves.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="InteractionFragment-covered-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InteractionFragment-covered-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="InteractionFragment-enclosingInteraction" name="enclosingInteraction" type="Interaction" subsettedProperty="NamedElement-namespace" association="A_fragment_enclosingInteraction">
-        <ownedComment xmi:id="InteractionFragment-enclosingInteraction-_ownedComment.0" annotatedElement="InteractionFragment-enclosingInteraction">
-          <body>The Interaction enclosing this InteractionFragment.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="InteractionFragment-enclosingInteraction-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="InteractionFragment-enclosingOperand" name="enclosingOperand" type="InteractionOperand" subsettedProperty="NamedElement-namespace" association="A_fragment_enclosingOperand">
-        <ownedComment xmi:id="InteractionFragment-enclosingOperand-_ownedComment.0" annotatedElement="InteractionFragment-enclosingOperand">
-          <body>The operand enclosing this InteractionFragment (they may nest recursively).</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="InteractionFragment-enclosingOperand-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="InteractionFragment-generalOrdering" name="generalOrdering" type="GeneralOrdering" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_generalOrdering_interactionFragment">
-        <ownedComment xmi:id="InteractionFragment-generalOrdering-_ownedComment.0" annotatedElement="InteractionFragment-generalOrdering">
-          <body>The general ordering relationships contained in this fragment.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="InteractionFragment-generalOrdering-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InteractionFragment-generalOrdering-_upperValue" value="*"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="InteractionOperand" name="InteractionOperand">
-      <ownedComment xmi:id="InteractionOperand-_ownedComment.0" annotatedElement="InteractionOperand">
-        <body>An InteractionOperand is contained in a CombinedFragment. An InteractionOperand represents one operand of the expression given by the enclosing CombinedFragment.</body>
-      </ownedComment>
-      <ownedRule xmi:id="InteractionOperand-guard_contain_references" name="guard_contain_references" constrainedElement="InteractionOperand">
-        <ownedComment xmi:id="InteractionOperand-guard_contain_references-_ownedComment.0" annotatedElement="InteractionOperand-guard_contain_references">
-          <body>The guard must contain only references to values local to the Lifeline on which it resides, or values global to the whole Interaction.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="InteractionOperand-guard_contain_references-_specification" language=""/>
-      </ownedRule>
-      <ownedRule xmi:id="InteractionOperand-guard_directly_prior" name="guard_directly_prior" constrainedElement="InteractionOperand">
-        <ownedComment xmi:id="InteractionOperand-guard_directly_prior-_ownedComment.0" annotatedElement="InteractionOperand-guard_directly_prior">
-          <body>The guard must be placed directly prior to (above) the OccurrenceSpecification that will become the first OccurrenceSpecification within this InteractionOperand.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="InteractionOperand-guard_directly_prior-_specification" language=""/>
-      </ownedRule>
-      <generalization xmi:id="InteractionOperand-_generalization.0" general="InteractionFragment"/>
-      <generalization xmi:id="InteractionOperand-_generalization.1" general="Namespace"/>
-      <ownedAttribute xmi:id="InteractionOperand-fragment" name="fragment" type="InteractionFragment" isOrdered="true" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_fragment_enclosingOperand">
-        <ownedComment xmi:id="InteractionOperand-fragment-_ownedComment.0" annotatedElement="InteractionOperand-fragment">
-          <body>The fragments of the operand.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="InteractionOperand-fragment-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InteractionOperand-fragment-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="InteractionOperand-guard" name="guard" type="InteractionConstraint" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_guard_interactionOperand">
-        <ownedComment xmi:id="InteractionOperand-guard-_ownedComment.0" annotatedElement="InteractionOperand-guard">
-          <body>Constraint of the operand.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="InteractionOperand-guard-_lowerValue"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="InteractionUse" name="InteractionUse">
-      <ownedComment xmi:id="InteractionUse-_ownedComment.0" annotatedElement="InteractionUse">
-        <body>An InteractionUse refers to an Interaction. The InteractionUse is a shorthand for copying the contents of the referenced Interaction where the InteractionUse is. To be accurate the copying must take into account substituting parameters with arguments and connect the formal Gates with the actual ones.</body>
-      </ownedComment>
-      <ownedRule xmi:id="InteractionUse-gates_match" name="gates_match" constrainedElement="InteractionUse">
-        <ownedComment xmi:id="InteractionUse-gates_match-_ownedComment.0" annotatedElement="InteractionUse-gates_match">
-          <body>Actual Gates of the InteractionUse must match Formal Gates of the referred Interaction. Gates match when their names are equal and their messages correspond.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="InteractionUse-gates_match-_specification">
-          <language>OCL</language>
-          <body>actualGate->notEmpty() implies &#xD;
-refersTo.formalGate->forAll( fg : Gate | self.actualGate->select(matches(fg))->size()=1) and&#xD;
-self.actualGate->forAll(ag : Gate | refersTo.formalGate->select(matches(ag))->size()=1)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="InteractionUse-arguments_are_constants" name="arguments_are_constants" constrainedElement="InteractionUse">
-        <ownedComment xmi:id="InteractionUse-arguments_are_constants-_ownedComment.0" annotatedElement="InteractionUse-arguments_are_constants">
-          <body>The arguments must only be constants, parameters of the enclosing Interaction or attributes of the classifier owning the enclosing Interaction.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="InteractionUse-arguments_are_constants-_specification" language=""/>
-      </ownedRule>
-      <ownedRule xmi:id="InteractionUse-returnValueRecipient_coverage" name="returnValueRecipient_coverage" constrainedElement="InteractionUse">
-        <ownedComment xmi:id="InteractionUse-returnValueRecipient_coverage-_ownedComment.0" annotatedElement="InteractionUse-returnValueRecipient_coverage">
-          <body>The returnValueRecipient must be a Property of a ConnectableElement that is represented by a Lifeline covered by this InteractionUse.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="InteractionUse-returnValueRecipient_coverage-_specification">
-          <language>OCL</language>
-          <body>returnValueRecipient->asSet()->notEmpty() implies&#xD;
-let covCE : Set(ConnectableElement) = covered.represents->asSet() in &#xD;
-covCE->notEmpty() and let classes:Set(Classifier) = covCE.type.oclIsKindOf(Classifier).oclAsType(Classifier)->asSet() in &#xD;
-let allProps : Set(Property) = classes.attribute->union(classes.allParents().attribute)->asSet() in &#xD;
-allProps->includes(returnValueRecipient)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="InteractionUse-arguments_correspond_to_parameters" name="arguments_correspond_to_parameters" constrainedElement="InteractionUse">
-        <ownedComment xmi:id="InteractionUse-arguments_correspond_to_parameters-_ownedComment.0" annotatedElement="InteractionUse-arguments_correspond_to_parameters">
-          <body>The arguments of the InteractionUse must correspond to parameters of the referred Interaction.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="InteractionUse-arguments_correspond_to_parameters-_specification" language=""/>
-      </ownedRule>
-      <ownedRule xmi:id="InteractionUse-returnValue_type_recipient_correspondence" name="returnValue_type_recipient_correspondence" constrainedElement="InteractionUse">
-        <ownedComment xmi:id="InteractionUse-returnValue_type_recipient_correspondence-_ownedComment.0" annotatedElement="InteractionUse-returnValue_type_recipient_correspondence">
-          <body>The type of the returnValue must correspond to the type of the returnValueRecipient.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="InteractionUse-returnValue_type_recipient_correspondence-_specification">
-          <language>OCL</language>
-          <body>returnValue.type->asSequence()->notEmpty() implies returnValue.type->asSequence()->first() = returnValueRecipient.type->asSequence()->first()</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="InteractionUse-all_lifelines" name="all_lifelines" constrainedElement="InteractionUse">
-        <ownedComment xmi:id="InteractionUse-all_lifelines-_ownedComment.0" annotatedElement="InteractionUse-all_lifelines">
-          <body>The InteractionUse must cover all Lifelines of the enclosing Interaction that are common with the lifelines covered by the referred Interaction. Lifelines are common if they have the same selector and represents associationEnd values.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="InteractionUse-all_lifelines-_specification">
-          <language>OCL</language>
-          <body>let parentInteraction : Set(Interaction) = enclosingInteraction->asSet()->&#xD;
-union(enclosingOperand.combinedFragment->closure(enclosingOperand.combinedFragment)->&#xD;
-collect(enclosingInteraction).oclAsType(Interaction)->asSet()) in&#xD;
-parentInteraction->size()=1 and let refInteraction : Interaction = refersTo in&#xD;
-parentInteraction.covered-> forAll(intLifeline : Lifeline | refInteraction.covered->&#xD;
-forAll( refLifeline : Lifeline | refLifeline.represents = intLifeline.represents and &#xD;
-(&#xD;
-( refLifeline.selector.oclIsKindOf(LiteralString) implies&#xD;
-  intLifeline.selector.oclIsKindOf(LiteralString) and &#xD;
-  refLifeline.selector.oclAsType(LiteralString).value = intLifeline.selector.oclAsType(LiteralString).value ) and&#xD;
-( refLifeline.selector.oclIsKindOf(LiteralInteger) implies&#xD;
-  intLifeline.selector.oclIsKindOf(LiteralInteger) and &#xD;
-  refLifeline.selector.oclAsType(LiteralInteger).value = intLifeline.selector.oclAsType(LiteralInteger).value )&#xD;
-)&#xD;
- implies self.covered->asSet()->includes(intLifeline)))</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="InteractionUse-_generalization.0" general="InteractionFragment"/>
-      <ownedAttribute xmi:id="InteractionUse-actualGate" name="actualGate" type="Gate" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_actualGate_interactionUse">
-        <ownedComment xmi:id="InteractionUse-actualGate-_ownedComment.0" annotatedElement="InteractionUse-actualGate">
-          <body>The actual gates of the InteractionUse.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="InteractionUse-actualGate-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InteractionUse-actualGate-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="InteractionUse-argument" name="argument" type="ValueSpecification" isOrdered="true" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_argument_interactionUse">
-        <ownedComment xmi:id="InteractionUse-argument-_ownedComment.0" annotatedElement="InteractionUse-argument">
-          <body>The actual arguments of the Interaction.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="InteractionUse-argument-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="InteractionUse-argument-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="InteractionUse-refersTo" name="refersTo" type="Interaction" association="A_refersTo_interactionUse">
-        <ownedComment xmi:id="InteractionUse-refersTo-_ownedComment.0" annotatedElement="InteractionUse-refersTo">
-          <body>Refers to the Interaction that defines its meaning.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="InteractionUse-returnValue" name="returnValue" type="ValueSpecification" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_returnValue_interactionUse">
-        <ownedComment xmi:id="InteractionUse-returnValue-_ownedComment.0" annotatedElement="InteractionUse-returnValue">
-          <body>The value of the executed Interaction.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="InteractionUse-returnValue-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="InteractionUse-returnValueRecipient" name="returnValueRecipient" type="Property" association="A_returnValueRecipient_interactionUse">
-        <ownedComment xmi:id="InteractionUse-returnValueRecipient-_ownedComment.0" annotatedElement="InteractionUse-returnValueRecipient">
-          <body>The recipient of the return value.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="InteractionUse-returnValueRecipient-_lowerValue"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Lifeline" name="Lifeline">
-      <ownedComment xmi:id="Lifeline-_ownedComment.0" annotatedElement="Lifeline">
-        <body>A Lifeline represents an individual participant in the Interaction. While parts and structural features may have multiplicity greater than 1, Lifelines represent only one interacting entity.</body>
-      </ownedComment>
-      <ownedRule xmi:id="Lifeline-selector_specified" name="selector_specified" constrainedElement="Lifeline">
-        <ownedComment xmi:id="Lifeline-selector_specified-_ownedComment.0" annotatedElement="Lifeline-selector_specified">
-          <body>The selector for a Lifeline must only be specified if the referenced Part is multivalued.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Lifeline-selector_specified-_specification">
-          <language>OCL</language>
-          <body> self.selector->notEmpty() = (self.represents.oclIsKindOf(MultiplicityElement) and self.represents.oclAsType(MultiplicityElement).isMultivalued())</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Lifeline-interaction_uses_share_lifeline" name="interaction_uses_share_lifeline" constrainedElement="Lifeline">
-        <ownedComment xmi:id="Lifeline-interaction_uses_share_lifeline-_ownedComment.0" annotatedElement="Lifeline-interaction_uses_share_lifeline">
-          <body>If a lifeline is in an Interaction referred to by an InteractionUse in an enclosing Interaction,  and that lifeline is common with another lifeline in an Interaction referred to by another InteractonUse within that same enclosing Interaction, it must be common to a lifeline within that enclosing Interaction. By common Lifelines we mean Lifelines with the same selector and represents associations.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Lifeline-interaction_uses_share_lifeline-_specification">
-          <language>OCL</language>
-          <body>let intUses : Set(InteractionUse) = interaction.interactionUse  in &#xD;
-intUses->forAll&#xD;
-( iuse : InteractionUse | &#xD;
-let usingInteraction : Set(Interaction)  = iuse.enclosingInteraction->asSet()&#xD;
-->union(&#xD;
-iuse.enclosingOperand.combinedFragment->asSet()->closure(enclosingOperand.combinedFragment).enclosingInteraction->asSet()&#xD;
-               ) &#xD;
-in&#xD;
-let peerUses : Set(InteractionUse) = usingInteraction.fragment->select(oclIsKindOf(InteractionUse)).oclAsType(InteractionUse)->asSet()&#xD;
-->union(&#xD;
-usingInteraction.fragment->select(oclIsKindOf(CombinedFragment)).oclAsType(CombinedFragment)->asSet()&#xD;
-->closure(operand.fragment->select(oclIsKindOf(CombinedFragment)).oclAsType(CombinedFragment)).operand.fragment->&#xD;
-select(oclIsKindOf(InteractionUse)).oclAsType(InteractionUse)->asSet()&#xD;
-               )->excluding(iuse)&#xD;
- in&#xD;
-peerUses->forAll( peerUse : InteractionUse |&#xD;
- peerUse.refersTo.lifeline->forAll( l : Lifeline | (l.represents = self.represents and &#xD;
- ( self.selector.oclIsKindOf(LiteralString) implies&#xD;
-  l.selector.oclIsKindOf(LiteralString) and &#xD;
-  self.selector.oclAsType(LiteralString).value = l.selector.oclAsType(LiteralString).value )&#xD;
-  and &#xD;
-( self.selector.oclIsKindOf(LiteralInteger) implies&#xD;
-  l.selector.oclIsKindOf(LiteralInteger) and &#xD;
-  self.selector.oclAsType(LiteralInteger).value = l.selector.oclAsType(LiteralInteger).value )&#xD;
-)  &#xD;
-implies&#xD;
- usingInteraction.lifeline->exists(represents = self.represents and&#xD;
- ( self.selector.oclIsKindOf(LiteralString) implies&#xD;
-  l.selector.oclIsKindOf(LiteralString) and &#xD;
-  self.selector.oclAsType(LiteralString).value = l.selector.oclAsType(LiteralString).value )&#xD;
-and &#xD;
-( self.selector.oclIsKindOf(LiteralInteger) implies&#xD;
-  l.selector.oclIsKindOf(LiteralInteger) and &#xD;
-  self.selector.oclAsType(LiteralInteger).value = l.selector.oclAsType(LiteralInteger).value )&#xD;
-)&#xD;
-                                                )&#xD;
-                    )&#xD;
-)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Lifeline-same_classifier" name="same_classifier" constrainedElement="Lifeline">
-        <ownedComment xmi:id="Lifeline-same_classifier-_ownedComment.0" annotatedElement="Lifeline-same_classifier">
-          <body>The classifier containing the referenced ConnectableElement must be the same classifier, or an ancestor, of the classifier that contains the interaction enclosing this lifeline.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Lifeline-same_classifier-_specification">
-          <language>OCL</language>
-          <body>represents.namespace->closure(namespace)->includes(interaction._'context')</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Lifeline-selector_int_or_string" name="selector_int_or_string" constrainedElement="Lifeline">
-        <ownedComment xmi:id="Lifeline-selector_int_or_string-_ownedComment.0" annotatedElement="Lifeline-selector_int_or_string">
-          <body>The selector value, if present, must be a LiteralString or a LiteralInteger</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Lifeline-selector_int_or_string-_specification">
-          <language>OCL</language>
-          <body>self.selector->notEmpty() implies &#xD;
-self.selector.oclIsKindOf(LiteralInteger) or &#xD;
-self.selector.oclIsKindOf(LiteralString)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="Lifeline-_generalization.0" general="NamedElement"/>
-      <ownedAttribute xmi:id="Lifeline-coveredBy" name="coveredBy" type="InteractionFragment" association="A_covered_coveredBy">
-        <ownedComment xmi:id="Lifeline-coveredBy-_ownedComment.0" annotatedElement="Lifeline-coveredBy">
-          <body>References the InteractionFragments in which this Lifeline takes part.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Lifeline-coveredBy-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Lifeline-coveredBy-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Lifeline-decomposedAs" name="decomposedAs" type="PartDecomposition" association="A_decomposedAs_lifeline">
-        <ownedComment xmi:id="Lifeline-decomposedAs-_ownedComment.0" annotatedElement="Lifeline-decomposedAs">
-          <body>References the Interaction that represents the decomposition.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Lifeline-decomposedAs-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Lifeline-interaction" name="interaction" type="Interaction" subsettedProperty="NamedElement-namespace" association="A_lifeline_interaction">
-        <ownedComment xmi:id="Lifeline-interaction-_ownedComment.0" annotatedElement="Lifeline-interaction">
-          <body>References the Interaction enclosing this Lifeline.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Lifeline-represents" name="represents" type="ConnectableElement" association="A_represents_lifeline">
-        <ownedComment xmi:id="Lifeline-represents-_ownedComment.0" annotatedElement="Lifeline-represents">
-          <body>References the ConnectableElement within the classifier that contains the enclosing interaction.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Lifeline-represents-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Lifeline-selector" name="selector" type="ValueSpecification" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_selector_lifeline">
-        <ownedComment xmi:id="Lifeline-selector-_ownedComment.0" annotatedElement="Lifeline-selector">
-          <body>If the referenced ConnectableElement is multivalued, then this specifies the specific individual part within that set.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Lifeline-selector-_lowerValue"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Message" name="Message">
-      <ownedComment xmi:id="Message-_ownedComment.0" annotatedElement="Message">
-        <body>A Message defines a particular communication between Lifelines of an Interaction.</body>
-      </ownedComment>
-      <ownedRule xmi:id="Message-sending_receiving_message_event" name="sending_receiving_message_event" constrainedElement="Message">
-        <ownedComment xmi:id="Message-sending_receiving_message_event-_ownedComment.0" annotatedElement="Message-sending_receiving_message_event">
-          <body>If the sendEvent and the receiveEvent of the same Message are on the same Lifeline, the sendEvent must be ordered before the receiveEvent.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Message-sending_receiving_message_event-_specification">
-          <language>OCL</language>
-          <body>receiveEvent.oclIsKindOf(MessageOccurrenceSpecification)&#xD;
-implies&#xD;
-let f :  Lifeline = sendEvent->select(oclIsKindOf(MessageOccurrenceSpecification)).oclAsType(MessageOccurrenceSpecification)->asOrderedSet()->first().covered in&#xD;
-f = receiveEvent->select(oclIsKindOf(MessageOccurrenceSpecification)).oclAsType(MessageOccurrenceSpecification)->asOrderedSet()->first().covered  implies&#xD;
-f.events->indexOf(sendEvent.oclAsType(MessageOccurrenceSpecification)->asOrderedSet()->first() ) &lt; &#xD;
-f.events->indexOf(receiveEvent.oclAsType(MessageOccurrenceSpecification)->asOrderedSet()->first() )</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Message-arguments" name="arguments" constrainedElement="Message">
-        <ownedComment xmi:id="Message-arguments-_ownedComment.0" annotatedElement="Message-arguments">
-          <body>Arguments of a Message must only be: i) attributes of the sending lifeline, ii) constants, iii) symbolic values (which are wildcard values representing any legal value), iv) explicit parameters of the enclosing Interaction, v) attributes of the class owning the Interaction.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Message-arguments-_specification" language=""/>
-      </ownedRule>
-      <ownedRule xmi:id="Message-cannot_cross_boundaries" name="cannot_cross_boundaries" constrainedElement="Message">
-        <ownedComment xmi:id="Message-cannot_cross_boundaries-_ownedComment.0" annotatedElement="Message-cannot_cross_boundaries">
-          <body>Messages cannot cross boundaries of CombinedFragments or their operands.  This is true if and only if both MessageEnds are enclosed within the same InteractionFragment (i.e., an InteractionOperand or an Interaction).</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Message-cannot_cross_boundaries-_specification">
-          <language>OCL</language>
-          <body>sendEvent->notEmpty() and receiveEvent->notEmpty() implies&#xD;
-let sendEnclosingFrag : Set(InteractionFragment) = &#xD;
-sendEvent->asOrderedSet()->first().enclosingFragment()&#xD;
-in &#xD;
-let receiveEnclosingFrag : Set(InteractionFragment) = &#xD;
-receiveEvent->asOrderedSet()->first().enclosingFragment()&#xD;
-in  sendEnclosingFrag = receiveEnclosingFrag</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Message-signature_is_signal" name="signature_is_signal" constrainedElement="Message">
-        <ownedComment xmi:id="Message-signature_is_signal-_ownedComment.0" annotatedElement="Message-signature_is_signal">
-          <body>In the case when the Message signature is a Signal, the arguments of the Message must correspond to the attributes of the Signal. A Message Argument corresponds to a Signal Attribute if the Argument is of the same Class or a specialization of that of the Attribute.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Message-signature_is_signal-_specification">
-          <language>OCL</language>
-          <body>(messageSort = MessageSort::asynchSignal ) and signature.oclIsKindOf(Signal) implies&#xD;
-   let signalAttributes : OrderedSet(Property) = signature.oclAsType(Signal).inheritedMember()->&#xD;
-             select(n:NamedElement | n.oclIsTypeOf(Property))->collect(oclAsType(Property))->asOrderedSet()&#xD;
-   in signalAttributes->size() = self.argument->size()&#xD;
-   and self.argument->forAll( o: ValueSpecification |&#xD;
-          not (o.oclIsKindOf(Expression)&#xD;
-          and o.oclAsType(Expression).symbol->size()=0&#xD;
-          and o.oclAsType(Expression).operand->isEmpty() ) implies&#xD;
-              let p : Property = signalAttributes->at(self.argument->indexOf(o))&#xD;
-              in o.type.oclAsType(Classifier).conformsTo(p.type.oclAsType(Classifier)))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Message-occurrence_specifications" name="occurrence_specifications" constrainedElement="Message">
-        <ownedComment xmi:id="Message-occurrence_specifications-_ownedComment.0" annotatedElement="Message-occurrence_specifications">
-          <body>If the MessageEnds are both OccurrenceSpecifications, then the connector must go between the Parts represented by the Lifelines of the two MessageEnds.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Message-occurrence_specifications-_specification" language=""/>
-      </ownedRule>
-      <ownedRule xmi:id="Message-signature_refer_to" name="signature_refer_to" constrainedElement="Message">
-        <ownedComment xmi:id="Message-signature_refer_to-_ownedComment.0" annotatedElement="Message-signature_refer_to">
-          <body>The signature must either refer an Operation (in which case messageSort is either synchCall or asynchCall or reply) or a Signal (in which case messageSort is asynchSignal). The name of the NamedElement referenced by signature must be the same as that of the Message.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Message-signature_refer_to-_specification">
-          <language>OCL</language>
-          <body>signature->notEmpty() implies &#xD;
-((signature.oclIsKindOf(Operation) and &#xD;
-(messageSort = MessageSort::asynchCall or messageSort = MessageSort::synchCall or messageSort = MessageSort::reply) &#xD;
-) or (signature.oclIsKindOf(Signal)  and messageSort = MessageSort::asynchSignal )&#xD;
- ) and name = signature.name</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Message-signature_is_operation_request" name="signature_is_operation_request" constrainedElement="Message">
-        <ownedComment xmi:id="Message-signature_is_operation_request-_ownedComment.0" annotatedElement="Message-signature_is_operation_request">
-          <body>In the case when a Message with messageSort synchCall or asynchCall has a non empty Operation signature, the arguments of the Message must correspond to the in and inout parameters of the Operation. A Parameter corresponds to an Argument if the Argument is of the same Class or a specialization of that of the Parameter.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Message-signature_is_operation_request-_specification">
-          <language>OCL</language>
-          <body>(messageSort = MessageSort::asynchCall or messageSort = MessageSort::synchCall) and signature.oclIsKindOf(Operation)  implies &#xD;
- let requestParms : OrderedSet(Parameter) = signature.oclAsType(Operation).ownedParameter->&#xD;
- select(direction = ParameterDirectionKind::inout or direction = ParameterDirectionKind::_'in'  )&#xD;
-in requestParms->size() = self.argument->size() and&#xD;
-self.argument->forAll( o: ValueSpecification | &#xD;
-not (o.oclIsKindOf(Expression) and o.oclAsType(Expression).symbol->size()=0 and o.oclAsType(Expression).operand->isEmpty() ) implies &#xD;
-let p : Parameter = requestParms->at(self.argument->indexOf(o)) in&#xD;
-o.type.oclAsType(Classifier).conformsTo(p.type.oclAsType(Classifier))&#xD;
-)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Message-signature_is_operation_reply" name="signature_is_operation_reply" constrainedElement="Message">
-        <ownedComment xmi:id="Message-signature_is_operation_reply-_ownedComment.0" annotatedElement="Message-signature_is_operation_reply">
-          <body>In the case when a Message with messageSort reply has a non empty Operation signature, the arguments of the Message must correspond to the out, inout, and return parameters of the Operation. A Parameter corresponds to an Argument if the Argument is of the same Class or a specialization of that of the Parameter.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Message-signature_is_operation_reply-_specification">
-          <language>OCL</language>
-          <body>(messageSort = MessageSort::reply) and signature.oclIsKindOf(Operation) implies &#xD;
- let replyParms : OrderedSet(Parameter) = signature.oclAsType(Operation).ownedParameter->&#xD;
-select(direction = ParameterDirectionKind::inout or direction = ParameterDirectionKind::out or direction = ParameterDirectionKind::return)&#xD;
-in replyParms->size() = self.argument->size() and&#xD;
-self.argument->forAll( o: ValueSpecification | o.oclIsKindOf(Expression) and let e : Expression = o.oclAsType(Expression) in&#xD;
-e.operand->notEmpty()  implies &#xD;
-let p : Parameter = replyParms->at(self.argument->indexOf(o)) in&#xD;
-e.operand->asSequence()->first().type.oclAsType(Classifier).conformsTo(p.type.oclAsType(Classifier))&#xD;
-)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="Message-_generalization.0" general="NamedElement"/>
-      <ownedAttribute xmi:id="Message-argument" name="argument" type="ValueSpecification" isOrdered="true" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_argument_message">
-        <ownedComment xmi:id="Message-argument-_ownedComment.0" annotatedElement="Message-argument">
-          <body>The arguments of the Message.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Message-argument-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Message-argument-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Message-connector" name="connector" type="Connector" association="A_connector_message">
-        <ownedComment xmi:id="Message-connector-_ownedComment.0" annotatedElement="Message-connector">
-          <body>The Connector on which this Message is sent.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Message-connector-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Message-interaction" name="interaction" type="Interaction" subsettedProperty="NamedElement-namespace" association="A_message_interaction">
-        <ownedComment xmi:id="Message-interaction-_ownedComment.0" annotatedElement="Message-interaction">
-          <body>The enclosing Interaction owning the Message.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Message-messageKind" name="messageKind" type="MessageKind" isReadOnly="true" isDerived="true">
-        <ownedComment xmi:id="Message-messageKind-_ownedComment.0" annotatedElement="Message-messageKind">
-          <body>The derived kind of the Message (complete, lost, found, or unknown).</body>
-        </ownedComment>
-        <defaultValue xmi:type="uml:InstanceValue" xmi:id="Message-messageKind-_defaultValue" instance="MessageKind-unknown"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Message-messageSort" name="messageSort" type="MessageSort">
-        <ownedComment xmi:id="Message-messageSort-_ownedComment.0" annotatedElement="Message-messageSort">
-          <body>The sort of communication reflected by the Message.</body>
-        </ownedComment>
-        <defaultValue xmi:type="uml:InstanceValue" xmi:id="Message-messageSort-_defaultValue" type="MessageSort" instance="MessageSort-synchCall"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Message-receiveEvent" name="receiveEvent" type="MessageEnd" subsettedProperty="A_message_messageEnd-messageEnd" association="A_receiveEvent_endMessage">
-        <ownedComment xmi:id="Message-receiveEvent-_ownedComment.0" annotatedElement="Message-receiveEvent">
-          <body>References the Receiving of the Message.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Message-receiveEvent-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Message-sendEvent" name="sendEvent" type="MessageEnd" subsettedProperty="A_message_messageEnd-messageEnd" association="A_sendEvent_endMessage">
-        <ownedComment xmi:id="Message-sendEvent-_ownedComment.0" annotatedElement="Message-sendEvent">
-          <body>References the Sending of the Message.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Message-sendEvent-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Message-signature" name="signature" type="NamedElement" association="A_signature_message">
-        <ownedComment xmi:id="Message-signature-_ownedComment.0" annotatedElement="Message-signature">
-          <body>The signature of the Message is the specification of its content. It refers either an Operation or a Signal.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Message-signature-_lowerValue"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="Message-messageKind.1" name="messageKind" visibility="protected" bodyCondition="Message-messageKind.1-spec" isQuery="true">
-        <ownedComment xmi:id="Message-messageKind.1-_ownedComment.0" annotatedElement="Message-messageKind.1">
-          <body>This query returns the MessageKind value for this Message.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Message-messageKind.1-spec" name="spec" constrainedElement="Message-messageKind.1 Message-messageKind">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Message-messageKind.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (messageKind)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Message-messageKind.1-result" name="result" type="MessageKind" direction="return"/>
-      </ownedOperation>
-      <ownedOperation xmi:id="Message-isDistinguishableFrom" name="isDistinguishableFrom" bodyCondition="Message-isDistinguishableFrom-spec" isQuery="true" redefinedOperation="NamedElement-isDistinguishableFrom">
-        <ownedComment xmi:id="Message-isDistinguishableFrom-_ownedComment.0" annotatedElement="Message-isDistinguishableFrom">
-          <body>The query isDistinguishableFrom() specifies that any two Messages may coexist in the same Namespace, regardless of their names.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Message-isDistinguishableFrom-spec" name="spec" constrainedElement="Message-isDistinguishableFrom">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Message-isDistinguishableFrom-spec-_specification">
-            <language>OCL</language>
-            <body>result = (true)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Message-isDistinguishableFrom-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Message-isDistinguishableFrom-n" name="n" type="NamedElement"/>
-        <ownedParameter xmi:id="Message-isDistinguishableFrom-ns" name="ns" type="Namespace"/>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="MessageEnd" name="MessageEnd" isAbstract="true">
-      <ownedComment xmi:id="MessageEnd-_ownedComment.0" annotatedElement="MessageEnd">
-        <body>MessageEnd is an abstract specialization of NamedElement that represents what can occur at the end of a Message.</body>
-      </ownedComment>
-      <generalization xmi:id="MessageEnd-_generalization.0" general="NamedElement"/>
-      <ownedAttribute xmi:id="MessageEnd-message" name="message" type="Message" association="A_message_messageEnd">
-        <ownedComment xmi:id="MessageEnd-message-_ownedComment.0" annotatedElement="MessageEnd-message">
-          <body>References a Message.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="MessageEnd-message-_lowerValue"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="MessageEnd-oppositeEnd" name="oppositeEnd" bodyCondition="MessageEnd-oppositeEnd-spec" isQuery="true" precondition="MessageEnd-oppositeEnd-pre">
-        <ownedComment xmi:id="MessageEnd-oppositeEnd-_ownedComment.0" annotatedElement="MessageEnd-oppositeEnd">
-          <body>This query returns a set including the MessageEnd (if exists) at the opposite end of the Message for this MessageEnd.</body>
-        </ownedComment>
-        <ownedRule xmi:id="MessageEnd-oppositeEnd-spec" name="spec" constrainedElement="MessageEnd-oppositeEnd">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="MessageEnd-oppositeEnd-spec-_specification">
-            <language>OCL</language>
-            <body>result = (message->asSet().messageEnd->asSet()->excluding(self))</body>
-          </specification>
-        </ownedRule>
-        <ownedRule xmi:id="MessageEnd-oppositeEnd-pre" name="pre" constrainedElement="MessageEnd-oppositeEnd">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="MessageEnd-oppositeEnd-pre-_specification">
-            <language>OCL</language>
-            <body>message->notEmpty()</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="MessageEnd-oppositeEnd-result" name="result" type="MessageEnd" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="MessageEnd-oppositeEnd-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="MessageEnd-oppositeEnd-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="MessageEnd-isSend" name="isSend" bodyCondition="MessageEnd-isSend-spec" isQuery="true" precondition="MessageEnd-isSend-pre">
-        <ownedComment xmi:id="MessageEnd-isSend-_ownedComment.0" annotatedElement="MessageEnd-isSend">
-          <body>This query returns value true if this MessageEnd is a sendEvent.</body>
-        </ownedComment>
-        <ownedRule xmi:id="MessageEnd-isSend-pre" name="pre" constrainedElement="MessageEnd-isSend">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="MessageEnd-isSend-pre-_specification">
-            <language>OCL</language>
-            <body>message->notEmpty()</body>
-          </specification>
-        </ownedRule>
-        <ownedRule xmi:id="MessageEnd-isSend-spec" name="spec" constrainedElement="MessageEnd-isSend">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="MessageEnd-isSend-spec-_specification">
-            <language>OCL</language>
-            <body>result = (message.sendEvent->asSet()->includes(self))</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="MessageEnd-isSend-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="MessageEnd-isReceive" name="isReceive" bodyCondition="MessageEnd-isReceive-spec" isQuery="true" precondition="MessageEnd-isReceive-pre">
-        <ownedComment xmi:id="MessageEnd-isReceive-_ownedComment.0" annotatedElement="MessageEnd-isReceive">
-          <body>This query returns value true if this MessageEnd is a receiveEvent.</body>
-        </ownedComment>
-        <ownedRule xmi:id="MessageEnd-isReceive-pre" name="pre" constrainedElement="MessageEnd-isReceive">
-          <ownedComment xmi:id="MessageEnd-isReceive-pre-_ownedComment.0" annotatedElement="MessageEnd-isReceive-pre">
-            <body>&lt;p>message-&amp;gt;notEmpty()&lt;/p></body>
-          </ownedComment>
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="MessageEnd-isReceive-pre-_specification">
-            <language>OCL</language>
-            <body>message->notEmpty()</body>
-          </specification>
-        </ownedRule>
-        <ownedRule xmi:id="MessageEnd-isReceive-spec" name="spec" constrainedElement="MessageEnd-isReceive">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="MessageEnd-isReceive-spec-_specification">
-            <language>OCL</language>
-            <body>result = (message.receiveEvent->asSet()->includes(self))</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="MessageEnd-isReceive-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="MessageEnd-enclosingFragment" name="enclosingFragment" bodyCondition="MessageEnd-enclosingFragment-spec" isQuery="true">
-        <ownedComment xmi:id="MessageEnd-enclosingFragment-_ownedComment.0" annotatedElement="MessageEnd-enclosingFragment">
-          <body>This query returns a set including the enclosing InteractionFragment this MessageEnd is enclosed within.</body>
-        </ownedComment>
-        <ownedRule xmi:id="MessageEnd-enclosingFragment-spec" name="spec" constrainedElement="MessageEnd-enclosingFragment">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="MessageEnd-enclosingFragment-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if self->select(oclIsKindOf(Gate))->notEmpty() &#xD;
-then -- it is a Gate&#xD;
-let endGate : Gate = &#xD;
-  self->select(oclIsKindOf(Gate)).oclAsType(Gate)->asOrderedSet()->first()&#xD;
-  in&#xD;
-  if endGate.isOutsideCF() &#xD;
-  then endGate.combinedFragment.enclosingInteraction.oclAsType(InteractionFragment)->asSet()->&#xD;
-     union(endGate.combinedFragment.enclosingOperand.oclAsType(InteractionFragment)->asSet())&#xD;
-  else if endGate.isInsideCF() &#xD;
-    then endGate.combinedFragment.oclAsType(InteractionFragment)->asSet()&#xD;
-    else if endGate.isFormal() &#xD;
-      then endGate.interaction.oclAsType(InteractionFragment)->asSet()&#xD;
-      else if endGate.isActual() &#xD;
-        then endGate.interactionUse.enclosingInteraction.oclAsType(InteractionFragment)->asSet()->&#xD;
-     union(endGate.interactionUse.enclosingOperand.oclAsType(InteractionFragment)->asSet())&#xD;
-        else null&#xD;
-        endif&#xD;
-      endif&#xD;
-    endif&#xD;
-  endif&#xD;
-else -- it is a MessageOccurrenceSpecification&#xD;
-let endMOS : MessageOccurrenceSpecification  = &#xD;
-  self->select(oclIsKindOf(MessageOccurrenceSpecification)).oclAsType(MessageOccurrenceSpecification)->asOrderedSet()->first() &#xD;
-  in&#xD;
-  if endMOS.enclosingInteraction->notEmpty() &#xD;
-  then endMOS.enclosingInteraction.oclAsType(InteractionFragment)->asSet()&#xD;
-  else endMOS.enclosingOperand.oclAsType(InteractionFragment)->asSet()&#xD;
-  endif&#xD;
-endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="MessageEnd-enclosingFragment-result" name="result" type="InteractionFragment" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="MessageEnd-enclosingFragment-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="MessageEnd-enclosingFragment-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="MessageOccurrenceSpecification" name="MessageOccurrenceSpecification">
-      <ownedComment xmi:id="MessageOccurrenceSpecification-_ownedComment.0" annotatedElement="MessageOccurrenceSpecification">
-        <body>A MessageOccurrenceSpecification specifies the occurrence of Message events, such as sending and receiving of Signals or invoking or receiving of Operation calls. A MessageOccurrenceSpecification is a kind of MessageEnd. Messages are generated either by synchronous Operation calls or asynchronous Signal sends. They are received by the execution of corresponding AcceptEventActions.</body>
-      </ownedComment>
-      <generalization xmi:id="MessageOccurrenceSpecification-_generalization.0" general="MessageEnd"/>
-      <generalization xmi:id="MessageOccurrenceSpecification-_generalization.1" general="OccurrenceSpecification"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="OccurrenceSpecification" name="OccurrenceSpecification">
-      <ownedComment xmi:id="OccurrenceSpecification-_ownedComment.0" annotatedElement="OccurrenceSpecification">
-        <body>An OccurrenceSpecification is the basic semantic unit of Interactions. The sequences of occurrences specified by them are the meanings of Interactions.</body>
-      </ownedComment>
-      <generalization xmi:id="OccurrenceSpecification-_generalization.0" general="InteractionFragment"/>
-      <ownedAttribute xmi:id="OccurrenceSpecification-covered" name="covered" type="Lifeline" redefinedProperty="InteractionFragment-covered" association="A_covered_events">
-        <ownedComment xmi:id="OccurrenceSpecification-covered-_ownedComment.0" annotatedElement="OccurrenceSpecification-covered">
-          <body>References the Lifeline on which the OccurrenceSpecification appears.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="OccurrenceSpecification-toAfter" name="toAfter" type="GeneralOrdering" association="A_before_toAfter">
-        <ownedComment xmi:id="OccurrenceSpecification-toAfter-_ownedComment.0" annotatedElement="OccurrenceSpecification-toAfter">
-          <body>References the GeneralOrderings that specify EventOcurrences that must occur after this OccurrenceSpecification.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="OccurrenceSpecification-toAfter-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="OccurrenceSpecification-toAfter-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="OccurrenceSpecification-toBefore" name="toBefore" type="GeneralOrdering" association="A_toBefore_after">
-        <ownedComment xmi:id="OccurrenceSpecification-toBefore-_ownedComment.0" annotatedElement="OccurrenceSpecification-toBefore">
-          <body>References the GeneralOrderings that specify EventOcurrences that must occur before this OccurrenceSpecification.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="OccurrenceSpecification-toBefore-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="OccurrenceSpecification-toBefore-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="OccurrenceSpecification-getCovered" name="getCovered">
-        <ownedComment xmi:id="OccurrenceSpecification-getCovered-_ownedComment.0" annotatedElement="OccurrenceSpecification-getCovered">
-          <body>Returns the Lifeline on which the OccurrenceSpecification appears.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="OccurrenceSpecification-getCovered-_ownedParameter.0" type="Lifeline" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="OccurrenceSpecification-getCovered-_ownedParameter.0-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="OccurrenceSpecification-setCovered" name="setCovered">
-        <ownedComment xmi:id="OccurrenceSpecification-setCovered-_ownedComment.0" annotatedElement="OccurrenceSpecification-setCovered">
-          <body>Sets the Lifeline on which the OccurrenceSpecification appears.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="OccurrenceSpecification-setCovered-value" name="value" type="Lifeline"/>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="PartDecomposition" name="PartDecomposition">
-      <ownedComment xmi:id="PartDecomposition-_ownedComment.0" annotatedElement="PartDecomposition">
-        <body>A PartDecomposition is a description of the internal Interactions of one Lifeline relative to an Interaction.</body>
-      </ownedComment>
-      <ownedRule xmi:id="PartDecomposition-commutativity_of_decomposition" name="commutativity_of_decomposition" constrainedElement="PartDecomposition">
-        <ownedComment xmi:id="PartDecomposition-commutativity_of_decomposition-_ownedComment.0" annotatedElement="PartDecomposition-commutativity_of_decomposition">
-          <body>Assume that within Interaction X, Lifeline L is of class C and decomposed to D. Assume also that there is within X an InteractionUse (say) U that covers L. According to the constraint above U will have a counterpart CU within D. Within the Interaction referenced by U, L should also be decomposed, and the decomposition should reference CU. (This rule is called commutativity of decomposition.)</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="PartDecomposition-commutativity_of_decomposition-_specification" language=""/>
-      </ownedRule>
-      <ownedRule xmi:id="PartDecomposition-assume" name="assume" constrainedElement="PartDecomposition">
-        <ownedComment xmi:id="PartDecomposition-assume-_ownedComment.0" annotatedElement="PartDecomposition-assume">
-          <body>Assume that within Interaction X, Lifeline L is of class C and decomposed to D. Within X there is a sequence of constructs along L (such constructs are CombinedFragments, InteractionUse and (plain) OccurrenceSpecifications). Then a corresponding sequence of constructs must appear within D, matched one-to-one in the same order. i) CombinedFragment covering L are matched with an extra-global CombinedFragment in D. ii) An InteractionUse covering L is matched with a global (i.e., covering all Lifelines) InteractionUse in D. iii) A plain OccurrenceSpecification on L is considered an actualGate that must be matched by a formalGate of D.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="PartDecomposition-assume-_specification" language=""/>
-      </ownedRule>
-      <ownedRule xmi:id="PartDecomposition-parts_of_internal_structures" name="parts_of_internal_structures" constrainedElement="PartDecomposition">
-        <ownedComment xmi:id="PartDecomposition-parts_of_internal_structures-_ownedComment.0" annotatedElement="PartDecomposition-parts_of_internal_structures">
-          <body>PartDecompositions apply only to Parts that are Parts of Internal Structures not to Parts of Collaborations.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="PartDecomposition-parts_of_internal_structures-_specification" language=""/>
-      </ownedRule>
-      <generalization xmi:id="PartDecomposition-_generalization.0" general="InteractionUse"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="StateInvariant" name="StateInvariant">
-      <ownedComment xmi:id="StateInvariant-_ownedComment.0" annotatedElement="StateInvariant">
-        <body>A StateInvariant is a runtime constraint on the participants of the Interaction. It may be used to specify a variety of different kinds of Constraints, such as values of Attributes or Variables, internal or external States, and so on. A StateInvariant is an InteractionFragment and it is placed on a Lifeline.</body>
-      </ownedComment>
-      <generalization xmi:id="StateInvariant-_generalization.0" general="InteractionFragment"/>
-      <ownedAttribute xmi:id="StateInvariant-covered" name="covered" type="Lifeline" redefinedProperty="InteractionFragment-covered" association="A_covered_stateInvariant">
-        <ownedComment xmi:id="StateInvariant-covered-_ownedComment.0" annotatedElement="StateInvariant-covered">
-          <body>References the Lifeline on which the StateInvariant appears.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="StateInvariant-invariant" name="invariant" type="Constraint" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_invariant_stateInvariant">
-        <ownedComment xmi:id="StateInvariant-invariant-_ownedComment.0" annotatedElement="StateInvariant-invariant">
-          <body>A Constraint that should hold at runtime for this StateInvariant.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Enumeration" xmi:id="InteractionOperatorKind" name="InteractionOperatorKind">
-      <ownedComment xmi:id="InteractionOperatorKind-_ownedComment.0" annotatedElement="InteractionOperatorKind">
-        <body>InteractionOperatorKind is an enumeration designating the different kinds of operators of CombinedFragments. The InteractionOperand defines the type of operator of a CombinedFragment.</body>
-      </ownedComment>
-      <ownedLiteral xmi:id="InteractionOperatorKind-seq" name="seq">
-        <ownedComment xmi:id="InteractionOperatorKind-seq-_ownedComment.0" annotatedElement="InteractionOperatorKind-seq">
-          <body>The InteractionOperatorKind seq designates that the CombinedFragment represents a weak sequencing between the behaviors of the operands.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="InteractionOperatorKind-alt" name="alt">
-        <ownedComment xmi:id="InteractionOperatorKind-alt-_ownedComment.0" annotatedElement="InteractionOperatorKind-alt">
-          <body>The InteractionOperatorKind alt designates that the CombinedFragment represents a choice of behavior. At most one of the operands will be chosen. The chosen operand must have an explicit or implicit guard expression that evaluates to true at this point in the interaction. An implicit true guard is implied if the operand has no guard.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="InteractionOperatorKind-opt" name="opt">
-        <ownedComment xmi:id="InteractionOperatorKind-opt-_ownedComment.0" annotatedElement="InteractionOperatorKind-opt">
-          <body>The InteractionOperatorKind opt designates that the CombinedFragment represents a choice of behavior where either the (sole) operand happens or nothing happens. An option is semantically equivalent to an alternative CombinedFragment where there is one operand with non-empty content and the second operand is empty.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="InteractionOperatorKind-break" name="break">
-        <ownedComment xmi:id="InteractionOperatorKind-break-_ownedComment.0" annotatedElement="InteractionOperatorKind-break">
-          <body>The InteractionOperatorKind break designates that the CombinedFragment represents a breaking scenario in the sense that the operand is a scenario that is performed instead of the remainder of the enclosing InteractionFragment. A break operator with a guard is chosen when the guard is true and the rest of the enclosing Interaction Fragment is ignored. When the guard of the break operand is false, the break operand is ignored and the rest of the enclosing InteractionFragment is chosen. The choice between a break operand without a guard and the rest of the enclosing InteractionFragment is done non-deterministically.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="InteractionOperatorKind-par" name="par">
-        <ownedComment xmi:id="InteractionOperatorKind-par-_ownedComment.0" annotatedElement="InteractionOperatorKind-par">
-          <body>The InteractionOperatorKind par designates that the CombinedFragment represents a parallel merge between the behaviors of the operands. The OccurrenceSpecifications of the different operands can be interleaved in any way as long as the ordering imposed by each operand as such is preserved.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="InteractionOperatorKind-strict" name="strict">
-        <ownedComment xmi:id="InteractionOperatorKind-strict-_ownedComment.0" annotatedElement="InteractionOperatorKind-strict">
-          <body>The InteractionOperatorKind strict designates that the CombinedFragment represents a strict sequencing between the behaviors of the operands. The semantics of strict sequencing defines a strict ordering of the operands on the first level within the CombinedFragment with interactionOperator strict. Therefore OccurrenceSpecifications within contained CombinedFragment will not directly be compared with other OccurrenceSpecifications of the enclosing CombinedFragment.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="InteractionOperatorKind-loop" name="loop">
-        <ownedComment xmi:id="InteractionOperatorKind-loop-_ownedComment.0" annotatedElement="InteractionOperatorKind-loop">
-          <body>The InteractionOperatorKind loop designates that the CombinedFragment represents a loop. The loop operand will be repeated a number of times.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="InteractionOperatorKind-critical" name="critical">
-        <ownedComment xmi:id="InteractionOperatorKind-critical-_ownedComment.0" annotatedElement="InteractionOperatorKind-critical">
-          <body>The InteractionOperatorKind critical designates that the CombinedFragment represents a critical region. A critical region means that the traces of the region cannot be interleaved by other OccurrenceSpecifications (on those Lifelines covered by the region). This means that the region is treated atomically by the enclosing fragment when determining the set of valid traces. Even though enclosing CombinedFragments may imply that some OccurrenceSpecifications may interleave into the region, such as with par-operator, this is prevented by defining a region.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="InteractionOperatorKind-neg" name="neg">
-        <ownedComment xmi:id="InteractionOperatorKind-neg-_ownedComment.0" annotatedElement="InteractionOperatorKind-neg">
-          <body>The InteractionOperatorKind neg designates that the CombinedFragment represents traces that are defined to be invalid.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="InteractionOperatorKind-assert" name="assert">
-        <ownedComment xmi:id="InteractionOperatorKind-assert-_ownedComment.0" annotatedElement="InteractionOperatorKind-assert">
-          <body>The InteractionOperatorKind assert designates that the CombinedFragment represents an assertion. The sequences of the operand of the assertion are the only valid continuations. All other continuations result in an invalid trace.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="InteractionOperatorKind-ignore" name="ignore">
-        <ownedComment xmi:id="InteractionOperatorKind-ignore-_ownedComment.0" annotatedElement="InteractionOperatorKind-ignore">
-          <body>The InteractionOperatorKind ignore designates that there are some message types that are not shown within this combined fragment. These message types can be considered insignificant and are implicitly ignored if they appear in a corresponding execution. Alternatively, one can understand ignore to mean that the message types that are ignored can appear anywhere in the traces.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="InteractionOperatorKind-consider" name="consider">
-        <ownedComment xmi:id="InteractionOperatorKind-consider-_ownedComment.0" annotatedElement="InteractionOperatorKind-consider">
-          <body>The InteractionOperatorKind consider designates which messages should be considered within this combined fragment. This is equivalent to defining every other message to be ignored.</body>
-        </ownedComment>
-      </ownedLiteral>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Enumeration" xmi:id="MessageKind" name="MessageKind" visibility="private">
-      <ownedComment xmi:id="MessageKind-_ownedComment.0" annotatedElement="MessageKind">
-        <body>This is an enumerated type that identifies the type of Message.</body>
-      </ownedComment>
-      <ownedLiteral xmi:id="MessageKind-complete" name="complete">
-        <ownedComment xmi:id="MessageKind-complete-_ownedComment.0" annotatedElement="MessageKind-complete">
-          <body>sendEvent and receiveEvent are present</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="MessageKind-lost" name="lost">
-        <ownedComment xmi:id="MessageKind-lost-_ownedComment.0" annotatedElement="MessageKind-lost">
-          <body>sendEvent present and receiveEvent absent</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="MessageKind-found" name="found">
-        <ownedComment xmi:id="MessageKind-found-_ownedComment.0" annotatedElement="MessageKind-found">
-          <body>sendEvent absent and receiveEvent present</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="MessageKind-unknown" name="unknown">
-        <ownedComment xmi:id="MessageKind-unknown-_ownedComment.0" annotatedElement="MessageKind-unknown">
-          <body>sendEvent and receiveEvent absent (should not appear)</body>
-        </ownedComment>
-      </ownedLiteral>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Enumeration" xmi:id="MessageSort" name="MessageSort">
-      <ownedComment xmi:id="MessageSort-_ownedComment.0" annotatedElement="MessageSort">
-        <body>This is an enumerated type that identifies the type of communication action that was used to generate the Message.</body>
-      </ownedComment>
-      <ownedLiteral xmi:id="MessageSort-synchCall" name="synchCall">
-        <ownedComment xmi:id="MessageSort-synchCall-_ownedComment.0" annotatedElement="MessageSort-synchCall">
-          <body>The message was generated by a synchronous call to an operation.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="MessageSort-asynchCall" name="asynchCall">
-        <ownedComment xmi:id="MessageSort-asynchCall-_ownedComment.0" annotatedElement="MessageSort-asynchCall">
-          <body>The message was generated by an asynchronous call to an operation; i.e., a CallAction with isSynchronous = false.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="MessageSort-asynchSignal" name="asynchSignal">
-        <ownedComment xmi:id="MessageSort-asynchSignal-_ownedComment.0" annotatedElement="MessageSort-asynchSignal">
-          <body>The message was generated by an asynchronous send action.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="MessageSort-createMessage" name="createMessage">
-        <ownedComment xmi:id="MessageSort-createMessage-_ownedComment.0" annotatedElement="MessageSort-createMessage">
-          <body>The message designating the creation of another lifeline object.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="MessageSort-deleteMessage" name="deleteMessage">
-        <ownedComment xmi:id="MessageSort-deleteMessage-_ownedComment.0" annotatedElement="MessageSort-deleteMessage">
-          <body>The message designating the termination of another lifeline.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="MessageSort-reply" name="reply">
-        <ownedComment xmi:id="MessageSort-reply-_ownedComment.0" annotatedElement="MessageSort-reply">
-          <body>The message is a reply message to an operation call.</body>
-        </ownedComment>
-      </ownedLiteral>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_invariant_stateInvariant" name="A_invariant_stateInvariant" visibility="private" memberEnd="StateInvariant-invariant A_invariant_stateInvariant-stateInvariant">
-      <ownedEnd xmi:id="A_invariant_stateInvariant-stateInvariant" name="stateInvariant" type="StateInvariant" subsettedProperty="Element-owner" association="A_invariant_stateInvariant">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_invariant_stateInvariant-stateInvariant-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_covered_stateInvariant" name="A_covered_stateInvariant" visibility="private" memberEnd="StateInvariant-covered A_covered_stateInvariant-stateInvariant">
-      <ownedEnd xmi:id="A_covered_stateInvariant-stateInvariant" name="stateInvariant" type="StateInvariant" subsettedProperty="Lifeline-coveredBy" association="A_covered_stateInvariant">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_covered_stateInvariant-stateInvariant-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_covered_stateInvariant-stateInvariant-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_covered_events" name="A_covered_events" visibility="private" memberEnd="OccurrenceSpecification-covered A_covered_events-events">
-      <ownedEnd xmi:id="A_covered_events-events" name="events" type="OccurrenceSpecification" isOrdered="true" subsettedProperty="Lifeline-coveredBy" association="A_covered_events">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_covered_events-events-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_covered_events-events-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_toBefore_after" name="A_toBefore_after" visibility="private" memberEnd="OccurrenceSpecification-toBefore GeneralOrdering-after"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_message_messageEnd" name="A_message_messageEnd" visibility="private" memberEnd="MessageEnd-message A_message_messageEnd-messageEnd">
-      <ownedEnd xmi:id="A_message_messageEnd-messageEnd" name="messageEnd" type="MessageEnd" association="A_message_messageEnd">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_message_messageEnd-messageEnd-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_message_messageEnd-messageEnd-_upperValue" value="2"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_signature_message" name="A_signature_message" visibility="private" memberEnd="Message-signature A_signature_message-message">
-      <ownedEnd xmi:id="A_signature_message-message" name="message" type="Message" association="A_signature_message">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_signature_message-message-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_signature_message-message-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_connector_message" name="A_connector_message" visibility="private" memberEnd="Message-connector A_connector_message-message">
-      <ownedEnd xmi:id="A_connector_message-message" name="message" type="Message" association="A_connector_message">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_connector_message-message-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_connector_message-message-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_receiveEvent_endMessage" name="A_receiveEvent_endMessage" visibility="private" memberEnd="Message-receiveEvent A_receiveEvent_endMessage-endMessage">
-      <ownedEnd xmi:id="A_receiveEvent_endMessage-endMessage" name="endMessage" type="Message" subsettedProperty="MessageEnd-message" association="A_receiveEvent_endMessage">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_receiveEvent_endMessage-endMessage-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_sendEvent_endMessage" name="A_sendEvent_endMessage" visibility="private" memberEnd="Message-sendEvent A_sendEvent_endMessage-endMessage">
-      <ownedEnd xmi:id="A_sendEvent_endMessage-endMessage" name="endMessage" type="Message" subsettedProperty="MessageEnd-message" association="A_sendEvent_endMessage">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_sendEvent_endMessage-endMessage-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_argument_message" name="A_argument_message" visibility="private" memberEnd="Message-argument A_argument_message-message">
-      <ownedEnd xmi:id="A_argument_message-message" name="message" type="Message" subsettedProperty="Element-owner" association="A_argument_message">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_argument_message-message-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_selector_lifeline" name="A_selector_lifeline" visibility="private" memberEnd="Lifeline-selector A_selector_lifeline-lifeline">
-      <ownedEnd xmi:id="A_selector_lifeline-lifeline" name="lifeline" type="Lifeline" subsettedProperty="Element-owner" association="A_selector_lifeline">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_selector_lifeline-lifeline-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_decomposedAs_lifeline" name="A_decomposedAs_lifeline" visibility="private" memberEnd="Lifeline-decomposedAs A_decomposedAs_lifeline-lifeline">
-      <ownedEnd xmi:id="A_decomposedAs_lifeline-lifeline" name="lifeline" type="Lifeline" association="A_decomposedAs_lifeline"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_represents_lifeline" name="A_represents_lifeline" visibility="private" memberEnd="Lifeline-represents A_represents_lifeline-lifeline">
-      <ownedComment xmi:id="A_represents_lifeline-_ownedComment.0" annotatedElement="A_represents_lifeline">
-        <body>If a Part has multiplicity, multiple lifelines might be used to show it.</body>
-      </ownedComment>
-      <ownedEnd xmi:id="A_represents_lifeline-lifeline" name="lifeline" type="Lifeline" association="A_represents_lifeline">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_represents_lifeline-lifeline-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_represents_lifeline-lifeline-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_returnValueRecipient_interactionUse" name="A_returnValueRecipient_interactionUse" visibility="private" memberEnd="InteractionUse-returnValueRecipient A_returnValueRecipient_interactionUse-interactionUse">
-      <ownedEnd xmi:id="A_returnValueRecipient_interactionUse-interactionUse" name="interactionUse" type="InteractionUse" association="A_returnValueRecipient_interactionUse">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_returnValueRecipient_interactionUse-interactionUse-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_returnValueRecipient_interactionUse-interactionUse-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_refersTo_interactionUse" name="A_refersTo_interactionUse" visibility="private" memberEnd="InteractionUse-refersTo A_refersTo_interactionUse-interactionUse">
-      <ownedEnd xmi:id="A_refersTo_interactionUse-interactionUse" name="interactionUse" type="InteractionUse" association="A_refersTo_interactionUse">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_refersTo_interactionUse-interactionUse-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_refersTo_interactionUse-interactionUse-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_returnValue_interactionUse" name="A_returnValue_interactionUse" visibility="private" memberEnd="InteractionUse-returnValue A_returnValue_interactionUse-interactionUse">
-      <ownedEnd xmi:id="A_returnValue_interactionUse-interactionUse" name="interactionUse" type="InteractionUse" subsettedProperty="Element-owner" association="A_returnValue_interactionUse">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_returnValue_interactionUse-interactionUse-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_argument_interactionUse" name="A_argument_interactionUse" visibility="private" memberEnd="InteractionUse-argument A_argument_interactionUse-interactionUse">
-      <ownedEnd xmi:id="A_argument_interactionUse-interactionUse" name="interactionUse" type="InteractionUse" subsettedProperty="Element-owner" association="A_argument_interactionUse">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_argument_interactionUse-interactionUse-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_actualGate_interactionUse" name="A_actualGate_interactionUse" visibility="private" memberEnd="InteractionUse-actualGate A_actualGate_interactionUse-interactionUse">
-      <ownedEnd xmi:id="A_actualGate_interactionUse-interactionUse" name="interactionUse" type="InteractionUse" subsettedProperty="Element-owner" association="A_actualGate_interactionUse">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_actualGate_interactionUse-interactionUse-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_fragment_enclosingOperand" name="A_fragment_enclosingOperand" visibility="private" memberEnd="InteractionOperand-fragment InteractionFragment-enclosingOperand"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_guard_interactionOperand" name="A_guard_interactionOperand" visibility="private" memberEnd="InteractionOperand-guard A_guard_interactionOperand-interactionOperand">
-      <ownedEnd xmi:id="A_guard_interactionOperand-interactionOperand" name="interactionOperand" type="InteractionOperand" subsettedProperty="Element-owner" association="A_guard_interactionOperand"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_generalOrdering_interactionFragment" name="A_generalOrdering_interactionFragment" visibility="private" memberEnd="InteractionFragment-generalOrdering A_generalOrdering_interactionFragment-interactionFragment">
-      <ownedEnd xmi:id="A_generalOrdering_interactionFragment-interactionFragment" name="interactionFragment" type="InteractionFragment" subsettedProperty="Element-owner" association="A_generalOrdering_interactionFragment">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_generalOrdering_interactionFragment-interactionFragment-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_covered_coveredBy" name="A_covered_coveredBy" visibility="private" memberEnd="InteractionFragment-covered Lifeline-coveredBy">
-      <ownedComment xmi:id="A_covered_coveredBy-_ownedComment.0" annotatedElement="A_covered_coveredBy">
-        <body>This association shows the lifelines that make up an interaction. A lifeline may be part of more than one interaction use.</body>
-      </ownedComment>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_minint_interactionConstraint" name="A_minint_interactionConstraint" visibility="private" memberEnd="InteractionConstraint-minint A_minint_interactionConstraint-interactionConstraint">
-      <ownedEnd xmi:id="A_minint_interactionConstraint-interactionConstraint" name="interactionConstraint" type="InteractionConstraint" subsettedProperty="Element-owner" association="A_minint_interactionConstraint">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_minint_interactionConstraint-interactionConstraint-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_maxint_interactionConstraint" name="A_maxint_interactionConstraint" visibility="private" memberEnd="InteractionConstraint-maxint A_maxint_interactionConstraint-interactionConstraint">
-      <ownedEnd xmi:id="A_maxint_interactionConstraint-interactionConstraint" name="interactionConstraint" type="InteractionConstraint" subsettedProperty="Element-owner" association="A_maxint_interactionConstraint">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_maxint_interactionConstraint-interactionConstraint-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_action_interaction" name="A_action_interaction" visibility="private" memberEnd="Interaction-action A_action_interaction-interaction">
-      <ownedEnd xmi:id="A_action_interaction-interaction" name="interaction" type="Interaction" subsettedProperty="Element-owner" association="A_action_interaction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_action_interaction-interaction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_formalGate_interaction" name="A_formalGate_interaction" visibility="private" memberEnd="Interaction-formalGate A_formalGate_interaction-interaction">
-      <ownedEnd xmi:id="A_formalGate_interaction-interaction" name="interaction" type="Interaction" subsettedProperty="NamedElement-namespace" association="A_formalGate_interaction">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_formalGate_interaction-interaction-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_lifeline_interaction" name="A_lifeline_interaction" visibility="private" memberEnd="Interaction-lifeline Lifeline-interaction"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_fragment_enclosingInteraction" name="A_fragment_enclosingInteraction" visibility="private" memberEnd="Interaction-fragment InteractionFragment-enclosingInteraction"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_message_interaction" name="A_message_interaction" visibility="private" memberEnd="Interaction-message Message-interaction"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_before_toAfter" name="A_before_toAfter" visibility="private" memberEnd="GeneralOrdering-before OccurrenceSpecification-toAfter"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_finish_executionSpecification" name="A_finish_executionSpecification" visibility="private" memberEnd="ExecutionSpecification-finish A_finish_executionSpecification-executionSpecification">
-      <ownedComment xmi:id="A_finish_executionSpecification-_ownedComment.0" annotatedElement="A_finish_executionSpecification">
-        <body>The event shows the time point at which the action completes execution.</body>
-      </ownedComment>
-      <ownedEnd xmi:id="A_finish_executionSpecification-executionSpecification" name="executionSpecification" type="ExecutionSpecification" association="A_finish_executionSpecification">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_finish_executionSpecification-executionSpecification-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_finish_executionSpecification-executionSpecification-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_start_executionSpecification" name="A_start_executionSpecification" visibility="private" memberEnd="ExecutionSpecification-start A_start_executionSpecification-executionSpecification">
-      <ownedComment xmi:id="A_start_executionSpecification-_ownedComment.0" annotatedElement="A_start_executionSpecification">
-        <body>The event shows the time point at which the action begins execution.</body>
-      </ownedComment>
-      <ownedEnd xmi:id="A_start_executionSpecification-executionSpecification" name="executionSpecification" type="ExecutionSpecification" association="A_start_executionSpecification">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_start_executionSpecification-executionSpecification-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_start_executionSpecification-executionSpecification-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_execution_executionOccurrenceSpecification" name="A_execution_executionOccurrenceSpecification" visibility="private" memberEnd="ExecutionOccurrenceSpecification-execution A_execution_executionOccurrenceSpecification-executionOccurrenceSpecification">
-      <ownedEnd xmi:id="A_execution_executionOccurrenceSpecification-executionOccurrenceSpecification" name="executionOccurrenceSpecification" type="ExecutionOccurrenceSpecification" association="A_execution_executionOccurrenceSpecification">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_execution_executionOccurrenceSpecification-executionOccurrenceSpecification-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_execution_executionOccurrenceSpecification-executionOccurrenceSpecification-_upperValue" value="2"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_message_considerIgnoreFragment" name="A_message_considerIgnoreFragment" visibility="private" memberEnd="ConsiderIgnoreFragment-message A_message_considerIgnoreFragment-considerIgnoreFragment">
-      <ownedEnd xmi:id="A_message_considerIgnoreFragment-considerIgnoreFragment" name="considerIgnoreFragment" type="ConsiderIgnoreFragment" association="A_message_considerIgnoreFragment">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_message_considerIgnoreFragment-considerIgnoreFragment-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_message_considerIgnoreFragment-considerIgnoreFragment-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_cfragmentGate_combinedFragment" name="A_cfragmentGate_combinedFragment" visibility="private" memberEnd="CombinedFragment-cfragmentGate A_cfragmentGate_combinedFragment-combinedFragment">
-      <ownedEnd xmi:id="A_cfragmentGate_combinedFragment-combinedFragment" name="combinedFragment" type="CombinedFragment" subsettedProperty="Element-owner" association="A_cfragmentGate_combinedFragment">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_cfragmentGate_combinedFragment-combinedFragment-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_operand_combinedFragment" name="A_operand_combinedFragment" visibility="private" memberEnd="CombinedFragment-operand A_operand_combinedFragment-combinedFragment">
-      <ownedEnd xmi:id="A_operand_combinedFragment-combinedFragment" name="combinedFragment" type="CombinedFragment" subsettedProperty="Element-owner" association="A_operand_combinedFragment">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_operand_combinedFragment-combinedFragment-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_behavior_behaviorExecutionSpecification" name="A_behavior_behaviorExecutionSpecification" visibility="private" memberEnd="BehaviorExecutionSpecification-behavior A_behavior_behaviorExecutionSpecification-behaviorExecutionSpecification">
-      <ownedEnd xmi:id="A_behavior_behaviorExecutionSpecification-behaviorExecutionSpecification" name="behaviorExecutionSpecification" type="BehaviorExecutionSpecification" association="A_behavior_behaviorExecutionSpecification">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_behavior_behaviorExecutionSpecification-behaviorExecutionSpecification-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_behavior_behaviorExecutionSpecification-behaviorExecutionSpecification-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_action_actionExecutionSpecification" name="A_action_actionExecutionSpecification" visibility="private" memberEnd="ActionExecutionSpecification-action A_action_actionExecutionSpecification-actionExecutionSpecification">
-      <ownedEnd xmi:id="A_action_actionExecutionSpecification-actionExecutionSpecification" name="actionExecutionSpecification" type="ActionExecutionSpecification" association="A_action_actionExecutionSpecification">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_action_actionExecutionSpecification-actionExecutionSpecification-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_action_actionExecutionSpecification-actionExecutionSpecification-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Extension" name="Extension">
-      <ownedComment xmi:id="Extension-_ownedComment.0" annotatedElement="Extension">
-        <body>An extension is used to indicate that the properties of a metaclass are extended through a stereotype, and gives the ability to flexibly add (and later remove) stereotypes to classes.</body>
-      </ownedComment>
-      <ownedRule xmi:id="Extension-non_owned_end" name="non_owned_end" constrainedElement="Extension">
-        <ownedComment xmi:id="Extension-non_owned_end-_ownedComment.0" annotatedElement="Extension-non_owned_end">
-          <body>The non-owned end of an Extension is typed by a Class.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Extension-non_owned_end-_specification">
-          <language>OCL</language>
-          <body>metaclassEnd()->notEmpty() and metaclassEnd().type.oclIsKindOf(Class)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Extension-is_binary" name="is_binary" constrainedElement="Extension">
-        <ownedComment xmi:id="Extension-is_binary-_ownedComment.0" annotatedElement="Extension-is_binary">
-          <body>An Extension is binary, i.e., it has only two memberEnds.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Extension-is_binary-_specification">
-          <language>OCL</language>
-          <body>memberEnd->size() = 2</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="Extension-_generalization.0" general="Association"/>
-      <ownedAttribute xmi:id="Extension-isRequired" name="isRequired" isReadOnly="true" isDerived="true">
-        <ownedComment xmi:id="Extension-isRequired-_ownedComment.0" annotatedElement="Extension-isRequired">
-          <body>Indicates whether an instance of the extending stereotype must be created when an instance of the extended class is created. The attribute value is derived from the value of the lower property of the ExtensionEnd referenced by Extension::ownedEnd; a lower value of 1 means that isRequired is true, but otherwise it is false. Since the default value of ExtensionEnd::lower is 0, the default value of isRequired is false.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Extension-metaclass" name="metaclass" type="Class" isReadOnly="true" isDerived="true" association="A_extension_metaclass">
-        <ownedComment xmi:id="Extension-metaclass-_ownedComment.0" annotatedElement="Extension-metaclass">
-          <body>References the Class that is extended through an Extension. The property is derived from the type of the memberEnd that is not the ownedEnd.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Extension-ownedEnd" name="ownedEnd" type="ExtensionEnd" aggregation="composite" redefinedProperty="Association-ownedEnd" association="A_ownedEnd_extension">
-        <ownedComment xmi:id="Extension-ownedEnd-_ownedComment.0" annotatedElement="Extension-ownedEnd">
-          <body>References the end of the extension that is typed by a Stereotype.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedOperation xmi:id="Extension-getStereotype" name="getStereotype" isQuery="true">
-        <ownedComment xmi:id="Extension-getStereotype-_ownedComment.0" annotatedElement="Extension-getStereotype">
-          <body>Retrieves the stereotype that extends a metaclass through this extension.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Extension-getStereotype-_ownedParameter.0" type="Stereotype" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Extension-getStereotype-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Extension-getStereotype-_ownedParameter.0-_upperValue" value="1"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Extension-getStereotypeEnd" name="getStereotypeEnd" isQuery="true">
-        <ownedComment xmi:id="Extension-getStereotypeEnd-_ownedComment.0" annotatedElement="Extension-getStereotypeEnd">
-          <body>Retrieves the extension end that is typed by a stereotype (as opposed to a metaclass).</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Extension-getStereotypeEnd-_ownedParameter.0" type="Property" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Extension-getStereotypeEnd-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Extension-getStereotypeEnd-_ownedParameter.0-_upperValue" value="1"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Extension-isRequired.1" name="isRequired" bodyCondition="Extension-isRequired.1-spec" isQuery="true">
-        <ownedComment xmi:id="Extension-isRequired.1-_ownedComment.0" annotatedElement="Extension-isRequired.1">
-          <body>The query isRequired() is true if the owned end has a multiplicity with the lower bound of 1.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Extension-isRequired.1-spec" name="spec" constrainedElement="Extension-isRequired.1 Extension-isRequired">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Extension-isRequired.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (ownedEnd.lowerBound() = 1)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Extension-isRequired.1-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Extension-metaclass.1" name="metaclass" visibility="protected" bodyCondition="Extension-metaclass.1-spec" isQuery="true">
-        <ownedComment xmi:id="Extension-metaclass.1-_ownedComment.0" annotatedElement="Extension-metaclass.1">
-          <body>The query metaclass() returns the metaclass that is being extended (as opposed to the extending stereotype).</body>
-        </ownedComment>
-        <ownedRule xmi:id="Extension-metaclass.1-spec" name="spec" constrainedElement="Extension-metaclass.1 Extension-metaclass">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Extension-metaclass.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (metaclassEnd().type.oclAsType(Class))</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Extension-metaclass.1-result" name="result" type="Class" direction="return"/>
-      </ownedOperation>
-      <ownedOperation xmi:id="Extension-metaclassEnd" name="metaclassEnd" bodyCondition="Extension-metaclassEnd-spec" isQuery="true">
-        <ownedComment xmi:id="Extension-metaclassEnd-_ownedComment.0" annotatedElement="Extension-metaclassEnd">
-          <body>The query metaclassEnd() returns the Property that is typed by a metaclass (as opposed to a stereotype).</body>
-        </ownedComment>
-        <ownedRule xmi:id="Extension-metaclassEnd-spec" name="spec" constrainedElement="Extension-metaclassEnd">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Extension-metaclassEnd-spec-_specification">
-            <language>OCL</language>
-            <body>result = (memberEnd->reject(p | ownedEnd->includes(p.oclAsType(ExtensionEnd)))->any(true))</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Extension-metaclassEnd-result" name="result" type="Property" direction="return"/>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ExtensionEnd" name="ExtensionEnd">
-      <ownedComment xmi:id="ExtensionEnd-_ownedComment.0" annotatedElement="ExtensionEnd">
-        <body>An extension end is used to tie an extension to a stereotype when extending a metaclass.
-The default multiplicity of an extension end is 0..1.</body>
-      </ownedComment>
-      <ownedRule xmi:id="ExtensionEnd-multiplicity" name="multiplicity" constrainedElement="ExtensionEnd">
-        <ownedComment xmi:id="ExtensionEnd-multiplicity-_ownedComment.0" annotatedElement="ExtensionEnd-multiplicity">
-          <body>The multiplicity of ExtensionEnd is 0..1 or 1.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ExtensionEnd-multiplicity-_specification">
-          <language>OCL</language>
-          <body>(lowerBound() = 0 or lowerBound() = 1) and upperBound() = 1</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ExtensionEnd-aggregation" name="aggregation" constrainedElement="ExtensionEnd">
-        <ownedComment xmi:id="ExtensionEnd-aggregation-_ownedComment.0" annotatedElement="ExtensionEnd-aggregation">
-          <body>The aggregation of an ExtensionEnd is composite.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ExtensionEnd-aggregation-_specification">
-          <language>OCL</language>
-          <body>self.aggregation = AggregationKind::composite</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="ExtensionEnd-_generalization.0" general="Property"/>
-      <ownedAttribute xmi:id="ExtensionEnd-lower" name="lower" isDerived="true">
-        <ownedComment xmi:id="ExtensionEnd-lower-_ownedComment.0" annotatedElement="ExtensionEnd-lower">
-          <body>This redefinition changes the default multiplicity of association ends, since model elements are usually extended by 0 or 1 instance of the extension stereotype.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ExtensionEnd-lower-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ExtensionEnd-type" name="type" type="Stereotype" redefinedProperty="TypedElement-type" association="A_type_extensionEnd">
-        <ownedComment xmi:id="ExtensionEnd-type-_ownedComment.0" annotatedElement="ExtensionEnd-type">
-          <body>References the type of the ExtensionEnd. Note that this association restricts the possible types of an ExtensionEnd to only be Stereotypes.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedOperation xmi:id="ExtensionEnd-getLower" name="getLower" visibility="protected" isQuery="true">
-        <ownedParameter xmi:id="ExtensionEnd-getLower-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="ExtensionEnd-setLower" name="setLower">
-        <ownedParameter xmi:id="ExtensionEnd-setLower-newLower" name="newLower" effect="read">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="ExtensionEnd-lowerBound" name="lowerBound" bodyCondition="ExtensionEnd-lowerBound-spec" isQuery="true">
-        <ownedComment xmi:id="ExtensionEnd-lowerBound-_ownedComment.0" annotatedElement="ExtensionEnd-lowerBound">
-          <body>The query lowerBound() returns the lower bound of the multiplicity as an Integer. This is a redefinition of the default lower bound, which normally, for MultiplicityElements, evaluates to 1 if empty.</body>
-        </ownedComment>
-        <ownedRule xmi:id="ExtensionEnd-lowerBound-spec" name="spec" constrainedElement="ExtensionEnd-lowerBound">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="ExtensionEnd-lowerBound-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if lowerValue=null then 0 else lowerValue.integerValue() endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="ExtensionEnd-lowerBound-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ExtensionEnd-lowerBound-result-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Image" name="Image">
-      <ownedComment xmi:id="Image-_ownedComment.0" annotatedElement="Image">
-        <body>Physical definition of a graphical image.</body>
-      </ownedComment>
-      <generalization xmi:id="Image-_generalization.0" general="Element"/>
-      <ownedAttribute xmi:id="Image-content" name="content">
-        <ownedComment xmi:id="Image-content-_ownedComment.0" annotatedElement="Image-content">
-          <body>This contains the serialization of the image according to the format. The value could represent a bitmap, image such as a GIF file, or drawing 'instructions' using a standard such as Scalable Vector Graphic (SVG) (which is XML based).</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Image-content-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Image-format" name="format">
-        <ownedComment xmi:id="Image-format-_ownedComment.0" annotatedElement="Image-format">
-          <body>This indicates the format of the content, which is how the string content should be interpreted. The following values are reserved: SVG, GIF, PNG, JPG, WMF, EMF, BMP. In addition the prefix 'MIME: ' is also reserved. This option can be used as an alternative to express the reserved values above, for example &quot;SVG&quot; could instead be expressed as &quot;MIME: image/svg+xml&quot;.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Image-format-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Image-location" name="location">
-        <ownedComment xmi:id="Image-location-_ownedComment.0" annotatedElement="Image-location">
-          <body>This contains a location that can be used by a tool to locate the image as an alternative to embedding it in the stereotype.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Image-location-_lowerValue"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Model" name="Model">
-      <ownedComment xmi:id="Model-_ownedComment.0" annotatedElement="Model">
-        <body>A model captures a view of a physical system. It is an abstraction of the physical system, with a certain purpose. This purpose determines what is to be included in the model and what is irrelevant. Thus the model completely describes those aspects of the physical system that are relevant to the purpose of the model, at the appropriate level of detail.</body>
-      </ownedComment>
-      <generalization xmi:id="Model-_generalization.0" general="Package"/>
-      <ownedAttribute xmi:id="Model-viewpoint" name="viewpoint">
-        <ownedComment xmi:id="Model-viewpoint-_ownedComment.0" annotatedElement="Model-viewpoint">
-          <body>The name of the viewpoint that is expressed by a model (this name may refer to a profile definition).</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Model-viewpoint-_lowerValue"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="Model-isMetamodel" name="isMetamodel" isQuery="true">
-        <ownedComment xmi:id="Model-isMetamodel-_ownedComment.0" annotatedElement="Model-isMetamodel">
-          <body>Determines whether this model is a metamodel.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Model-isMetamodel-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Package" name="Package">
-      <ownedComment xmi:id="Package-_ownedComment.0" annotatedElement="Package">
-        <body>A package can have one or more profile applications to indicate which profiles have been applied. Because a profile is a package, it is possible to apply a profile not only to packages, but also to profiles.
-Package specializes TemplateableElement and PackageableElement specializes ParameterableElement to specify that a package can be used as a template and a PackageableElement as a template parameter.
-A package is used to group elements, and provides a namespace for the grouped elements.</body>
-      </ownedComment>
-      <ownedRule xmi:id="Package-elements_public_or_private" name="elements_public_or_private" constrainedElement="Package">
-        <ownedComment xmi:id="Package-elements_public_or_private-_ownedComment.0" annotatedElement="Package-elements_public_or_private">
-          <body>If an element that is owned by a package has visibility, it is public or private.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Package-elements_public_or_private-_specification">
-          <language>OCL</language>
-          <body>packagedElement->forAll(e | e.visibility&lt;> null implies e.visibility = VisibilityKind::public or e.visibility = VisibilityKind::private)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="Package-_generalization.0" general="PackageableElement"/>
-      <generalization xmi:id="Package-_generalization.1" general="TemplateableElement"/>
-      <generalization xmi:id="Package-_generalization.2" general="Namespace"/>
-      <ownedAttribute xmi:id="Package-URI" name="URI">
-        <ownedComment xmi:id="Package-URI-_ownedComment.0" annotatedElement="Package-URI">
-          <body>Provides an identifier for the package that can be used for many purposes. A URI is the universally unique identification of the package following the IETF URI specification, RFC 2396 http://www.ietf.org/rfc/rfc2396.txt and it must comply with those syntax rules.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Package-URI-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Package-nestedPackage" name="nestedPackage" type="Package" aggregation="composite" isDerived="true" subsettedProperty="Package-packagedElement" association="A_nestedPackage_nestingPackage">
-        <ownedComment xmi:id="Package-nestedPackage-_ownedComment.0" annotatedElement="Package-nestedPackage">
-          <body>References the packaged elements that are Packages.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Package-nestedPackage-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Package-nestedPackage-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Package-nestingPackage" name="nestingPackage" type="Package" subsettedProperty="A_packagedElement_owningPackage-owningPackage NamedElement-namespace" association="A_nestedPackage_nestingPackage">
-        <ownedComment xmi:id="Package-nestingPackage-_ownedComment.0" annotatedElement="Package-nestingPackage">
-          <body>References the Package that owns this Package.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Package-nestingPackage-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Package-ownedStereotype" name="ownedStereotype" type="Stereotype" isReadOnly="true" aggregation="composite" isDerived="true" subsettedProperty="Package-packagedElement" association="A_ownedStereotype_owningPackage">
-        <ownedComment xmi:id="Package-ownedStereotype-_ownedComment.0" annotatedElement="Package-ownedStereotype">
-          <body>References the Stereotypes that are owned by the Package.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Package-ownedStereotype-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Package-ownedStereotype-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Package-ownedType" name="ownedType" type="Type" aggregation="composite" isDerived="true" subsettedProperty="Package-packagedElement" association="A_ownedType_package">
-        <ownedComment xmi:id="Package-ownedType-_ownedComment.0" annotatedElement="Package-ownedType">
-          <body>References the packaged elements that are Types.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Package-ownedType-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Package-ownedType-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Package-packageMerge" name="packageMerge" type="PackageMerge" aggregation="composite" subsettedProperty="A_source_directedRelationship-directedRelationship Element-ownedElement" association="A_packageMerge_receivingPackage">
-        <ownedComment xmi:id="Package-packageMerge-_ownedComment.0" annotatedElement="Package-packageMerge">
-          <body>References the PackageMerges that are owned by this Package.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Package-packageMerge-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Package-packageMerge-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Package-packagedElement" name="packagedElement" type="PackageableElement" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_packagedElement_owningPackage">
-        <ownedComment xmi:id="Package-packagedElement-_ownedComment.0" annotatedElement="Package-packagedElement">
-          <body>Specifies the packageable elements that are owned by this Package.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Package-packagedElement-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Package-packagedElement-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Package-profileApplication" name="profileApplication" type="ProfileApplication" aggregation="composite" subsettedProperty="A_source_directedRelationship-directedRelationship Element-ownedElement" association="A_profileApplication_applyingPackage">
-        <ownedComment xmi:id="Package-profileApplication-_ownedComment.0" annotatedElement="Package-profileApplication">
-          <body>References the ProfileApplications that indicate which profiles have been applied to the Package.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Package-profileApplication-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Package-profileApplication-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="Package-applyProfile" name="applyProfile">
-        <ownedComment xmi:id="Package-applyProfile-_ownedComment.0" annotatedElement="Package-applyProfile">
-          <body>Applies the current definition of the specified profile to this package and automatically applies required stereotypes in the profile to elements within this package's namespace hieararchy. If a different definition is already applied, automatically migrates any associated stereotype values on a &quot;best effort&quot; basis (matching classifiers and structural features by name).</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Package-applyProfile-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:Class" href="Ecore.metamodel.uml#EObject"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Package-applyProfile-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Package-applyProfile-_ownedParameter.0-_upperValue" value="*"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Package-applyProfile-profile" name="profile" type="Profile" effect="read">
-          <ownedComment xmi:id="Package-applyProfile-profile-_ownedComment.0" annotatedElement="Package-applyProfile-profile">
-            <body>The profile to apply.</body>
-          </ownedComment>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Package-createOwnedClass" name="createOwnedClass">
-        <ownedComment xmi:id="Package-createOwnedClass-_ownedComment.0" annotatedElement="Package-createOwnedClass">
-          <body>Creates a(n) (abstract) class with the specified name as an owned type of this package.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Package-createOwnedClass-_ownedParameter.0" type="Class" direction="return"/>
-        <ownedParameter xmi:id="Package-createOwnedClass-name" name="name" effect="read">
-          <ownedComment xmi:id="Package-createOwnedClass-name-_ownedComment.0" annotatedElement="Package-createOwnedClass-name">
-            <body>The name for the new class, or null.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Package-createOwnedClass-isAbstract" name="isAbstract" effect="read">
-          <ownedComment xmi:id="Package-createOwnedClass-isAbstract-_ownedComment.0" annotatedElement="Package-createOwnedClass-isAbstract">
-            <body>Whether the new class should be abstract.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Package-createOwnedEnumeration" name="createOwnedEnumeration">
-        <ownedComment xmi:id="Package-createOwnedEnumeration-_ownedComment.0" annotatedElement="Package-createOwnedEnumeration">
-          <body>Creates a enumeration with the specified name as an owned type of this package.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Package-createOwnedEnumeration-_ownedParameter.0" type="Enumeration" direction="return"/>
-        <ownedParameter xmi:id="Package-createOwnedEnumeration-name" name="name" effect="read">
-          <ownedComment xmi:id="Package-createOwnedEnumeration-name-_ownedComment.0" annotatedElement="Package-createOwnedEnumeration-name">
-            <body>The name for the new enumeration, or null.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Package-createOwnedInterface" name="createOwnedInterface">
-        <ownedComment xmi:id="Package-createOwnedInterface-_ownedComment.0" annotatedElement="Package-createOwnedInterface">
-          <body>Creates an interface with the specified name as an owned type of this package.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Package-createOwnedInterface-_ownedParameter.0" type="Interface" direction="return"/>
-        <ownedParameter xmi:id="Package-createOwnedInterface-name" name="name" effect="read">
-          <ownedComment xmi:id="Package-createOwnedInterface-name-_ownedComment.0" annotatedElement="Package-createOwnedInterface-name">
-            <body>The name for the new interface, or null.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Package-createOwnedPrimitiveType" name="createOwnedPrimitiveType">
-        <ownedComment xmi:id="Package-createOwnedPrimitiveType-_ownedComment.0" annotatedElement="Package-createOwnedPrimitiveType">
-          <body>Creates a primitive type with the specified name as an owned type of this package.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Package-createOwnedPrimitiveType-_ownedParameter.0" type="PrimitiveType" direction="return"/>
-        <ownedParameter xmi:id="Package-createOwnedPrimitiveType-name" name="name" effect="read">
-          <ownedComment xmi:id="Package-createOwnedPrimitiveType-name-_ownedComment.0" annotatedElement="Package-createOwnedPrimitiveType-name">
-            <body>The name for the new primitive type, or null.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Package-createOwnedStereotype" name="createOwnedStereotype">
-        <ownedComment xmi:id="Package-createOwnedStereotype-_ownedComment.0" annotatedElement="Package-createOwnedStereotype">
-          <body>Creates a(n) (abstract) stereotype with the specified name as an owned stereotype of this profile.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Package-createOwnedStereotype-_ownedParameter.0" type="Stereotype" direction="return"/>
-        <ownedParameter xmi:id="Package-createOwnedStereotype-name" name="name" effect="read">
-          <ownedComment xmi:id="Package-createOwnedStereotype-name-_ownedComment.0" annotatedElement="Package-createOwnedStereotype-name">
-            <body>The name for the new stereotype, or null.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Package-createOwnedStereotype-isAbstract" name="isAbstract" effect="read">
-          <ownedComment xmi:id="Package-createOwnedStereotype-isAbstract-_ownedComment.0" annotatedElement="Package-createOwnedStereotype-isAbstract">
-            <body>Whether the new stereotype should be abstract.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Package-getAllAppliedProfiles" name="getAllAppliedProfiles" isQuery="true">
-        <ownedComment xmi:id="Package-getAllAppliedProfiles-_ownedComment.0" annotatedElement="Package-getAllAppliedProfiles">
-          <body>Retrieves all the profiles that are applied to this package, including profiles applied to its nesting package(s).</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Package-getAllAppliedProfiles-_ownedParameter.0" type="Profile" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Package-getAllAppliedProfiles-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Package-getAllAppliedProfiles-_ownedParameter.0-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Package-getAllProfileApplications" name="getAllProfileApplications" isQuery="true">
-        <ownedComment xmi:id="Package-getAllProfileApplications-_ownedComment.0" annotatedElement="Package-getAllProfileApplications">
-          <body>Retrieves all the profile applications for this package, including profile applications for its nesting package(s).</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Package-getAllProfileApplications-_ownedParameter.0" type="ProfileApplication" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Package-getAllProfileApplications-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Package-getAllProfileApplications-_ownedParameter.0-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Package-getAppliedProfile" name="getAppliedProfile" isQuery="true">
-        <ownedComment xmi:id="Package-getAppliedProfile-_ownedComment.0" annotatedElement="Package-getAppliedProfile">
-          <body>Retrieves the profile with the specified qualified name that is applied to this package, or null if no such profile is applied.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Package-getAppliedProfile-_ownedParameter.0" type="Profile" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Package-getAppliedProfile-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Package-getAppliedProfile-_ownedParameter.0-_upperValue" value="1"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Package-getAppliedProfile-qualifiedName" name="qualifiedName" effect="read">
-          <ownedComment xmi:id="Package-getAppliedProfile-qualifiedName-_ownedComment.0" annotatedElement="Package-getAppliedProfile-qualifiedName">
-            <body>The qualified name of the applied profile to retrieve.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Package-getAppliedProfile.1" name="getAppliedProfile" isQuery="true">
-        <ownedComment xmi:id="Package-getAppliedProfile.1-_ownedComment.0" annotatedElement="Package-getAppliedProfile.1">
-          <body>Retrieves the profile with the specified qualified name that is applied to this package or any of its nesting packages (if indicated), or null if no such profile is applied.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Package-getAppliedProfile.1-_ownedParameter.0" type="Profile" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Package-getAppliedProfile.1-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Package-getAppliedProfile.1-_ownedParameter.0-_upperValue" value="1"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Package-getAppliedProfile.1-qualifiedName" name="qualifiedName" effect="read">
-          <ownedComment xmi:id="Package-getAppliedProfile.1-qualifiedName-_ownedComment.0" annotatedElement="Package-getAppliedProfile.1-qualifiedName">
-            <body>The qualified name of the applied profile to retrieve.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Package-getAppliedProfile.1-recurse" name="recurse" effect="read">
-          <ownedComment xmi:id="Package-getAppliedProfile.1-recurse-_ownedComment.0" annotatedElement="Package-getAppliedProfile.1-recurse">
-            <body>Whether to look in nesting packages.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Package-getAppliedProfiles" name="getAppliedProfiles" isQuery="true">
-        <ownedComment xmi:id="Package-getAppliedProfiles-_ownedComment.0" annotatedElement="Package-getAppliedProfiles">
-          <body>Retrieves the profiles that are applied to this package.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Package-getAppliedProfiles-_ownedParameter.0" type="Profile" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Package-getAppliedProfiles-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Package-getAppliedProfiles-_ownedParameter.0-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Package-getProfileApplication" name="getProfileApplication" isQuery="true">
-        <ownedComment xmi:id="Package-getProfileApplication-_ownedComment.0" annotatedElement="Package-getProfileApplication">
-          <body>Retrieves the application of the specified profile to this package, or null if no such profile is applied.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Package-getProfileApplication-_ownedParameter.0" type="ProfileApplication" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Package-getProfileApplication-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Package-getProfileApplication-_ownedParameter.0-_upperValue" value="1"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Package-getProfileApplication-profile" name="profile" type="Profile" effect="read">
-          <ownedComment xmi:id="Package-getProfileApplication-profile-_ownedComment.0" annotatedElement="Package-getProfileApplication-profile">
-            <body>The profile whose application to retrieve.</body>
-          </ownedComment>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Package-getProfileApplication.1" name="getProfileApplication" isQuery="true">
-        <ownedComment xmi:id="Package-getProfileApplication.1-_ownedComment.0" annotatedElement="Package-getProfileApplication.1">
-          <body>Retrieves the application of the specified profile to this package or any of its nesting packages (if indicated), or null if no such profile is applied.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Package-getProfileApplication.1-_ownedParameter.0" type="ProfileApplication" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Package-getProfileApplication.1-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Package-getProfileApplication.1-_ownedParameter.0-_upperValue" value="1"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Package-getProfileApplication.1-profile" name="profile" type="Profile" effect="read">
-          <ownedComment xmi:id="Package-getProfileApplication.1-profile-_ownedComment.0" annotatedElement="Package-getProfileApplication.1-profile">
-            <body>The profile whose application to retrieve.</body>
-          </ownedComment>
-        </ownedParameter>
-        <ownedParameter xmi:id="Package-getProfileApplication.1-recurse" name="recurse" effect="read">
-          <ownedComment xmi:id="Package-getProfileApplication.1-recurse-_ownedComment.0" annotatedElement="Package-getProfileApplication.1-recurse">
-            <body>Whether to look in nesting packages.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Package-isModelLibrary" name="isModelLibrary" isQuery="true">
-        <ownedComment xmi:id="Package-isModelLibrary-_ownedComment.0" annotatedElement="Package-isModelLibrary">
-          <body>Determines whether this package is a model library.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Package-isModelLibrary-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Package-isProfileApplied" name="isProfileApplied" isQuery="true">
-        <ownedComment xmi:id="Package-isProfileApplied-_ownedComment.0" annotatedElement="Package-isProfileApplied">
-          <body>Determines whether the specified profile is applied to this package.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Package-isProfileApplied-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Package-isProfileApplied-profile" name="profile" type="Profile" effect="read">
-          <ownedComment xmi:id="Package-isProfileApplied-profile-_ownedComment.0" annotatedElement="Package-isProfileApplied-profile">
-            <body>The profile in question.</body>
-          </ownedComment>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Package-unapplyProfile" name="unapplyProfile">
-        <ownedComment xmi:id="Package-unapplyProfile-_ownedComment.0" annotatedElement="Package-unapplyProfile">
-          <body>Unapplies the specified profile from this package and automatically unapplies stereotypes in the profile from elements within this package's namespace hieararchy.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Package-unapplyProfile-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:Class" href="Ecore.metamodel.uml#EObject"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Package-unapplyProfile-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Package-unapplyProfile-_ownedParameter.0-_upperValue" value="*"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Package-unapplyProfile-profile" name="profile" type="Profile" effect="read">
-          <ownedComment xmi:id="Package-unapplyProfile-profile-_ownedComment.0" annotatedElement="Package-unapplyProfile-profile">
-            <body>The profile to unapply.</body>
-          </ownedComment>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Package-applyProfiles" name="applyProfiles">
-        <ownedComment xmi:id="Package-applyProfiles-_ownedComment.0" annotatedElement="Package-applyProfiles">
-          <body>Applies the current definitions of the specified profiles to this package and automatically applies required stereotypes in the profiles to elements within this package's namespace hieararchy. If different definitions are already applied, automatically migrates any associated stereotype values on a &quot;best effort&quot; basis (matching classifiers and structural features by name).</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Package-applyProfiles-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:Class" href="Ecore.metamodel.uml#EObject"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Package-applyProfiles-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Package-applyProfiles-_ownedParameter.0-_upperValue" value="*"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Package-applyProfiles-profiles" name="profiles" type="Profile" effect="read">
-          <ownedComment xmi:id="Package-applyProfiles-profiles-_ownedComment.0" annotatedElement="Package-applyProfiles-profiles">
-            <body>The profiles to apply.</body>
-          </ownedComment>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Package-applyProfiles-profiles-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Package-allApplicableStereotypes" name="allApplicableStereotypes" bodyCondition="Package-allApplicableStereotypes-spec" isQuery="true">
-        <ownedComment xmi:id="Package-allApplicableStereotypes-_ownedComment.0" annotatedElement="Package-allApplicableStereotypes">
-          <body>The query allApplicableStereotypes() returns all the directly or indirectly owned stereotypes, including stereotypes contained in sub-profiles.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Package-allApplicableStereotypes-spec" name="spec" constrainedElement="Package-allApplicableStereotypes">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Package-allApplicableStereotypes-spec-_specification">
-            <language>OCL</language>
-            <body>result = (let ownedPackages : Bag(Package) = ownedMember->select(oclIsKindOf(Package))->collect(oclAsType(Package)) in&#xD;
- ownedStereotype->union(ownedPackages.allApplicableStereotypes())->flatten()->asSet()&#xD;
-)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Package-allApplicableStereotypes-result" name="result" type="Stereotype" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Package-allApplicableStereotypes-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Package-allApplicableStereotypes-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Package-containingProfile" name="containingProfile" bodyCondition="Package-containingProfile-spec" isQuery="true">
-        <ownedComment xmi:id="Package-containingProfile-_ownedComment.0" annotatedElement="Package-containingProfile">
-          <body>The query containingProfile() returns the closest profile directly or indirectly containing this package (or this package itself, if it is a profile).</body>
-        </ownedComment>
-        <ownedRule xmi:id="Package-containingProfile-spec" name="spec" constrainedElement="Package-containingProfile">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Package-containingProfile-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if self.oclIsKindOf(Profile) then &#xD;
-	self.oclAsType(Profile)&#xD;
-else&#xD;
-	self.namespace.oclAsType(Package).containingProfile()&#xD;
-endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Package-containingProfile-result" name="result" type="Profile" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Package-containingProfile-result-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Package-makesVisible" name="makesVisible" bodyCondition="Package-makesVisible-spec" isQuery="true" precondition="Package-makesVisible-pre">
-        <ownedComment xmi:id="Package-makesVisible-_ownedComment.0" annotatedElement="Package-makesVisible">
-          <body>The query makesVisible() defines whether a Package makes an element visible outside itself. Elements with no visibility and elements with public visibility are made visible.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Package-makesVisible-pre" name="pre" constrainedElement="Package-makesVisible">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Package-makesVisible-pre-_specification">
-            <language>OCL</language>
-            <body>member->includes(el)</body>
-          </specification>
-        </ownedRule>
-        <ownedRule xmi:id="Package-makesVisible-spec" name="spec" constrainedElement="Package-makesVisible">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Package-makesVisible-spec-_specification">
-            <language>OCL</language>
-            <body>result = (ownedMember->includes(el) or
-(elementImport->select(ei|ei.importedElement = VisibilityKind::public)->collect(importedElement.oclAsType(NamedElement))->includes(el)) or
-(packageImport->select(visibility = VisibilityKind::public)->collect(importedPackage.member->includes(el))->notEmpty()))</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Package-makesVisible-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Package-makesVisible-el" name="el" type="NamedElement"/>
-      </ownedOperation>
-      <ownedOperation xmi:id="Package-mustBeOwned" name="mustBeOwned" bodyCondition="Package-mustBeOwned-spec" isQuery="true" redefinedOperation="Element-mustBeOwned">
-        <ownedComment xmi:id="Package-mustBeOwned-_ownedComment.0" annotatedElement="Package-mustBeOwned">
-          <body>The query mustBeOwned() indicates whether elements of this type must have an owner.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Package-mustBeOwned-spec" name="spec" constrainedElement="Package-mustBeOwned">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Package-mustBeOwned-spec-_specification">
-            <language>OCL</language>
-            <body>result = (false)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Package-mustBeOwned-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Package-nestedPackage.1" name="nestedPackage" visibility="protected" bodyCondition="Package-nestedPackage.1-spec" isQuery="true">
-        <ownedComment xmi:id="Package-nestedPackage.1-_ownedComment.0" annotatedElement="Package-nestedPackage.1">
-          <body>Derivation for Package::/nestedPackage</body>
-        </ownedComment>
-        <ownedRule xmi:id="Package-nestedPackage.1-spec" name="spec" constrainedElement="Package-nestedPackage.1 Package-nestedPackage">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Package-nestedPackage.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (packagedElement->select(oclIsKindOf(Package))->collect(oclAsType(Package))->asSet())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Package-nestedPackage.1-result" name="result" type="Package" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Package-nestedPackage.1-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Package-nestedPackage.1-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Package-ownedStereotype.1" name="ownedStereotype" visibility="protected" bodyCondition="Package-ownedStereotype.1-spec" isQuery="true">
-        <ownedComment xmi:id="Package-ownedStereotype.1-_ownedComment.0" annotatedElement="Package-ownedStereotype.1">
-          <body>Derivation for Package::/ownedStereotype</body>
-        </ownedComment>
-        <ownedRule xmi:id="Package-ownedStereotype.1-spec" name="spec" constrainedElement="Package-ownedStereotype.1 Package-ownedStereotype">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Package-ownedStereotype.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (packagedElement->select(oclIsKindOf(Stereotype))->collect(oclAsType(Stereotype))->asSet())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Package-ownedStereotype.1-result" name="result" type="Stereotype" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Package-ownedStereotype.1-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Package-ownedStereotype.1-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Package-ownedType.1" name="ownedType" visibility="protected" bodyCondition="Package-ownedType.1-spec" isQuery="true">
-        <ownedComment xmi:id="Package-ownedType.1-_ownedComment.0" annotatedElement="Package-ownedType.1">
-          <body>Derivation for Package::/ownedType</body>
-        </ownedComment>
-        <ownedRule xmi:id="Package-ownedType.1-spec" name="spec" constrainedElement="Package-ownedType.1 Package-ownedType">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Package-ownedType.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (packagedElement->select(oclIsKindOf(Type))->collect(oclAsType(Type))->asSet())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Package-ownedType.1-result" name="result" type="Type" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Package-ownedType.1-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Package-ownedType.1-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Package-visibleMembers" name="visibleMembers" bodyCondition="Package-visibleMembers-spec" isQuery="true">
-        <ownedComment xmi:id="Package-visibleMembers-_ownedComment.0" annotatedElement="Package-visibleMembers">
-          <body>The query visibleMembers() defines which members of a Package can be accessed outside it.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Package-visibleMembers-spec" name="spec" constrainedElement="Package-visibleMembers">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Package-visibleMembers-spec-_specification">
-            <language>OCL</language>
-            <body>result = (member->select( m | m.oclIsKindOf(PackageableElement) and self.makesVisible(m))->collect(oclAsType(PackageableElement))->asSet())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Package-visibleMembers-result" name="result" type="PackageableElement" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Package-visibleMembers-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Package-visibleMembers-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="PackageMerge" name="PackageMerge">
-      <ownedComment xmi:id="PackageMerge-_ownedComment.0" annotatedElement="PackageMerge">
-        <body>A package merge defines how the contents of one package are extended by the contents of another package.</body>
-      </ownedComment>
-      <generalization xmi:id="PackageMerge-_generalization.0" general="DirectedRelationship"/>
-      <ownedAttribute xmi:id="PackageMerge-mergedPackage" name="mergedPackage" type="Package" subsettedProperty="DirectedRelationship-target" association="A_mergedPackage_packageMerge">
-        <ownedComment xmi:id="PackageMerge-mergedPackage-_ownedComment.0" annotatedElement="PackageMerge-mergedPackage">
-          <body>References the Package that is to be merged with the receiving package of the PackageMerge.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="PackageMerge-receivingPackage" name="receivingPackage" type="Package" subsettedProperty="DirectedRelationship-source Element-owner" association="A_packageMerge_receivingPackage">
-        <ownedComment xmi:id="PackageMerge-receivingPackage-_ownedComment.0" annotatedElement="PackageMerge-receivingPackage">
-          <body>References the Package that is being extended with the contents of the merged package of the PackageMerge.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Profile" name="Profile">
-      <ownedComment xmi:id="Profile-_ownedComment.0" annotatedElement="Profile">
-        <body>A profile defines limited extensions to a reference metamodel with the purpose of adapting the metamodel to a specific platform or domain.</body>
-      </ownedComment>
-      <ownedRule xmi:id="Profile-metaclass_reference_not_specialized" name="metaclass_reference_not_specialized" constrainedElement="Profile">
-        <ownedComment xmi:id="Profile-metaclass_reference_not_specialized-_ownedComment.0" annotatedElement="Profile-metaclass_reference_not_specialized">
-          <body>An element imported as a metaclassReference is not specialized or generalized in a Profile.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Profile-metaclass_reference_not_specialized-_specification">
-          <language>OCL</language>
-          <body>metaclassReference.importedElement->&#xD;
-	select(c | c.oclIsKindOf(Classifier) and&#xD;
-		(c.oclAsType(Classifier).allParents()->collect(namespace)->includes(self)))->isEmpty()&#xD;
-and &#xD;
-packagedElement->&#xD;
-    select(oclIsKindOf(Classifier))->collect(oclAsType(Classifier).allParents())->&#xD;
-       intersection(metaclassReference.importedElement->select(oclIsKindOf(Classifier))->collect(oclAsType(Classifier)))->isEmpty()</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Profile-references_same_metamodel" name="references_same_metamodel" constrainedElement="Profile">
-        <ownedComment xmi:id="Profile-references_same_metamodel-_ownedComment.0" annotatedElement="Profile-references_same_metamodel">
-          <body>All elements imported either as metaclassReferences or through metamodelReferences are members of the same base reference metamodel.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Profile-references_same_metamodel-_specification">
-          <language>OCL</language>
-          <body>metamodelReference.importedPackage.elementImport.importedElement.allOwningPackages()->&#xD;
-  union(metaclassReference.importedElement.allOwningPackages() )->notEmpty()</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="Profile-_generalization.0" general="Package"/>
-      <ownedAttribute xmi:id="Profile-metaclassReference" name="metaclassReference" type="ElementImport" aggregation="composite" subsettedProperty="Namespace-elementImport" association="A_metaclassReference_profile">
-        <ownedComment xmi:id="Profile-metaclassReference-_ownedComment.0" annotatedElement="Profile-metaclassReference">
-          <body>References a metaclass that may be extended.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Profile-metaclassReference-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Profile-metaclassReference-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Profile-metamodelReference" name="metamodelReference" type="PackageImport" aggregation="composite" subsettedProperty="Namespace-packageImport" association="A_metamodelReference_profile">
-        <ownedComment xmi:id="Profile-metamodelReference-_ownedComment.0" annotatedElement="Profile-metamodelReference">
-          <body>References a package containing (directly or indirectly) metaclasses that may be extended.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Profile-metamodelReference-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Profile-metamodelReference-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="Profile-create" name="create">
-        <ownedComment xmi:id="Profile-create-_ownedComment.0" annotatedElement="Profile-create">
-          <body>Creates and returns an instance of (the Ecore representation of) the specified classifier defined in this profile.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Profile-create-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:Class" href="Ecore.metamodel.uml#EObject"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Profile-create-classifier" name="classifier" type="Classifier" effect="read">
-          <ownedComment xmi:id="Profile-create-classifier-_ownedComment.0" annotatedElement="Profile-create-classifier">
-            <body>The classifier of which to create an instance.</body>
-          </ownedComment>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Profile-define" name="define">
-        <ownedComment xmi:id="Profile-define-_ownedComment.0" annotatedElement="Profile-define">
-          <body>Defines this profile by (re)creating Ecore representations of its current contents.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Profile-define-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:Class" href="Ecore.metamodel.uml#EPackage"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Profile-define-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Profile-define-_ownedParameter.0-_upperValue" value="1"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Profile-define.1" name="define">
-        <ownedComment xmi:id="Profile-define.1-_ownedComment.0" annotatedElement="Profile-define.1">
-          <body>Defines this profile by (re)creating Ecore representations of its current contents, using the specified options, diagnostics, and context.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Profile-define.1-_ownedParameter.0" name="" direction="return">
-          <type xmi:type="uml:Class" href="Ecore.metamodel.uml#EPackage"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Profile-define.1-options" name="options" type="Profile-EMap_EString_EString">
-          <ownedComment xmi:id="Profile-define.1-options-_ownedComment.0" annotatedElement="Profile-define.1-options">
-            <body>The options to use.</body>
-          </ownedComment>
-        </ownedParameter>
-        <ownedParameter xmi:id="Profile-define.1-diagnostics" name="diagnostics">
-          <ownedComment xmi:id="Profile-define.1-diagnostics-_ownedComment.0" annotatedElement="Profile-define.1-diagnostics">
-            <body>The chain of diagnostics to which problems are to be appended.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="Ecore.metamodel.uml#EDiagnosticChain"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Profile-define.1-context" name="context" type="Profile-EMap_EJavaObject_EJavaObject">
-          <ownedComment xmi:id="Profile-define.1-context-_ownedComment.0" annotatedElement="Profile-define.1-context">
-            <body>The cache of context-specific information.</body>
-          </ownedComment>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Profile-getDefinition" name="getDefinition" isQuery="true">
-        <ownedComment xmi:id="Profile-getDefinition-_ownedComment.0" annotatedElement="Profile-getDefinition">
-          <body>Retrieves the current definition (Ecore representation) of this profile.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Profile-getDefinition-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:Class" href="Ecore.metamodel.uml#EPackage"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Profile-getDefinition-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Profile-getDefinition-_ownedParameter.0-_upperValue" value="1"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Profile-getDefinition.1" name="getDefinition" isQuery="true">
-        <ownedComment xmi:id="Profile-getDefinition.1-_ownedComment.0" annotatedElement="Profile-getDefinition.1">
-          <body>Retrieves the current definition (Ecore representation) of the specified named element in this profile.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Profile-getDefinition.1-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:Class" href="Ecore.metamodel.uml#ENamedElement"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Profile-getDefinition.1-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Profile-getDefinition.1-_ownedParameter.0-_upperValue" value="1"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Profile-getDefinition.1-namedElement" name="namedElement" type="NamedElement" effect="read">
-          <ownedComment xmi:id="Profile-getDefinition.1-namedElement-_ownedComment.0" annotatedElement="Profile-getDefinition.1-namedElement">
-            <body>The named element whose definition to retrieve.</body>
-          </ownedComment>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Profile-getOwnedExtensions" name="getOwnedExtensions" isQuery="true">
-        <ownedComment xmi:id="Profile-getOwnedExtensions-_ownedComment.0" annotatedElement="Profile-getOwnedExtensions">
-          <body>Retrieves the extensions owned by this profile, excluding non-required extensions if indicated.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Profile-getOwnedExtensions-_ownedParameter.0" type="Extension" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Profile-getOwnedExtensions-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Profile-getOwnedExtensions-_ownedParameter.0-_upperValue" value="*"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Profile-getOwnedExtensions-requiredOnly" name="requiredOnly" effect="read">
-          <ownedComment xmi:id="Profile-getOwnedExtensions-requiredOnly-_ownedComment.0" annotatedElement="Profile-getOwnedExtensions-requiredOnly">
-            <body>Whether to retrieve only required extensions.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Profile-getReferencedMetaclasses" name="getReferencedMetaclasses" isQuery="true">
-        <ownedComment xmi:id="Profile-getReferencedMetaclasses-_ownedComment.0" annotatedElement="Profile-getReferencedMetaclasses">
-          <body>Retrieves the metaclasses referenced by this profile.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Profile-getReferencedMetaclasses-_ownedParameter.0" type="Class" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Profile-getReferencedMetaclasses-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Profile-getReferencedMetaclasses-_ownedParameter.0-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Profile-getReferencedMetamodels" name="getReferencedMetamodels" isQuery="true">
-        <ownedComment xmi:id="Profile-getReferencedMetamodels-_ownedComment.0" annotatedElement="Profile-getReferencedMetamodels">
-          <body>Retrieves the metamodels referenced by this profile.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Profile-getReferencedMetamodels-_ownedParameter.0" type="Model" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Profile-getReferencedMetamodels-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Profile-getReferencedMetamodels-_ownedParameter.0-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Profile-isDefined" name="isDefined" isQuery="true">
-        <ownedComment xmi:id="Profile-isDefined-_ownedComment.0" annotatedElement="Profile-isDefined">
-          <body>Determines whether this profile is defined.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Profile-isDefined-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <nestedClassifier xmi:type="uml:PrimitiveType" xmi:id="Profile-EMap_EJavaObject_EJavaObject" name="EMap_EJavaObject_EJavaObject">
-        <templateBinding xmi:id="Profile-EMap_EJavaObject_EJavaObject-_templateBinding.0">
-          <parameterSubstitution xmi:id="Profile-EMap_EJavaObject_EJavaObject-_templateBinding.0-_parameterSubstitution.0">
-            <actual xmi:type="uml:PrimitiveType" href="Ecore.metamodel.uml#EJavaObject"/>
-            <formal xmi:type="uml:ClassifierTemplateParameter" href="Ecore.metamodel.uml#EMap-_ownedTemplateSignature-_ownedParameter.0"/>
-          </parameterSubstitution>
-          <parameterSubstitution xmi:id="Profile-EMap_EJavaObject_EJavaObject-_templateBinding.0-_parameterSubstitution.1">
-            <actual xmi:type="uml:PrimitiveType" href="Ecore.metamodel.uml#EJavaObject"/>
-            <formal xmi:type="uml:ClassifierTemplateParameter" href="Ecore.metamodel.uml#EMap-_ownedTemplateSignature-_ownedParameter.1"/>
-          </parameterSubstitution>
-          <signature xmi:type="uml:RedefinableTemplateSignature" href="Ecore.metamodel.uml#EMap-_ownedTemplateSignature"/>
-        </templateBinding>
-      </nestedClassifier>
-      <nestedClassifier xmi:type="uml:PrimitiveType" xmi:id="Profile-EMap_EString_EString" name="EMap_EString_EString">
-        <templateBinding xmi:id="Profile-EMap_EString_EString-_templateBinding.0">
-          <parameterSubstitution xmi:id="Profile-EMap_EString_EString-_templateBinding.0-_parameterSubstitution.0">
-            <actual xmi:type="uml:PrimitiveType" href="Ecore.metamodel.uml#EString"/>
-            <formal xmi:type="uml:ClassifierTemplateParameter" href="Ecore.metamodel.uml#EMap-_ownedTemplateSignature-_ownedParameter.0"/>
-          </parameterSubstitution>
-          <parameterSubstitution xmi:id="Profile-EMap_EString_EString-_templateBinding.0-_parameterSubstitution.1">
-            <actual xmi:type="uml:PrimitiveType" href="Ecore.metamodel.uml#EString"/>
-            <formal xmi:type="uml:ClassifierTemplateParameter" href="Ecore.metamodel.uml#EMap-_ownedTemplateSignature-_ownedParameter.1"/>
-          </parameterSubstitution>
-          <signature xmi:type="uml:RedefinableTemplateSignature" href="Ecore.metamodel.uml#EMap-_ownedTemplateSignature"/>
-        </templateBinding>
-      </nestedClassifier>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ProfileApplication" name="ProfileApplication">
-      <ownedComment xmi:id="ProfileApplication-_ownedComment.0" annotatedElement="ProfileApplication">
-        <body>A profile application is used to show which profiles have been applied to a package.</body>
-      </ownedComment>
-      <generalization xmi:id="ProfileApplication-_generalization.0" general="DirectedRelationship"/>
-      <ownedAttribute xmi:id="ProfileApplication-appliedProfile" name="appliedProfile" type="Profile" subsettedProperty="DirectedRelationship-target" association="A_appliedProfile_profileApplication">
-        <ownedComment xmi:id="ProfileApplication-appliedProfile-_ownedComment.0" annotatedElement="ProfileApplication-appliedProfile">
-          <body>References the Profiles that are applied to a Package through this ProfileApplication.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ProfileApplication-applyingPackage" name="applyingPackage" type="Package" subsettedProperty="DirectedRelationship-source Element-owner" association="A_profileApplication_applyingPackage">
-        <ownedComment xmi:id="ProfileApplication-applyingPackage-_ownedComment.0" annotatedElement="ProfileApplication-applyingPackage">
-          <body>The package that owns the profile application.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ProfileApplication-isStrict" name="isStrict">
-        <ownedComment xmi:id="ProfileApplication-isStrict-_ownedComment.0" annotatedElement="ProfileApplication-isStrict">
-          <body>Specifies that the Profile filtering rules for the metaclasses of the referenced metamodel shall be strictly applied.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="ProfileApplication-isStrict-_defaultValue"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="ProfileApplication-getAppliedDefinition" name="getAppliedDefinition" isQuery="true">
-        <ownedComment xmi:id="ProfileApplication-getAppliedDefinition-_ownedComment.0" annotatedElement="ProfileApplication-getAppliedDefinition">
-          <body>Retrieves the definition (Ecore representation) of the profile associated with this profile application.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="ProfileApplication-getAppliedDefinition-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:Class" href="Ecore.metamodel.uml#EPackage"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ProfileApplication-getAppliedDefinition-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ProfileApplication-getAppliedDefinition-_ownedParameter.0-_upperValue" value="1"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="ProfileApplication-getAppliedDefinition.1" name="getAppliedDefinition" isQuery="true">
-        <ownedComment xmi:id="ProfileApplication-getAppliedDefinition.1-_ownedComment.0" annotatedElement="ProfileApplication-getAppliedDefinition.1">
-          <body>Retrieves the definition (Ecore representation) of the specified named element in the profile associated with this profile application.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="ProfileApplication-getAppliedDefinition.1-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:Class" href="Ecore.metamodel.uml#ENamedElement"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ProfileApplication-getAppliedDefinition.1-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ProfileApplication-getAppliedDefinition.1-_ownedParameter.0-_upperValue" value="1"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="ProfileApplication-getAppliedDefinition.1-namedElement" name="namedElement" type="NamedElement" effect="read">
-          <ownedComment xmi:id="ProfileApplication-getAppliedDefinition.1-namedElement-_ownedComment.0" annotatedElement="ProfileApplication-getAppliedDefinition.1-namedElement">
-            <body>The named element for which to retrieve the applied definition.</body>
-          </ownedComment>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Stereotype" name="Stereotype">
-      <ownedComment xmi:id="Stereotype-_ownedComment.0" annotatedElement="Stereotype">
-        <body>A stereotype defines how an existing metaclass may be extended, and enables the use of platform or domain specific terminology or notation in place of, or in addition to, the ones used for the extended metaclass.</body>
-      </ownedComment>
-      <ownedRule xmi:id="Stereotype-binaryAssociationsOnly" name="binaryAssociationsOnly" constrainedElement="Stereotype">
-        <ownedComment xmi:id="Stereotype-binaryAssociationsOnly-_ownedComment.0" annotatedElement="Stereotype-binaryAssociationsOnly">
-          <body>Stereotypes may only participate in binary associations.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Stereotype-binaryAssociationsOnly-_specification">
-          <language>OCL</language>
-          <body>ownedAttribute.association->forAll(memberEnd->size()=2)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Stereotype-generalize" name="generalize" constrainedElement="Stereotype">
-        <ownedComment xmi:id="Stereotype-generalize-_ownedComment.0" annotatedElement="Stereotype-generalize">
-          <body>A Stereotype may only generalize or specialize another Stereotype.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Stereotype-generalize-_specification">
-          <language>OCL</language>
-          <body>allParents()->forAll(oclIsKindOf(Stereotype)) &#xD;
-and Classifier.allInstances()->forAll(c | c.allParents()->exists(oclIsKindOf(Stereotype)) implies c.oclIsKindOf(Stereotype))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Stereotype-name_not_clash" name="name_not_clash" constrainedElement="Stereotype">
-        <ownedComment xmi:id="Stereotype-name_not_clash-_ownedComment.0" annotatedElement="Stereotype-name_not_clash">
-          <body>Stereotype names should not clash with keyword names for the extended model element.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Stereotype-name_not_clash-_specification" language=""/>
-      </ownedRule>
-      <ownedRule xmi:id="Stereotype-associationEndOwnership" name="associationEndOwnership" constrainedElement="Stereotype">
-        <ownedComment xmi:id="Stereotype-associationEndOwnership-_ownedComment.0" annotatedElement="Stereotype-associationEndOwnership">
-          <body>Where a stereotype’s property is an association end for an association other than a kind of extension, and the other end is not a stereotype, the other end must be owned by the association itself.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Stereotype-associationEndOwnership-_specification">
-          <language>OCL</language>
-          <body>ownedAttribute&#xD;
-->select(association->notEmpty() and not association.oclIsKindOf(Extension) and not type.oclIsKindOf(Stereotype))&#xD;
-->forAll(opposite.owner = association)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Stereotype-base_property_upper_bound" name="base_property_upper_bound" constrainedElement="Stereotype">
-        <ownedComment xmi:id="Stereotype-base_property_upper_bound-_ownedComment.0" annotatedElement="Stereotype-base_property_upper_bound">
-          <body>The upper bound of base-properties is exactly 1.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Stereotype-base_property_upper_bound-_specification" language=""/>
-      </ownedRule>
-      <ownedRule xmi:id="Stereotype-base_property_multiplicity_single_extension" name="base_property_multiplicity_single_extension" constrainedElement="Stereotype">
-        <ownedComment xmi:id="Stereotype-base_property_multiplicity_single_extension-_ownedComment.0" annotatedElement="Stereotype-base_property_multiplicity_single_extension">
-          <body>If a Stereotype extends only one metaclass, the multiplicity of the corresponding base-property shall be 1..1.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Stereotype-base_property_multiplicity_single_extension-_specification"/>
-      </ownedRule>
-      <ownedRule xmi:id="Stereotype-base_property_multiplicity_multiple_extension" name="base_property_multiplicity_multiple_extension" constrainedElement="Stereotype">
-        <ownedComment xmi:id="Stereotype-base_property_multiplicity_multiple_extension-_ownedComment.0" annotatedElement="Stereotype-base_property_multiplicity_multiple_extension">
-          <body>If a Stereotype extends more than one metaclass, the multiplicity of the corresponding base-properties shall be [0..1]. At any point in time, only one of these base-properties can contain a metaclass instance during runtime.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Stereotype-base_property_multiplicity_multiple_extension-_specification"/>
-      </ownedRule>
-      <generalization xmi:id="Stereotype-_generalization.0" general="Class"/>
-      <ownedAttribute xmi:id="Stereotype-icon" name="icon" type="Image" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_icon_stereotype">
-        <ownedComment xmi:id="Stereotype-icon-_ownedComment.0" annotatedElement="Stereotype-icon">
-          <body>Stereotype can change the graphical appearance of the extended model element by using attached icons. When this association is not null, it references the location of the icon content to be displayed within diagrams presenting the extended model elements.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Stereotype-icon-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Stereotype-icon-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Stereotype-profile" name="profile" type="Profile" isReadOnly="true" isDerived="true" association="A_profile_stereotype">
-        <ownedComment xmi:id="Stereotype-profile-_ownedComment.0" annotatedElement="Stereotype-profile">
-          <body>The profile that directly or indirectly contains this stereotype.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedOperation xmi:id="Stereotype-createExtension" name="createExtension">
-        <ownedComment xmi:id="Stereotype-createExtension-_ownedComment.0" annotatedElement="Stereotype-createExtension">
-          <body>Creates a(n) (required) extension of the specified metaclass with this stereotype.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Stereotype-createExtension-_ownedParameter.0" type="Extension" direction="return"/>
-        <ownedParameter xmi:id="Stereotype-createExtension-metaclass" name="metaclass" type="Class" effect="read">
-          <ownedComment xmi:id="Stereotype-createExtension-metaclass-_ownedComment.0" annotatedElement="Stereotype-createExtension-metaclass">
-            <body>The metaclass for the new extension.</body>
-          </ownedComment>
-        </ownedParameter>
-        <ownedParameter xmi:id="Stereotype-createExtension-isRequired" name="isRequired" effect="read">
-          <ownedComment xmi:id="Stereotype-createExtension-isRequired-_ownedComment.0" annotatedElement="Stereotype-createExtension-isRequired">
-            <body>Whether the new extension should be required.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Stereotype-createIcon" name="createIcon">
-        <ownedComment xmi:id="Stereotype-createIcon-_ownedComment.0" annotatedElement="Stereotype-createIcon">
-          <body>Creates an icon with the specified location for this stereotype.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Stereotype-createIcon-_ownedParameter.0" type="Image" direction="return"/>
-        <ownedParameter xmi:id="Stereotype-createIcon-location" name="location" effect="read">
-          <ownedComment xmi:id="Stereotype-createIcon-location-_ownedComment.0" annotatedElement="Stereotype-createIcon-location">
-            <body>The location for the new icon.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Stereotype-createIcon.1" name="createIcon">
-        <ownedComment xmi:id="Stereotype-createIcon.1-_ownedComment.0" annotatedElement="Stereotype-createIcon.1">
-          <body>Creates an icon with the specified format and content for this stereotype.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Stereotype-createIcon.1-_ownedParameter.0" type="Image" direction="return"/>
-        <ownedParameter xmi:id="Stereotype-createIcon.1-format" name="format" effect="read">
-          <ownedComment xmi:id="Stereotype-createIcon.1-format-_ownedComment.0" annotatedElement="Stereotype-createIcon.1-format">
-            <body>The format for the new icon.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Stereotype-createIcon.1-content" name="content" effect="read">
-          <ownedComment xmi:id="Stereotype-createIcon.1-content-_ownedComment.0" annotatedElement="Stereotype-createIcon.1-content">
-            <body>The content for the new icon.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Stereotype-getAllExtendedMetaclasses" name="getAllExtendedMetaclasses" isQuery="true">
-        <ownedComment xmi:id="Stereotype-getAllExtendedMetaclasses-_ownedComment.0" annotatedElement="Stereotype-getAllExtendedMetaclasses">
-          <body>Retrieves all the metaclasses extended by this stereotype, including the metaclasses extended by its superstereotypes.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Stereotype-getAllExtendedMetaclasses-_ownedParameter.0" type="Class" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Stereotype-getAllExtendedMetaclasses-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Stereotype-getAllExtendedMetaclasses-_ownedParameter.0-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Stereotype-getDefinition" name="getDefinition" isQuery="true">
-        <ownedComment xmi:id="Stereotype-getDefinition-_ownedComment.0" annotatedElement="Stereotype-getDefinition">
-          <body>Retrieves the current definition (Ecore representation) of this stereotype.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Stereotype-getDefinition-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:Class" href="Ecore.metamodel.uml#EClass"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Stereotype-getDefinition-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Stereotype-getDefinition-_ownedParameter.0-_upperValue" value="1"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Stereotype-getExtendedMetaclasses" name="getExtendedMetaclasses" isQuery="true">
-        <ownedComment xmi:id="Stereotype-getExtendedMetaclasses-_ownedComment.0" annotatedElement="Stereotype-getExtendedMetaclasses">
-          <body>Retrieves the metaclasses extended by this stereotype.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Stereotype-getExtendedMetaclasses-_ownedParameter.0" type="Class" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Stereotype-getExtendedMetaclasses-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Stereotype-getExtendedMetaclasses-_ownedParameter.0-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Stereotype-getKeyword" name="getKeyword" isQuery="true">
-        <ownedComment xmi:id="Stereotype-getKeyword-_ownedComment.0" annotatedElement="Stereotype-getKeyword">
-          <body>Retrieves the localized keyword for this stereotype.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Stereotype-getKeyword-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Stereotype-getKeyword.1" name="getKeyword" isQuery="true">
-        <ownedComment xmi:id="Stereotype-getKeyword.1-_ownedComment.0" annotatedElement="Stereotype-getKeyword.1">
-          <body>Retrieves the keyword for this stereotype, localized if indicated.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Stereotype-getKeyword.1-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Stereotype-getKeyword.1-localize" name="localize" effect="read">
-          <ownedComment xmi:id="Stereotype-getKeyword.1-localize-_ownedComment.0" annotatedElement="Stereotype-getKeyword.1-localize">
-            <body>Whether to localize the keyword.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Stereotype-containingProfile" name="containingProfile" bodyCondition="Stereotype-containingProfile-spec" isQuery="true">
-        <ownedComment xmi:id="Stereotype-containingProfile-_ownedComment.0" annotatedElement="Stereotype-containingProfile">
-          <body>The query containingProfile returns the closest profile directly or indirectly containing this stereotype.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Stereotype-containingProfile-spec" name="spec" constrainedElement="Stereotype-containingProfile">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Stereotype-containingProfile-spec-_specification">
-            <language>OCL</language>
-            <body>result = (self.namespace.oclAsType(Package).containingProfile())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Stereotype-containingProfile-result" name="result" type="Profile" direction="return"/>
-      </ownedOperation>
-      <ownedOperation xmi:id="Stereotype-profile.1" name="profile" visibility="protected" bodyCondition="Stereotype-profile.1-spec" isQuery="true">
-        <ownedComment xmi:id="Stereotype-profile.1-_ownedComment.0" annotatedElement="Stereotype-profile.1">
-          <body>A stereotype must be contained, directly or indirectly, in a profile.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Stereotype-profile.1-spec" name="spec" constrainedElement="Stereotype-profile.1 Stereotype-profile">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Stereotype-profile.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (self.containingProfile())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Stereotype-profile.1-result" name="result" type="Profile" direction="return"/>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_profile_stereotype" name="A_profile_stereotype" visibility="private" isDerived="true" memberEnd="Stereotype-profile A_profile_stereotype-stereotype">
-      <ownedEnd xmi:id="A_profile_stereotype-stereotype" name="stereotype" type="Stereotype" association="A_profile_stereotype">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_profile_stereotype-stereotype-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_profile_stereotype-stereotype-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_icon_stereotype" name="A_icon_stereotype" visibility="private" memberEnd="Stereotype-icon A_icon_stereotype-stereotype">
-      <ownedEnd xmi:id="A_icon_stereotype-stereotype" name="stereotype" type="Stereotype" subsettedProperty="Element-owner" association="A_icon_stereotype">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_icon_stereotype-stereotype-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_appliedProfile_profileApplication" name="A_appliedProfile_profileApplication" visibility="private" memberEnd="ProfileApplication-appliedProfile A_appliedProfile_profileApplication-profileApplication">
-      <ownedEnd xmi:id="A_appliedProfile_profileApplication-profileApplication" name="profileApplication" type="ProfileApplication" subsettedProperty="A_target_directedRelationship-directedRelationship" association="A_appliedProfile_profileApplication">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_appliedProfile_profileApplication-profileApplication-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_appliedProfile_profileApplication-profileApplication-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_metaclassReference_profile" name="A_metaclassReference_profile" visibility="private" memberEnd="Profile-metaclassReference A_metaclassReference_profile-profile">
-      <ownedEnd xmi:id="A_metaclassReference_profile-profile" name="profile" type="Profile" subsettedProperty="ElementImport-importingNamespace" association="A_metaclassReference_profile">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_metaclassReference_profile-profile-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_metamodelReference_profile" name="A_metamodelReference_profile" visibility="private" memberEnd="Profile-metamodelReference A_metamodelReference_profile-profile">
-      <ownedEnd xmi:id="A_metamodelReference_profile-profile" name="profile" type="Profile" subsettedProperty="PackageImport-importingNamespace" association="A_metamodelReference_profile">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_metamodelReference_profile-profile-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_mergedPackage_packageMerge" name="A_mergedPackage_packageMerge" visibility="private" memberEnd="PackageMerge-mergedPackage A_mergedPackage_packageMerge-packageMerge">
-      <ownedEnd xmi:id="A_mergedPackage_packageMerge-packageMerge" name="packageMerge" type="PackageMerge" subsettedProperty="A_target_directedRelationship-directedRelationship" association="A_mergedPackage_packageMerge">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_mergedPackage_packageMerge-packageMerge-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_mergedPackage_packageMerge-packageMerge-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_packagedElement_owningPackage" name="A_packagedElement_owningPackage" visibility="private" memberEnd="Package-packagedElement A_packagedElement_owningPackage-owningPackage">
-      <ownedEnd xmi:id="A_packagedElement_owningPackage-owningPackage" name="owningPackage" type="Package" subsettedProperty="NamedElement-namespace" association="A_packagedElement_owningPackage">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_packagedElement_owningPackage-owningPackage-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_packageMerge_receivingPackage" name="A_packageMerge_receivingPackage" visibility="private" memberEnd="Package-packageMerge PackageMerge-receivingPackage"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_nestedPackage_nestingPackage" name="A_nestedPackage_nestingPackage" visibility="private" memberEnd="Package-nestedPackage Package-nestingPackage"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_profileApplication_applyingPackage" name="A_profileApplication_applyingPackage" visibility="private" memberEnd="Package-profileApplication ProfileApplication-applyingPackage"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedType_package" name="A_ownedType_package" visibility="private" memberEnd="Package-ownedType Type-package"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedStereotype_owningPackage" name="A_ownedStereotype_owningPackage" visibility="private" isDerived="true" memberEnd="Package-ownedStereotype A_ownedStereotype_owningPackage-owningPackage">
-      <generalization xmi:id="A_ownedStereotype_owningPackage-_generalization.0" general="A_packagedElement_owningPackage"/>
-      <ownedEnd xmi:id="A_ownedStereotype_owningPackage-owningPackage" name="owningPackage" type="Package" redefinedProperty="A_packagedElement_owningPackage-owningPackage" association="A_ownedStereotype_owningPackage"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_type_extensionEnd" name="A_type_extensionEnd" visibility="private" memberEnd="ExtensionEnd-type A_type_extensionEnd-extensionEnd">
-      <ownedEnd xmi:id="A_type_extensionEnd-extensionEnd" name="extensionEnd" type="ExtensionEnd" subsettedProperty="A_type_typedElement-typedElement" association="A_type_extensionEnd">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_type_extensionEnd-extensionEnd-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_type_extensionEnd-extensionEnd-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedEnd_extension" name="A_ownedEnd_extension" visibility="private" memberEnd="Extension-ownedEnd A_ownedEnd_extension-extension">
-      <ownedEnd xmi:id="A_ownedEnd_extension-extension" name="extension" type="Extension" subsettedProperty="Property-owningAssociation" association="A_ownedEnd_extension"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="BehavioredClassifier" name="BehavioredClassifier" isAbstract="true">
-      <ownedComment xmi:id="BehavioredClassifier-_ownedComment.0" annotatedElement="BehavioredClassifier">
-        <body>A BehavioredClassifier may have InterfaceRealizations, and owns a set of Behaviors one of which may specify the behavior of the BehavioredClassifier itself.</body>
-      </ownedComment>
-      <ownedRule xmi:id="BehavioredClassifier-class_behavior" name="class_behavior" constrainedElement="BehavioredClassifier">
-        <ownedComment xmi:id="BehavioredClassifier-class_behavior-_ownedComment.0" annotatedElement="BehavioredClassifier-class_behavior">
-          <body>If a behavior is classifier behavior, it does not have a specification.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="BehavioredClassifier-class_behavior-_specification">
-          <language>OCL</language>
-          <body>classifierBehavior->notEmpty() implies classifierBehavior.specification->isEmpty()</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="BehavioredClassifier-_generalization.0" general="Classifier"/>
-      <ownedAttribute xmi:id="BehavioredClassifier-classifierBehavior" name="classifierBehavior" type="Behavior" subsettedProperty="BehavioredClassifier-ownedBehavior" association="A_classifierBehavior_behavioredClassifier">
-        <ownedComment xmi:id="BehavioredClassifier-classifierBehavior-_ownedComment.0" annotatedElement="BehavioredClassifier-classifierBehavior">
-          <body>A Behavior that specifies the behavior of the BehavioredClassifier itself.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BehavioredClassifier-classifierBehavior-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="BehavioredClassifier-interfaceRealization" name="interfaceRealization" type="InterfaceRealization" aggregation="composite" subsettedProperty="Element-ownedElement NamedElement-clientDependency" association="A_interfaceRealization_implementingClassifier">
-        <ownedComment xmi:id="BehavioredClassifier-interfaceRealization-_ownedComment.0" annotatedElement="BehavioredClassifier-interfaceRealization">
-          <body>The set of InterfaceRealizations owned by the BehavioredClassifier. Interface realizations reference the Interfaces of which the BehavioredClassifier is an implementation.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BehavioredClassifier-interfaceRealization-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="BehavioredClassifier-interfaceRealization-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="BehavioredClassifier-ownedBehavior" name="ownedBehavior" type="Behavior" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_ownedBehavior_behavioredClassifier">
-        <ownedComment xmi:id="BehavioredClassifier-ownedBehavior-_ownedComment.0" annotatedElement="BehavioredClassifier-ownedBehavior">
-          <body>Behaviors owned by a BehavioredClassifier.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BehavioredClassifier-ownedBehavior-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="BehavioredClassifier-ownedBehavior-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="BehavioredClassifier-getAllImplementedInterfaces" name="getAllImplementedInterfaces">
-        <ownedComment xmi:id="BehavioredClassifier-getAllImplementedInterfaces-_ownedComment.0" annotatedElement="BehavioredClassifier-getAllImplementedInterfaces">
-          <body>Retrieves all the interfaces on which this behaviored classifier or any of its parents has an interface realization dependency.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="BehavioredClassifier-getAllImplementedInterfaces-_ownedParameter.0" type="Interface" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BehavioredClassifier-getAllImplementedInterfaces-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="BehavioredClassifier-getAllImplementedInterfaces-_ownedParameter.0-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="BehavioredClassifier-getImplementedInterfaces" name="getImplementedInterfaces">
-        <ownedComment xmi:id="BehavioredClassifier-getImplementedInterfaces-_ownedComment.0" annotatedElement="BehavioredClassifier-getImplementedInterfaces">
-          <body>Retrieves the interfaces on which this behaviored classifier has an interface realization dependency.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="BehavioredClassifier-getImplementedInterfaces-_ownedParameter.0" type="Interface" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BehavioredClassifier-getImplementedInterfaces-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="BehavioredClassifier-getImplementedInterfaces-_ownedParameter.0-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="DataType" name="DataType">
-      <ownedComment xmi:id="DataType-_ownedComment.0" annotatedElement="DataType">
-        <body>A DataType is a type whose instances are identified only by their value.</body>
-      </ownedComment>
-      <generalization xmi:id="DataType-_generalization.0" general="Classifier"/>
-      <ownedAttribute xmi:id="DataType-ownedAttribute" name="ownedAttribute" type="Property" isOrdered="true" aggregation="composite" subsettedProperty="Classifier-attribute Namespace-ownedMember" association="A_ownedAttribute_datatype">
-        <ownedComment xmi:id="DataType-ownedAttribute-_ownedComment.0" annotatedElement="DataType-ownedAttribute">
-          <body>The attributes owned by the DataType.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="DataType-ownedAttribute-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DataType-ownedAttribute-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="DataType-ownedOperation" name="ownedOperation" type="Operation" isOrdered="true" aggregation="composite" subsettedProperty="A_redefinitionContext_redefinableElement-redefinableElement Classifier-feature Namespace-ownedMember" association="A_ownedOperation_datatype">
-        <ownedComment xmi:id="DataType-ownedOperation-_ownedComment.0" annotatedElement="DataType-ownedOperation">
-          <body>The Operations owned by the DataType.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="DataType-ownedOperation-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DataType-ownedOperation-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="DataType-createOwnedAttribute" name="createOwnedAttribute">
-        <ownedComment xmi:id="DataType-createOwnedAttribute-_ownedComment.0" annotatedElement="DataType-createOwnedAttribute">
-          <body>Creates a property with the specified name, type, lower bound, and upper bound as an owned attribute of this data type.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="DataType-createOwnedAttribute-_ownedParameter.0" type="Property" direction="return"/>
-        <ownedParameter xmi:id="DataType-createOwnedAttribute-name" name="name" effect="read">
-          <ownedComment xmi:id="DataType-createOwnedAttribute-name-_ownedComment.0" annotatedElement="DataType-createOwnedAttribute-name">
-            <body>The name for the new attribute, or null.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="DataType-createOwnedAttribute-name-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DataType-createOwnedAttribute-name-_upperValue" value="1"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="DataType-createOwnedAttribute-type" name="type" type="Type" effect="read">
-          <ownedComment xmi:id="DataType-createOwnedAttribute-type-_ownedComment.0" annotatedElement="DataType-createOwnedAttribute-type">
-            <body>The type for the new attribute, or null.</body>
-          </ownedComment>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="DataType-createOwnedAttribute-type-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DataType-createOwnedAttribute-type-_upperValue" value="1"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="DataType-createOwnedAttribute-lower" name="lower" effect="read">
-          <ownedComment xmi:id="DataType-createOwnedAttribute-lower-_ownedComment.0" annotatedElement="DataType-createOwnedAttribute-lower">
-            <body>The lower bound for the new attribute.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="DataType-createOwnedAttribute-upper" name="upper" effect="read">
-          <ownedComment xmi:id="DataType-createOwnedAttribute-upper-_ownedComment.0" annotatedElement="DataType-createOwnedAttribute-upper">
-            <body>The upper bound for the new attribute.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="DataType-createOwnedOperation" name="createOwnedOperation">
-        <ownedComment xmi:id="DataType-createOwnedOperation-_ownedComment.0" annotatedElement="DataType-createOwnedOperation">
-          <body>Creates an operation with the specified name, parameter names, parameter types, and return type (or null) as an owned operation of this data type.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="DataType-createOwnedOperation-_ownedParameter.0" type="Operation" direction="return"/>
-        <ownedParameter xmi:id="DataType-createOwnedOperation-name" name="name" effect="read">
-          <ownedComment xmi:id="DataType-createOwnedOperation-name-_ownedComment.0" annotatedElement="DataType-createOwnedOperation-name">
-            <body>The name for the new operation, or null.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="DataType-createOwnedOperation-name-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DataType-createOwnedOperation-name-_upperValue" value="1"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="DataType-createOwnedOperation-parameterNames" name="parameterNames" effect="read">
-          <ownedComment xmi:id="DataType-createOwnedOperation-parameterNames-_ownedComment.0" annotatedElement="DataType-createOwnedOperation-parameterNames">
-            <body>The parameter names for the new operation, or null.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="DataType-createOwnedOperation-parameterNames-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DataType-createOwnedOperation-parameterNames-_upperValue" value="*"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="DataType-createOwnedOperation-parameterTypes" name="parameterTypes" type="Type" effect="read">
-          <ownedComment xmi:id="DataType-createOwnedOperation-parameterTypes-_ownedComment.0" annotatedElement="DataType-createOwnedOperation-parameterTypes">
-            <body>The parameter types for the new operation, or null.</body>
-          </ownedComment>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="DataType-createOwnedOperation-parameterTypes-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DataType-createOwnedOperation-parameterTypes-_upperValue" value="*"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="DataType-createOwnedOperation-returnType" name="returnType" type="Type" effect="read">
-          <ownedComment xmi:id="DataType-createOwnedOperation-returnType-_ownedComment.0" annotatedElement="DataType-createOwnedOperation-returnType">
-            <body>The return type for the new operation, or null.</body>
-          </ownedComment>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="DataType-createOwnedOperation-returnType-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DataType-createOwnedOperation-returnType-_upperValue" value="1"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Enumeration" name="Enumeration">
-      <ownedComment xmi:id="Enumeration-_ownedComment.0" annotatedElement="Enumeration">
-        <body>An Enumeration is a DataType whose values are enumerated in the model as EnumerationLiterals.</body>
-      </ownedComment>
-      <ownedRule xmi:id="Enumeration-immutable" name="immutable" constrainedElement="Enumeration">
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Enumeration-immutable-_specification">
-          <language>OCL</language>
-          <body>ownedAttribute->forAll(isReadOnly)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="Enumeration-_generalization.0" general="DataType"/>
-      <ownedAttribute xmi:id="Enumeration-ownedLiteral" name="ownedLiteral" type="EnumerationLiteral" isOrdered="true" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_ownedLiteral_enumeration">
-        <ownedComment xmi:id="Enumeration-ownedLiteral-_ownedComment.0" annotatedElement="Enumeration-ownedLiteral">
-          <body>The ordered set of literals owned by this Enumeration.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Enumeration-ownedLiteral-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Enumeration-ownedLiteral-_upperValue" value="*"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="EnumerationLiteral" name="EnumerationLiteral">
-      <ownedComment xmi:id="EnumerationLiteral-_ownedComment.0" annotatedElement="EnumerationLiteral">
-        <body>An EnumerationLiteral is a user-defined data value for an Enumeration.</body>
-      </ownedComment>
-      <generalization xmi:id="EnumerationLiteral-_generalization.0" general="InstanceSpecification"/>
-      <ownedAttribute xmi:id="EnumerationLiteral-classifier" name="classifier" type="Enumeration" isReadOnly="true" isDerived="true" redefinedProperty="InstanceSpecification-classifier" association="A_classifier_enumerationLiteral">
-        <ownedComment xmi:id="EnumerationLiteral-classifier-_ownedComment.0" annotatedElement="EnumerationLiteral-classifier">
-          <body>The classifier of this EnumerationLiteral derived to be equal to its Enumeration.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="EnumerationLiteral-enumeration" name="enumeration" type="Enumeration" subsettedProperty="NamedElement-namespace" association="A_ownedLiteral_enumeration">
-        <ownedComment xmi:id="EnumerationLiteral-enumeration-_ownedComment.0" annotatedElement="EnumerationLiteral-enumeration">
-          <body>The Enumeration that this EnumerationLiteral is a member of.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedOperation xmi:id="EnumerationLiteral-getClassifiers" name="getClassifiers" visibility="protected">
-        <ownedParameter xmi:id="EnumerationLiteral-getClassifiers-_ownedParameter.0" type="Classifier" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EnumerationLiteral-getClassifiers-_ownedParameter.0-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="EnumerationLiteral-getClassifiers-_ownedParameter.0-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="EnumerationLiteral-classifier.1" name="classifier" visibility="protected" bodyCondition="EnumerationLiteral-classifier.1-spec" isQuery="true">
-        <ownedComment xmi:id="EnumerationLiteral-classifier.1-_ownedComment.0" annotatedElement="EnumerationLiteral-classifier.1">
-          <body>Derivation of Enumeration::/classifier</body>
-        </ownedComment>
-        <ownedRule xmi:id="EnumerationLiteral-classifier.1-spec" name="spec" constrainedElement="EnumerationLiteral-classifier.1 EnumerationLiteral-classifier">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="EnumerationLiteral-classifier.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (enumeration)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="EnumerationLiteral-classifier.1-result" name="result" type="Enumeration" direction="return"/>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Interface" name="Interface">
-      <ownedComment xmi:id="Interface-_ownedComment.0" annotatedElement="Interface">
-        <body>Interfaces declare coherent services that are implemented by BehavioredClassifiers that implement the Interfaces via InterfaceRealizations.</body>
-      </ownedComment>
-      <ownedRule xmi:id="Interface-visibility" name="visibility" constrainedElement="Interface">
-        <ownedComment xmi:id="Interface-visibility-_ownedComment.0" annotatedElement="Interface-visibility">
-          <body>The visibility of all Features owned by an Interface must be public.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Interface-visibility-_specification">
-          <language>OCL</language>
-          <body>feature->forAll(visibility = VisibilityKind::public)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="Interface-_generalization.0" general="Classifier"/>
-      <ownedAttribute xmi:id="Interface-nestedClassifier" name="nestedClassifier" type="Classifier" isOrdered="true" aggregation="composite" subsettedProperty="A_redefinitionContext_redefinableElement-redefinableElement Namespace-ownedMember" association="A_nestedClassifier_interface">
-        <ownedComment xmi:id="Interface-nestedClassifier-_ownedComment.0" annotatedElement="Interface-nestedClassifier">
-          <body>References all the Classifiers that are defined (nested) within the Interface.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Interface-nestedClassifier-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Interface-nestedClassifier-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Interface-ownedAttribute" name="ownedAttribute" type="Property" isOrdered="true" aggregation="composite" subsettedProperty="Classifier-attribute Namespace-ownedMember" association="A_ownedAttribute_interface">
-        <ownedComment xmi:id="Interface-ownedAttribute-_ownedComment.0" annotatedElement="Interface-ownedAttribute">
-          <body>The attributes (i.e., the Properties) owned by the Interface.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Interface-ownedAttribute-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Interface-ownedAttribute-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Interface-ownedOperation" name="ownedOperation" type="Operation" isOrdered="true" aggregation="composite" subsettedProperty="A_redefinitionContext_redefinableElement-redefinableElement Classifier-feature Namespace-ownedMember" association="A_ownedOperation_interface">
-        <ownedComment xmi:id="Interface-ownedOperation-_ownedComment.0" annotatedElement="Interface-ownedOperation">
-          <body>The Operations owned by the Interface.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Interface-ownedOperation-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Interface-ownedOperation-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Interface-ownedReception" name="ownedReception" type="Reception" aggregation="composite" subsettedProperty="Classifier-feature Namespace-ownedMember" association="A_ownedReception_interface">
-        <ownedComment xmi:id="Interface-ownedReception-_ownedComment.0" annotatedElement="Interface-ownedReception">
-          <body>Receptions that objects providing this Interface are willing to accept.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Interface-ownedReception-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Interface-ownedReception-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Interface-protocol" name="protocol" type="ProtocolStateMachine" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_protocol_interface">
-        <ownedComment xmi:id="Interface-protocol-_ownedComment.0" annotatedElement="Interface-protocol">
-          <body>References a ProtocolStateMachine specifying the legal sequences of the invocation of the BehavioralFeatures described in the Interface.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Interface-protocol-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Interface-redefinedInterface" name="redefinedInterface" type="Interface" subsettedProperty="Classifier-redefinedClassifier" association="A_redefinedInterface_interface">
-        <ownedComment xmi:id="Interface-redefinedInterface-_ownedComment.0" annotatedElement="Interface-redefinedInterface">
-          <body>References all the Interfaces redefined by this Interface.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Interface-redefinedInterface-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Interface-redefinedInterface-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="Interface-createOwnedAttribute" name="createOwnedAttribute">
-        <ownedComment xmi:id="Interface-createOwnedAttribute-_ownedComment.0" annotatedElement="Interface-createOwnedAttribute">
-          <body>Creates a property with the specified name, type, lower bound, and upper bound as an owned attribute of this interface.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Interface-createOwnedAttribute-_ownedParameter.0" type="Property" direction="return"/>
-        <ownedParameter xmi:id="Interface-createOwnedAttribute-name" name="name" effect="read">
-          <ownedComment xmi:id="Interface-createOwnedAttribute-name-_ownedComment.0" annotatedElement="Interface-createOwnedAttribute-name">
-            <body>The name for the new attribute, or null.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Interface-createOwnedAttribute-name-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Interface-createOwnedAttribute-name-_upperValue" value="1"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Interface-createOwnedAttribute-type" name="type" type="Type" effect="read">
-          <ownedComment xmi:id="Interface-createOwnedAttribute-type-_ownedComment.0" annotatedElement="Interface-createOwnedAttribute-type">
-            <body>The type for the new attribute, or null.</body>
-          </ownedComment>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Interface-createOwnedAttribute-type-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Interface-createOwnedAttribute-type-_upperValue" value="1"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Interface-createOwnedAttribute-lower" name="lower" effect="read">
-          <ownedComment xmi:id="Interface-createOwnedAttribute-lower-_ownedComment.0" annotatedElement="Interface-createOwnedAttribute-lower">
-            <body>The lower bound for the new attribute.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Interface-createOwnedAttribute-upper" name="upper" effect="read">
-          <ownedComment xmi:id="Interface-createOwnedAttribute-upper-_ownedComment.0" annotatedElement="Interface-createOwnedAttribute-upper">
-            <body>The upper bound for the new attribute.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Interface-createOwnedOperation" name="createOwnedOperation">
-        <ownedComment xmi:id="Interface-createOwnedOperation-_ownedComment.0" annotatedElement="Interface-createOwnedOperation">
-          <body>Creates an operation with the specified name, parameter names, parameter types, and return type (or null) as an owned operation of this interface.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Interface-createOwnedOperation-_ownedParameter.0" type="Operation" direction="return"/>
-        <ownedParameter xmi:id="Interface-createOwnedOperation-name" name="name" effect="read">
-          <ownedComment xmi:id="Interface-createOwnedOperation-name-_ownedComment.0" annotatedElement="Interface-createOwnedOperation-name">
-            <body>The name for the new operation, or null.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Interface-createOwnedOperation-name-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Interface-createOwnedOperation-name-_upperValue" value="1"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Interface-createOwnedOperation-parameterNames" name="parameterNames" effect="read">
-          <ownedComment xmi:id="Interface-createOwnedOperation-parameterNames-_ownedComment.0" annotatedElement="Interface-createOwnedOperation-parameterNames">
-            <body>The parameter names for the new operation, or null.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Interface-createOwnedOperation-parameterNames-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Interface-createOwnedOperation-parameterNames-_upperValue" value="*"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Interface-createOwnedOperation-parameterTypes" name="parameterTypes" type="Type" effect="read">
-          <ownedComment xmi:id="Interface-createOwnedOperation-parameterTypes-_ownedComment.0" annotatedElement="Interface-createOwnedOperation-parameterTypes">
-            <body>The parameter types for the new operation, or null.</body>
-          </ownedComment>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Interface-createOwnedOperation-parameterTypes-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Interface-createOwnedOperation-parameterTypes-_upperValue" value="*"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Interface-createOwnedOperation-returnType" name="returnType" type="Type" effect="read">
-          <ownedComment xmi:id="Interface-createOwnedOperation-returnType-_ownedComment.0" annotatedElement="Interface-createOwnedOperation-returnType">
-            <body>The return type for the new operation, or null.</body>
-          </ownedComment>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Interface-createOwnedOperation-returnType-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Interface-createOwnedOperation-returnType-_upperValue" value="1"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="InterfaceRealization" name="InterfaceRealization">
-      <ownedComment xmi:id="InterfaceRealization-_ownedComment.0" annotatedElement="InterfaceRealization">
-        <body>An InterfaceRealization is a specialized realization relationship between a BehavioredClassifier and an Interface. This relationship signifies that the realizing BehavioredClassifier conforms to the contract specified by the Interface.</body>
-      </ownedComment>
-      <generalization xmi:id="InterfaceRealization-_generalization.0" general="Realization"/>
-      <ownedAttribute xmi:id="InterfaceRealization-contract" name="contract" type="Interface" subsettedProperty="Dependency-supplier" association="A_contract_interfaceRealization">
-        <ownedComment xmi:id="InterfaceRealization-contract-_ownedComment.0" annotatedElement="InterfaceRealization-contract">
-          <body>References the Interface specifying the conformance contract.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="InterfaceRealization-implementingClassifier" name="implementingClassifier" type="BehavioredClassifier" subsettedProperty="Dependency-client Element-owner" association="A_interfaceRealization_implementingClassifier">
-        <ownedComment xmi:id="InterfaceRealization-implementingClassifier-_ownedComment.0" annotatedElement="InterfaceRealization-implementingClassifier">
-          <body>References the BehavioredClassifier that owns this InterfaceRealization, i.e., the BehavioredClassifier that realizes the Interface to which it refers.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="PrimitiveType" name="PrimitiveType">
-      <ownedComment xmi:id="PrimitiveType-_ownedComment.0" annotatedElement="PrimitiveType">
-        <body>A PrimitiveType defines a predefined DataType, without any substructure. A PrimitiveType may have an algebra and operations defined outside of UML, for example, mathematically.</body>
-      </ownedComment>
-      <generalization xmi:id="PrimitiveType-_generalization.0" general="DataType"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Reception" name="Reception">
-      <ownedComment xmi:id="Reception-_ownedComment.0" annotatedElement="Reception">
-        <body>A Reception is a declaration stating that a Classifier is prepared to react to the receipt of a Signal.</body>
-      </ownedComment>
-      <ownedRule xmi:id="Reception-same_name_as_signal" name="same_name_as_signal" constrainedElement="Reception">
-        <ownedComment xmi:id="Reception-same_name_as_signal-_ownedComment.0" annotatedElement="Reception-same_name_as_signal">
-          <body>A Reception has the same name as its signal</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Reception-same_name_as_signal-_specification">
-          <language>OCL</language>
-          <body>name = signal.name</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Reception-same_structure_as_signal" name="same_structure_as_signal" constrainedElement="Reception">
-        <ownedComment xmi:id="Reception-same_structure_as_signal-_ownedComment.0" annotatedElement="Reception-same_structure_as_signal">
-          <body>A Reception's parameters match the ownedAttributes of its signal by name, type, and multiplicity</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Reception-same_structure_as_signal-_specification">
-          <language>OCL</language>
-          <body>signal.ownedAttribute->size() = ownedParameter->size() and&#xD;
-Sequence{1..signal.ownedAttribute->size()}->forAll( i | &#xD;
-    ownedParameter->at(i).direction = ParameterDirectionKind::_'in' and &#xD;
-    ownedParameter->at(i).name = signal.ownedAttribute->at(i).name and&#xD;
-    ownedParameter->at(i).type = signal.ownedAttribute->at(i).type and&#xD;
-    ownedParameter->at(i).lowerBound() = signal.ownedAttribute->at(i).lowerBound() and&#xD;
-    ownedParameter->at(i).upperBound() = signal.ownedAttribute->at(i).upperBound()&#xD;
-)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="Reception-_generalization.0" general="BehavioralFeature"/>
-      <ownedAttribute xmi:id="Reception-signal" name="signal" type="Signal" association="A_signal_reception">
-        <ownedComment xmi:id="Reception-signal-_ownedComment.0" annotatedElement="Reception-signal">
-          <body>The Signal that this Reception handles.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Signal" name="Signal">
-      <ownedComment xmi:id="Signal-_ownedComment.0" annotatedElement="Signal">
-        <body>A Signal is a specification of a kind of communication between objects in which a reaction is asynchronously triggered in the receiver without a reply.</body>
-      </ownedComment>
-      <generalization xmi:id="Signal-_generalization.0" general="Classifier"/>
-      <ownedAttribute xmi:id="Signal-ownedAttribute" name="ownedAttribute" type="Property" isOrdered="true" aggregation="composite" subsettedProperty="Classifier-attribute Namespace-ownedMember" association="A_ownedAttribute_owningSignal">
-        <ownedComment xmi:id="Signal-ownedAttribute-_ownedComment.0" annotatedElement="Signal-ownedAttribute">
-          <body>The attributes owned by the Signal.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Signal-ownedAttribute-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Signal-ownedAttribute-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="Signal-createOwnedAttribute" name="createOwnedAttribute">
-        <ownedComment xmi:id="Signal-createOwnedAttribute-_ownedComment.0" annotatedElement="Signal-createOwnedAttribute">
-          <body>Creates a property with the specified name, type, lower bound, and upper bound as an owned attribute of this signal.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Signal-createOwnedAttribute-_ownedParameter.0" type="Property" direction="return"/>
-        <ownedParameter xmi:id="Signal-createOwnedAttribute-name" name="name" effect="read">
-          <ownedComment xmi:id="Signal-createOwnedAttribute-name-_ownedComment.0" annotatedElement="Signal-createOwnedAttribute-name">
-            <body>The name for the new attribute, or null.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Signal-createOwnedAttribute-name-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Signal-createOwnedAttribute-name-_upperValue" value="1"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Signal-createOwnedAttribute-type" name="type" type="Type" effect="read">
-          <ownedComment xmi:id="Signal-createOwnedAttribute-type-_ownedComment.0" annotatedElement="Signal-createOwnedAttribute-type">
-            <body>The type for the new attribute, or null.</body>
-          </ownedComment>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Signal-createOwnedAttribute-type-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Signal-createOwnedAttribute-type-_upperValue" value="1"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Signal-createOwnedAttribute-lower" name="lower" effect="read">
-          <ownedComment xmi:id="Signal-createOwnedAttribute-lower-_ownedComment.0" annotatedElement="Signal-createOwnedAttribute-lower">
-            <body>The lower bound for the new attribute.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Signal-createOwnedAttribute-upper" name="upper" effect="read">
-          <ownedComment xmi:id="Signal-createOwnedAttribute-upper-_ownedComment.0" annotatedElement="Signal-createOwnedAttribute-upper">
-            <body>The upper bound for the new attribute.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedAttribute_owningSignal" name="A_ownedAttribute_owningSignal" visibility="private" memberEnd="Signal-ownedAttribute A_ownedAttribute_owningSignal-owningSignal">
-      <ownedEnd xmi:id="A_ownedAttribute_owningSignal-owningSignal" name="owningSignal" type="Signal" subsettedProperty="A_attribute_classifier-classifier NamedElement-namespace" association="A_ownedAttribute_owningSignal">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_ownedAttribute_owningSignal-owningSignal-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_signal_reception" name="A_signal_reception" visibility="private" memberEnd="Reception-signal A_signal_reception-reception">
-      <ownedEnd xmi:id="A_signal_reception-reception" name="reception" type="Reception" association="A_signal_reception">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_signal_reception-reception-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_signal_reception-reception-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_contract_interfaceRealization" name="A_contract_interfaceRealization" visibility="private" memberEnd="InterfaceRealization-contract A_contract_interfaceRealization-interfaceRealization">
-      <ownedEnd xmi:id="A_contract_interfaceRealization-interfaceRealization" name="interfaceRealization" type="InterfaceRealization" subsettedProperty="A_supplier_supplierDependency-supplierDependency" association="A_contract_interfaceRealization">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_contract_interfaceRealization-interfaceRealization-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_contract_interfaceRealization-interfaceRealization-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_protocol_interface" name="A_protocol_interface" visibility="private" memberEnd="Interface-protocol A_protocol_interface-interface">
-      <ownedEnd xmi:id="A_protocol_interface-interface" name="interface" type="Interface" subsettedProperty="NamedElement-namespace" association="A_protocol_interface">
-        <ownedComment xmi:id="A_protocol_interface-interface-_ownedComment.0" annotatedElement="A_protocol_interface-interface">
-          <body>Specifies the namespace in which the protocol state machine is defined.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_protocol_interface-interface-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedReception_interface" name="A_ownedReception_interface" visibility="private" memberEnd="Interface-ownedReception A_ownedReception_interface-interface">
-      <ownedEnd xmi:id="A_ownedReception_interface-interface" name="interface" type="Interface" subsettedProperty="Feature-featuringClassifier NamedElement-namespace" association="A_ownedReception_interface">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_ownedReception_interface-interface-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_redefinedInterface_interface" name="A_redefinedInterface_interface" visibility="private" memberEnd="Interface-redefinedInterface A_redefinedInterface_interface-interface">
-      <ownedEnd xmi:id="A_redefinedInterface_interface-interface" name="interface" type="Interface" subsettedProperty="A_redefinedClassifier_classifier-classifier" association="A_redefinedInterface_interface">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_redefinedInterface_interface-interface-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_redefinedInterface_interface-interface-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_nestedClassifier_interface" name="A_nestedClassifier_interface" visibility="private" memberEnd="Interface-nestedClassifier A_nestedClassifier_interface-interface">
-      <ownedEnd xmi:id="A_nestedClassifier_interface-interface" name="interface" type="Interface" subsettedProperty="NamedElement-namespace RedefinableElement-redefinitionContext" association="A_nestedClassifier_interface">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_nestedClassifier_interface-interface-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedOperation_interface" name="A_ownedOperation_interface" visibility="private" memberEnd="Interface-ownedOperation Operation-interface"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedAttribute_interface" name="A_ownedAttribute_interface" visibility="private" memberEnd="Interface-ownedAttribute Property-interface"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_classifier_enumerationLiteral" name="A_classifier_enumerationLiteral" visibility="private" isDerived="true" memberEnd="EnumerationLiteral-classifier A_classifier_enumerationLiteral-enumerationLiteral">
-      <generalization xmi:id="A_classifier_enumerationLiteral-_generalization.0" general="A_classifier_instanceSpecification"/>
-      <ownedEnd xmi:id="A_classifier_enumerationLiteral-enumerationLiteral" name="enumerationLiteral" type="EnumerationLiteral" redefinedProperty="A_classifier_instanceSpecification-instanceSpecification" association="A_classifier_enumerationLiteral">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_classifier_enumerationLiteral-enumerationLiteral-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_classifier_enumerationLiteral-enumerationLiteral-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedLiteral_enumeration" name="A_ownedLiteral_enumeration" visibility="private" memberEnd="Enumeration-ownedLiteral EnumerationLiteral-enumeration"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedAttribute_datatype" name="A_ownedAttribute_datatype" visibility="private" memberEnd="DataType-ownedAttribute Property-datatype"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedOperation_datatype" name="A_ownedOperation_datatype" visibility="private" memberEnd="DataType-ownedOperation Operation-datatype"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedBehavior_behavioredClassifier" name="A_ownedBehavior_behavioredClassifier" visibility="private" memberEnd="BehavioredClassifier-ownedBehavior A_ownedBehavior_behavioredClassifier-behavioredClassifier">
-      <ownedEnd xmi:id="A_ownedBehavior_behavioredClassifier-behavioredClassifier" name="behavioredClassifier" type="BehavioredClassifier" subsettedProperty="NamedElement-namespace" association="A_ownedBehavior_behavioredClassifier">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_ownedBehavior_behavioredClassifier-behavioredClassifier-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_classifierBehavior_behavioredClassifier" name="A_classifierBehavior_behavioredClassifier" visibility="private" memberEnd="BehavioredClassifier-classifierBehavior A_classifierBehavior_behavioredClassifier-behavioredClassifier">
-      <generalization xmi:id="A_classifierBehavior_behavioredClassifier-_generalization.0" general="A_ownedBehavior_behavioredClassifier"/>
-      <ownedEnd xmi:id="A_classifierBehavior_behavioredClassifier-behavioredClassifier" name="behavioredClassifier" type="BehavioredClassifier" redefinedProperty="A_ownedBehavior_behavioredClassifier-behavioredClassifier" association="A_classifierBehavior_behavioredClassifier">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_classifierBehavior_behavioredClassifier-behavioredClassifier-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_interfaceRealization_implementingClassifier" name="A_interfaceRealization_implementingClassifier" visibility="private" memberEnd="BehavioredClassifier-interfaceRealization InterfaceRealization-implementingClassifier"/>
-    <packagedElement xmi:type="uml:Class" xmi:id="ConnectionPointReference" name="ConnectionPointReference">
-      <ownedComment xmi:id="ConnectionPointReference-_ownedComment.0" annotatedElement="ConnectionPointReference">
-        <body>A ConnectionPointReference represents a usage (as part of a submachine State) of an entry/exit point Pseudostate defined in the StateMachine referenced by the submachine State.</body>
-      </ownedComment>
-      <ownedRule xmi:id="ConnectionPointReference-exit_pseudostates" name="exit_pseudostates" constrainedElement="ConnectionPointReference">
-        <ownedComment xmi:id="ConnectionPointReference-exit_pseudostates-_ownedComment.0" annotatedElement="ConnectionPointReference-exit_pseudostates">
-          <body>The exit Pseudostates must be Pseudostates with kind exitPoint.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ConnectionPointReference-exit_pseudostates-_specification">
-          <language>OCL</language>
-          <body>exit->forAll(kind = PseudostateKind::exitPoint)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ConnectionPointReference-entry_pseudostates" name="entry_pseudostates" constrainedElement="ConnectionPointReference">
-        <ownedComment xmi:id="ConnectionPointReference-entry_pseudostates-_ownedComment.0" annotatedElement="ConnectionPointReference-entry_pseudostates">
-          <body>The entry Pseudostates must be Pseudostates with kind entryPoint.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ConnectionPointReference-entry_pseudostates-_specification">
-          <language>OCL</language>
-          <body>entry->forAll(kind = PseudostateKind::entryPoint)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="ConnectionPointReference-_generalization.0" general="Vertex"/>
-      <ownedAttribute xmi:id="ConnectionPointReference-entry" name="entry" type="Pseudostate" association="A_entry_connectionPointReference">
-        <ownedComment xmi:id="ConnectionPointReference-entry-_ownedComment.0" annotatedElement="ConnectionPointReference-entry">
-          <body>The entryPoint Pseudostates corresponding to this connection point.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ConnectionPointReference-entry-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ConnectionPointReference-entry-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ConnectionPointReference-exit" name="exit" type="Pseudostate" association="A_exit_connectionPointReference">
-        <ownedComment xmi:id="ConnectionPointReference-exit-_ownedComment.0" annotatedElement="ConnectionPointReference-exit">
-          <body>The exitPoints kind Pseudostates corresponding to this connection point.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ConnectionPointReference-exit-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ConnectionPointReference-exit-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ConnectionPointReference-state" name="state" type="State" subsettedProperty="NamedElement-namespace" association="A_connection_state">
-        <ownedComment xmi:id="ConnectionPointReference-state-_ownedComment.0" annotatedElement="ConnectionPointReference-state">
-          <body>The State in which the ConnectionPointReference is defined.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ConnectionPointReference-state-_lowerValue"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="FinalState" name="FinalState">
-      <ownedComment xmi:id="FinalState-_ownedComment.0" annotatedElement="FinalState">
-        <body>A special kind of State, which, when entered, signifies that the enclosing Region has completed. If the enclosing Region is directly contained in a StateMachine and all other Regions in that StateMachine also are completed, then it means that the entire StateMachine behavior is completed.</body>
-      </ownedComment>
-      <ownedRule xmi:id="FinalState-no_exit_behavior" name="no_exit_behavior" constrainedElement="FinalState">
-        <ownedComment xmi:id="FinalState-no_exit_behavior-_ownedComment.0" annotatedElement="FinalState-no_exit_behavior">
-          <body>A FinalState has no exit Behavior.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="FinalState-no_exit_behavior-_specification">
-          <language>OCL</language>
-          <body>exit->isEmpty()</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="FinalState-no_outgoing_transitions" name="no_outgoing_transitions" constrainedElement="FinalState">
-        <ownedComment xmi:id="FinalState-no_outgoing_transitions-_ownedComment.0" annotatedElement="FinalState-no_outgoing_transitions">
-          <body>A FinalState cannot have any outgoing Transitions.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="FinalState-no_outgoing_transitions-_specification">
-          <language>OCL</language>
-          <body>outgoing->size() = 0</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="FinalState-no_regions" name="no_regions" constrainedElement="FinalState">
-        <ownedComment xmi:id="FinalState-no_regions-_ownedComment.0" annotatedElement="FinalState-no_regions">
-          <body>A FinalState cannot have Regions.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="FinalState-no_regions-_specification">
-          <language>OCL</language>
-          <body>region->size() = 0</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="FinalState-cannot_reference_submachine" name="cannot_reference_submachine" constrainedElement="FinalState">
-        <ownedComment xmi:id="FinalState-cannot_reference_submachine-_ownedComment.0" annotatedElement="FinalState-cannot_reference_submachine">
-          <body>A FinalState cannot reference a submachine.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="FinalState-cannot_reference_submachine-_specification">
-          <language>OCL</language>
-          <body>submachine->isEmpty()</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="FinalState-no_entry_behavior" name="no_entry_behavior" constrainedElement="FinalState">
-        <ownedComment xmi:id="FinalState-no_entry_behavior-_ownedComment.0" annotatedElement="FinalState-no_entry_behavior">
-          <body>A FinalState has no entry Behavior.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="FinalState-no_entry_behavior-_specification">
-          <language>OCL</language>
-          <body>entry->isEmpty()</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="FinalState-no_state_behavior" name="no_state_behavior" constrainedElement="FinalState">
-        <ownedComment xmi:id="FinalState-no_state_behavior-_ownedComment.0" annotatedElement="FinalState-no_state_behavior">
-          <body>A FinalState has no state (doActivity) Behavior.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="FinalState-no_state_behavior-_specification">
-          <language>OCL</language>
-          <body>doActivity->isEmpty()</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="FinalState-_generalization.0" general="State"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ProtocolConformance" name="ProtocolConformance">
-      <ownedComment xmi:id="ProtocolConformance-_ownedComment.0" annotatedElement="ProtocolConformance">
-        <body>A ProtocolStateMachine can be redefined into a more specific ProtocolStateMachine or into behavioral StateMachine. ProtocolConformance declares that the specific ProtocolStateMachine specifies a protocol that conforms to the general ProtocolStateMachine or that the specific behavioral StateMachine abides by the protocol of the general ProtocolStateMachine.</body>
-      </ownedComment>
-      <generalization xmi:id="ProtocolConformance-_generalization.0" general="DirectedRelationship"/>
-      <ownedAttribute xmi:id="ProtocolConformance-generalMachine" name="generalMachine" type="ProtocolStateMachine" subsettedProperty="DirectedRelationship-target" association="A_generalMachine_protocolConformance">
-        <ownedComment xmi:id="ProtocolConformance-generalMachine-_ownedComment.0" annotatedElement="ProtocolConformance-generalMachine">
-          <body>Specifies the ProtocolStateMachine to which the specific ProtocolStateMachine conforms.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ProtocolConformance-specificMachine" name="specificMachine" type="ProtocolStateMachine" subsettedProperty="DirectedRelationship-source Element-owner" association="A_conformance_specificMachine">
-        <ownedComment xmi:id="ProtocolConformance-specificMachine-_ownedComment.0" annotatedElement="ProtocolConformance-specificMachine">
-          <body>Specifies the ProtocolStateMachine which conforms to the general ProtocolStateMachine.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ProtocolStateMachine" name="ProtocolStateMachine">
-      <ownedComment xmi:id="ProtocolStateMachine-_ownedComment.0" annotatedElement="ProtocolStateMachine">
-        <body>A ProtocolStateMachine is always defined in the context of a Classifier. It specifies which BehavioralFeatures of the Classifier can be called in which State and under which conditions, thus specifying the allowed invocation sequences on the Classifier's BehavioralFeatures. A ProtocolStateMachine specifies the possible and permitted Transitions on the instances of its context Classifier, together with the BehavioralFeatures that carry the Transitions. In this manner, an instance lifecycle can be specified for a Classifier, by defining the order in which the BehavioralFeatures can be activated and the States through which an instance progresses during its existence.</body>
-      </ownedComment>
-      <ownedRule xmi:id="ProtocolStateMachine-classifier_context" name="classifier_context" constrainedElement="ProtocolStateMachine">
-        <ownedComment xmi:id="ProtocolStateMachine-classifier_context-_ownedComment.0" annotatedElement="ProtocolStateMachine-classifier_context">
-          <body>A ProtocolStateMachine must only have a Classifier context, not a BehavioralFeature context.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ProtocolStateMachine-classifier_context-_specification">
-          <language>OCL</language>
-          <body>_'context' &lt;> null and specification = null</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ProtocolStateMachine-deep_or_shallow_history" name="deep_or_shallow_history" constrainedElement="ProtocolStateMachine">
-        <ownedComment xmi:id="ProtocolStateMachine-deep_or_shallow_history-_ownedComment.0" annotatedElement="ProtocolStateMachine-deep_or_shallow_history">
-          <body>ProtocolStateMachines cannot have deep or shallow history Pseudostates.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ProtocolStateMachine-deep_or_shallow_history-_specification">
-          <language>OCL</language>
-          <body>region->forAll (r | r.subvertex->forAll (v | v.oclIsKindOf(Pseudostate) implies
-((v.oclAsType(Pseudostate).kind &lt;>  PseudostateKind::deepHistory) and (v.oclAsType(Pseudostate).kind &lt;> PseudostateKind::shallowHistory))))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ProtocolStateMachine-entry_exit_do" name="entry_exit_do" constrainedElement="ProtocolStateMachine">
-        <ownedComment xmi:id="ProtocolStateMachine-entry_exit_do-_ownedComment.0" annotatedElement="ProtocolStateMachine-entry_exit_do">
-          <body>The states of a ProtocolStateMachine cannot have entry, exit, or do activity Behaviors.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ProtocolStateMachine-entry_exit_do-_specification">
-          <language>OCL</language>
-          <body>region->forAll(r | r.subvertex->forAll(v | v.oclIsKindOf(State) implies
-(v.oclAsType(State).entry->isEmpty() and v.oclAsType(State).exit->isEmpty() and v.oclAsType(State).doActivity->isEmpty())))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ProtocolStateMachine-protocol_transitions" name="protocol_transitions" constrainedElement="ProtocolStateMachine">
-        <ownedComment xmi:id="ProtocolStateMachine-protocol_transitions-_ownedComment.0" annotatedElement="ProtocolStateMachine-protocol_transitions">
-          <body>All Transitions of a ProtocolStateMachine must be ProtocolTransitions.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ProtocolStateMachine-protocol_transitions-_specification">
-          <language>OCL</language>
-          <body>region->forAll(r | r.transition->forAll(t | t.oclIsTypeOf(ProtocolTransition)))</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="ProtocolStateMachine-_generalization.0" general="StateMachine"/>
-      <ownedAttribute xmi:id="ProtocolStateMachine-conformance" name="conformance" type="ProtocolConformance" aggregation="composite" subsettedProperty="A_source_directedRelationship-directedRelationship Element-ownedElement" association="A_conformance_specificMachine">
-        <ownedComment xmi:id="ProtocolStateMachine-conformance-_ownedComment.0" annotatedElement="ProtocolStateMachine-conformance">
-          <body>Conformance between ProtocolStateMachine</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ProtocolStateMachine-conformance-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ProtocolStateMachine-conformance-_upperValue" value="*"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ProtocolTransition" name="ProtocolTransition">
-      <ownedComment xmi:id="ProtocolTransition-_ownedComment.0" annotatedElement="ProtocolTransition">
-        <body>A ProtocolTransition specifies a legal Transition for an Operation. Transitions of ProtocolStateMachines have the following information: a pre-condition (guard), a Trigger, and a post-condition. Every ProtocolTransition is associated with at most one BehavioralFeature belonging to the context Classifier of the ProtocolStateMachine.</body>
-      </ownedComment>
-      <ownedRule xmi:id="ProtocolTransition-refers_to_operation" name="refers_to_operation" constrainedElement="ProtocolTransition">
-        <ownedComment xmi:id="ProtocolTransition-refers_to_operation-_ownedComment.0" annotatedElement="ProtocolTransition-refers_to_operation">
-          <body>If a ProtocolTransition refers to an Operation (i.e., has a CallEvent trigger corresponding to an Operation), then that Operation should apply to the context Classifier of the StateMachine of the ProtocolTransition.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ProtocolTransition-refers_to_operation-_specification">
-          <language>OCL</language>
-          <body>if (referred()->notEmpty() and containingStateMachine()._'context'->notEmpty()) then &#xD;
-    containingStateMachine()._'context'.oclAsType(BehavioredClassifier).allFeatures()->includesAll(referred())&#xD;
-else true endif</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ProtocolTransition-associated_actions" name="associated_actions" constrainedElement="ProtocolTransition">
-        <ownedComment xmi:id="ProtocolTransition-associated_actions-_ownedComment.0" annotatedElement="ProtocolTransition-associated_actions">
-          <body>A ProtocolTransition never has associated Behaviors.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ProtocolTransition-associated_actions-_specification">
-          <language>OCL</language>
-          <body>effect = null</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ProtocolTransition-belongs_to_psm" name="belongs_to_psm" constrainedElement="ProtocolTransition">
-        <ownedComment xmi:id="ProtocolTransition-belongs_to_psm-_ownedComment.0" annotatedElement="ProtocolTransition-belongs_to_psm">
-          <body>A ProtocolTransition always belongs to a ProtocolStateMachine.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ProtocolTransition-belongs_to_psm-_specification">
-          <language>OCL</language>
-          <body>container.belongsToPSM()</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="ProtocolTransition-_generalization.0" general="Transition"/>
-      <ownedAttribute xmi:id="ProtocolTransition-postCondition" name="postCondition" type="Constraint" aggregation="composite" subsettedProperty="Namespace-ownedRule" association="A_postCondition_owningTransition">
-        <ownedComment xmi:id="ProtocolTransition-postCondition-_ownedComment.0" annotatedElement="ProtocolTransition-postCondition">
-          <body>Specifies the post condition of the Transition which is the Condition that should be obtained once the Transition is triggered. This post condition is part of the post condition of the Operation connected to the Transition.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ProtocolTransition-postCondition-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ProtocolTransition-preCondition" name="preCondition" type="Constraint" aggregation="composite" subsettedProperty="Transition-guard" association="A_preCondition_protocolTransition">
-        <ownedComment xmi:id="ProtocolTransition-preCondition-_ownedComment.0" annotatedElement="ProtocolTransition-preCondition">
-          <body>Specifies the precondition of the Transition. It specifies the Condition that should be verified before triggering the Transition. This guard condition added to the source State will be evaluated as part of the precondition of the Operation referred by the Transition if any.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ProtocolTransition-preCondition-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ProtocolTransition-referred" name="referred" type="Operation" isReadOnly="true" isDerived="true" association="A_referred_protocolTransition">
-        <ownedComment xmi:id="ProtocolTransition-referred-_ownedComment.0" annotatedElement="ProtocolTransition-referred">
-          <body>This association refers to the associated Operation. It is derived from the Operation of the CallEvent Trigger when applicable.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ProtocolTransition-referred-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ProtocolTransition-referred-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="ProtocolTransition-referred.1" name="referred" visibility="protected" bodyCondition="ProtocolTransition-referred.1-spec" isQuery="true">
-        <ownedComment xmi:id="ProtocolTransition-referred.1-_ownedComment.0" annotatedElement="ProtocolTransition-referred.1">
-          <body>Derivation for ProtocolTransition::/referred</body>
-        </ownedComment>
-        <ownedRule xmi:id="ProtocolTransition-referred.1-spec" name="spec" constrainedElement="ProtocolTransition-referred.1 ProtocolTransition-referred">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="ProtocolTransition-referred.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (trigger->collect(event)->select(oclIsKindOf(CallEvent))->collect(oclAsType(CallEvent).operation)->asSet())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="ProtocolTransition-referred.1-result" name="result" type="Operation" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ProtocolTransition-referred.1-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ProtocolTransition-referred.1-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Pseudostate" name="Pseudostate">
-      <ownedComment xmi:id="Pseudostate-_ownedComment.0" annotatedElement="Pseudostate">
-        <body>A Pseudostate is an abstraction that encompasses different types of transient Vertices in the StateMachine graph. A StateMachine instance never comes to rest in a Pseudostate, instead, it will exit and enter the Pseudostate within a single run-to-completion step.</body>
-      </ownedComment>
-      <ownedRule xmi:id="Pseudostate-transitions_outgoing" name="transitions_outgoing" constrainedElement="Pseudostate">
-        <ownedComment xmi:id="Pseudostate-transitions_outgoing-_ownedComment.0" annotatedElement="Pseudostate-transitions_outgoing">
-          <body>All transitions outgoing a fork vertex must target states in different regions of an orthogonal state.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Pseudostate-transitions_outgoing-_specification">
-          <language>OCL</language>
-          <body>(kind = PseudostateKind::fork) implies&#xD;
-&#xD;
--- for any pair of outgoing transitions there exists an orthogonal state which contains the targets of these transitions &#xD;
--- such that these targets belong to different regions of that orthogonal state &#xD;
-&#xD;
-outgoing->forAll(t1:Transition, t2:Transition | let contState:State = containingStateMachine().LCAState(t1.target, t2.target) in&#xD;
-	((contState &lt;> null) and (contState.region&#xD;
-		->exists(r1:Region, r2: Region | (r1 &lt;> r2) and t1.target.isContainedInRegion(r1) and t2.target.isContainedInRegion(r2)))))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Pseudostate-choice_vertex" name="choice_vertex" constrainedElement="Pseudostate">
-        <ownedComment xmi:id="Pseudostate-choice_vertex-_ownedComment.0" annotatedElement="Pseudostate-choice_vertex">
-          <body>In a complete statemachine, a choice Vertex must have at least one incoming and one outgoing Transition.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Pseudostate-choice_vertex-_specification">
-          <language>OCL</language>
-          <body>(kind = PseudostateKind::choice) implies (incoming->size() >= 1 and outgoing->size() >= 1)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Pseudostate-outgoing_from_initial" name="outgoing_from_initial" constrainedElement="Pseudostate">
-        <ownedComment xmi:id="Pseudostate-outgoing_from_initial-_ownedComment.0" annotatedElement="Pseudostate-outgoing_from_initial">
-          <body>The outgoing Transition from an initial vertex may have a behavior, but not a trigger or a guard.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Pseudostate-outgoing_from_initial-_specification">
-          <language>OCL</language>
-          <body>(kind = PseudostateKind::initial) implies (outgoing.guard = null and outgoing.trigger->isEmpty())</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Pseudostate-join_vertex" name="join_vertex" constrainedElement="Pseudostate">
-        <ownedComment xmi:id="Pseudostate-join_vertex-_ownedComment.0" annotatedElement="Pseudostate-join_vertex">
-          <body>In a complete StateMachine, a join Vertex must have at least two incoming Transitions and exactly one outgoing Transition.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Pseudostate-join_vertex-_specification">
-          <language>OCL</language>
-          <body>(kind = PseudostateKind::join) implies (outgoing->size() = 1 and incoming->size() >= 2)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Pseudostate-junction_vertex" name="junction_vertex" constrainedElement="Pseudostate">
-        <ownedComment xmi:id="Pseudostate-junction_vertex-_ownedComment.0" annotatedElement="Pseudostate-junction_vertex">
-          <body>In a complete StateMachine, a junction Vertex must have at least one incoming and one outgoing Transition.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Pseudostate-junction_vertex-_specification">
-          <language>OCL</language>
-          <body>(kind = PseudostateKind::junction) implies (incoming->size() >= 1 and outgoing->size() >= 1)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Pseudostate-history_vertices" name="history_vertices" constrainedElement="Pseudostate">
-        <ownedComment xmi:id="Pseudostate-history_vertices-_ownedComment.0" annotatedElement="Pseudostate-history_vertices">
-          <body>History Vertices can have at most one outgoing Transition.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Pseudostate-history_vertices-_specification">
-          <language>OCL</language>
-          <body>((kind = PseudostateKind::deepHistory) or (kind = PseudostateKind::shallowHistory)) implies (outgoing->size() &lt;= 1)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Pseudostate-initial_vertex" name="initial_vertex" constrainedElement="Pseudostate">
-        <ownedComment xmi:id="Pseudostate-initial_vertex-_ownedComment.0" annotatedElement="Pseudostate-initial_vertex">
-          <body>An initial Vertex can have at most one outgoing Transition.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Pseudostate-initial_vertex-_specification">
-          <language>OCL</language>
-          <body>(kind = PseudostateKind::initial) implies (outgoing->size() &lt;= 1)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Pseudostate-fork_vertex" name="fork_vertex" constrainedElement="Pseudostate">
-        <ownedComment xmi:id="Pseudostate-fork_vertex-_ownedComment.0" annotatedElement="Pseudostate-fork_vertex">
-          <body>In a complete StateMachine, a fork Vertex must have at least two outgoing Transitions and exactly one incoming Transition.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Pseudostate-fork_vertex-_specification">
-          <language>OCL</language>
-          <body>(kind = PseudostateKind::fork) implies (incoming->size() = 1 and outgoing->size() >= 2)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Pseudostate-transitions_incoming" name="transitions_incoming" constrainedElement="Pseudostate">
-        <ownedComment xmi:id="Pseudostate-transitions_incoming-_ownedComment.0" annotatedElement="Pseudostate-transitions_incoming">
-          <body>All Transitions incoming a join Vertex must originate in different Regions of an orthogonal State.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Pseudostate-transitions_incoming-_specification">
-          <language>OCL</language>
-          <body>(kind = PseudostateKind::join) implies
-
--- for any pair of incoming transitions there exists an orthogonal state which contains the source vetices of these transitions 
--- such that these source vertices belong to different regions of that orthogonal state 
-
-incoming->forAll(t1:Transition, t2:Transition | let contState:State = containingStateMachine().LCAState(t1.source, t2.source) in
-	((contState &lt;> null) and (contState.region
-		->exists(r1:Region, r2: Region | (r1 &lt;> r2) and t1.source.isContainedInRegion(r1) and t2.source.isContainedInRegion(r2)))))</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="Pseudostate-_generalization.0" general="Vertex"/>
-      <ownedAttribute xmi:id="Pseudostate-kind" name="kind" type="PseudostateKind">
-        <ownedComment xmi:id="Pseudostate-kind-_ownedComment.0" annotatedElement="Pseudostate-kind">
-          <body>Determines the precise type of the Pseudostate and can be one of: entryPoint, exitPoint, initial, deepHistory, shallowHistory, join, fork, junction, terminate or choice.</body>
-        </ownedComment>
-        <defaultValue xmi:type="uml:InstanceValue" xmi:id="Pseudostate-kind-_defaultValue" type="PseudostateKind" instance="PseudostateKind-initial"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Pseudostate-state" name="state" type="State" subsettedProperty="NamedElement-namespace" association="A_connectionPoint_state">
-        <ownedComment xmi:id="Pseudostate-state-_ownedComment.0" annotatedElement="Pseudostate-state">
-          <body>The State that owns this Pseudostate and in which it appears.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Pseudostate-state-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Pseudostate-stateMachine" name="stateMachine" type="StateMachine" subsettedProperty="NamedElement-namespace" association="A_connectionPoint_stateMachine">
-        <ownedComment xmi:id="Pseudostate-stateMachine-_ownedComment.0" annotatedElement="Pseudostate-stateMachine">
-          <body>The StateMachine in which this Pseudostate is defined. This only applies to Pseudostates of the kind entryPoint or exitPoint.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Pseudostate-stateMachine-_lowerValue"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Region" name="Region">
-      <ownedComment xmi:id="Region-_ownedComment.0" annotatedElement="Region">
-        <body>A Region is a top-level part of a StateMachine or a composite State, that serves as a container for the Vertices and Transitions of the StateMachine. A StateMachine or composite State may contain multiple Regions representing behaviors that may occur in parallel.</body>
-      </ownedComment>
-      <ownedRule xmi:id="Region-deep_history_vertex" name="deep_history_vertex" constrainedElement="Region">
-        <ownedComment xmi:id="Region-deep_history_vertex-_ownedComment.0" annotatedElement="Region-deep_history_vertex">
-          <body>A Region can have at most one deep history Vertex.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Region-deep_history_vertex-_specification">
-          <language>OCL</language>
-          <body>self.subvertex->select (oclIsKindOf(Pseudostate))->collect(oclAsType(Pseudostate))->
-   select(kind = PseudostateKind::deepHistory)->size() &lt;= 1</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Region-shallow_history_vertex" name="shallow_history_vertex" constrainedElement="Region">
-        <ownedComment xmi:id="Region-shallow_history_vertex-_ownedComment.0" annotatedElement="Region-shallow_history_vertex">
-          <body>A Region can have at most one shallow history Vertex.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Region-shallow_history_vertex-_specification">
-          <language>OCL</language>
-          <body>subvertex->select(oclIsKindOf(Pseudostate))->collect(oclAsType(Pseudostate))->
-  select(kind = PseudostateKind::shallowHistory)->size() &lt;= 1</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Region-owned" name="owned" constrainedElement="Region">
-        <ownedComment xmi:id="Region-owned-_ownedComment.0" annotatedElement="Region-owned">
-          <body>If a Region is owned by a StateMachine, then it cannot also be owned by a State and vice versa.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Region-owned-_specification">
-          <language>OCL</language>
-          <body>(stateMachine &lt;> null implies state = null) and (state &lt;> null implies stateMachine = null)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Region-initial_vertex" name="initial_vertex" constrainedElement="Region">
-        <ownedComment xmi:id="Region-initial_vertex-_ownedComment.0" annotatedElement="Region-initial_vertex">
-          <body>A Region can have at most one initial Vertex.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Region-initial_vertex-_specification">
-          <language>OCL</language>
-          <body>self.subvertex->select (oclIsKindOf(Pseudostate))->collect(oclAsType(Pseudostate))->
-  select(kind = PseudostateKind::initial)->size() &lt;= 1</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="Region-_generalization.0" general="Namespace"/>
-      <generalization xmi:id="Region-_generalization.1" general="RedefinableElement"/>
-      <ownedAttribute xmi:id="Region-extendedRegion" name="extendedRegion" type="Region" subsettedProperty="RedefinableElement-redefinedElement" association="A_extendedRegion_region">
-        <ownedComment xmi:id="Region-extendedRegion-_ownedComment.0" annotatedElement="Region-extendedRegion">
-          <body>The region of which this region is an extension.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Region-extendedRegion-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Region-redefinitionContext" name="redefinitionContext" type="Classifier" isReadOnly="true" isDerived="true" redefinedProperty="RedefinableElement-redefinitionContext" association="A_redefinitionContext_region">
-        <ownedComment xmi:id="Region-redefinitionContext-_ownedComment.0" annotatedElement="Region-redefinitionContext">
-          <body>References the Classifier in which context this element may be redefined.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Region-state" name="state" type="State" subsettedProperty="NamedElement-namespace" association="A_region_state">
-        <ownedComment xmi:id="Region-state-_ownedComment.0" annotatedElement="Region-state">
-          <body>The State that owns the Region. If a Region is owned by a State, then it cannot also be owned by a StateMachine.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Region-state-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Region-stateMachine" name="stateMachine" type="StateMachine" subsettedProperty="NamedElement-namespace" association="A_region_stateMachine">
-        <ownedComment xmi:id="Region-stateMachine-_ownedComment.0" annotatedElement="Region-stateMachine">
-          <body>The StateMachine that owns the Region. If a Region is owned by a StateMachine, then it cannot also be owned by a State.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Region-stateMachine-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Region-subvertex" name="subvertex" type="Vertex" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_subvertex_container">
-        <ownedComment xmi:id="Region-subvertex-_ownedComment.0" annotatedElement="Region-subvertex">
-          <body>The set of Vertices that are owned by this Region.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Region-subvertex-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Region-subvertex-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Region-transition" name="transition" type="Transition" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_transition_container">
-        <ownedComment xmi:id="Region-transition-_ownedComment.0" annotatedElement="Region-transition">
-          <body>The set of Transitions owned by the Region.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Region-transition-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Region-transition-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="Region-belongsToPSM" name="belongsToPSM" bodyCondition="Region-belongsToPSM-spec" isQuery="true">
-        <ownedComment xmi:id="Region-belongsToPSM-_ownedComment.0" annotatedElement="Region-belongsToPSM">
-          <body>The operation belongsToPSM () checks if the Region belongs to a ProtocolStateMachine.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Region-belongsToPSM-spec" name="spec" constrainedElement="Region-belongsToPSM">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Region-belongsToPSM-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if  stateMachine &lt;> null 
-then
-  stateMachine.oclIsKindOf(ProtocolStateMachine)
-else 
-  state &lt;> null  implies  state.container.belongsToPSM()
-endif )</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Region-belongsToPSM-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Region-containingStateMachine" name="containingStateMachine" bodyCondition="Region-containingStateMachine-spec" isQuery="true">
-        <ownedComment xmi:id="Region-containingStateMachine-_ownedComment.0" annotatedElement="Region-containingStateMachine">
-          <body>The operation containingStateMachine() returns the StateMachine in which this Region is defined.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Region-containingStateMachine-spec" name="spec" constrainedElement="Region-containingStateMachine">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Region-containingStateMachine-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if stateMachine = null 
-then
-  state.containingStateMachine()
-else
-  stateMachine
-endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Region-containingStateMachine-result" name="result" type="StateMachine" direction="return"/>
-      </ownedOperation>
-      <ownedOperation xmi:id="Region-isConsistentWith" name="isConsistentWith" bodyCondition="Region-isConsistentWith-spec" isQuery="true" precondition="Region-isConsistentWith-pre" redefinedOperation="RedefinableElement-isConsistentWith">
-        <ownedComment xmi:id="Region-isConsistentWith-_ownedComment.0" annotatedElement="Region-isConsistentWith">
-          <body>The query isConsistentWith() specifies that a redefining Region is consistent with a redefined Region provided that the redefining Region is an extension of the Redefined region, i.e., its Vertices and Transitions conform to one of the following: (1) they are equal to corresponding elements of the redefined Region or, (2) they consistently redefine a State or Transition of the redefined region, or (3) they add new States or Transitions.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Region-isConsistentWith-spec" name="spec" constrainedElement="Region-isConsistentWith">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Region-isConsistentWith-spec-_specification">
-            <language>OCL</language>
-            <body>result = (-- the following is merely a default body; it is expected that the specific form of this constraint will be specified by profiles&#xD;
-true)</body>
-          </specification>
-        </ownedRule>
-        <ownedRule xmi:id="Region-isConsistentWith-pre" name="pre" constrainedElement="Region-isConsistentWith">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Region-isConsistentWith-pre-_specification">
-            <language>OCL</language>
-            <body>redefiningElement.isRedefinitionContextValid(self)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Region-isConsistentWith-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Region-isConsistentWith-redefiningElement" name="redefiningElement" type="RedefinableElement"/>
-      </ownedOperation>
-      <ownedOperation xmi:id="Region-isRedefinitionContextValid" name="isRedefinitionContextValid" bodyCondition="Region-isRedefinitionContextValid-spec" isQuery="true" redefinedOperation="RedefinableElement-isRedefinitionContextValid">
-        <ownedComment xmi:id="Region-isRedefinitionContextValid-_ownedComment.0" annotatedElement="Region-isRedefinitionContextValid">
-          <body>The query isRedefinitionContextValid() specifies whether the redefinition contexts of a Region are properly related to the redefinition contexts of the specified Region to allow this element to redefine the other. The containing StateMachine or State of a redefining Region must Redefine the containing StateMachine or State of the redefined Region.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Region-isRedefinitionContextValid-spec" name="spec" constrainedElement="Region-isRedefinitionContextValid">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Region-isRedefinitionContextValid-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if redefinedElement.oclIsKindOf(Region) then&#xD;
-  let redefinedRegion : Region = redefinedElement.oclAsType(Region) in&#xD;
-    if stateMachine->isEmpty() then&#xD;
-    -- the Region is owned by a State&#xD;
-      (state.redefinedState->notEmpty() and state.redefinedState.region->includes(redefinedRegion))&#xD;
-    else -- the region is owned by a StateMachine&#xD;
-      (stateMachine.extendedStateMachine->notEmpty() and&#xD;
-        stateMachine.extendedStateMachine->exists(sm : StateMachine |&#xD;
-          sm.region->includes(redefinedRegion)))&#xD;
-    endif&#xD;
-else&#xD;
-  false&#xD;
-endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Region-isRedefinitionContextValid-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Region-isRedefinitionContextValid-redefinedElement" name="redefinedElement" type="RedefinableElement"/>
-      </ownedOperation>
-      <ownedOperation xmi:id="Region-redefinitionContext.1" name="redefinitionContext" bodyCondition="Region-redefinitionContext.1-spec" isQuery="true">
-        <ownedComment xmi:id="Region-redefinitionContext.1-_ownedComment.0" annotatedElement="Region-redefinitionContext.1">
-          <body>The redefinition context of a Region is the nearest containing StateMachine.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Region-redefinitionContext.1-spec" name="spec" constrainedElement="Region-redefinitionContext.1 Region-redefinitionContext">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Region-redefinitionContext.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (let sm : StateMachine = containingStateMachine() in
-if sm._'context' = null or sm.general->notEmpty() then
-  sm
-else
-  sm._'context'
-endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Region-redefinitionContext.1-result" name="result" type="Classifier" direction="return"/>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="State" name="State">
-      <ownedComment xmi:id="State-_ownedComment.0" annotatedElement="State">
-        <body>A State models a situation during which some (usually implicit) invariant condition holds.</body>
-      </ownedComment>
-      <ownedRule xmi:id="State-entry_or_exit" name="entry_or_exit" constrainedElement="State">
-        <ownedComment xmi:id="State-entry_or_exit-_ownedComment.0" annotatedElement="State-entry_or_exit">
-          <body>Only entry or exit Pseudostates can serve as connection points.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="State-entry_or_exit-_specification">
-          <language>OCL</language>
-          <body>connectionPoint->forAll(kind = PseudostateKind::entryPoint or kind = PseudostateKind::exitPoint)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="State-submachine_states" name="submachine_states" constrainedElement="State">
-        <ownedComment xmi:id="State-submachine_states-_ownedComment.0" annotatedElement="State-submachine_states">
-          <body>Only submachine States can have connection point references.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="State-submachine_states-_specification">
-          <language>OCL</language>
-          <body>isSubmachineState implies connection->notEmpty( )</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="State-composite_states" name="composite_states" constrainedElement="State">
-        <ownedComment xmi:id="State-composite_states-_ownedComment.0" annotatedElement="State-composite_states">
-          <body>Only composite States can have entry or exit Pseudostates defined.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="State-composite_states-_specification">
-          <language>OCL</language>
-          <body>connectionPoint->notEmpty() implies isComposite</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="State-destinations_or_sources_of_transitions" name="destinations_or_sources_of_transitions" constrainedElement="State">
-        <ownedComment xmi:id="State-destinations_or_sources_of_transitions-_ownedComment.0" annotatedElement="State-destinations_or_sources_of_transitions">
-          <body>The connection point references used as destinations/sources of Transitions associated with a submachine State must be defined as entry/exit points in the submachine StateMachine.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="State-destinations_or_sources_of_transitions-_specification">
-          <language>OCL</language>
-          <body>self.isSubmachineState implies (self.connection->forAll (cp |&#xD;
-  cp.entry->forAll (ps | ps.stateMachine = self.submachine) and&#xD;
-  cp.exit->forAll (ps | ps.stateMachine = self.submachine)))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="State-submachine_or_regions" name="submachine_or_regions" constrainedElement="State">
-        <ownedComment xmi:id="State-submachine_or_regions-_ownedComment.0" annotatedElement="State-submachine_or_regions">
-          <body>A State is not allowed to have both a submachine and Regions.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="State-submachine_or_regions-_specification">
-          <language>OCL</language>
-          <body>isComposite implies not isSubmachineState</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="State-_generalization.0" general="RedefinableElement"/>
-      <generalization xmi:id="State-_generalization.1" general="Namespace"/>
-      <generalization xmi:id="State-_generalization.2" general="Vertex"/>
-      <ownedAttribute xmi:id="State-connection" name="connection" type="ConnectionPointReference" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_connection_state">
-        <ownedComment xmi:id="State-connection-_ownedComment.0" annotatedElement="State-connection">
-          <body>The entry and exit connection points used in conjunction with this (submachine) State, i.e., as targets and sources, respectively, in the Region with the submachine State. A connection point reference references the corresponding definition of a connection point Pseudostate in the StateMachine referenced by the submachine State.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="State-connection-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="State-connection-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="State-connectionPoint" name="connectionPoint" type="Pseudostate" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_connectionPoint_state">
-        <ownedComment xmi:id="State-connectionPoint-_ownedComment.0" annotatedElement="State-connectionPoint">
-          <body>The entry and exit Pseudostates of a composite State. These can only be entry or exit Pseudostates, and they must have different names. They can only be defined for composite States.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="State-connectionPoint-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="State-connectionPoint-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="State-deferrableTrigger" name="deferrableTrigger" type="Trigger" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_deferrableTrigger_state">
-        <ownedComment xmi:id="State-deferrableTrigger-_ownedComment.0" annotatedElement="State-deferrableTrigger">
-          <body>A list of Triggers that are candidates to be retained by the StateMachine if they trigger no Transitions out of the State (not consumed). A deferred Trigger is retained until the StateMachine reaches a State configuration where it is no longer deferred.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="State-deferrableTrigger-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="State-deferrableTrigger-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="State-doActivity" name="doActivity" type="Behavior" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_doActivity_state">
-        <ownedComment xmi:id="State-doActivity-_ownedComment.0" annotatedElement="State-doActivity">
-          <body>An optional Behavior that is executed while being in the State. The execution starts when this State is entered, and ceases either by itself when done, or when the State is exited, whichever comes first.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="State-doActivity-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="State-entry" name="entry" type="Behavior" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_entry_state">
-        <ownedComment xmi:id="State-entry-_ownedComment.0" annotatedElement="State-entry">
-          <body>An optional Behavior that is executed whenever this State is entered regardless of the Transition taken to reach the State. If defined, entry Behaviors are always executed to completion prior to any internal Behavior or Transitions performed within the State.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="State-entry-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="State-exit" name="exit" type="Behavior" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_exit_state">
-        <ownedComment xmi:id="State-exit-_ownedComment.0" annotatedElement="State-exit">
-          <body>An optional Behavior that is executed whenever this State is exited regardless of which Transition was taken out of the State. If defined, exit Behaviors are always executed to completion only after all internal and transition Behaviors have completed execution.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="State-exit-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="State-isComposite" name="isComposite" isReadOnly="true" isDerived="true">
-        <ownedComment xmi:id="State-isComposite-_ownedComment.0" annotatedElement="State-isComposite">
-          <body>A state with isComposite=true is said to be a composite State. A composite State is a State that contains at least one Region.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="State-isOrthogonal" name="isOrthogonal" isReadOnly="true" isDerived="true">
-        <ownedComment xmi:id="State-isOrthogonal-_ownedComment.0" annotatedElement="State-isOrthogonal">
-          <body>A State with isOrthogonal=true is said to be an orthogonal composite State An orthogonal composite State contains two or more Regions.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="State-isSimple" name="isSimple" isReadOnly="true" isDerived="true">
-        <ownedComment xmi:id="State-isSimple-_ownedComment.0" annotatedElement="State-isSimple">
-          <body>A State with isSimple=true is said to be a simple State A simple State does not have any Regions and it does not refer to any submachine StateMachine.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="State-isSimple-_defaultValue" value="true"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="State-isSubmachineState" name="isSubmachineState" isReadOnly="true" isDerived="true">
-        <ownedComment xmi:id="State-isSubmachineState-_ownedComment.0" annotatedElement="State-isSubmachineState">
-          <body>A State with isSubmachineState=true is said to be a submachine State Such a State refers to another StateMachine(submachine).</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="State-redefinedState" name="redefinedState" type="State" subsettedProperty="RedefinableElement-redefinedElement" association="A_redefinedState_state">
-        <ownedComment xmi:id="State-redefinedState-_ownedComment.0" annotatedElement="State-redefinedState">
-          <body>The State of which this State is a redefinition.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="State-redefinedState-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="State-redefinitionContext" name="redefinitionContext" type="Classifier" isReadOnly="true" isDerived="true" redefinedProperty="RedefinableElement-redefinitionContext" association="A_redefinitionContext_state">
-        <ownedComment xmi:id="State-redefinitionContext-_ownedComment.0" annotatedElement="State-redefinitionContext">
-          <body>References the Classifier in which context this element may be redefined.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="State-region" name="region" type="Region" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_region_state">
-        <ownedComment xmi:id="State-region-_ownedComment.0" annotatedElement="State-region">
-          <body>The Regions owned directly by the State.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="State-region-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="State-region-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="State-stateInvariant" name="stateInvariant" type="Constraint" aggregation="composite" subsettedProperty="Namespace-ownedRule" association="A_stateInvariant_owningState">
-        <ownedComment xmi:id="State-stateInvariant-_ownedComment.0" annotatedElement="State-stateInvariant">
-          <body>Specifies conditions that are always true when this State is the current State. In ProtocolStateMachines state invariants are additional conditions to the preconditions of the outgoing Transitions, and to the postcondition of the incoming Transitions.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="State-stateInvariant-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="State-submachine" name="submachine" type="StateMachine" association="A_submachineState_submachine">
-        <ownedComment xmi:id="State-submachine-_ownedComment.0" annotatedElement="State-submachine">
-          <body>The StateMachine that is to be inserted in place of the (submachine) State.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="State-submachine-_lowerValue"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="State-containingStateMachine" name="containingStateMachine" bodyCondition="State-containingStateMachine-spec" isQuery="true" redefinedOperation="Vertex-containingStateMachine">
-        <ownedComment xmi:id="State-containingStateMachine-_ownedComment.0" annotatedElement="State-containingStateMachine">
-          <body>The query containingStateMachine() returns the StateMachine that contains the State either directly or transitively.</body>
-        </ownedComment>
-        <ownedRule xmi:id="State-containingStateMachine-spec" name="spec" constrainedElement="State-containingStateMachine">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="State-containingStateMachine-spec-_specification">
-            <language>OCL</language>
-            <body>result = (container.containingStateMachine())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="State-containingStateMachine-result" name="result" type="StateMachine" direction="return"/>
-      </ownedOperation>
-      <ownedOperation xmi:id="State-isComposite.1" name="isComposite" bodyCondition="State-isComposite.1-spec" isQuery="true">
-        <ownedComment xmi:id="State-isComposite.1-_ownedComment.0" annotatedElement="State-isComposite.1">
-          <body>A composite State is a State with at least one Region.</body>
-        </ownedComment>
-        <ownedRule xmi:id="State-isComposite.1-spec" name="spec" constrainedElement="State-isComposite.1 State-isComposite">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="State-isComposite.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (region->notEmpty())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="State-isComposite.1-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="State-isConsistentWith" name="isConsistentWith" bodyCondition="State-isConsistentWith-spec" isQuery="true" precondition="State-isConsistentWith-pre" redefinedOperation="RedefinableElement-isConsistentWith">
-        <ownedComment xmi:id="State-isConsistentWith-_ownedComment.0" annotatedElement="State-isConsistentWith">
-          <body>The query isConsistentWith() specifies that a redefining State is consistent with a redefined State provided that the redefining State is an extension of the redefined State A simple State can be redefined (extended) to become a composite State (by adding one or more Regions) and a composite State can be redefined (extended) by adding Regions and by adding Vertices, States, and Transitions to inherited Regions. All States may add or replace entry, exit, and 'doActivity' Behaviors.</body>
-        </ownedComment>
-        <ownedRule xmi:id="State-isConsistentWith-spec" name="spec" constrainedElement="State-isConsistentWith">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="State-isConsistentWith-spec-_specification">
-            <language>OCL</language>
-            <body>result = (-- the following is merely a default body; it is expected that the specific form of this constraint will be specified by profiles&#xD;
-true)</body>
-          </specification>
-        </ownedRule>
-        <ownedRule xmi:id="State-isConsistentWith-pre" name="pre" constrainedElement="State-isConsistentWith">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="State-isConsistentWith-pre-_specification">
-            <language>OCL</language>
-            <body>redefiningElement.isRedefinitionContextValid(self)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="State-isConsistentWith-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="State-isConsistentWith-redefiningElement" name="redefiningElement" type="RedefinableElement"/>
-      </ownedOperation>
-      <ownedOperation xmi:id="State-isOrthogonal.1" name="isOrthogonal" bodyCondition="State-isOrthogonal.1-spec" isQuery="true">
-        <ownedComment xmi:id="State-isOrthogonal.1-_ownedComment.0" annotatedElement="State-isOrthogonal.1">
-          <body>An orthogonal State is a composite state with at least 2 regions.</body>
-        </ownedComment>
-        <ownedRule xmi:id="State-isOrthogonal.1-spec" name="spec" constrainedElement="State-isOrthogonal.1 State-isOrthogonal">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="State-isOrthogonal.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (region->size () > 1)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="State-isOrthogonal.1-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="State-isRedefinitionContextValid" name="isRedefinitionContextValid" bodyCondition="State-isRedefinitionContextValid-spec" isQuery="true" redefinedOperation="RedefinableElement-isRedefinitionContextValid">
-        <ownedComment xmi:id="State-isRedefinitionContextValid-_ownedComment.0" annotatedElement="State-isRedefinitionContextValid">
-          <body>The query isRedefinitionContextValid() specifies whether the redefinition contexts of a State are properly related to the redefinition contexts of the specified State to allow this element to redefine the other. This means that the containing Region of a redefining State must redefine the containing Region of the redefined State.</body>
-        </ownedComment>
-        <ownedRule xmi:id="State-isRedefinitionContextValid-spec" name="spec" constrainedElement="State-isRedefinitionContextValid">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="State-isRedefinitionContextValid-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if redefinedElement.oclIsKindOf(State) then&#xD;
-  let redefinedState : State = redefinedElement.oclAsType(State) in&#xD;
-    container.redefinedElement.oclAsType(Region)->exists(r:Region |&#xD;
-      r.subvertex->includes(redefinedState))&#xD;
-else&#xD;
-  false&#xD;
-endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="State-isRedefinitionContextValid-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="State-isRedefinitionContextValid-redefinedElement" name="redefinedElement" type="RedefinableElement"/>
-      </ownedOperation>
-      <ownedOperation xmi:id="State-isSimple.1" name="isSimple" bodyCondition="State-isSimple.1-spec" isQuery="true">
-        <ownedComment xmi:id="State-isSimple.1-_ownedComment.0" annotatedElement="State-isSimple.1">
-          <body>A simple State is a State without any regions.</body>
-        </ownedComment>
-        <ownedRule xmi:id="State-isSimple.1-spec" name="spec" constrainedElement="State-isSimple.1 State-isSimple">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="State-isSimple.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = ((region->isEmpty()) and not isSubmachineState())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="State-isSimple.1-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="State-isSubmachineState.1" name="isSubmachineState" bodyCondition="State-isSubmachineState.1-spec" isQuery="true">
-        <ownedComment xmi:id="State-isSubmachineState.1-_ownedComment.0" annotatedElement="State-isSubmachineState.1">
-          <body>Only submachine State references another StateMachine.</body>
-        </ownedComment>
-        <ownedRule xmi:id="State-isSubmachineState.1-spec" name="spec" constrainedElement="State-isSubmachineState.1 State-isSubmachineState">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="State-isSubmachineState.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (submachine &lt;> null)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="State-isSubmachineState.1-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="State-redefinitionContext.1" name="redefinitionContext" bodyCondition="State-redefinitionContext.1-spec" isQuery="true">
-        <ownedComment xmi:id="State-redefinitionContext.1-_ownedComment.0" annotatedElement="State-redefinitionContext.1">
-          <body>The redefinition context of a State is the nearest containing StateMachine.</body>
-        </ownedComment>
-        <ownedRule xmi:id="State-redefinitionContext.1-spec" name="spec" constrainedElement="State-redefinitionContext.1 State-redefinitionContext">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="State-redefinitionContext.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (let sm : StateMachine = containingStateMachine() in
-if sm._'context' = null or sm.general->notEmpty() then
-  sm
-else
-  sm._'context'
-endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="State-redefinitionContext.1-result" name="result" type="Classifier" direction="return"/>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="StateMachine" name="StateMachine">
-      <ownedComment xmi:id="StateMachine-_ownedComment.0" annotatedElement="StateMachine">
-        <body>StateMachines can be used to express event-driven behaviors of parts of a system. Behavior is modeled as a traversal of a graph of Vertices interconnected by one or more joined Transition arcs that are triggered by the dispatching of successive Event occurrences. During this traversal, the StateMachine may execute a sequence of Behaviors associated with various elements of the StateMachine.</body>
-      </ownedComment>
-      <ownedRule xmi:id="StateMachine-connection_points" name="connection_points" constrainedElement="StateMachine">
-        <ownedComment xmi:id="StateMachine-connection_points-_ownedComment.0" annotatedElement="StateMachine-connection_points">
-          <body>The connection points of a StateMachine are Pseudostates of kind entry point or exit point.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="StateMachine-connection_points-_specification">
-          <language>OCL</language>
-          <body>connectionPoint->forAll (kind = PseudostateKind::entryPoint or kind = PseudostateKind::exitPoint)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="StateMachine-classifier_context" name="classifier_context" constrainedElement="StateMachine">
-        <ownedComment xmi:id="StateMachine-classifier_context-_ownedComment.0" annotatedElement="StateMachine-classifier_context">
-          <body>The Classifier context of a StateMachine cannot be an Interface.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="StateMachine-classifier_context-_specification">
-          <language>OCL</language>
-          <body>_'context' &lt;> null implies not _'context'.oclIsKindOf(Interface)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="StateMachine-method" name="method" constrainedElement="StateMachine">
-        <ownedComment xmi:id="StateMachine-method-_ownedComment.0" annotatedElement="StateMachine-method">
-          <body>A StateMachine as the method for a BehavioralFeature cannot have entry/exit connection points.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="StateMachine-method-_specification">
-          <language>OCL</language>
-          <body>specification &lt;> null implies connectionPoint->isEmpty()</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="StateMachine-context_classifier" name="context_classifier" constrainedElement="StateMachine">
-        <ownedComment xmi:id="StateMachine-context_classifier-_ownedComment.0" annotatedElement="StateMachine-context_classifier">
-          <body>The context Classifier of the method StateMachine of a BehavioralFeature must be the Classifier that owns the BehavioralFeature.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="StateMachine-context_classifier-_specification">
-          <language>OCL</language>
-          <body>specification &lt;> null implies ( _'context' &lt;> null and specification.featuringClassifier->exists(c | c = _'context'))</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="StateMachine-_generalization.0" general="Behavior"/>
-      <ownedAttribute xmi:id="StateMachine-connectionPoint" name="connectionPoint" type="Pseudostate" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_connectionPoint_stateMachine">
-        <ownedComment xmi:id="StateMachine-connectionPoint-_ownedComment.0" annotatedElement="StateMachine-connectionPoint">
-          <body>The connection points defined for this StateMachine. They represent the interface of the StateMachine when used as part of submachine State</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="StateMachine-connectionPoint-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StateMachine-connectionPoint-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="StateMachine-extendedStateMachine" name="extendedStateMachine" type="StateMachine" redefinedProperty="Behavior-redefinedBehavior" association="A_extendedStateMachine_stateMachine">
-        <ownedComment xmi:id="StateMachine-extendedStateMachine-_ownedComment.0" annotatedElement="StateMachine-extendedStateMachine">
-          <body>The StateMachines of which this is an extension.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="StateMachine-extendedStateMachine-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StateMachine-extendedStateMachine-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="StateMachine-region" name="region" type="Region" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_region_stateMachine">
-        <ownedComment xmi:id="StateMachine-region-_ownedComment.0" annotatedElement="StateMachine-region">
-          <body>The Regions owned directly by the StateMachine.</body>
-        </ownedComment>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StateMachine-region-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="StateMachine-submachineState" name="submachineState" type="State" association="A_submachineState_submachine">
-        <ownedComment xmi:id="StateMachine-submachineState-_ownedComment.0" annotatedElement="StateMachine-submachineState">
-          <body>References the submachine(s) in case of a submachine State. Multiple machines are referenced in case of a concurrent State.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="StateMachine-submachineState-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StateMachine-submachineState-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="StateMachine-LCA" name="LCA" bodyCondition="StateMachine-LCA-spec" isQuery="true">
-        <ownedComment xmi:id="StateMachine-LCA-_ownedComment.0" annotatedElement="StateMachine-LCA">
-          <body>The operation LCA(s1,s2) returns the Region that is the least common ancestor of Vertices s1 and s2, based on the StateMachine containment hierarchy.</body>
-        </ownedComment>
-        <ownedRule xmi:id="StateMachine-LCA-spec" name="spec" constrainedElement="StateMachine-LCA">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="StateMachine-LCA-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if ancestor(s1, s2) then &#xD;
-    s2.container&#xD;
-else&#xD;
-	if ancestor(s2, s1) then&#xD;
-	    s1.container &#xD;
-	else &#xD;
-	    LCA(s1.container.state, s2.container.state)&#xD;
-	endif&#xD;
-endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="StateMachine-LCA-result" name="result" type="Region" direction="return"/>
-        <ownedParameter xmi:id="StateMachine-LCA-s1" name="s1" type="Vertex"/>
-        <ownedParameter xmi:id="StateMachine-LCA-s2" name="s2" type="Vertex"/>
-      </ownedOperation>
-      <ownedOperation xmi:id="StateMachine-ancestor" name="ancestor" bodyCondition="StateMachine-ancestor-spec" isQuery="true">
-        <ownedComment xmi:id="StateMachine-ancestor-_ownedComment.0" annotatedElement="StateMachine-ancestor">
-          <body>The query ancestor(s1, s2) checks whether Vertex s2 is an ancestor of Vertex s1.</body>
-        </ownedComment>
-        <ownedRule xmi:id="StateMachine-ancestor-spec" name="spec" constrainedElement="StateMachine-ancestor">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="StateMachine-ancestor-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if (s2 = s1) then &#xD;
-	true &#xD;
-else &#xD;
-	if s1.container.stateMachine->notEmpty() then &#xD;
-	    true&#xD;
-	else &#xD;
-	    if s2.container.stateMachine->notEmpty() then &#xD;
-	        false&#xD;
-	    else&#xD;
-	        ancestor(s1, s2.container.state)&#xD;
-	     endif&#xD;
-	 endif&#xD;
-endif  )</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="StateMachine-ancestor-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="StateMachine-ancestor-s1" name="s1" type="Vertex"/>
-        <ownedParameter xmi:id="StateMachine-ancestor-s2" name="s2" type="Vertex"/>
-      </ownedOperation>
-      <ownedOperation xmi:id="StateMachine-isConsistentWith" name="isConsistentWith" bodyCondition="StateMachine-isConsistentWith-spec" isQuery="true" redefinedOperation="RedefinableElement-isConsistentWith">
-        <ownedComment xmi:id="StateMachine-isConsistentWith-_ownedComment.0" annotatedElement="StateMachine-isConsistentWith">
-          <body>The query isConsistentWith() specifies that a redefining StateMachine is consistent with a redefined StateMachine provided that the redefining StateMachine is an extension of the redefined StateMachine : Regions are inherited and Regions can be added, inherited Regions can be redefined. In case of multiple redefining StateMachine, extension implies that the redefining StateMachine gets orthogonal Regions for each of the redefined StateMachine.</body>
-        </ownedComment>
-        <ownedRule xmi:id="StateMachine-isConsistentWith-spec" name="spec" constrainedElement="StateMachine-isConsistentWith">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="StateMachine-isConsistentWith-spec-_specification">
-            <language>OCL</language>
-            <body>result = (-- the following is merely a default body; it is expected that the specific form of this constraint will be specified by profiles&#xD;
-true)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="StateMachine-isConsistentWith-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="StateMachine-isConsistentWith-redefiningElement" name="redefiningElement" type="RedefinableElement"/>
-      </ownedOperation>
-      <ownedOperation xmi:id="StateMachine-isRedefinitionContextValid" name="isRedefinitionContextValid" bodyCondition="StateMachine-isRedefinitionContextValid-spec" isQuery="true" redefinedOperation="RedefinableElement-isRedefinitionContextValid">
-        <ownedComment xmi:id="StateMachine-isRedefinitionContextValid-_ownedComment.0" annotatedElement="StateMachine-isRedefinitionContextValid">
-          <body>The query isRedefinitionContextValid() specifies whether the redefinition context of a StateMachine is properly related to the redefinition contexts of the specified StateMachine to allow this element to redefine the other. The context Classifier of a redefining StateMachine must redefine the context Classifier of the redefined StateMachine.</body>
-        </ownedComment>
-        <ownedRule xmi:id="StateMachine-isRedefinitionContextValid-spec" name="spec" constrainedElement="StateMachine-isRedefinitionContextValid">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="StateMachine-isRedefinitionContextValid-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if redefinedElement.oclIsKindOf(StateMachine) then&#xD;
-  let redefinedStateMachine : StateMachine = redefinedElement.oclAsType(StateMachine) in&#xD;
-    self._'context'().oclAsType(BehavioredClassifier).redefinedClassifier->&#xD;
-      includes(redefinedStateMachine._'context'())&#xD;
-else&#xD;
-  false&#xD;
-endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="StateMachine-isRedefinitionContextValid-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="StateMachine-isRedefinitionContextValid-redefinedElement" name="redefinedElement" type="RedefinableElement"/>
-      </ownedOperation>
-      <ownedOperation xmi:id="StateMachine-LCAState" name="LCAState" bodyCondition="StateMachine-LCAState-spec" isQuery="true">
-        <ownedComment xmi:id="StateMachine-LCAState-_ownedComment.0" annotatedElement="StateMachine-LCAState">
-          <body>This utility funciton is like the LCA, except that it returns the nearest composite State that contains both input Vertices.</body>
-        </ownedComment>
-        <ownedRule xmi:id="StateMachine-LCAState-spec" name="spec" constrainedElement="StateMachine-LCAState">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="StateMachine-LCAState-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if v2.oclIsTypeOf(State) and ancestor(v1, v2) then&#xD;
-	v2.oclAsType(State)&#xD;
-else if v1.oclIsTypeOf(State) and ancestor(v2, v1) then&#xD;
-	v1.oclAsType(State)&#xD;
-else if (v1.container.state->isEmpty() or v2.container.state->isEmpty()) then &#xD;
-	null.oclAsType(State)&#xD;
-else LCAState(v1.container.state, v2.container.state)&#xD;
-endif endif endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="StateMachine-LCAState-result" name="result" type="State" direction="return"/>
-        <ownedParameter xmi:id="StateMachine-LCAState-v1" name="v1" type="Vertex"/>
-        <ownedParameter xmi:id="StateMachine-LCAState-v2" name="v2" type="Vertex"/>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Transition" name="Transition">
-      <ownedComment xmi:id="Transition-_ownedComment.0" annotatedElement="Transition">
-        <body>A Transition represents an arc between exactly one source Vertex and exactly one Target vertex (the source and targets may be the same Vertex). It may form part of a compound transition, which takes the StateMachine from one steady State configuration to another, representing the full response of the StateMachine to an occurrence of an Event that triggered it.</body>
-      </ownedComment>
-      <ownedRule xmi:id="Transition-state_is_external" name="state_is_external" constrainedElement="Transition">
-        <ownedComment xmi:id="Transition-state_is_external-_ownedComment.0" annotatedElement="Transition-state_is_external">
-          <body>A Transition with kind external can source any Vertex except entry points.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Transition-state_is_external-_specification">
-          <language>OCL</language>
-          <body>(kind = TransitionKind::external) implies&#xD;
-	not (source.oclIsKindOf(Pseudostate) and source.oclAsType(Pseudostate).kind = PseudostateKind::entryPoint)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Transition-join_segment_guards" name="join_segment_guards" constrainedElement="Transition">
-        <ownedComment xmi:id="Transition-join_segment_guards-_ownedComment.0" annotatedElement="Transition-join_segment_guards">
-          <body>A join segment must not have Guards or Triggers.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Transition-join_segment_guards-_specification">
-          <language>OCL</language>
-          <body>(target.oclIsKindOf(Pseudostate) and target.oclAsType(Pseudostate).kind = PseudostateKind::join) implies (guard = null and trigger->isEmpty())</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Transition-state_is_internal" name="state_is_internal" constrainedElement="Transition">
-        <ownedComment xmi:id="Transition-state_is_internal-_ownedComment.0" annotatedElement="Transition-state_is_internal">
-          <body>A Transition with kind internal must have a State as its source, and its source and target must be equal.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Transition-state_is_internal-_specification">
-          <language>OCL</language>
-          <body>(kind = TransitionKind::internal) implies&#xD;
-		(source.oclIsKindOf (State) and source = target)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Transition-outgoing_pseudostates" name="outgoing_pseudostates" constrainedElement="Transition">
-        <ownedComment xmi:id="Transition-outgoing_pseudostates-_ownedComment.0" annotatedElement="Transition-outgoing_pseudostates">
-          <body>Transitions outgoing Pseudostates may not have a Trigger.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Transition-outgoing_pseudostates-_specification">
-          <language>OCL</language>
-          <body>source.oclIsKindOf(Pseudostate) and (source.oclAsType(Pseudostate).kind &lt;> PseudostateKind::initial) implies trigger->isEmpty()</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Transition-join_segment_state" name="join_segment_state" constrainedElement="Transition">
-        <ownedComment xmi:id="Transition-join_segment_state-_ownedComment.0" annotatedElement="Transition-join_segment_state">
-          <body>A join segment must always originate from a State.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Transition-join_segment_state-_specification">
-          <language>OCL</language>
-          <body>(target.oclIsKindOf(Pseudostate) and target.oclAsType(Pseudostate).kind = PseudostateKind::join) implies (source.oclIsKindOf(State))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Transition-fork_segment_state" name="fork_segment_state" constrainedElement="Transition">
-        <ownedComment xmi:id="Transition-fork_segment_state-_ownedComment.0" annotatedElement="Transition-fork_segment_state">
-          <body>A fork segment must always target a State.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Transition-fork_segment_state-_specification">
-          <language>OCL</language>
-          <body>(source.oclIsKindOf(Pseudostate) and  source.oclAsType(Pseudostate).kind = PseudostateKind::fork) implies (target.oclIsKindOf(State))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Transition-state_is_local" name="state_is_local" constrainedElement="Transition">
-        <ownedComment xmi:id="Transition-state_is_local-_ownedComment.0" annotatedElement="Transition-state_is_local">
-          <body>A Transition with kind local must have a composite State or an entry point as its source.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Transition-state_is_local-_specification">
-          <language>OCL</language>
-          <body>(kind = TransitionKind::local) implies&#xD;
-		((source.oclIsKindOf (State) and source.oclAsType(State).isComposite) or&#xD;
-		(source.oclIsKindOf (Pseudostate) and source.oclAsType(Pseudostate).kind = PseudostateKind::entryPoint))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Transition-initial_transition" name="initial_transition" constrainedElement="Transition">
-        <ownedComment xmi:id="Transition-initial_transition-_ownedComment.0" annotatedElement="Transition-initial_transition">
-          <body>An initial Transition at the topmost level Region of a StateMachine that has no Trigger.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Transition-initial_transition-_specification">
-          <language>OCL</language>
-          <body>(source.oclIsKindOf(Pseudostate) and container.stateMachine->notEmpty()) implies
-	trigger->isEmpty()</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Transition-fork_segment_guards" name="fork_segment_guards" constrainedElement="Transition">
-        <ownedComment xmi:id="Transition-fork_segment_guards-_ownedComment.0" annotatedElement="Transition-fork_segment_guards">
-          <body>A fork segment must not have Guards or Triggers.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Transition-fork_segment_guards-_specification">
-          <language>OCL</language>
-          <body>(source.oclIsKindOf(Pseudostate) and source.oclAsType(Pseudostate).kind = PseudostateKind::fork) implies (guard = null and trigger->isEmpty())</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="Transition-_generalization.0" general="Namespace"/>
-      <generalization xmi:id="Transition-_generalization.1" general="RedefinableElement"/>
-      <ownedAttribute xmi:id="Transition-container" name="container" type="Region" subsettedProperty="NamedElement-namespace" association="A_transition_container">
-        <ownedComment xmi:id="Transition-container-_ownedComment.0" annotatedElement="Transition-container">
-          <body>Designates the Region that owns this Transition.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Transition-effect" name="effect" type="Behavior" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_effect_transition">
-        <ownedComment xmi:id="Transition-effect-_ownedComment.0" annotatedElement="Transition-effect">
-          <body>Specifies an optional behavior to be performed when the Transition fires.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Transition-effect-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Transition-guard" name="guard" type="Constraint" aggregation="composite" subsettedProperty="Namespace-ownedRule" association="A_guard_transition">
-        <ownedComment xmi:id="Transition-guard-_ownedComment.0" annotatedElement="Transition-guard">
-          <body>A guard is a Constraint that provides a fine-grained control over the firing of the Transition. The guard is evaluated when an Event occurrence is dispatched by the StateMachine. If the guard is true at that time, the Transition may be enabled, otherwise, it is disabled. Guards should be pure expressions without side effects. Guard expressions with side effects are ill formed.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Transition-guard-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Transition-kind" name="kind" type="TransitionKind">
-        <ownedComment xmi:id="Transition-kind-_ownedComment.0" annotatedElement="Transition-kind">
-          <body>Indicates the precise type of the Transition.</body>
-        </ownedComment>
-        <defaultValue xmi:type="uml:InstanceValue" xmi:id="Transition-kind-_defaultValue" type="TransitionKind" instance="TransitionKind-external"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Transition-redefinedTransition" name="redefinedTransition" type="Transition" subsettedProperty="RedefinableElement-redefinedElement" association="A_redefinedTransition_transition">
-        <ownedComment xmi:id="Transition-redefinedTransition-_ownedComment.0" annotatedElement="Transition-redefinedTransition">
-          <body>The Transition that is redefined by this Transition.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Transition-redefinedTransition-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Transition-redefinitionContext" name="redefinitionContext" type="Classifier" isReadOnly="true" isDerived="true" redefinedProperty="RedefinableElement-redefinitionContext" association="A_redefinitionContext_transition">
-        <ownedComment xmi:id="Transition-redefinitionContext-_ownedComment.0" annotatedElement="Transition-redefinitionContext">
-          <body>References the Classifier in which context this element may be redefined.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Transition-source" name="source" visibility="public" type="Vertex" association="A_outgoing_source_vertex">
-        <ownedComment xmi:id="Transition-source-_ownedComment.0" annotatedElement="Transition-source">
-          <body>Designates the originating Vertex (State or Pseudostate) of the Transition.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Transition-source-_lowerValue" value="1"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Transition-source-_upperValue" value="1"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Transition-target" name="target" visibility="public" type="Vertex" association="A_incoming_target_vertex">
-        <ownedComment xmi:id="Transition-target-_ownedComment.0" annotatedElement="Transition-target">
-          <body>Designates the target Vertex that is reached when the Transition is taken.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Transition-target-_lowerValue" value="1"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Transition-target-_upperValue" value="1"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Transition-trigger" name="trigger" type="Trigger" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_trigger_transition">
-        <ownedComment xmi:id="Transition-trigger-_ownedComment.0" annotatedElement="Transition-trigger">
-          <body>Specifies the Triggers that may fire the transition.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Transition-trigger-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Transition-trigger-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="Transition-containingStateMachine" name="containingStateMachine" bodyCondition="Transition-containingStateMachine-spec" isQuery="true">
-        <ownedComment xmi:id="Transition-containingStateMachine-_ownedComment.0" annotatedElement="Transition-containingStateMachine">
-          <body>The query containingStateMachine() returns the StateMachine that contains the Transition either directly or transitively.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Transition-containingStateMachine-spec" name="spec" constrainedElement="Transition-containingStateMachine">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Transition-containingStateMachine-spec-_specification">
-            <language>OCL</language>
-            <body>result = (container.containingStateMachine())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Transition-containingStateMachine-result" name="result" type="StateMachine" direction="return"/>
-      </ownedOperation>
-      <ownedOperation xmi:id="Transition-isConsistentWith" name="isConsistentWith" bodyCondition="Transition-isConsistentWith-spec" isQuery="true" precondition="Transition-isConsistentWith-pre" redefinedOperation="RedefinableElement-isConsistentWith">
-        <ownedComment xmi:id="Transition-isConsistentWith-_ownedComment.0" annotatedElement="Transition-isConsistentWith">
-          <body>The query isConsistentWith() specifies that a redefining Transition is consistent with a redefined Transition provided that the redefining Transition has the following relation to the redefined Transition: A redefining Transition redefines all properties of the corresponding redefined Transition except the source State and the Trigger.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Transition-isConsistentWith-spec" name="spec" constrainedElement="Transition-isConsistentWith">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Transition-isConsistentWith-spec-_specification">
-            <language>OCL</language>
-            <body>result = (-- the following is merely a default body; it is expected that the specific form of this constraint will be specified by profiles&#xD;
-true)</body>
-          </specification>
-        </ownedRule>
-        <ownedRule xmi:id="Transition-isConsistentWith-pre" name="pre" constrainedElement="Transition-isConsistentWith">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Transition-isConsistentWith-pre-_specification">
-            <language>OCL</language>
-            <body>redefiningElement.isRedefinitionContextValid(self)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Transition-isConsistentWith-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Transition-isConsistentWith-redefiningElement" name="redefiningElement" type="RedefinableElement"/>
-      </ownedOperation>
-      <ownedOperation xmi:id="Transition-redefinitionContext.1" name="redefinitionContext" bodyCondition="Transition-redefinitionContext.1-spec" isQuery="true">
-        <ownedComment xmi:id="Transition-redefinitionContext.1-_ownedComment.0" annotatedElement="Transition-redefinitionContext.1">
-          <body>The redefinition context of a Transition is the nearest containing StateMachine.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Transition-redefinitionContext.1-spec" name="spec" constrainedElement="Transition-redefinitionContext.1 Transition-redefinitionContext">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Transition-redefinitionContext.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (let sm : StateMachine = containingStateMachine() in
-if sm._'context' = null or sm.general->notEmpty() then
-  sm
-else
-  sm._'context'
-endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Transition-redefinitionContext.1-result" name="result" type="Classifier" direction="return"/>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Vertex" name="Vertex" isAbstract="true">
-      <ownedComment xmi:id="Vertex-_ownedComment.0" annotatedElement="Vertex">
-        <body>A Vertex is an abstraction of a node in a StateMachine graph. It can be the source or destination of any number of Transitions.</body>
-      </ownedComment>
-      <generalization xmi:id="Vertex-_generalization.0" general="NamedElement"/>
-      <ownedAttribute xmi:id="Vertex-container" name="container" type="Region" subsettedProperty="NamedElement-namespace" association="A_subvertex_container">
-        <ownedComment xmi:id="Vertex-container-_ownedComment.0" annotatedElement="Vertex-container">
-          <body>The Region that contains this Vertex.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Vertex-container-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Vertex-incoming" name="incoming" type="Transition" isReadOnly="true" isDerived="true" association="A_target_vertex_incoming">
-        <ownedComment xmi:id="Vertex-incoming-_ownedComment.0" annotatedElement="Vertex-incoming">
-          <body>Specifies the Transitions entering this Vertex.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Vertex-incoming-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Vertex-incoming-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Vertex-outgoing" name="outgoing" type="Transition" isReadOnly="true" isDerived="true" association="A_source_vertex_outgoing">
-        <ownedComment xmi:id="Vertex-outgoing-_ownedComment.0" annotatedElement="Vertex-outgoing">
-          <body>Specifies the Transitions departing from this Vertex.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Vertex-outgoing-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Vertex-outgoing-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="Vertex-containingStateMachine" name="containingStateMachine" bodyCondition="Vertex-containingStateMachine-spec" isQuery="true">
-        <ownedComment xmi:id="Vertex-containingStateMachine-_ownedComment.0" annotatedElement="Vertex-containingStateMachine">
-          <body>The operation containingStateMachine() returns the StateMachine in which this Vertex is defined.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Vertex-containingStateMachine-spec" name="spec" constrainedElement="Vertex-containingStateMachine">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Vertex-containingStateMachine-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if container &lt;> null
-then
--- the container is a region
-   container.containingStateMachine()
-else 
-   if (self.oclIsKindOf(Pseudostate)) and ((self.oclAsType(Pseudostate).kind = PseudostateKind::entryPoint) or (self.oclAsType(Pseudostate).kind = PseudostateKind::exitPoint)) then
-      self.oclAsType(Pseudostate).stateMachine
-   else 
-      if (self.oclIsKindOf(ConnectionPointReference)) then
-          self.oclAsType(ConnectionPointReference).state.containingStateMachine() -- no other valid cases possible
-      else 
-          null
-      endif
-   endif
-endif
-)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Vertex-containingStateMachine-result" name="result" type="StateMachine" direction="return"/>
-      </ownedOperation>
-      <ownedOperation xmi:id="Vertex-incoming.1" name="incoming" visibility="protected" bodyCondition="Vertex-incoming.1-spec" isQuery="true">
-        <ownedComment xmi:id="Vertex-incoming.1-_ownedComment.0" annotatedElement="Vertex-incoming.1">
-          <body>Derivation for Vertex::/incoming.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Vertex-incoming.1-spec" name="spec" constrainedElement="Vertex-incoming.1 Vertex-incoming">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Vertex-incoming.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (Transition.allInstances()->select(target=self))</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Vertex-incoming.1-result" name="result" type="Transition" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Vertex-incoming.1-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Vertex-incoming.1-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Vertex-outgoing.1" name="outgoing" visibility="protected" bodyCondition="Vertex-outgoing.1-spec" isQuery="true">
-        <ownedComment xmi:id="Vertex-outgoing.1-_ownedComment.0" annotatedElement="Vertex-outgoing.1">
-          <body>Derivation for Vertex::/outgoing</body>
-        </ownedComment>
-        <ownedRule xmi:id="Vertex-outgoing.1-spec" name="spec" constrainedElement="Vertex-outgoing.1 Vertex-outgoing">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Vertex-outgoing.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (Transition.allInstances()->select(source=self))</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Vertex-outgoing.1-result" name="result" type="Transition" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Vertex-outgoing.1-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Vertex-outgoing.1-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Vertex-isContainedInState" name="isContainedInState" bodyCondition="Vertex-isContainedInState-spec" isQuery="true">
-        <ownedComment xmi:id="Vertex-isContainedInState-_ownedComment.0" annotatedElement="Vertex-isContainedInState">
-          <body>This utility operation returns true if the Vertex is contained in the State s (input argument).</body>
-        </ownedComment>
-        <ownedRule xmi:id="Vertex-isContainedInState-spec" name="spec" constrainedElement="Vertex-isContainedInState">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Vertex-isContainedInState-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if not s.isComposite() or container->isEmpty() then&#xD;
-	false&#xD;
-else&#xD;
-	if container.state = s then &#xD;
-		true&#xD;
-	else&#xD;
-		container.state.isContainedInState(s)&#xD;
-	endif&#xD;
-endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Vertex-isContainedInState-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Vertex-isContainedInState-s" name="s" type="State"/>
-      </ownedOperation>
-      <ownedOperation xmi:id="Vertex-isContainedInRegion" name="isContainedInRegion" bodyCondition="Vertex-isContainedInRegion-spec" isQuery="true">
-        <ownedComment xmi:id="Vertex-isContainedInRegion-_ownedComment.0" annotatedElement="Vertex-isContainedInRegion">
-          <body>This utility query returns true if the Vertex is contained in the Region r (input argument).</body>
-        </ownedComment>
-        <ownedRule xmi:id="Vertex-isContainedInRegion-spec" name="spec" constrainedElement="Vertex-isContainedInRegion">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Vertex-isContainedInRegion-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if (container = r) then&#xD;
-	true&#xD;
-else&#xD;
-	if (r.state->isEmpty()) then&#xD;
-		false&#xD;
-	else&#xD;
-		container.state.isContainedInRegion(r)&#xD;
-	endif&#xD;
-endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Vertex-isContainedInRegion-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Vertex-isContainedInRegion-r" name="r" type="Region"/>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Enumeration" xmi:id="PseudostateKind" name="PseudostateKind" visibility="private">
-      <ownedComment xmi:id="PseudostateKind-_ownedComment.0" annotatedElement="PseudostateKind">
-        <body>PseudostateKind is an Enumeration type that is used to differentiate various kinds of Pseudostates.</body>
-      </ownedComment>
-      <ownedLiteral xmi:id="PseudostateKind-initial" name="initial">
-        <ownedComment xmi:id="PseudostateKind-initial-_ownedComment.0" annotatedElement="PseudostateKind-initial">
-          <body>An initial pseudostate represents a default vertex that is the source for a single transition to the default state of a composite state. There can be at most one initial vertex in a region. The outgoing transition from the initial vertex may have a behavior, but not a trigger or guard.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="PseudostateKind-deepHistory" name="deepHistory">
-        <ownedComment xmi:id="PseudostateKind-deepHistory-_ownedComment.0" annotatedElement="PseudostateKind-deepHistory">
-          <body>DeepHistory represents the most recent active configuration of the composite state that directly contains this pseudostate; e.g. the state configuration that was active when the composite state was last exited. A composite state can have at most one deep history vertex. At most one transition may originate from the history connector to the default deep history state. This transition is taken in case the composite state had never been active before. Entry actions of states entered on the path to the state represented by a deep history are performed.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="PseudostateKind-shallowHistory" name="shallowHistory">
-        <ownedComment xmi:id="PseudostateKind-shallowHistory-_ownedComment.0" annotatedElement="PseudostateKind-shallowHistory">
-          <body>ShallowHistory represents the most recent active substate of its containing state (but not the substates of that substate). A composite state can have at most one shallow history vertex. A transition coming into the shallow history vertex is equivalent to a transition coming into the most recent active substate of a state. At most one transition may originate from the history connector to the default shallow history state. This transition is taken in case the composite state had never been active before. Entry actions of states entered on the path to the state represented by a shallow history are performed.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="PseudostateKind-join" name="join">
-        <ownedComment xmi:id="PseudostateKind-join-_ownedComment.0" annotatedElement="PseudostateKind-join">
-          <body>Join vertices serve to merge several transitions emanating from source vertices in different orthogonal regions. The transitions entering a join vertex cannot have guards or triggers.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="PseudostateKind-fork" name="fork">
-        <ownedComment xmi:id="PseudostateKind-fork-_ownedComment.0" annotatedElement="PseudostateKind-fork">
-          <body>Fork vertices serve to split an incoming transition into two or more transitions terminating on orthogonal target vertices (i.e. vertices in different regions of a composite state). The segments outgoing from a fork vertex must not have guards or triggers.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="PseudostateKind-junction" name="junction">
-        <ownedComment xmi:id="PseudostateKind-junction-_ownedComment.0" annotatedElement="PseudostateKind-junction">
-          <body>Junction vertices are semantic-free vertices that are used to chain together multiple transitions. They are used to construct compound transition paths between states. For example, a junction can be used to converge multiple incoming transitions into a single outgoing transition representing a shared transition path (this is known as an merge). Conversely, they can be used to split an incoming transition into multiple outgoing transition segments with different guard conditions. This realizes a static conditional branch. (In the latter case, outgoing transitions whose guard conditions evaluate to false are disabled. A predefined guard denoted 'else' may be defined for at most one outgoing transition. This transition is enabled if all the guards labeling the other transitions are false.) Static conditional branches are distinct from dynamic conditional branches that are realized by choice vertices (described below).</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="PseudostateKind-choice" name="choice">
-        <ownedComment xmi:id="PseudostateKind-choice-_ownedComment.0" annotatedElement="PseudostateKind-choice">
-          <body>Choice vertices which, when reached, result in the dynamic evaluation of the guards of the triggers of its outgoing transitions. This realizes a dynamic conditional branch. It allows splitting of transitions into multiple outgoing paths such that the decision on which path to take may be a function of the results of prior actions performed in the same run-tocompletion step. If more than one of the guards evaluates to true, an arbitrary one is selected. If none of the guards evaluates to true, then the model is considered ill-formed. (To avoid this, it is recommended to define one outgoing transition with the predefined else guard for every choice vertex.) Choice vertices should be distinguished from static branch points that are based on junction points (described above).</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="PseudostateKind-entryPoint" name="entryPoint">
-        <ownedComment xmi:id="PseudostateKind-entryPoint-_ownedComment.0" annotatedElement="PseudostateKind-entryPoint">
-          <body>An entry point pseudostate is an entry point of a state machine or composite state. In each region of the state machine or composite state it has a single transition to a vertex within the same region.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="PseudostateKind-exitPoint" name="exitPoint">
-        <ownedComment xmi:id="PseudostateKind-exitPoint-_ownedComment.0" annotatedElement="PseudostateKind-exitPoint">
-          <body>An exit point pseudostate is an exit point of a state machine or composite state. Entering an exit point within any region of the composite state or state machine referenced by a submachine state implies the exit of this composite state or submachine state and the triggering of the transition that has this exit point as source in the state machine enclosing the submachine or composite state.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="PseudostateKind-terminate" name="terminate">
-        <ownedComment xmi:id="PseudostateKind-terminate-_ownedComment.0" annotatedElement="PseudostateKind-terminate">
-          <body>Entering a terminate pseudostate implies that the execution of this state machine by means of its context object is terminated. The state machine does not exit any states nor does it perform any exit actions other than those associated with the transition leading to the terminate pseudostate. Entering a terminate pseudostate is equivalent to invoking a DestroyObjectAction.</body>
-        </ownedComment>
-      </ownedLiteral>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Enumeration" xmi:id="TransitionKind" name="TransitionKind">
-      <ownedComment xmi:id="TransitionKind-_ownedComment.0" annotatedElement="TransitionKind">
-        <body>TransitionKind is an Enumeration type used to differentiate the various kinds of Transitions.</body>
-      </ownedComment>
-      <ownedLiteral xmi:id="TransitionKind-internal" name="internal">
-        <ownedComment xmi:id="TransitionKind-internal-_ownedComment.0" annotatedElement="TransitionKind-internal">
-          <body>Implies that the Transition, if triggered, occurs without exiting or entering the source State (i.e., it does not cause a state change). This means that the entry or exit condition of the source State will not be invoked. An internal Transition can be taken even if the SateMachine is in one or more Regions nested within the associated State.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="TransitionKind-local" name="local">
-        <ownedComment xmi:id="TransitionKind-local-_ownedComment.0" annotatedElement="TransitionKind-local">
-          <body>Implies that the Transition, if triggered, will not exit the composite (source) State, but it will exit and re-enter any state within the composite State that is in the current state configuration.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="TransitionKind-external" name="external">
-        <ownedComment xmi:id="TransitionKind-external-_ownedComment.0" annotatedElement="TransitionKind-external">
-          <body>Implies that the Transition, if triggered, will exit the composite (source) State.</body>
-        </ownedComment>
-      </ownedLiteral>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_incoming_target_vertex" name="A_incoming_target_vertex" visibility="private" memberEnd="Transition-target A_incoming_target_vertex-incoming">
-      <ownedEnd xmi:id="A_incoming_target_vertex-incoming" name="incoming" visibility="private" type="Transition" association="A_incoming_target_vertex">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_incoming_target_vertex-incoming-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_incoming_target_vertex-incoming-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_outgoing_source_vertex" name="A_outgoing_source_vertex" visibility="private" memberEnd="Transition-source A_outgoing_source_vertex-outgoing">
-      <ownedEnd xmi:id="A_outgoing_source_vertex-outgoing" name="outgoing" visibility="private" type="Transition" association="A_outgoing_source_vertex">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_outgoing_source_vertex-outgoing-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_outgoing_source_vertex-outgoing-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_trigger_transition" name="A_trigger_transition" visibility="private" memberEnd="Transition-trigger A_trigger_transition-transition">
-      <ownedEnd xmi:id="A_trigger_transition-transition" name="transition" type="Transition" subsettedProperty="Element-owner" association="A_trigger_transition">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_trigger_transition-transition-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_guard_transition" name="A_guard_transition" visibility="private" memberEnd="Transition-guard A_guard_transition-transition">
-      <ownedEnd xmi:id="A_guard_transition-transition" name="transition" type="Transition" subsettedProperty="Constraint-context" association="A_guard_transition">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_guard_transition-transition-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_redefinedTransition_transition" name="A_redefinedTransition_transition" visibility="private" memberEnd="Transition-redefinedTransition A_redefinedTransition_transition-transition">
-      <ownedEnd xmi:id="A_redefinedTransition_transition-transition" name="transition" type="Transition" subsettedProperty="A_redefinedElement_redefinableElement-redefinableElement" association="A_redefinedTransition_transition">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_redefinedTransition_transition-transition-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_redefinedTransition_transition-transition-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_redefinitionContext_transition" name="A_redefinitionContext_transition" visibility="private" isDerived="true" memberEnd="Transition-redefinitionContext A_redefinitionContext_transition-transition">
-      <generalization xmi:id="A_redefinitionContext_transition-_generalization.0" general="A_redefinitionContext_redefinableElement"/>
-      <ownedEnd xmi:id="A_redefinitionContext_transition-transition" name="transition" type="Transition" subsettedProperty="A_redefinitionContext_redefinableElement-redefinableElement" association="A_redefinitionContext_transition">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_redefinitionContext_transition-transition-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_redefinitionContext_transition-transition-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_effect_transition" name="A_effect_transition" visibility="private" memberEnd="Transition-effect A_effect_transition-transition">
-      <ownedEnd xmi:id="A_effect_transition-transition" name="transition" type="Transition" subsettedProperty="Element-owner" association="A_effect_transition">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_effect_transition-transition-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_submachineState_submachine" name="A_submachineState_submachine" visibility="private" memberEnd="StateMachine-submachineState State-submachine"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_connectionPoint_stateMachine" name="A_connectionPoint_stateMachine" visibility="private" memberEnd="StateMachine-connectionPoint Pseudostate-stateMachine"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_region_stateMachine" name="A_region_stateMachine" visibility="private" memberEnd="StateMachine-region Region-stateMachine"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_extendedStateMachine_stateMachine" name="A_extendedStateMachine_stateMachine" visibility="private" memberEnd="StateMachine-extendedStateMachine A_extendedStateMachine_stateMachine-stateMachine">
-      <ownedEnd xmi:id="A_extendedStateMachine_stateMachine-stateMachine" name="stateMachine" type="StateMachine" subsettedProperty="A_redefinedBehavior_behavior-behavior" association="A_extendedStateMachine_stateMachine">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_extendedStateMachine_stateMachine-stateMachine-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_extendedStateMachine_stateMachine-stateMachine-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_redefinitionContext_state" name="A_redefinitionContext_state" visibility="private" isDerived="true" memberEnd="State-redefinitionContext A_redefinitionContext_state-state">
-      <generalization xmi:id="A_redefinitionContext_state-_generalization.0" general="A_redefinitionContext_redefinableElement"/>
-      <ownedEnd xmi:id="A_redefinitionContext_state-state" name="state" type="State" subsettedProperty="A_redefinitionContext_redefinableElement-redefinableElement" association="A_redefinitionContext_state">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_redefinitionContext_state-state-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_redefinitionContext_state-state-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_region_state" name="A_region_state" visibility="private" memberEnd="State-region Region-state"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_stateInvariant_owningState" name="A_stateInvariant_owningState" visibility="private" memberEnd="State-stateInvariant A_stateInvariant_owningState-owningState">
-      <ownedEnd xmi:id="A_stateInvariant_owningState-owningState" name="owningState" type="State" subsettedProperty="Constraint-context" association="A_stateInvariant_owningState">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_stateInvariant_owningState-owningState-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_redefinedState_state" name="A_redefinedState_state" visibility="private" memberEnd="State-redefinedState A_redefinedState_state-state">
-      <ownedEnd xmi:id="A_redefinedState_state-state" name="state" type="State" subsettedProperty="A_redefinedElement_redefinableElement-redefinableElement" association="A_redefinedState_state">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_redefinedState_state-state-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_redefinedState_state-state-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_deferrableTrigger_state" name="A_deferrableTrigger_state" visibility="private" memberEnd="State-deferrableTrigger A_deferrableTrigger_state-state">
-      <ownedEnd xmi:id="A_deferrableTrigger_state-state" name="state" type="State" subsettedProperty="Element-owner" association="A_deferrableTrigger_state">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_deferrableTrigger_state-state-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_connection_state" name="A_connection_state" visibility="private" memberEnd="State-connection ConnectionPointReference-state"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_entry_state" name="A_entry_state" visibility="private" memberEnd="State-entry A_entry_state-state">
-      <ownedEnd xmi:id="A_entry_state-state" name="state" type="State" subsettedProperty="Element-owner" association="A_entry_state">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_entry_state-state-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_connectionPoint_state" name="A_connectionPoint_state" visibility="private" memberEnd="State-connectionPoint Pseudostate-state"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_doActivity_state" name="A_doActivity_state" visibility="private" memberEnd="State-doActivity A_doActivity_state-state">
-      <ownedEnd xmi:id="A_doActivity_state-state" name="state" type="State" subsettedProperty="Element-owner" association="A_doActivity_state">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_doActivity_state-state-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_exit_state" name="A_exit_state" visibility="private" memberEnd="State-exit A_exit_state-state">
-      <ownedEnd xmi:id="A_exit_state-state" name="state" type="State" subsettedProperty="Element-owner" association="A_exit_state">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_exit_state-state-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_extendedRegion_region" name="A_extendedRegion_region" visibility="private" memberEnd="Region-extendedRegion A_extendedRegion_region-region">
-      <ownedEnd xmi:id="A_extendedRegion_region-region" name="region" type="Region" subsettedProperty="A_redefinedElement_redefinableElement-redefinableElement" association="A_extendedRegion_region">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_extendedRegion_region-region-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_extendedRegion_region-region-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_subvertex_container" name="A_subvertex_container" visibility="private" memberEnd="Region-subvertex Vertex-container"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_redefinitionContext_region" name="A_redefinitionContext_region" visibility="private" isDerived="true" memberEnd="Region-redefinitionContext A_redefinitionContext_region-region">
-      <generalization xmi:id="A_redefinitionContext_region-_generalization.0" general="A_redefinitionContext_redefinableElement"/>
-      <ownedEnd xmi:id="A_redefinitionContext_region-region" name="region" type="Region" subsettedProperty="A_redefinitionContext_redefinableElement-redefinableElement" association="A_redefinitionContext_region">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_redefinitionContext_region-region-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_redefinitionContext_region-region-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_transition_container" name="A_transition_container" visibility="private" memberEnd="Region-transition Transition-container"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_referred_protocolTransition" name="A_referred_protocolTransition" visibility="private" isDerived="true" memberEnd="ProtocolTransition-referred A_referred_protocolTransition-protocolTransition">
-      <ownedEnd xmi:id="A_referred_protocolTransition-protocolTransition" name="protocolTransition" type="ProtocolTransition" association="A_referred_protocolTransition">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_referred_protocolTransition-protocolTransition-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_referred_protocolTransition-protocolTransition-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_preCondition_protocolTransition" name="A_preCondition_protocolTransition" visibility="private" memberEnd="ProtocolTransition-preCondition A_preCondition_protocolTransition-protocolTransition">
-      <generalization xmi:id="A_preCondition_protocolTransition-_generalization.0" general="A_guard_transition"/>
-      <ownedEnd xmi:id="A_preCondition_protocolTransition-protocolTransition" name="protocolTransition" type="ProtocolTransition" redefinedProperty="A_guard_transition-transition" association="A_preCondition_protocolTransition">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_preCondition_protocolTransition-protocolTransition-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_postCondition_owningTransition" name="A_postCondition_owningTransition" visibility="private" memberEnd="ProtocolTransition-postCondition A_postCondition_owningTransition-owningTransition">
-      <ownedEnd xmi:id="A_postCondition_owningTransition-owningTransition" name="owningTransition" type="ProtocolTransition" subsettedProperty="Constraint-context" association="A_postCondition_owningTransition">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_postCondition_owningTransition-owningTransition-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_conformance_specificMachine" name="A_conformance_specificMachine" visibility="private" memberEnd="ProtocolStateMachine-conformance ProtocolConformance-specificMachine"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_generalMachine_protocolConformance" name="A_generalMachine_protocolConformance" visibility="private" memberEnd="ProtocolConformance-generalMachine A_generalMachine_protocolConformance-protocolConformance">
-      <ownedEnd xmi:id="A_generalMachine_protocolConformance-protocolConformance" name="protocolConformance" type="ProtocolConformance" subsettedProperty="A_target_directedRelationship-directedRelationship" association="A_generalMachine_protocolConformance">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_generalMachine_protocolConformance-protocolConformance-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_generalMachine_protocolConformance-protocolConformance-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_entry_connectionPointReference" name="A_entry_connectionPointReference" visibility="private" memberEnd="ConnectionPointReference-entry A_entry_connectionPointReference-connectionPointReference">
-      <ownedEnd xmi:id="A_entry_connectionPointReference-connectionPointReference" name="connectionPointReference" type="ConnectionPointReference" association="A_entry_connectionPointReference">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_entry_connectionPointReference-connectionPointReference-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_exit_connectionPointReference" name="A_exit_connectionPointReference" visibility="private" memberEnd="ConnectionPointReference-exit A_exit_connectionPointReference-connectionPointReference">
-      <ownedEnd xmi:id="A_exit_connectionPointReference-connectionPointReference" name="connectionPointReference" type="ConnectionPointReference" association="A_exit_connectionPointReference">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_exit_connectionPointReference-connectionPointReference-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Association" name="Association">
-      <ownedComment xmi:id="Association-_ownedComment.0" annotatedElement="Association">
-        <body>A link is a tuple of values that refer to typed objects.  An Association classifies a set of links, each of which is an instance of the Association.  Each value in the link refers to an instance of the type of the corresponding end of the Association.</body>
-      </ownedComment>
-      <ownedRule xmi:id="Association-specialized_end_number" name="specialized_end_number" constrainedElement="Association">
-        <ownedComment xmi:id="Association-specialized_end_number-_ownedComment.0" annotatedElement="Association-specialized_end_number">
-          <body>An Association specializing another Association has the same number of ends as the other Association.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Association-specialized_end_number-_specification">
-          <language>OCL</language>
-          <body>parents()->select(oclIsKindOf(Association)).oclAsType(Association)->forAll(p | p.memberEnd->size() = self.memberEnd->size())</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Association-specialized_end_types" name="specialized_end_types" constrainedElement="Association">
-        <ownedComment xmi:id="Association-specialized_end_types-_ownedComment.0" annotatedElement="Association-specialized_end_types">
-          <body>When an Association specializes another Association, every end of the specific Association corresponds to an end of the general Association, and the specific end reaches the same type or a subtype of the corresponding general end.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Association-specialized_end_types-_specification">
-          <language>OCL</language>
-          <body>Sequence{1..memberEnd->size()}->&#xD;
-	forAll(i | general->select(oclIsKindOf(Association)).oclAsType(Association)->&#xD;
-		forAll(ga | self.memberEnd->at(i).type.conformsTo(ga.memberEnd->at(i).type)))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Association-binary_associations" name="binary_associations" constrainedElement="Association">
-        <ownedComment xmi:id="Association-binary_associations-_ownedComment.0" annotatedElement="Association-binary_associations">
-          <body>Only binary Associations can be aggregations.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Association-binary_associations-_specification">
-          <language>OCL</language>
-          <body>memberEnd->exists(aggregation &lt;> AggregationKind::none) implies (memberEnd->size() = 2 and memberEnd->exists(aggregation = AggregationKind::none))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Association-association_ends" name="association_ends" constrainedElement="Association">
-        <ownedComment xmi:id="Association-association_ends-_ownedComment.0" annotatedElement="Association-association_ends">
-          <body>Ends of Associations with more than two ends must be owned by the Association itself.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Association-association_ends-_specification">
-          <language>OCL</language>
-          <body>memberEnd->size() > 2 implies ownedEnd->includesAll(memberEnd)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Association-ends_must_be_typed" name="ends_must_be_typed" constrainedElement="Association">
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Association-ends_must_be_typed-_specification">
-          <language>OCL</language>
-          <body>memberEnd->forAll(type->notEmpty())</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="Association-_generalization.0" general="Relationship"/>
-      <generalization xmi:id="Association-_generalization.1" general="Classifier"/>
-      <ownedAttribute xmi:id="Association-endType" name="endType" type="Type" isReadOnly="true" isDerived="true" subsettedProperty="Relationship-relatedElement" association="A_endType_association">
-        <ownedComment xmi:id="Association-endType-_ownedComment.0" annotatedElement="Association-endType">
-          <body>The Classifiers that are used as types of the ends of the Association.</body>
-        </ownedComment>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Association-endType-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Association-isDerived" name="isDerived">
-        <ownedComment xmi:id="Association-isDerived-_ownedComment.0" annotatedElement="Association-isDerived">
-          <body>Specifies whether the Association is derived from other model elements such as other Associations.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Association-isDerived-_defaultValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Association-memberEnd" name="memberEnd" type="Property" isOrdered="true" subsettedProperty="Namespace-member" association="A_memberEnd_association">
-        <ownedComment xmi:id="Association-memberEnd-_ownedComment.0" annotatedElement="Association-memberEnd">
-          <body>Each end represents participation of instances of the Classifier connected to the end in links of the Association.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Association-memberEnd-_lowerValue" value="2"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Association-memberEnd-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Association-navigableOwnedEnd" name="navigableOwnedEnd" type="Property" subsettedProperty="Association-ownedEnd" association="A_navigableOwnedEnd_association">
-        <ownedComment xmi:id="Association-navigableOwnedEnd-_ownedComment.0" annotatedElement="Association-navigableOwnedEnd">
-          <body>The navigable ends that are owned by the Association itself.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Association-navigableOwnedEnd-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Association-navigableOwnedEnd-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Association-ownedEnd" name="ownedEnd" type="Property" isOrdered="true" aggregation="composite" subsettedProperty="A_redefinitionContext_redefinableElement-redefinableElement Association-memberEnd Classifier-feature Namespace-ownedMember" association="A_ownedEnd_owningAssociation">
-        <ownedComment xmi:id="Association-ownedEnd-_ownedComment.0" annotatedElement="Association-ownedEnd">
-          <body>The ends that are owned by the Association itself.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Association-ownedEnd-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Association-ownedEnd-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="Association-isBinary" name="isBinary">
-        <ownedComment xmi:id="Association-isBinary-_ownedComment.0" annotatedElement="Association-isBinary">
-          <body>Determines whether this association is a binary association, i.e. whether it has exactly two member ends.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Association-isBinary-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Association-endType.1" name="endType" visibility="protected" bodyCondition="Association-endType.1-spec" isQuery="true">
-        <ownedComment xmi:id="Association-endType.1-_ownedComment.0" annotatedElement="Association-endType.1">
-          <body>endType is derived from the types of the member ends.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Association-endType.1-spec" name="spec" constrainedElement="Association-endType.1 Association-endType">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Association-endType.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (memberEnd->collect(type)->asSet())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Association-endType.1-result" name="result" type="Type" direction="return">
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Association-endType.1-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="AssociationClass" name="AssociationClass">
-      <ownedComment xmi:id="AssociationClass-_ownedComment.0" annotatedElement="AssociationClass">
-        <body>A model element that has both Association and Class properties. An AssociationClass can be seen as an Association that also has Class properties, or as a Class that also has Association properties. It not only connects a set of Classifiers but also defines a set of Features that belong to the Association itself and not to any of the associated Classifiers.</body>
-      </ownedComment>
-      <ownedRule xmi:id="AssociationClass-cannot_be_defined" name="cannot_be_defined" constrainedElement="AssociationClass">
-        <ownedComment xmi:id="AssociationClass-cannot_be_defined-_ownedComment.0" annotatedElement="AssociationClass-cannot_be_defined">
-          <body>An AssociationClass cannot be defined between itself and something else.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="AssociationClass-cannot_be_defined-_specification">
-          <language>OCL</language>
-          <body>self.endType()->excludes(self) and self.endType()->collect(et|et.oclAsType(Classifier).allParents())->flatten()->excludes(self)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="AssociationClass-disjoint_attributes_ends" name="disjoint_attributes_ends" constrainedElement="AssociationClass">
-        <ownedComment xmi:id="AssociationClass-disjoint_attributes_ends-_ownedComment.0" annotatedElement="AssociationClass-disjoint_attributes_ends">
-          <body>The owned attributes and owned ends of an AssociationClass are disjoint.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="AssociationClass-disjoint_attributes_ends-_specification">
-          <language>OCL</language>
-          <body>ownedAttribute->intersection(ownedEnd)->isEmpty()</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="AssociationClass-_generalization.0" general="Class"/>
-      <generalization xmi:id="AssociationClass-_generalization.1" general="Association"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Class" name="Class">
-      <ownedComment xmi:id="Class-_ownedComment.0" annotatedElement="Class">
-        <body>A Class classifies a set of objects and specifies the features that characterize the structure and behavior of those objects.  A Class may have an internal structure and Ports.</body>
-      </ownedComment>
-      <ownedRule xmi:id="Class-passive_class" name="passive_class" constrainedElement="Class">
-        <ownedComment xmi:id="Class-passive_class-_ownedComment.0" annotatedElement="Class-passive_class">
-          <body>Only an active Class may own Receptions and have a classifierBehavior.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Class-passive_class-_specification">
-          <language>OCL</language>
-          <body>not isActive implies (ownedReception->isEmpty() and classifierBehavior = null)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="Class-_generalization.0" general="BehavioredClassifier"/>
-      <generalization xmi:id="Class-_generalization.1" general="EncapsulatedClassifier"/>
-      <ownedAttribute xmi:id="Class-extension" name="extension" type="Extension" isReadOnly="true" isDerived="true" association="A_extension_metaclass">
-        <ownedComment xmi:id="Class-extension-_ownedComment.0" annotatedElement="Class-extension">
-          <body>This property is used when the Class is acting as a metaclass. It references the Extensions that specify additional properties of the metaclass. The property is derived from the Extensions whose memberEnds are typed by the Class.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Class-extension-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Class-extension-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Class-isAbstract" name="isAbstract" redefinedProperty="Classifier-isAbstract">
-        <ownedComment xmi:id="Class-isAbstract-_ownedComment.0" annotatedElement="Class-isAbstract">
-          <body>If true, the Class does not provide a complete declaration and cannot be instantiated. An abstract Class is typically used as a target of Associations or Generalizations.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Class-isAbstract-_defaultValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Class-isActive" name="isActive">
-        <ownedComment xmi:id="Class-isActive-_ownedComment.0" annotatedElement="Class-isActive">
-          <body>Determines whether an object specified by this Class is active or not. If true, then the owning Class is referred to as an active Class. If false, then such a Class is referred to as a passive Class.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Class-isActive-_defaultValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Class-nestedClassifier" name="nestedClassifier" type="Classifier" isOrdered="true" aggregation="composite" subsettedProperty="A_redefinitionContext_redefinableElement-redefinableElement Namespace-ownedMember" association="A_nestedClassifier_nestingClass">
-        <ownedComment xmi:id="Class-nestedClassifier-_ownedComment.0" annotatedElement="Class-nestedClassifier">
-          <body>The Classifiers owned by the Class that are not ownedBehaviors.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Class-nestedClassifier-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Class-nestedClassifier-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Class-ownedAttribute" name="ownedAttribute" type="Property" isOrdered="true" aggregation="composite" redefinedProperty="StructuredClassifier-ownedAttribute" subsettedProperty="Classifier-attribute Namespace-ownedMember" association="A_ownedAttribute_class">
-        <ownedComment xmi:id="Class-ownedAttribute-_ownedComment.0" annotatedElement="Class-ownedAttribute">
-          <body>The attributes (i.e., the Properties) owned by the Class.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Class-ownedAttribute-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Class-ownedAttribute-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Class-ownedOperation" name="ownedOperation" type="Operation" isOrdered="true" aggregation="composite" subsettedProperty="A_redefinitionContext_redefinableElement-redefinableElement Classifier-feature Namespace-ownedMember" association="A_ownedOperation_class">
-        <ownedComment xmi:id="Class-ownedOperation-_ownedComment.0" annotatedElement="Class-ownedOperation">
-          <body>The Operations owned by the Class.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Class-ownedOperation-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Class-ownedOperation-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Class-ownedReception" name="ownedReception" type="Reception" aggregation="composite" subsettedProperty="Classifier-feature Namespace-ownedMember" association="A_ownedReception_class">
-        <ownedComment xmi:id="Class-ownedReception-_ownedComment.0" annotatedElement="Class-ownedReception">
-          <body>The Receptions owned by the Class.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Class-ownedReception-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Class-ownedReception-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Class-superClass" name="superClass" type="Class" isDerived="true" redefinedProperty="Classifier-general" association="A_superClass_class">
-        <ownedComment xmi:id="Class-superClass-_ownedComment.0" annotatedElement="Class-superClass">
-          <body>The superclasses of a Class, derived from its Generalizations.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Class-superClass-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Class-superClass-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="Class-createOwnedOperation" name="createOwnedOperation">
-        <ownedComment xmi:id="Class-createOwnedOperation-_ownedComment.0" annotatedElement="Class-createOwnedOperation">
-          <body>Creates an operation with the specified name, parameter names, parameter types, and return type (or null) as an owned operation of this class.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Class-createOwnedOperation-_ownedParameter.0" type="Operation" direction="return"/>
-        <ownedParameter xmi:id="Class-createOwnedOperation-name" name="name" effect="read">
-          <ownedComment xmi:id="Class-createOwnedOperation-name-_ownedComment.0" annotatedElement="Class-createOwnedOperation-name">
-            <body>The name for the new operation, or null.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Class-createOwnedOperation-name-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Class-createOwnedOperation-name-_upperValue" value="1"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Class-createOwnedOperation-parameterNames" name="parameterNames" effect="read">
-          <ownedComment xmi:id="Class-createOwnedOperation-parameterNames-_ownedComment.0" annotatedElement="Class-createOwnedOperation-parameterNames">
-            <body>The parameter names for the new operation, or null.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Class-createOwnedOperation-parameterNames-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Class-createOwnedOperation-parameterNames-_upperValue" value="*"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Class-createOwnedOperation-parameterTypes" name="parameterTypes" type="Type" effect="read">
-          <ownedComment xmi:id="Class-createOwnedOperation-parameterTypes-_ownedComment.0" annotatedElement="Class-createOwnedOperation-parameterTypes">
-            <body>The parameter types for the new operation, or null.</body>
-          </ownedComment>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Class-createOwnedOperation-parameterTypes-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Class-createOwnedOperation-parameterTypes-_upperValue" value="*"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Class-createOwnedOperation-returnType" name="returnType" type="Type" effect="read">
-          <ownedComment xmi:id="Class-createOwnedOperation-returnType-_ownedComment.0" annotatedElement="Class-createOwnedOperation-returnType">
-            <body>The return type for the new operation, or null.</body>
-          </ownedComment>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Class-createOwnedOperation-returnType-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Class-createOwnedOperation-returnType-_upperValue" value="1"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Class-isMetaclass" name="isMetaclass" isQuery="true">
-        <ownedComment xmi:id="Class-isMetaclass-_ownedComment.0" annotatedElement="Class-isMetaclass">
-          <body>Determines whether this class is a metaclass.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Class-isMetaclass-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Class-extension.1" name="extension" visibility="protected" bodyCondition="Class-extension.1-spec" isQuery="true">
-        <ownedComment xmi:id="Class-extension.1-_ownedComment.0" annotatedElement="Class-extension.1">
-          <body>Derivation for Class::/extension : Extension</body>
-        </ownedComment>
-        <ownedRule xmi:id="Class-extension.1-spec" name="spec" constrainedElement="Class-extension.1 Class-extension">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Class-extension.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (Extension.allInstances()->select(ext | &#xD;
-  let endTypes : Sequence(Classifier) = ext.memberEnd->collect(type.oclAsType(Classifier)) in&#xD;
-  endTypes->includes(self) or endTypes.allParents()->includes(self) ))</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Class-extension.1-result" name="result" type="Extension" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Class-extension.1-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Class-extension.1-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Class-superClass.1" name="superClass" visibility="protected" bodyCondition="Class-superClass.1-spec" isQuery="true">
-        <ownedComment xmi:id="Class-superClass.1-_ownedComment.0" annotatedElement="Class-superClass.1">
-          <body>Derivation for Class::/superClass : Class</body>
-        </ownedComment>
-        <ownedRule xmi:id="Class-superClass.1-spec" name="spec" constrainedElement="Class-superClass.1 Class-superClass">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Class-superClass.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (self.general()->select(oclIsKindOf(Class))->collect(oclAsType(Class))->asSet())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Class-superClass.1-result" name="result" type="Class" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Class-superClass.1-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Class-superClass.1-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Collaboration" name="Collaboration">
-      <ownedComment xmi:id="Collaboration-_ownedComment.0" annotatedElement="Collaboration">
-        <body>A Collaboration describes a structure of collaborating elements (roles), each performing a specialized function, which collectively accomplish some desired functionality.</body>
-      </ownedComment>
-      <generalization xmi:id="Collaboration-_generalization.0" general="StructuredClassifier"/>
-      <generalization xmi:id="Collaboration-_generalization.1" general="BehavioredClassifier"/>
-      <ownedAttribute xmi:id="Collaboration-collaborationRole" name="collaborationRole" type="ConnectableElement" subsettedProperty="StructuredClassifier-role" association="A_collaborationRole_collaboration">
-        <ownedComment xmi:id="Collaboration-collaborationRole-_ownedComment.0" annotatedElement="Collaboration-collaborationRole">
-          <body>Represents the participants in the Collaboration.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Collaboration-collaborationRole-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Collaboration-collaborationRole-_upperValue" value="*"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="CollaborationUse" name="CollaborationUse">
-      <ownedComment xmi:id="CollaborationUse-_ownedComment.0" annotatedElement="CollaborationUse">
-        <body>A CollaborationUse is used to specify the application of a pattern specified by a Collaboration to a specific situation.</body>
-      </ownedComment>
-      <ownedRule xmi:id="CollaborationUse-client_elements" name="client_elements" constrainedElement="CollaborationUse">
-        <ownedComment xmi:id="CollaborationUse-client_elements-_ownedComment.0" annotatedElement="CollaborationUse-client_elements">
-          <body>All the client elements of a roleBinding are in one Classifier and all supplier elements of a roleBinding are in one Collaboration.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="CollaborationUse-client_elements-_specification">
-          <language>OCL</language>
-          <body>roleBinding->collect(client)->forAll(ne1, ne2 |&#xD;
-  ne1.oclIsKindOf(ConnectableElement) and ne2.oclIsKindOf(ConnectableElement) and&#xD;
-    let ce1 : ConnectableElement = ne1.oclAsType(ConnectableElement), ce2 : ConnectableElement = ne2.oclAsType(ConnectableElement) in&#xD;
-      ce1.structuredClassifier = ce2.structuredClassifier)&#xD;
-and&#xD;
-  roleBinding->collect(supplier)->forAll(ne1, ne2 |&#xD;
-  ne1.oclIsKindOf(ConnectableElement) and ne2.oclIsKindOf(ConnectableElement) and&#xD;
-    let ce1 : ConnectableElement = ne1.oclAsType(ConnectableElement), ce2 : ConnectableElement = ne2.oclAsType(ConnectableElement) in&#xD;
-      ce1.collaboration = ce2.collaboration)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="CollaborationUse-every_role" name="every_role" constrainedElement="CollaborationUse">
-        <ownedComment xmi:id="CollaborationUse-every_role-_ownedComment.0" annotatedElement="CollaborationUse-every_role">
-          <body>Every collaborationRole in the Collaboration is bound within the CollaborationUse.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="CollaborationUse-every_role-_specification">
-          <language>OCL</language>
-          <body>type.collaborationRole->forAll(role | roleBinding->exists(rb | rb.supplier->includes(role)))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="CollaborationUse-connectors" name="connectors" constrainedElement="CollaborationUse">
-        <ownedComment xmi:id="CollaborationUse-connectors-_ownedComment.0" annotatedElement="CollaborationUse-connectors">
-          <body>Connectors in a Collaboration typing a CollaborationUse must have corresponding Connectors between elements bound in the context Classifier, and these corresponding Connectors must have the same or more general type than the Collaboration Connectors.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="CollaborationUse-connectors-_specification">
-          <language>OCL</language>
-          <body>type.ownedConnector->forAll(connector |&#xD;
-  let rolesConnectedInCollab : Set(ConnectableElement) = connector.end.role->asSet(),&#xD;
-        relevantBindings : Set(Dependency) = roleBinding->select(rb | rb.supplier->intersection(rolesConnectedInCollab)->notEmpty()),&#xD;
-        boundRoles : Set(ConnectableElement) = relevantBindings->collect(client.oclAsType(ConnectableElement))->asSet(),&#xD;
-        contextClassifier : StructuredClassifier = boundRoles->any(true).structuredClassifier->any(true) in&#xD;
-          contextClassifier.ownedConnector->exists( correspondingConnector | &#xD;
-              correspondingConnector.end.role->forAll( role | boundRoles->includes(role) )&#xD;
-              and (connector.type->notEmpty() and correspondingConnector.type->notEmpty()) implies connector.type->forAll(conformsTo(correspondingConnector.type)) )&#xD;
-)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="CollaborationUse-_generalization.0" general="NamedElement"/>
-      <ownedAttribute xmi:id="CollaborationUse-roleBinding" name="roleBinding" type="Dependency" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_roleBinding_collaborationUse">
-        <ownedComment xmi:id="CollaborationUse-roleBinding-_ownedComment.0" annotatedElement="CollaborationUse-roleBinding">
-          <body>A mapping between features of the Collaboration and features of the owning Classifier. This mapping indicates which ConnectableElement of the Classifier plays which role(s) in the Collaboration. A ConnectableElement may be bound to multiple roles in the same CollaborationUse (that is, it may play multiple roles).</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="CollaborationUse-roleBinding-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="CollaborationUse-roleBinding-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="CollaborationUse-type" name="type" type="Collaboration" association="A_type_collaborationUse">
-        <ownedComment xmi:id="CollaborationUse-type-_ownedComment.0" annotatedElement="CollaborationUse-type">
-          <body>The Collaboration which is used in this CollaborationUse. The Collaboration defines the cooperation between its roles which are mapped to ConnectableElements relating to the Classifier owning the CollaborationUse.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Component" name="Component">
-      <ownedComment xmi:id="Component-_ownedComment.0" annotatedElement="Component">
-        <body>A Component represents a modular part of a system that encapsulates its contents and whose manifestation is replaceable within its environment.</body>
-      </ownedComment>
-      <ownedRule xmi:id="Component-no_nested_classifiers" name="no_nested_classifiers" constrainedElement="Component">
-        <ownedComment xmi:id="Component-no_nested_classifiers-_ownedComment.0" annotatedElement="Component-no_nested_classifiers">
-          <body>A Component cannot nest Classifiers.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Component-no_nested_classifiers-_specification">
-          <language>OCL</language>
-          <body>nestedClassifier->isEmpty()</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Component-no_packaged_elements" name="no_packaged_elements" constrainedElement="Component">
-        <ownedComment xmi:id="Component-no_packaged_elements-_ownedComment.0" annotatedElement="Component-no_packaged_elements">
-          <body>A Component nested in a Class cannot have any packaged elements.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Component-no_packaged_elements-_specification">
-          <language>OCL</language>
-          <body>nestingClass &lt;> null implies packagedElement->isEmpty()</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="Component-_generalization.0" general="Class"/>
-      <ownedAttribute xmi:id="Component-isIndirectlyInstantiated" name="isIndirectlyInstantiated">
-        <ownedComment xmi:id="Component-isIndirectlyInstantiated-_ownedComment.0" annotatedElement="Component-isIndirectlyInstantiated">
-          <body>If true, the Component is defined at design-time, but at run-time (or execution-time) an object specified by the Component does not exist, that is, the Component is instantiated indirectly, through the instantiation of its realizing Classifiers or parts.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Component-isIndirectlyInstantiated-_defaultValue" value="true"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Component-packagedElement" name="packagedElement" type="PackageableElement" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_packagedElement_component">
-        <ownedComment xmi:id="Component-packagedElement-_ownedComment.0" annotatedElement="Component-packagedElement">
-          <body>The set of PackageableElements that a Component owns. In the namespace of a Component, all model elements that are involved in or related to its definition may be owned or imported explicitly. These may include e.g., Classes, Interfaces, Components, Packages, UseCases, Dependencies (e.g., mappings), and Artifacts.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Component-packagedElement-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Component-packagedElement-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Component-provided" name="provided" type="Interface" isReadOnly="true" isDerived="true" association="A_provided_component">
-        <ownedComment xmi:id="Component-provided-_ownedComment.0" annotatedElement="Component-provided">
-          <body>The Interfaces that the Component exposes to its environment. These Interfaces may be Realized by the Component or any of its realizingClassifiers, or they may be the Interfaces that are provided by its public Ports.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Component-provided-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Component-provided-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Component-realization" name="realization" type="ComponentRealization" aggregation="composite" subsettedProperty="A_supplier_supplierDependency-supplierDependency Element-ownedElement" association="A_realization_abstraction_component">
-        <ownedComment xmi:id="Component-realization-_ownedComment.0" annotatedElement="Component-realization">
-          <body>The set of Realizations owned by the Component. Realizations reference the Classifiers of which the Component is an abstraction; i.e., that realize its behavior.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Component-realization-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Component-realization-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Component-required" name="required" type="Interface" isReadOnly="true" isDerived="true" association="A_required_component">
-        <ownedComment xmi:id="Component-required-_ownedComment.0" annotatedElement="Component-required">
-          <body>The Interfaces that the Component requires from other Components in its environment in order to be able to offer its full set of provided functionality. These Interfaces may be used by the Component or any of its realizingClassifiers, or they may be the Interfaces that are required by its public Ports.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Component-required-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Component-required-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="Component-createOwnedClass" name="createOwnedClass">
-        <ownedComment xmi:id="Component-createOwnedClass-_ownedComment.0" annotatedElement="Component-createOwnedClass">
-          <body>Creates a(n) (abstract) class with the specified name as a packaged element of this component.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Component-createOwnedClass-_ownedParameter.0" type="Class" direction="return"/>
-        <ownedParameter xmi:id="Component-createOwnedClass-name" name="name" effect="read">
-          <ownedComment xmi:id="Component-createOwnedClass-name-_ownedComment.0" annotatedElement="Component-createOwnedClass-name">
-            <body>The name for the new class, or null.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="Component-createOwnedClass-isAbstract" name="isAbstract" effect="read">
-          <ownedComment xmi:id="Component-createOwnedClass-isAbstract-_ownedComment.0" annotatedElement="Component-createOwnedClass-isAbstract">
-            <body>Whether the new class should be abstract.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Component-createOwnedEnumeration" name="createOwnedEnumeration">
-        <ownedComment xmi:id="Component-createOwnedEnumeration-_ownedComment.0" annotatedElement="Component-createOwnedEnumeration">
-          <body>Creates a enumeration with the specified name as a packaged element of this component.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Component-createOwnedEnumeration-_ownedParameter.0" type="Enumeration" direction="return"/>
-        <ownedParameter xmi:id="Component-createOwnedEnumeration-name" name="name" effect="read">
-          <ownedComment xmi:id="Component-createOwnedEnumeration-name-_ownedComment.0" annotatedElement="Component-createOwnedEnumeration-name">
-            <body>The name for the new enumeration, or null.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Component-createOwnedInterface" name="createOwnedInterface">
-        <ownedComment xmi:id="Component-createOwnedInterface-_ownedComment.0" annotatedElement="Component-createOwnedInterface">
-          <body>Creates an interface with the specified name as a packaged element of this component.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Component-createOwnedInterface-_ownedParameter.0" type="Interface" direction="return"/>
-        <ownedParameter xmi:id="Component-createOwnedInterface-name" name="name" effect="read">
-          <ownedComment xmi:id="Component-createOwnedInterface-name-_ownedComment.0" annotatedElement="Component-createOwnedInterface-name">
-            <body>The name for the new interface, or null.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Component-createOwnedPrimitiveType" name="createOwnedPrimitiveType">
-        <ownedComment xmi:id="Component-createOwnedPrimitiveType-_ownedComment.0" annotatedElement="Component-createOwnedPrimitiveType">
-          <body>Creates a primitive type with the specified name as a packaged element of this component.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="Component-createOwnedPrimitiveType-_ownedParameter.0" type="PrimitiveType" direction="return"/>
-        <ownedParameter xmi:id="Component-createOwnedPrimitiveType-name" name="name" effect="read">
-          <ownedComment xmi:id="Component-createOwnedPrimitiveType-name-_ownedComment.0" annotatedElement="Component-createOwnedPrimitiveType-name">
-            <body>The name for the new primitive type, or null.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Component-provided.1" name="provided" visibility="protected" bodyCondition="Component-provided.1-spec" isQuery="true">
-        <ownedComment xmi:id="Component-provided.1-_ownedComment.0" annotatedElement="Component-provided.1">
-          <body>Derivation for Component::/provided</body>
-        </ownedComment>
-        <ownedRule xmi:id="Component-provided.1-spec" name="spec" constrainedElement="Component-provided.1 Component-provided">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Component-provided.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (let 	ris : Set(Interface) = allRealizedInterfaces(),&#xD;
-        realizingClassifiers : Set(Classifier) =  self.realization.realizingClassifier->union(self.allParents()->collect(realization.realizingClassifier))->asSet(),&#xD;
-        allRealizingClassifiers : Set(Classifier) = realizingClassifiers->union(realizingClassifiers.allParents())->asSet(),&#xD;
-        realizingClassifierInterfaces : Set(Interface) = allRealizingClassifiers->iterate(c; rci : Set(Interface) = Set{} | rci->union(c.allRealizedInterfaces())),&#xD;
-        ports : Set(Port) = self.ownedPort->union(allParents()->collect(ownedPort))->asSet(),&#xD;
-        providedByPorts : Set(Interface) = ports.provided->asSet()&#xD;
-in     ris->union(realizingClassifierInterfaces) ->union(providedByPorts)->asSet())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Component-provided.1-result" name="result" type="Interface" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Component-provided.1-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Component-provided.1-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Component-required.1" name="required" visibility="protected" bodyCondition="Component-required.1-spec" isQuery="true">
-        <ownedComment xmi:id="Component-required.1-_ownedComment.0" annotatedElement="Component-required.1">
-          <body>Derivation for Component::/required</body>
-        </ownedComment>
-        <ownedRule xmi:id="Component-required.1-spec" name="spec" constrainedElement="Component-required.1 Component-required">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Component-required.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (let 	uis : Set(Interface) = allUsedInterfaces(),&#xD;
-        realizingClassifiers : Set(Classifier) = self.realization.realizingClassifier->union(self.allParents()->collect(realization.realizingClassifier))->asSet(),&#xD;
-        allRealizingClassifiers : Set(Classifier) = realizingClassifiers->union(realizingClassifiers.allParents())->asSet(),&#xD;
-        realizingClassifierInterfaces : Set(Interface) = allRealizingClassifiers->iterate(c; rci : Set(Interface) = Set{} | rci->union(c.allUsedInterfaces())),&#xD;
-        ports : Set(Port) = self.ownedPort->union(allParents()->collect(ownedPort))->asSet(),&#xD;
-        usedByPorts : Set(Interface) = ports.required->asSet()&#xD;
-in	    uis->union(realizingClassifierInterfaces)->union(usedByPorts)->asSet()&#xD;
-)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Component-required.1-result" name="result" type="Interface" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Component-required.1-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Component-required.1-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ComponentRealization" name="ComponentRealization">
-      <ownedComment xmi:id="ComponentRealization-_ownedComment.0" annotatedElement="ComponentRealization">
-        <body>Realization is specialized to (optionally) define the Classifiers that realize the contract offered by a Component in terms of its provided and required Interfaces. The Component forms an abstraction from these various Classifiers.</body>
-      </ownedComment>
-      <generalization xmi:id="ComponentRealization-_generalization.0" general="Realization"/>
-      <ownedAttribute xmi:id="ComponentRealization-abstraction" name="abstraction" type="Component" subsettedProperty="Dependency-supplier Element-owner" association="A_realization_abstraction_component">
-        <ownedComment xmi:id="ComponentRealization-abstraction-_ownedComment.0" annotatedElement="ComponentRealization-abstraction">
-          <body>The Component that owns this ComponentRealization and which is implemented by its realizing Classifiers.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ComponentRealization-abstraction-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ComponentRealization-realizingClassifier" name="realizingClassifier" type="Classifier" subsettedProperty="Dependency-client" association="A_realizingClassifier_componentRealization">
-        <ownedComment xmi:id="ComponentRealization-realizingClassifier-_ownedComment.0" annotatedElement="ComponentRealization-realizingClassifier">
-          <body>The Classifiers that are involved in the implementation of the Component that owns this Realization.</body>
-        </ownedComment>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ComponentRealization-realizingClassifier-_upperValue" value="*"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ConnectableElement" name="ConnectableElement" isAbstract="true">
-      <ownedComment xmi:id="ConnectableElement-_ownedComment.0" annotatedElement="ConnectableElement">
-        <body>ConnectableElement is an abstract metaclass representing a set of instances that play roles of a StructuredClassifier. ConnectableElements may be joined by attached Connectors and specify configurations of linked instances to be created within an instance of the containing StructuredClassifier.</body>
-      </ownedComment>
-      <generalization xmi:id="ConnectableElement-_generalization.0" general="TypedElement"/>
-      <generalization xmi:id="ConnectableElement-_generalization.1" general="ParameterableElement"/>
-      <ownedAttribute xmi:id="ConnectableElement-end" name="end" type="ConnectorEnd" isReadOnly="true" isDerived="true" association="A_role_end">
-        <ownedComment xmi:id="ConnectableElement-end-_ownedComment.0" annotatedElement="ConnectableElement-end">
-          <body>A set of ConnectorEnds that attach to this ConnectableElement.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ConnectableElement-end-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ConnectableElement-end-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ConnectableElement-templateParameter" name="templateParameter" type="ConnectableElementTemplateParameter" redefinedProperty="ParameterableElement-templateParameter" association="A_connectableElement_templateParameter_parameteredElement">
-        <ownedComment xmi:id="ConnectableElement-templateParameter-_ownedComment.0" annotatedElement="ConnectableElement-templateParameter">
-          <body>The ConnectableElementTemplateParameter for this ConnectableElement parameter.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ConnectableElement-templateParameter-_lowerValue"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="ConnectableElement-end.1" name="end" visibility="protected" bodyCondition="ConnectableElement-end.1-spec" isQuery="true">
-        <ownedComment xmi:id="ConnectableElement-end.1-_ownedComment.0" annotatedElement="ConnectableElement-end.1">
-          <body>Derivation for ConnectableElement::/end : ConnectorEnd</body>
-        </ownedComment>
-        <ownedRule xmi:id="ConnectableElement-end.1-spec" name="spec" constrainedElement="ConnectableElement-end.1 ConnectableElement-end">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="ConnectableElement-end.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (ConnectorEnd.allInstances()->select(role = self))</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="ConnectableElement-end.1-result" name="result" type="ConnectorEnd" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ConnectableElement-end.1-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ConnectableElement-end.1-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ConnectableElementTemplateParameter" name="ConnectableElementTemplateParameter">
-      <ownedComment xmi:id="ConnectableElementTemplateParameter-_ownedComment.0" annotatedElement="ConnectableElementTemplateParameter">
-        <body>A ConnectableElementTemplateParameter exposes a ConnectableElement as a formal parameter for a template.</body>
-      </ownedComment>
-      <generalization xmi:id="ConnectableElementTemplateParameter-_generalization.0" general="TemplateParameter"/>
-      <ownedAttribute xmi:id="ConnectableElementTemplateParameter-parameteredElement" name="parameteredElement" type="ConnectableElement" redefinedProperty="TemplateParameter-parameteredElement" association="A_connectableElement_templateParameter_parameteredElement">
-        <ownedComment xmi:id="ConnectableElementTemplateParameter-parameteredElement-_ownedComment.0" annotatedElement="ConnectableElementTemplateParameter-parameteredElement">
-          <body>The ConnectableElement for this ConnectableElementTemplateParameter.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Connector" name="Connector">
-      <ownedComment xmi:id="Connector-_ownedComment.0" annotatedElement="Connector">
-        <body>A Connector specifies links that enables communication between two or more instances. In contrast to Associations, which specify links between any instance of the associated Classifiers, Connectors specify links between instances playing the connected parts only.</body>
-      </ownedComment>
-      <ownedRule xmi:id="Connector-types" name="types" constrainedElement="Connector">
-        <ownedComment xmi:id="Connector-types-_ownedComment.0" annotatedElement="Connector-types">
-          <body>The types of the ConnectableElements that the ends of a Connector are attached to must conform to the types of the ends of the Association that types the Connector, if any.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Connector-types-_specification">
-          <language>OCL</language>
-          <body>type&lt;>null implies &#xD;
-  let noOfEnds : Integer = end->size() in &#xD;
-  (type.memberEnd->size() = noOfEnds) and Sequence{1..noOfEnds}->forAll(i | end->at(i).role.type.conformsTo(type.memberEnd->at(i).type))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Connector-roles" name="roles" constrainedElement="Connector">
-        <ownedComment xmi:id="Connector-roles-_ownedComment.0" annotatedElement="Connector-roles">
-          <body>The ConnectableElements attached as roles to each ConnectorEnd owned by a Connector must be owned or inherited roles of the Classifier that owned the Connector, or they must be Ports of such roles.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Connector-roles-_specification">
-          <language>OCL</language>
-          <body>structuredClassifier &lt;> null&#xD;
-and&#xD;
-  end->forAll( e | structuredClassifier.allRoles()->includes(e.role)&#xD;
-or&#xD;
-  e.role.oclIsKindOf(Port) and structuredClassifier.allRoles()->includes(e.partWithPort))</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="Connector-_generalization.0" general="Feature"/>
-      <ownedAttribute xmi:id="Connector-contract" name="contract" type="Behavior" association="A_contract_connector">
-        <ownedComment xmi:id="Connector-contract-_ownedComment.0" annotatedElement="Connector-contract">
-          <body>The set of Behaviors that specify the valid interaction patterns across the Connector.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Connector-contract-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Connector-contract-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Connector-end" name="end" type="ConnectorEnd" isOrdered="true" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_end_connector">
-        <ownedComment xmi:id="Connector-end-_ownedComment.0" annotatedElement="Connector-end">
-          <body>A Connector has at least two ConnectorEnds, each representing the participation of instances of the Classifiers typing the ConnectableElements attached to the end. The set of ConnectorEnds is ordered.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Connector-end-_lowerValue" value="2"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Connector-end-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Connector-kind" name="kind" type="ConnectorKind" isReadOnly="true" isDerived="true">
-        <ownedComment xmi:id="Connector-kind-_ownedComment.0" annotatedElement="Connector-kind">
-          <body>Indicates the kind of Connector. This is derived: a Connector with one or more ends connected to a Port which is not on a Part and which is not a behavior port is a delegation; otherwise it is an assembly.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Connector-redefinedConnector" name="redefinedConnector" type="Connector" subsettedProperty="RedefinableElement-redefinedElement" association="A_redefinedConnector_connector">
-        <ownedComment xmi:id="Connector-redefinedConnector-_ownedComment.0" annotatedElement="Connector-redefinedConnector">
-          <body>A Connector may be redefined when its containing Classifier is specialized. The redefining Connector may have a type that specializes the type of the redefined Connector. The types of the ConnectorEnds of the redefining Connector may specialize the types of the ConnectorEnds of the redefined Connector. The properties of the ConnectorEnds of the redefining Connector may be replaced.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Connector-redefinedConnector-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Connector-redefinedConnector-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Connector-type" name="type" type="Association" association="A_type_connector">
-        <ownedComment xmi:id="Connector-type-_ownedComment.0" annotatedElement="Connector-type">
-          <body>An optional Association that classifies links corresponding to this Connector.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Connector-type-_lowerValue"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="Connector-kind.1" name="kind" visibility="protected" bodyCondition="Connector-kind.1-spec" isQuery="true">
-        <ownedComment xmi:id="Connector-kind.1-_ownedComment.0" annotatedElement="Connector-kind.1">
-          <body>Derivation for Connector::/kind : ConnectorKind</body>
-        </ownedComment>
-        <ownedRule xmi:id="Connector-kind.1-spec" name="spec" constrainedElement="Connector-kind.1 Connector-kind">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Connector-kind.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if end->exists(&#xD;
-		role.oclIsKindOf(Port) &#xD;
-		and partWithPort->isEmpty()&#xD;
-		and not role.oclAsType(Port).isBehavior)&#xD;
-then ConnectorKind::delegation &#xD;
-else ConnectorKind::assembly &#xD;
-endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Connector-kind.1-result" name="result" type="ConnectorKind" direction="return"/>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ConnectorEnd" name="ConnectorEnd">
-      <ownedComment xmi:id="ConnectorEnd-_ownedComment.0" annotatedElement="ConnectorEnd">
-        <body>A ConnectorEnd is an endpoint of a Connector, which attaches the Connector to a ConnectableElement.</body>
-      </ownedComment>
-      <ownedRule xmi:id="ConnectorEnd-role_and_part_with_port" name="role_and_part_with_port" constrainedElement="ConnectorEnd">
-        <ownedComment xmi:id="ConnectorEnd-role_and_part_with_port-_ownedComment.0" annotatedElement="ConnectorEnd-role_and_part_with_port">
-          <body>If a ConnectorEnd references a partWithPort, then the role must be a Port that is defined or inherited by the type of the partWithPort.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ConnectorEnd-role_and_part_with_port-_specification">
-          <language>OCL</language>
-          <body>partWithPort->notEmpty() implies &#xD;
-  (role.oclIsKindOf(Port) and partWithPort.type.oclAsType(Namespace).member->includes(role))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ConnectorEnd-part_with_port_empty" name="part_with_port_empty" constrainedElement="ConnectorEnd">
-        <ownedComment xmi:id="ConnectorEnd-part_with_port_empty-_ownedComment.0" annotatedElement="ConnectorEnd-part_with_port_empty">
-          <body>If a ConnectorEnd is attached to a Port of the containing Classifier, partWithPort will be empty.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ConnectorEnd-part_with_port_empty-_specification">
-          <language>OCL</language>
-          <body>(role.oclIsKindOf(Port) and role.owner = connector.owner) implies partWithPort->isEmpty()</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ConnectorEnd-multiplicity" name="multiplicity" constrainedElement="ConnectorEnd">
-        <ownedComment xmi:id="ConnectorEnd-multiplicity-_ownedComment.0" annotatedElement="ConnectorEnd-multiplicity">
-          <body>The multiplicity of the ConnectorEnd may not be more general than the multiplicity of the corresponding end of the Association typing the owning Connector, if any.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ConnectorEnd-multiplicity-_specification">
-          <language>OCL</language>
-          <body>self.compatibleWith(definingEnd)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="ConnectorEnd-self_part_with_port" name="self_part_with_port" constrainedElement="ConnectorEnd">
-        <ownedComment xmi:id="ConnectorEnd-self_part_with_port-_ownedComment.0" annotatedElement="ConnectorEnd-self_part_with_port">
-          <body>The Property held in self.partWithPort must not be a Port.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ConnectorEnd-self_part_with_port-_specification">
-          <language>OCL</language>
-          <body>partWithPort->notEmpty() implies not partWithPort.oclIsKindOf(Port)</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="ConnectorEnd-_generalization.0" general="MultiplicityElement"/>
-      <ownedAttribute xmi:id="ConnectorEnd-definingEnd" name="definingEnd" type="Property" isReadOnly="true" isDerived="true" association="A_definingEnd_connectorEnd">
-        <ownedComment xmi:id="ConnectorEnd-definingEnd-_ownedComment.0" annotatedElement="ConnectorEnd-definingEnd">
-          <body>A derived property referencing the corresponding end on the Association which types the Connector owing this ConnectorEnd, if any. It is derived by selecting the end at the same place in the ordering of Association ends as this ConnectorEnd.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ConnectorEnd-definingEnd-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ConnectorEnd-partWithPort" name="partWithPort" type="Property" association="A_partWithPort_connectorEnd">
-        <ownedComment xmi:id="ConnectorEnd-partWithPort-_ownedComment.0" annotatedElement="ConnectorEnd-partWithPort">
-          <body>Indicates the role of the internal structure of a Classifier with the Port to which the ConnectorEnd is attached.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ConnectorEnd-partWithPort-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="ConnectorEnd-role" name="role" visibility="public" type="ConnectableElement" association="A_end_role">
-        <ownedComment xmi:id="ConnectorEnd-role-_ownedComment.0" annotatedElement="ConnectorEnd-role">
-          <body>The ConnectableElement attached at this ConnectorEnd. When an instance of the containing Classifier is created, a link may (depending on the multiplicities) be created to an instance of the Classifier that types this ConnectableElement.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ConnectorEnd-role-_lowerValue" value="1"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="ConnectorEnd-role-_upperValue" value="1"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="ConnectorEnd-definingEnd.1" name="definingEnd" visibility="protected" bodyCondition="ConnectorEnd-definingEnd.1-spec" isQuery="true">
-        <ownedComment xmi:id="ConnectorEnd-definingEnd.1-_ownedComment.0" annotatedElement="ConnectorEnd-definingEnd.1">
-          <body>Derivation for ConnectorEnd::/definingEnd : Property</body>
-        </ownedComment>
-        <ownedRule xmi:id="ConnectorEnd-definingEnd.1-spec" name="spec" constrainedElement="ConnectorEnd-definingEnd.1 ConnectorEnd-definingEnd">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="ConnectorEnd-definingEnd.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if connector.type = null &#xD;
-then&#xD;
-  null &#xD;
-else&#xD;
-  let index : Integer = connector.end->indexOf(self) in&#xD;
-    connector.type.memberEnd->at(index)&#xD;
-endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="ConnectorEnd-definingEnd.1-result" name="result" type="Property" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ConnectorEnd-definingEnd.1-result-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="EncapsulatedClassifier" name="EncapsulatedClassifier" isAbstract="true">
-      <ownedComment xmi:id="EncapsulatedClassifier-_ownedComment.0" annotatedElement="EncapsulatedClassifier">
-        <body>An EncapsulatedClassifier may own Ports to specify typed interaction points.</body>
-      </ownedComment>
-      <generalization xmi:id="EncapsulatedClassifier-_generalization.0" general="StructuredClassifier"/>
-      <ownedAttribute xmi:id="EncapsulatedClassifier-ownedPort" name="ownedPort" type="Port" isReadOnly="true" aggregation="composite" isDerived="true" subsettedProperty="StructuredClassifier-ownedAttribute" association="A_ownedPort_encapsulatedClassifier">
-        <ownedComment xmi:id="EncapsulatedClassifier-ownedPort-_ownedComment.0" annotatedElement="EncapsulatedClassifier-ownedPort">
-          <body>The Ports owned by the EncapsulatedClassifier.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EncapsulatedClassifier-ownedPort-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="EncapsulatedClassifier-ownedPort-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="EncapsulatedClassifier-ownedPort.1" name="ownedPort" visibility="protected" bodyCondition="EncapsulatedClassifier-ownedPort.1-spec" isQuery="true">
-        <ownedComment xmi:id="EncapsulatedClassifier-ownedPort.1-_ownedComment.0" annotatedElement="EncapsulatedClassifier-ownedPort.1">
-          <body>Derivation for EncapsulatedClassifier::/ownedPort : Port</body>
-        </ownedComment>
-        <ownedRule xmi:id="EncapsulatedClassifier-ownedPort.1-spec" name="spec" constrainedElement="EncapsulatedClassifier-ownedPort.1 EncapsulatedClassifier-ownedPort">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="EncapsulatedClassifier-ownedPort.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (ownedAttribute->select(oclIsKindOf(Port))->collect(oclAsType(Port))->asOrderedSet())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="EncapsulatedClassifier-ownedPort.1-result" name="result" type="Port" isOrdered="true" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="EncapsulatedClassifier-ownedPort.1-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="EncapsulatedClassifier-ownedPort.1-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Port" name="Port">
-      <ownedComment xmi:id="Port-_ownedComment.0" annotatedElement="Port">
-        <body>A Port is a property of an EncapsulatedClassifier that specifies a distinct interaction point between that EncapsulatedClassifier and its environment or between the (behavior of the) EncapsulatedClassifier and its internal parts. Ports are connected to Properties of the EncapsulatedClassifier by Connectors through which requests can be made to invoke BehavioralFeatures. A Port may specify the services an EncapsulatedClassifier provides (offers) to its environment as well as the services that an EncapsulatedClassifier expects (requires) of its environment.  A Port may have an associated ProtocolStateMachine.</body>
-      </ownedComment>
-      <ownedRule xmi:id="Port-port_aggregation" name="port_aggregation" constrainedElement="Port">
-        <ownedComment xmi:id="Port-port_aggregation-_ownedComment.0" annotatedElement="Port-port_aggregation">
-          <body>Port.aggregation must be composite.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Port-port_aggregation-_specification">
-          <language>OCL</language>
-          <body>aggregation = AggregationKind::composite</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Port-default_value" name="default_value" constrainedElement="Port">
-        <ownedComment xmi:id="Port-default_value-_ownedComment.0" annotatedElement="Port-default_value">
-          <body>A defaultValue for port cannot be specified when the type of the Port is an Interface.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Port-default_value-_specification">
-          <language>OCL</language>
-          <body>type.oclIsKindOf(Interface) implies defaultValue->isEmpty()</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Port-encapsulated_owner" name="encapsulated_owner" constrainedElement="Port">
-        <ownedComment xmi:id="Port-encapsulated_owner-_ownedComment.0" annotatedElement="Port-encapsulated_owner">
-          <body>All Ports are owned by an EncapsulatedClassifier.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Port-encapsulated_owner-_specification">
-          <language>OCL</language>
-          <body>owner = encapsulatedClassifier</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="Port-_generalization.0" general="Property"/>
-      <ownedAttribute xmi:id="Port-isBehavior" name="isBehavior">
-        <ownedComment xmi:id="Port-isBehavior-_ownedComment.0" annotatedElement="Port-isBehavior">
-          <body>Specifies whether requests arriving at this Port are sent to the classifier behavior of this EncapsulatedClassifier. Such a Port is referred to as a behavior Port. Any invocation of a BehavioralFeature targeted at a behavior Port will be handled by the instance of the owning EncapsulatedClassifier itself, rather than by any instances that it may contain.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Port-isBehavior-_defaultValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Port-isConjugated" name="isConjugated">
-        <ownedComment xmi:id="Port-isConjugated-_ownedComment.0" annotatedElement="Port-isConjugated">
-          <body>Specifies the way that the provided and required Interfaces are derived from the Port’s Type.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Port-isConjugated-_defaultValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Port-isService" name="isService">
-        <ownedComment xmi:id="Port-isService-_ownedComment.0" annotatedElement="Port-isService">
-          <body>If true, indicates that this Port is used to provide the published functionality of an EncapsulatedClassifier.  If false, this Port is used to implement the EncapsulatedClassifier but is not part of the essential externally-visible functionality of the EncapsulatedClassifier and can, therefore, be altered or deleted along with the internal implementation of the EncapsulatedClassifier and other properties that are considered part of its implementation.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="Port-isService-_defaultValue" value="true"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Port-protocol" name="protocol" type="ProtocolStateMachine" association="A_protocol_port">
-        <ownedComment xmi:id="Port-protocol-_ownedComment.0" annotatedElement="Port-protocol">
-          <body>An optional ProtocolStateMachine which describes valid interactions at this interaction point.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Port-protocol-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Port-provided" name="provided" type="Interface" isReadOnly="true" isDerived="true" association="A_provided_port">
-        <ownedComment xmi:id="Port-provided-_ownedComment.0" annotatedElement="Port-provided">
-          <body>The Interfaces specifying the set of Operations and Receptions that the EncapsulatedCclassifier offers to its environment via this Port, and which it will handle either directly or by forwarding it to a part of its internal structure. This association is derived according to the value of isConjugated. If isConjugated is false, provided is derived as the union of the sets of Interfaces realized by the type of the port and its supertypes, or directly from the type of the Port if the Port is typed by an Interface. If isConjugated is true, it is derived as the union of the sets of Interfaces used by the type of the Port and its supertypes.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Port-provided-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Port-provided-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Port-redefinedPort" name="redefinedPort" type="Port" subsettedProperty="Property-redefinedProperty" association="A_redefinedPort_port">
-        <ownedComment xmi:id="Port-redefinedPort-_ownedComment.0" annotatedElement="Port-redefinedPort">
-          <body>A Port may be redefined when its containing EncapsulatedClassifier is specialized. The redefining Port may have additional Interfaces to those that are associated with the redefined Port or it may replace an Interface by one of its subtypes.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Port-redefinedPort-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Port-redefinedPort-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Port-required" name="required" type="Interface" isReadOnly="true" isDerived="true" association="A_required_port">
-        <ownedComment xmi:id="Port-required-_ownedComment.0" annotatedElement="Port-required">
-          <body>The Interfaces specifying the set of Operations and Receptions that the EncapsulatedCassifier expects its environment to handle via this port. This association is derived according to the value of isConjugated. If isConjugated is false, required is derived as the union of the sets of Interfaces used by the type of the Port and its supertypes. If isConjugated is true, it is derived as the union of the sets of Interfaces realized by the type of the Port and its supertypes, or directly from the type of the Port if the Port is typed by an Interface.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Port-required-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Port-required-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="Port-provided.1" name="provided" visibility="protected" bodyCondition="Port-provided.1-spec" isQuery="true">
-        <ownedComment xmi:id="Port-provided.1-_ownedComment.0" annotatedElement="Port-provided.1">
-          <body>Derivation for Port::/provided</body>
-        </ownedComment>
-        <ownedRule xmi:id="Port-provided.1-spec" name="spec" constrainedElement="Port-provided.1 Port-provided">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Port-provided.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if isConjugated then basicRequired() else basicProvided() endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Port-provided.1-result" name="result" type="Interface" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Port-provided.1-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Port-provided.1-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Port-required.1" name="required" visibility="protected" bodyCondition="Port-required.1-spec" isQuery="true">
-        <ownedComment xmi:id="Port-required.1-_ownedComment.0" annotatedElement="Port-required.1">
-          <body>Derivation for Port::/required</body>
-        </ownedComment>
-        <ownedRule xmi:id="Port-required.1-spec" name="spec" constrainedElement="Port-required.1 Port-required">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Port-required.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if isConjugated then basicProvided() else basicRequired() endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Port-required.1-result" name="result" type="Interface" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Port-required.1-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Port-required.1-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Port-basicProvided" name="basicProvided" bodyCondition="Port-basicProvided-spec" isQuery="true">
-        <ownedComment xmi:id="Port-basicProvided-_ownedComment.0" annotatedElement="Port-basicProvided">
-          <body>The union of the sets of Interfaces realized by the type of the Port and its supertypes, or directly the type of the Port if the Port is typed by an Interface.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Port-basicProvided-spec" name="spec" constrainedElement="Port-basicProvided">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Port-basicProvided-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if type.oclIsKindOf(Interface) &#xD;
-then type.oclAsType(Interface)->asSet() &#xD;
-else type.oclAsType(Classifier).allRealizedInterfaces() &#xD;
-endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Port-basicProvided-result" name="result" type="Interface" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Port-basicProvided-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Port-basicProvided-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="Port-basicRequired" name="basicRequired" bodyCondition="Port-basicRequired-spec" isQuery="true">
-        <ownedComment xmi:id="Port-basicRequired-_ownedComment.0" annotatedElement="Port-basicRequired">
-          <body>The union of the sets of Interfaces used by the type of the Port and its supertypes.</body>
-        </ownedComment>
-        <ownedRule xmi:id="Port-basicRequired-spec" name="spec" constrainedElement="Port-basicRequired">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="Port-basicRequired-spec-_specification">
-            <language>OCL</language>
-            <body>result = ( type.oclAsType(Classifier).allUsedInterfaces() )</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="Port-basicRequired-result" name="result" type="Interface" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Port-basicRequired-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Port-basicRequired-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="StructuredClassifier" name="StructuredClassifier" isAbstract="true">
-      <ownedComment xmi:id="StructuredClassifier-_ownedComment.0" annotatedElement="StructuredClassifier">
-        <body>StructuredClassifiers may contain an internal structure of connected elements each of which plays a role in the overall Behavior modeled by the StructuredClassifier.</body>
-      </ownedComment>
-      <generalization xmi:id="StructuredClassifier-_generalization.0" general="Classifier"/>
-      <ownedAttribute xmi:id="StructuredClassifier-ownedAttribute" name="ownedAttribute" type="Property" isOrdered="true" aggregation="composite" subsettedProperty="Classifier-attribute Namespace-ownedMember StructuredClassifier-role" association="A_ownedAttribute_structuredClassifier">
-        <ownedComment xmi:id="StructuredClassifier-ownedAttribute-_ownedComment.0" annotatedElement="StructuredClassifier-ownedAttribute">
-          <body>The Properties owned by the StructuredClassifier.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="StructuredClassifier-ownedAttribute-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StructuredClassifier-ownedAttribute-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="StructuredClassifier-ownedConnector" name="ownedConnector" type="Connector" aggregation="composite" subsettedProperty="A_redefinitionContext_redefinableElement-redefinableElement Classifier-feature Namespace-ownedMember" association="A_ownedConnector_structuredClassifier">
-        <ownedComment xmi:id="StructuredClassifier-ownedConnector-_ownedComment.0" annotatedElement="StructuredClassifier-ownedConnector">
-          <body>The connectors owned by the StructuredClassifier.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="StructuredClassifier-ownedConnector-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StructuredClassifier-ownedConnector-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="StructuredClassifier-part" name="part" type="Property" isReadOnly="true" isDerived="true" association="A_part_structuredClassifier">
-        <ownedComment xmi:id="StructuredClassifier-part-_ownedComment.0" annotatedElement="StructuredClassifier-part">
-          <body>The Properties specifying instances that the StructuredClassifier owns by composition. This collection is derived, selecting those owned Properties where isComposite is true.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="StructuredClassifier-part-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StructuredClassifier-part-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="StructuredClassifier-role" name="role" type="ConnectableElement" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="Namespace-member" association="A_role_structuredClassifier">
-        <ownedComment xmi:id="StructuredClassifier-role-_ownedComment.0" annotatedElement="StructuredClassifier-role">
-          <body>The roles that instances may play in this StructuredClassifier.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="StructuredClassifier-role-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StructuredClassifier-role-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="StructuredClassifier-createOwnedAttribute" name="createOwnedAttribute">
-        <ownedComment xmi:id="StructuredClassifier-createOwnedAttribute-_ownedComment.0" annotatedElement="StructuredClassifier-createOwnedAttribute">
-          <body>Creates a property with the specified name, type, lower bound, and upper bound as an owned attribute of this structured classifier.</body>
-        </ownedComment>
-        <ownedParameter xmi:id="StructuredClassifier-createOwnedAttribute-_ownedParameter.0" type="Property" direction="return"/>
-        <ownedParameter xmi:id="StructuredClassifier-createOwnedAttribute-name" name="name" effect="read">
-          <ownedComment xmi:id="StructuredClassifier-createOwnedAttribute-name-_ownedComment.0" annotatedElement="StructuredClassifier-createOwnedAttribute-name">
-            <body>The name for the new attribute, or null.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="StructuredClassifier-createOwnedAttribute-name-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StructuredClassifier-createOwnedAttribute-name-_upperValue" value="1"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="StructuredClassifier-createOwnedAttribute-type" name="type" type="Type" effect="read">
-          <ownedComment xmi:id="StructuredClassifier-createOwnedAttribute-type-_ownedComment.0" annotatedElement="StructuredClassifier-createOwnedAttribute-type">
-            <body>The type for the new attribute, or null.</body>
-          </ownedComment>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="StructuredClassifier-createOwnedAttribute-type-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StructuredClassifier-createOwnedAttribute-type-_upperValue" value="1"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="StructuredClassifier-createOwnedAttribute-lower" name="lower" effect="read">
-          <ownedComment xmi:id="StructuredClassifier-createOwnedAttribute-lower-_ownedComment.0" annotatedElement="StructuredClassifier-createOwnedAttribute-lower">
-            <body>The lower bound for the new attribute.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="StructuredClassifier-createOwnedAttribute-upper" name="upper" effect="read">
-          <ownedComment xmi:id="StructuredClassifier-createOwnedAttribute-upper-_ownedComment.0" annotatedElement="StructuredClassifier-createOwnedAttribute-upper">
-            <body>The upper bound for the new attribute.</body>
-          </ownedComment>
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="StructuredClassifier-part.1" name="part" visibility="protected" bodyCondition="StructuredClassifier-part.1-spec" isQuery="true">
-        <ownedComment xmi:id="StructuredClassifier-part.1-_ownedComment.0" annotatedElement="StructuredClassifier-part.1">
-          <body>Derivation for StructuredClassifier::/part</body>
-        </ownedComment>
-        <ownedRule xmi:id="StructuredClassifier-part.1-spec" name="spec" constrainedElement="StructuredClassifier-part.1 StructuredClassifier-part">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="StructuredClassifier-part.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (ownedAttribute->select(isComposite)->asSet())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="StructuredClassifier-part.1-result" name="result" type="Property" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="StructuredClassifier-part.1-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StructuredClassifier-part.1-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="StructuredClassifier-allRoles" name="allRoles" bodyCondition="StructuredClassifier-allRoles-spec" isQuery="true">
-        <ownedComment xmi:id="StructuredClassifier-allRoles-_ownedComment.0" annotatedElement="StructuredClassifier-allRoles">
-          <body>All features of type ConnectableElement, equivalent to all direct and inherited roles.</body>
-        </ownedComment>
-        <ownedRule xmi:id="StructuredClassifier-allRoles-spec" name="spec" constrainedElement="StructuredClassifier-allRoles">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="StructuredClassifier-allRoles-spec-_specification">
-            <language>OCL</language>
-            <body>result = (allFeatures()->select(oclIsKindOf(ConnectableElement))->collect(oclAsType(ConnectableElement))->asSet())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="StructuredClassifier-allRoles-result" name="result" type="ConnectableElement" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="StructuredClassifier-allRoles-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StructuredClassifier-allRoles-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Enumeration" xmi:id="ConnectorKind" name="ConnectorKind" visibility="private">
-      <ownedComment xmi:id="ConnectorKind-_ownedComment.0" annotatedElement="ConnectorKind">
-        <body>ConnectorKind is an enumeration that defines whether a Connector is an assembly or a delegation.</body>
-      </ownedComment>
-      <ownedLiteral xmi:id="ConnectorKind-assembly" name="assembly">
-        <ownedComment xmi:id="ConnectorKind-assembly-_ownedComment.0" annotatedElement="ConnectorKind-assembly">
-          <body>Indicates that the Connector is an assembly Connector.</body>
-        </ownedComment>
-      </ownedLiteral>
-      <ownedLiteral xmi:id="ConnectorKind-delegation" name="delegation">
-        <ownedComment xmi:id="ConnectorKind-delegation-_ownedComment.0" annotatedElement="ConnectorKind-delegation">
-          <body>Indicates that the Connector is a delegation Connector.</body>
-        </ownedComment>
-      </ownedLiteral>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_part_structuredClassifier" name="A_part_structuredClassifier" visibility="private" isDerived="true" memberEnd="StructuredClassifier-part A_part_structuredClassifier-structuredClassifier">
-      <ownedEnd xmi:id="A_part_structuredClassifier-structuredClassifier" name="structuredClassifier" type="StructuredClassifier" association="A_part_structuredClassifier">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_part_structuredClassifier-structuredClassifier-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedConnector_structuredClassifier" name="A_ownedConnector_structuredClassifier" visibility="private" memberEnd="StructuredClassifier-ownedConnector A_ownedConnector_structuredClassifier-structuredClassifier">
-      <ownedEnd xmi:id="A_ownedConnector_structuredClassifier-structuredClassifier" name="structuredClassifier" type="StructuredClassifier" subsettedProperty="Feature-featuringClassifier NamedElement-namespace RedefinableElement-redefinitionContext" association="A_ownedConnector_structuredClassifier">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_ownedConnector_structuredClassifier-structuredClassifier-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedAttribute_structuredClassifier" name="A_ownedAttribute_structuredClassifier" visibility="private" memberEnd="StructuredClassifier-ownedAttribute A_ownedAttribute_structuredClassifier-structuredClassifier">
-      <generalization xmi:id="A_ownedAttribute_structuredClassifier-_generalization.0" general="A_role_structuredClassifier"/>
-      <ownedEnd xmi:id="A_ownedAttribute_structuredClassifier-structuredClassifier" name="structuredClassifier" type="StructuredClassifier" redefinedProperty="A_role_structuredClassifier-structuredClassifier" subsettedProperty="A_attribute_classifier-classifier NamedElement-namespace" association="A_ownedAttribute_structuredClassifier">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_ownedAttribute_structuredClassifier-structuredClassifier-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_role_structuredClassifier" name="A_role_structuredClassifier" visibility="private" isDerived="true" memberEnd="StructuredClassifier-role A_role_structuredClassifier-structuredClassifier">
-      <ownedEnd xmi:id="A_role_structuredClassifier-structuredClassifier" name="structuredClassifier" type="StructuredClassifier" isReadOnly="true" isDerived="true" isDerivedUnion="true" subsettedProperty="A_member_memberNamespace-memberNamespace" association="A_role_structuredClassifier">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_role_structuredClassifier-structuredClassifier-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_role_structuredClassifier-structuredClassifier-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_protocol_port" name="A_protocol_port" visibility="private" memberEnd="Port-protocol A_protocol_port-port">
-      <ownedEnd xmi:id="A_protocol_port-port" name="port" type="Port" association="A_protocol_port">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_protocol_port-port-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_protocol_port-port-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_required_port" name="A_required_port" visibility="private" isDerived="true" memberEnd="Port-required A_required_port-port">
-      <ownedEnd xmi:id="A_required_port-port" name="port" type="Port" association="A_required_port">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_required_port-port-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_required_port-port-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_redefinedPort_port" name="A_redefinedPort_port" visibility="private" memberEnd="Port-redefinedPort A_redefinedPort_port-port">
-      <ownedEnd xmi:id="A_redefinedPort_port-port" name="port" type="Port" subsettedProperty="A_redefinedProperty_property-property" association="A_redefinedPort_port">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_redefinedPort_port-port-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_redefinedPort_port-port-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_provided_port" name="A_provided_port" visibility="private" isDerived="true" memberEnd="Port-provided A_provided_port-port">
-      <ownedEnd xmi:id="A_provided_port-port" name="port" type="Port" association="A_provided_port">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_provided_port-port-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_provided_port-port-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedPort_encapsulatedClassifier" name="A_ownedPort_encapsulatedClassifier" visibility="private" isDerived="true" memberEnd="EncapsulatedClassifier-ownedPort A_ownedPort_encapsulatedClassifier-encapsulatedClassifier">
-      <ownedEnd xmi:id="A_ownedPort_encapsulatedClassifier-encapsulatedClassifier" name="encapsulatedClassifier" type="EncapsulatedClassifier" subsettedProperty="A_ownedAttribute_structuredClassifier-structuredClassifier" association="A_ownedPort_encapsulatedClassifier">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_ownedPort_encapsulatedClassifier-encapsulatedClassifier-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_partWithPort_connectorEnd" name="A_partWithPort_connectorEnd" visibility="private" memberEnd="ConnectorEnd-partWithPort A_partWithPort_connectorEnd-connectorEnd">
-      <ownedEnd xmi:id="A_partWithPort_connectorEnd-connectorEnd" name="connectorEnd" type="ConnectorEnd" association="A_partWithPort_connectorEnd">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_partWithPort_connectorEnd-connectorEnd-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_partWithPort_connectorEnd-connectorEnd-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_definingEnd_connectorEnd" name="A_definingEnd_connectorEnd" visibility="private" isDerived="true" memberEnd="ConnectorEnd-definingEnd A_definingEnd_connectorEnd-connectorEnd">
-      <ownedEnd xmi:id="A_definingEnd_connectorEnd-connectorEnd" name="connectorEnd" type="ConnectorEnd" association="A_definingEnd_connectorEnd">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_definingEnd_connectorEnd-connectorEnd-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_definingEnd_connectorEnd-connectorEnd-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_end_connector" name="A_end_connector" visibility="private" memberEnd="Connector-end A_end_connector-connector">
-      <ownedEnd xmi:id="A_end_connector-connector" name="connector" type="Connector" subsettedProperty="Element-owner" association="A_end_connector"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_redefinedConnector_connector" name="A_redefinedConnector_connector" visibility="private" memberEnd="Connector-redefinedConnector A_redefinedConnector_connector-connector">
-      <ownedEnd xmi:id="A_redefinedConnector_connector-connector" name="connector" type="Connector" subsettedProperty="A_redefinedElement_redefinableElement-redefinableElement" association="A_redefinedConnector_connector">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_redefinedConnector_connector-connector-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_redefinedConnector_connector-connector-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_contract_connector" name="A_contract_connector" visibility="private" memberEnd="Connector-contract A_contract_connector-connector">
-      <ownedEnd xmi:id="A_contract_connector-connector" name="connector" type="Connector" association="A_contract_connector">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_contract_connector-connector-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_contract_connector-connector-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_type_connector" name="A_type_connector" visibility="private" memberEnd="Connector-type A_type_connector-connector">
-      <ownedEnd xmi:id="A_type_connector-connector" name="connector" type="Connector" association="A_type_connector">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_type_connector-connector-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_type_connector-connector-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_connectableElement_templateParameter_parameteredElement" name="A_connectableElement_templateParameter_parameteredElement" visibility="private" memberEnd="ConnectableElement-templateParameter ConnectableElementTemplateParameter-parameteredElement"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_end_role" name="A_end_role" visibility="private" memberEnd="ConnectorEnd-role A_end_role-end">
-      <ownedEnd xmi:id="A_end_role-end" name="end" visibility="private" type="ConnectorEnd" association="A_end_role">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_end_role-end-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_end_role-end-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_realizingClassifier_componentRealization" name="A_realizingClassifier_componentRealization" visibility="private" memberEnd="ComponentRealization-realizingClassifier A_realizingClassifier_componentRealization-componentRealization">
-      <ownedEnd xmi:id="A_realizingClassifier_componentRealization-componentRealization" name="componentRealization" type="ComponentRealization" subsettedProperty="NamedElement-clientDependency" association="A_realizingClassifier_componentRealization">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_realizingClassifier_componentRealization-componentRealization-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_realizingClassifier_componentRealization-componentRealization-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_required_component" name="A_required_component" visibility="private" isDerived="true" memberEnd="Component-required A_required_component-component">
-      <ownedEnd xmi:id="A_required_component-component" name="component" type="Component" association="A_required_component">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_required_component-component-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_required_component-component-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_packagedElement_component" name="A_packagedElement_component" visibility="private" memberEnd="Component-packagedElement A_packagedElement_component-component">
-      <ownedEnd xmi:id="A_packagedElement_component-component" name="component" type="Component" subsettedProperty="NamedElement-namespace" association="A_packagedElement_component">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_packagedElement_component-component-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_realization_abstraction_component" name="A_realization_abstraction_component" visibility="private" memberEnd="Component-realization ComponentRealization-abstraction"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_provided_component" name="A_provided_component" visibility="private" isDerived="true" memberEnd="Component-provided A_provided_component-component">
-      <ownedEnd xmi:id="A_provided_component-component" name="component" type="Component" association="A_provided_component">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_provided_component-component-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_provided_component-component-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_type_collaborationUse" name="A_type_collaborationUse" visibility="private" memberEnd="CollaborationUse-type A_type_collaborationUse-collaborationUse">
-      <ownedEnd xmi:id="A_type_collaborationUse-collaborationUse" name="collaborationUse" type="CollaborationUse" association="A_type_collaborationUse">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_type_collaborationUse-collaborationUse-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_type_collaborationUse-collaborationUse-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_roleBinding_collaborationUse" name="A_roleBinding_collaborationUse" visibility="private" memberEnd="CollaborationUse-roleBinding A_roleBinding_collaborationUse-collaborationUse">
-      <ownedEnd xmi:id="A_roleBinding_collaborationUse-collaborationUse" name="collaborationUse" type="CollaborationUse" subsettedProperty="Element-owner" association="A_roleBinding_collaborationUse">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_roleBinding_collaborationUse-collaborationUse-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_collaborationRole_collaboration" name="A_collaborationRole_collaboration" visibility="private" memberEnd="Collaboration-collaborationRole A_collaborationRole_collaboration-collaboration">
-      <ownedEnd xmi:id="A_collaborationRole_collaboration-collaboration" name="collaboration" type="Collaboration" subsettedProperty="A_role_structuredClassifier-structuredClassifier" association="A_collaborationRole_collaboration">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_collaborationRole_collaboration-collaboration-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_collaborationRole_collaboration-collaboration-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedOperation_class" name="A_ownedOperation_class" visibility="private" memberEnd="Class-ownedOperation Operation-class"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_superClass_class" name="A_superClass_class" visibility="private" isDerived="true" memberEnd="Class-superClass A_superClass_class-class">
-      <ownedEnd xmi:id="A_superClass_class-class" name="class" type="Class" subsettedProperty="A_general_classifier-classifier" association="A_superClass_class">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_superClass_class-class-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_superClass_class-class-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_extension_metaclass" name="A_extension_metaclass" visibility="private" isDerived="true" memberEnd="Class-extension Extension-metaclass"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedAttribute_class" name="A_ownedAttribute_class" visibility="private" memberEnd="Class-ownedAttribute Property-class"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_nestedClassifier_nestingClass" name="A_nestedClassifier_nestingClass" visibility="private" memberEnd="Class-nestedClassifier A_nestedClassifier_nestingClass-nestingClass">
-      <ownedEnd xmi:id="A_nestedClassifier_nestingClass-nestingClass" name="nestingClass" type="Class" subsettedProperty="NamedElement-namespace RedefinableElement-redefinitionContext" association="A_nestedClassifier_nestingClass">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_nestedClassifier_nestingClass-nestingClass-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedReception_class" name="A_ownedReception_class" visibility="private" memberEnd="Class-ownedReception A_ownedReception_class-class">
-      <ownedEnd xmi:id="A_ownedReception_class-class" name="class" type="Class" subsettedProperty="Feature-featuringClassifier NamedElement-namespace" association="A_ownedReception_class">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_ownedReception_class-class-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_memberEnd_association" name="A_memberEnd_association" visibility="private" memberEnd="Association-memberEnd Property-association"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_endType_association" name="A_endType_association" visibility="private" isDerived="true" memberEnd="Association-endType A_endType_association-association">
-      <ownedEnd xmi:id="A_endType_association-association" name="association" type="Association" subsettedProperty="A_relatedElement_relationship-relationship" association="A_endType_association">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_endType_association-association-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_endType_association-association-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_ownedEnd_owningAssociation" name="A_ownedEnd_owningAssociation" visibility="private" memberEnd="Association-ownedEnd Property-owningAssociation"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_navigableOwnedEnd_association" name="A_navigableOwnedEnd_association" visibility="private" memberEnd="Association-navigableOwnedEnd A_navigableOwnedEnd_association-association">
-      <ownedEnd xmi:id="A_navigableOwnedEnd_association-association" name="association" type="Association" subsettedProperty="Property-owningAssociation" association="A_navigableOwnedEnd_association">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_navigableOwnedEnd_association-association-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Actor" name="Actor">
-      <ownedComment xmi:id="Actor-_ownedComment.0" annotatedElement="Actor">
-        <body>An Actor specifies a role played by a user or any other system that interacts with the subject.</body>
-      </ownedComment>
-      <ownedRule xmi:id="Actor-associations" name="associations" constrainedElement="Actor">
-        <ownedComment xmi:id="Actor-associations-_ownedComment.0" annotatedElement="Actor-associations">
-          <body>An Actor can only have Associations to UseCases, Components, and Classes. Furthermore these Associations must be binary.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Actor-associations-_specification">
-          <language>OCL</language>
-          <body>Association.allInstances()->forAll( a |
-  a.memberEnd->collect(type)->includes(self) implies
-  (
-    a.memberEnd->size() = 2 and
-    let actorEnd : Property = a.memberEnd->any(type = self) in
-      actorEnd.opposite.class.oclIsKindOf(UseCase) or
-      ( actorEnd.opposite.class.oclIsKindOf(Class) and not
-         actorEnd.opposite.class.oclIsKindOf(Behavior))
-      )
-  )</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="Actor-must_have_name" name="must_have_name" constrainedElement="Actor">
-        <ownedComment xmi:id="Actor-must_have_name-_ownedComment.0" annotatedElement="Actor-must_have_name">
-          <body>An Actor must have a name.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Actor-must_have_name-_specification">
-          <language>OCL</language>
-          <body>name->notEmpty()</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="Actor-_generalization.0" general="BehavioredClassifier"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Extend" name="Extend">
-      <ownedComment xmi:id="Extend-_ownedComment.0" annotatedElement="Extend">
-        <body>A relationship from an extending UseCase to an extended UseCase that specifies how and when the behavior defined in the extending UseCase can be inserted into the behavior defined in the extended UseCase.</body>
-      </ownedComment>
-      <ownedRule xmi:id="Extend-extension_points" name="extension_points" constrainedElement="Extend">
-        <ownedComment xmi:id="Extend-extension_points-_ownedComment.0" annotatedElement="Extend-extension_points">
-          <body>The ExtensionPoints referenced by the Extend relationship must belong to the UseCase that is being extended.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Extend-extension_points-_specification">
-          <language>OCL</language>
-          <body>extensionLocation->forAll (xp | extendedCase.extensionPoint->includes(xp))</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="Extend-_generalization.0" general="NamedElement"/>
-      <generalization xmi:id="Extend-_generalization.1" general="DirectedRelationship"/>
-      <ownedAttribute xmi:id="Extend-condition" name="condition" type="Constraint" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_condition_extend">
-        <ownedComment xmi:id="Extend-condition-_ownedComment.0" annotatedElement="Extend-condition">
-          <body>References the condition that must hold when the first ExtensionPoint is reached for the extension to take place. If no constraint is associated with the Extend relationship, the extension is unconditional.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Extend-condition-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Extend-extendedCase" name="extendedCase" type="UseCase" subsettedProperty="DirectedRelationship-target" association="A_extendedCase_extend">
-        <ownedComment xmi:id="Extend-extendedCase-_ownedComment.0" annotatedElement="Extend-extendedCase">
-          <body>The UseCase that is being extended.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Extend-extension" name="extension" type="UseCase" subsettedProperty="DirectedRelationship-source NamedElement-namespace" association="A_extend_extension">
-        <ownedComment xmi:id="Extend-extension-_ownedComment.0" annotatedElement="Extend-extension">
-          <body>The UseCase that represents the extension and owns the Extend relationship.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Extend-extensionLocation" name="extensionLocation" type="ExtensionPoint" isOrdered="true" association="A_extensionLocation_extension">
-        <ownedComment xmi:id="Extend-extensionLocation-_ownedComment.0" annotatedElement="Extend-extensionLocation">
-          <body>An ordered list of ExtensionPoints belonging to the extended UseCase, specifying where the respective behavioral fragments of the extending UseCase are to be inserted. The first fragment in the extending UseCase is associated with the first extension point in the list, the second fragment with the second point, and so on. Note that, in most practical cases, the extending UseCase has just a single behavior fragment, so that the list of ExtensionPoints is trivial.</body>
-        </ownedComment>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Extend-extensionLocation-_upperValue" value="*"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ExtensionPoint" name="ExtensionPoint">
-      <ownedComment xmi:id="ExtensionPoint-_ownedComment.0" annotatedElement="ExtensionPoint">
-        <body>An ExtensionPoint identifies a point in the behavior of a UseCase where that behavior can be extended by the behavior of some other (extending) UseCase, as specified by an Extend relationship.</body>
-      </ownedComment>
-      <ownedRule xmi:id="ExtensionPoint-must_have_name" name="must_have_name" constrainedElement="ExtensionPoint">
-        <ownedComment xmi:id="ExtensionPoint-must_have_name-_ownedComment.0" annotatedElement="ExtensionPoint-must_have_name">
-          <body>An ExtensionPoint must have a name.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="ExtensionPoint-must_have_name-_specification">
-          <language>OCL</language>
-          <body>name->notEmpty ()</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="ExtensionPoint-_generalization.0" general="RedefinableElement"/>
-      <ownedAttribute xmi:id="ExtensionPoint-useCase" name="useCase" type="UseCase" subsettedProperty="NamedElement-namespace" association="A_extensionPoint_useCase">
-        <ownedComment xmi:id="ExtensionPoint-useCase-_ownedComment.0" annotatedElement="ExtensionPoint-useCase">
-          <body>The UseCase that owns this ExtensionPoint.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Include" name="Include">
-      <ownedComment xmi:id="Include-_ownedComment.0" annotatedElement="Include">
-        <body>An Include relationship specifies that a UseCase contains the behavior defined in another UseCase.</body>
-      </ownedComment>
-      <generalization xmi:id="Include-_generalization.0" general="DirectedRelationship"/>
-      <generalization xmi:id="Include-_generalization.1" general="NamedElement"/>
-      <ownedAttribute xmi:id="Include-addition" name="addition" type="UseCase" subsettedProperty="DirectedRelationship-target" association="A_addition_include">
-        <ownedComment xmi:id="Include-addition-_ownedComment.0" annotatedElement="Include-addition">
-          <body>The UseCase that is to be included.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Include-includingCase" name="includingCase" type="UseCase" subsettedProperty="DirectedRelationship-source NamedElement-namespace" association="A_include_includingCase">
-        <ownedComment xmi:id="Include-includingCase-_ownedComment.0" annotatedElement="Include-includingCase">
-          <body>The UseCase which includes the addition and owns the Include relationship.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="UseCase" name="UseCase">
-      <ownedComment xmi:id="UseCase-_ownedComment.0" annotatedElement="UseCase">
-        <body>A UseCase specifies a set of actions performed by its subjects, which yields an observable result that is of value for one or more Actors or other stakeholders of each subject.</body>
-      </ownedComment>
-      <ownedRule xmi:id="UseCase-binary_associations" name="binary_associations" constrainedElement="UseCase">
-        <ownedComment xmi:id="UseCase-binary_associations-_ownedComment.0" annotatedElement="UseCase-binary_associations">
-          <body>UseCases can only be involved in binary Associations.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="UseCase-binary_associations-_specification">
-          <language>OCL</language>
-          <body>Association.allInstances()->forAll(a | a.memberEnd.type->includes(self) implies a.memberEnd->size() = 2)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="UseCase-no_association_to_use_case" name="no_association_to_use_case" constrainedElement="UseCase">
-        <ownedComment xmi:id="UseCase-no_association_to_use_case-_ownedComment.0" annotatedElement="UseCase-no_association_to_use_case">
-          <body>UseCases cannot have Associations to UseCases specifying the same subject.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="UseCase-no_association_to_use_case-_specification">
-          <language>OCL</language>
-          <body>Association.allInstances()->forAll(a | a.memberEnd.type->includes(self) implies &#xD;
-   (&#xD;
-   let usecases: Set(UseCase) = a.memberEnd.type->select(oclIsKindOf(UseCase))->collect(oclAsType(UseCase))->asSet() in&#xD;
-   usecases->size() > 1 implies usecases->collect(subject)->size() > 1&#xD;
-   )&#xD;
-)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="UseCase-cannot_include_self" name="cannot_include_self" constrainedElement="UseCase">
-        <ownedComment xmi:id="UseCase-cannot_include_self-_ownedComment.0" annotatedElement="UseCase-cannot_include_self">
-          <body>A UseCase cannot include UseCases that directly or indirectly include it.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="UseCase-cannot_include_self-_specification">
-          <language>OCL</language>
-          <body>not allIncludedUseCases()->includes(self)</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="UseCase-must_have_name" name="must_have_name" constrainedElement="UseCase">
-        <ownedComment xmi:id="UseCase-must_have_name-_ownedComment.0" annotatedElement="UseCase-must_have_name">
-          <body>A UseCase must have a name.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="UseCase-must_have_name-_specification">
-          <language>OCL</language>
-          <body>name -> notEmpty ()</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="UseCase-_generalization.0" general="BehavioredClassifier"/>
-      <ownedAttribute xmi:id="UseCase-extend" name="extend" type="Extend" aggregation="composite" subsettedProperty="A_source_directedRelationship-directedRelationship Namespace-ownedMember" association="A_extend_extension">
-        <ownedComment xmi:id="UseCase-extend-_ownedComment.0" annotatedElement="UseCase-extend">
-          <body>The Extend relationships owned by this UseCase.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="UseCase-extend-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="UseCase-extend-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="UseCase-extensionPoint" name="extensionPoint" type="ExtensionPoint" aggregation="composite" subsettedProperty="Namespace-ownedMember" association="A_extensionPoint_useCase">
-        <ownedComment xmi:id="UseCase-extensionPoint-_ownedComment.0" annotatedElement="UseCase-extensionPoint">
-          <body>The ExtensionPoints owned by this UseCase.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="UseCase-extensionPoint-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="UseCase-extensionPoint-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="UseCase-include" name="include" type="Include" aggregation="composite" subsettedProperty="A_source_directedRelationship-directedRelationship Namespace-ownedMember" association="A_include_includingCase">
-        <ownedComment xmi:id="UseCase-include-_ownedComment.0" annotatedElement="UseCase-include">
-          <body>The Include relationships owned by this UseCase.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="UseCase-include-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="UseCase-include-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="UseCase-subject" name="subject" type="Classifier" association="A_subject_useCase">
-        <ownedComment xmi:id="UseCase-subject-_ownedComment.0" annotatedElement="UseCase-subject">
-          <body>The subjects to which this UseCase applies. Each subject or its parts realize all the UseCases that apply to it.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="UseCase-subject-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="UseCase-subject-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="UseCase-allIncludedUseCases" name="allIncludedUseCases" bodyCondition="UseCase-allIncludedUseCases-spec" isQuery="true">
-        <ownedComment xmi:id="UseCase-allIncludedUseCases-_ownedComment.0" annotatedElement="UseCase-allIncludedUseCases">
-          <body>The query allIncludedUseCases() returns the transitive closure of all UseCases (directly or indirectly) included by this UseCase.</body>
-        </ownedComment>
-        <ownedRule xmi:id="UseCase-allIncludedUseCases-spec" name="spec" constrainedElement="UseCase-allIncludedUseCases">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="UseCase-allIncludedUseCases-spec-_specification">
-            <language>OCL</language>
-            <body>result = (self.include.addition->union(self.include.addition->collect(uc | uc.allIncludedUseCases()))->asSet())</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="UseCase-allIncludedUseCases-result" name="result" type="UseCase" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="UseCase-allIncludedUseCases-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="UseCase-allIncludedUseCases-result-_upperValue" value="*"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_extensionPoint_useCase" name="A_extensionPoint_useCase" visibility="private" memberEnd="UseCase-extensionPoint ExtensionPoint-useCase"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_include_includingCase" name="A_include_includingCase" visibility="private" memberEnd="UseCase-include Include-includingCase"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_subject_useCase" name="A_subject_useCase" visibility="private" memberEnd="UseCase-subject Classifier-useCase"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_extend_extension" name="A_extend_extension" visibility="private" memberEnd="UseCase-extend Extend-extension"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_addition_include" name="A_addition_include" visibility="private" memberEnd="Include-addition A_addition_include-include">
-      <ownedEnd xmi:id="A_addition_include-include" name="include" type="Include" subsettedProperty="A_target_directedRelationship-directedRelationship" association="A_addition_include">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_addition_include-include-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_addition_include-include-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_extensionLocation_extension" name="A_extensionLocation_extension" visibility="private" memberEnd="Extend-extensionLocation A_extensionLocation_extension-extension">
-      <ownedEnd xmi:id="A_extensionLocation_extension-extension" name="extension" type="Extend" association="A_extensionLocation_extension">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_extensionLocation_extension-extension-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_extensionLocation_extension-extension-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_condition_extend" name="A_condition_extend" visibility="private" memberEnd="Extend-condition A_condition_extend-extend">
-      <ownedEnd xmi:id="A_condition_extend-extend" name="extend" type="Extend" subsettedProperty="Element-owner" association="A_condition_extend">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_condition_extend-extend-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_extendedCase_extend" name="A_extendedCase_extend" visibility="private" memberEnd="Extend-extendedCase A_extendedCase_extend-extend">
-      <ownedEnd xmi:id="A_extendedCase_extend-extend" name="extend" type="Extend" subsettedProperty="A_target_directedRelationship-directedRelationship" association="A_extendedCase_extend">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_extendedCase_extend-extend-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_extendedCase_extend-extend-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Duration" name="Duration">
-      <ownedComment xmi:id="Duration-_ownedComment.0" annotatedElement="Duration">
-        <body>A Duration is a ValueSpecification that specifies the temporal distance between two time instants.</body>
-      </ownedComment>
-      <ownedRule xmi:id="Duration-no_expr_requires_observation" name="no_expr_requires_observation" constrainedElement="Duration">
-        <ownedComment xmi:id="Duration-no_expr_requires_observation-_ownedComment.0" annotatedElement="Duration-no_expr_requires_observation">
-          <body>If a Duration has no expr, then it must have a single observation that is a DurationObservation.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="Duration-no_expr_requires_observation-_specification">
-          <language>OCL</language>
-          <body>expr = null implies (observation->size() = 1 and observation->forAll(oclIsKindOf(DurationObservation)))</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="Duration-_generalization.0" general="ValueSpecification"/>
-      <ownedAttribute xmi:id="Duration-expr" name="expr" type="ValueSpecification" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_expr_duration">
-        <ownedComment xmi:id="Duration-expr-_ownedComment.0" annotatedElement="Duration-expr">
-          <body>A ValueSpecification that evaluates to the value of the Duration.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Duration-expr-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Duration-observation" name="observation" type="Observation" association="A_observation_duration">
-        <ownedComment xmi:id="Duration-observation-_ownedComment.0" annotatedElement="Duration-observation">
-          <body>Refers to the Observations that are involved in the computation of the Duration value</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Duration-observation-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Duration-observation-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="Duration-stringValue" name="stringValue" visibility="protected" isQuery="true">
-        <ownedParameter xmi:id="Duration-stringValue-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="DurationConstraint" name="DurationConstraint">
-      <ownedComment xmi:id="DurationConstraint-_ownedComment.0" annotatedElement="DurationConstraint">
-        <body>A DurationConstraint is a Constraint that refers to a DurationInterval.</body>
-      </ownedComment>
-      <ownedRule xmi:id="DurationConstraint-first_event_multiplicity" name="first_event_multiplicity" constrainedElement="DurationConstraint">
-        <ownedComment xmi:id="DurationConstraint-first_event_multiplicity-_ownedComment.0" annotatedElement="DurationConstraint-first_event_multiplicity">
-          <body>The multiplicity of firstEvent must be 2 if the multiplicity of constrainedElement is 2. Otherwise the multiplicity of firstEvent is 0.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="DurationConstraint-first_event_multiplicity-_specification">
-          <language>OCL</language>
-          <body>if (constrainedElement->size() = 2)&#xD;
-  then (firstEvent->size() = 2) else (firstEvent->size() = 0) &#xD;
-endif</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="DurationConstraint-has_one_or_two_constrainedElements" name="has_one_or_two_constrainedElements" constrainedElement="DurationConstraint">
-        <ownedComment xmi:id="DurationConstraint-has_one_or_two_constrainedElements-_ownedComment.0" annotatedElement="DurationConstraint-has_one_or_two_constrainedElements">
-          <body>A DurationConstraint has either one or two constrainedElements.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="DurationConstraint-has_one_or_two_constrainedElements-_specification">
-          <language>OCL</language>
-          <body>constrainedElement->size() = 1 or constrainedElement->size()=2</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="DurationConstraint-_generalization.0" general="IntervalConstraint"/>
-      <ownedAttribute xmi:id="DurationConstraint-firstEvent" name="firstEvent">
-        <ownedComment xmi:id="DurationConstraint-firstEvent-_ownedComment.0" annotatedElement="DurationConstraint-firstEvent">
-          <body>The value of firstEvent[i] is related to constrainedElement[i] (where i is 1 or 2). If firstEvent[i] is true, then the corresponding observation event is the first time instant the execution enters constrainedElement[i]. If firstEvent[i] is false, then the corresponding observation event is the last time instant the execution is within constrainedElement[i].</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="DurationConstraint-firstEvent-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DurationConstraint-firstEvent-_upperValue" value="2"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="DurationConstraint-specification" name="specification" type="DurationInterval" aggregation="composite" redefinedProperty="IntervalConstraint-specification Constraint-specification" association="A_specification_durationConstraint">
-        <ownedComment xmi:id="DurationConstraint-specification-_ownedComment.0" annotatedElement="DurationConstraint-specification">
-          <body>The DurationInterval constraining the duration.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="DurationInterval" name="DurationInterval">
-      <ownedComment xmi:id="DurationInterval-_ownedComment.0" annotatedElement="DurationInterval">
-        <body>A DurationInterval defines the range between two Durations.</body>
-      </ownedComment>
-      <generalization xmi:id="DurationInterval-_generalization.0" general="Interval"/>
-      <ownedAttribute xmi:id="DurationInterval-max" name="max" type="Duration" redefinedProperty="Interval-max" association="A_max_durationInterval">
-        <ownedComment xmi:id="DurationInterval-max-_ownedComment.0" annotatedElement="DurationInterval-max">
-          <body>Refers to the Duration denoting the maximum value of the range.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="DurationInterval-min" name="min" type="Duration" redefinedProperty="Interval-min" association="A_min_durationInterval">
-        <ownedComment xmi:id="DurationInterval-min-_ownedComment.0" annotatedElement="DurationInterval-min">
-          <body>Refers to the Duration denoting the minimum value of the range.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="DurationObservation" name="DurationObservation">
-      <ownedComment xmi:id="DurationObservation-_ownedComment.0" annotatedElement="DurationObservation">
-        <body>A DurationObservation is a reference to a duration during an execution. It points out the NamedElement(s) in the model to observe and whether the observations are when this NamedElement is entered or when it is exited.</body>
-      </ownedComment>
-      <ownedRule xmi:id="DurationObservation-first_event_multiplicity" name="first_event_multiplicity" constrainedElement="DurationObservation">
-        <ownedComment xmi:id="DurationObservation-first_event_multiplicity-_ownedComment.0" annotatedElement="DurationObservation-first_event_multiplicity">
-          <body>The multiplicity of firstEvent must be 2 if the multiplicity of event is 2. Otherwise the multiplicity of firstEvent is 0.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="DurationObservation-first_event_multiplicity-_specification">
-          <language>OCL</language>
-          <body>if (event->size() = 2)&#xD;
-  then (firstEvent->size() = 2) else (firstEvent->size() = 0)&#xD;
-endif</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="DurationObservation-_generalization.0" general="Observation"/>
-      <ownedAttribute xmi:id="DurationObservation-event" name="event" type="NamedElement" isOrdered="true" association="A_event_durationObservation">
-        <ownedComment xmi:id="DurationObservation-event-_ownedComment.0" annotatedElement="DurationObservation-event">
-          <body>The DurationObservation is determined as the duration between the entering or exiting of a single event Element during execution, or the entering/exiting of one event Element and the entering/exiting of a second.</body>
-        </ownedComment>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DurationObservation-event-_upperValue" value="2"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="DurationObservation-firstEvent" name="firstEvent">
-        <ownedComment xmi:id="DurationObservation-firstEvent-_ownedComment.0" annotatedElement="DurationObservation-firstEvent">
-          <body>The value of firstEvent[i] is related to event[i] (where i is 1 or 2). If firstEvent[i] is true, then the corresponding observation event is the first time instant the execution enters event[i]. If firstEvent[i] is false, then the corresponding observation event is the time instant the execution exits event[i].</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="DurationObservation-firstEvent-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="DurationObservation-firstEvent-_upperValue" value="2"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Expression" name="Expression">
-      <ownedComment xmi:id="Expression-_ownedComment.0" annotatedElement="Expression">
-        <body>An Expression represents a node in an expression tree, which may be non-terminal or terminal. It defines a symbol, and has a possibly empty sequence of operands that are ValueSpecifications. It denotes a (possibly empty) set of values when evaluated in a context.</body>
-      </ownedComment>
-      <generalization xmi:id="Expression-_generalization.0" general="ValueSpecification"/>
-      <ownedAttribute xmi:id="Expression-operand" name="operand" type="ValueSpecification" isOrdered="true" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_operand_expression">
-        <ownedComment xmi:id="Expression-operand-_ownedComment.0" annotatedElement="Expression-operand">
-          <body>Specifies a sequence of operand ValueSpecifications.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Expression-operand-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Expression-operand-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Expression-symbol" name="symbol">
-        <ownedComment xmi:id="Expression-symbol-_ownedComment.0" annotatedElement="Expression-symbol">
-          <body>The symbol associated with this node in the expression tree.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Expression-symbol-_lowerValue"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Interval" name="Interval">
-      <ownedComment xmi:id="Interval-_ownedComment.0" annotatedElement="Interval">
-        <body>An Interval defines the range between two ValueSpecifications.</body>
-      </ownedComment>
-      <generalization xmi:id="Interval-_generalization.0" general="ValueSpecification"/>
-      <ownedAttribute xmi:id="Interval-max" name="max" type="ValueSpecification" association="A_max_interval">
-        <ownedComment xmi:id="Interval-max-_ownedComment.0" annotatedElement="Interval-max">
-          <body>Refers to the ValueSpecification denoting the maximum value of the range.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="Interval-min" name="min" type="ValueSpecification" association="A_min_interval">
-        <ownedComment xmi:id="Interval-min-_ownedComment.0" annotatedElement="Interval-min">
-          <body>Refers to the ValueSpecification denoting the minimum value of the range.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="IntervalConstraint" name="IntervalConstraint">
-      <ownedComment xmi:id="IntervalConstraint-_ownedComment.0" annotatedElement="IntervalConstraint">
-        <body>An IntervalConstraint is a Constraint that is specified by an Interval.</body>
-      </ownedComment>
-      <generalization xmi:id="IntervalConstraint-_generalization.0" general="Constraint"/>
-      <ownedAttribute xmi:id="IntervalConstraint-specification" name="specification" type="Interval" aggregation="composite" redefinedProperty="Constraint-specification" association="A_specification_intervalConstraint">
-        <ownedComment xmi:id="IntervalConstraint-specification-_ownedComment.0" annotatedElement="IntervalConstraint-specification">
-          <body>The Interval that specifies the condition of the IntervalConstraint.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="LiteralBoolean" name="LiteralBoolean">
-      <ownedComment xmi:id="LiteralBoolean-_ownedComment.0" annotatedElement="LiteralBoolean">
-        <body>A LiteralBoolean is a specification of a Boolean value.</body>
-      </ownedComment>
-      <generalization xmi:id="LiteralBoolean-_generalization.0" general="LiteralSpecification"/>
-      <ownedAttribute xmi:id="LiteralBoolean-value" name="value">
-        <ownedComment xmi:id="LiteralBoolean-value-_ownedComment.0" annotatedElement="LiteralBoolean-value">
-          <body>The specified Boolean value.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="LiteralBoolean-value-_defaultValue"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="LiteralBoolean-stringValue" name="stringValue" visibility="protected" isQuery="true">
-        <ownedParameter xmi:id="LiteralBoolean-stringValue-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="LiteralBoolean-booleanValue" name="booleanValue" bodyCondition="LiteralBoolean-booleanValue-spec" isQuery="true" redefinedOperation="ValueSpecification-booleanValue">
-        <ownedComment xmi:id="LiteralBoolean-booleanValue-_ownedComment.0" annotatedElement="LiteralBoolean-booleanValue">
-          <body>The query booleanValue() gives the value.</body>
-        </ownedComment>
-        <ownedRule xmi:id="LiteralBoolean-booleanValue-spec" name="spec" constrainedElement="LiteralBoolean-booleanValue">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="LiteralBoolean-booleanValue-spec-_specification">
-            <language>OCL</language>
-            <body>result = (value)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="LiteralBoolean-booleanValue-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="LiteralBoolean-isComputable" name="isComputable" bodyCondition="LiteralBoolean-isComputable-spec" isQuery="true" redefinedOperation="ValueSpecification-isComputable">
-        <ownedComment xmi:id="LiteralBoolean-isComputable-_ownedComment.0" annotatedElement="LiteralBoolean-isComputable">
-          <body>The query isComputable() is redefined to be true.</body>
-        </ownedComment>
-        <ownedRule xmi:id="LiteralBoolean-isComputable-spec" name="spec" constrainedElement="LiteralBoolean-isComputable">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="LiteralBoolean-isComputable-spec-_specification">
-            <language>OCL</language>
-            <body>result = (true)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="LiteralBoolean-isComputable-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="LiteralInteger" name="LiteralInteger">
-      <ownedComment xmi:id="LiteralInteger-_ownedComment.0" annotatedElement="LiteralInteger">
-        <body>A LiteralInteger is a specification of an Integer value.</body>
-      </ownedComment>
-      <generalization xmi:id="LiteralInteger-_generalization.0" general="LiteralSpecification"/>
-      <ownedAttribute xmi:id="LiteralInteger-value" name="value">
-        <ownedComment xmi:id="LiteralInteger-value-_ownedComment.0" annotatedElement="LiteralInteger-value">
-          <body>The specified Integer value.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        <defaultValue xmi:type="uml:LiteralInteger" xmi:id="LiteralInteger-value-_defaultValue"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="LiteralInteger-stringValue" name="stringValue" visibility="protected" isQuery="true">
-        <ownedParameter xmi:id="LiteralInteger-stringValue-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="LiteralInteger-integerValue" name="integerValue" bodyCondition="LiteralInteger-integerValue-spec" isQuery="true" redefinedOperation="ValueSpecification-integerValue">
-        <ownedComment xmi:id="LiteralInteger-integerValue-_ownedComment.0" annotatedElement="LiteralInteger-integerValue">
-          <body>The query integerValue() gives the value.</body>
-        </ownedComment>
-        <ownedRule xmi:id="LiteralInteger-integerValue-spec" name="spec" constrainedElement="LiteralInteger-integerValue">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="LiteralInteger-integerValue-spec-_specification">
-            <language>OCL</language>
-            <body>result = (value)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="LiteralInteger-integerValue-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="LiteralInteger-isComputable" name="isComputable" bodyCondition="LiteralInteger-isComputable-spec" isQuery="true" redefinedOperation="ValueSpecification-isComputable">
-        <ownedComment xmi:id="LiteralInteger-isComputable-_ownedComment.0" annotatedElement="LiteralInteger-isComputable">
-          <body>The query isComputable() is redefined to be true.</body>
-        </ownedComment>
-        <ownedRule xmi:id="LiteralInteger-isComputable-spec" name="spec" constrainedElement="LiteralInteger-isComputable">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="LiteralInteger-isComputable-spec-_specification">
-            <language>OCL</language>
-            <body>result = (true)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="LiteralInteger-isComputable-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="LiteralNull" name="LiteralNull">
-      <ownedComment xmi:id="LiteralNull-_ownedComment.0" annotatedElement="LiteralNull">
-        <body>A LiteralNull specifies the lack of a value.</body>
-      </ownedComment>
-      <generalization xmi:id="LiteralNull-_generalization.0" general="LiteralSpecification"/>
-      <ownedOperation xmi:id="LiteralNull-isComputable" name="isComputable" bodyCondition="LiteralNull-isComputable-spec" isQuery="true" redefinedOperation="ValueSpecification-isComputable">
-        <ownedComment xmi:id="LiteralNull-isComputable-_ownedComment.0" annotatedElement="LiteralNull-isComputable">
-          <body>The query isComputable() is redefined to be true.</body>
-        </ownedComment>
-        <ownedRule xmi:id="LiteralNull-isComputable-spec" name="spec" constrainedElement="LiteralNull-isComputable">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="LiteralNull-isComputable-spec-_specification">
-            <language>OCL</language>
-            <body>result = (true)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="LiteralNull-isComputable-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="LiteralNull-isNull" name="isNull" bodyCondition="LiteralNull-isNull-spec" isQuery="true" redefinedOperation="ValueSpecification-isNull">
-        <ownedComment xmi:id="LiteralNull-isNull-_ownedComment.0" annotatedElement="LiteralNull-isNull">
-          <body>The query isNull() returns true.</body>
-        </ownedComment>
-        <ownedRule xmi:id="LiteralNull-isNull-spec" name="spec" constrainedElement="LiteralNull-isNull">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="LiteralNull-isNull-spec-_specification">
-            <language>OCL</language>
-            <body>result = (true)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="LiteralNull-isNull-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="LiteralReal" name="LiteralReal">
-      <ownedComment xmi:id="LiteralReal-_ownedComment.0" annotatedElement="LiteralReal">
-        <body>A LiteralReal is a specification of a Real value.</body>
-      </ownedComment>
-      <generalization xmi:id="LiteralReal-_generalization.0" general="LiteralSpecification"/>
-      <ownedAttribute xmi:id="LiteralReal-value" name="value">
-        <ownedComment xmi:id="LiteralReal-value-_ownedComment.0" annotatedElement="LiteralReal-value">
-          <body>The specified Real value.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Real"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="LiteralReal-stringValue" name="stringValue" visibility="protected" isQuery="true">
-        <ownedParameter xmi:id="LiteralReal-stringValue-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="LiteralReal-isComputable" name="isComputable" bodyCondition="LiteralReal-isComputable-spec" isQuery="true" redefinedOperation="ValueSpecification-isComputable">
-        <ownedComment xmi:id="LiteralReal-isComputable-_ownedComment.0" annotatedElement="LiteralReal-isComputable">
-          <body>The query isComputable() is redefined to be true.</body>
-        </ownedComment>
-        <ownedRule xmi:id="LiteralReal-isComputable-spec" name="spec" constrainedElement="LiteralReal-isComputable">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="LiteralReal-isComputable-spec-_specification">
-            <language>OCL</language>
-            <body>result = (true)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="LiteralReal-isComputable-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="LiteralReal-realValue" name="realValue" bodyCondition="LiteralReal-realValue-spec" isQuery="true" redefinedOperation="ValueSpecification-realValue">
-        <ownedComment xmi:id="LiteralReal-realValue-_ownedComment.0" annotatedElement="LiteralReal-realValue">
-          <body>The query realValue() gives the value.</body>
-        </ownedComment>
-        <ownedRule xmi:id="LiteralReal-realValue-spec" name="spec" constrainedElement="LiteralReal-realValue">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="LiteralReal-realValue-spec-_specification">
-            <language>OCL</language>
-            <body>result = (value)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="LiteralReal-realValue-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Real"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="LiteralSpecification" name="LiteralSpecification" isAbstract="true">
-      <ownedComment xmi:id="LiteralSpecification-_ownedComment.0" annotatedElement="LiteralSpecification">
-        <body>A LiteralSpecification identifies a literal constant being modeled.</body>
-      </ownedComment>
-      <generalization xmi:id="LiteralSpecification-_generalization.0" general="ValueSpecification"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="LiteralString" name="LiteralString">
-      <ownedComment xmi:id="LiteralString-_ownedComment.0" annotatedElement="LiteralString">
-        <body>A LiteralString is a specification of a String value.</body>
-      </ownedComment>
-      <generalization xmi:id="LiteralString-_generalization.0" general="LiteralSpecification"/>
-      <ownedAttribute xmi:id="LiteralString-value" name="value">
-        <ownedComment xmi:id="LiteralString-value-_ownedComment.0" annotatedElement="LiteralString-value">
-          <body>The specified String value.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="LiteralString-value-_lowerValue"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="LiteralString-integerValue" name="integerValue" visibility="protected" isQuery="true">
-        <ownedParameter xmi:id="LiteralString-integerValue-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="LiteralString-unlimitedValue" name="unlimitedValue" visibility="protected" isQuery="true">
-        <ownedParameter xmi:id="LiteralString-unlimitedValue-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="LiteralString-isComputable" name="isComputable" bodyCondition="LiteralString-isComputable-spec" isQuery="true" redefinedOperation="ValueSpecification-isComputable">
-        <ownedComment xmi:id="LiteralString-isComputable-_ownedComment.0" annotatedElement="LiteralString-isComputable">
-          <body>The query isComputable() is redefined to be true.</body>
-        </ownedComment>
-        <ownedRule xmi:id="LiteralString-isComputable-spec" name="spec" constrainedElement="LiteralString-isComputable">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="LiteralString-isComputable-spec-_specification">
-            <language>OCL</language>
-            <body>result = (true)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="LiteralString-isComputable-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="LiteralString-stringValue" name="stringValue" bodyCondition="LiteralString-stringValue-spec" isQuery="true" redefinedOperation="ValueSpecification-stringValue">
-        <ownedComment xmi:id="LiteralString-stringValue-_ownedComment.0" annotatedElement="LiteralString-stringValue">
-          <body>The query stringValue() gives the value.</body>
-        </ownedComment>
-        <ownedRule xmi:id="LiteralString-stringValue-spec" name="spec" constrainedElement="LiteralString-stringValue">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="LiteralString-stringValue-spec-_specification">
-            <language>OCL</language>
-            <body>result = (value)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="LiteralString-stringValue-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="LiteralUnlimitedNatural" name="LiteralUnlimitedNatural">
-      <ownedComment xmi:id="LiteralUnlimitedNatural-_ownedComment.0" annotatedElement="LiteralUnlimitedNatural">
-        <body>A LiteralUnlimitedNatural is a specification of an UnlimitedNatural number.</body>
-      </ownedComment>
-      <generalization xmi:id="LiteralUnlimitedNatural-_generalization.0" general="LiteralSpecification"/>
-      <ownedAttribute xmi:id="LiteralUnlimitedNatural-value" name="value">
-        <ownedComment xmi:id="LiteralUnlimitedNatural-value-_ownedComment.0" annotatedElement="LiteralUnlimitedNatural-value">
-          <body>The specified UnlimitedNatural value.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-        <defaultValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="LiteralUnlimitedNatural-value-_defaultValue"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="LiteralUnlimitedNatural-stringValue" name="stringValue" visibility="protected" isQuery="true">
-        <ownedParameter xmi:id="LiteralUnlimitedNatural-stringValue-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="LiteralUnlimitedNatural-isComputable" name="isComputable" bodyCondition="LiteralUnlimitedNatural-isComputable-spec" isQuery="true" redefinedOperation="ValueSpecification-isComputable">
-        <ownedComment xmi:id="LiteralUnlimitedNatural-isComputable-_ownedComment.0" annotatedElement="LiteralUnlimitedNatural-isComputable">
-          <body>The query isComputable() is redefined to be true.</body>
-        </ownedComment>
-        <ownedRule xmi:id="LiteralUnlimitedNatural-isComputable-spec" name="spec" constrainedElement="LiteralUnlimitedNatural-isComputable">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="LiteralUnlimitedNatural-isComputable-spec-_specification">
-            <language>OCL</language>
-            <body>result = (true)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="LiteralUnlimitedNatural-isComputable-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="LiteralUnlimitedNatural-unlimitedValue" name="unlimitedValue" bodyCondition="LiteralUnlimitedNatural-unlimitedValue-spec" isQuery="true" redefinedOperation="ValueSpecification-unlimitedValue">
-        <ownedComment xmi:id="LiteralUnlimitedNatural-unlimitedValue-_ownedComment.0" annotatedElement="LiteralUnlimitedNatural-unlimitedValue">
-          <body>The query unlimitedValue() gives the value.</body>
-        </ownedComment>
-        <ownedRule xmi:id="LiteralUnlimitedNatural-unlimitedValue-spec" name="spec" constrainedElement="LiteralUnlimitedNatural-unlimitedValue">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="LiteralUnlimitedNatural-unlimitedValue-spec-_specification">
-            <language>OCL</language>
-            <body>result = (value)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="LiteralUnlimitedNatural-unlimitedValue-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="Observation" name="Observation" isAbstract="true">
-      <ownedComment xmi:id="Observation-_ownedComment.0" annotatedElement="Observation">
-        <body>Observation specifies a value determined by observing an event or events that occur relative to other model Elements.</body>
-      </ownedComment>
-      <generalization xmi:id="Observation-_generalization.0" general="PackageableElement"/>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="OpaqueExpression" name="OpaqueExpression">
-      <ownedComment xmi:id="OpaqueExpression-_ownedComment.0" annotatedElement="OpaqueExpression">
-        <body>An OpaqueExpression is a ValueSpecification that specifies the computation of a collection of values either in terms of a UML Behavior or based on a textual statement in a language other than UML</body>
-      </ownedComment>
-      <ownedRule xmi:id="OpaqueExpression-language_body_size" name="language_body_size" constrainedElement="OpaqueExpression">
-        <ownedComment xmi:id="OpaqueExpression-language_body_size-_ownedComment.0" annotatedElement="OpaqueExpression-language_body_size">
-          <body>If the language attribute is not empty, then the size of the body and language arrays must be the same.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="OpaqueExpression-language_body_size-_specification">
-          <language>OCL</language>
-          <body>language->notEmpty() implies (_'body'->size() = language->size())</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="OpaqueExpression-one_return_result_parameter" name="one_return_result_parameter" constrainedElement="OpaqueExpression">
-        <ownedComment xmi:id="OpaqueExpression-one_return_result_parameter-_ownedComment.0" annotatedElement="OpaqueExpression-one_return_result_parameter">
-          <body>The behavior must have exactly one return result parameter.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="OpaqueExpression-one_return_result_parameter-_specification">
-          <language>OCL</language>
-          <body>behavior &lt;> null implies&#xD;
-   behavior.ownedParameter->select(direction=ParameterDirectionKind::return)->size() = 1</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="OpaqueExpression-only_return_result_parameters" name="only_return_result_parameters" constrainedElement="OpaqueExpression">
-        <ownedComment xmi:id="OpaqueExpression-only_return_result_parameters-_ownedComment.0" annotatedElement="OpaqueExpression-only_return_result_parameters">
-          <body>The behavior may only have return result parameters.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="OpaqueExpression-only_return_result_parameters-_specification">
-          <language>OCL</language>
-          <body>behavior &lt;> null implies behavior.ownedParameter->select(direction&lt;>ParameterDirectionKind::return)->isEmpty()</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="OpaqueExpression-_generalization.0" general="ValueSpecification"/>
-      <ownedAttribute xmi:id="OpaqueExpression-behavior" name="behavior" type="Behavior" association="A_behavior_opaqueExpression">
-        <ownedComment xmi:id="OpaqueExpression-behavior-_ownedComment.0" annotatedElement="OpaqueExpression-behavior">
-          <body>Specifies the behavior of the OpaqueExpression as a UML Behavior.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="OpaqueExpression-behavior-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="OpaqueExpression-body" name="body" isOrdered="true" isUnique="false">
-        <ownedComment xmi:id="OpaqueExpression-body-_ownedComment.0" annotatedElement="OpaqueExpression-body">
-          <body>A textual definition of the behavior of the OpaqueExpression, possibly in multiple languages.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="OpaqueExpression-body-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="OpaqueExpression-body-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="OpaqueExpression-language" name="language" isOrdered="true">
-        <ownedComment xmi:id="OpaqueExpression-language-_ownedComment.0" annotatedElement="OpaqueExpression-language">
-          <body>Specifies the languages used to express the textual bodies of the OpaqueExpression.  Languages are matched to body Strings by order. The interpretation of the body depends on the languages. If the languages are unspecified, they may be implicit from the expression body or the context.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="OpaqueExpression-language-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="OpaqueExpression-language-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="OpaqueExpression-result" name="result" type="Parameter" isReadOnly="true" isDerived="true" association="A_result_opaqueExpression">
-        <ownedComment xmi:id="OpaqueExpression-result-_ownedComment.0" annotatedElement="OpaqueExpression-result">
-          <body>If an OpaqueExpression is specified using a UML Behavior, then this refers to the single required return Parameter of that Behavior. When the Behavior completes execution, the values on this Parameter give the result of evaluating the OpaqueExpression.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="OpaqueExpression-result-_lowerValue"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="OpaqueExpression-stringValue" name="stringValue" visibility="protected" isQuery="true">
-        <ownedParameter xmi:id="OpaqueExpression-stringValue-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="OpaqueExpression-isIntegral" name="isIntegral" bodyCondition="OpaqueExpression-isIntegral-spec" isQuery="true">
-        <ownedComment xmi:id="OpaqueExpression-isIntegral-_ownedComment.0" annotatedElement="OpaqueExpression-isIntegral">
-          <body>The query isIntegral() tells whether an expression is intended to produce an Integer.</body>
-        </ownedComment>
-        <ownedRule xmi:id="OpaqueExpression-isIntegral-spec" name="spec" constrainedElement="OpaqueExpression-isIntegral">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="OpaqueExpression-isIntegral-spec-_specification">
-            <language>OCL</language>
-            <body>result = (false)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="OpaqueExpression-isIntegral-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="OpaqueExpression-isNonNegative" name="isNonNegative" bodyCondition="OpaqueExpression-isNonNegative-spec" isQuery="true" precondition="OpaqueExpression-isNonNegative-pre">
-        <ownedComment xmi:id="OpaqueExpression-isNonNegative-_ownedComment.0" annotatedElement="OpaqueExpression-isNonNegative">
-          <body>The query isNonNegative() tells whether an integer expression has a non-negative value.</body>
-        </ownedComment>
-        <ownedRule xmi:id="OpaqueExpression-isNonNegative-pre" name="pre" constrainedElement="OpaqueExpression-isNonNegative">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="OpaqueExpression-isNonNegative-pre-_specification">
-            <language>OCL</language>
-            <body>self.isIntegral()</body>
-          </specification>
-        </ownedRule>
-        <ownedRule xmi:id="OpaqueExpression-isNonNegative-spec" name="spec" constrainedElement="OpaqueExpression-isNonNegative">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="OpaqueExpression-isNonNegative-spec-_specification">
-            <language>OCL</language>
-            <body>result = (false)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="OpaqueExpression-isNonNegative-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="OpaqueExpression-isPositive" name="isPositive" bodyCondition="OpaqueExpression-isPositive-spec" isQuery="true" precondition="OpaqueExpression-isPositive-pre">
-        <ownedComment xmi:id="OpaqueExpression-isPositive-_ownedComment.0" annotatedElement="OpaqueExpression-isPositive">
-          <body>The query isPositive() tells whether an integer expression has a positive value.</body>
-        </ownedComment>
-        <ownedRule xmi:id="OpaqueExpression-isPositive-spec" name="spec" constrainedElement="OpaqueExpression-isPositive">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="OpaqueExpression-isPositive-spec-_specification">
-            <language>OCL</language>
-            <body>result = (false)</body>
-          </specification>
-        </ownedRule>
-        <ownedRule xmi:id="OpaqueExpression-isPositive-pre" name="pre" constrainedElement="OpaqueExpression-isPositive">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="OpaqueExpression-isPositive-pre-_specification">
-            <language>OCL</language>
-            <body>self.isIntegral()</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="OpaqueExpression-isPositive-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="OpaqueExpression-result.1" name="result" visibility="protected" bodyCondition="OpaqueExpression-result.1-spec" isQuery="true">
-        <ownedComment xmi:id="OpaqueExpression-result.1-_ownedComment.0" annotatedElement="OpaqueExpression-result.1">
-          <body>Derivation for OpaqueExpression::/result</body>
-        </ownedComment>
-        <ownedRule xmi:id="OpaqueExpression-result.1-spec" name="spec" constrainedElement="OpaqueExpression-result.1 OpaqueExpression-result">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="OpaqueExpression-result.1-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if behavior = null then&#xD;
-	null&#xD;
-else&#xD;
-	behavior.ownedParameter->first()&#xD;
-endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="OpaqueExpression-result.1-result" name="result" type="Parameter" direction="return">
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="OpaqueExpression-result.1-result-_lowerValue"/>
-          <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="OpaqueExpression-result.1-result-_upperValue" value="1"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="OpaqueExpression-value" name="value" bodyCondition="OpaqueExpression-value-spec" isQuery="true" precondition="OpaqueExpression-value-pre">
-        <ownedComment xmi:id="OpaqueExpression-value-_ownedComment.0" annotatedElement="OpaqueExpression-value">
-          <body>The query value() gives an integer value for an expression intended to produce one.</body>
-        </ownedComment>
-        <ownedRule xmi:id="OpaqueExpression-value-pre" name="pre" constrainedElement="OpaqueExpression-value">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="OpaqueExpression-value-pre-_specification">
-            <language>OCL</language>
-            <body>self.isIntegral()</body>
-          </specification>
-        </ownedRule>
-        <ownedRule xmi:id="OpaqueExpression-value-spec" name="spec" constrainedElement="OpaqueExpression-value">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="OpaqueExpression-value-spec-_specification">
-            <language>OCL</language>
-            <body>result = (0)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="OpaqueExpression-value-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="StringExpression" name="StringExpression">
-      <ownedComment xmi:id="StringExpression-_ownedComment.0" annotatedElement="StringExpression">
-        <body>A StringExpression is an Expression that specifies a String value that is derived by concatenating a sequence of operands with String values or a sequence of subExpressions, some of which might be template parameters.</body>
-      </ownedComment>
-      <ownedRule xmi:id="StringExpression-operands" name="operands" constrainedElement="StringExpression">
-        <ownedComment xmi:id="StringExpression-operands-_ownedComment.0" annotatedElement="StringExpression-operands">
-          <body>All the operands of a StringExpression must be LiteralStrings</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="StringExpression-operands-_specification">
-          <language>OCL</language>
-          <body>operand->forAll (oclIsKindOf (LiteralString))</body>
-        </specification>
-      </ownedRule>
-      <ownedRule xmi:id="StringExpression-subexpressions" name="subexpressions" constrainedElement="StringExpression">
-        <ownedComment xmi:id="StringExpression-subexpressions-_ownedComment.0" annotatedElement="StringExpression-subexpressions">
-          <body>If a StringExpression has sub-expressions, it cannot have operands and vice versa (this avoids the problem of having to define a collating sequence between operands and subexpressions).</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="StringExpression-subexpressions-_specification">
-          <language>OCL</language>
-          <body>if subExpression->notEmpty() then operand->isEmpty() else operand->notEmpty() endif</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="StringExpression-_generalization.0" general="TemplateableElement"/>
-      <generalization xmi:id="StringExpression-_generalization.1" general="Expression"/>
-      <ownedAttribute xmi:id="StringExpression-owningExpression" name="owningExpression" type="StringExpression" subsettedProperty="Element-owner" association="A_subExpression_owningExpression">
-        <ownedComment xmi:id="StringExpression-owningExpression-_ownedComment.0" annotatedElement="StringExpression-owningExpression">
-          <body>The StringExpression of which this StringExpression is a subExpression.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="StringExpression-owningExpression-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="StringExpression-subExpression" name="subExpression" type="StringExpression" isOrdered="true" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_subExpression_owningExpression">
-        <ownedComment xmi:id="StringExpression-subExpression-_ownedComment.0" annotatedElement="StringExpression-subExpression">
-          <body>The StringExpressions that constitute this StringExpression.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="StringExpression-subExpression-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="StringExpression-subExpression-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="StringExpression-stringValue" name="stringValue" bodyCondition="StringExpression-stringValue-spec" isQuery="true" redefinedOperation="ValueSpecification-stringValue">
-        <ownedComment xmi:id="StringExpression-stringValue-_ownedComment.0" annotatedElement="StringExpression-stringValue">
-          <body>The query stringValue() returns the String resulting from concatenating, in order, all the component String values of all the operands or subExpressions that are part of the StringExpression.</body>
-        </ownedComment>
-        <ownedRule xmi:id="StringExpression-stringValue-spec" name="spec" constrainedElement="StringExpression-stringValue">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="StringExpression-stringValue-spec-_specification">
-            <language>OCL</language>
-            <body>result = (if subExpression->notEmpty()
-then subExpression->iterate(se; stringValue: String = '' | stringValue.concat(se.stringValue()))
-else operand->iterate(op; stringValue: String = '' | stringValue.concat(op.stringValue()))
-endif)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="StringExpression-stringValue-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="TimeConstraint" name="TimeConstraint">
-      <ownedComment xmi:id="TimeConstraint-_ownedComment.0" annotatedElement="TimeConstraint">
-        <body>A TimeConstraint is a Constraint that refers to a TimeInterval.</body>
-      </ownedComment>
-      <ownedRule xmi:id="TimeConstraint-has_one_constrainedElement" name="has_one_constrainedElement" constrainedElement="TimeConstraint">
-        <ownedComment xmi:id="TimeConstraint-has_one_constrainedElement-_ownedComment.0" annotatedElement="TimeConstraint-has_one_constrainedElement">
-          <body>A TimeConstraint has one constrainedElement.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="TimeConstraint-has_one_constrainedElement-_specification">
-          <language>OCL</language>
-          <body>constrainedElement->size() = 1</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="TimeConstraint-_generalization.0" general="IntervalConstraint"/>
-      <ownedAttribute xmi:id="TimeConstraint-firstEvent" name="firstEvent">
-        <ownedComment xmi:id="TimeConstraint-firstEvent-_ownedComment.0" annotatedElement="TimeConstraint-firstEvent">
-          <body>The value of firstEvent is related to the constrainedElement. If firstEvent is true, then the corresponding observation event is the first time instant the execution enters the constrainedElement. If firstEvent is false, then the corresponding observation event is the last time instant the execution is within the constrainedElement.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="TimeConstraint-firstEvent-_lowerValue"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="TimeConstraint-firstEvent-_defaultValue" value="true"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="TimeConstraint-specification" name="specification" type="TimeInterval" aggregation="composite" redefinedProperty="IntervalConstraint-specification Constraint-specification" association="A_specification_timeConstraint">
-        <ownedComment xmi:id="TimeConstraint-specification-_ownedComment.0" annotatedElement="TimeConstraint-specification">
-          <body>TheTimeInterval constraining the duration.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="TimeExpression" name="TimeExpression">
-      <ownedComment xmi:id="TimeExpression-_ownedComment.0" annotatedElement="TimeExpression">
-        <body>A TimeExpression is a ValueSpecification that represents a time value.</body>
-      </ownedComment>
-      <ownedRule xmi:id="TimeExpression-no_expr_requires_observation" name="no_expr_requires_observation" constrainedElement="TimeExpression">
-        <ownedComment xmi:id="TimeExpression-no_expr_requires_observation-_ownedComment.0" annotatedElement="TimeExpression-no_expr_requires_observation">
-          <body>If a TimeExpression has no expr, then it must have a single observation that is a TimeObservation.</body>
-        </ownedComment>
-        <specification xmi:type="uml:OpaqueExpression" xmi:id="TimeExpression-no_expr_requires_observation-_specification">
-          <language>OCL</language>
-          <body>expr = null implies (observation->size() = 1 and observation->forAll(oclIsKindOf(TimeObservation)))</body>
-        </specification>
-      </ownedRule>
-      <generalization xmi:id="TimeExpression-_generalization.0" general="ValueSpecification"/>
-      <ownedAttribute xmi:id="TimeExpression-expr" name="expr" type="ValueSpecification" aggregation="composite" subsettedProperty="Element-ownedElement" association="A_expr_timeExpression">
-        <ownedComment xmi:id="TimeExpression-expr-_ownedComment.0" annotatedElement="TimeExpression-expr">
-          <body>A ValueSpecification that evaluates to the value of the TimeExpression.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="TimeExpression-expr-_lowerValue"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="TimeExpression-observation" name="observation" type="Observation" association="A_observation_timeExpression">
-        <ownedComment xmi:id="TimeExpression-observation-_ownedComment.0" annotatedElement="TimeExpression-observation">
-          <body>Refers to the Observations that are involved in the computation of the TimeExpression value.</body>
-        </ownedComment>
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="TimeExpression-observation-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="TimeExpression-observation-_upperValue" value="*"/>
-      </ownedAttribute>
-      <ownedOperation xmi:id="TimeExpression-stringValue" name="stringValue" visibility="protected" isQuery="true">
-        <ownedParameter xmi:id="TimeExpression-stringValue-_ownedParameter.0" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="TimeInterval" name="TimeInterval">
-      <ownedComment xmi:id="TimeInterval-_ownedComment.0" annotatedElement="TimeInterval">
-        <body>A TimeInterval defines the range between two TimeExpressions.</body>
-      </ownedComment>
-      <generalization xmi:id="TimeInterval-_generalization.0" general="Interval"/>
-      <ownedAttribute xmi:id="TimeInterval-max" name="max" type="TimeExpression" redefinedProperty="Interval-max" association="A_max_timeInterval">
-        <ownedComment xmi:id="TimeInterval-max-_ownedComment.0" annotatedElement="TimeInterval-max">
-          <body>Refers to the TimeExpression denoting the maximum value of the range.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="TimeInterval-min" name="min" type="TimeExpression" redefinedProperty="Interval-min" association="A_min_timeInterval">
-        <ownedComment xmi:id="TimeInterval-min-_ownedComment.0" annotatedElement="TimeInterval-min">
-          <body>Refers to the TimeExpression denoting the minimum value of the range.</body>
-        </ownedComment>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="TimeObservation" name="TimeObservation">
-      <ownedComment xmi:id="TimeObservation-_ownedComment.0" annotatedElement="TimeObservation">
-        <body>A TimeObservation is a reference to a time instant during an execution. It points out the NamedElement in the model to observe and whether the observation is when this NamedElement is entered or when it is exited.</body>
-      </ownedComment>
-      <generalization xmi:id="TimeObservation-_generalization.0" general="Observation"/>
-      <ownedAttribute xmi:id="TimeObservation-event" name="event" type="NamedElement" association="A_event_timeObservation">
-        <ownedComment xmi:id="TimeObservation-event-_ownedComment.0" annotatedElement="TimeObservation-event">
-          <body>The TimeObservation is determined by the entering or exiting of the event Element during execution.</body>
-        </ownedComment>
-      </ownedAttribute>
-      <ownedAttribute xmi:id="TimeObservation-firstEvent" name="firstEvent">
-        <ownedComment xmi:id="TimeObservation-firstEvent-_ownedComment.0" annotatedElement="TimeObservation-firstEvent">
-          <body>The value of firstEvent is related to the event. If firstEvent is true, then the corresponding observation event is the first time instant the execution enters the event Element. If firstEvent is false, then the corresponding observation event is the time instant the execution exits the event Element.</body>
-        </ownedComment>
-        <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="TimeObservation-firstEvent-_defaultValue" value="true"/>
-      </ownedAttribute>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="ValueSpecification" name="ValueSpecification" isAbstract="true">
-      <ownedComment xmi:id="ValueSpecification-_ownedComment.0" annotatedElement="ValueSpecification">
-        <body>A ValueSpecification is the specification of a (possibly empty) set of values. A ValueSpecification is a ParameterableElement that may be exposed as a formal TemplateParameter and provided as the actual parameter in the binding of a template.</body>
-      </ownedComment>
-      <generalization xmi:id="ValueSpecification-_generalization.0" general="TypedElement"/>
-      <generalization xmi:id="ValueSpecification-_generalization.1" general="PackageableElement"/>
-      <ownedOperation xmi:id="ValueSpecification-booleanValue" name="booleanValue" bodyCondition="ValueSpecification-booleanValue-spec" isQuery="true">
-        <ownedComment xmi:id="ValueSpecification-booleanValue-_ownedComment.0" annotatedElement="ValueSpecification-booleanValue">
-          <body>The query booleanValue() gives a single Boolean value when one can be computed.</body>
-        </ownedComment>
-        <ownedRule xmi:id="ValueSpecification-booleanValue-spec" name="spec" constrainedElement="ValueSpecification-booleanValue">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="ValueSpecification-booleanValue-spec-_specification">
-            <language>OCL</language>
-            <body>result = (null)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="ValueSpecification-booleanValue-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ValueSpecification-booleanValue-result-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="ValueSpecification-integerValue" name="integerValue" bodyCondition="ValueSpecification-integerValue-spec" isQuery="true">
-        <ownedComment xmi:id="ValueSpecification-integerValue-_ownedComment.0" annotatedElement="ValueSpecification-integerValue">
-          <body>The query integerValue() gives a single Integer value when one can be computed.</body>
-        </ownedComment>
-        <ownedRule xmi:id="ValueSpecification-integerValue-spec" name="spec" constrainedElement="ValueSpecification-integerValue">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="ValueSpecification-integerValue-spec-_specification">
-            <language>OCL</language>
-            <body>result = (null)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="ValueSpecification-integerValue-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ValueSpecification-integerValue-result-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="ValueSpecification-isCompatibleWith" name="isCompatibleWith" bodyCondition="ValueSpecification-isCompatibleWith-spec" isQuery="true" redefinedOperation="ParameterableElement-isCompatibleWith">
-        <ownedComment xmi:id="ValueSpecification-isCompatibleWith-_ownedComment.0" annotatedElement="ValueSpecification-isCompatibleWith">
-          <body>The query isCompatibleWith() determines if this ValueSpecification is compatible with the specified ParameterableElement. This ValueSpecification is compatible with ParameterableElement p if the kind of this ValueSpecification is the same as or a subtype of the kind of p. Further, if p is a TypedElement, then the type of this ValueSpecification must be conformant with the type of p.</body>
-        </ownedComment>
-        <ownedRule xmi:id="ValueSpecification-isCompatibleWith-spec" name="spec" constrainedElement="ValueSpecification-isCompatibleWith">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="ValueSpecification-isCompatibleWith-spec-_specification">
-            <language>OCL</language>
-            <body>result = (self.oclIsKindOf(p.oclType()) and (p.oclIsKindOf(TypedElement) implies &#xD;
-self.type.conformsTo(p.oclAsType(TypedElement).type)))</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="ValueSpecification-isCompatibleWith-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-        <ownedParameter xmi:id="ValueSpecification-isCompatibleWith-p" name="p" type="ParameterableElement"/>
-      </ownedOperation>
-      <ownedOperation xmi:id="ValueSpecification-isComputable" name="isComputable" bodyCondition="ValueSpecification-isComputable-spec" isQuery="true">
-        <ownedComment xmi:id="ValueSpecification-isComputable-_ownedComment.0" annotatedElement="ValueSpecification-isComputable">
-          <body>The query isComputable() determines whether a value specification can be computed in a model. This operation cannot be fully defined in OCL. A conforming implementation is expected to deliver true for this operation for all ValueSpecifications that it can compute, and to compute all of those for which the operation is true. A conforming implementation is expected to be able to compute at least the value of all LiteralSpecifications.</body>
-        </ownedComment>
-        <ownedRule xmi:id="ValueSpecification-isComputable-spec" name="spec" constrainedElement="ValueSpecification-isComputable">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="ValueSpecification-isComputable-spec-_specification">
-            <language>OCL</language>
-            <body>result = (false)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="ValueSpecification-isComputable-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="ValueSpecification-isNull" name="isNull" bodyCondition="ValueSpecification-isNull-spec" isQuery="true">
-        <ownedComment xmi:id="ValueSpecification-isNull-_ownedComment.0" annotatedElement="ValueSpecification-isNull">
-          <body>The query isNull() returns true when it can be computed that the value is null.</body>
-        </ownedComment>
-        <ownedRule xmi:id="ValueSpecification-isNull-spec" name="spec" constrainedElement="ValueSpecification-isNull">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="ValueSpecification-isNull-spec-_specification">
-            <language>OCL</language>
-            <body>result = (false)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="ValueSpecification-isNull-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="ValueSpecification-realValue" name="realValue" bodyCondition="ValueSpecification-realValue-spec" isQuery="true">
-        <ownedComment xmi:id="ValueSpecification-realValue-_ownedComment.0" annotatedElement="ValueSpecification-realValue">
-          <body>The query realValue() gives a single Real value when one can be computed.</body>
-        </ownedComment>
-        <ownedRule xmi:id="ValueSpecification-realValue-spec" name="spec" constrainedElement="ValueSpecification-realValue">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="ValueSpecification-realValue-spec-_specification">
-            <language>OCL</language>
-            <body>result = (null)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="ValueSpecification-realValue-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#Real"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ValueSpecification-realValue-result-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="ValueSpecification-stringValue" name="stringValue" bodyCondition="ValueSpecification-stringValue-spec" isQuery="true">
-        <ownedComment xmi:id="ValueSpecification-stringValue-_ownedComment.0" annotatedElement="ValueSpecification-stringValue">
-          <body>The query stringValue() gives a single String value when one can be computed.</body>
-        </ownedComment>
-        <ownedRule xmi:id="ValueSpecification-stringValue-spec" name="spec" constrainedElement="ValueSpecification-stringValue">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="ValueSpecification-stringValue-spec-_specification">
-            <language>OCL</language>
-            <body>result = (null)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="ValueSpecification-stringValue-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#String"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ValueSpecification-stringValue-result-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-      <ownedOperation xmi:id="ValueSpecification-unlimitedValue" name="unlimitedValue" bodyCondition="ValueSpecification-unlimitedValue-spec" isQuery="true">
-        <ownedComment xmi:id="ValueSpecification-unlimitedValue-_ownedComment.0" annotatedElement="ValueSpecification-unlimitedValue">
-          <body>The query unlimitedValue() gives a single UnlimitedNatural value when one can be computed.</body>
-        </ownedComment>
-        <ownedRule xmi:id="ValueSpecification-unlimitedValue-spec" name="spec" constrainedElement="ValueSpecification-unlimitedValue">
-          <specification xmi:type="uml:OpaqueExpression" xmi:id="ValueSpecification-unlimitedValue-spec-_specification">
-            <language>OCL</language>
-            <body>result = (null)</body>
-          </specification>
-        </ownedRule>
-        <ownedParameter xmi:id="ValueSpecification-unlimitedValue-result" name="result" direction="return">
-          <type xmi:type="uml:PrimitiveType" href="../libraries/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
-          <lowerValue xmi:type="uml:LiteralInteger" xmi:id="ValueSpecification-unlimitedValue-result-_lowerValue"/>
-        </ownedParameter>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_event_timeObservation" name="A_event_timeObservation" visibility="private" memberEnd="TimeObservation-event A_event_timeObservation-timeObservation">
-      <ownedEnd xmi:id="A_event_timeObservation-timeObservation" name="timeObservation" type="TimeObservation" association="A_event_timeObservation">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_event_timeObservation-timeObservation-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_event_timeObservation-timeObservation-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_max_timeInterval" name="A_max_timeInterval" visibility="private" memberEnd="TimeInterval-max A_max_timeInterval-timeInterval">
-      <generalization xmi:id="A_max_timeInterval-_generalization.0" general="A_max_interval"/>
-      <ownedEnd xmi:id="A_max_timeInterval-timeInterval" name="timeInterval" type="TimeInterval" redefinedProperty="A_max_interval-interval" association="A_max_timeInterval">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_max_timeInterval-timeInterval-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_max_timeInterval-timeInterval-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_min_timeInterval" name="A_min_timeInterval" visibility="private" memberEnd="TimeInterval-min A_min_timeInterval-timeInterval">
-      <generalization xmi:id="A_min_timeInterval-_generalization.0" general="A_min_interval"/>
-      <ownedEnd xmi:id="A_min_timeInterval-timeInterval" name="timeInterval" type="TimeInterval" redefinedProperty="A_min_interval-interval" association="A_min_timeInterval">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_min_timeInterval-timeInterval-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_min_timeInterval-timeInterval-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_expr_timeExpression" name="A_expr_timeExpression" visibility="private" memberEnd="TimeExpression-expr A_expr_timeExpression-timeExpression">
-      <ownedEnd xmi:id="A_expr_timeExpression-timeExpression" name="timeExpression" type="TimeExpression" subsettedProperty="Element-owner" association="A_expr_timeExpression">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_expr_timeExpression-timeExpression-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_observation_timeExpression" name="A_observation_timeExpression" visibility="private" memberEnd="TimeExpression-observation A_observation_timeExpression-timeExpression">
-      <ownedEnd xmi:id="A_observation_timeExpression-timeExpression" name="timeExpression" type="TimeExpression" association="A_observation_timeExpression">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_observation_timeExpression-timeExpression-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_specification_timeConstraint" name="A_specification_timeConstraint" visibility="private" memberEnd="TimeConstraint-specification A_specification_timeConstraint-timeConstraint">
-      <generalization xmi:id="A_specification_timeConstraint-_generalization.0" general="A_specification_intervalConstraint"/>
-      <ownedEnd xmi:id="A_specification_timeConstraint-timeConstraint" name="timeConstraint" type="TimeConstraint" redefinedProperty="A_specification_intervalConstraint-intervalConstraint" association="A_specification_timeConstraint">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_specification_timeConstraint-timeConstraint-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_subExpression_owningExpression" name="A_subExpression_owningExpression" visibility="private" memberEnd="StringExpression-subExpression StringExpression-owningExpression"/>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_result_opaqueExpression" name="A_result_opaqueExpression" visibility="private" isDerived="true" memberEnd="OpaqueExpression-result A_result_opaqueExpression-opaqueExpression">
-      <ownedEnd xmi:id="A_result_opaqueExpression-opaqueExpression" name="opaqueExpression" type="OpaqueExpression" association="A_result_opaqueExpression">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_result_opaqueExpression-opaqueExpression-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_result_opaqueExpression-opaqueExpression-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_behavior_opaqueExpression" name="A_behavior_opaqueExpression" visibility="private" memberEnd="OpaqueExpression-behavior A_behavior_opaqueExpression-opaqueExpression">
-      <ownedEnd xmi:id="A_behavior_opaqueExpression-opaqueExpression" name="opaqueExpression" type="OpaqueExpression" association="A_behavior_opaqueExpression">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_behavior_opaqueExpression-opaqueExpression-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_behavior_opaqueExpression-opaqueExpression-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_specification_intervalConstraint" name="A_specification_intervalConstraint" visibility="private" memberEnd="IntervalConstraint-specification A_specification_intervalConstraint-intervalConstraint">
-      <generalization xmi:id="A_specification_intervalConstraint-_generalization.0" general="A_specification_owningConstraint"/>
-      <ownedEnd xmi:id="A_specification_intervalConstraint-intervalConstraint" name="intervalConstraint" type="IntervalConstraint" redefinedProperty="A_specification_owningConstraint-owningConstraint" association="A_specification_intervalConstraint">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_specification_intervalConstraint-intervalConstraint-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_max_interval" name="A_max_interval" visibility="private" memberEnd="Interval-max A_max_interval-interval">
-      <ownedEnd xmi:id="A_max_interval-interval" name="interval" type="Interval" association="A_max_interval">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_max_interval-interval-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_max_interval-interval-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_min_interval" name="A_min_interval" visibility="private" memberEnd="Interval-min A_min_interval-interval">
-      <ownedEnd xmi:id="A_min_interval-interval" name="interval" type="Interval" association="A_min_interval">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_min_interval-interval-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_min_interval-interval-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_operand_expression" name="A_operand_expression" visibility="private" memberEnd="Expression-operand A_operand_expression-expression">
-      <ownedEnd xmi:id="A_operand_expression-expression" name="expression" type="Expression" subsettedProperty="Element-owner" association="A_operand_expression">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_operand_expression-expression-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_event_durationObservation" name="A_event_durationObservation" visibility="private" memberEnd="DurationObservation-event A_event_durationObservation-durationObservation">
-      <ownedEnd xmi:id="A_event_durationObservation-durationObservation" name="durationObservation" type="DurationObservation" association="A_event_durationObservation">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_event_durationObservation-durationObservation-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_event_durationObservation-durationObservation-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_max_durationInterval" name="A_max_durationInterval" visibility="private" memberEnd="DurationInterval-max A_max_durationInterval-durationInterval">
-      <generalization xmi:id="A_max_durationInterval-_generalization.0" general="A_max_interval"/>
-      <ownedEnd xmi:id="A_max_durationInterval-durationInterval" name="durationInterval" type="DurationInterval" redefinedProperty="A_max_interval-interval" association="A_max_durationInterval">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_max_durationInterval-durationInterval-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_max_durationInterval-durationInterval-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_min_durationInterval" name="A_min_durationInterval" visibility="private" memberEnd="DurationInterval-min A_min_durationInterval-durationInterval">
-      <generalization xmi:id="A_min_durationInterval-_generalization.0" general="A_min_interval"/>
-      <ownedEnd xmi:id="A_min_durationInterval-durationInterval" name="durationInterval" type="DurationInterval" redefinedProperty="A_min_interval-interval" association="A_min_durationInterval">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_min_durationInterval-durationInterval-_lowerValue"/>
-        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="A_min_durationInterval-durationInterval-_upperValue" value="*"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_specification_durationConstraint" name="A_specification_durationConstraint" visibility="private" memberEnd="DurationConstraint-specification A_specification_durationConstraint-durationConstraint">
-      <generalization xmi:id="A_specification_durationConstraint-_generalization.0" general="A_specification_intervalConstraint"/>
-      <ownedEnd xmi:id="A_specification_durationConstraint-durationConstraint" name="durationConstraint" type="DurationConstraint" redefinedProperty="A_specification_intervalConstraint-intervalConstraint" association="A_specification_durationConstraint">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_specification_durationConstraint-durationConstraint-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_expr_duration" name="A_expr_duration" visibility="private" memberEnd="Duration-expr A_expr_duration-duration">
-      <ownedEnd xmi:id="A_expr_duration-duration" name="duration" type="Duration" subsettedProperty="Element-owner" association="A_expr_duration">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_expr_duration-duration-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Association" xmi:id="A_observation_duration" name="A_observation_duration" visibility="private" memberEnd="Duration-observation A_observation_duration-duration">
-      <ownedEnd xmi:id="A_observation_duration-duration" name="duration" type="Duration" association="A_observation_duration">
-        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="A_observation_duration-duration-_lowerValue"/>
-      </ownedEnd>
-    </packagedElement>
-    <profileApplication xmi:id="_profileApplication.0">
-      <eAnnotations xmi:id="_profileApplication.0-_http2F2Fwww.eclipse.org2Fuml22F2.0.02FUML" source="http://www.eclipse.org/uml2/2.0.0/UML">
-        <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA"/>
-      </eAnnotations>
-      <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
-    </profileApplication>
-    <profileApplication xmi:id="_profileApplication.1">
-      <eAnnotations xmi:id="_profileApplication.1-_http2F2Fwww.eclipse.org2Fuml22F2.0.02FUML" source="http://www.eclipse.org/uml2/2.0.0/UML">
-        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/uml2/5.0.0/UML/Profile/Standard#/"/>
-      </eAnnotations>
-      <appliedProfile href="../profiles/Standard.profile.uml#_0"/>
-    </profileApplication>
-  </uml:Model>
-  <standard:Metamodel xmi:id="_q8PP8AyBEeat1-DywZGp2A" base_Model="_0"/>
-  <standard:Metaclass xmi:id="_q8P3AAyBEeat1-DywZGp2A" base_Class="ValueSpecificationAction"/>
-  <standard:Metaclass xmi:id="_q8QeEAyBEeat1-DywZGp2A" base_Class="VariableAction"/>
-  <standard:Metaclass xmi:id="_q8QeEQyBEeat1-DywZGp2A" base_Class="WriteLinkAction"/>
-  <standard:Metaclass xmi:id="_q8RFIAyBEeat1-DywZGp2A" base_Class="WriteStructuralFeatureAction"/>
-  <standard:Metaclass xmi:id="_q8RFIQyBEeat1-DywZGp2A" base_Class="WriteVariableAction"/>
-  <standard:Metaclass xmi:id="_q8RsMAyBEeat1-DywZGp2A" base_Class="AcceptCallAction"/>
-  <standard:Metaclass xmi:id="_q8RsMQyBEeat1-DywZGp2A" base_Class="AcceptEventAction"/>
-  <standard:Metaclass xmi:id="_q8STQAyBEeat1-DywZGp2A" base_Class="Action"/>
-  <standard:Metaclass xmi:id="_q8S6UAyBEeat1-DywZGp2A" base_Class="ActionInputPin"/>
-  <standard:Metaclass xmi:id="_q8S6UQyBEeat1-DywZGp2A" base_Class="AddStructuralFeatureValueAction"/>
-  <standard:Metaclass xmi:id="_q8ThYAyBEeat1-DywZGp2A" base_Class="AddVariableValueAction"/>
-  <standard:Metaclass xmi:id="_q8ThYQyBEeat1-DywZGp2A" base_Class="BroadcastSignalAction"/>
-  <standard:Metaclass xmi:id="_q8UIcAyBEeat1-DywZGp2A" base_Class="CallAction"/>
-  <standard:Metaclass xmi:id="_q8UIcQyBEeat1-DywZGp2A" base_Class="CallBehaviorAction"/>
-  <standard:Metaclass xmi:id="_q8UvgAyBEeat1-DywZGp2A" base_Class="CallOperationAction"/>
-  <standard:Metaclass xmi:id="_q8UvgQyBEeat1-DywZGp2A" base_Class="Clause"/>
-  <standard:Metaclass xmi:id="_q8VWkAyBEeat1-DywZGp2A" base_Class="ClearAssociationAction"/>
-  <standard:Metaclass xmi:id="_q8V9oAyBEeat1-DywZGp2A" base_Class="ClearStructuralFeatureAction"/>
-  <standard:Metaclass xmi:id="_q8V9oQyBEeat1-DywZGp2A" base_Class="ClearVariableAction"/>
-  <standard:Metaclass xmi:id="_q8V9ogyBEeat1-DywZGp2A" base_Class="ConditionalNode"/>
-  <standard:Metaclass xmi:id="_q8WksAyBEeat1-DywZGp2A" base_Class="CreateLinkAction"/>
-  <standard:Metaclass xmi:id="_q8XLwAyBEeat1-DywZGp2A" base_Class="CreateLinkObjectAction"/>
-  <standard:Metaclass xmi:id="_q8XLwQyBEeat1-DywZGp2A" base_Class="CreateObjectAction"/>
-  <standard:Metaclass xmi:id="_q8Xy0AyBEeat1-DywZGp2A" base_Class="DestroyLinkAction"/>
-  <standard:Metaclass xmi:id="_q8Xy0QyBEeat1-DywZGp2A" base_Class="DestroyObjectAction"/>
-  <standard:Metaclass xmi:id="_q8YZ4AyBEeat1-DywZGp2A" base_Class="ExpansionNode"/>
-  <standard:Metaclass xmi:id="_q8YZ4QyBEeat1-DywZGp2A" base_Class="ExpansionRegion"/>
-  <standard:Metaclass xmi:id="_q8ZA8AyBEeat1-DywZGp2A" base_Class="InputPin"/>
-  <standard:Metaclass xmi:id="_q8ZA8QyBEeat1-DywZGp2A" base_Class="InvocationAction"/>
-  <standard:Metaclass xmi:id="_q8ZoAAyBEeat1-DywZGp2A" base_Class="LinkAction"/>
-  <standard:Metaclass xmi:id="_q8ZoAQyBEeat1-DywZGp2A" base_Class="LinkEndCreationData"/>
-  <standard:Metaclass xmi:id="_q8aPEAyBEeat1-DywZGp2A" base_Class="LinkEndData"/>
-  <standard:Metaclass xmi:id="_q8a2IAyBEeat1-DywZGp2A" base_Class="LinkEndDestructionData"/>
-  <standard:Metaclass xmi:id="_q8a2IQyBEeat1-DywZGp2A" base_Class="LoopNode"/>
-  <standard:Metaclass xmi:id="_q8bdMAyBEeat1-DywZGp2A" base_Class="OpaqueAction"/>
-  <standard:Metaclass xmi:id="_q8cEQAyBEeat1-DywZGp2A" base_Class="OutputPin"/>
-  <standard:Metaclass xmi:id="_q8cEQQyBEeat1-DywZGp2A" base_Class="Pin"/>
-  <standard:Metaclass xmi:id="_q8cEQgyBEeat1-DywZGp2A" base_Class="QualifierValue"/>
-  <standard:Metaclass xmi:id="_q8crUAyBEeat1-DywZGp2A" base_Class="RaiseExceptionAction"/>
-  <standard:Metaclass xmi:id="_q8crUQyBEeat1-DywZGp2A" base_Class="ReadExtentAction"/>
-  <standard:Metaclass xmi:id="_q8dSYAyBEeat1-DywZGp2A" base_Class="ReadIsClassifiedObjectAction"/>
-  <standard:Metaclass xmi:id="_q8dSYQyBEeat1-DywZGp2A" base_Class="ReadLinkAction"/>
-  <standard:Metaclass xmi:id="_q8d5cAyBEeat1-DywZGp2A" base_Class="ReadLinkObjectEndAction"/>
-  <standard:Metaclass xmi:id="_q8eggAyBEeat1-DywZGp2A" base_Class="ReadLinkObjectEndQualifierAction"/>
-  <standard:Metaclass xmi:id="_q8eggQyBEeat1-DywZGp2A" base_Class="ReadSelfAction"/>
-  <standard:Metaclass xmi:id="_q8fHkAyBEeat1-DywZGp2A" base_Class="ReadStructuralFeatureAction"/>
-  <standard:Metaclass xmi:id="_q8fHkQyBEeat1-DywZGp2A" base_Class="ReadVariableAction"/>
-  <standard:Metaclass xmi:id="_q8fuoAyBEeat1-DywZGp2A" base_Class="ReclassifyObjectAction"/>
-  <standard:Metaclass xmi:id="_q8gVsAyBEeat1-DywZGp2A" base_Class="ReduceAction"/>
-  <standard:Metaclass xmi:id="_q8gVsQyBEeat1-DywZGp2A" base_Class="RemoveStructuralFeatureValueAction"/>
-  <standard:Metaclass xmi:id="_q8g8wAyBEeat1-DywZGp2A" base_Class="RemoveVariableValueAction"/>
-  <standard:Metaclass xmi:id="_q8g8wQyBEeat1-DywZGp2A" base_Class="ReplyAction"/>
-  <standard:Metaclass xmi:id="_q8hj0AyBEeat1-DywZGp2A" base_Class="SendObjectAction"/>
-  <standard:Metaclass xmi:id="_q8hj0QyBEeat1-DywZGp2A" base_Class="SendSignalAction"/>
-  <standard:Metaclass xmi:id="_q8iK4AyBEeat1-DywZGp2A" base_Class="SequenceNode"/>
-  <standard:Metaclass xmi:id="_q8iK4QyBEeat1-DywZGp2A" base_Class="StartClassifierBehaviorAction"/>
-  <standard:Metaclass xmi:id="_q8ix8AyBEeat1-DywZGp2A" base_Class="StartObjectBehaviorAction"/>
-  <standard:Metaclass xmi:id="_q8jZAAyBEeat1-DywZGp2A" base_Class="StructuralFeatureAction"/>
-  <standard:Metaclass xmi:id="_q8jZAQyBEeat1-DywZGp2A" base_Class="StructuredActivityNode"/>
-  <standard:Metaclass xmi:id="_q8kAEAyBEeat1-DywZGp2A" base_Class="TestIdentityAction"/>
-  <standard:Metaclass xmi:id="_q8knIAyBEeat1-DywZGp2A" base_Class="UnmarshallAction"/>
-  <standard:Metaclass xmi:id="_q8lOMAyBEeat1-DywZGp2A" base_Class="ValuePin"/>
-  <standard:Metaclass xmi:id="_q8pfoAyBEeat1-DywZGp2A" base_Class="Activity"/>
-  <standard:Metaclass xmi:id="_q8qGsAyBEeat1-DywZGp2A" base_Class="ActivityEdge"/>
-  <standard:Metaclass xmi:id="_q8rU0AyBEeat1-DywZGp2A" base_Class="ActivityFinalNode"/>
-  <standard:Metaclass xmi:id="_q8rU0QyBEeat1-DywZGp2A" base_Class="ActivityGroup"/>
-  <standard:Metaclass xmi:id="_q8r74AyBEeat1-DywZGp2A" base_Class="ActivityNode"/>
-  <standard:Metaclass xmi:id="_q8tKAAyBEeat1-DywZGp2A" base_Class="ActivityParameterNode"/>
-  <standard:Metaclass xmi:id="_q8txEAyBEeat1-DywZGp2A" base_Class="ActivityPartition"/>
-  <standard:Metaclass xmi:id="_q8uYIAyBEeat1-DywZGp2A" base_Class="CentralBufferNode"/>
-  <standard:Metaclass xmi:id="_q8uYIQyBEeat1-DywZGp2A" base_Class="ControlFlow"/>
-  <standard:Metaclass xmi:id="_q8u_MAyBEeat1-DywZGp2A" base_Class="ControlNode"/>
-  <standard:Metaclass xmi:id="_q8u_MQyBEeat1-DywZGp2A" base_Class="DataStoreNode"/>
-  <standard:Metaclass xmi:id="_q8vmQAyBEeat1-DywZGp2A" base_Class="DecisionNode"/>
-  <standard:Metaclass xmi:id="_q8wNUAyBEeat1-DywZGp2A" base_Class="ExceptionHandler"/>
-  <standard:Metaclass xmi:id="_q8w0YAyBEeat1-DywZGp2A" base_Class="ExecutableNode"/>
-  <standard:Metaclass xmi:id="_q8w0YQyBEeat1-DywZGp2A" base_Class="FinalNode"/>
-  <standard:Metaclass xmi:id="_q8xbcAyBEeat1-DywZGp2A" base_Class="FlowFinalNode"/>
-  <standard:Metaclass xmi:id="_q8xbcQyBEeat1-DywZGp2A" base_Class="ForkNode"/>
-  <standard:Metaclass xmi:id="_q8yCgAyBEeat1-DywZGp2A" base_Class="InitialNode"/>
-  <standard:Metaclass xmi:id="_q8yCgQyBEeat1-DywZGp2A" base_Class="InterruptibleActivityRegion"/>
-  <standard:Metaclass xmi:id="_q8ypkAyBEeat1-DywZGp2A" base_Class="JoinNode"/>
-  <standard:Metaclass xmi:id="_q8zQoAyBEeat1-DywZGp2A" base_Class="MergeNode"/>
-  <standard:Metaclass xmi:id="_q8zQoQyBEeat1-DywZGp2A" base_Class="ObjectFlow"/>
-  <standard:Metaclass xmi:id="_q80ewAyBEeat1-DywZGp2A" base_Class="ObjectNode"/>
-  <standard:Metaclass xmi:id="_q81F0AyBEeat1-DywZGp2A" base_Class="Variable"/>
-  <standard:Metaclass xmi:id="_q827AAyBEeat1-DywZGp2A" base_Class="Substitution"/>
-  <standard:Metaclass xmi:id="_q83iEAyBEeat1-DywZGp2A" base_Class="BehavioralFeature"/>
-  <standard:Metaclass xmi:id="_q85XQAyBEeat1-DywZGp2A" base_Class="Classifier"/>
-  <standard:Metaclass xmi:id="_q9DIQAyBEeat1-DywZGp2A" base_Class="ClassifierTemplateParameter"/>
-  <standard:Metaclass xmi:id="_q9DvUAyBEeat1-DywZGp2A" base_Class="Feature"/>
-  <standard:Metaclass xmi:id="_q9EWYAyBEeat1-DywZGp2A" base_Class="Generalization"/>
-  <standard:Metaclass xmi:id="_q9E9cAyBEeat1-DywZGp2A" base_Class="GeneralizationSet"/>
-  <standard:Metaclass xmi:id="_q9FkgAyBEeat1-DywZGp2A" base_Class="InstanceSpecification"/>
-  <standard:Metaclass xmi:id="_q9GLkAyBEeat1-DywZGp2A" base_Class="InstanceValue"/>
-  <standard:Metaclass xmi:id="_q9GLkQyBEeat1-DywZGp2A" base_Class="Operation"/>
-  <standard:Metaclass xmi:id="_q9In0AyBEeat1-DywZGp2A" base_Class="OperationTemplateParameter"/>
-  <standard:Metaclass xmi:id="_q9JO4AyBEeat1-DywZGp2A" base_Class="Parameter"/>
-  <standard:Metaclass xmi:id="_q9LEEAyBEeat1-DywZGp2A" base_Class="ParameterSet"/>
-  <standard:Metaclass xmi:id="_q9LrIAyBEeat1-DywZGp2A" base_Class="Property"/>
-  <standard:Metaclass xmi:id="_q9PVgAyBEeat1-DywZGp2A" base_Class="RedefinableElement"/>
-  <standard:Metaclass xmi:id="_q9QjoAyBEeat1-DywZGp2A" base_Class="RedefinableTemplateSignature"/>
-  <standard:Metaclass xmi:id="_q9RKsAyBEeat1-DywZGp2A" base_Class="Slot"/>
-  <standard:Metaclass xmi:id="_q9RxwAyBEeat1-DywZGp2A" base_Class="StructuralFeature"/>
-  <standard:Metaclass xmi:id="_q9WDMAyBEeat1-DywZGp2A" base_Class="AnyReceiveEvent"/>
-  <standard:Metaclass xmi:id="_q9WDMQyBEeat1-DywZGp2A" base_Class="Behavior"/>
-  <standard:Metaclass xmi:id="_q9X4YAyBEeat1-DywZGp2A" base_Class="CallEvent"/>
-  <standard:Metaclass xmi:id="_q9YfcAyBEeat1-DywZGp2A" base_Class="ChangeEvent"/>
-  <standard:Metaclass xmi:id="_q9YfcQyBEeat1-DywZGp2A" base_Class="Event"/>
-  <standard:Metaclass xmi:id="_q9ZGgAyBEeat1-DywZGp2A" base_Class="FunctionBehavior"/>
-  <standard:Metaclass xmi:id="_q9ZtkAyBEeat1-DywZGp2A" base_Class="MessageEvent"/>
-  <standard:Metaclass xmi:id="_q9ZtkQyBEeat1-DywZGp2A" base_Class="OpaqueBehavior"/>
-  <standard:Metaclass xmi:id="_q9aUoAyBEeat1-DywZGp2A" base_Class="SignalEvent"/>
-  <standard:Metaclass xmi:id="_q9aUoQyBEeat1-DywZGp2A" base_Class="TimeEvent"/>
-  <standard:Metaclass xmi:id="_q9a7sAyBEeat1-DywZGp2A" base_Class="Trigger"/>
-  <standard:Metaclass xmi:id="_q9cw4AyBEeat1-DywZGp2A" base_Class="Abstraction"/>
-  <standard:Metaclass xmi:id="_q9cw4QyBEeat1-DywZGp2A" base_Class="Comment"/>
-  <standard:Metaclass xmi:id="_q9dX8AyBEeat1-DywZGp2A" base_Class="Constraint"/>
-  <standard:Metaclass xmi:id="_q9d_AAyBEeat1-DywZGp2A" base_Class="Dependency"/>
-  <standard:Metaclass xmi:id="_q9emEAyBEeat1-DywZGp2A" base_Class="DirectedRelationship"/>
-  <standard:Metaclass xmi:id="_q9emEQyBEeat1-DywZGp2A" base_Class="Element"/>
-  <standard:Metaclass xmi:id="_q9kssAyBEeat1-DywZGp2A" base_Class="ElementImport"/>
-  <standard:Metaclass xmi:id="_q9lTwAyBEeat1-DywZGp2A" base_Class="MultiplicityElement"/>
-  <standard:Metaclass xmi:id="_q9oXEAyBEeat1-DywZGp2A" base_Class="NamedElement"/>
-  <standard:Metaclass xmi:id="_q9qzUAyBEeat1-DywZGp2A" base_Class="Namespace"/>
-  <standard:Metaclass xmi:id="_q9tPkAyBEeat1-DywZGp2A" base_Class="PackageableElement"/>
-  <standard:Metaclass xmi:id="_q9t2oAyBEeat1-DywZGp2A" base_Class="PackageImport"/>
-  <standard:Metaclass xmi:id="_q9udsAyBEeat1-DywZGp2A" base_Class="ParameterableElement"/>
-  <standard:Metaclass xmi:id="_q9vEwAyBEeat1-DywZGp2A" base_Class="Realization"/>
-  <standard:Metaclass xmi:id="_q9vr0AyBEeat1-DywZGp2A" base_Class="Relationship"/>
-  <standard:Metaclass xmi:id="_q9vr0QyBEeat1-DywZGp2A" base_Class="TemplateableElement"/>
-  <standard:Metaclass xmi:id="_q9wS4AyBEeat1-DywZGp2A" base_Class="TemplateBinding"/>
-  <standard:Metaclass xmi:id="_q9w58AyBEeat1-DywZGp2A" base_Class="TemplateParameter"/>
-  <standard:Metaclass xmi:id="_q9xhAAyBEeat1-DywZGp2A" base_Class="TemplateParameterSubstitution"/>
-  <standard:Metaclass xmi:id="_q9yIEAyBEeat1-DywZGp2A" base_Class="TemplateSignature"/>
-  <standard:Metaclass xmi:id="_q9yvIAyBEeat1-DywZGp2A" base_Class="Type"/>
-  <standard:Metaclass xmi:id="_q9z9QAyBEeat1-DywZGp2A" base_Class="TypedElement"/>
-  <standard:Metaclass xmi:id="_q90kUAyBEeat1-DywZGp2A" base_Class="Usage"/>
-  <standard:Metaclass xmi:id="_q94OsAyBEeat1-DywZGp2A" base_Class="Artifact"/>
-  <standard:Metaclass xmi:id="_q96D4AyBEeat1-DywZGp2A" base_Class="CommunicationPath"/>
-  <standard:Metaclass xmi:id="_q96D4QyBEeat1-DywZGp2A" base_Class="DeployedArtifact"/>
-  <standard:Metaclass xmi:id="_q96D4gyBEeat1-DywZGp2A" base_Class="Deployment"/>
-  <standard:Metaclass xmi:id="_q96q8AyBEeat1-DywZGp2A" base_Class="DeploymentSpecification"/>
-  <standard:Metaclass xmi:id="_q975EAyBEeat1-DywZGp2A" base_Class="DeploymentTarget"/>
-  <standard:Metaclass xmi:id="_q98gIAyBEeat1-DywZGp2A" base_Class="Device"/>
-  <standard:Metaclass xmi:id="_q98gIQyBEeat1-DywZGp2A" base_Class="ExecutionEnvironment"/>
-  <standard:Metaclass xmi:id="_q99HMAyBEeat1-DywZGp2A" base_Class="Manifestation"/>
-  <standard:Metaclass xmi:id="_q99HMQyBEeat1-DywZGp2A" base_Class="Node"/>
-  <standard:Metaclass xmi:id="_q9_jcAyBEeat1-DywZGp2A" base_Class="InformationFlow"/>
-  <standard:Metaclass xmi:id="_q-AxkAyBEeat1-DywZGp2A" base_Class="InformationItem"/>
-  <standard:Metaclass xmi:id="_q-CmwAyBEeat1-DywZGp2A" base_Class="ActionExecutionSpecification"/>
-  <standard:Metaclass xmi:id="_q-DN0AyBEeat1-DywZGp2A" base_Class="BehaviorExecutionSpecification"/>
-  <standard:Metaclass xmi:id="_q-DN0QyBEeat1-DywZGp2A" base_Class="CombinedFragment"/>
-  <standard:Metaclass xmi:id="_q-Eb8AyBEeat1-DywZGp2A" base_Class="ConsiderIgnoreFragment"/>
-  <standard:Metaclass xmi:id="_q-Eb8QyBEeat1-DywZGp2A" base_Class="Continuation"/>
-  <standard:Metaclass xmi:id="_q-FDAAyBEeat1-DywZGp2A" base_Class="DestructionOccurrenceSpecification"/>
-  <standard:Metaclass xmi:id="_q-FqEAyBEeat1-DywZGp2A" base_Class="ExecutionOccurrenceSpecification"/>
-  <standard:Metaclass xmi:id="_q-GRIAyBEeat1-DywZGp2A" base_Class="ExecutionSpecification"/>
-  <standard:Metaclass xmi:id="_q-GRIQyBEeat1-DywZGp2A" base_Class="Gate"/>
-  <standard:Metaclass xmi:id="_q-ItYAyBEeat1-DywZGp2A" base_Class="GeneralOrdering"/>
-  <standard:Metaclass xmi:id="_q-JUcAyBEeat1-DywZGp2A" base_Class="Interaction"/>
-  <standard:Metaclass xmi:id="_q-KikAyBEeat1-DywZGp2A" base_Class="InteractionConstraint"/>
-  <standard:Metaclass xmi:id="_q-LJoAyBEeat1-DywZGp2A" base_Class="InteractionFragment"/>
-  <standard:Metaclass xmi:id="_q-MXwAyBEeat1-DywZGp2A" base_Class="InteractionOperand"/>
-  <standard:Metaclass xmi:id="_q-M-0AyBEeat1-DywZGp2A" base_Class="InteractionUse"/>
-  <standard:Metaclass xmi:id="_q-OM8AyBEeat1-DywZGp2A" base_Class="Lifeline"/>
-  <standard:Metaclass xmi:id="_q-PbEAyBEeat1-DywZGp2A" base_Class="Message"/>
-  <standard:Metaclass xmi:id="_q-R3UAyBEeat1-DywZGp2A" base_Class="MessageEnd"/>
-  <standard:Metaclass xmi:id="_q-TFcAyBEeat1-DywZGp2A" base_Class="MessageOccurrenceSpecification"/>
-  <standard:Metaclass xmi:id="_q-TsgAyBEeat1-DywZGp2A" base_Class="OccurrenceSpecification"/>
-  <standard:Metaclass xmi:id="_q-UTkAyBEeat1-DywZGp2A" base_Class="PartDecomposition"/>
-  <standard:Metaclass xmi:id="_q-U6oAyBEeat1-DywZGp2A" base_Class="StateInvariant"/>
-  <standard:Metaclass xmi:id="_q-bBQAyBEeat1-DywZGp2A" base_Class="Extension"/>
-  <standard:Metaclass xmi:id="_q-c2cAyBEeat1-DywZGp2A" base_Class="ExtensionEnd"/>
-  <standard:Metaclass xmi:id="_q-eEkAyBEeat1-DywZGp2A" base_Class="Image"/>
-  <standard:Metaclass xmi:id="_q-eroAyBEeat1-DywZGp2A" base_Class="Model"/>
-  <standard:Metaclass xmi:id="_q-eroQyBEeat1-DywZGp2A" base_Class="Package"/>
-  <standard:Metaclass xmi:id="_q-mncAyBEeat1-DywZGp2A" base_Class="PackageMerge"/>
-  <standard:Metaclass xmi:id="_q-mncQyBEeat1-DywZGp2A" base_Class="Profile"/>
-  <standard:Metaclass xmi:id="_q-pqwAyBEeat1-DywZGp2A" base_Class="ProfileApplication"/>
-  <standard:Metaclass xmi:id="_q-q44AyBEeat1-DywZGp2A" base_Class="Stereotype"/>
-  <standard:Metaclass xmi:id="_q-vKUAyBEeat1-DywZGp2A" base_Class="BehavioredClassifier"/>
-  <standard:Metaclass xmi:id="_q-w_gAyBEeat1-DywZGp2A" base_Class="DataType"/>
-  <standard:Metaclass xmi:id="_q-y0sAyBEeat1-DywZGp2A" base_Class="Enumeration"/>
-  <standard:Metaclass xmi:id="_q-zbwAyBEeat1-DywZGp2A" base_Class="EnumerationLiteral"/>
-  <standard:Metaclass xmi:id="_q-0C0AyBEeat1-DywZGp2A" base_Class="Interface"/>
-  <standard:Metaclass xmi:id="_q-2fEAyBEeat1-DywZGp2A" base_Class="InterfaceRealization"/>
-  <standard:Metaclass xmi:id="_q-3GIAyBEeat1-DywZGp2A" base_Class="PrimitiveType"/>
-  <standard:Metaclass xmi:id="_q-3GIQyBEeat1-DywZGp2A" base_Class="Reception"/>
-  <standard:Metaclass xmi:id="_q-3tMAyBEeat1-DywZGp2A" base_Class="Signal"/>
-  <standard:Metaclass xmi:id="_q-6wgAyBEeat1-DywZGp2A" base_Class="ConnectionPointReference"/>
-  <standard:Metaclass xmi:id="_q-7-oAyBEeat1-DywZGp2A" base_Class="FinalState"/>
-  <standard:Metaclass xmi:id="_q-8lsAyBEeat1-DywZGp2A" base_Class="ProtocolConformance"/>
-  <standard:Metaclass xmi:id="_q-9MwAyBEeat1-DywZGp2A" base_Class="ProtocolStateMachine"/>
-  <standard:Metaclass xmi:id="_q-9z0AyBEeat1-DywZGp2A" base_Class="ProtocolTransition"/>
-  <standard:Metaclass xmi:id="_q-_pAAyBEeat1-DywZGp2A" base_Class="Pseudostate"/>
-  <standard:Metaclass xmi:id="_q_BeMAyBEeat1-DywZGp2A" base_Class="Region"/>
-  <standard:Metaclass xmi:id="_q_D6cAyBEeat1-DywZGp2A" base_Class="State"/>
-  <standard:Metaclass xmi:id="_q_Iy8AyBEeat1-DywZGp2A" base_Class="StateMachine"/>
-  <standard:Metaclass xmi:id="_q_LPMAyBEeat1-DywZGp2A" base_Class="Transition"/>
-  <standard:Metaclass xmi:id="_q_OSgAyBEeat1-DywZGp2A" base_Class="Vertex"/>
-  <standard:Metaclass xmi:id="_q_VnQAyBEeat1-DywZGp2A" base_Class="Association"/>
-  <standard:Metaclass xmi:id="_q_YDgAyBEeat1-DywZGp2A" base_Class="AssociationClass"/>
-  <standard:Metaclass xmi:id="_q_YqkAyBEeat1-DywZGp2A" base_Class="Class"/>
-  <standard:Metaclass xmi:id="_q_bt4AyBEeat1-DywZGp2A" base_Class="Collaboration"/>
-  <standard:Metaclass xmi:id="_q_cU8AyBEeat1-DywZGp2A" base_Class="CollaborationUse"/>
-  <standard:Metaclass xmi:id="_q_djEAyBEeat1-DywZGp2A" base_Class="Component"/>
-  <standard:Metaclass xmi:id="_q_f_UAyBEeat1-DywZGp2A" base_Class="ComponentRealization"/>
-  <standard:Metaclass xmi:id="_q_gmYAyBEeat1-DywZGp2A" base_Class="ConnectableElement"/>
-  <standard:Metaclass xmi:id="_q_h0gAyBEeat1-DywZGp2A" base_Class="ConnectableElementTemplateParameter"/>
-  <standard:Metaclass xmi:id="_q_ibkAyBEeat1-DywZGp2A" base_Class="Connector"/>
-  <standard:Metaclass xmi:id="_q_jpsAyBEeat1-DywZGp2A" base_Class="ConnectorEnd"/>
-  <standard:Metaclass xmi:id="_q_le4AyBEeat1-DywZGp2A" base_Class="EncapsulatedClassifier"/>
-  <standard:Metaclass xmi:id="_q_mF8AyBEeat1-DywZGp2A" base_Class="Port"/>
-  <standard:Metaclass xmi:id="_q_pJQAyBEeat1-DywZGp2A" base_Class="StructuredClassifier"/>
-  <standard:Metaclass xmi:id="_q_weAAyBEeat1-DywZGp2A" base_Class="Actor"/>
-  <standard:Metaclass xmi:id="_q_xFEAyBEeat1-DywZGp2A" base_Class="Extend"/>
-  <standard:Metaclass xmi:id="_q_yTMAyBEeat1-DywZGp2A" base_Class="ExtensionPoint"/>
-  <standard:Metaclass xmi:id="_q_y6QAyBEeat1-DywZGp2A" base_Class="Include"/>
-  <standard:Metaclass xmi:id="_q_zhUAyBEeat1-DywZGp2A" base_Class="UseCase"/>
-  <standard:Metaclass xmi:id="_q_19kAyBEeat1-DywZGp2A" base_Class="Duration"/>
-  <standard:Metaclass xmi:id="_q_3LsAyBEeat1-DywZGp2A" base_Class="DurationConstraint"/>
-  <standard:Metaclass xmi:id="_q_4Z0AyBEeat1-DywZGp2A" base_Class="DurationInterval"/>
-  <standard:Metaclass xmi:id="_q_5A4AyBEeat1-DywZGp2A" base_Class="DurationObservation"/>
-  <standard:Metaclass xmi:id="_q_5n8AyBEeat1-DywZGp2A" base_Class="Expression"/>
-  <standard:Metaclass xmi:id="_q_6PAAyBEeat1-DywZGp2A" base_Class="Interval"/>
-  <standard:Metaclass xmi:id="_q_62EAyBEeat1-DywZGp2A" base_Class="IntervalConstraint"/>
-  <standard:Metaclass xmi:id="_q_7dIAyBEeat1-DywZGp2A" base_Class="LiteralBoolean"/>
-  <standard:Metaclass xmi:id="_q_8EMAyBEeat1-DywZGp2A" base_Class="LiteralInteger"/>
-  <standard:Metaclass xmi:id="_q_9SUAyBEeat1-DywZGp2A" base_Class="LiteralNull"/>
-  <standard:Metaclass xmi:id="_q_95YAyBEeat1-DywZGp2A" base_Class="LiteralReal"/>
-  <standard:Metaclass xmi:id="_q__HgAyBEeat1-DywZGp2A" base_Class="LiteralSpecification"/>
-  <standard:Metaclass xmi:id="_q__HgQyBEeat1-DywZGp2A" base_Class="LiteralString"/>
-  <standard:Metaclass xmi:id="_rAAVoAyBEeat1-DywZGp2A" base_Class="LiteralUnlimitedNatural"/>
-  <standard:Metaclass xmi:id="_rABjwAyBEeat1-DywZGp2A" base_Class="Observation"/>
-  <standard:Metaclass xmi:id="_rABjwQyBEeat1-DywZGp2A" base_Class="OpaqueExpression"/>
-  <standard:Metaclass xmi:id="_rAEnEAyBEeat1-DywZGp2A" base_Class="StringExpression"/>
-  <standard:Metaclass xmi:id="_rAF1MAyBEeat1-DywZGp2A" base_Class="TimeConstraint"/>
-  <standard:Metaclass xmi:id="_rAHDUAyBEeat1-DywZGp2A" base_Class="TimeExpression"/>
-  <standard:Metaclass xmi:id="_rAHqYAyBEeat1-DywZGp2A" base_Class="TimeInterval"/>
-  <standard:Metaclass xmi:id="_rAIRcAyBEeat1-DywZGp2A" base_Class="TimeObservation"/>
-  <standard:Metaclass xmi:id="_rAI4gAyBEeat1-DywZGp2A" base_Class="ValueSpecification"/>
-</xmi:XMI>
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/C2/resources/model/plugin/org.eclipse.uml2.uml.resources/profiles/Standard.profile.uml b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/C2/resources/model/plugin/org.eclipse.uml2.uml.resources/profiles/Standard.profile.uml
deleted file mode 100644
index cf7fe69..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/C2/resources/model/plugin/org.eclipse.uml2.uml.resources/profiles/Standard.profile.uml
+++ /dev/null
@@ -1,529 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<uml:Profile xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_0" name="StandardProfile" URI="http://www.omg.org/spec/UML/20131001/StandardProfile" metamodelReference="_packageImport.0">
-  <eAnnotations xmi:id="_qu15sICREeOB3rHSo1B3ow" source="http://www.eclipse.org/uml2/2.0.0/UML">
-    <eAnnotations xmi:id="_qu15sYCREeOB3rHSo1B3ow" source="StandardProfile" references="Abstraction_Derive-extension_Derive Abstraction_Derive Abstraction_Refine-extension_Refine Abstraction_Refine Abstraction_Trace-extension_Trace Abstraction_Trace Artifact_Document-extension_Document Artifact_Document Artifact_Executable-extension_Executable Artifact_Executable Artifact_File-extension_File Artifact_File Artifact_Library-extension_Library Artifact_Library Artifact_Script-extension_Script Artifact_Script Artifact_Source-extension_Source Artifact_Source BehavioralFeature_Create-extension_Create BehavioralFeature_Create BehavioralFeature_Destroy-extension_Destroy BehavioralFeature_Destroy Class_Auxiliary-extension_Auxiliary Class_Auxiliary Class_Focus-extension_Focus Class_Focus Class_ImplementationClass-extension_ImplementationClass Class_ImplementationClass Class_Metaclass-extension_Metaclass Class_Metaclass Class_Type-extension_Type Class_Type Class_Utility-extension_Utility Class_Utility Classifier_Realization-extension_Realization Classifier_Realization Classifier_Specification-extension_Specification Classifier_Specification Component_Entity-extension_Entity Component_Entity Component_Implement-extension_Implement Component_Implement Component_Process-extension_Process Component_Process Component_Service-extension_Service Component_Service Component_Subsystem-extension_Subsystem Component_Subsystem Package_Framework-extension_Framework Package_Framework Package_ModelLibrary-extension_ModelLibrary Package_ModelLibrary Usage_Call-extension_Call Usage_Call Usage_Create-extension_Create Usage_Create Usage_Instantiate-extension_Instantiate Usage_Instantiate Usage_Responsibility-extension_Responsibility Usage_Responsibility Usage_Send-extension_Send Usage_Send Auxiliary-base_Class Auxiliary Call-base_Usage Call Create-base_BehavioralFeature Create-base_Usage Create Derive-base_Abstraction Derive Destroy-base_BehavioralFeature Destroy Document-base_Artifact Document Entity-base_Component Entity Executable-base_Artifact Executable File-base_Artifact File Focus-base_Class Focus Framework-base_Package Framework Implement-base_Component Implement ImplementationClass-base_Class ImplementationClass Instantiate-base_Usage Instantiate Library-base_Artifact Library Metaclass-base_Class Metaclass ModelLibrary-base_Package ModelLibrary Process-base_Component Process Realization-base_Classifier Realization Refine-base_Abstraction Refine Responsibility-base_Usage Responsibility Script-base_Artifact Script Send-base_Usage Send Service-base_Component Service Source-base_Artifact Source Specification-base_Classifier Specification Subsystem-base_Component Subsystem Trace-base_Abstraction Trace Type-base_Class Type Utility-base_Class Utility Component_BuildComponent-extension_BuildComponent Component_BuildComponent Model_Metamodel-extension_Metamodel Model_Metamodel Model_SystemModel-extension_SystemModel Model_SystemModel BuildComponent-base_Component BuildComponent Metamodel-base_Model Metamodel SystemModel-base_Model SystemModel">
-      <details xmi:id="_qu15soCREeOB3rHSo1B3ow" key="URI" value="http://www.omg.org/spec/UML/20131001/StandardProfile"/>
-    </eAnnotations>
-  </eAnnotations>
-  <packageImport xmi:id="_packageImport.0">
-    <importedPackage xmi:type="uml:Model" href="../metamodels/UML.metamodel.uml#_0"/>
-  </packageImport>
-  <packagedElement xmi:type="uml:Extension" xmi:id="Abstraction_Derive" name="Abstraction_Derive" memberEnd="Abstraction_Derive-extension_Derive Derive-base_Abstraction">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="Abstraction_Derive-extension_Derive" name="extension_Derive" type="Derive" aggregation="composite" association="Abstraction_Derive">
-      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Abstraction_Derive-extension_Derive-_lowerValue"/>
-    </ownedEnd>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="Abstraction_Refine" name="Abstraction_Refine" memberEnd="Abstraction_Refine-extension_Refine Refine-base_Abstraction">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="Abstraction_Refine-extension_Refine" name="extension_Refine" type="Refine" aggregation="composite" association="Abstraction_Refine">
-      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Abstraction_Refine-extension_Refine-_lowerValue"/>
-    </ownedEnd>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="Abstraction_Trace" name="Abstraction_Trace" memberEnd="Abstraction_Trace-extension_Trace Trace-base_Abstraction">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="Abstraction_Trace-extension_Trace" name="extension_Trace" type="Trace" aggregation="composite" association="Abstraction_Trace">
-      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Abstraction_Trace-extension_Trace-_lowerValue"/>
-    </ownedEnd>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="Artifact_Document" name="Artifact_Document" memberEnd="Artifact_Document-extension_Document Document-base_Artifact">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="Artifact_Document-extension_Document" name="extension_Document" type="Document" aggregation="composite" association="Artifact_Document">
-      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Artifact_Document-extension_Document-_lowerValue"/>
-    </ownedEnd>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="Artifact_Executable" name="Artifact_Executable" memberEnd="Artifact_Executable-extension_Executable Executable-base_Artifact">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="Artifact_Executable-extension_Executable" name="extension_Executable" type="Executable" aggregation="composite" association="Artifact_Executable">
-      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Artifact_Executable-extension_Executable-_lowerValue"/>
-    </ownedEnd>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="Artifact_File" name="Artifact_File" memberEnd="Artifact_File-extension_File File-base_Artifact">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="Artifact_File-extension_File" name="extension_File" type="File" aggregation="composite" association="Artifact_File">
-      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Artifact_File-extension_File-_lowerValue"/>
-    </ownedEnd>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="Artifact_Library" name="Artifact_Library" memberEnd="Artifact_Library-extension_Library Library-base_Artifact">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="Artifact_Library-extension_Library" name="extension_Library" type="Library" aggregation="composite" association="Artifact_Library">
-      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Artifact_Library-extension_Library-_lowerValue"/>
-    </ownedEnd>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="Artifact_Script" name="Artifact_Script" memberEnd="Artifact_Script-extension_Script Script-base_Artifact">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="Artifact_Script-extension_Script" name="extension_Script" type="Script" aggregation="composite" association="Artifact_Script">
-      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Artifact_Script-extension_Script-_lowerValue"/>
-    </ownedEnd>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="Artifact_Source" name="Artifact_Source" memberEnd="Artifact_Source-extension_Source Source-base_Artifact">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="Artifact_Source-extension_Source" name="extension_Source" type="Source" aggregation="composite" association="Artifact_Source">
-      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Artifact_Source-extension_Source-_lowerValue"/>
-    </ownedEnd>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="BehavioralFeature_Create" name="BehavioralFeature_Create" memberEnd="BehavioralFeature_Create-extension_Create Create-base_BehavioralFeature">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="BehavioralFeature_Create-extension_Create" name="extension_Create" type="Create" aggregation="composite" association="BehavioralFeature_Create">
-      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BehavioralFeature_Create-extension_Create-_lowerValue"/>
-    </ownedEnd>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="BehavioralFeature_Destroy" name="BehavioralFeature_Destroy" memberEnd="BehavioralFeature_Destroy-extension_Destroy Destroy-base_BehavioralFeature">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="BehavioralFeature_Destroy-extension_Destroy" name="extension_Destroy" type="Destroy" aggregation="composite" association="BehavioralFeature_Destroy">
-      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BehavioralFeature_Destroy-extension_Destroy-_lowerValue"/>
-    </ownedEnd>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="Class_Auxiliary" name="Class_Auxiliary" memberEnd="Class_Auxiliary-extension_Auxiliary Auxiliary-base_Class">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="Class_Auxiliary-extension_Auxiliary" name="extension_Auxiliary" type="Auxiliary" aggregation="composite" association="Class_Auxiliary">
-      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Class_Auxiliary-extension_Auxiliary-_lowerValue"/>
-    </ownedEnd>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="Class_Focus" name="Class_Focus" memberEnd="Class_Focus-extension_Focus Focus-base_Class">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="Class_Focus-extension_Focus" name="extension_Focus" type="Focus" aggregation="composite" association="Class_Focus">
-      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Class_Focus-extension_Focus-_lowerValue"/>
-    </ownedEnd>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="Class_ImplementationClass" name="Class_ImplementationClass" memberEnd="Class_ImplementationClass-extension_ImplementationClass ImplementationClass-base_Class">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="Class_ImplementationClass-extension_ImplementationClass" name="extension_ImplementationClass" type="ImplementationClass" aggregation="composite" association="Class_ImplementationClass">
-      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Class_ImplementationClass-extension_ImplementationClass-_lowerValue"/>
-    </ownedEnd>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="Class_Metaclass" name="Class_Metaclass" memberEnd="Class_Metaclass-extension_Metaclass Metaclass-base_Class">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="Class_Metaclass-extension_Metaclass" name="extension_Metaclass" type="Metaclass" aggregation="composite" association="Class_Metaclass">
-      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Class_Metaclass-extension_Metaclass-_lowerValue"/>
-    </ownedEnd>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="Class_Type" name="Class_Type" memberEnd="Class_Type-extension_Type Type-base_Class">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="Class_Type-extension_Type" name="extension_Type" type="Type" aggregation="composite" association="Class_Type">
-      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Class_Type-extension_Type-_lowerValue"/>
-    </ownedEnd>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="Class_Utility" name="Class_Utility" memberEnd="Class_Utility-extension_Utility Utility-base_Class">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="Class_Utility-extension_Utility" name="extension_Utility" type="Utility" aggregation="composite" association="Class_Utility">
-      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Class_Utility-extension_Utility-_lowerValue"/>
-    </ownedEnd>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="Classifier_Realization" name="Classifier_Realization" memberEnd="Classifier_Realization-extension_Realization Realization-base_Classifier">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="Classifier_Realization-extension_Realization" name="extension_Realization" type="Realization" aggregation="composite" association="Classifier_Realization">
-      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier_Realization-extension_Realization-_lowerValue"/>
-    </ownedEnd>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="Classifier_Specification" name="Classifier_Specification" memberEnd="Classifier_Specification-extension_Specification Specification-base_Classifier">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="Classifier_Specification-extension_Specification" name="extension_Specification" type="Specification" aggregation="composite" association="Classifier_Specification">
-      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Classifier_Specification-extension_Specification-_lowerValue"/>
-    </ownedEnd>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="Component_Entity" name="Component_Entity" memberEnd="Component_Entity-extension_Entity Entity-base_Component">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="Component_Entity-extension_Entity" name="extension_Entity" type="Entity" aggregation="composite" association="Component_Entity">
-      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Component_Entity-extension_Entity-_lowerValue"/>
-    </ownedEnd>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="Component_Implement" name="Component_Implement" memberEnd="Component_Implement-extension_Implement Implement-base_Component">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="Component_Implement-extension_Implement" name="extension_Implement" type="Implement" aggregation="composite" association="Component_Implement">
-      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Component_Implement-extension_Implement-_lowerValue"/>
-    </ownedEnd>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="Component_Process" name="Component_Process" memberEnd="Component_Process-extension_Process Process-base_Component">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="Component_Process-extension_Process" name="extension_Process" type="Process" aggregation="composite" association="Component_Process">
-      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Component_Process-extension_Process-_lowerValue"/>
-    </ownedEnd>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="Component_Service" name="Component_Service" memberEnd="Component_Service-extension_Service Service-base_Component">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="Component_Service-extension_Service" name="extension_Service" type="Service" aggregation="composite" association="Component_Service">
-      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Component_Service-extension_Service-_lowerValue"/>
-    </ownedEnd>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="Component_Subsystem" name="Component_Subsystem" memberEnd="Component_Subsystem-extension_Subsystem Subsystem-base_Component">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="Component_Subsystem-extension_Subsystem" name="extension_Subsystem" type="Subsystem" aggregation="composite" association="Component_Subsystem">
-      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Component_Subsystem-extension_Subsystem-_lowerValue"/>
-    </ownedEnd>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="Package_Framework" name="Package_Framework" memberEnd="Package_Framework-extension_Framework Framework-base_Package">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="Package_Framework-extension_Framework" name="extension_Framework" type="Framework" aggregation="composite" association="Package_Framework">
-      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Package_Framework-extension_Framework-_lowerValue"/>
-    </ownedEnd>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="Package_ModelLibrary" name="Package_ModelLibrary" memberEnd="Package_ModelLibrary-extension_ModelLibrary ModelLibrary-base_Package">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="Package_ModelLibrary-extension_ModelLibrary" name="extension_ModelLibrary" type="ModelLibrary" aggregation="composite" association="Package_ModelLibrary">
-      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Package_ModelLibrary-extension_ModelLibrary-_lowerValue"/>
-    </ownedEnd>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="Usage_Call" name="Usage_Call" memberEnd="Usage_Call-extension_Call Call-base_Usage">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="Usage_Call-extension_Call" name="extension_Call" type="Call" aggregation="composite" association="Usage_Call">
-      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Usage_Call-extension_Call-_lowerValue"/>
-    </ownedEnd>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="Usage_Create" name="Usage_Create" memberEnd="Usage_Create-extension_Create Create-base_Usage">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="Usage_Create-extension_Create" name="extension_Create" type="Create" aggregation="composite" association="Usage_Create">
-      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Usage_Create-extension_Create-_lowerValue"/>
-    </ownedEnd>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="Usage_Instantiate" name="Usage_Instantiate" memberEnd="Usage_Instantiate-extension_Instantiate Instantiate-base_Usage">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="Usage_Instantiate-extension_Instantiate" name="extension_Instantiate" type="Instantiate" aggregation="composite" association="Usage_Instantiate">
-      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Usage_Instantiate-extension_Instantiate-_lowerValue"/>
-    </ownedEnd>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="Usage_Responsibility" name="Usage_Responsibility" memberEnd="Usage_Responsibility-extension_Responsibility Responsibility-base_Usage">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="Usage_Responsibility-extension_Responsibility" name="extension_Responsibility" type="Responsibility" aggregation="composite" association="Usage_Responsibility">
-      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Usage_Responsibility-extension_Responsibility-_lowerValue"/>
-    </ownedEnd>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="Usage_Send" name="Usage_Send" memberEnd="Usage_Send-extension_Send Send-base_Usage">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="Usage_Send-extension_Send" name="extension_Send" type="Send" aggregation="composite" association="Usage_Send">
-      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Usage_Send-extension_Send-_lowerValue"/>
-    </ownedEnd>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="Auxiliary" name="Auxiliary">
-    <ownedComment xmi:id="Auxiliary-_ownedComment.0" annotatedElement="Auxiliary">
-      <body>A class that supports another more central or fundamental class, typically by implementing secondary logic or control flow. Auxiliary classes are typically used together with Focus classes, and are particularly useful for specifying the secondary business logic or control flow of components during design. See also: «Focus».</body>
-    </ownedComment>
-    <ownedAttribute xmi:id="Auxiliary-base_Class" name="base_Class" association="Class_Auxiliary">
-      <type xmi:type="uml:Class" href="../metamodels/UML.metamodel.uml#Class"/>
-    </ownedAttribute>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="Call" name="Call">
-    <ownedComment xmi:id="Call-_ownedComment.0" annotatedElement="Call">
-      <body>A usage dependency whose source is an operation and whose target is an operation. The relationship may also be subsumed to the class containing an operation, with the meaning that there exists an operation in the class to which the dependency applies. A call dependency specifies that the source operation or an operation in the source class invokes the target operation or an operation in the target class. A call dependency may connect a source operation to any target operation that is within scope including, but not limited to, operations of the enclosing classifier and operations of other visible classifiers.</body>
-    </ownedComment>
-    <ownedRule xmi:id="Call-client_and_supplier_are_operations" name="client_and_supplier_are_operations" constrainedElement="Call">
-      <specification xmi:type="uml:OpaqueExpression" xmi:id="Call-client_and_supplier_are_operations-_specification">
-        <language>OCL</language>
-        <body>self.base_Usage.client->forAll(oclIsKindOf(Operation)) and self.base_Usage.supplier->forAll(oclIsKindOf(Operation))</body>
-      </specification>
-    </ownedRule>
-    <ownedAttribute xmi:id="Call-base_Usage" name="base_Usage" association="Usage_Call">
-      <type xmi:type="uml:Class" href="../metamodels/UML.metamodel.uml#Usage"/>
-    </ownedAttribute>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="Create" name="Create">
-    <ownedComment xmi:id="Create-_ownedComment.0" annotatedElement="Create">
-      <body>When applied to a Usage, denotes that the client classifier creates instances of the supplier classifier. When applied to a BehavioralFeature, specifies that the designated feature creates an instance of the classifier to which the feature is attached.</body>
-    </ownedComment>
-    <ownedRule xmi:id="Create-client_and_supplier_are_classifiers" name="client_and_supplier_are_classifiers" constrainedElement="Create">
-      <specification xmi:type="uml:OpaqueExpression" xmi:id="Create-client_and_supplier_are_classifiers-_specification">
-        <language>OCL</language>
-        <body>self.base_Usage->notEmpty() implies (self.base_Usage.client->forAll(oclIsKindOf(Classifier)) and self.base_Usage.supplier->forAll(oclIsKindOf(Classifier)))</body>
-      </specification>
-    </ownedRule>
-    <ownedAttribute xmi:id="Create-base_BehavioralFeature" name="base_BehavioralFeature" association="BehavioralFeature_Create">
-      <type xmi:type="uml:Class" href="../metamodels/UML.metamodel.uml#BehavioralFeature"/>
-      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Create-base_BehavioralFeature-_lowerValue"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="Create-base_Usage" name="base_Usage" association="Usage_Create">
-      <type xmi:type="uml:Class" href="../metamodels/UML.metamodel.uml#Usage"/>
-      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Create-base_Usage-_lowerValue"/>
-    </ownedAttribute>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="Derive" name="Derive">
-    <ownedComment xmi:id="Derive-_ownedComment.0" annotatedElement="Derive">
-      <body>Specifies a derivation relationship among model elements that are usually, but not necessarily, of the same type. A derived dependency specifies that the client may be computed from the supplier. The mapping specifies the computation. The client may be implemented for design reasons, such as efficiency, even though it is logically redundant.</body>
-    </ownedComment>
-    <ownedAttribute xmi:id="Derive-computation" name="computation" visibility="public" aggregation="composite">
-      <ownedComment xmi:id="Derive-computation-_ownedComment.0" annotatedElement="Derive-computation">
-        <body>The specification for computing the derived client element from the derivation supplier element.</body>
-      </ownedComment>
-      <type xmi:type="uml:Class" href="../metamodels/UML.metamodel.uml#ValueSpecification"/>
-      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Derive-computation-_lowerValue" value="1"/>
-      <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Derive-computation-_upperValue" value="1"/>
-    </ownedAttribute>
-    <ownedAttribute xmi:id="Derive-base_Abstraction" name="base_Abstraction" association="Abstraction_Derive">
-      <type xmi:type="uml:Class" href="../metamodels/UML.metamodel.uml#Abstraction"/>
-    </ownedAttribute>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="Destroy" name="Destroy">
-    <ownedComment xmi:id="Destroy-_ownedComment.0" annotatedElement="Destroy">
-      <body>Specifies that the designated feature destroys an instance of the classifier to which the feature is attached.</body>
-    </ownedComment>
-    <ownedAttribute xmi:id="Destroy-base_BehavioralFeature" name="base_BehavioralFeature" association="BehavioralFeature_Destroy">
-      <type xmi:type="uml:Class" href="../metamodels/UML.metamodel.uml#BehavioralFeature"/>
-    </ownedAttribute>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="Document" name="Document">
-    <ownedComment xmi:id="Document-_ownedComment.0" annotatedElement="Document">
-      <body>A human-readable file. Subclass of «File».</body>
-    </ownedComment>
-    <generalization xmi:id="Document-_generalization.0" general="File"/>
-    <ownedAttribute xmi:id="Document-base_Artifact" name="base_Artifact" redefinedProperty="File-base_Artifact" association="Artifact_Document">
-      <type xmi:type="uml:Class" href="../metamodels/UML.metamodel.uml#Artifact"/>
-    </ownedAttribute>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="Entity" name="Entity">
-    <ownedComment xmi:id="Entity-_ownedComment.0" annotatedElement="Entity">
-      <body>A persistent information component representing a business concept.</body>
-    </ownedComment>
-    <ownedAttribute xmi:id="Entity-base_Component" name="base_Component" association="Component_Entity">
-      <type xmi:type="uml:Class" href="../metamodels/UML.metamodel.uml#Component"/>
-    </ownedAttribute>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="Executable" name="Executable">
-    <ownedComment xmi:id="Executable-_ownedComment.0" annotatedElement="Executable">
-      <body>A program file that can be executed on a computer system. Subclass of «File».</body>
-    </ownedComment>
-    <generalization xmi:id="Executable-_generalization.0" general="File"/>
-    <ownedAttribute xmi:id="Executable-base_Artifact" name="base_Artifact" redefinedProperty="File-base_Artifact" association="Artifact_Executable">
-      <type xmi:type="uml:Class" href="../metamodels/UML.metamodel.uml#Artifact"/>
-    </ownedAttribute>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="File" name="File" isAbstract="true">
-    <ownedComment xmi:id="File-_ownedComment.0" annotatedElement="File">
-      <body>A physical file in the context of the system developed.</body>
-    </ownedComment>
-    <ownedAttribute xmi:id="File-base_Artifact" name="base_Artifact" association="Artifact_File">
-      <type xmi:type="uml:Class" href="../metamodels/UML.metamodel.uml#Artifact"/>
-    </ownedAttribute>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="Focus" name="Focus">
-    <ownedComment xmi:id="Focus-_ownedComment.0" annotatedElement="Focus">
-      <body>A class that defines the core logic or control flow for one or more auxiliary classes that support it. Focus classes are typically used together with one or more Auxiliary classes, and are particularly useful for specifying the core business logic or control flow of components during design. See also: «Auxiliary».</body>
-    </ownedComment>
-    <ownedAttribute xmi:id="Focus-base_Class" name="base_Class" association="Class_Focus">
-      <type xmi:type="uml:Class" href="../metamodels/UML.metamodel.uml#Class"/>
-    </ownedAttribute>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="Framework" name="Framework">
-    <ownedComment xmi:id="Framework-_ownedComment.0" annotatedElement="Framework">
-      <body>A package that contains model elements that specify a reusable architecture for all or part of a system. Frameworks typically include classes, patterns, or templates. When frameworks are specialized for an application domain they are sometimes referred to as application frameworks.</body>
-    </ownedComment>
-    <ownedAttribute xmi:id="Framework-base_Package" name="base_Package" association="Package_Framework">
-      <type xmi:type="uml:Class" href="../metamodels/UML.metamodel.uml#Package"/>
-    </ownedAttribute>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="Implement" name="Implement">
-    <ownedComment xmi:id="Implement-_ownedComment.0" annotatedElement="Implement">
-      <body>A component definition that is not intended to have a specification itself. Rather, it is an implementation for a separate «Specification» to which it has a Dependency.</body>
-    </ownedComment>
-    <ownedRule xmi:id="Implement-implements_specification" name="implements_specification" constrainedElement="Implement">
-      <specification xmi:type="uml:OpaqueExpression" xmi:id="Implement-implements_specification-_specification">
-        <language>OCL</language>
-        <body>self.base_Component.clientDependency.supplier->select(oclIsKindOf(Classifier)).oclAsType(Classifier).extension_Specificaiton->notEmpty()</body>
-      </specification>
-    </ownedRule>
-    <ownedAttribute xmi:id="Implement-base_Component" name="base_Component" association="Component_Implement">
-      <type xmi:type="uml:Class" href="../metamodels/UML.metamodel.uml#Component"/>
-    </ownedAttribute>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="ImplementationClass" name="ImplementationClass">
-    <ownedComment xmi:id="ImplementationClass-_ownedComment.0" annotatedElement="ImplementationClass">
-      <body>The implementation of a class in some programming language (e.g., C++, Smalltalk, Java) in which an instance may not have more than one class. This is in contrast to Class, for which an instance may have multiple classes at one time and may gain or lose classes over time, and an object may dynamically have multiple classes. An Implementation class is said to realize a Classifier if it provides all of the operations defined for the Classifier with the same behavior as specified for the Classifier's operations. An Implementation Class may realize a number of different Types. The physical attributes and associations of the Implementation class do not have to be the same as those of any Classifier it realizes and the Implementation Class may provide methods for its operations in terms of its physical attributes and associations. See also: «Type».</body>
-    </ownedComment>
-    <ownedRule xmi:id="ImplementationClass-cannot_be_realization" name="cannot_be_realization" constrainedElement="ImplementationClass">
-      <specification xmi:type="uml:OpaqueExpression" xmi:id="ImplementationClass-cannot_be_realization-_specification">
-        <language>OCL</language>
-        <body>self.base_Class.extension_Realization->isEmpty()</body>
-      </specification>
-    </ownedRule>
-    <ownedAttribute xmi:id="ImplementationClass-base_Class" name="base_Class" association="Class_ImplementationClass">
-      <type xmi:type="uml:Class" href="../metamodels/UML.metamodel.uml#Class"/>
-    </ownedAttribute>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="Instantiate" name="Instantiate">
-    <ownedComment xmi:id="Instantiate-_ownedComment.0" annotatedElement="Instantiate">
-      <body>A usage dependency among classifiers indicating that operations on the client create instances of the supplier.</body>
-    </ownedComment>
-    <ownedRule xmi:id="Instantiate-client_and_supplier_are_classifiers" name="client_and_supplier_are_classifiers" constrainedElement="Instantiate">
-      <specification xmi:type="uml:OpaqueExpression" xmi:id="Instantiate-client_and_supplier_are_classifiers-_specification">
-        <language>OCL</language>
-        <body>self.base_Usage.client->forAll(oclIsKindOf(Classifier)) and self.base_Usage.supplier->forAll(oclIsKindOf(Classifier))</body>
-      </specification>
-    </ownedRule>
-    <ownedAttribute xmi:id="Instantiate-base_Usage" name="base_Usage" association="Usage_Instantiate">
-      <type xmi:type="uml:Class" href="../metamodels/UML.metamodel.uml#Usage"/>
-    </ownedAttribute>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="Library" name="Library">
-    <ownedComment xmi:id="Library-_ownedComment.0" annotatedElement="Library">
-      <body>A static or dynamic library file. Subclass of «File».</body>
-    </ownedComment>
-    <generalization xmi:id="Library-_generalization.0" general="File"/>
-    <ownedAttribute xmi:id="Library-base_Artifact" name="base_Artifact" redefinedProperty="File-base_Artifact" association="Artifact_Library">
-      <type xmi:type="uml:Class" href="../metamodels/UML.metamodel.uml#Artifact"/>
-    </ownedAttribute>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="Metaclass" name="Metaclass">
-    <ownedComment xmi:id="Metaclass-_ownedComment.0" annotatedElement="Metaclass">
-      <body>A class whose instances are also classes.</body>
-    </ownedComment>
-    <ownedAttribute xmi:id="Metaclass-base_Class" name="base_Class" association="Class_Metaclass">
-      <type xmi:type="uml:Class" href="../metamodels/UML.metamodel.uml#Class"/>
-    </ownedAttribute>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="ModelLibrary" name="ModelLibrary">
-    <ownedComment xmi:id="ModelLibrary-_ownedComment.0" annotatedElement="ModelLibrary">
-      <body>A package that contains model elements that are intended to be reused by other packages. It is analogous to a class library in some programming languages. The model library may not include instances of the metamodel extension metaclasses specified in Clause 12.3, such as Profiles and Stereotypes. However it may include ProfileApplications and Stereotype applications, and a model library is often used in conjunction with an applied Profile.</body>
-    </ownedComment>
-    <ownedAttribute xmi:id="ModelLibrary-base_Package" name="base_Package" association="Package_ModelLibrary">
-      <type xmi:type="uml:Class" href="../metamodels/UML.metamodel.uml#Package"/>
-    </ownedAttribute>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="Process" name="Process">
-    <ownedComment xmi:id="Process-_ownedComment.0" annotatedElement="Process">
-      <body>A transaction based component.</body>
-    </ownedComment>
-    <ownedAttribute xmi:id="Process-base_Component" name="base_Component" association="Component_Process">
-      <type xmi:type="uml:Class" href="../metamodels/UML.metamodel.uml#Component"/>
-    </ownedAttribute>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="Realization" name="Realization">
-    <ownedComment xmi:id="Realization-_ownedComment.0" annotatedElement="Realization">
-      <body>A classifier that specifies a domain of objects and that also defines the physical implementation of those objects. For example, a Component stereotyped by «Realization» will only have realizing Classifiers that implement behavior specified by a separate «Specification» Component. See «Specification». This differs from «ImplementationClass» because an «ImplementationClass» is a realization of a Class that can have features such as attributes and methods that are useful to system designers.</body>
-    </ownedComment>
-    <ownedRule xmi:id="Realization-cannot_be_implementationClass" name="cannot_be_implementationClass" constrainedElement="Realization">
-      <specification xmi:type="uml:OpaqueExpression" xmi:id="Realization-cannot_be_implementationClass-_specification">
-        <language>OCL</language>
-        <body>self.base_Classifier.extension_ImplementationClass->isEmpty()</body>
-      </specification>
-    </ownedRule>
-    <ownedAttribute xmi:id="Realization-base_Classifier" name="base_Classifier" association="Classifier_Realization">
-      <type xmi:type="uml:Class" href="../metamodels/UML.metamodel.uml#Classifier"/>
-    </ownedAttribute>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="Refine" name="Refine">
-    <ownedComment xmi:id="Refine-_ownedComment.0" annotatedElement="Refine">
-      <body>Specifies a refinement relationship between model elements at different semantic levels, such as analysis and design. The mapping specifies the relationship between the two elements or sets of elements. The mapping may or may not be computable, and it may be unidirectional or bidirectional. Refinement can be used to model transformations from analysis to design and other such changes.</body>
-    </ownedComment>
-    <ownedAttribute xmi:id="Refine-base_Abstraction" name="base_Abstraction" association="Abstraction_Refine">
-      <type xmi:type="uml:Class" href="../metamodels/UML.metamodel.uml#Abstraction"/>
-    </ownedAttribute>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="Responsibility" name="Responsibility">
-    <ownedComment xmi:id="Responsibility-_ownedComment.0" annotatedElement="Responsibility">
-      <body>A contract or an obligation of an element in its relationship to other elements.</body>
-    </ownedComment>
-    <ownedAttribute xmi:id="Responsibility-base_Usage" name="base_Usage" association="Usage_Responsibility">
-      <type xmi:type="uml:Class" href="../metamodels/UML.metamodel.uml#Usage"/>
-    </ownedAttribute>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="Script" name="Script">
-    <ownedComment xmi:id="Script-_ownedComment.0" annotatedElement="Script">
-      <body>A script file that can be interpreted by a computer system. Subclass of «File».</body>
-    </ownedComment>
-    <generalization xmi:id="Script-_generalization.0" general="File"/>
-    <ownedAttribute xmi:id="Script-base_Artifact" name="base_Artifact" redefinedProperty="File-base_Artifact" association="Artifact_Script">
-      <type xmi:type="uml:Class" href="../metamodels/UML.metamodel.uml#Artifact"/>
-    </ownedAttribute>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="Send" name="Send">
-    <ownedComment xmi:id="Send-_ownedComment.0" annotatedElement="Send">
-      <body>A Usage whose client is an Operation and whose supplier is a Signal, specifying that the Operation sends the Signal.</body>
-    </ownedComment>
-    <ownedRule xmi:id="Send-client_operation_sends_supplier_signal" name="client_operation_sends_supplier_signal" constrainedElement="Send">
-      <specification xmi:type="uml:OpaqueExpression" xmi:id="Send-client_operation_sends_supplier_signal-_specification">
-        <language>OCL</language>
-        <body>self.base_Usage.client->forAll(oclIsKindOf(Operation)) and self.base_Usage.supplier->forAll(oclIsKindOf(Signal))</body>
-      </specification>
-    </ownedRule>
-    <ownedAttribute xmi:id="Send-base_Usage" name="base_Usage" association="Usage_Send">
-      <type xmi:type="uml:Class" href="../metamodels/UML.metamodel.uml#Usage"/>
-    </ownedAttribute>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="Service" name="Service">
-    <ownedComment xmi:id="Service-_ownedComment.0" annotatedElement="Service">
-      <body>A stateless, functional component.</body>
-    </ownedComment>
-    <ownedAttribute xmi:id="Service-base_Component" name="base_Component" association="Component_Service">
-      <type xmi:type="uml:Class" href="../metamodels/UML.metamodel.uml#Component"/>
-    </ownedAttribute>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="Source" name="Source">
-    <ownedComment xmi:id="Source-_ownedComment.0" annotatedElement="Source">
-      <body>A source file that can be compiled into an executable file. Subclass of «File».</body>
-    </ownedComment>
-    <generalization xmi:id="Source-_generalization.0" general="File"/>
-    <ownedAttribute xmi:id="Source-base_Artifact" name="base_Artifact" redefinedProperty="File-base_Artifact" association="Artifact_Source">
-      <type xmi:type="uml:Class" href="../metamodels/UML.metamodel.uml#Artifact"/>
-    </ownedAttribute>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="Specification" name="Specification">
-    <ownedComment xmi:id="Specification-_ownedComment.0" annotatedElement="Specification">
-      <body>A classifier that specifies a domain of objects without defining the physical implementation of those objects. For example, a Component stereotyped by «Specification» will only have provided and required interfaces, and is not intended to have any realizingClassifiers as part of its definition. This differs from «Type» because a «Type» can have features such as attributes and methods that are useful to analysts modeling systems. Also see: «Realization».</body>
-    </ownedComment>
-    <ownedRule xmi:id="Specification-cannot_be_type" name="cannot_be_type" constrainedElement="Specification">
-      <specification xmi:type="uml:OpaqueExpression" xmi:id="Specification-cannot_be_type-_specification">
-        <language>OCL</language>
-        <body>self.base_Classifier.extension_Type->isEmpty()</body>
-      </specification>
-    </ownedRule>
-    <ownedAttribute xmi:id="Specification-base_Classifier" name="base_Classifier" association="Classifier_Specification">
-      <type xmi:type="uml:Class" href="../metamodels/UML.metamodel.uml#Classifier"/>
-    </ownedAttribute>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="Subsystem" name="Subsystem">
-    <ownedComment xmi:id="Subsystem-_ownedComment.0" annotatedElement="Subsystem">
-      <body>A unit of hierarchical decomposition for large systems. A subsystem is commonly instantiated indirectly. Definitions of subsystems vary widely among domains and methods, and it is expected that domain and method profiles will specialize this construct. A subsystem may be defined to have specification and realization elements. See also: «Specification» and «Realization».</body>
-    </ownedComment>
-    <ownedAttribute xmi:id="Subsystem-base_Component" name="base_Component" association="Component_Subsystem">
-      <type xmi:type="uml:Class" href="../metamodels/UML.metamodel.uml#Component"/>
-    </ownedAttribute>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="Trace" name="Trace">
-    <ownedComment xmi:id="Trace-_ownedComment.0" annotatedElement="Trace">
-      <body>Specifies a trace relationship between model elements or sets of model elements that represent the same concept in different models. Traces are mainly used for tracking requirements and changes across models. As model changes can occur in both directions, the directionality of the dependency can often be ignored. The mapping specifies the relationship between the two, but it is rarely computable and is usually informal.</body>
-    </ownedComment>
-    <ownedAttribute xmi:id="Trace-base_Abstraction" name="base_Abstraction" association="Abstraction_Trace">
-      <type xmi:type="uml:Class" href="../metamodels/UML.metamodel.uml#Abstraction"/>
-    </ownedAttribute>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="Type" name="Type">
-    <ownedComment xmi:id="Type-_ownedComment.0" annotatedElement="Type">
-      <body>A class that specifies a domain of objects together with the operations applicable to the objects, without defining the physical implementation of those objects. However, it may have attributes and associations. Behavioral specifications for type operations may be expressed using, for example, activity diagrams. An object may have at most one implementation class, however it may conform to multiple different types. See also: «ImplementationClass».</body>
-    </ownedComment>
-    <ownedRule xmi:id="Type-cannot_be_specification" name="cannot_be_specification" constrainedElement="Type">
-      <specification xmi:type="uml:OpaqueExpression" xmi:id="Type-cannot_be_specification-_specification">
-        <language>OCL</language>
-        <body>self.base_Class.extension_Specification->isEmpty()</body>
-      </specification>
-    </ownedRule>
-    <ownedAttribute xmi:id="Type-base_Class" name="base_Class" association="Class_Type">
-      <type xmi:type="uml:Class" href="../metamodels/UML.metamodel.uml#Class"/>
-    </ownedAttribute>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="Utility" name="Utility">
-    <ownedComment xmi:id="Utility-_ownedComment.0" annotatedElement="Utility">
-      <body>A class that has no instances, but rather denotes a named collection of attributes and operations, all of which are static.</body>
-    </ownedComment>
-    <ownedRule xmi:id="Utility-is_utility" name="is_utility" constrainedElement="Utility">
-      <specification xmi:type="uml:OpaqueExpression" xmi:id="Utility-is_utility-_specification">
-        <language>OCL</language>
-        <body>self.base_Class.feature->forAll(isStatic)</body>
-      </specification>
-    </ownedRule>
-    <ownedAttribute xmi:id="Utility-base_Class" name="base_Class" association="Class_Utility">
-      <type xmi:type="uml:Class" href="../metamodels/UML.metamodel.uml#Class"/>
-    </ownedAttribute>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="Component_BuildComponent" name="Component_BuildComponent" memberEnd="Component_BuildComponent-extension_BuildComponent BuildComponent-base_Component">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="Component_BuildComponent-extension_BuildComponent" name="extension_BuildComponent" type="BuildComponent" aggregation="composite" association="Component_BuildComponent">
-      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Component_BuildComponent-extension_BuildComponent-_lowerValue"/>
-    </ownedEnd>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="Model_Metamodel" name="Model_Metamodel" memberEnd="Model_Metamodel-extension_Metamodel Metamodel-base_Model">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="Model_Metamodel-extension_Metamodel" name="extension_Metamodel" type="Metamodel" aggregation="composite" association="Model_Metamodel">
-      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Model_Metamodel-extension_Metamodel-_lowerValue"/>
-    </ownedEnd>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Extension" xmi:id="Model_SystemModel" name="Model_SystemModel" memberEnd="Model_SystemModel-extension_SystemModel SystemModel-base_Model">
-    <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="Model_SystemModel-extension_SystemModel" name="extension_SystemModel" type="SystemModel" aggregation="composite" association="Model_SystemModel">
-      <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Model_SystemModel-extension_SystemModel-_lowerValue"/>
-    </ownedEnd>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="BuildComponent" name="BuildComponent">
-    <ownedComment xmi:id="BuildComponent-_ownedComment.0" annotatedElement="BuildComponent">
-      <body>A collection of elements defined for the purpose of system level development activities, such as compilation and versioning.</body>
-    </ownedComment>
-    <ownedAttribute xmi:id="BuildComponent-base_Component" name="base_Component" association="Component_BuildComponent">
-      <type xmi:type="uml:Class" href="../metamodels/UML.metamodel.uml#Component"/>
-    </ownedAttribute>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="Metamodel" name="Metamodel">
-    <ownedComment xmi:id="Metamodel-_ownedComment.0" annotatedElement="Metamodel">
-      <body>A model that specifies the modeling concepts of some modeling language (e.g., a MOF model). See «Metaclass».</body>
-    </ownedComment>
-    <ownedAttribute xmi:id="Metamodel-base_Model" name="base_Model" association="Model_Metamodel">
-      <type xmi:type="uml:Class" href="../metamodels/UML.metamodel.uml#Model"/>
-    </ownedAttribute>
-  </packagedElement>
-  <packagedElement xmi:type="uml:Stereotype" xmi:id="SystemModel" name="SystemModel">
-    <ownedComment xmi:id="SystemModel-_ownedComment.0" annotatedElement="SystemModel">
-      <body>A SystemModel is a stereotyped model that contains a collection of models of the same system. A SystemModel also contains all relationships and constraints between model elements contained in different models.</body>
-    </ownedComment>
-    <ownedAttribute xmi:id="SystemModel-base_Model" name="base_Model" association="Model_SystemModel">
-      <type xmi:type="uml:Class" href="../metamodels/UML.metamodel.uml#Model"/>
-    </ownedAttribute>
-  </packagedElement>
-  <profileApplication xmi:id="_profileApplication.0">
-    <eAnnotations xmi:id="_6ryrYL5MEeCUg9_01zj7Og" source="http://www.eclipse.org/uml2/2.0.0/UML">
-      <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA"/>
-    </eAnnotations>
-    <appliedProfile href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
-  </profileApplication>
-</uml:Profile>
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/C2/resources/model/resource/FMUExport/FMI%20Export%20Dev/FMU_Examples.uml b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/C2/resources/model/resource/FMUExport/FMI%20Export%20Dev/FMU_Examples.uml
deleted file mode 100644
index b2cb352..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/C2/resources/model/resource/FMUExport/FMI%20Export%20Dev/FMU_Examples.uml
+++ /dev/null
@@ -1,665 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:fmiprofile="http://www.eclipse.org/papyrus/FMIProfile/1.0.0" xmlns:standard="http://www.eclipse.org/uml2/5.0.0/UML/Profile/Standard" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
-  <uml:Model xmi:id="_q8DOcMXPEeWwx_puHDzFYw" name="FMU Examples">
-    <packageImport xmi:id="_rEUZoMXPEeWwx_puHDzFYw">
-      <importedPackage xmi:type="uml:Model" href="../../../plugin/org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#_0"/>
-    </packageImport>
-    <packageImport xmi:id="_ZvjL0OxTEeWP6eN_6Zcgmw">
-      <importedPackage xmi:type="uml:Model" href="../../../plugin/org.eclipse.papyrus.moka.fuml.standardlibrary/resources/fUML_Library.uml#_0"/>
-    </packageImport>
-    <packagedElement xmi:type="uml:Package" xmi:id="_7SAoIOxOEeWP6eN_6Zcgmw" name="EDF">
-      <packagedElement xmi:type="uml:Class" xmi:id="_NO0UEMXQEeWwx_puHDzFYw" name="C1" classifierBehavior="_bnRAUMXQEeWwx_puHDzFYw" isActive="true">
-        <ownedAttribute xmi:id="_RUkBcMXQEeWwx_puHDzFYw" name="valve" visibility="public">
-          <type xmi:type="uml:PrimitiveType" href="../../../plugin/org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-          <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_Vs8W8MXQEeWwx_puHDzFYw"/>
-        </ownedAttribute>
-        <ownedBehavior xmi:type="uml:Activity" xmi:id="_bnRAUMXQEeWwx_puHDzFYw" name="C1 ClassifierBehavior" node="_xrAkUMXQEeWwx_puHDzFYw _x6JMgMXQEeWwx_puHDzFYw _yIGwAMXQEeWwx_puHDzFYw _MwEQoMXSEeWwx_puHDzFYw _be-foMXTEeWwx_puHDzFYw _hclboMXVEeWwx_puHDzFYw _ia5zIMXXEeWwx_puHDzFYw _xF9SUMXXEeWwx_puHDzFYw" group="_be-foMXTEeWwx_puHDzFYw _ia5zIMXXEeWwx_puHDzFYw _xF9SUMXXEeWwx_puHDzFYw">
-          <ownedComment xmi:id="_sRT7wMXQEeWwx_puHDzFYw">
-            <body>model C1&#xD;
-  discrete output Boolean valve(start = false, fixed = false);&#xD;
-equation&#xD;
-  when time >= 0.5 then&#xD;
-    valve = true;&#xD;
-  elsewhen time >= 3.2 then&#xD;
-    valve = false;&#xD;
-  elsewhen time >= 5.2 then&#xD;
-    valve = true;&#xD;
-  end when;&#xD;
-end C1;</body>
-          </ownedComment>
-          <edge xmi:type="uml:ControlFlow" xmi:id="_WOXPsMXVEeWwx_puHDzFYw" target="_xrAkUMXQEeWwx_puHDzFYw" source="_MwEQoMXSEeWwx_puHDzFYw"/>
-          <edge xmi:type="uml:ControlFlow" xmi:id="_c6JyQMXVEeWwx_puHDzFYw" target="_be-foMXTEeWwx_puHDzFYw" source="_xrAkUMXQEeWwx_puHDzFYw"/>
-          <edge xmi:type="uml:ControlFlow" xmi:id="_dcHP0MXVEeWwx_puHDzFYw" target="_x6JMgMXQEeWwx_puHDzFYw" source="_be-foMXTEeWwx_puHDzFYw"/>
-          <edge xmi:type="uml:ControlFlow" xmi:id="_PzgkwMXYEeWwx_puHDzFYw" target="_ia5zIMXXEeWwx_puHDzFYw" source="_x6JMgMXQEeWwx_puHDzFYw"/>
-          <edge xmi:type="uml:ControlFlow" xmi:id="_QYv_0MXYEeWwx_puHDzFYw" target="_yIGwAMXQEeWwx_puHDzFYw" source="_ia5zIMXXEeWwx_puHDzFYw"/>
-          <edge xmi:type="uml:ControlFlow" xmi:id="_QyYn0MXYEeWwx_puHDzFYw" target="_xF9SUMXXEeWwx_puHDzFYw" source="_yIGwAMXQEeWwx_puHDzFYw"/>
-          <edge xmi:type="uml:ControlFlow" xmi:id="_RS1CcMXYEeWwx_puHDzFYw" target="_hclboMXVEeWwx_puHDzFYw" source="_xF9SUMXXEeWwx_puHDzFYw"/>
-          <structuredNode xmi:id="_be-foMXTEeWwx_puHDzFYw" name="StructuredActivityNode1" incoming="_c6JyQMXVEeWwx_puHDzFYw" outgoing="_dcHP0MXVEeWwx_puHDzFYw">
-            <edge xmi:type="uml:ObjectFlow" xmi:id="_upAEgMXTEeWwx_puHDzFYw" target="_Jr-_IMXTEeWwx_puHDzFYw" source="_l0m2sMXTEeWwx_puHDzFYw">
-              <guard xmi:type="uml:LiteralBoolean" xmi:id="_upRxUMXTEeWwx_puHDzFYw" value="true"/>
-              <weight xmi:type="uml:LiteralInteger" xmi:id="_upSYYMXTEeWwx_puHDzFYw" value="1"/>
-            </edge>
-            <edge xmi:type="uml:ObjectFlow" xmi:id="_s5i5EMXTEeWwx_puHDzFYw" target="_Jr8i4MXTEeWwx_puHDzFYw" source="_jzRREMXTEeWwx_puHDzFYw">
-              <guard xmi:type="uml:LiteralBoolean" xmi:id="_s5vtYMXTEeWwx_puHDzFYw" value="true"/>
-              <weight xmi:type="uml:LiteralInteger" xmi:id="_s5vtYcXTEeWwx_puHDzFYw" value="1"/>
-            </edge>
-            <node xmi:type="uml:AddStructuralFeatureValueAction" xmi:id="_JrzY8MXTEeWwx_puHDzFYw" name="set Valve" structuralFeature="_RUkBcMXQEeWwx_puHDzFYw" isReplaceAll="true">
-              <object xmi:id="_Jr8i4MXTEeWwx_puHDzFYw" name="object" incoming="_s5i5EMXTEeWwx_puHDzFYw" type="_NO0UEMXQEeWwx_puHDzFYw"/>
-              <result xmi:id="_Jr9xAMXTEeWwx_puHDzFYw" name="result" type="_NO0UEMXQEeWwx_puHDzFYw"/>
-              <value xmi:id="_Jr-_IMXTEeWwx_puHDzFYw" name="value" incoming="_upAEgMXTEeWwx_puHDzFYw">
-                <type xmi:type="uml:PrimitiveType" href="../../../plugin/org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-              </value>
-            </node>
-            <node xmi:type="uml:ReadSelfAction" xmi:id="_jzQC8MXTEeWwx_puHDzFYw" name="this">
-              <result xmi:id="_jzRREMXTEeWwx_puHDzFYw" name="result" outgoing="_s5i5EMXTEeWwx_puHDzFYw" type="_bnRAUMXQEeWwx_puHDzFYw"/>
-            </node>
-            <node xmi:type="uml:ValueSpecificationAction" xmi:id="_l0ceoMXTEeWwx_puHDzFYw" name="true">
-              <result xmi:id="_l0m2sMXTEeWwx_puHDzFYw" name="result" outgoing="_upAEgMXTEeWwx_puHDzFYw">
-                <type xmi:type="uml:PrimitiveType" href="../../../plugin/org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-                <upperBound xmi:type="uml:LiteralInteger" xmi:id="_mXe6QMXTEeWwx_puHDzFYw" value="1"/>
-                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mXeTMMXTEeWwx_puHDzFYw" value="1"/>
-              </result>
-              <value xmi:type="uml:LiteralBoolean" xmi:id="_mXWXYMXTEeWwx_puHDzFYw" value="true">
-                <type xmi:type="uml:PrimitiveType" href="../../../plugin/org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-              </value>
-            </node>
-          </structuredNode>
-          <structuredNode xmi:id="_ia5zIMXXEeWwx_puHDzFYw" name="StructuredActivityNode2" incoming="_PzgkwMXYEeWwx_puHDzFYw" outgoing="_QYv_0MXYEeWwx_puHDzFYw">
-            <edge xmi:type="uml:ObjectFlow" xmi:id="_FHrUMMXYEeWwx_puHDzFYw" target="_mJEG8MXXEeWwx_puHDzFYw" source="_rwlJEMXXEeWwx_puHDzFYw">
-              <guard xmi:type="uml:LiteralBoolean" xmi:id="_FIJ1UMXYEeWwx_puHDzFYw" value="true"/>
-              <weight xmi:type="uml:LiteralInteger" xmi:id="_FIJ1UcXYEeWwx_puHDzFYw" value="1"/>
-            </edge>
-            <edge xmi:type="uml:ObjectFlow" xmi:id="_HFo1sMXYEeWwx_puHDzFYw" target="_mJHKQMXXEeWwx_puHDzFYw" source="_uIQLEMXXEeWwx_puHDzFYw">
-              <guard xmi:type="uml:LiteralBoolean" xmi:id="_HGCeUMXYEeWwx_puHDzFYw" value="true"/>
-              <weight xmi:type="uml:LiteralInteger" xmi:id="_HGCeUcXYEeWwx_puHDzFYw" value="1"/>
-            </edge>
-            <node xmi:type="uml:AddStructuralFeatureValueAction" xmi:id="_mI_OcMXXEeWwx_puHDzFYw" name="set Valve" structuralFeature="_RUkBcMXQEeWwx_puHDzFYw" isReplaceAll="true">
-              <object xmi:id="_mJEG8MXXEeWwx_puHDzFYw" name="object" incoming="_FHrUMMXYEeWwx_puHDzFYw" type="_NO0UEMXQEeWwx_puHDzFYw"/>
-              <result xmi:id="_mJFVEMXXEeWwx_puHDzFYw" name="result" type="_NO0UEMXQEeWwx_puHDzFYw"/>
-              <value xmi:id="_mJHKQMXXEeWwx_puHDzFYw" name="value" incoming="_HFo1sMXYEeWwx_puHDzFYw">
-                <type xmi:type="uml:PrimitiveType" href="../../../plugin/org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-              </value>
-            </node>
-            <node xmi:type="uml:ReadSelfAction" xmi:id="_rwkiAMXXEeWwx_puHDzFYw" name="self">
-              <result xmi:id="_rwlJEMXXEeWwx_puHDzFYw" name="result" outgoing="_FHrUMMXYEeWwx_puHDzFYw" type="_bnRAUMXQEeWwx_puHDzFYw"/>
-            </node>
-            <node xmi:type="uml:ValueSpecificationAction" xmi:id="_uIPkAMXXEeWwx_puHDzFYw" name="false">
-              <result xmi:id="_uIQLEMXXEeWwx_puHDzFYw" name="result" outgoing="_HFo1sMXYEeWwx_puHDzFYw">
-                <type xmi:type="uml:PrimitiveType" href="../../../plugin/org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-                <upperBound xmi:type="uml:LiteralInteger" xmi:id="_ujJ-YMXXEeWwx_puHDzFYw" value="1"/>
-                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ujJXUMXXEeWwx_puHDzFYw" value="1"/>
-              </result>
-              <value xmi:type="uml:LiteralBoolean" xmi:id="_ujIwQMXXEeWwx_puHDzFYw">
-                <type xmi:type="uml:PrimitiveType" href="../../../plugin/org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-              </value>
-            </node>
-          </structuredNode>
-          <structuredNode xmi:id="_xF9SUMXXEeWwx_puHDzFYw" name="StructuredActivityNode3" incoming="_QyYn0MXYEeWwx_puHDzFYw" outgoing="_RS1CcMXYEeWwx_puHDzFYw">
-            <edge xmi:type="uml:ObjectFlow" xmi:id="_KlY6EMXYEeWwx_puHDzFYw" target="_y2PkMMXXEeWwx_puHDzFYw" source="_4mxYYMXXEeWwx_puHDzFYw">
-              <guard xmi:type="uml:LiteralBoolean" xmi:id="_KlxUkMXYEeWwx_puHDzFYw" value="true"/>
-              <weight xmi:type="uml:LiteralInteger" xmi:id="_KlxUkcXYEeWwx_puHDzFYw" value="1"/>
-            </edge>
-            <edge xmi:type="uml:ObjectFlow" xmi:id="_MSnQ4MXYEeWwx_puHDzFYw" target="_y2SAcMXXEeWwx_puHDzFYw" source="_61JUcMXXEeWwx_puHDzFYw">
-              <guard xmi:type="uml:LiteralBoolean" xmi:id="_MTDVwMXYEeWwx_puHDzFYw" value="true"/>
-              <weight xmi:type="uml:LiteralInteger" xmi:id="_MTDVwcXYEeWwx_puHDzFYw" value="1"/>
-            </edge>
-            <node xmi:type="uml:AddStructuralFeatureValueAction" xmi:id="_y2Mg4MXXEeWwx_puHDzFYw" name="set Valve" structuralFeature="_RUkBcMXQEeWwx_puHDzFYw" isReplaceAll="true">
-              <object xmi:id="_y2PkMMXXEeWwx_puHDzFYw" name="object" incoming="_KlY6EMXYEeWwx_puHDzFYw" type="_NO0UEMXQEeWwx_puHDzFYw"/>
-              <result xmi:id="_y2QyUMXXEeWwx_puHDzFYw" name="result" type="_NO0UEMXQEeWwx_puHDzFYw"/>
-              <value xmi:id="_y2SAcMXXEeWwx_puHDzFYw" name="value" incoming="_MSnQ4MXYEeWwx_puHDzFYw">
-                <type xmi:type="uml:PrimitiveType" href="../../../plugin/org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-              </value>
-            </node>
-            <node xmi:type="uml:ReadSelfAction" xmi:id="_4mrRwMXXEeWwx_puHDzFYw" name="self">
-              <result xmi:id="_4mxYYMXXEeWwx_puHDzFYw" name="result" outgoing="_KlY6EMXYEeWwx_puHDzFYw" type="_bnRAUMXQEeWwx_puHDzFYw"/>
-            </node>
-            <node xmi:type="uml:ValueSpecificationAction" xmi:id="_61ItYMXXEeWwx_puHDzFYw" name="true">
-              <result xmi:id="_61JUcMXXEeWwx_puHDzFYw" name="result" outgoing="_MSnQ4MXYEeWwx_puHDzFYw">
-                <type xmi:type="uml:PrimitiveType" href="../../../plugin/org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-                <upperBound xmi:type="uml:LiteralInteger" xmi:id="_7MzmgcXXEeWwx_puHDzFYw" value="1"/>
-                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7MzmgMXXEeWwx_puHDzFYw" value="1"/>
-              </result>
-              <value xmi:type="uml:LiteralBoolean" xmi:id="_7My_cMXXEeWwx_puHDzFYw" value="true">
-                <type xmi:type="uml:PrimitiveType" href="../../../plugin/org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-              </value>
-            </node>
-          </structuredNode>
-          <node xmi:type="uml:AcceptEventAction" xmi:id="_xrAkUMXQEeWwx_puHDzFYw" name="at 0.5" incoming="_WOXPsMXVEeWwx_puHDzFYw" outgoing="_c6JyQMXVEeWwx_puHDzFYw">
-            <trigger xmi:id="_dDHd0MXREeWwx_puHDzFYw" event="_FOFiYMXREeWwx_puHDzFYw"/>
-          </node>
-          <node xmi:type="uml:AcceptEventAction" xmi:id="_x6JMgMXQEeWwx_puHDzFYw" name="at 3.2" incoming="_dcHP0MXVEeWwx_puHDzFYw" outgoing="_PzgkwMXYEeWwx_puHDzFYw">
-            <trigger xmi:id="_l3ePYMXREeWwx_puHDzFYw" event="_LG7lEMXREeWwx_puHDzFYw"/>
-          </node>
-          <node xmi:type="uml:AcceptEventAction" xmi:id="_yIGwAMXQEeWwx_puHDzFYw" name="at 5.2" incoming="_QYv_0MXYEeWwx_puHDzFYw" outgoing="_QyYn0MXYEeWwx_puHDzFYw">
-            <trigger xmi:id="_qedooMXREeWwx_puHDzFYw" event="_LWmYwMXREeWwx_puHDzFYw"/>
-          </node>
-          <node xmi:type="uml:InitialNode" xmi:id="_MwEQoMXSEeWwx_puHDzFYw" name="InitialNode1" outgoing="_WOXPsMXVEeWwx_puHDzFYw"/>
-          <node xmi:type="uml:ActivityFinalNode" xmi:id="_hclboMXVEeWwx_puHDzFYw" name="ActivityFinalNode1" incoming="_RS1CcMXYEeWwx_puHDzFYw"/>
-        </ownedBehavior>
-        <ownedBehavior xmi:type="uml:Activity" xmi:id="_ClNpYMXWEeWwx_puHDzFYw" name="C1_Factory" node="_ClO3gcXWEeWwx_puHDzFYw _CouQYMXWEeWwx_puHDzFYw _Cou3csXWEeWwx_puHDzFYw _CowsocXWEeWwx_puHDzFYw _CoxTscXWEeWwx_puHDzFYw">
-          <ownedParameter xmi:id="_ClO3gMXWEeWwx_puHDzFYw" name="result" type="_NO0UEMXQEeWwx_puHDzFYw" direction="return"/>
-          <edge xmi:type="uml:ObjectFlow" xmi:id="_CowFksXWEeWwx_puHDzFYw" name="createObjectAction to callConstructor" target="_CovegMXWEeWwx_puHDzFYw" source="_Cou3cMXWEeWwx_puHDzFYw">
-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_Co8S0MXWEeWwx_puHDzFYw" value="true"/>
-            <weight xmi:type="uml:LiteralInteger" xmi:id="_Co8S0cXWEeWwx_puHDzFYw" value="1"/>
-          </edge>
-          <edge xmi:type="uml:ObjectFlow" xmi:id="_CowsoMXWEeWwx_puHDzFYw" name="callConstructor to returnParamNode" target="_ClO3gcXWEeWwx_puHDzFYw" source="_CoxTscXWEeWwx_puHDzFYw">
-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_Co8S0sXWEeWwx_puHDzFYw" value="true"/>
-            <weight xmi:type="uml:LiteralInteger" xmi:id="_Co8S08XWEeWwx_puHDzFYw" value="1"/>
-          </edge>
-          <edge xmi:type="uml:ObjectFlow" xmi:id="_CoxTssXWEeWwx_puHDzFYw" name="fork to startbehavior input pin" target="_CowsosXWEeWwx_puHDzFYw" source="_CoxTscXWEeWwx_puHDzFYw">
-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_Co854MXWEeWwx_puHDzFYw" value="true"/>
-            <weight xmi:type="uml:LiteralInteger" xmi:id="_Co854cXWEeWwx_puHDzFYw" value="1"/>
-          </edge>
-          <edge xmi:type="uml:ObjectFlow" xmi:id="_CoxTs8XWEeWwx_puHDzFYw" name="callConstructor to startBehavior" target="_CoxTscXWEeWwx_puHDzFYw" source="_CowFkMXWEeWwx_puHDzFYw">
-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_Co854sXWEeWwx_puHDzFYw" value="true"/>
-            <weight xmi:type="uml:LiteralInteger" xmi:id="_Co8548XWEeWwx_puHDzFYw" value="1"/>
-          </edge>
-          <node xmi:type="uml:ActivityParameterNode" xmi:id="_ClO3gcXWEeWwx_puHDzFYw" name="resultParameterNode" incoming="_CowsoMXWEeWwx_puHDzFYw" type="_NO0UEMXQEeWwx_puHDzFYw" parameter="_ClO3gMXWEeWwx_puHDzFYw">
-            <upperBound xmi:type="uml:LiteralInteger" xmi:id="_ClPekMXWEeWwx_puHDzFYw" value="1"/>
-          </node>
-          <node xmi:type="uml:CreateObjectAction" xmi:id="_CouQYMXWEeWwx_puHDzFYw" name="createObject" classifier="_NO0UEMXQEeWwx_puHDzFYw">
-            <result xmi:id="_Cou3cMXWEeWwx_puHDzFYw" name="result" outgoing="_CowFksXWEeWwx_puHDzFYw" type="_NO0UEMXQEeWwx_puHDzFYw">
-              <upperBound xmi:type="uml:LiteralInteger" xmi:id="_Cou3ccXWEeWwx_puHDzFYw" value="1"/>
-            </result>
-          </node>
-          <node xmi:type="uml:CallOperationAction" xmi:id="_Cou3csXWEeWwx_puHDzFYw" name="callConstructor" operation="_ColtgMXWEeWwx_puHDzFYw">
-            <result xmi:id="_CowFkMXWEeWwx_puHDzFYw" name="result" outgoing="_CoxTs8XWEeWwx_puHDzFYw" type="_NO0UEMXQEeWwx_puHDzFYw">
-              <upperBound xmi:type="uml:LiteralInteger" xmi:id="_CowFkcXWEeWwx_puHDzFYw" value="1"/>
-            </result>
-            <target xmi:id="_CovegMXWEeWwx_puHDzFYw" name="target" incoming="_CowFksXWEeWwx_puHDzFYw" type="_NO0UEMXQEeWwx_puHDzFYw">
-              <upperBound xmi:type="uml:LiteralInteger" xmi:id="_CovegcXWEeWwx_puHDzFYw" value="1"/>
-            </target>
-          </node>
-          <node xmi:type="uml:StartObjectBehaviorAction" xmi:id="_CowsocXWEeWwx_puHDzFYw" name="start classifier behavior">
-            <object xmi:id="_CowsosXWEeWwx_puHDzFYw" name="object" incoming="_CoxTssXWEeWwx_puHDzFYw" type="_NO0UEMXQEeWwx_puHDzFYw">
-              <upperBound xmi:type="uml:LiteralInteger" xmi:id="_CoxTsMXWEeWwx_puHDzFYw" value="1"/>
-            </object>
-          </node>
-          <node xmi:type="uml:ForkNode" xmi:id="_CoxTscXWEeWwx_puHDzFYw" name="forkInstanciatedObject" incoming="_CoxTs8XWEeWwx_puHDzFYw" outgoing="_CowsoMXWEeWwx_puHDzFYw _CoxTssXWEeWwx_puHDzFYw"/>
-        </ownedBehavior>
-        <ownedOperation xmi:id="_ColtgMXWEeWwx_puHDzFYw" name="C1">
-          <ownedParameter xmi:id="_CoqmAMXWEeWwx_puHDzFYw" name="return" type="_NO0UEMXQEeWwx_puHDzFYw" direction="return"/>
-        </ownedOperation>
-      </packagedElement>
-      <packagedElement xmi:type="uml:Package" xmi:id="_BsDmEMXREeWwx_puHDzFYw" name="Events C1">
-        <packagedElement xmi:type="uml:TimeEvent" xmi:id="_FOFiYMXREeWwx_puHDzFYw" name="at 0.5">
-          <when xmi:id="_JOSocMXREeWwx_puHDzFYw">
-            <expr xmi:type="uml:LiteralReal" xmi:id="_JOSoccXREeWwx_puHDzFYw" value="0.5"/>
-          </when>
-        </packagedElement>
-        <packagedElement xmi:type="uml:TimeEvent" xmi:id="_LG7lEMXREeWwx_puHDzFYw" name="at 3.2">
-          <when xmi:id="_LG7lEcXREeWwx_puHDzFYw">
-            <expr xmi:type="uml:LiteralReal" xmi:id="_LG7lEsXREeWwx_puHDzFYw" value="3.2"/>
-          </when>
-        </packagedElement>
-        <packagedElement xmi:type="uml:TimeEvent" xmi:id="_LWmYwMXREeWwx_puHDzFYw" name="at 5.2">
-          <when xmi:id="_LWmYwcXREeWwx_puHDzFYw">
-            <expr xmi:type="uml:LiteralReal" xmi:id="_LWmYwsXREeWwx_puHDzFYw" value="5.2"/>
-          </when>
-        </packagedElement>
-      </packagedElement>
-      <packagedElement xmi:type="uml:Class" xmi:id="_V9MCEMaDEeWfFdnv26Efug" name="C2" classifierBehavior="_BxUJMMaEEeWfFdnv26Efug" isActive="true">
-        <ownedAttribute xmi:id="_auAFsMaDEeWfFdnv26Efug" name="abort" visibility="public">
-          <type xmi:type="uml:PrimitiveType" href="../../../plugin/org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-          <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_lTy_sMaDEeWfFdnv26Efug"/>
-        </ownedAttribute>
-        <ownedAttribute xmi:id="_wQ2jIMaDEeWfFdnv26Efug" name="Size" visibility="public">
-          <type xmi:type="uml:PrimitiveType" href="../../../plugin/org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-          <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_jRpCAJbJEeaFfs8WqHLdfw" value="100"/>
-        </ownedAttribute>
-        <ownedBehavior xmi:type="uml:Activity" xmi:id="_BxUJMMaEEeWfFdnv26Efug" name="C2 Classifier Behavior" node="_tNIeAMaEEeWfFdnv26Efug _9nmsYMaEEeWfFdnv26Efug _ITC7YMaFEeWfFdnv26Efug _KiYgwMaFEeWfFdnv26Efug _LaTnQMaFEeWfFdnv26Efug _KrKz4MaGEeWfFdnv26Efug" group="_KiYgwMaFEeWfFdnv26Efug _LaTnQMaFEeWfFdnv26Efug">
-          <ownedComment xmi:id="_NmKQQMaEEeWfFdnv26Efug">
-            <body>model C2&#xD;
-  discrete output Boolean abort(start = false, fixed = false);&#xD;
-  discrete output Real size(start = 1.0, fixed = false);&#xD;
-equation&#xD;
-  when time >= 1.9 then&#xD;
-    abort = true;&#xD;
-  end when;&#xD;
-  when time >= 6.5 then&#xD;
-    size = 0.5;&#xD;
-  end when;&#xD;
-end C2;</body>
-          </ownedComment>
-          <edge xmi:type="uml:ControlFlow" xmi:id="_MtuhgMaGEeWfFdnv26Efug" target="_tNIeAMaEEeWfFdnv26Efug" source="_ITC7YMaFEeWfFdnv26Efug"/>
-          <edge xmi:type="uml:ControlFlow" xmi:id="_NLL5kMaGEeWfFdnv26Efug" target="_KiYgwMaFEeWfFdnv26Efug" source="_tNIeAMaEEeWfFdnv26Efug"/>
-          <edge xmi:type="uml:ControlFlow" xmi:id="_NxbaMMaGEeWfFdnv26Efug" target="_9nmsYMaEEeWfFdnv26Efug" source="_KiYgwMaFEeWfFdnv26Efug"/>
-          <edge xmi:type="uml:ControlFlow" xmi:id="_OKWQgMaGEeWfFdnv26Efug" target="_LaTnQMaFEeWfFdnv26Efug" source="_9nmsYMaEEeWfFdnv26Efug"/>
-          <edge xmi:type="uml:ControlFlow" xmi:id="_Onh7wMaGEeWfFdnv26Efug" target="_KrKz4MaGEeWfFdnv26Efug" source="_LaTnQMaFEeWfFdnv26Efug"/>
-          <structuredNode xmi:id="_KiYgwMaFEeWfFdnv26Efug" name="StructuredActivityNode1" incoming="_NLL5kMaGEeWfFdnv26Efug" outgoing="_NxbaMMaGEeWfFdnv26Efug">
-            <edge xmi:type="uml:ObjectFlow" xmi:id="_0P45oMaFEeWfFdnv26Efug" target="_ZEyaQMaFEeWfFdnv26Efug" source="_Q4yCIMaFEeWfFdnv26Efug">
-              <guard xmi:type="uml:LiteralBoolean" xmi:id="_0QL0kMaFEeWfFdnv26Efug" value="true"/>
-              <weight xmi:type="uml:LiteralInteger" xmi:id="_0QL0kcaFEeWfFdnv26Efug" value="1"/>
-            </edge>
-            <edge xmi:type="uml:ObjectFlow" xmi:id="_0oCT4MaFEeWfFdnv26Efug" target="_ZE3SwMaFEeWfFdnv26Efug" source="_StuKgMaFEeWfFdnv26Efug">
-              <guard xmi:type="uml:LiteralBoolean" xmi:id="_0oVO0MaFEeWfFdnv26Efug" value="true"/>
-              <weight xmi:type="uml:LiteralInteger" xmi:id="_0oVO0caFEeWfFdnv26Efug" value="1"/>
-            </edge>
-            <node xmi:type="uml:ReadSelfAction" xmi:id="_Q4mb8MaFEeWfFdnv26Efug" name="self">
-              <result xmi:id="_Q4yCIMaFEeWfFdnv26Efug" name="result" outgoing="_0P45oMaFEeWfFdnv26Efug" type="_BxUJMMaEEeWfFdnv26Efug"/>
-            </node>
-            <node xmi:type="uml:ValueSpecificationAction" xmi:id="_StruQMaFEeWfFdnv26Efug" name="true">
-              <result xmi:id="_StuKgMaFEeWfFdnv26Efug" name="result" outgoing="_0oCT4MaFEeWfFdnv26Efug">
-                <type xmi:type="uml:PrimitiveType" href="../../../plugin/org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-                <upperBound xmi:type="uml:LiteralInteger" xmi:id="_TfgMwMaFEeWfFdnv26Efug" value="1"/>
-                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_TfflsMaFEeWfFdnv26Efug" value="1"/>
-              </result>
-              <value xmi:type="uml:LiteralBoolean" xmi:id="_TfatMMaFEeWfFdnv26Efug" value="true">
-                <type xmi:type="uml:PrimitiveType" href="../../../plugin/org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-              </value>
-            </node>
-            <node xmi:type="uml:AddStructuralFeatureValueAction" xmi:id="_ZEp3YMaFEeWfFdnv26Efug" name="set Abort" structuralFeature="_auAFsMaDEeWfFdnv26Efug" isReplaceAll="true">
-              <object xmi:id="_ZEyaQMaFEeWfFdnv26Efug" name="object" incoming="_0P45oMaFEeWfFdnv26Efug" type="_V9MCEMaDEeWfFdnv26Efug"/>
-              <result xmi:id="_ZE02gMaFEeWfFdnv26Efug" name="result" type="_V9MCEMaDEeWfFdnv26Efug"/>
-              <value xmi:id="_ZE3SwMaFEeWfFdnv26Efug" name="value" incoming="_0oCT4MaFEeWfFdnv26Efug">
-                <type xmi:type="uml:PrimitiveType" href="../../../plugin/org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-              </value>
-            </node>
-          </structuredNode>
-          <structuredNode xmi:id="_LaTnQMaFEeWfFdnv26Efug" name="StructuredActivityNode2" incoming="_OKWQgMaGEeWfFdnv26Efug" outgoing="_Onh7wMaGEeWfFdnv26Efug">
-            <edge xmi:type="uml:ObjectFlow" xmi:id="_0-K78MaFEeWfFdnv26Efug" target="_p4Y6UMaFEeWfFdnv26Efug" source="_fUT3kMaFEeWfFdnv26Efug">
-              <guard xmi:type="uml:LiteralBoolean" xmi:id="_0-dP0MaFEeWfFdnv26Efug" value="true"/>
-              <weight xmi:type="uml:LiteralInteger" xmi:id="_0-d24MaFEeWfFdnv26Efug" value="1"/>
-            </edge>
-            <edge xmi:type="uml:ObjectFlow" xmi:id="_1bLBAMaFEeWfFdnv26Efug" target="_p4gPEMaFEeWfFdnv26Efug" source="_hCQnIMaFEeWfFdnv26Efug">
-              <guard xmi:type="uml:LiteralBoolean" xmi:id="_1bfKEMaFEeWfFdnv26Efug" value="true"/>
-              <weight xmi:type="uml:LiteralInteger" xmi:id="_1bfKEcaFEeWfFdnv26Efug" value="1"/>
-            </edge>
-            <node xmi:type="uml:ReadSelfAction" xmi:id="_fUSpcMaFEeWfFdnv26Efug" name="self">
-              <result xmi:id="_fUT3kMaFEeWfFdnv26Efug" name="result" outgoing="_0-K78MaFEeWfFdnv26Efug" type="_BxUJMMaEEeWfFdnv26Efug"/>
-            </node>
-            <node xmi:type="uml:ValueSpecificationAction" xmi:id="_hCPZAMaFEeWfFdnv26Efug" name="50">
-              <result xmi:id="_hCQnIMaFEeWfFdnv26Efug" name="result" outgoing="_1bLBAMaFEeWfFdnv26Efug">
-                <type xmi:type="uml:PrimitiveType" href="../../../plugin/org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-                <upperBound xmi:type="uml:LiteralInteger" xmi:id="_BZsIYM5QEeWaRpodR1S6WA" value="1"/>
-                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_h0FFoMaFEeWfFdnv26Efug" value="1"/>
-              </result>
-              <value xmi:type="uml:LiteralInteger" xmi:id="_qNO7IJbJEeaFfs8WqHLdfw" value="50"/>
-            </node>
-            <node xmi:type="uml:AddStructuralFeatureValueAction" xmi:id="_p4VP8MaFEeWfFdnv26Efug" name="set Size" structuralFeature="_wQ2jIMaDEeWfFdnv26Efug" isReplaceAll="true">
-              <object xmi:id="_p4Y6UMaFEeWfFdnv26Efug" name="object" incoming="_0-K78MaFEeWfFdnv26Efug" type="_V9MCEMaDEeWfFdnv26Efug"/>
-              <result xmi:id="_p4avgMaFEeWfFdnv26Efug" name="result" type="_V9MCEMaDEeWfFdnv26Efug"/>
-              <value xmi:id="_p4gPEMaFEeWfFdnv26Efug" name="value" incoming="_1bLBAMaFEeWfFdnv26Efug">
-                <type xmi:type="uml:PrimitiveType" href="../../../plugin/org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-              </value>
-            </node>
-          </structuredNode>
-          <node xmi:type="uml:AcceptEventAction" xmi:id="_tNIeAMaEEeWfFdnv26Efug" name="at 1.9" incoming="_MtuhgMaGEeWfFdnv26Efug" outgoing="_NLL5kMaGEeWfFdnv26Efug">
-            <trigger xmi:id="_yG7egMaEEeWfFdnv26Efug" event="_XhppAMaEEeWfFdnv26Efug"/>
-          </node>
-          <node xmi:type="uml:AcceptEventAction" xmi:id="_9nmsYMaEEeWfFdnv26Efug" name="at 6.5" incoming="_NxbaMMaGEeWfFdnv26Efug" outgoing="_OKWQgMaGEeWfFdnv26Efug">
-            <trigger xmi:id="_9nmsYcaEEeWfFdnv26Efug" event="_iY44UMaEEeWfFdnv26Efug"/>
-          </node>
-          <node xmi:type="uml:InitialNode" xmi:id="_ITC7YMaFEeWfFdnv26Efug" outgoing="_MtuhgMaGEeWfFdnv26Efug"/>
-          <node xmi:type="uml:ActivityFinalNode" xmi:id="_KrKz4MaGEeWfFdnv26Efug" name="ActivityFinalNode1" incoming="_Onh7wMaGEeWfFdnv26Efug"/>
-        </ownedBehavior>
-        <ownedBehavior xmi:type="uml:Activity" xmi:id="_W-aHIMaGEeWfFdnv26Efug" name="C2_Factory" node="_fYeJYMaGEeWfFdnv26Efug _fYhMsMaGEeWfFdnv26Efug _fYhzwMaGEeWfFdnv26Efug _fYia0caGEeWfFdnv26Efug _fYjB4saGEeWfFdnv26Efug">
-          <ownedParameter xmi:id="_W-auMMaGEeWfFdnv26Efug" name="result" type="_V9MCEMaDEeWfFdnv26Efug" direction="return"/>
-          <edge xmi:type="uml:ObjectFlow" xmi:id="_fYhzxcaGEeWfFdnv26Efug" name="createObjectAction to callConstructor" target="_fYhzwcaGEeWfFdnv26Efug" source="_fYhMscaGEeWfFdnv26Efug">
-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_fYkQAMaGEeWfFdnv26Efug" value="true"/>
-            <weight xmi:type="uml:LiteralInteger" xmi:id="_fYk3EMaGEeWfFdnv26Efug" value="1"/>
-          </edge>
-          <edge xmi:type="uml:ObjectFlow" xmi:id="_fYia0MaGEeWfFdnv26Efug" name="callConstructor to returnParamNode" target="_fYeJYMaGEeWfFdnv26Efug" source="_fYjB4saGEeWfFdnv26Efug">
-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_fYk3EcaGEeWfFdnv26Efug" value="true"/>
-            <weight xmi:type="uml:LiteralInteger" xmi:id="_fYk3EsaGEeWfFdnv26Efug" value="1"/>
-          </edge>
-          <edge xmi:type="uml:ObjectFlow" xmi:id="_fYjo8MaGEeWfFdnv26Efug" name="fork to startbehavior input pin" target="_fYjB4MaGEeWfFdnv26Efug" source="_fYjB4saGEeWfFdnv26Efug">
-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_fYk3E8aGEeWfFdnv26Efug" value="true"/>
-            <weight xmi:type="uml:LiteralInteger" xmi:id="_fYk3FMaGEeWfFdnv26Efug" value="1"/>
-          </edge>
-          <edge xmi:type="uml:ObjectFlow" xmi:id="_fYjo8caGEeWfFdnv26Efug" name="callConstructor to startBehavior" target="_fYjB4saGEeWfFdnv26Efug" source="_fYhzw8aGEeWfFdnv26Efug">
-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_fYk3FcaGEeWfFdnv26Efug" value="true"/>
-            <weight xmi:type="uml:LiteralInteger" xmi:id="_fYk3FsaGEeWfFdnv26Efug" value="1"/>
-          </edge>
-          <node xmi:type="uml:ActivityParameterNode" xmi:id="_fYeJYMaGEeWfFdnv26Efug" name="resultParameterNode" incoming="_fYia0MaGEeWfFdnv26Efug" type="_V9MCEMaDEeWfFdnv26Efug" parameter="_W-auMMaGEeWfFdnv26Efug">
-            <upperBound xmi:type="uml:LiteralInteger" xmi:id="_fYgloMaGEeWfFdnv26Efug" value="1"/>
-          </node>
-          <node xmi:type="uml:CreateObjectAction" xmi:id="_fYhMsMaGEeWfFdnv26Efug" name="createObject" classifier="_V9MCEMaDEeWfFdnv26Efug">
-            <result xmi:id="_fYhMscaGEeWfFdnv26Efug" name="result" outgoing="_fYhzxcaGEeWfFdnv26Efug" type="_V9MCEMaDEeWfFdnv26Efug">
-              <upperBound xmi:type="uml:LiteralInteger" xmi:id="_fYhMssaGEeWfFdnv26Efug" value="1"/>
-            </result>
-          </node>
-          <node xmi:type="uml:CallOperationAction" xmi:id="_fYhzwMaGEeWfFdnv26Efug" name="callConstructor" operation="_XBWGYMaGEeWfFdnv26Efug">
-            <result xmi:id="_fYhzw8aGEeWfFdnv26Efug" name="result" outgoing="_fYjo8caGEeWfFdnv26Efug" type="_V9MCEMaDEeWfFdnv26Efug">
-              <upperBound xmi:type="uml:LiteralInteger" xmi:id="_fYhzxMaGEeWfFdnv26Efug" value="1"/>
-            </result>
-            <target xmi:id="_fYhzwcaGEeWfFdnv26Efug" name="target" incoming="_fYhzxcaGEeWfFdnv26Efug" type="_V9MCEMaDEeWfFdnv26Efug">
-              <upperBound xmi:type="uml:LiteralInteger" xmi:id="_fYhzwsaGEeWfFdnv26Efug" value="1"/>
-            </target>
-          </node>
-          <node xmi:type="uml:StartObjectBehaviorAction" xmi:id="_fYia0caGEeWfFdnv26Efug" name="start classifier behavior">
-            <object xmi:id="_fYjB4MaGEeWfFdnv26Efug" name="object" incoming="_fYjo8MaGEeWfFdnv26Efug" type="_V9MCEMaDEeWfFdnv26Efug">
-              <upperBound xmi:type="uml:LiteralInteger" xmi:id="_fYjB4caGEeWfFdnv26Efug" value="1"/>
-            </object>
-          </node>
-          <node xmi:type="uml:ForkNode" xmi:id="_fYjB4saGEeWfFdnv26Efug" name="forkInstanciatedObject" incoming="_fYjo8caGEeWfFdnv26Efug" outgoing="_fYia0MaGEeWfFdnv26Efug _fYjo8MaGEeWfFdnv26Efug"/>
-        </ownedBehavior>
-        <ownedOperation xmi:id="_XBWGYMaGEeWfFdnv26Efug" name="C2">
-          <ownedParameter xmi:id="_XBbl8MaGEeWfFdnv26Efug" name="return" type="_V9MCEMaDEeWfFdnv26Efug" direction="return"/>
-        </ownedOperation>
-      </packagedElement>
-      <packagedElement xmi:type="uml:Package" xmi:id="_TI9xgMaEEeWfFdnv26Efug" name="Events C2">
-        <packagedElement xmi:type="uml:TimeEvent" xmi:id="_XhppAMaEEeWfFdnv26Efug" name="at 1.9">
-          <when xmi:id="_XhppAcaEEeWfFdnv26Efug">
-            <expr xmi:type="uml:LiteralReal" xmi:id="_XhppAsaEEeWfFdnv26Efug" value="1.9"/>
-          </when>
-        </packagedElement>
-        <packagedElement xmi:type="uml:TimeEvent" xmi:id="_iY44UMaEEeWfFdnv26Efug" name="at 6.5">
-          <when xmi:id="_iY44UcaEEeWfFdnv26Efug">
-            <expr xmi:type="uml:LiteralReal" xmi:id="_iY44UsaEEeWfFdnv26Efug" value="6.5"/>
-          </when>
-        </packagedElement>
-      </packagedElement>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Package" xmi:id="_-JGxEOxOEeWP6eN_6Zcgmw" name="Basic">
-      <packagedElement xmi:type="uml:Class" xmi:id="_aKy6MOxPEeWP6eN_6Zcgmw" name="A" classifierBehavior="_MczfMOxaEeWP6eN_6Zcgmw" isActive="true">
-        <ownedAttribute xmi:id="_eG3HIOxPEeWP6eN_6Zcgmw" name="x">
-          <type xmi:type="uml:PrimitiveType" href="../../../plugin/org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-          <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_hf1_sOxQEeWP6eN_6Zcgmw" value="1"/>
-        </ownedAttribute>
-        <ownedAttribute xmi:id="_fPzFIOxPEeWP6eN_6Zcgmw" name="y">
-          <type xmi:type="uml:PrimitiveType" href="../../../plugin/org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-          <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_PBPyUCQHEeaCtZpD0ATfCw"/>
-        </ownedAttribute>
-        <ownedBehavior xmi:type="uml:Activity" xmi:id="_1TmzMOxSEeWP6eN_6Zcgmw" name="compare_impl" specification="_QQv2cOxQEeWP6eN_6Zcgmw" node="_TuqAYOxTEeWP6eN_6Zcgmw _b7NLEOxTEeWP6eN_6Zcgmw _soiEAOxTEeWP6eN_6Zcgmw _BFmlIOxUEeWP6eN_6Zcgmw">
-          <ownedParameter xmi:id="_LNhs0OxTEeWP6eN_6Zcgmw" name="v">
-            <type xmi:type="uml:PrimitiveType" href="../../../plugin/org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-          </ownedParameter>
-          <ownedParameter xmi:id="_LxQE8OxTEeWP6eN_6Zcgmw" name="result" direction="return">
-            <type xmi:type="uml:PrimitiveType" href="../../../plugin/org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-          </ownedParameter>
-          <edge xmi:type="uml:ObjectFlow" xmi:id="_KrzDUOxUEeWP6eN_6Zcgmw" target="_b7v9oOxTEeWP6eN_6Zcgmw" source="_TuqAYOxTEeWP6eN_6Zcgmw">
-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_Kr-pgOxUEeWP6eN_6Zcgmw" value="true"/>
-            <weight xmi:type="uml:LiteralInteger" xmi:id="_Kr-pgexUEeWP6eN_6Zcgmw" value="1"/>
-          </edge>
-          <edge xmi:type="uml:ObjectFlow" xmi:id="_LOWWwOxUEeWP6eN_6Zcgmw" target="_b77j0OxTEeWP6eN_6Zcgmw" source="_sojSIOxTEeWP6eN_6Zcgmw">
-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_LOgu0OxUEeWP6eN_6Zcgmw" value="true"/>
-            <weight xmi:type="uml:LiteralInteger" xmi:id="_LOhV4OxUEeWP6eN_6Zcgmw" value="1"/>
-          </edge>
-          <edge xmi:type="uml:ObjectFlow" xmi:id="_LlhgoOxUEeWP6eN_6Zcgmw" target="_BFmlIOxUEeWP6eN_6Zcgmw" source="_b7-nIOxTEeWP6eN_6Zcgmw">
-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_LluU8OxUEeWP6eN_6Zcgmw" value="true"/>
-            <weight xmi:type="uml:LiteralInteger" xmi:id="_LluU8exUEeWP6eN_6Zcgmw" value="1"/>
-          </edge>
-          <node xmi:type="uml:ActivityParameterNode" xmi:id="_TuqAYOxTEeWP6eN_6Zcgmw" name="v" outgoing="_KrzDUOxUEeWP6eN_6Zcgmw" parameter="_LNhs0OxTEeWP6eN_6Zcgmw">
-            <upperBound xmi:type="uml:LiteralInteger" xmi:id="_TuuR0OxTEeWP6eN_6Zcgmw" value="1"/>
-          </node>
-          <node xmi:type="uml:CallBehaviorAction" xmi:id="_b7NLEOxTEeWP6eN_6Zcgmw" name=">">
-            <argument xmi:id="_b7v9oOxTEeWP6eN_6Zcgmw" name="x" incoming="_KrzDUOxUEeWP6eN_6Zcgmw">
-              <type xmi:type="uml:PrimitiveType" href="../../../plugin/org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_b72rUOxTEeWP6eN_6Zcgmw" value="1"/>
-              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_b71dMOxTEeWP6eN_6Zcgmw" value="1"/>
-            </argument>
-            <argument xmi:id="_b77j0OxTEeWP6eN_6Zcgmw" name="y" incoming="_LOWWwOxUEeWP6eN_6Zcgmw">
-              <type xmi:type="uml:PrimitiveType" href="../../../plugin/org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_b7-AEexTEeWP6eN_6Zcgmw" value="1"/>
-              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_b7-AEOxTEeWP6eN_6Zcgmw" value="1"/>
-            </argument>
-            <result xmi:id="_b7-nIOxTEeWP6eN_6Zcgmw" name="result" outgoing="_LlhgoOxUEeWP6eN_6Zcgmw">
-              <type xmi:type="uml:PrimitiveType" href="../../../plugin/org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_b8AcUexTEeWP6eN_6Zcgmw" value="1"/>
-              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_b8AcUOxTEeWP6eN_6Zcgmw" value="1"/>
-            </result>
-            <behavior xmi:type="uml:FunctionBehavior" href="../../../plugin/org.eclipse.papyrus.moka.fuml.standardlibrary/resources/fUML_Library.uml#PrimitiveBehaviors-IntegerFunctions-gt"/>
-          </node>
-          <node xmi:type="uml:ValueSpecificationAction" xmi:id="_soiEAOxTEeWP6eN_6Zcgmw" name="2">
-            <result xmi:id="_sojSIOxTEeWP6eN_6Zcgmw" name="result" outgoing="_LOWWwOxUEeWP6eN_6Zcgmw"/>
-            <value xmi:type="uml:LiteralInteger" xmi:id="_2OppsOxTEeWP6eN_6Zcgmw" value="2"/>
-          </node>
-          <node xmi:type="uml:ActivityParameterNode" xmi:id="_BFmlIOxUEeWP6eN_6Zcgmw" name="result" incoming="_LlhgoOxUEeWP6eN_6Zcgmw" parameter="_LxQE8OxTEeWP6eN_6Zcgmw">
-            <upperBound xmi:type="uml:LiteralInteger" xmi:id="_BFoaUOxUEeWP6eN_6Zcgmw" value="1"/>
-          </node>
-        </ownedBehavior>
-        <ownedBehavior xmi:type="uml:Activity" xmi:id="_MczfMOxaEeWP6eN_6Zcgmw" name="Classifier Behavior" node="_15a8YOxaEeWP6eN_6Zcgmw _5ydqgOxaEeWP6eN_6Zcgmw _9mYoEOxaEeWP6eN_6Zcgmw _Mrov8OxbEeWP6eN_6Zcgmw _wBEMcOxbEeWP6eN_6Zcgmw _maTQEOxnEeWP6eN_6Zcgmw _yyR5YOxnEeWP6eN_6Zcgmw _2fvCkOxnEeWP6eN_6Zcgmw _LGz0QOxoEeWP6eN_6Zcgmw">
-          <ownedComment xmi:id="_HTpXkOxbEeWP6eN_6Zcgmw" annotatedElement="_9mYoEOxaEeWP6eN_6Zcgmw">
-            <body>ReadStructuralFeatureValueAction&#xD;
-Lecture de la valeur d'entrée x</body>
-          </ownedComment>
-          <ownedComment xmi:id="_ZsnS8OxbEeWP6eN_6Zcgmw" annotatedElement="_Mrov8OxbEeWP6eN_6Zcgmw">
-            <body>CallOperationAction&#xD;
-Appel à l'opération compare</body>
-          </ownedComment>
-          <ownedComment xmi:id="_IT1z0OxcEeWP6eN_6Zcgmw" annotatedElement="_wBEMcOxbEeWP6eN_6Zcgmw">
-            <body>AddStructuralFeatureValueAction&#xD;
-Ecriture du résultat sur la sortie y</body>
-          </ownedComment>
-          <edge xmi:type="uml:ObjectFlow" xmi:id="_dTqSIOxbEeWP6eN_6Zcgmw" target="_9mjnMOxaEeWP6eN_6Zcgmw" source="_5ydqgOxaEeWP6eN_6Zcgmw">
-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_dT2fYOxbEeWP6eN_6Zcgmw" value="true"/>
-            <weight xmi:type="uml:LiteralInteger" xmi:id="_dT2fYexbEeWP6eN_6Zcgmw" value="1"/>
-          </edge>
-          <edge xmi:type="uml:ObjectFlow" xmi:id="_eznpAOxbEeWP6eN_6Zcgmw" target="_Mr_VQOxbEeWP6eN_6Zcgmw" source="_9mk1UOxaEeWP6eN_6Zcgmw">
-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_ez3goOxbEeWP6eN_6Zcgmw" value="true"/>
-            <weight xmi:type="uml:LiteralInteger" xmi:id="_ez3goexbEeWP6eN_6Zcgmw" value="1"/>
-          </edge>
-          <edge xmi:type="uml:ObjectFlow" xmi:id="_innfEOxbEeWP6eN_6Zcgmw" target="_Mr9gEOxbEeWP6eN_6Zcgmw" source="_5ydqgOxaEeWP6eN_6Zcgmw">
-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_in0TYOxbEeWP6eN_6Zcgmw" value="true"/>
-            <weight xmi:type="uml:LiteralInteger" xmi:id="_in0TYexbEeWP6eN_6Zcgmw" value="1"/>
-          </edge>
-          <edge xmi:type="uml:ObjectFlow" xmi:id="_lzQ7sOxbEeWP6eN_6Zcgmw" target="_5ydqgOxaEeWP6eN_6Zcgmw" source="_15d_sOxaEeWP6eN_6Zcgmw">
-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_lzlEwOxbEeWP6eN_6Zcgmw" value="true"/>
-            <weight xmi:type="uml:LiteralInteger" xmi:id="_lzlEwexbEeWP6eN_6Zcgmw" value="1"/>
-          </edge>
-          <edge xmi:type="uml:ObjectFlow" xmi:id="_7O4IsOxbEeWP6eN_6Zcgmw" target="_wBHPwOxbEeWP6eN_6Zcgmw" source="_5ydqgOxaEeWP6eN_6Zcgmw">
-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_7PMRwOxbEeWP6eN_6Zcgmw" value="true"/>
-            <weight xmi:type="uml:LiteralInteger" xmi:id="_7PMRwexbEeWP6eN_6Zcgmw" value="1"/>
-          </edge>
-          <edge xmi:type="uml:ObjectFlow" xmi:id="_8vTZoOxbEeWP6eN_6Zcgmw" target="_wBJE8OxbEeWP6eN_6Zcgmw" source="_MsDmsOxbEeWP6eN_6Zcgmw">
-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_8vltgOxbEeWP6eN_6Zcgmw" value="true"/>
-            <weight xmi:type="uml:LiteralInteger" xmi:id="_8vltgexbEeWP6eN_6Zcgmw" value="1"/>
-          </edge>
-          <edge xmi:type="uml:ControlFlow" xmi:id="_pBriAOxnEeWP6eN_6Zcgmw" target="_15a8YOxaEeWP6eN_6Zcgmw" source="_maTQEOxnEeWP6eN_6Zcgmw"/>
-          <edge xmi:type="uml:ControlFlow" xmi:id="_06MoIOxnEeWP6eN_6Zcgmw" target="_maTQEOxnEeWP6eN_6Zcgmw" source="_yyR5YOxnEeWP6eN_6Zcgmw"/>
-          <edge xmi:type="uml:ControlFlow" xmi:id="__m4NQOxnEeWP6eN_6Zcgmw" target="_2fvCkOxnEeWP6eN_6Zcgmw" source="_maTQEOxnEeWP6eN_6Zcgmw"/>
-          <edge xmi:type="uml:ControlFlow" xmi:id="_C_egwOxoEeWP6eN_6Zcgmw" target="_wBEMcOxbEeWP6eN_6Zcgmw" source="_2fvCkOxnEeWP6eN_6Zcgmw"/>
-          <edge xmi:type="uml:ControlFlow" xmi:id="_OKK3kOxoEeWP6eN_6Zcgmw" target="_LGz0QOxoEeWP6eN_6Zcgmw" source="_wBEMcOxbEeWP6eN_6Zcgmw"/>
-          <node xmi:type="uml:ReadSelfAction" xmi:id="_15a8YOxaEeWP6eN_6Zcgmw" name="self" incoming="_pBriAOxnEeWP6eN_6Zcgmw">
-            <result xmi:id="_15d_sOxaEeWP6eN_6Zcgmw" name="result" outgoing="_lzQ7sOxbEeWP6eN_6Zcgmw" type="_MczfMOxaEeWP6eN_6Zcgmw"/>
-          </node>
-          <node xmi:type="uml:ForkNode" xmi:id="_5ydqgOxaEeWP6eN_6Zcgmw" name="ForkNode1" incoming="_lzQ7sOxbEeWP6eN_6Zcgmw" outgoing="_dTqSIOxbEeWP6eN_6Zcgmw _innfEOxbEeWP6eN_6Zcgmw _7O4IsOxbEeWP6eN_6Zcgmw"/>
-          <node xmi:type="uml:ReadStructuralFeatureAction" xmi:id="_9mYoEOxaEeWP6eN_6Zcgmw" name="read x" structuralFeature="_eG3HIOxPEeWP6eN_6Zcgmw">
-            <object xmi:id="_9mjnMOxaEeWP6eN_6Zcgmw" name="object" incoming="_dTqSIOxbEeWP6eN_6Zcgmw" type="_aKy6MOxPEeWP6eN_6Zcgmw"/>
-            <result xmi:id="_9mk1UOxaEeWP6eN_6Zcgmw" name="x" outgoing="_eznpAOxbEeWP6eN_6Zcgmw">
-              <type xmi:type="uml:PrimitiveType" href="../../../plugin/org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9mnRkexaEeWP6eN_6Zcgmw" value="1"/>
-              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9mnRkOxaEeWP6eN_6Zcgmw" value="1"/>
-            </result>
-          </node>
-          <node xmi:type="uml:CallOperationAction" xmi:id="_Mrov8OxbEeWP6eN_6Zcgmw" name="call compare" operation="_QQv2cOxQEeWP6eN_6Zcgmw">
-            <argument xmi:id="_Mr_VQOxbEeWP6eN_6Zcgmw" name="v" incoming="_eznpAOxbEeWP6eN_6Zcgmw">
-              <type xmi:type="uml:PrimitiveType" href="../../../plugin/org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MsBxgOxbEeWP6eN_6Zcgmw" value="1"/>
-              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MsBKcOxbEeWP6eN_6Zcgmw" value="1"/>
-            </argument>
-            <result xmi:id="_MsDmsOxbEeWP6eN_6Zcgmw" name="result" outgoing="_8vTZoOxbEeWP6eN_6Zcgmw">
-              <type xmi:type="uml:PrimitiveType" href="../../../plugin/org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MsGC8exbEeWP6eN_6Zcgmw" value="1"/>
-              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MsGC8OxbEeWP6eN_6Zcgmw" value="1"/>
-            </result>
-            <target xmi:id="_Mr9gEOxbEeWP6eN_6Zcgmw" name="target" incoming="_innfEOxbEeWP6eN_6Zcgmw" type="_aKy6MOxPEeWP6eN_6Zcgmw"/>
-          </node>
-          <node xmi:type="uml:AddStructuralFeatureValueAction" xmi:id="_wBEMcOxbEeWP6eN_6Zcgmw" name="setY" incoming="_C_egwOxoEeWP6eN_6Zcgmw" outgoing="_OKK3kOxoEeWP6eN_6Zcgmw" structuralFeature="_fPzFIOxPEeWP6eN_6Zcgmw" isReplaceAll="true">
-            <object xmi:id="_wBHPwOxbEeWP6eN_6Zcgmw" name="object" incoming="_7O4IsOxbEeWP6eN_6Zcgmw" type="_aKy6MOxPEeWP6eN_6Zcgmw"/>
-            <result xmi:id="_wBH20OxbEeWP6eN_6Zcgmw" name="result" type="_aKy6MOxPEeWP6eN_6Zcgmw"/>
-            <value xmi:id="_wBJE8OxbEeWP6eN_6Zcgmw" name="value" incoming="_8vTZoOxbEeWP6eN_6Zcgmw">
-              <type xmi:type="uml:PrimitiveType" href="../../../plugin/org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-            </value>
-          </node>
-          <node xmi:type="uml:AcceptEventAction" xmi:id="_maTQEOxnEeWP6eN_6Zcgmw" name="Change on x" incoming="_06MoIOxnEeWP6eN_6Zcgmw" outgoing="_pBriAOxnEeWP6eN_6Zcgmw __m4NQOxnEeWP6eN_6Zcgmw">
-            <trigger xmi:id="_uNCzoOxnEeWP6eN_6Zcgmw" event="_ZAf9YOxnEeWP6eN_6Zcgmw"/>
-          </node>
-          <node xmi:type="uml:InitialNode" xmi:id="_yyR5YOxnEeWP6eN_6Zcgmw" name="InitialNode1" outgoing="_06MoIOxnEeWP6eN_6Zcgmw"/>
-          <node xmi:type="uml:AcceptEventAction" xmi:id="_2fvCkOxnEeWP6eN_6Zcgmw" name="After 0.5" incoming="__m4NQOxnEeWP6eN_6Zcgmw" outgoing="_C_egwOxoEeWP6eN_6Zcgmw">
-            <trigger xmi:id="_6t328OxnEeWP6eN_6Zcgmw" event="_e07aIOxnEeWP6eN_6Zcgmw"/>
-          </node>
-          <node xmi:type="uml:ActivityFinalNode" xmi:id="_LGz0QOxoEeWP6eN_6Zcgmw" name="ActivityFinalNode1" incoming="_OKK3kOxoEeWP6eN_6Zcgmw"/>
-        </ownedBehavior>
-        <ownedOperation xmi:id="_QQv2cOxQEeWP6eN_6Zcgmw" name="compare" method="_1TmzMOxSEeWP6eN_6Zcgmw">
-          <ownedParameter xmi:id="_TS_fcOxQEeWP6eN_6Zcgmw" name="v">
-            <type xmi:type="uml:PrimitiveType" href="../../../plugin/org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-          </ownedParameter>
-          <ownedParameter xmi:id="_cnRuQOxQEeWP6eN_6Zcgmw" name="result" direction="return">
-            <type xmi:type="uml:PrimitiveType" href="../../../plugin/org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-          </ownedParameter>
-        </ownedOperation>
-      </packagedElement>
-      <packagedElement xmi:type="uml:Package" xmi:id="_XF7HEOxnEeWP6eN_6Zcgmw" name="Events">
-        <packagedElement xmi:type="uml:ChangeEvent" xmi:id="_ZAf9YOxnEeWP6eN_6Zcgmw" name="Change on x">
-          <changeExpression xmi:type="uml:LiteralString" xmi:id="_bv_pgOxnEeWP6eN_6Zcgmw" name="x" value="x"/>
-        </packagedElement>
-        <packagedElement xmi:type="uml:TimeEvent" xmi:id="_e07aIOxnEeWP6eN_6Zcgmw" name="After 0.5" isRelative="true">
-          <when xmi:id="_iZoP8OxnEeWP6eN_6Zcgmw">
-            <expr xmi:type="uml:LiteralReal" xmi:id="_iZoP8exnEeWP6eN_6Zcgmw" value="0.5"/>
-          </when>
-        </packagedElement>
-      </packagedElement>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Package" xmi:id="_ZoWm0CZrEeaNDtUa3wAGMw" name="Change events">
-      <packagedElement xmi:type="uml:Package" xmi:id="_FSdyICZzEeaNDtUa3wAGMw" name="Example 1">
-        <packagedElement xmi:type="uml:Class" xmi:id="_JlBzgCZzEeaNDtUa3wAGMw" name="A" classifierBehavior="_JlBzoiZzEeaNDtUa3wAGMw" isActive="true">
-          <ownedAttribute xmi:id="_JlBzgSZzEeaNDtUa3wAGMw" name="inBoolean">
-            <type xmi:type="uml:PrimitiveType" href="../../../plugin/org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-            <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_POvYkCZ0Eea_2cPCpxkxZw"/>
-          </ownedAttribute>
-          <ownedAttribute xmi:id="_u1kR0CZzEeaNDtUa3wAGMw" name="inInteger">
-            <type xmi:type="uml:PrimitiveType" href="../../../plugin/org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-            <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_2SHi8CZzEeaNDtUa3wAGMw"/>
-          </ownedAttribute>
-          <ownedAttribute xmi:id="_vKYEMCZzEeaNDtUa3wAGMw" name="inReal">
-            <type xmi:type="uml:PrimitiveType" href="../../../plugin/org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Real"/>
-            <defaultValue xmi:type="uml:LiteralReal" xmi:id="_-YlTwCZzEeaNDtUa3wAGMw"/>
-          </ownedAttribute>
-          <ownedAttribute xmi:id="_vdnJQCZzEeaNDtUa3wAGMw" name="inString">
-            <type xmi:type="uml:PrimitiveType" href="../../../plugin/org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#String"/>
-            <defaultValue xmi:type="uml:LiteralString" xmi:id="_Ma1GgCZ0Eea_2cPCpxkxZw" value=""/>
-          </ownedAttribute>
-          <ownedAttribute xmi:id="_JlBzgyZzEeaNDtUa3wAGMw" name="outBoolean">
-            <type xmi:type="uml:PrimitiveType" href="../../../plugin/org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-            <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_JlBzhCZzEeaNDtUa3wAGMw"/>
-          </ownedAttribute>
-          <ownedBehavior xmi:type="uml:Activity" xmi:id="_JlBzoiZzEeaNDtUa3wAGMw" name="Classifier Behavior" node="_JlBzvSZzEeaNDtUa3wAGMw _JlBzvyZzEeaNDtUa3wAGMw _JlBzwCZzEeaNDtUa3wAGMw _JlBzzSZzEeaNDtUa3wAGMw _JlBz0SZzEeaNDtUa3wAGMw _UabZUCZ_Eea7EYxrzn_7lA _22aU0CcNEeaoMtQifi-PpA _9Ryc0CcNEeaoMtQifi-PpA _fbJu0CcOEeaoMtQifi-PpA">
-            <ownedComment xmi:id="_JlBzoyZzEeaNDtUa3wAGMw" annotatedElement="_JlBzwCZzEeaNDtUa3wAGMw">
-              <body>ReadStructuralFeatureValueAction&#xD;
-Reading input value on inBoolean</body>
-            </ownedComment>
-            <ownedComment xmi:id="_JlBzpSZzEeaNDtUa3wAGMw" annotatedElement="_JlBzzSZzEeaNDtUa3wAGMw">
-              <body>AddStructuralFeatureValueAction&#xD;
-Writing output value on outBoolean</body>
-            </ownedComment>
-            <edge xmi:type="uml:ObjectFlow" xmi:id="_JlBzpiZzEeaNDtUa3wAGMw" target="_JlBzwSZzEeaNDtUa3wAGMw" source="_JlBzvyZzEeaNDtUa3wAGMw">
-              <guard xmi:type="uml:LiteralBoolean" xmi:id="_JlBzpyZzEeaNDtUa3wAGMw" value="true"/>
-              <weight xmi:type="uml:LiteralInteger" xmi:id="_JlBzqCZzEeaNDtUa3wAGMw" value="1"/>
-            </edge>
-            <edge xmi:type="uml:ObjectFlow" xmi:id="_JlBzryZzEeaNDtUa3wAGMw" target="_JlBzvyZzEeaNDtUa3wAGMw" source="_JlBzviZzEeaNDtUa3wAGMw">
-              <guard xmi:type="uml:LiteralBoolean" xmi:id="_JlBzsCZzEeaNDtUa3wAGMw" value="true"/>
-              <weight xmi:type="uml:LiteralInteger" xmi:id="_JlBzsSZzEeaNDtUa3wAGMw" value="1"/>
-            </edge>
-            <edge xmi:type="uml:ObjectFlow" xmi:id="_4D3_ACZ0Eea_2cPCpxkxZw" target="_JlBzziZzEeaNDtUa3wAGMw" source="_JlBzvyZzEeaNDtUa3wAGMw">
-              <guard xmi:type="uml:LiteralBoolean" xmi:id="_4Ej7gCZ0Eea_2cPCpxkxZw" value="true"/>
-              <weight xmi:type="uml:LiteralInteger" xmi:id="_4EkikCZ0Eea_2cPCpxkxZw" value="1"/>
-            </edge>
-            <edge xmi:type="uml:ObjectFlow" xmi:id="_5_BdECZ0Eea_2cPCpxkxZw" target="_JlBz0CZzEeaNDtUa3wAGMw" source="_JlBzwiZzEeaNDtUa3wAGMw">
-              <guard xmi:type="uml:LiteralBoolean" xmi:id="_5_jBgCZ0Eea_2cPCpxkxZw" value="true"/>
-              <weight xmi:type="uml:LiteralInteger" xmi:id="_5_jokCZ0Eea_2cPCpxkxZw" value="1"/>
-            </edge>
-            <edge xmi:type="uml:ControlFlow" xmi:id="_KGrWgCcMEeaoMtQifi-PpA" target="_9Ryc0CcNEeaoMtQifi-PpA" source="_UabZUCZ_Eea7EYxrzn_7lA"/>
-            <edge xmi:type="uml:ControlFlow" xmi:id="_K8VzMCcMEeaoMtQifi-PpA" target="_9Ryc0CcNEeaoMtQifi-PpA" source="_JlBz0SZzEeaNDtUa3wAGMw"/>
-            <edge xmi:type="uml:ControlFlow" xmi:id="_L-1yACcMEeaoMtQifi-PpA" target="_JlBzvSZzEeaNDtUa3wAGMw" source="_9Ryc0CcNEeaoMtQifi-PpA"/>
-            <edge xmi:type="uml:ControlFlow" xmi:id="_C9O8sCcOEeaoMtQifi-PpA" target="_9Ryc0CcNEeaoMtQifi-PpA" source="_22aU0CcNEeaoMtQifi-PpA"/>
-            <edge xmi:type="uml:ControlFlow" xmi:id="_ljipYCcOEeaoMtQifi-PpA" target="_9Ryc0CcNEeaoMtQifi-PpA" source="_fbJu0CcOEeaoMtQifi-PpA"/>
-            <node xmi:type="uml:ReadSelfAction" xmi:id="_JlBzvSZzEeaNDtUa3wAGMw" name="self" incoming="_L-1yACcMEeaoMtQifi-PpA">
-              <result xmi:id="_JlBzviZzEeaNDtUa3wAGMw" name="result" outgoing="_JlBzryZzEeaNDtUa3wAGMw" type="_JlBzoiZzEeaNDtUa3wAGMw"/>
-            </node>
-            <node xmi:type="uml:ForkNode" xmi:id="_JlBzvyZzEeaNDtUa3wAGMw" name="ForkNode1" incoming="_JlBzryZzEeaNDtUa3wAGMw" outgoing="_JlBzpiZzEeaNDtUa3wAGMw _4D3_ACZ0Eea_2cPCpxkxZw"/>
-            <node xmi:type="uml:ReadStructuralFeatureAction" xmi:id="_JlBzwCZzEeaNDtUa3wAGMw" name="read inBoolean" structuralFeature="_JlBzgSZzEeaNDtUa3wAGMw">
-              <object xmi:id="_JlBzwSZzEeaNDtUa3wAGMw" name="object" incoming="_JlBzpiZzEeaNDtUa3wAGMw" type="_JlBzgCZzEeaNDtUa3wAGMw"/>
-              <result xmi:id="_JlBzwiZzEeaNDtUa3wAGMw" name="x" outgoing="_5_BdECZ0Eea_2cPCpxkxZw">
-                <type xmi:type="uml:PrimitiveType" href="../../../plugin/org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Integer"/>
-                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JlBzwyZzEeaNDtUa3wAGMw" value="1"/>
-                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JlBzxCZzEeaNDtUa3wAGMw" value="1"/>
-              </result>
-            </node>
-            <node xmi:type="uml:AddStructuralFeatureValueAction" xmi:id="_JlBzzSZzEeaNDtUa3wAGMw" name="set outBoolean" structuralFeature="_JlBzgyZzEeaNDtUa3wAGMw" isReplaceAll="true">
-              <object xmi:id="_JlBzziZzEeaNDtUa3wAGMw" name="object" incoming="_4D3_ACZ0Eea_2cPCpxkxZw" type="_JlBzgCZzEeaNDtUa3wAGMw"/>
-              <result xmi:id="_JlBzzyZzEeaNDtUa3wAGMw" name="result" type="_JlBzgCZzEeaNDtUa3wAGMw"/>
-              <value xmi:id="_JlBz0CZzEeaNDtUa3wAGMw" name="value" incoming="_5_BdECZ0Eea_2cPCpxkxZw">
-                <type xmi:type="uml:PrimitiveType" href="../../../plugin/org.eclipse.uml2.uml.resources/libraries/UMLPrimitiveTypes.library.uml#Boolean"/>
-              </value>
-            </node>
-            <node xmi:type="uml:AcceptEventAction" xmi:id="_JlBz0SZzEeaNDtUa3wAGMw" name="Change on inBoolean" outgoing="_K8VzMCcMEeaoMtQifi-PpA">
-              <trigger xmi:id="_JlBz0iZzEeaNDtUa3wAGMw" event="_jtOEYCZzEeaNDtUa3wAGMw"/>
-            </node>
-            <node xmi:type="uml:AcceptEventAction" xmi:id="_UabZUCZ_Eea7EYxrzn_7lA" name="Change on inReal" outgoing="_KGrWgCcMEeaoMtQifi-PpA">
-              <result xmi:id="_IWb9YCcLEeaoMtQifi-PpA" name="result">
-                <upperBound xmi:type="uml:LiteralInteger" xmi:id="_IWp_0CcLEeaoMtQifi-PpA" value="1"/>
-              </result>
-              <trigger xmi:id="_UabZUSZ_Eea7EYxrzn_7lA" event="_Dt-qICZ_Eea7EYxrzn_7lA"/>
-            </node>
-            <node xmi:type="uml:AcceptEventAction" xmi:id="_22aU0CcNEeaoMtQifi-PpA" name="Change on inInteger" outgoing="_C9O8sCcOEeaoMtQifi-PpA">
-              <result xmi:id="_22aU0ScNEeaoMtQifi-PpA" name="result">
-                <upperBound xmi:type="uml:LiteralInteger" xmi:id="_22aU0icNEeaoMtQifi-PpA" value="1"/>
-              </result>
-              <trigger xmi:id="_22aU0ycNEeaoMtQifi-PpA" event="_iH1M8CcNEeaoMtQifi-PpA"/>
-            </node>
-            <node xmi:type="uml:MergeNode" xmi:id="_9Ryc0CcNEeaoMtQifi-PpA" name="MergeNode1" incoming="_KGrWgCcMEeaoMtQifi-PpA _K8VzMCcMEeaoMtQifi-PpA _C9O8sCcOEeaoMtQifi-PpA _ljipYCcOEeaoMtQifi-PpA" outgoing="_L-1yACcMEeaoMtQifi-PpA"/>
-            <node xmi:type="uml:AcceptEventAction" xmi:id="_fbJu0CcOEeaoMtQifi-PpA" name="Change on inString" outgoing="_ljipYCcOEeaoMtQifi-PpA">
-              <result xmi:id="_fbJu0ScOEeaoMtQifi-PpA" name="result">
-                <upperBound xmi:type="uml:LiteralInteger" xmi:id="_fbJu0icOEeaoMtQifi-PpA" value="1"/>
-              </result>
-              <trigger xmi:id="_fbJu0ycOEeaoMtQifi-PpA" event="_Y0vbgCcOEeaoMtQifi-PpA"/>
-            </node>
-          </ownedBehavior>
-        </packagedElement>
-        <packagedElement xmi:type="uml:Package" xmi:id="_L51HsCZzEeaNDtUa3wAGMw" name="Events">
-          <packagedElement xmi:type="uml:ChangeEvent" xmi:id="_jtOEYCZzEeaNDtUa3wAGMw" name="Change on inBoolean">
-            <changeExpression xmi:type="uml:LiteralString" xmi:id="_jtOEYSZzEeaNDtUa3wAGMw" name="inBoolean" value="inBoolean"/>
-          </packagedElement>
-          <packagedElement xmi:type="uml:ChangeEvent" xmi:id="_Dt-qICZ_Eea7EYxrzn_7lA" name="Change on inReal">
-            <changeExpression xmi:type="uml:LiteralString" xmi:id="_Dt_RMCZ_Eea7EYxrzn_7lA" name="inReal" value="inReal"/>
-          </packagedElement>
-          <packagedElement xmi:type="uml:ChangeEvent" xmi:id="_iH1M8CcNEeaoMtQifi-PpA" name="Change on inInteger">
-            <changeExpression xmi:type="uml:LiteralString" xmi:id="_iH1M8ScNEeaoMtQifi-PpA" name="inInteger" value="inInteger"/>
-          </packagedElement>
-          <packagedElement xmi:type="uml:ChangeEvent" xmi:id="_Y0vbgCcOEeaoMtQifi-PpA" name="Change on inString">
-            <changeExpression xmi:type="uml:LiteralString" xmi:id="_Y0vbgScOEeaoMtQifi-PpA" name="inString" value="inString"/>
-          </packagedElement>
-        </packagedElement>
-      </packagedElement>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Package" xmi:id="_VS2YMCl2Eeaq4LUBd_Y9sA" name="Events"/>
-    <profileApplication xmi:id="_CmL5wMXWEeWwx_puHDzFYw">
-      <eAnnotations xmi:id="_CmQLMMXWEeWwx_puHDzFYw" source="http://www.eclipse.org/uml2/2.0.0/UML">
-        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/uml2/5.0.0/UML/Profile/Standard#/"/>
-      </eAnnotations>
-      <appliedProfile href="../../../plugin/org.eclipse.uml2.uml.resources/profiles/Standard.profile.uml#_0"/>
-    </profileApplication>
-    <profileApplication xmi:id="_W_MKQMaGEeWfFdnv26Efug">
-      <eAnnotations xmi:id="_W_OmgMaGEeWfFdnv26Efug" source="http://www.eclipse.org/uml2/2.0.0/UML">
-        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/uml2/5.0.0/UML/Profile/Standard#/"/>
-      </eAnnotations>
-      <appliedProfile href="../../../plugin/org.eclipse.uml2.uml.resources/profiles/Standard.profile.uml#_0"/>
-    </profileApplication>
-    <profileApplication xmi:id="_LvJdwBwXEea0GMhvQ4xFnA"/>
-    <profileApplication xmi:id="_cbF5cCMkEea2OavBPNFsjQ"/>
-    <profileApplication xmi:id="_UhSFsCZzEeaNDtUa3wAGMw">
-      <eAnnotations xmi:id="_UhVJACZzEeaNDtUa3wAGMw" source="http://www.eclipse.org/uml2/2.0.0/UML">
-        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/FMIProfile/1.0.0#/"/>
-      </eAnnotations>
-      <appliedProfile href="../../../plugin/org.eclipse.papyrus.moka.fmi.profile/model/FMI.profile.uml#__Ki3oKvFEeSXqKqlHzx1gA"/>
-    </profileApplication>
-  </uml:Model>
-  <standard:Create xmi:id="_CotCQMXWEeWwx_puHDzFYw" base_BehavioralFeature="_ColtgMXWEeWwx_puHDzFYw"/>
-  <standard:Create xmi:id="_XBc0EMaGEeWfFdnv26Efug" base_BehavioralFeature="_XBWGYMaGEeWfFdnv26Efug"/>
-  <fmiprofile:CS_FMU xmi:id="_8VtIkM44EeW5W4GIqJpyFA" base_Class="_NO0UEMXQEeWwx_puHDzFYw" canNotUseMemoryManagementFunctions="true" canHandleVariableCommunicationStepSize="true"/>
-  <fmiprofile:CS_FMU xmi:id="_-41MoM44EeW5W4GIqJpyFA" base_Class="_V9MCEMaDEeWfFdnv26Efug"/>
-  <fmiprofile:Port xmi:id="_IFSVIM45EeW5W4GIqJpyFA" base_Property="_RUkBcMXQEeWwx_puHDzFYw" description="" variability="discrete" valueReference="1" direction="out"/>
-  <fmiprofile:Port xmi:id="_TZaUwM45EeW5W4GIqJpyFA" base_Property="_auAFsMaDEeWfFdnv26Efug" variability="discrete" direction="out"/>
-  <fmiprofile:Port xmi:id="_WYYAQM45EeW5W4GIqJpyFA" base_Property="_wQ2jIMaDEeWfFdnv26Efug" variability="discrete" valueReference="1" direction="out"/>
-  <fmiprofile:CS_FMU xmi:id="_b3AkYOxPEeWP6eN_6Zcgmw" base_Class="_aKy6MOxPEeWP6eN_6Zcgmw"/>
-  <fmiprofile:Port xmi:id="_7DE-0OxPEeWP6eN_6Zcgmw" base_Property="_eG3HIOxPEeWP6eN_6Zcgmw"/>
-  <fmiprofile:Port xmi:id="_9AJIcOxPEeWP6eN_6Zcgmw" base_Property="_fPzFIOxPEeWP6eN_6Zcgmw" valueReference="1" direction="out"/>
-  <fmiprofile:Port xmi:id="_st_hUCZzEeaNDtUa3wAGMw" base_Property="_JlBzgSZzEeaNDtUa3wAGMw"/>
-  <fmiprofile:Port xmi:id="_u1muECZzEeaNDtUa3wAGMw" base_Property="_u1kR0CZzEeaNDtUa3wAGMw" valueReference="1"/>
-  <fmiprofile:Port xmi:id="_vKZSUCZzEeaNDtUa3wAGMw" base_Property="_vKYEMCZzEeaNDtUa3wAGMw" valueReference="2"/>
-  <fmiprofile:Port xmi:id="_vdoXYCZzEeaNDtUa3wAGMw" base_Property="_vdnJQCZzEeaNDtUa3wAGMw" valueReference="3"/>
-  <fmiprofile:Port xmi:id="_c2kgMCZ0Eea_2cPCpxkxZw" base_Property="_JlBzgyZzEeaNDtUa3wAGMw" valueReference="4" direction="out"/>
-  <fmiprofile:CS_FMU xmi:id="_QHg-MCZ1Eea_2cPCpxkxZw" base_Class="_JlBzgCZzEeaNDtUa3wAGMw"/>
-</xmi:XMI>
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/C2/resources/moka.properties b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/C2/resources/moka.properties
deleted file mode 100644
index bed3824..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/C2/resources/moka.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-#Thu Oct 27 10:24:11 CEST 2016
-uri.map=pathmap\://PAPYRUS_FMI_PROFILE/\=model/plugin/org.eclipse.papyrus.moka.fmi.profile/model/,pathmap\://UML_LIBRARIES/\=model/plugin/org.eclipse.uml2.uml.resources/libraries/,pathmap\://UML_PROFILES/\=model/plugin/org.eclipse.uml2.uml.resources/profiles/,pathmap\://UML_METAMODELS/\=model/plugin/org.eclipse.uml2.uml.resources/metamodels/,pathmap\://PAPYRUS_fUML_LIBRARY/\=model/plugin/org.eclipse.papyrus.moka.fuml.standardlibrary/resources/,pathmap\://PAPYRUS_ACTIONLANGUAGE_PROFILE/\=model/plugin/org.eclipse.papyrus.uml.alf.libraries/resources/action-language-profile/
-profile.map=http\://www.eclipse.org/papyrus/FMIProfile/1.0.0\=model/plugin/org.eclipse.papyrus.moka.fmi.profile/model/FMI.profile.uml\#__Ki3oKvFEeSXqKqlHzx1gA,http\://www.eclipse.org/uml2/5.0.0/UML/Profile/Standard\=model/plugin/org.eclipse.uml2.uml.resources/profiles/Standard.profile.uml\#_0
-fmu.id=_V9MCEMaDEeWfFdnv26Efug
-model.path=model/resource/FMUExport/FMI%20Export%20Dev/FMU_Examples.uml
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/build_C2_fmu_linux-debug.launch b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/build_C2_fmu_linux-debug.launch
deleted file mode 100644
index 96793f8..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/build_C2_fmu_linux-debug.launch
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.ui.externaltools.ProgramLaunchConfigurationType">
-<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${project}"/>
-<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LAUNCH_CONFIGURATION_BUILD_SCOPE" value="${project}"/>
-<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/org.eclipse.papyrus.moka.fmu.wrapper/test/build_C2_fmu_linux.sh}"/>
-<stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="Debug"/>
-<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/org.eclipse.papyrus.moka.fmu.wrapper/test}"/>
-</launchConfiguration>
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/build_C2_fmu_linux.sh b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/build_C2_fmu_linux.sh
deleted file mode 100755
index eb366ea..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/build_C2_fmu_linux.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/sh
-
-CONFIGURATION=$1 #should be Debug or Release
-
-FMU_NAME="C2Linux64"
-
-
-rm C2/binaries/linux64/*.so
-rm $FMU_NAME.fmu
- 
-cp ../$CONFIGURATION/libfmuwrapper.so C2/binaries/linux64/$FMU_NAME.so
-
-cd C2
-
-#32 bits
-#mv resources/linux.gtk.x86/rcp resources
-#rmdir resources/linux.gtk.x86
-
-rm -rf resources/rcp/jre
-
-#32 bits
-#cp -R ~/Prog/jre_1.8.0_compact2_x86 resources/rcp/jre
-
-#64bits
-#cp -R ~/Prog/jre_1.8.0_compact2_x86_64 resources/rcp/jre
-
-rm resources/logs.zip
-zip ../$FMU_NAME.fmu  -r *
-cd ..
-
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/build_fmu_linux.sh b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/build_fmu_linux.sh
deleted file mode 100755
index 20b0e5d..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/build_fmu_linux.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/sh
-
-CONFIGURATION=$1 #should be Debug or Release
-
-FMU_NAME="AChangeEvent"
-
-
-rm fmu_build/binaries/linux64/*.so
-rm *.fmu
- 
-cp ../$CONFIGURATION/libfmuwrapper.so fmu_build/binaries/linux64/$FMU_NAME.so
-
-cd fmu_build
-
-#32 bits
-#mv resources/linux.gtk.x86/rcp resources
-#rmdir resources/linux.gtk.x86
-
-rm -rf resources/rcp/jre
-
-#32 bits
-#cp -R ~/Prog/jre_1.8.0_compact2_x86 resources/rcp/jre
-
-#64bits
-#cp -R ~/Prog/jre_1.8.0_compact2_x86_64 resources/rcp/jre
-
-rm resources/logs.zip
-zip ../$FMU_NAME.fmu  -r *
-cd ..
-
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/build_fmu_windows.sh b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/build_fmu_windows.sh
deleted file mode 100644
index 7dd9026..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/build_fmu_windows.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/sh
-
-CONFIGURATION=$1 #should be Debug or Release
-
-FMU_NAME="mokaC1"
-
-
-rm fmu_build/binaries/win64/*.dll
-rm *.fmu
- 
-cp ../$CONFIGURATION/libfmuwrapper.dll fmu_build/binaries/win64/$FMU_NAME.dll
-
-cd fmu_build
-
-
-rm -rf resources/rcp/jre
-
-
-
-rm resources/logs.zip
-zip ../$FMU_NAME.fmu  -r *
-cd ..
-
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/build_test_fmu_linux-debug.launch b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/build_test_fmu_linux-debug.launch
deleted file mode 100644
index 3da2185..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/build_test_fmu_linux-debug.launch
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.ui.externaltools.ProgramLaunchConfigurationType">
-<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${project}"/>
-<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LAUNCH_CONFIGURATION_BUILD_SCOPE" value="${project}"/>
-<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/org.eclipse.papyrus.moka.fmu.wrapper/test/build_fmu_linux.sh}"/>
-<stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="Debug"/>
-<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/org.eclipse.papyrus.moka.fmu.wrapper/test}"/>
-</launchConfiguration>
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/build_test_fmu_linux-release.launch b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/build_test_fmu_linux-release.launch
deleted file mode 100644
index c2afe05..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/build_test_fmu_linux-release.launch
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<launchConfiguration type="org.eclipse.ui.externaltools.ProgramLaunchConfigurationType">
-<stringAttribute key="org.eclipse.debug.core.ATTR_REFRESH_SCOPE" value="${project}"/>
-<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LAUNCH_CONFIGURATION_BUILD_SCOPE" value="${project}"/>
-<stringAttribute key="org.eclipse.ui.externaltools.ATTR_LOCATION" value="${workspace_loc:/org.eclipse.papyrus.moka.fmu.wrapper/test/build_fmu_linux.sh}"/>
-<stringAttribute key="org.eclipse.ui.externaltools.ATTR_TOOL_ARGUMENTS" value="Release"/>
-<stringAttribute key="org.eclipse.ui.externaltools.ATTR_WORKING_DIRECTORY" value="${workspace_loc:/org.eclipse.papyrus.moka.fmu.wrapper/test}"/>
-</launchConfiguration>
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/fmu_build/.gitignore b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/fmu_build/.gitignore
deleted file mode 100644
index 85305ee..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/fmu_build/.gitignore
+++ /dev/null
@@ -1,2 +0,0 @@
-/binaries/
-/mokaC1.fmu
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/fmu_build/modelDescription.xml b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/fmu_build/modelDescription.xml
deleted file mode 100644
index 95671ce..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/fmu_build/modelDescription.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<fmiModelDescription fmiVersion="2.0" generationDateAndTime="2016-06-10T12:43:59.797+02:00" generationTool="Moka FMU exporter" guid="3a0227e1-c453-4f61-bb32-4f8f7829c343" modelName="A">
-  <CoSimulation canBeInstantiatedOnlyOncePerProcess="true" canGetAndSetFMUstate="false" canHandleVariableCommunicationStepSize="true" canInterpolateInputs="false" canNotUseMemoryManagementFunctions="true" canRunAsynchronuously="false" canSerializeFMUstate="false" maxOutputDerivativeOrder="0" modelIdentifier="AChangeEvent" needsExecutionTool="false" providesDirectionalDerivative="false"/>
-  <ModelVariables>
-    <ScalarVariable causality="input" initial="exact" name="inBoolean" valueReference="0" variability="discrete">
-      <Boolean/>
-    </ScalarVariable>
-    <ScalarVariable causality="input" initial="exact" name="inInteger" valueReference="1" variability="discrete">
-      <Integer/>
-    </ScalarVariable>
-    <ScalarVariable causality="input" initial="exact" name="inReal" valueReference="2" variability="discrete">
-      <Real/>
-    </ScalarVariable>
-    <ScalarVariable causality="input" initial="exact" name="inString" valueReference="3" variability="discrete">
-      <String/>
-    </ScalarVariable>
-    <ScalarVariable causality="output" initial="exact" name="outBoolean" valueReference="4" variability="discrete">
-      <Boolean start="false"/>
-    </ScalarVariable>
-  </ModelVariables>
-  <ModelStructure>
-    <Outputs>
-      <Unknown index="5"/>
-    </Outputs>
-  </ModelStructure>
-</fmiModelDescription>
\ No newline at end of file
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/fmu_build/resources/.gitignore b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/fmu_build/resources/.gitignore
deleted file mode 100644
index 973d2d6..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/fmu_build/resources/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/rcp/
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/fmu_build/resources/FMU_Examples.di b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/fmu_build/resources/FMU_Examples.di
deleted file mode 100644
index 8634d4c..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/fmu_build/resources/FMU_Examples.di
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>

diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/fmu_build/resources/FMU_Examples.notation b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/fmu_build/resources/FMU_Examples.notation
deleted file mode 100644
index a050303..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/fmu_build/resources/FMU_Examples.notation
+++ /dev/null
@@ -1,3012 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:configuration="http://www.eclipse.org/papyrus/infra/viewpoints/configuration" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">

-  <notation:Diagram xmi:id="_DEi4cMXQEeWwx_puHDzFYw" type="PapyrusUMLClassDiagram" name="Class diagram" measurementUnit="Pixel">

-    <children xmi:type="notation:Shape" xmi:id="_NO-FEMXQEeWwx_puHDzFYw" type="Class_Shape">

-      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZGsJoMaDEeWfFdnv26Efug" source="PapyrusCSSForceValue">

-        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZGsJocaDEeWfFdnv26Efug" key="visible" value="true"/>

-      </eAnnotations>

-      <children xmi:type="notation:DecorationNode" xmi:id="_NO-sIMXQEeWwx_puHDzFYw" type="Class_NameLabel">

-        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZGsJosaDEeWfFdnv26Efug" source="PapyrusCSSForceValue">

-          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZGsJo8aDEeWfFdnv26Efug" key="visible" value="true"/>

-        </eAnnotations>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_NO-sIcXQEeWwx_puHDzFYw" type="Class_FloatingNameLabel">

-        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZGswsMaDEeWfFdnv26Efug" source="PapyrusCSSForceValue">

-          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZGswscaDEeWfFdnv26Efug" key="visible" value="true"/>

-        </eAnnotations>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_NO-sIsXQEeWwx_puHDzFYw" y="5"/>

-      </children>

-      <children xmi:type="notation:BasicCompartment" xmi:id="_CrmWoBdWEeaPc6X8OcC2hw" type="Class_AttributeCompartment">

-        <children xmi:type="notation:Shape" xmi:id="_RUqvIMXQEeWwx_puHDzFYw" type="Property_ClassAttributeLabel">

-          <styles xmi:type="notation:StringListValueStyle" xmi:id="_XSQu8MXQEeWwx_puHDzFYw" name="maskLabel">

-            <stringListValue>multiplicity</stringListValue>

-            <stringListValue>visibility</stringListValue>

-            <stringListValue>defaultValue</stringListValue>

-            <stringListValue>name</stringListValue>

-            <stringListValue>type</stringListValue>

-            <stringListValue>derived</stringListValue>

-          </styles>

-          <element xmi:type="uml:Property" href="FMU_Examples.uml#_RUkBcMXQEeWwx_puHDzFYw"/>

-          <layoutConstraint xmi:type="notation:Location" xmi:id="_RUqvIcXQEeWwx_puHDzFYw"/>

-        </children>

-        <styles xmi:type="notation:TitleStyle" xmi:id="_NO_TMcXQEeWwx_puHDzFYw"/>

-        <styles xmi:type="notation:SortingStyle" xmi:id="_NO_TMsXQEeWwx_puHDzFYw"/>

-        <styles xmi:type="notation:FilteringStyle" xmi:id="_NO_TM8XQEeWwx_puHDzFYw"/>

-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NO_TNMXQEeWwx_puHDzFYw"/>

-      </children>

-      <children xmi:type="notation:BasicCompartment" xmi:id="_Crm9sBdWEeaPc6X8OcC2hw" visible="false" type="Class_OperationCompartment">

-        <styles xmi:type="notation:TitleStyle" xmi:id="_NO_TNsXQEeWwx_puHDzFYw"/>

-        <styles xmi:type="notation:SortingStyle" xmi:id="_NO_TN8XQEeWwx_puHDzFYw"/>

-        <styles xmi:type="notation:FilteringStyle" xmi:id="_NO_TOMXQEeWwx_puHDzFYw"/>

-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NO_TOcXQEeWwx_puHDzFYw"/>

-      </children>

-      <children xmi:type="notation:BasicCompartment" xmi:id="_Crm9sRdWEeaPc6X8OcC2hw" visible="false" type="Class_NestedClassifierCompartment">

-        <styles xmi:type="notation:TitleStyle" xmi:id="_NO_TO8XQEeWwx_puHDzFYw"/>

-        <styles xmi:type="notation:SortingStyle" xmi:id="_NO_TPMXQEeWwx_puHDzFYw"/>

-        <styles xmi:type="notation:FilteringStyle" xmi:id="_NO_TPcXQEeWwx_puHDzFYw"/>

-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NO_TPsXQEeWwx_puHDzFYw"/>

-      </children>

-      <element xmi:type="uml:Class" href="FMU_Examples.uml#_NO0UEMXQEeWwx_puHDzFYw"/>

-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NO-FEcXQEeWwx_puHDzFYw" x="53" y="211" width="797" height="141"/>

-    </children>

-    <children xmi:type="notation:Shape" xmi:id="_V-PyAMaDEeWfFdnv26Efug" type="Class_Shape">

-      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZGptYMaDEeWfFdnv26Efug" source="PapyrusCSSForceValue">

-        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZGqUcMaDEeWfFdnv26Efug" key="visible" value="true"/>

-      </eAnnotations>

-      <children xmi:type="notation:DecorationNode" xmi:id="_V-RnMMaDEeWfFdnv26Efug" type="Class_NameLabel">

-        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZGq7gMaDEeWfFdnv26Efug" source="PapyrusCSSForceValue">

-          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZGq7gcaDEeWfFdnv26Efug" key="visible" value="true"/>

-        </eAnnotations>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_V-RnMcaDEeWfFdnv26Efug" type="Class_FloatingNameLabel">

-        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZGq7gsaDEeWfFdnv26Efug" source="PapyrusCSSForceValue">

-          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZGq7g8aDEeWfFdnv26Efug" key="visible" value="true"/>

-        </eAnnotations>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_V-RnMsaDEeWfFdnv26Efug" y="5"/>

-      </children>

-      <children xmi:type="notation:BasicCompartment" xmi:id="_CroL0BdWEeaPc6X8OcC2hw" type="Class_AttributeCompartment">

-        <children xmi:type="notation:Shape" xmi:id="_auLr4MaDEeWfFdnv26Efug" type="Property_ClassAttributeLabel">

-          <styles xmi:type="notation:StringListValueStyle" xmi:id="_u66D4MaDEeWfFdnv26Efug" name="maskLabel">

-            <stringListValue>multiplicity</stringListValue>

-            <stringListValue>visibility</stringListValue>

-            <stringListValue>defaultValue</stringListValue>

-            <stringListValue>name</stringListValue>

-            <stringListValue>type</stringListValue>

-            <stringListValue>derived</stringListValue>

-          </styles>

-          <element xmi:type="uml:Property" href="FMU_Examples.uml#_auAFsMaDEeWfFdnv26Efug"/>

-          <layoutConstraint xmi:type="notation:Location" xmi:id="_auLr4caDEeWfFdnv26Efug"/>

-        </children>

-        <children xmi:type="notation:Shape" xmi:id="_wRAUIMaDEeWfFdnv26Efug" type="Property_ClassAttributeLabel">

-          <styles xmi:type="notation:StringListValueStyle" xmi:id="_y9iL0MaDEeWfFdnv26Efug" name="maskLabel">

-            <stringListValue>multiplicity</stringListValue>

-            <stringListValue>visibility</stringListValue>

-            <stringListValue>defaultValue</stringListValue>

-            <stringListValue>name</stringListValue>

-            <stringListValue>type</stringListValue>

-            <stringListValue>derived</stringListValue>

-          </styles>

-          <element xmi:type="uml:Property" href="FMU_Examples.uml#_wQ2jIMaDEeWfFdnv26Efug"/>

-          <layoutConstraint xmi:type="notation:Location" xmi:id="_wRAUIcaDEeWfFdnv26Efug"/>

-        </children>

-        <styles xmi:type="notation:TitleStyle" xmi:id="_V-SOQcaDEeWfFdnv26Efug"/>

-        <styles xmi:type="notation:SortingStyle" xmi:id="_V-SOQsaDEeWfFdnv26Efug"/>

-        <styles xmi:type="notation:FilteringStyle" xmi:id="_V-SOQ8aDEeWfFdnv26Efug"/>

-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V-SORMaDEeWfFdnv26Efug"/>

-      </children>

-      <children xmi:type="notation:BasicCompartment" xmi:id="_CroL0RdWEeaPc6X8OcC2hw" visible="false" type="Class_OperationCompartment">

-        <styles xmi:type="notation:TitleStyle" xmi:id="_V-SORsaDEeWfFdnv26Efug"/>

-        <styles xmi:type="notation:SortingStyle" xmi:id="_V-SOR8aDEeWfFdnv26Efug"/>

-        <styles xmi:type="notation:FilteringStyle" xmi:id="_V-SOSMaDEeWfFdnv26Efug"/>

-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V-SOScaDEeWfFdnv26Efug"/>

-      </children>

-      <children xmi:type="notation:BasicCompartment" xmi:id="_CroL0hdWEeaPc6X8OcC2hw" visible="false" type="Class_NestedClassifierCompartment">

-        <styles xmi:type="notation:TitleStyle" xmi:id="_V-SOS8aDEeWfFdnv26Efug"/>

-        <styles xmi:type="notation:SortingStyle" xmi:id="_V-SOTMaDEeWfFdnv26Efug"/>

-        <styles xmi:type="notation:FilteringStyle" xmi:id="_V-SOTcaDEeWfFdnv26Efug"/>

-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V-SOTsaDEeWfFdnv26Efug"/>

-      </children>

-      <element xmi:type="uml:Class" href="FMU_Examples.uml#_V9MCEMaDEeWfFdnv26Efug"/>

-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V-PyAcaDEeWfFdnv26Efug" x="54" y="404" width="817" height="141"/>

-    </children>

-    <children xmi:type="notation:Shape" xmi:id="_8Wa6QM44EeW5W4GIqJpyFA" type="StereotypeComment">

-      <styles xmi:type="notation:TitleStyle" xmi:id="_8Wa6Qc44EeW5W4GIqJpyFA" showTitle="true"/>

-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_8Wa6Q844EeW5W4GIqJpyFA" name="BASE_ELEMENT">

-        <eObjectValue xmi:type="uml:Class" href="FMU_Examples.uml#_NO0UEMXQEeWwx_puHDzFYw"/>

-      </styles>

-      <element xsi:nil="true"/>

-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8Wa6Qs44EeW5W4GIqJpyFA" x="377" y="211"/>

-    </children>

-    <children xmi:type="notation:Shape" xmi:id="_-5DPEM44EeW5W4GIqJpyFA" type="StereotypeComment">

-      <styles xmi:type="notation:TitleStyle" xmi:id="_-5DPEc44EeW5W4GIqJpyFA" showTitle="true"/>

-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_-5D2IM44EeW5W4GIqJpyFA" name="BASE_ELEMENT">

-        <eObjectValue xmi:type="uml:Class" href="FMU_Examples.uml#_V9MCEMaDEeWfFdnv26Efug"/>

-      </styles>

-      <element xsi:nil="true"/>

-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-5DPEs44EeW5W4GIqJpyFA" x="377" y="425"/>

-    </children>

-    <styles xmi:type="notation:StringValueStyle" xmi:id="_DEi4ccXQEeWwx_puHDzFYw" name="diagram_compatibility_version" stringValue="1.2.0"/>

-    <styles xmi:type="notation:DiagramStyle" xmi:id="_DEi4csXQEeWwx_puHDzFYw"/>

-    <styles xmi:type="style:PapyrusViewStyle" xmi:id="_DEi4c8XQEeWwx_puHDzFYw">

-      <owner xmi:type="uml:Package" href="FMU_Examples.uml#_7SAoIOxOEeWP6eN_6Zcgmw"/>

-      <configuration xmi:type="configuration:PapyrusDiagram" href="platform:/plugin/org.eclipse.papyrus.moka.simex/config/simex.configuration#_1PVVsFY9EeWcmuYjB__atg"/>

-    </styles>

-    <element xmi:type="uml:Model" href="FMU_Examples.uml#_q8DOcMXPEeWwx_puHDzFYw"/>

-    <edges xmi:type="notation:Connector" xmi:id="_8Wa6RM44EeW5W4GIqJpyFA" type="StereotypeCommentLink" source="_NO-FEMXQEeWwx_puHDzFYw" target="_8Wa6QM44EeW5W4GIqJpyFA">

-      <styles xmi:type="notation:FontStyle" xmi:id="_8Wa6Rc44EeW5W4GIqJpyFA"/>

-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_8Wa6Sc44EeW5W4GIqJpyFA" name="BASE_ELEMENT">

-        <eObjectValue xmi:type="uml:Class" href="FMU_Examples.uml#_NO0UEMXQEeWwx_puHDzFYw"/>

-      </styles>

-      <element xsi:nil="true"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8Wa6Rs44EeW5W4GIqJpyFA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8Wa6R844EeW5W4GIqJpyFA"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8Wa6SM44EeW5W4GIqJpyFA"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_-5D2Ic44EeW5W4GIqJpyFA" type="StereotypeCommentLink" source="_V-PyAMaDEeWfFdnv26Efug" target="_-5DPEM44EeW5W4GIqJpyFA">

-      <styles xmi:type="notation:FontStyle" xmi:id="_-5D2Is44EeW5W4GIqJpyFA"/>

-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_-5D2Js44EeW5W4GIqJpyFA" name="BASE_ELEMENT">

-        <eObjectValue xmi:type="uml:Class" href="FMU_Examples.uml#_V9MCEMaDEeWfFdnv26Efug"/>

-      </styles>

-      <element xsi:nil="true"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_-5D2I844EeW5W4GIqJpyFA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-5D2JM44EeW5W4GIqJpyFA"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-5D2Jc44EeW5W4GIqJpyFA"/>

-    </edges>

-  </notation:Diagram>

-  <notation:Diagram xmi:id="_o4hbAMXQEeWwx_puHDzFYw" type="PapyrusUMLActivityDiagram" name="C1 classifier behavior diagram" measurementUnit="Pixel">

-    <children xmi:type="notation:Shape" xmi:id="_o4hbAcXQEeWwx_puHDzFYw" type="Activity_Shape">

-      <children xmi:type="notation:DecorationNode" xmi:id="_o4iCEMXQEeWwx_puHDzFYw" type="Activity_NameLabel"/>

-      <children xmi:type="notation:BasicCompartment" xmi:id="_0f00cBdVEeaPc6X8OcC2hw" type="Activity_ParameterCompartment">

-        <styles xmi:type="notation:SortingStyle" xmi:id="_o4iCE8XQEeWwx_puHDzFYw"/>

-        <styles xmi:type="notation:FilteringStyle" xmi:id="_o4iCFMXQEeWwx_puHDzFYw"/>

-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_o4iCFcXQEeWwx_puHDzFYw"/>

-      </children>

-      <children xmi:type="notation:BasicCompartment" xmi:id="_0f1bgBdVEeaPc6X8OcC2hw" type="Activity_PreconditionCompartment">

-        <styles xmi:type="notation:SortingStyle" xmi:id="_o4iCF8XQEeWwx_puHDzFYw"/>

-        <styles xmi:type="notation:FilteringStyle" xmi:id="_o4iCGMXQEeWwx_puHDzFYw"/>

-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_o4iCGcXQEeWwx_puHDzFYw"/>

-      </children>

-      <children xmi:type="notation:BasicCompartment" xmi:id="_0f2CkBdVEeaPc6X8OcC2hw" type="Activity_PostconditionCompartment">

-        <styles xmi:type="notation:SortingStyle" xmi:id="_o4iCG8XQEeWwx_puHDzFYw"/>

-        <styles xmi:type="notation:FilteringStyle" xmi:id="_o4iCHMXQEeWwx_puHDzFYw"/>

-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_o4iCHcXQEeWwx_puHDzFYw"/>

-      </children>

-      <children xmi:type="notation:BasicCompartment" xmi:id="_0f5F4BdVEeaPc6X8OcC2hw" type="Activity_ActivityNodeCompartment">

-        <children xmi:type="notation:Shape" xmi:id="_sRY0QMXQEeWwx_puHDzFYw" type="Comment_Shape">

-          <children xmi:type="notation:DecorationNode" xmi:id="_sRY0QsXQEeWwx_puHDzFYw" type="Comment_BodyLabel"/>

-          <element xmi:type="uml:Comment" href="FMU_Examples.uml#_sRT7wMXQEeWwx_puHDzFYw"/>

-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sRY0QcXQEeWwx_puHDzFYw" x="484" y="88"/>

-        </children>

-        <children xmi:type="notation:Shape" xmi:id="_xrHSAMXQEeWwx_puHDzFYw" type="AcceptEventAction_Shape">

-          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dFHB4MXREeWwx_puHDzFYw" source="PapyrusCSSForceValue">

-            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dFHB4cXREeWwx_puHDzFYw" key="mutable" value="true"/>

-          </eAnnotations>

-          <children xmi:type="notation:DecorationNode" xmi:id="_xrH5EMXQEeWwx_puHDzFYw" type="AcceptEventAction_NameLabel"/>

-          <children xmi:type="notation:DecorationNode" xmi:id="_xrH5EcXQEeWwx_puHDzFYw" type="AcceptEventAction_TriggerLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_xrH5EsXQEeWwx_puHDzFYw" x="89" y="13"/>

-          </children>

-          <children xmi:type="notation:DecorationNode" xmi:id="_xrH5E8XQEeWwx_puHDzFYw" type="AcceptEventAction_StereotypeLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_xrH5FMXQEeWwx_puHDzFYw" y="5"/>

-          </children>

-          <children xmi:type="notation:DecorationNode" xmi:id="_xrH5FcXQEeWwx_puHDzFYw" type="AcceptEventAction_FloatingNameLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_xrH5FsXQEeWwx_puHDzFYw" y="5"/>

-          </children>

-          <children xmi:type="notation:BasicCompartment" xmi:id="_xst0gMXQEeWwx_puHDzFYw" type="compartment_shape_display">

-            <styles xmi:type="notation:TitleStyle" xmi:id="_xst0gcXQEeWwx_puHDzFYw"/>

-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xst0gsXQEeWwx_puHDzFYw"/>

-          </children>

-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_xrHSAcXQEeWwx_puHDzFYw"/>

-          <element xmi:type="uml:AcceptEventAction" href="FMU_Examples.uml#_xrAkUMXQEeWwx_puHDzFYw"/>

-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xrHSAsXQEeWwx_puHDzFYw" x="176" y="73"/>

-        </children>

-        <children xmi:type="notation:Shape" xmi:id="_x6RvYMXQEeWwx_puHDzFYw" type="AcceptEventAction_Shape">

-          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_l406QMXREeWwx_puHDzFYw" source="PapyrusCSSForceValue">

-            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_l406QcXREeWwx_puHDzFYw" key="mutable" value="true"/>

-          </eAnnotations>

-          <children xmi:type="notation:DecorationNode" xmi:id="_x6SWcMXQEeWwx_puHDzFYw" type="AcceptEventAction_NameLabel"/>

-          <children xmi:type="notation:DecorationNode" xmi:id="_x6SWccXQEeWwx_puHDzFYw" type="AcceptEventAction_TriggerLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_x6SWcsXQEeWwx_puHDzFYw" x="90" y="11"/>

-          </children>

-          <children xmi:type="notation:DecorationNode" xmi:id="_x6SWc8XQEeWwx_puHDzFYw" type="AcceptEventAction_StereotypeLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_x6SWdMXQEeWwx_puHDzFYw" y="5"/>

-          </children>

-          <children xmi:type="notation:DecorationNode" xmi:id="_x6SWdcXQEeWwx_puHDzFYw" type="AcceptEventAction_FloatingNameLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_x6SWdsXQEeWwx_puHDzFYw" y="5"/>

-          </children>

-          <children xmi:type="notation:BasicCompartment" xmi:id="_x6a5UMXQEeWwx_puHDzFYw" type="compartment_shape_display">

-            <styles xmi:type="notation:TitleStyle" xmi:id="_x6a5UcXQEeWwx_puHDzFYw"/>

-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_x6a5UsXQEeWwx_puHDzFYw"/>

-          </children>

-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_x6RvYcXQEeWwx_puHDzFYw"/>

-          <element xmi:type="uml:AcceptEventAction" href="FMU_Examples.uml#_x6JMgMXQEeWwx_puHDzFYw"/>

-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_x6RvYsXQEeWwx_puHDzFYw" x="176" y="319"/>

-        </children>

-        <children xmi:type="notation:Shape" xmi:id="_yIP58MXQEeWwx_puHDzFYw" type="AcceptEventAction_Shape">

-          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qfzscMXREeWwx_puHDzFYw" source="PapyrusCSSForceValue">

-            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qf0TgMXREeWwx_puHDzFYw" key="mutable" value="true"/>

-          </eAnnotations>

-          <children xmi:type="notation:DecorationNode" xmi:id="_yIQhAMXQEeWwx_puHDzFYw" type="AcceptEventAction_NameLabel"/>

-          <children xmi:type="notation:DecorationNode" xmi:id="_yIQhAcXQEeWwx_puHDzFYw" type="AcceptEventAction_TriggerLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_yIQhAsXQEeWwx_puHDzFYw" x="92" y="11"/>

-          </children>

-          <children xmi:type="notation:DecorationNode" xmi:id="_yIQhA8XQEeWwx_puHDzFYw" type="AcceptEventAction_StereotypeLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_yIQhBMXQEeWwx_puHDzFYw" y="5"/>

-          </children>

-          <children xmi:type="notation:DecorationNode" xmi:id="_yIQhBcXQEeWwx_puHDzFYw" type="AcceptEventAction_FloatingNameLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_yIQhBsXQEeWwx_puHDzFYw" y="5"/>

-          </children>

-          <children xmi:type="notation:BasicCompartment" xmi:id="_yIbgIMXQEeWwx_puHDzFYw" type="compartment_shape_display">

-            <styles xmi:type="notation:TitleStyle" xmi:id="_yIbgIcXQEeWwx_puHDzFYw"/>

-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yIbgIsXQEeWwx_puHDzFYw"/>

-          </children>

-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_yIP58cXQEeWwx_puHDzFYw"/>

-          <element xmi:type="uml:AcceptEventAction" href="FMU_Examples.uml#_yIGwAMXQEeWwx_puHDzFYw"/>

-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yIP58sXQEeWwx_puHDzFYw" x="176" y="562"/>

-        </children>

-        <children xmi:type="notation:Shape" xmi:id="_MwP20MXSEeWwx_puHDzFYw" type="InitialNode_Shape">

-          <children xmi:type="notation:DecorationNode" xmi:id="_MwQd4MXSEeWwx_puHDzFYw" visible="false" type="InitialNode_FloatingNameLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_MwQd4cXSEeWwx_puHDzFYw" y="5"/>

-          </children>

-          <children xmi:type="notation:DecorationNode" xmi:id="_MwQd4sXSEeWwx_puHDzFYw" type="InitialNode_StereotypeLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_MwQd48XSEeWwx_puHDzFYw" y="5"/>

-          </children>

-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_MwP20cXSEeWwx_puHDzFYw"/>

-          <element xmi:type="uml:InitialNode" href="FMU_Examples.uml#_MwEQoMXSEeWwx_puHDzFYw"/>

-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MwP20sXSEeWwx_puHDzFYw" x="229" y="20"/>

-        </children>

-        <children xmi:type="notation:Shape" xmi:id="_bfOXQMXTEeWwx_puHDzFYw" type="StructuredActivityNode_Shape">

-          <children xmi:type="notation:DecorationNode" xmi:id="_bfOXQ8XTEeWwx_puHDzFYw" type="StructuredActivityNode_KeywordLabel"/>

-          <children xmi:type="notation:BasicCompartment" xmi:id="_0f7iIBdVEeaPc6X8OcC2hw" type="StructuredActivityNode_ActivityNodeCompartment">

-            <children xmi:type="notation:Shape" xmi:id="_JsDQkMXTEeWwx_puHDzFYw" type="AddStructuralFeatureValueAction_Shape">

-              <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JxejIMXTEeWwx_puHDzFYw" source="PapyrusCSSForceValue">

-                <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JxejIcXTEeWwx_puHDzFYw" key="mutable" value="true"/>

-              </eAnnotations>

-              <children xmi:type="notation:DecorationNode" xmi:id="_JsD3oMXTEeWwx_puHDzFYw" type="AddStructuralFeatureValueAction_NameLabel"/>

-              <children xmi:type="notation:DecorationNode" xmi:id="_JsD3ocXTEeWwx_puHDzFYw" type="AddStructuralFeatureValueAction_FloatingNameLabel">

-                <layoutConstraint xmi:type="notation:Location" xmi:id="_JsD3osXTEeWwx_puHDzFYw" y="5"/>

-              </children>

-              <children xmi:type="notation:BasicCompartment" xmi:id="_JsQr8MXTEeWwx_puHDzFYw" type="compartment_shape_display">

-                <styles xmi:type="notation:TitleStyle" xmi:id="_JsQr8cXTEeWwx_puHDzFYw"/>

-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JsQr8sXTEeWwx_puHDzFYw"/>

-              </children>

-              <children xmi:type="notation:Shape" xmi:id="_JvEIUMXTEeWwx_puHDzFYw" type="InputPin_AddStructuralFeatureValueActionObjectShape">

-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JxejIsXTEeWwx_puHDzFYw" source="PapyrusCSSForceValue">

-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JxejI8XTEeWwx_puHDzFYw" key="mutable" value="true"/>

-                </eAnnotations>

-                <children xmi:type="notation:DecorationNode" xmi:id="_JvEIU8XTEeWwx_puHDzFYw" type="InputPin_AddStructuralFeatureValueActionObjectNameLabel">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_JvEIVMXTEeWwx_puHDzFYw" x="22" y="-2"/>

-                </children>

-                <children xmi:type="notation:DecorationNode" xmi:id="_JvEIVcXTEeWwx_puHDzFYw" type="InputPin_AddStructuralFeatureValueActionObjectStereotypeLabel">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_JvEvYMXTEeWwx_puHDzFYw" y="5"/>

-                </children>

-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_JvEIUcXTEeWwx_puHDzFYw"/>

-                <element xmi:type="uml:InputPin" href="FMU_Examples.uml#_Jr8i4MXTEeWwx_puHDzFYw"/>

-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JvEIUsXTEeWwx_puHDzFYw" x="-15" y="17"/>

-              </children>

-              <children xmi:type="notation:Shape" xmi:id="_JvEvYcXTEeWwx_puHDzFYw" type="InputPin_AddStructuralFeatureValueActionValueShape">

-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JxejJMXTEeWwx_puHDzFYw" source="PapyrusCSSForceValue">

-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JxejJcXTEeWwx_puHDzFYw" key="mutable" value="true"/>

-                </eAnnotations>

-                <children xmi:type="notation:DecorationNode" xmi:id="_JvEvZMXTEeWwx_puHDzFYw" type="InputPin_AddStructuralFeatureValueActionValueNameLabel">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_JvEvZcXTEeWwx_puHDzFYw" x="24" y="-1"/>

-                </children>

-                <children xmi:type="notation:DecorationNode" xmi:id="_JvEvZsXTEeWwx_puHDzFYw" type="InputPin_AddStructuralFeatureValueActionValueStereotypeLabel">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_JvEvZ8XTEeWwx_puHDzFYw" y="5"/>

-                </children>

-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_JvEvYsXTEeWwx_puHDzFYw"/>

-                <element xmi:type="uml:InputPin" href="FMU_Examples.uml#_Jr-_IMXTEeWwx_puHDzFYw"/>

-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JvEvY8XTEeWwx_puHDzFYw" x="-15" y="62"/>

-              </children>

-              <children xmi:type="notation:Shape" xmi:id="_JvEvaMXTEeWwx_puHDzFYw" type="OutputPin_AddStructuralFeatureValueActionResultShape">

-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JxejJsXTEeWwx_puHDzFYw" source="PapyrusCSSForceValue">

-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JxejJ8XTEeWwx_puHDzFYw" key="mutable" value="true"/>

-                </eAnnotations>

-                <children xmi:type="notation:DecorationNode" xmi:id="_JvFWcsXTEeWwx_puHDzFYw" visible="false" type="OutputPin_AddStructuralFeatureValueActionResultNameLabel">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_JvFWc8XTEeWwx_puHDzFYw" x="-43" y="16"/>

-                </children>

-                <children xmi:type="notation:DecorationNode" xmi:id="_JvFWdMXTEeWwx_puHDzFYw" type="OutputPin_AddStructuralFeatureValueActionResultStereotypeLabel">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_JvFWdcXTEeWwx_puHDzFYw" y="5"/>

-                </children>

-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_JvFWcMXTEeWwx_puHDzFYw"/>

-                <element xmi:type="uml:OutputPin" href="FMU_Examples.uml#_Jr9xAMXTEeWwx_puHDzFYw"/>

-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JvFWccXTEeWwx_puHDzFYw" x="148" y="25"/>

-              </children>

-              <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_JsDQkcXTEeWwx_puHDzFYw"/>

-              <element xmi:type="uml:AddStructuralFeatureValueAction" href="FMU_Examples.uml#_JrzY8MXTEeWwx_puHDzFYw"/>

-              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JsDQksXTEeWwx_puHDzFYw" x="134" y="9" width="118" height="85"/>

-            </children>

-            <children xmi:type="notation:Shape" xmi:id="_jzeFYMXTEeWwx_puHDzFYw" type="ReadSelfAction_Shape">

-              <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_j0kRkMXTEeWwx_puHDzFYw" source="PapyrusCSSForceValue">

-                <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_j0kRkcXTEeWwx_puHDzFYw" key="mutable" value="true"/>

-              </eAnnotations>

-              <children xmi:type="notation:DecorationNode" xmi:id="_jzescMXTEeWwx_puHDzFYw" type="ReadSelfAction_NameLabel"/>

-              <children xmi:type="notation:DecorationNode" xmi:id="_jzesccXTEeWwx_puHDzFYw" type="ReadSelfAction_FloatingNameLabel">

-                <layoutConstraint xmi:type="notation:Location" xmi:id="_jzescsXTEeWwx_puHDzFYw" y="5"/>

-              </children>

-              <children xmi:type="notation:BasicCompartment" xmi:id="_jzprkMXTEeWwx_puHDzFYw" type="compartment_shape_display">

-                <styles xmi:type="notation:TitleStyle" xmi:id="_jzprkcXTEeWwx_puHDzFYw"/>

-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jzprksXTEeWwx_puHDzFYw"/>

-              </children>

-              <children xmi:type="notation:Shape" xmi:id="_jzqSoMXTEeWwx_puHDzFYw" type="OutputPin_ReadSelfActionResultShape">

-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_j0kRksXTEeWwx_puHDzFYw" source="PapyrusCSSForceValue">

-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_j0kRk8XTEeWwx_puHDzFYw" key="mutable" value="true"/>

-                </eAnnotations>

-                <children xmi:type="notation:DecorationNode" xmi:id="_jzqSo8XTEeWwx_puHDzFYw" visible="false" type="OutputPin_ReadSelfActionResultNameLabel">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_jzqSpMXTEeWwx_puHDzFYw" x="8" y="14"/>

-                </children>

-                <children xmi:type="notation:DecorationNode" xmi:id="_jzqSpcXTEeWwx_puHDzFYw" type="OutputPin_ReadSelfActionResultStereotypeLabel">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_jzqSpsXTEeWwx_puHDzFYw" y="5"/>

-                </children>

-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_jzqSocXTEeWwx_puHDzFYw"/>

-                <element xmi:type="uml:OutputPin" href="FMU_Examples.uml#_jzRREMXTEeWwx_puHDzFYw"/>

-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jzqSosXTEeWwx_puHDzFYw"/>

-              </children>

-              <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_jzeFYcXTEeWwx_puHDzFYw"/>

-              <element xmi:type="uml:ReadSelfAction" href="FMU_Examples.uml#_jzQC8MXTEeWwx_puHDzFYw"/>

-              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jzeFYsXTEeWwx_puHDzFYw" x="14" y="9"/>

-            </children>

-            <children xmi:type="notation:Shape" xmi:id="_l0yc4MXTEeWwx_puHDzFYw" type="ValueSpecificationAction_Shape">

-              <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_l1uRAMXTEeWwx_puHDzFYw" source="PapyrusCSSForceValue">

-                <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_l1uRAcXTEeWwx_puHDzFYw" key="mutable" value="true"/>

-              </eAnnotations>

-              <children xmi:type="notation:DecorationNode" xmi:id="_l0zD8sXTEeWwx_puHDzFYw" type="ValueSpecificationAction_NameLabel"/>

-              <children xmi:type="notation:DecorationNode" xmi:id="_l0zD88XTEeWwx_puHDzFYw" type="ValueSpecificationAction_FloatingNameLabel">

-                <layoutConstraint xmi:type="notation:Location" xmi:id="_l0zD9MXTEeWwx_puHDzFYw" y="5"/>

-              </children>

-              <children xmi:type="notation:BasicCompartment" xmi:id="_l06_wMXTEeWwx_puHDzFYw" type="compartment_shape_display">

-                <styles xmi:type="notation:TitleStyle" xmi:id="_l06_wcXTEeWwx_puHDzFYw"/>

-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l06_wsXTEeWwx_puHDzFYw"/>

-              </children>

-              <children xmi:type="notation:Shape" xmi:id="_l07m0MXTEeWwx_puHDzFYw" type="OutputPin_ValueSpecificationActionResultShape">

-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_l1uRAsXTEeWwx_puHDzFYw" source="PapyrusCSSForceValue">

-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_l1uRA8XTEeWwx_puHDzFYw" key="mutable" value="true"/>

-                </eAnnotations>

-                <children xmi:type="notation:DecorationNode" xmi:id="_l07m08XTEeWwx_puHDzFYw" visible="false" type="OutputPin_ValueSpecificationActionResultNameLabel">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_l08N4MXTEeWwx_puHDzFYw" y="5"/>

-                </children>

-                <children xmi:type="notation:DecorationNode" xmi:id="_l08N4cXTEeWwx_puHDzFYw" type="OutputPin_ValueSpecificationActionResultStereotypeLabel">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_l08N4sXTEeWwx_puHDzFYw" y="5"/>

-                </children>

-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_l07m0cXTEeWwx_puHDzFYw"/>

-                <element xmi:type="uml:OutputPin" href="FMU_Examples.uml#_l0m2sMXTEeWwx_puHDzFYw"/>

-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l07m0sXTEeWwx_puHDzFYw"/>

-              </children>

-              <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_l0zD8MXTEeWwx_puHDzFYw"/>

-              <element xmi:type="uml:ValueSpecificationAction" href="FMU_Examples.uml#_l0ceoMXTEeWwx_puHDzFYw"/>

-              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l0zD8cXTEeWwx_puHDzFYw" x="14" y="54"/>

-            </children>

-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bfO-UcXTEeWwx_puHDzFYw"/>

-          </children>

-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_bfOXQcXTEeWwx_puHDzFYw"/>

-          <element xmi:type="uml:StructuredActivityNode" href="FMU_Examples.uml#_be-foMXTEeWwx_puHDzFYw"/>

-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bfOXQsXTEeWwx_puHDzFYw" x="93" y="152" width="292" height="135"/>

-        </children>

-        <children xmi:type="notation:Shape" xmi:id="_hdHAEMXVEeWwx_puHDzFYw" type="ActivityFinalNode_Shape">

-          <children xmi:type="notation:DecorationNode" xmi:id="_hdHAE8XVEeWwx_puHDzFYw" visible="false" type="ActivityFinalNode_FloatingNameLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_hdHAFMXVEeWwx_puHDzFYw" y="5"/>

-          </children>

-          <children xmi:type="notation:DecorationNode" xmi:id="_hdHAFcXVEeWwx_puHDzFYw" type="ActivityFinalNode_StereotypeLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_hdHAFsXVEeWwx_puHDzFYw" y="5"/>

-          </children>

-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_hdHAEcXVEeWwx_puHDzFYw"/>

-          <element xmi:type="uml:ActivityFinalNode" href="FMU_Examples.uml#_hclboMXVEeWwx_puHDzFYw"/>

-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hdHAEsXVEeWwx_puHDzFYw" x="438" y="702"/>

-        </children>

-        <children xmi:type="notation:Shape" xmi:id="_ibQ_gMXXEeWwx_puHDzFYw" type="StructuredActivityNode_Shape">

-          <children xmi:type="notation:DecorationNode" xmi:id="_ibS0sMXXEeWwx_puHDzFYw" type="StructuredActivityNode_KeywordLabel"/>

-          <children xmi:type="notation:BasicCompartment" xmi:id="_0f9XUBdVEeaPc6X8OcC2hw" type="StructuredActivityNode_ActivityNodeCompartment">

-            <children xmi:type="notation:Shape" xmi:id="_mJKNkMXXEeWwx_puHDzFYw" type="AddStructuralFeatureValueAction_Shape">

-              <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mLB10MXXEeWwx_puHDzFYw" source="PapyrusCSSForceValue">

-                <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mLCc4MXXEeWwx_puHDzFYw" key="mutable" value="true"/>

-              </eAnnotations>

-              <children xmi:type="notation:DecorationNode" xmi:id="_mJK0oMXXEeWwx_puHDzFYw" type="AddStructuralFeatureValueAction_NameLabel"/>

-              <children xmi:type="notation:DecorationNode" xmi:id="_mJK0ocXXEeWwx_puHDzFYw" type="AddStructuralFeatureValueAction_FloatingNameLabel">

-                <layoutConstraint xmi:type="notation:Location" xmi:id="_mJK0osXXEeWwx_puHDzFYw" y="5"/>

-              </children>

-              <children xmi:type="notation:BasicCompartment" xmi:id="_mJgy4MXXEeWwx_puHDzFYw" type="compartment_shape_display">

-                <styles xmi:type="notation:TitleStyle" xmi:id="_mJgy4cXXEeWwx_puHDzFYw"/>

-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mJgy4sXXEeWwx_puHDzFYw"/>

-              </children>

-              <children xmi:type="notation:Shape" xmi:id="_mJiBAMXXEeWwx_puHDzFYw" type="InputPin_AddStructuralFeatureValueActionObjectShape">

-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mLCc4cXXEeWwx_puHDzFYw" source="PapyrusCSSForceValue">

-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mLCc4sXXEeWwx_puHDzFYw" key="mutable" value="true"/>

-                </eAnnotations>

-                <children xmi:type="notation:DecorationNode" xmi:id="_mJiBA8XXEeWwx_puHDzFYw" type="InputPin_AddStructuralFeatureValueActionObjectNameLabel">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_mJiBBMXXEeWwx_puHDzFYw" x="19" y="1"/>

-                </children>

-                <children xmi:type="notation:DecorationNode" xmi:id="_mJioEMXXEeWwx_puHDzFYw" type="InputPin_AddStructuralFeatureValueActionObjectStereotypeLabel">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_mJioEcXXEeWwx_puHDzFYw" y="5"/>

-                </children>

-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_mJiBAcXXEeWwx_puHDzFYw"/>

-                <element xmi:type="uml:InputPin" href="FMU_Examples.uml#_mJEG8MXXEeWwx_puHDzFYw"/>

-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mJiBAsXXEeWwx_puHDzFYw" x="-15" y="13"/>

-              </children>

-              <children xmi:type="notation:Shape" xmi:id="_mJioEsXXEeWwx_puHDzFYw" type="InputPin_AddStructuralFeatureValueActionValueShape">

-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mLCc48XXEeWwx_puHDzFYw" source="PapyrusCSSForceValue">

-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mLCc5MXXEeWwx_puHDzFYw" key="mutable" value="true"/>

-                </eAnnotations>

-                <children xmi:type="notation:DecorationNode" xmi:id="_mJioFcXXEeWwx_puHDzFYw" type="InputPin_AddStructuralFeatureValueActionValueNameLabel">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_mJioFsXXEeWwx_puHDzFYw" x="21" y="-2"/>

-                </children>

-                <children xmi:type="notation:DecorationNode" xmi:id="_mJioF8XXEeWwx_puHDzFYw" type="InputPin_AddStructuralFeatureValueActionValueStereotypeLabel">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_mJioGMXXEeWwx_puHDzFYw" y="5"/>

-                </children>

-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_mJioE8XXEeWwx_puHDzFYw"/>

-                <element xmi:type="uml:InputPin" href="FMU_Examples.uml#_mJHKQMXXEeWwx_puHDzFYw"/>

-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mJioFMXXEeWwx_puHDzFYw" x="-15" y="58"/>

-              </children>

-              <children xmi:type="notation:Shape" xmi:id="_mJioGcXXEeWwx_puHDzFYw" type="OutputPin_AddStructuralFeatureValueActionResultShape">

-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mLCc5cXXEeWwx_puHDzFYw" source="PapyrusCSSForceValue">

-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mLCc5sXXEeWwx_puHDzFYw" key="mutable" value="true"/>

-                </eAnnotations>

-                <children xmi:type="notation:DecorationNode" xmi:id="_mJioHMXXEeWwx_puHDzFYw" visible="false" type="OutputPin_AddStructuralFeatureValueActionResultNameLabel">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_mJioHcXXEeWwx_puHDzFYw" y="5"/>

-                </children>

-                <children xmi:type="notation:DecorationNode" xmi:id="_mJioHsXXEeWwx_puHDzFYw" type="OutputPin_AddStructuralFeatureValueActionResultStereotypeLabel">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_mJioH8XXEeWwx_puHDzFYw" y="5"/>

-                </children>

-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_mJioGsXXEeWwx_puHDzFYw"/>

-                <element xmi:type="uml:OutputPin" href="FMU_Examples.uml#_mJFVEMXXEeWwx_puHDzFYw"/>

-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mJioG8XXEeWwx_puHDzFYw" x="117" y="31"/>

-              </children>

-              <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_mJKNkcXXEeWwx_puHDzFYw"/>

-              <element xmi:type="uml:AddStructuralFeatureValueAction" href="FMU_Examples.uml#_mI_OcMXXEeWwx_puHDzFYw"/>

-              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mJKNksXXEeWwx_puHDzFYw" x="131" y="3" width="118" height="85"/>

-            </children>

-            <children xmi:type="notation:Shape" xmi:id="_rw55MMXXEeWwx_puHDzFYw" type="ReadSelfAction_Shape">

-              <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ryU1gMXXEeWwx_puHDzFYw" source="PapyrusCSSForceValue">

-                <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ryU1gcXXEeWwx_puHDzFYw" key="mutable" value="true"/>

-              </eAnnotations>

-              <children xmi:type="notation:DecorationNode" xmi:id="_rw55M8XXEeWwx_puHDzFYw" type="ReadSelfAction_NameLabel"/>

-              <children xmi:type="notation:DecorationNode" xmi:id="_rw55NMXXEeWwx_puHDzFYw" type="ReadSelfAction_FloatingNameLabel">

-                <layoutConstraint xmi:type="notation:Location" xmi:id="_rw55NcXXEeWwx_puHDzFYw" y="5"/>

-              </children>

-              <children xmi:type="notation:BasicCompartment" xmi:id="_rxFfYMXXEeWwx_puHDzFYw" type="compartment_shape_display">

-                <styles xmi:type="notation:TitleStyle" xmi:id="_rxFfYcXXEeWwx_puHDzFYw"/>

-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rxFfYsXXEeWwx_puHDzFYw"/>

-              </children>

-              <children xmi:type="notation:Shape" xmi:id="_rxGGcMXXEeWwx_puHDzFYw" type="OutputPin_ReadSelfActionResultShape">

-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ryU1gsXXEeWwx_puHDzFYw" source="PapyrusCSSForceValue">

-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ryU1g8XXEeWwx_puHDzFYw" key="mutable" value="true"/>

-                </eAnnotations>

-                <children xmi:type="notation:DecorationNode" xmi:id="_rxGGc8XXEeWwx_puHDzFYw" visible="false" type="OutputPin_ReadSelfActionResultNameLabel">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_rxGGdMXXEeWwx_puHDzFYw" y="5"/>

-                </children>

-                <children xmi:type="notation:DecorationNode" xmi:id="_rxGGdcXXEeWwx_puHDzFYw" type="OutputPin_ReadSelfActionResultStereotypeLabel">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_rxGGdsXXEeWwx_puHDzFYw" y="5"/>

-                </children>

-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_rxGGccXXEeWwx_puHDzFYw"/>

-                <element xmi:type="uml:OutputPin" href="FMU_Examples.uml#_rwlJEMXXEeWwx_puHDzFYw"/>

-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rxGGcsXXEeWwx_puHDzFYw"/>

-              </children>

-              <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_rw55McXXEeWwx_puHDzFYw"/>

-              <element xmi:type="uml:ReadSelfAction" href="FMU_Examples.uml#_rwkiAMXXEeWwx_puHDzFYw"/>

-              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rw55MsXXEeWwx_puHDzFYw" x="11" y="3"/>

-            </children>

-            <children xmi:type="notation:Shape" xmi:id="_uImJUMXXEeWwx_puHDzFYw" type="ValueSpecificationAction_Shape">

-              <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uKltYMXXEeWwx_puHDzFYw" source="PapyrusCSSForceValue">

-                <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uKltYcXXEeWwx_puHDzFYw" key="mutable" value="true"/>

-              </eAnnotations>

-              <children xmi:type="notation:DecorationNode" xmi:id="_uImwYMXXEeWwx_puHDzFYw" type="ValueSpecificationAction_NameLabel"/>

-              <children xmi:type="notation:DecorationNode" xmi:id="_uImwYcXXEeWwx_puHDzFYw" type="ValueSpecificationAction_FloatingNameLabel">

-                <layoutConstraint xmi:type="notation:Location" xmi:id="_uImwYsXXEeWwx_puHDzFYw" y="5"/>

-              </children>

-              <children xmi:type="notation:BasicCompartment" xmi:id="_uIyWkMXXEeWwx_puHDzFYw" type="compartment_shape_display">

-                <styles xmi:type="notation:TitleStyle" xmi:id="_uIyWkcXXEeWwx_puHDzFYw"/>

-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uIyWksXXEeWwx_puHDzFYw"/>

-              </children>

-              <children xmi:type="notation:Shape" xmi:id="_uIy9oMXXEeWwx_puHDzFYw" type="OutputPin_ValueSpecificationActionResultShape">

-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uKltYsXXEeWwx_puHDzFYw" source="PapyrusCSSForceValue">

-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uKltY8XXEeWwx_puHDzFYw" key="mutable" value="true"/>

-                </eAnnotations>

-                <children xmi:type="notation:DecorationNode" xmi:id="_uIy9o8XXEeWwx_puHDzFYw" visible="false" type="OutputPin_ValueSpecificationActionResultNameLabel">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_uIy9pMXXEeWwx_puHDzFYw" y="5"/>

-                </children>

-                <children xmi:type="notation:DecorationNode" xmi:id="_uIy9pcXXEeWwx_puHDzFYw" type="OutputPin_ValueSpecificationActionResultStereotypeLabel">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_uIy9psXXEeWwx_puHDzFYw" y="5"/>

-                </children>

-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_uIy9ocXXEeWwx_puHDzFYw"/>

-                <element xmi:type="uml:OutputPin" href="FMU_Examples.uml#_uIQLEMXXEeWwx_puHDzFYw"/>

-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uIy9osXXEeWwx_puHDzFYw"/>

-              </children>

-              <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_uImJUcXXEeWwx_puHDzFYw"/>

-              <element xmi:type="uml:ValueSpecificationAction" href="FMU_Examples.uml#_uIPkAMXXEeWwx_puHDzFYw"/>

-              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uImJUsXXEeWwx_puHDzFYw" x="11" y="48"/>

-            </children>

-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ibS0ssXXEeWwx_puHDzFYw"/>

-          </children>

-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_ibQ_gcXXEeWwx_puHDzFYw"/>

-          <element xmi:type="uml:StructuredActivityNode" href="FMU_Examples.uml#_ia5zIMXXEeWwx_puHDzFYw"/>

-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ibQ_gsXXEeWwx_puHDzFYw" x="96" y="394" width="292" height="135"/>

-        </children>

-        <children xmi:type="notation:Shape" xmi:id="_xGTQkMXXEeWwx_puHDzFYw" type="StructuredActivityNode_Shape">

-          <children xmi:type="notation:DecorationNode" xmi:id="_xGTQk8XXEeWwx_puHDzFYw" type="StructuredActivityNode_KeywordLabel"/>

-          <children xmi:type="notation:BasicCompartment" xmi:id="_0f_zkBdVEeaPc6X8OcC2hw" type="StructuredActivityNode_ActivityNodeCompartment">

-            <children xmi:type="notation:Shape" xmi:id="_y2WR4MXXEeWwx_puHDzFYw" type="AddStructuralFeatureValueAction_Shape">

-              <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_y4_WMMXXEeWwx_puHDzFYw" source="PapyrusCSSForceValue">

-                <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_y4_WMcXXEeWwx_puHDzFYw" key="mutable" value="true"/>

-              </eAnnotations>

-              <children xmi:type="notation:DecorationNode" xmi:id="_y2W48MXXEeWwx_puHDzFYw" type="AddStructuralFeatureValueAction_NameLabel"/>

-              <children xmi:type="notation:DecorationNode" xmi:id="_y2W48cXXEeWwx_puHDzFYw" type="AddStructuralFeatureValueAction_FloatingNameLabel">

-                <layoutConstraint xmi:type="notation:Location" xmi:id="_y2W48sXXEeWwx_puHDzFYw" y="5"/>

-              </children>

-              <children xmi:type="notation:BasicCompartment" xmi:id="_y25rgMXXEeWwx_puHDzFYw" type="compartment_shape_display">

-                <styles xmi:type="notation:TitleStyle" xmi:id="_y25rgcXXEeWwx_puHDzFYw"/>

-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y25rgsXXEeWwx_puHDzFYw"/>

-              </children>

-              <children xmi:type="notation:Shape" xmi:id="_y265oMXXEeWwx_puHDzFYw" type="InputPin_AddStructuralFeatureValueActionObjectShape">

-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_y4_WMsXXEeWwx_puHDzFYw" source="PapyrusCSSForceValue">

-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_y4_WM8XXEeWwx_puHDzFYw" key="mutable" value="true"/>

-                </eAnnotations>

-                <children xmi:type="notation:DecorationNode" xmi:id="_y265o8XXEeWwx_puHDzFYw" type="InputPin_AddStructuralFeatureValueActionObjectNameLabel">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_y265pMXXEeWwx_puHDzFYw" x="20" y="1"/>

-                </children>

-                <children xmi:type="notation:DecorationNode" xmi:id="_y265pcXXEeWwx_puHDzFYw" type="InputPin_AddStructuralFeatureValueActionObjectStereotypeLabel">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_y265psXXEeWwx_puHDzFYw" y="5"/>

-                </children>

-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_y265ocXXEeWwx_puHDzFYw"/>

-                <element xmi:type="uml:InputPin" href="FMU_Examples.uml#_y2PkMMXXEeWwx_puHDzFYw"/>

-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y265osXXEeWwx_puHDzFYw" x="-15" y="12"/>

-              </children>

-              <children xmi:type="notation:Shape" xmi:id="_y27gsMXXEeWwx_puHDzFYw" type="InputPin_AddStructuralFeatureValueActionValueShape">

-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_y4_WNMXXEeWwx_puHDzFYw" source="PapyrusCSSForceValue">

-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_y4_WNcXXEeWwx_puHDzFYw" key="mutable" value="true"/>

-                </eAnnotations>

-                <children xmi:type="notation:DecorationNode" xmi:id="_y27gs8XXEeWwx_puHDzFYw" type="InputPin_AddStructuralFeatureValueActionValueNameLabel">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_y27gtMXXEeWwx_puHDzFYw" x="17" y="1"/>

-                </children>

-                <children xmi:type="notation:DecorationNode" xmi:id="_y27gtcXXEeWwx_puHDzFYw" type="InputPin_AddStructuralFeatureValueActionValueStereotypeLabel">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_y27gtsXXEeWwx_puHDzFYw" y="5"/>

-                </children>

-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_y27gscXXEeWwx_puHDzFYw"/>

-                <element xmi:type="uml:InputPin" href="FMU_Examples.uml#_y2SAcMXXEeWwx_puHDzFYw"/>

-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y27gssXXEeWwx_puHDzFYw" x="-15" y="52"/>

-              </children>

-              <children xmi:type="notation:Shape" xmi:id="_y27gt8XXEeWwx_puHDzFYw" type="OutputPin_AddStructuralFeatureValueActionResultShape">

-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_y4_WNsXXEeWwx_puHDzFYw" source="PapyrusCSSForceValue">

-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_y4_WN8XXEeWwx_puHDzFYw" key="mutable" value="true"/>

-                </eAnnotations>

-                <children xmi:type="notation:DecorationNode" xmi:id="_y27gusXXEeWwx_puHDzFYw" visible="false" type="OutputPin_AddStructuralFeatureValueActionResultNameLabel">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_y27gu8XXEeWwx_puHDzFYw" y="5"/>

-                </children>

-                <children xmi:type="notation:DecorationNode" xmi:id="_y27gvMXXEeWwx_puHDzFYw" type="OutputPin_AddStructuralFeatureValueActionResultStereotypeLabel">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_y27gvcXXEeWwx_puHDzFYw" y="5"/>

-                </children>

-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_y27guMXXEeWwx_puHDzFYw"/>

-                <element xmi:type="uml:OutputPin" href="FMU_Examples.uml#_y2QyUMXXEeWwx_puHDzFYw"/>

-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y27gucXXEeWwx_puHDzFYw" x="117" y="34"/>

-              </children>

-              <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_y2WR4cXXEeWwx_puHDzFYw"/>

-              <element xmi:type="uml:AddStructuralFeatureValueAction" href="FMU_Examples.uml#_y2Mg4MXXEeWwx_puHDzFYw"/>

-              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y2WR4sXXEeWwx_puHDzFYw" x="131" y="9" width="118" height="85"/>

-            </children>

-            <children xmi:type="notation:Shape" xmi:id="_4nJL0MXXEeWwx_puHDzFYw" type="ReadSelfAction_Shape">

-              <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4orc4MXXEeWwx_puHDzFYw" source="PapyrusCSSForceValue">

-                <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4orc4cXXEeWwx_puHDzFYw" key="mutable" value="true"/>

-              </eAnnotations>

-              <children xmi:type="notation:DecorationNode" xmi:id="_4nJL08XXEeWwx_puHDzFYw" type="ReadSelfAction_NameLabel"/>

-              <children xmi:type="notation:DecorationNode" xmi:id="_4nJL1MXXEeWwx_puHDzFYw" type="ReadSelfAction_FloatingNameLabel">

-                <layoutConstraint xmi:type="notation:Location" xmi:id="_4nJL1cXXEeWwx_puHDzFYw" y="5"/>

-              </children>

-              <children xmi:type="notation:BasicCompartment" xmi:id="_4nZqgMXXEeWwx_puHDzFYw" type="compartment_shape_display">

-                <styles xmi:type="notation:TitleStyle" xmi:id="_4nZqgcXXEeWwx_puHDzFYw"/>

-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4nZqgsXXEeWwx_puHDzFYw"/>

-              </children>

-              <children xmi:type="notation:Shape" xmi:id="_4naRkMXXEeWwx_puHDzFYw" type="OutputPin_ReadSelfActionResultShape">

-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4orc4sXXEeWwx_puHDzFYw" source="PapyrusCSSForceValue">

-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4orc48XXEeWwx_puHDzFYw" key="mutable" value="true"/>

-                </eAnnotations>

-                <children xmi:type="notation:DecorationNode" xmi:id="_4naRk8XXEeWwx_puHDzFYw" visible="false" type="OutputPin_ReadSelfActionResultNameLabel">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_4naRlMXXEeWwx_puHDzFYw" y="5"/>

-                </children>

-                <children xmi:type="notation:DecorationNode" xmi:id="_4naRlcXXEeWwx_puHDzFYw" type="OutputPin_ReadSelfActionResultStereotypeLabel">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_4naRlsXXEeWwx_puHDzFYw" y="5"/>

-                </children>

-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_4naRkcXXEeWwx_puHDzFYw"/>

-                <element xmi:type="uml:OutputPin" href="FMU_Examples.uml#_4mxYYMXXEeWwx_puHDzFYw"/>

-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4naRksXXEeWwx_puHDzFYw"/>

-              </children>

-              <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_4nJL0cXXEeWwx_puHDzFYw"/>

-              <element xmi:type="uml:ReadSelfAction" href="FMU_Examples.uml#_4mrRwMXXEeWwx_puHDzFYw"/>

-              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4nJL0sXXEeWwx_puHDzFYw" x="11" y="8"/>

-            </children>

-            <children xmi:type="notation:Shape" xmi:id="_61hu8MXXEeWwx_puHDzFYw" type="ValueSpecificationAction_Shape">

-              <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_63OYEMXXEeWwx_puHDzFYw" source="PapyrusCSSForceValue">

-                <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_63OYEcXXEeWwx_puHDzFYw" key="mutable" value="true"/>

-              </eAnnotations>

-              <children xmi:type="notation:DecorationNode" xmi:id="_61hu88XXEeWwx_puHDzFYw" type="ValueSpecificationAction_NameLabel"/>

-              <children xmi:type="notation:DecorationNode" xmi:id="_61hu9MXXEeWwx_puHDzFYw" type="ValueSpecificationAction_FloatingNameLabel">

-                <layoutConstraint xmi:type="notation:Location" xmi:id="_61hu9cXXEeWwx_puHDzFYw" y="5"/>

-              </children>

-              <children xmi:type="notation:BasicCompartment" xmi:id="_61w_gMXXEeWwx_puHDzFYw" type="compartment_shape_display">

-                <styles xmi:type="notation:TitleStyle" xmi:id="_61w_gcXXEeWwx_puHDzFYw"/>

-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_61w_gsXXEeWwx_puHDzFYw"/>

-              </children>

-              <children xmi:type="notation:Shape" xmi:id="_61xmkMXXEeWwx_puHDzFYw" type="OutputPin_ValueSpecificationActionResultShape">

-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_63OYEsXXEeWwx_puHDzFYw" source="PapyrusCSSForceValue">

-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_63OYE8XXEeWwx_puHDzFYw" key="mutable" value="true"/>

-                </eAnnotations>

-                <children xmi:type="notation:DecorationNode" xmi:id="_61yNosXXEeWwx_puHDzFYw" visible="false" type="OutputPin_ValueSpecificationActionResultNameLabel">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_61yNo8XXEeWwx_puHDzFYw" y="5"/>

-                </children>

-                <children xmi:type="notation:DecorationNode" xmi:id="_61yNpMXXEeWwx_puHDzFYw" type="OutputPin_ValueSpecificationActionResultStereotypeLabel">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_61yNpcXXEeWwx_puHDzFYw" y="5"/>

-                </children>

-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_61yNoMXXEeWwx_puHDzFYw"/>

-                <element xmi:type="uml:OutputPin" href="FMU_Examples.uml#_61JUcMXXEeWwx_puHDzFYw"/>

-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_61yNocXXEeWwx_puHDzFYw"/>

-              </children>

-              <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_61hu8cXXEeWwx_puHDzFYw"/>

-              <element xmi:type="uml:ValueSpecificationAction" href="FMU_Examples.uml#_61ItYMXXEeWwx_puHDzFYw"/>

-              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_61hu8sXXEeWwx_puHDzFYw" x="11" y="49"/>

-            </children>

-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xGTQlcXXEeWwx_puHDzFYw"/>

-          </children>

-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_xGTQkcXXEeWwx_puHDzFYw"/>

-          <element xmi:type="uml:StructuredActivityNode" href="FMU_Examples.uml#_xF9SUMXXEeWwx_puHDzFYw"/>

-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xGTQksXXEeWwx_puHDzFYw" x="96" y="653" width="292" height="135"/>

-        </children>

-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_o4iCH8XQEeWwx_puHDzFYw"/>

-      </children>

-      <element xmi:type="uml:Activity" href="FMU_Examples.uml#_bnRAUMXQEeWwx_puHDzFYw"/>

-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_o4iCIMXQEeWwx_puHDzFYw" width="855" height="846"/>

-    </children>

-    <styles xmi:type="notation:StringValueStyle" xmi:id="_o4iCIcXQEeWwx_puHDzFYw" name="diagram_compatibility_version" stringValue="1.2.0"/>

-    <styles xmi:type="notation:DiagramStyle" xmi:id="_o4iCIsXQEeWwx_puHDzFYw"/>

-    <styles xmi:type="style:PapyrusViewStyle" xmi:id="_o4iCI8XQEeWwx_puHDzFYw">

-      <owner xmi:type="uml:Activity" href="FMU_Examples.uml#_bnRAUMXQEeWwx_puHDzFYw"/>

-      <configuration xmi:type="configuration:PapyrusDiagram" href="platform:/plugin/org.eclipse.papyrus.moka.simex/config/simex.configuration#_VerKMGAyEeWAtYeYccnjOA"/>

-    </styles>

-    <element xmi:type="uml:Activity" href="FMU_Examples.uml#_bnRAUMXQEeWwx_puHDzFYw"/>

-    <edges xmi:type="notation:Connector" xmi:id="_s5yJoMXTEeWwx_puHDzFYw" type="ObjectFlow_Edge" source="_jzqSoMXTEeWwx_puHDzFYw" target="_JvEIUMXTEeWwx_puHDzFYw">

-      <children xmi:type="notation:DecorationNode" xmi:id="_s5yJo8XTEeWwx_puHDzFYw" type="ObjectFlow_NameLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_s5yJpMXTEeWwx_puHDzFYw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_s5yJpcXTEeWwx_puHDzFYw" visible="false" type="ObjectFlow_WeightLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_s5yJpsXTEeWwx_puHDzFYw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_s5yJp8XTEeWwx_puHDzFYw" type="ObjectFlow_SelectionLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_s5yJqMXTEeWwx_puHDzFYw" x="20" y="40"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_s5ywsMXTEeWwx_puHDzFYw" type="ObjectFlow_TransformationLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_s5ywscXTEeWwx_puHDzFYw" x="-20" y="-60"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_s5ywssXTEeWwx_puHDzFYw" type="ObjectFlow_KeywordLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_s5yws8XTEeWwx_puHDzFYw" y="-20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_s5ywtMXTEeWwx_puHDzFYw" visible="false" type="ObjectFlow_GuardLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_s5ywtcXTEeWwx_puHDzFYw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_s5ywtsXTEeWwx_puHDzFYw" type="ObjectFlow_StereotypeLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_s5ywt8XTEeWwx_puHDzFYw" y="-20"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_s5yJocXTEeWwx_puHDzFYw"/>

-      <element xmi:type="uml:ObjectFlow" href="FMU_Examples.uml#_s5i5EMXTEeWwx_puHDzFYw"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_s5yJosXTEeWwx_puHDzFYw" points="[160, 249, -643984, -643984]$[225, 247, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rJLTsM5PEeWaRpodR1S6WA" id="(0.8125,0.75)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_s6etMMXTEeWwx_puHDzFYw" id="(0.0625,0.6875)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_upS_cMXTEeWwx_puHDzFYw" type="ObjectFlow_Edge" source="_l07m0MXTEeWwx_puHDzFYw" target="_JvEvYcXTEeWwx_puHDzFYw">

-      <children xmi:type="notation:DecorationNode" xmi:id="_upTmgMXTEeWwx_puHDzFYw" type="ObjectFlow_NameLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_upTmgcXTEeWwx_puHDzFYw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_upTmgsXTEeWwx_puHDzFYw" visible="false" type="ObjectFlow_WeightLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_upTmg8XTEeWwx_puHDzFYw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_upTmhMXTEeWwx_puHDzFYw" type="ObjectFlow_SelectionLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_upTmhcXTEeWwx_puHDzFYw" x="20" y="40"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_upTmhsXTEeWwx_puHDzFYw" type="ObjectFlow_TransformationLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_upTmh8XTEeWwx_puHDzFYw" x="-20" y="-60"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_upTmiMXTEeWwx_puHDzFYw" type="ObjectFlow_KeywordLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_upTmicXTEeWwx_puHDzFYw" y="-20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_upUNkMXTEeWwx_puHDzFYw" visible="false" type="ObjectFlow_GuardLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_upUNkcXTEeWwx_puHDzFYw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_upUNksXTEeWwx_puHDzFYw" type="ObjectFlow_StereotypeLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_upUNk8XTEeWwx_puHDzFYw" y="-20"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_upS_ccXTEeWwx_puHDzFYw"/>

-      <element xmi:type="uml:ObjectFlow" href="FMU_Examples.uml#_upAEgMXTEeWwx_puHDzFYw"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_upS_csXTEeWwx_puHDzFYw" points="[161, 295, -643984, -643984]$[225, 293, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_pssuoM5PEeWaRpodR1S6WA" id="(0.9375,0.625)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_uqDNYMXTEeWwx_puHDzFYw" id="(0.125,0.4375)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_WO1w0MXVEeWwx_puHDzFYw" type="ControlFlow_Edge" source="_MwP20MXSEeWwx_puHDzFYw" target="_xrHSAMXQEeWwx_puHDzFYw">

-      <children xmi:type="notation:DecorationNode" xmi:id="_WO2X4MXVEeWwx_puHDzFYw" type="ControlFlow_NameLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_WO2X4cXVEeWwx_puHDzFYw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_WO2X4sXVEeWwx_puHDzFYw" type="ControlFlow_WeightLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_WO2X48XVEeWwx_puHDzFYw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_WO2X5MXVEeWwx_puHDzFYw" type="ControlFlow_GuardLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_WO2X5cXVEeWwx_puHDzFYw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_WO2X5sXVEeWwx_puHDzFYw" type="ControlFlow_StereotypeLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_WO2X58XVEeWwx_puHDzFYw" y="-20"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_WO1w0cXVEeWwx_puHDzFYw"/>

-      <element xmi:type="uml:ControlFlow" href="FMU_Examples.uml#_WOXPsMXVEeWwx_puHDzFYw"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_WO1w0sXVEeWwx_puHDzFYw" points="[442, 73, -643984, -643984]$[442, 111, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WP0BMMXVEeWwx_puHDzFYw" id="(0.45,0.95)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WP0oQMXVEeWwx_puHDzFYw" id="(0.496,0.0425531914893617)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_c6oTYMXVEeWwx_puHDzFYw" type="ControlFlow_Edge" source="_xrHSAMXQEeWwx_puHDzFYw" target="_bfOXQMXTEeWwx_puHDzFYw">

-      <children xmi:type="notation:DecorationNode" xmi:id="_c6o6cMXVEeWwx_puHDzFYw" type="ControlFlow_NameLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_xNCcoMXVEeWwx_puHDzFYw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_c6o6ccXVEeWwx_puHDzFYw" x="-5" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_c6o6csXVEeWwx_puHDzFYw" type="ControlFlow_WeightLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_xNl2QMXVEeWwx_puHDzFYw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_c6o6c8XVEeWwx_puHDzFYw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_c6o6dMXVEeWwx_puHDzFYw" type="ControlFlow_GuardLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_xOFlgMXVEeWwx_puHDzFYw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_c6o6dcXVEeWwx_puHDzFYw" x="5" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_c6o6dsXVEeWwx_puHDzFYw" type="ControlFlow_StereotypeLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_xOt3oMXVEeWwx_puHDzFYw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_c6o6d8XVEeWwx_puHDzFYw" y="-20"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_c6oTYcXVEeWwx_puHDzFYw"/>

-      <element xmi:type="uml:ControlFlow" href="FMU_Examples.uml#_c6JyQMXVEeWwx_puHDzFYw"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_c6oTYsXVEeWwx_puHDzFYw" points="[437, 152, -643984, -643984]$[437, 187, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_c7ZIYMXVEeWwx_puHDzFYw" id="(0.496,0.9148936170212766)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_c7ZIYcXVEeWwx_puHDzFYw" id="(0.4965753424657534,0.0)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_dcki0MXVEeWwx_puHDzFYw" type="ControlFlow_Edge" source="_bfOXQMXTEeWwx_puHDzFYw" target="_x6RvYMXQEeWwx_puHDzFYw">

-      <children xmi:type="notation:DecorationNode" xmi:id="_dcki08XVEeWwx_puHDzFYw" type="ControlFlow_NameLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_xLC4kMXVEeWwx_puHDzFYw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_dcki1MXVEeWwx_puHDzFYw" x="4" y="18"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_dcki1cXVEeWwx_puHDzFYw" type="ControlFlow_WeightLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_xLoucMXVEeWwx_puHDzFYw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_dcki1sXVEeWwx_puHDzFYw" x="2" y="-17"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_dcki18XVEeWwx_puHDzFYw" type="ControlFlow_GuardLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_xMC-IMXVEeWwx_puHDzFYw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_dcki2MXVEeWwx_puHDzFYw" x="6" y="18"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_dcki2cXVEeWwx_puHDzFYw" type="ControlFlow_StereotypeLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_xMcmwMXVEeWwx_puHDzFYw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_dcki2sXVEeWwx_puHDzFYw" x="-1" y="-18"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_dcki0cXVEeWwx_puHDzFYw"/>

-      <element xmi:type="uml:ControlFlow" href="FMU_Examples.uml#_dcHP0MXVEeWwx_puHDzFYw"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dcki0sXVEeWwx_puHDzFYw" points="[432, 322, -643984, -643984]$[436, 357, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ddWl8MXVEeWwx_puHDzFYw" id="(0.4965753424657534,1.0)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ddWl8cXVEeWwx_puHDzFYw" id="(0.48876190476190506,0.0425531914893617)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_FILDcMXYEeWwx_puHDzFYw" type="ObjectFlow_Edge" source="_rxGGcMXXEeWwx_puHDzFYw" target="_mJiBAMXXEeWwx_puHDzFYw">

-      <children xmi:type="notation:DecorationNode" xmi:id="_FILDc8XYEeWwx_puHDzFYw" type="ObjectFlow_NameLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_FILDdMXYEeWwx_puHDzFYw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_FILDdcXYEeWwx_puHDzFYw" visible="false" type="ObjectFlow_WeightLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_FILDdsXYEeWwx_puHDzFYw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_FILqgMXYEeWwx_puHDzFYw" type="ObjectFlow_SelectionLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_FILqgcXYEeWwx_puHDzFYw" x="20" y="40"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_FILqgsXYEeWwx_puHDzFYw" type="ObjectFlow_TransformationLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_FILqg8XYEeWwx_puHDzFYw" x="-20" y="-60"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_FILqhMXYEeWwx_puHDzFYw" type="ObjectFlow_KeywordLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_FILqhcXYEeWwx_puHDzFYw" y="-20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_FILqhsXYEeWwx_puHDzFYw" visible="false" type="ObjectFlow_GuardLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_FILqh8XYEeWwx_puHDzFYw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_FILqiMXYEeWwx_puHDzFYw" type="ObjectFlow_StereotypeLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_FILqicXYEeWwx_puHDzFYw" y="-20"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_FILDccXYEeWwx_puHDzFYw"/>

-      <element xmi:type="uml:ObjectFlow" href="FMU_Examples.uml#_FHrUMMXYEeWwx_puHDzFYw"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_FILDcsXYEeWwx_puHDzFYw" points="[157, 483, -643984, -643984]$[227, 476, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_om9OkM5PEeWaRpodR1S6WA" id="(0.8125,0.6875)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_pFVMoM5PEeWaRpodR1S6WA" id="(0.0,0.75)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_HGDFYMXYEeWwx_puHDzFYw" type="ObjectFlow_Edge" source="_uIy9oMXXEeWwx_puHDzFYw" target="_mJioEsXXEeWwx_puHDzFYw">

-      <children xmi:type="notation:DecorationNode" xmi:id="_HGDFY8XYEeWwx_puHDzFYw" type="ObjectFlow_NameLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_HGDFZMXYEeWwx_puHDzFYw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_HGDFZcXYEeWwx_puHDzFYw" visible="false" type="ObjectFlow_WeightLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_HGDFZsXYEeWwx_puHDzFYw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_HGDFZ8XYEeWwx_puHDzFYw" type="ObjectFlow_SelectionLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_HGDFaMXYEeWwx_puHDzFYw" x="20" y="40"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_HGDFacXYEeWwx_puHDzFYw" type="ObjectFlow_TransformationLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_HGDFasXYEeWwx_puHDzFYw" x="-20" y="-60"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_HGDFa8XYEeWwx_puHDzFYw" type="ObjectFlow_KeywordLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_HGDFbMXYEeWwx_puHDzFYw" y="-20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_HGDFbcXYEeWwx_puHDzFYw" visible="false" type="ObjectFlow_GuardLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_HGDFbsXYEeWwx_puHDzFYw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_HGDFb8XYEeWwx_puHDzFYw" type="ObjectFlow_StereotypeLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_HGDFcMXYEeWwx_puHDzFYw" y="-20"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_HGDFYcXYEeWwx_puHDzFYw"/>

-      <element xmi:type="uml:ObjectFlow" href="FMU_Examples.uml#_HFo1sMXYEeWwx_puHDzFYw"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HGDFYsXYEeWwx_puHDzFYw" points="[165, 529, -643984, -643984]$[222, 529, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nDa_QM5PEeWaRpodR1S6WA" id="(0.9375,0.625)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nbA_4M5PEeWaRpodR1S6WA" id="(0.125,0.6875)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_Klx7oMXYEeWwx_puHDzFYw" type="ObjectFlow_Edge" source="_4naRkMXXEeWwx_puHDzFYw" target="_y265oMXXEeWwx_puHDzFYw">

-      <children xmi:type="notation:DecorationNode" xmi:id="_KlyisMXYEeWwx_puHDzFYw" type="ObjectFlow_NameLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_KlyiscXYEeWwx_puHDzFYw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_KlyissXYEeWwx_puHDzFYw" visible="false" type="ObjectFlow_WeightLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_Klyis8XYEeWwx_puHDzFYw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_KlyitMXYEeWwx_puHDzFYw" type="ObjectFlow_SelectionLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_KlyitcXYEeWwx_puHDzFYw" x="20" y="40"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_KlyitsXYEeWwx_puHDzFYw" type="ObjectFlow_TransformationLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_Klyit8XYEeWwx_puHDzFYw" x="-20" y="-60"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_KlyiuMXYEeWwx_puHDzFYw" type="ObjectFlow_KeywordLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_KlyiucXYEeWwx_puHDzFYw" y="-20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_KlyiusXYEeWwx_puHDzFYw" visible="false" type="ObjectFlow_GuardLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_Klyiu8XYEeWwx_puHDzFYw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_KlyivMXYEeWwx_puHDzFYw" type="ObjectFlow_StereotypeLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_KlyivcXYEeWwx_puHDzFYw" y="-20"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_Klx7ocXYEeWwx_puHDzFYw"/>

-      <element xmi:type="uml:ObjectFlow" href="FMU_Examples.uml#_KlY6EMXYEeWwx_puHDzFYw"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Klx7osXYEeWwx_puHDzFYw" points="[157, 747, -643984, -643984]$[227, 740, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_lzkg8M5PEeWaRpodR1S6WA" id="(0.9375,0.4375)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mMhMcM5PEeWaRpodR1S6WA" id="(0.0625,0.5625)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_MTD80MXYEeWwx_puHDzFYw" type="ObjectFlow_Edge" source="_61xmkMXXEeWwx_puHDzFYw" target="_y27gsMXXEeWwx_puHDzFYw">

-      <children xmi:type="notation:DecorationNode" xmi:id="_MTD808XYEeWwx_puHDzFYw" type="ObjectFlow_NameLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_MTD81MXYEeWwx_puHDzFYw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_MTD81cXYEeWwx_puHDzFYw" visible="false" type="ObjectFlow_WeightLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_MTD81sXYEeWwx_puHDzFYw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_MTD818XYEeWwx_puHDzFYw" type="ObjectFlow_SelectionLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_MTD82MXYEeWwx_puHDzFYw" x="20" y="40"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_MTD82cXYEeWwx_puHDzFYw" type="ObjectFlow_TransformationLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_MTD82sXYEeWwx_puHDzFYw" x="-20" y="-60"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_MTD828XYEeWwx_puHDzFYw" type="ObjectFlow_KeywordLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_MTD83MXYEeWwx_puHDzFYw" y="-20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_MTD83cXYEeWwx_puHDzFYw" visible="false" type="ObjectFlow_GuardLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_MTD83sXYEeWwx_puHDzFYw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_MTD838XYEeWwx_puHDzFYw" type="ObjectFlow_StereotypeLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_MTD84MXYEeWwx_puHDzFYw" y="-20"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_MTD80cXYEeWwx_puHDzFYw"/>

-      <element xmi:type="uml:ObjectFlow" href="FMU_Examples.uml#_MSnQ4MXYEeWwx_puHDzFYw"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_MTD80sXYEeWwx_puHDzFYw" points="[160, 789, -643984, -643984]$[226, 796, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_joxdUM5PEeWaRpodR1S6WA" id="(0.9375,0.4375)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kV7eQM5PEeWaRpodR1S6WA" id="(0.0625,0.5625)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_Pz93wMXYEeWwx_puHDzFYw" type="ControlFlow_Edge" source="_x6RvYMXQEeWwx_puHDzFYw" target="_ibQ_gMXXEeWwx_puHDzFYw">

-      <children xmi:type="notation:DecorationNode" xmi:id="_Pz93w8XYEeWwx_puHDzFYw" type="ControlFlow_NameLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_Pz93xMXYEeWwx_puHDzFYw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_Pz93xcXYEeWwx_puHDzFYw" type="ControlFlow_WeightLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_Pz93xsXYEeWwx_puHDzFYw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_Pz93x8XYEeWwx_puHDzFYw" type="ControlFlow_GuardLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_Pz93yMXYEeWwx_puHDzFYw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_Pz93ycXYEeWwx_puHDzFYw" type="ControlFlow_StereotypeLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_Pz93ysXYEeWwx_puHDzFYw" y="-20"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_Pz93wcXYEeWwx_puHDzFYw"/>

-      <element xmi:type="uml:ControlFlow" href="FMU_Examples.uml#_PzgkwMXYEeWwx_puHDzFYw"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Pz93wsXYEeWwx_puHDzFYw" points="[240, 398, -643984, -643984]$[240, 430, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_P0xJAMXYEeWwx_puHDzFYw" id="(0.47843478260869576,0.9148936170212766)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_P0xJAcXYEeWwx_puHDzFYw" id="(0.4763996426444313,0.0)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_QZMrwMXYEeWwx_puHDzFYw" type="ControlFlow_Edge" source="_ibQ_gMXXEeWwx_puHDzFYw" target="_yIP58MXQEeWwx_puHDzFYw">

-      <children xmi:type="notation:DecorationNode" xmi:id="_QZMrw8XYEeWwx_puHDzFYw" type="ControlFlow_NameLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_QZMrxMXYEeWwx_puHDzFYw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_QZMrxcXYEeWwx_puHDzFYw" type="ControlFlow_WeightLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_QZMrxsXYEeWwx_puHDzFYw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_QZMrx8XYEeWwx_puHDzFYw" type="ControlFlow_GuardLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_QZMryMXYEeWwx_puHDzFYw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_QZMrycXYEeWwx_puHDzFYw" type="ControlFlow_StereotypeLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_QZMrysXYEeWwx_puHDzFYw" y="-20"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_QZMrwcXYEeWwx_puHDzFYw"/>

-      <element xmi:type="uml:ControlFlow" href="FMU_Examples.uml#_QYv_0MXYEeWwx_puHDzFYw"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QZMrwsXYEeWwx_puHDzFYw" points="[238, 565, -643984, -643984]$[241, 600, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QZ_9AMXYEeWwx_puHDzFYw" id="(0.4794520547945205,1.0)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QZ_9AcXYEeWwx_puHDzFYw" id="(0.487304347826087,0.0425531914893617)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_QyzekMXYEeWwx_puHDzFYw" type="ControlFlow_Edge" source="_yIP58MXQEeWwx_puHDzFYw" target="_xGTQkMXXEeWwx_puHDzFYw">

-      <children xmi:type="notation:DecorationNode" xmi:id="_Qy0FoMXYEeWwx_puHDzFYw" type="ControlFlow_NameLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_Qy0FocXYEeWwx_puHDzFYw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_Qy0FosXYEeWwx_puHDzFYw" type="ControlFlow_WeightLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_Qy0Fo8XYEeWwx_puHDzFYw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_Qy0FpMXYEeWwx_puHDzFYw" type="ControlFlow_GuardLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_Qy0FpcXYEeWwx_puHDzFYw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_Qy0FpsXYEeWwx_puHDzFYw" type="ControlFlow_StereotypeLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_Qy0Fp8XYEeWwx_puHDzFYw" y="-20"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_QyzekcXYEeWwx_puHDzFYw"/>

-      <element xmi:type="uml:ControlFlow" href="FMU_Examples.uml#_QyYn0MXYEeWwx_puHDzFYw"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QyzeksXYEeWwx_puHDzFYw" points="[242, 641, -643984, -643984]$[240, 689, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QznW4MXYEeWwx_puHDzFYw" id="(0.4932459016393443,0.9148936170212766)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QznW4cXYEeWwx_puHDzFYw" id="(0.4828767123287671,0.0)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_RTSVcMXYEeWwx_puHDzFYw" type="ControlFlow_Edge" source="_xGTQkMXXEeWwx_puHDzFYw" target="_hdHAEMXVEeWwx_puHDzFYw">

-      <children xmi:type="notation:DecorationNode" xmi:id="_RTSVc8XYEeWwx_puHDzFYw" type="ControlFlow_NameLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_RTSVdMXYEeWwx_puHDzFYw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_RTSVdcXYEeWwx_puHDzFYw" type="ControlFlow_WeightLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_RTSVdsXYEeWwx_puHDzFYw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_RTSVd8XYEeWwx_puHDzFYw" type="ControlFlow_GuardLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_RTSVeMXYEeWwx_puHDzFYw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_RTSVecXYEeWwx_puHDzFYw" type="ControlFlow_StereotypeLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_RTSVesXYEeWwx_puHDzFYw" y="-20"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_RTSVccXYEeWwx_puHDzFYw"/>

-      <element xmi:type="uml:ControlFlow" href="FMU_Examples.uml#_RS1CcMXYEeWwx_puHDzFYw"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_RTSVcsXYEeWwx_puHDzFYw" points="[393, 751, -643984, -643984]$[444, 751, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RUkH0MXYEeWwx_puHDzFYw" id="(1.0,0.46567164179104514)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RUkH0cXYEeWwx_puHDzFYw" id="(0.07740740740740648,0.654814814814813)"/>

-    </edges>

-  </notation:Diagram>

-  <notation:Diagram xmi:id="_E0DhcMaEEeWfFdnv26Efug" type="PapyrusUMLActivityDiagram" name="C2 Classifier Behavior diagram" measurementUnit="Pixel">

-    <children xmi:type="notation:Shape" xmi:id="_E0DhccaEEeWfFdnv26Efug" type="2001">

-      <children xmi:type="notation:DecorationNode" xmi:id="_E0DhcsaEEeWfFdnv26Efug" type="5001"/>

-      <children xmi:type="notation:BasicCompartment" xmi:id="_E0DhdMaEEeWfFdnv26Efug" type="7001">

-        <styles xmi:type="notation:SortingStyle" xmi:id="_E0DhdcaEEeWfFdnv26Efug"/>

-        <styles xmi:type="notation:FilteringStyle" xmi:id="_E0DhdsaEEeWfFdnv26Efug"/>

-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_E0Dhd8aEEeWfFdnv26Efug"/>

-      </children>

-      <children xmi:type="notation:BasicCompartment" xmi:id="_E0DheMaEEeWfFdnv26Efug" type="7002">

-        <styles xmi:type="notation:SortingStyle" xmi:id="_E0DhecaEEeWfFdnv26Efug"/>

-        <styles xmi:type="notation:FilteringStyle" xmi:id="_E0DhesaEEeWfFdnv26Efug"/>

-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_E0Dhe8aEEeWfFdnv26Efug"/>

-      </children>

-      <children xmi:type="notation:BasicCompartment" xmi:id="_E0DhfMaEEeWfFdnv26Efug" type="7003">

-        <styles xmi:type="notation:SortingStyle" xmi:id="_E0DhfcaEEeWfFdnv26Efug"/>

-        <styles xmi:type="notation:FilteringStyle" xmi:id="_E0DhfsaEEeWfFdnv26Efug"/>

-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_E0Dhf8aEEeWfFdnv26Efug"/>

-      </children>

-      <children xmi:type="notation:BasicCompartment" xmi:id="_E0DhgMaEEeWfFdnv26Efug" type="7004">

-        <children xmi:type="notation:Shape" xmi:id="_NmOhsMaEEeWfFdnv26Efug" type="3080">

-          <children xmi:type="notation:DecorationNode" xmi:id="_NmPIwMaEEeWfFdnv26Efug" type="5138"/>

-          <element xmi:type="uml:Comment" href="FMU_Examples.uml#_NmKQQMaEEeWfFdnv26Efug"/>

-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NmOhscaEEeWfFdnv26Efug" x="426" y="31"/>

-        </children>

-        <children xmi:type="notation:Shape" xmi:id="_tNOkoMaEEeWfFdnv26Efug" type="3063">

-          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_yIkdQMaEEeWfFdnv26Efug" source="PapyrusCSSForceValue">

-            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yIlEUMaEEeWfFdnv26Efug" key="mutable" value="true"/>

-          </eAnnotations>

-          <children xmi:type="notation:DecorationNode" xmi:id="_tNOko8aEEeWfFdnv26Efug" type="5078"/>

-          <children xmi:type="notation:DecorationNode" xmi:id="_tNPLsMaEEeWfFdnv26Efug" type="5079">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_tNPLscaEEeWfFdnv26Efug" x="92" y="14"/>

-          </children>

-          <children xmi:type="notation:DecorationNode" xmi:id="_tNPLssaEEeWfFdnv26Efug" type="5115">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_tNPLs8aEEeWfFdnv26Efug" y="5"/>

-          </children>

-          <children xmi:type="notation:DecorationNode" xmi:id="_tNPLtMaEEeWfFdnv26Efug" type="6040">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_tNPLtcaEEeWfFdnv26Efug" y="5"/>

-          </children>

-          <children xmi:type="notation:BasicCompartment" xmi:id="_tNcnEMaEEeWfFdnv26Efug" type="compartment_shape_display">

-            <styles xmi:type="notation:TitleStyle" xmi:id="_tNcnEcaEEeWfFdnv26Efug"/>

-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tNcnEsaEEeWfFdnv26Efug"/>

-          </children>

-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_tNOkocaEEeWfFdnv26Efug"/>

-          <element xmi:type="uml:AcceptEventAction" href="FMU_Examples.uml#_tNIeAMaEEeWfFdnv26Efug"/>

-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tNOkosaEEeWfFdnv26Efug" x="151" y="121"/>

-        </children>

-        <children xmi:type="notation:Shape" xmi:id="_-HgUcMaEEeWfFdnv26Efug" type="3063">

-          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_B10ZQMaFEeWfFdnv26Efug" source="PapyrusCSSForceValue">

-            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_B10ZQcaFEeWfFdnv26Efug" key="mutable" value="true"/>

-          </eAnnotations>

-          <children xmi:type="notation:DecorationNode" xmi:id="_-Hg7gMaEEeWfFdnv26Efug" type="5078"/>

-          <children xmi:type="notation:DecorationNode" xmi:id="_-Hg7gcaEEeWfFdnv26Efug" type="5079">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_-Hg7gsaEEeWfFdnv26Efug" x="91" y="15"/>

-          </children>

-          <children xmi:type="notation:DecorationNode" xmi:id="_-Hg7g8aEEeWfFdnv26Efug" type="5115">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_-Hg7hMaEEeWfFdnv26Efug" y="5"/>

-          </children>

-          <children xmi:type="notation:DecorationNode" xmi:id="_-HhikMaEEeWfFdnv26Efug" type="6040">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_-HhikcaEEeWfFdnv26Efug" y="5"/>

-          </children>

-          <children xmi:type="notation:BasicCompartment" xmi:id="_-HmbEMaEEeWfFdnv26Efug" type="compartment_shape_display">

-            <styles xmi:type="notation:TitleStyle" xmi:id="_-HmbEcaEEeWfFdnv26Efug"/>

-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-HmbEsaEEeWfFdnv26Efug"/>

-          </children>

-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_-HgUccaEEeWfFdnv26Efug"/>

-          <element xmi:type="uml:AcceptEventAction" href="FMU_Examples.uml#_9nmsYMaEEeWfFdnv26Efug"/>

-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-HgUcsaEEeWfFdnv26Efug" x="151" y="358"/>

-        </children>

-        <children xmi:type="notation:Shape" xmi:id="_ITJpEMaFEeWfFdnv26Efug" type="3004">

-          <children xmi:type="notation:DecorationNode" xmi:id="_ITKQIMaFEeWfFdnv26Efug" type="6034">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_ITKQIcaFEeWfFdnv26Efug" y="5"/>

-          </children>

-          <children xmi:type="notation:DecorationNode" xmi:id="_ITKQIsaFEeWfFdnv26Efug" type="5080">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_ITKQI8aFEeWfFdnv26Efug" y="5"/>

-          </children>

-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_ITJpEcaFEeWfFdnv26Efug"/>

-          <element xmi:type="uml:InitialNode" href="FMU_Examples.uml#_ITC7YMaFEeWfFdnv26Efug"/>

-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ITJpEsaFEeWfFdnv26Efug" x="204" y="50"/>

-        </children>

-        <children xmi:type="notation:Shape" xmi:id="_KilVEMaFEeWfFdnv26Efug" type="3065">

-          <children xmi:type="notation:DecorationNode" xmi:id="_KilVE8aFEeWfFdnv26Efug" type="5117"/>

-          <children xmi:type="notation:BasicCompartment" xmi:id="_KilVFMaFEeWfFdnv26Efug" type="7005">

-            <children xmi:type="notation:Shape" xmi:id="_Q46lAMaFEeWfFdnv26Efug" type="3081">

-              <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Q6JUEMaFEeWfFdnv26Efug" source="PapyrusCSSForceValue">

-                <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Q6JUEcaFEeWfFdnv26Efug" key="mutable" value="true"/>

-              </eAnnotations>

-              <children xmi:type="notation:DecorationNode" xmi:id="_Q46lA8aFEeWfFdnv26Efug" type="5139"/>

-              <children xmi:type="notation:DecorationNode" xmi:id="_Q46lBMaFEeWfFdnv26Efug" type="6025">

-                <layoutConstraint xmi:type="notation:Location" xmi:id="_Q46lBcaFEeWfFdnv26Efug" y="5"/>

-              </children>

-              <children xmi:type="notation:BasicCompartment" xmi:id="_Q5B5wMaFEeWfFdnv26Efug" type="compartment_shape_display">

-                <styles xmi:type="notation:TitleStyle" xmi:id="_Q5B5wcaFEeWfFdnv26Efug"/>

-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Q5B5wsaFEeWfFdnv26Efug"/>

-              </children>

-              <children xmi:type="notation:Shape" xmi:id="_Q5DH4MaFEeWfFdnv26Efug" type="3084">

-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Q6JUEsaFEeWfFdnv26Efug" source="PapyrusCSSForceValue">

-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Q6JUE8aFEeWfFdnv26Efug" key="mutable" value="true"/>

-                </eAnnotations>

-                <children xmi:type="notation:DecorationNode" xmi:id="_Q5DH48aFEeWfFdnv26Efug" visible="false" type="5144">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_Q5DH5MaFEeWfFdnv26Efug" y="5"/>

-                </children>

-                <children xmi:type="notation:DecorationNode" xmi:id="_Q5DH5caFEeWfFdnv26Efug" type="5145">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_Q5DH5saFEeWfFdnv26Efug" y="5"/>

-                </children>

-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_Q5DH4caFEeWfFdnv26Efug"/>

-                <element xmi:type="uml:OutputPin" href="FMU_Examples.uml#_Q4yCIMaFEeWfFdnv26Efug"/>

-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Q5DH4saFEeWfFdnv26Efug"/>

-              </children>

-              <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_Q46lAcaFEeWfFdnv26Efug"/>

-              <element xmi:type="uml:ReadSelfAction" href="FMU_Examples.uml#_Q4mb8MaFEeWfFdnv26Efug"/>

-              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Q46lAsaFEeWfFdnv26Efug" x="12" width="28"/>

-            </children>

-            <children xmi:type="notation:Shape" xmi:id="_St5wsMaFEeWfFdnv26Efug" type="3076">

-              <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SvDAMMaFEeWfFdnv26Efug" source="PapyrusCSSForceValue">

-                <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SvDAMcaFEeWfFdnv26Efug" key="mutable" value="true"/>

-              </eAnnotations>

-              <children xmi:type="notation:DecorationNode" xmi:id="_St5ws8aFEeWfFdnv26Efug" type="5126"/>

-              <children xmi:type="notation:DecorationNode" xmi:id="_St5wtMaFEeWfFdnv26Efug" type="6026">

-                <layoutConstraint xmi:type="notation:Location" xmi:id="_St5wtcaFEeWfFdnv26Efug" y="5"/>

-              </children>

-              <children xmi:type="notation:BasicCompartment" xmi:id="_SuBsgMaFEeWfFdnv26Efug" type="compartment_shape_display">

-                <styles xmi:type="notation:TitleStyle" xmi:id="_SuBsgcaFEeWfFdnv26Efug"/>

-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SuBsgsaFEeWfFdnv26Efug"/>

-              </children>

-              <children xmi:type="notation:Shape" xmi:id="_SuCTkMaFEeWfFdnv26Efug" type="3077">

-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SvDAMsaFEeWfFdnv26Efug" source="PapyrusCSSForceValue">

-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SvDAM8aFEeWfFdnv26Efug" key="mutable" value="true"/>

-                </eAnnotations>

-                <children xmi:type="notation:DecorationNode" xmi:id="_SuCTk8aFEeWfFdnv26Efug" visible="false" type="5124">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_SuC6oMaFEeWfFdnv26Efug" y="5"/>

-                </children>

-                <children xmi:type="notation:DecorationNode" xmi:id="_SuC6ocaFEeWfFdnv26Efug" type="5125">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_SuC6osaFEeWfFdnv26Efug" y="5"/>

-                </children>

-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_SuCTkcaFEeWfFdnv26Efug"/>

-                <element xmi:type="uml:OutputPin" href="FMU_Examples.uml#_StuKgMaFEeWfFdnv26Efug"/>

-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SuCTksaFEeWfFdnv26Efug"/>

-              </children>

-              <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_St5wscaFEeWfFdnv26Efug"/>

-              <element xmi:type="uml:ValueSpecificationAction" href="FMU_Examples.uml#_StruQMaFEeWfFdnv26Efug"/>

-              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_St5wssaFEeWfFdnv26Efug" x="12" y="43"/>

-            </children>

-            <children xmi:type="notation:Shape" xmi:id="_ZE-AcMaFEeWfFdnv26Efug" type="3091">

-              <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZKuqMMaFEeWfFdnv26Efug" source="PapyrusCSSForceValue">

-                <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZKuqMcaFEeWfFdnv26Efug" key="mutable" value="true"/>

-              </eAnnotations>

-              <children xmi:type="notation:DecorationNode" xmi:id="_ZE-Ac8aFEeWfFdnv26Efug" type="5160"/>

-              <children xmi:type="notation:DecorationNode" xmi:id="_ZE-ngMaFEeWfFdnv26Efug" type="6019">

-                <layoutConstraint xmi:type="notation:Location" xmi:id="_ZE-ngcaFEeWfFdnv26Efug" y="5"/>

-              </children>

-              <children xmi:type="notation:BasicCompartment" xmi:id="_ZFLb0MaFEeWfFdnv26Efug" type="compartment_shape_display">

-                <styles xmi:type="notation:TitleStyle" xmi:id="_ZFLb0caFEeWfFdnv26Efug"/>

-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZFLb0saFEeWfFdnv26Efug"/>

-              </children>

-              <children xmi:type="notation:Shape" xmi:id="_ZIDwsMaFEeWfFdnv26Efug" type="3092">

-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZKuqMsaFEeWfFdnv26Efug" source="PapyrusCSSForceValue">

-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZKuqM8aFEeWfFdnv26Efug" key="mutable" value="true"/>

-                </eAnnotations>

-                <children xmi:type="notation:DecorationNode" xmi:id="_ZIDws8aFEeWfFdnv26Efug" type="5154">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_ZIDwtMaFEeWfFdnv26Efug" x="18" y="-2"/>

-                </children>

-                <children xmi:type="notation:DecorationNode" xmi:id="_ZIEXwMaFEeWfFdnv26Efug" type="5155">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_ZIEXwcaFEeWfFdnv26Efug" y="5"/>

-                </children>

-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_ZIDwscaFEeWfFdnv26Efug"/>

-                <element xmi:type="uml:InputPin" href="FMU_Examples.uml#_ZEyaQMaFEeWfFdnv26Efug"/>

-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZIDwssaFEeWfFdnv26Efug" x="-15" y="12"/>

-              </children>

-              <children xmi:type="notation:Shape" xmi:id="_ZIEXwsaFEeWfFdnv26Efug" type="3093">

-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZKuqNMaFEeWfFdnv26Efug" source="PapyrusCSSForceValue">

-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZKuqNcaFEeWfFdnv26Efug" key="mutable" value="true"/>

-                </eAnnotations>

-                <children xmi:type="notation:DecorationNode" xmi:id="_ZIEXxcaFEeWfFdnv26Efug" type="5156">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_ZIEXxsaFEeWfFdnv26Efug" x="21" y="-2"/>

-                </children>

-                <children xmi:type="notation:DecorationNode" xmi:id="_ZIE-0MaFEeWfFdnv26Efug" type="5157">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_ZIE-0caFEeWfFdnv26Efug" y="5"/>

-                </children>

-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_ZIEXw8aFEeWfFdnv26Efug"/>

-                <element xmi:type="uml:InputPin" href="FMU_Examples.uml#_ZE3SwMaFEeWfFdnv26Efug"/>

-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZIEXxMaFEeWfFdnv26Efug" x="-15" y="52"/>

-              </children>

-              <children xmi:type="notation:Shape" xmi:id="_ZIE-0saFEeWfFdnv26Efug" type="3094">

-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZKuqNsaFEeWfFdnv26Efug" source="PapyrusCSSForceValue">

-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZKuqN8aFEeWfFdnv26Efug" key="mutable" value="true"/>

-                </eAnnotations>

-                <children xmi:type="notation:DecorationNode" xmi:id="_ZIE-1caFEeWfFdnv26Efug" visible="false" type="5158">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_ZIE-1saFEeWfFdnv26Efug" y="5"/>

-                </children>

-                <children xmi:type="notation:DecorationNode" xmi:id="_ZIE-18aFEeWfFdnv26Efug" type="5159">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_ZIE-2MaFEeWfFdnv26Efug" y="5"/>

-                </children>

-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_ZIE-08aFEeWfFdnv26Efug"/>

-                <element xmi:type="uml:OutputPin" href="FMU_Examples.uml#_ZE02gMaFEeWfFdnv26Efug"/>

-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZIE-1MaFEeWfFdnv26Efug" x="86" y="28"/>

-              </children>

-              <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_ZE-AccaFEeWfFdnv26Efug"/>

-              <element xmi:type="uml:AddStructuralFeatureValueAction" href="FMU_Examples.uml#_ZEp3YMaFEeWfFdnv26Efug"/>

-              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZE-AcsaFEeWfFdnv26Efug" x="119" y="7" width="87" height="75"/>

-            </children>

-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KilVFcaFEeWfFdnv26Efug"/>

-          </children>

-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_KilVEcaFEeWfFdnv26Efug"/>

-          <element xmi:type="uml:StructuredActivityNode" href="FMU_Examples.uml#_KiYgwMaFEeWfFdnv26Efug"/>

-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KilVEsaFEeWfFdnv26Efug" x="86" y="204" width="255" height="124"/>

-        </children>

-        <children xmi:type="notation:Shape" xmi:id="_LaemYMaFEeWfFdnv26Efug" type="3065">

-          <children xmi:type="notation:DecorationNode" xmi:id="_LaemY8aFEeWfFdnv26Efug" type="5117"/>

-          <children xmi:type="notation:BasicCompartment" xmi:id="_LaemZMaFEeWfFdnv26Efug" type="7005">

-            <children xmi:type="notation:Shape" xmi:id="_fUoAoMaFEeWfFdnv26Efug" type="3081">

-              <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fVwCAMaFEeWfFdnv26Efug" source="PapyrusCSSForceValue">

-                <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fVwCAcaFEeWfFdnv26Efug" key="mutable" value="true"/>

-              </eAnnotations>

-              <children xmi:type="notation:DecorationNode" xmi:id="_fUoAo8aFEeWfFdnv26Efug" type="5139"/>

-              <children xmi:type="notation:DecorationNode" xmi:id="_fUoApMaFEeWfFdnv26Efug" type="6025">

-                <layoutConstraint xmi:type="notation:Location" xmi:id="_fUoApcaFEeWfFdnv26Efug" y="5"/>

-              </children>

-              <children xmi:type="notation:BasicCompartment" xmi:id="_fUzm0MaFEeWfFdnv26Efug" type="compartment_shape_display">

-                <styles xmi:type="notation:TitleStyle" xmi:id="_fUzm0caFEeWfFdnv26Efug"/>

-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fUzm0saFEeWfFdnv26Efug"/>

-              </children>

-              <children xmi:type="notation:Shape" xmi:id="_fU0N4MaFEeWfFdnv26Efug" type="3084">

-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fVwCAsaFEeWfFdnv26Efug" source="PapyrusCSSForceValue">

-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fVwCA8aFEeWfFdnv26Efug" key="mutable" value="true"/>

-                </eAnnotations>

-                <children xmi:type="notation:DecorationNode" xmi:id="_fU0N48aFEeWfFdnv26Efug" visible="false" type="5144">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_fU0N5MaFEeWfFdnv26Efug" y="5"/>

-                </children>

-                <children xmi:type="notation:DecorationNode" xmi:id="_fU0N5caFEeWfFdnv26Efug" type="5145">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_fU0N5saFEeWfFdnv26Efug" y="5"/>

-                </children>

-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_fU0N4caFEeWfFdnv26Efug"/>

-                <element xmi:type="uml:OutputPin" href="FMU_Examples.uml#_fUT3kMaFEeWfFdnv26Efug"/>

-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fU0N4saFEeWfFdnv26Efug"/>

-              </children>

-              <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_fUoAocaFEeWfFdnv26Efug"/>

-              <element xmi:type="uml:ReadSelfAction" href="FMU_Examples.uml#_fUSpcMaFEeWfFdnv26Efug"/>

-              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fUoAosaFEeWfFdnv26Efug" x="12" y="2" width="28"/>

-            </children>

-            <children xmi:type="notation:Shape" xmi:id="_hChs4MaFEeWfFdnv26Efug" type="3076">

-              <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hD4-0MaFEeWfFdnv26Efug" source="PapyrusCSSForceValue">

-                <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hD4-0caFEeWfFdnv26Efug" key="mutable" value="true"/>

-              </eAnnotations>

-              <children xmi:type="notation:DecorationNode" xmi:id="_hCiT8MaFEeWfFdnv26Efug" type="5126"/>

-              <children xmi:type="notation:DecorationNode" xmi:id="_hCiT8caFEeWfFdnv26Efug" type="6026">

-                <layoutConstraint xmi:type="notation:Location" xmi:id="_hCiT8saFEeWfFdnv26Efug" y="5"/>

-              </children>

-              <children xmi:type="notation:BasicCompartment" xmi:id="_hCyyoMaFEeWfFdnv26Efug" type="compartment_shape_display">

-                <styles xmi:type="notation:TitleStyle" xmi:id="_hCyyocaFEeWfFdnv26Efug"/>

-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hCyyosaFEeWfFdnv26Efug"/>

-              </children>

-              <children xmi:type="notation:Shape" xmi:id="_hCzZsMaFEeWfFdnv26Efug" type="3077">

-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hD4-0saFEeWfFdnv26Efug" source="PapyrusCSSForceValue">

-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hD4-08aFEeWfFdnv26Efug" key="mutable" value="true"/>

-                </eAnnotations>

-                <children xmi:type="notation:DecorationNode" xmi:id="_hCzZs8aFEeWfFdnv26Efug" visible="false" type="5124">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_hCzZtMaFEeWfFdnv26Efug" y="5"/>

-                </children>

-                <children xmi:type="notation:DecorationNode" xmi:id="_hCzZtcaFEeWfFdnv26Efug" type="5125">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_hCzZtsaFEeWfFdnv26Efug" y="5"/>

-                </children>

-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_hCzZscaFEeWfFdnv26Efug"/>

-                <element xmi:type="uml:OutputPin" href="FMU_Examples.uml#_hCQnIMaFEeWfFdnv26Efug"/>

-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hCzZssaFEeWfFdnv26Efug"/>

-              </children>

-              <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_hChs4caFEeWfFdnv26Efug"/>

-              <element xmi:type="uml:ValueSpecificationAction" href="FMU_Examples.uml#_hCPZAMaFEeWfFdnv26Efug"/>

-              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hChs4saFEeWfFdnv26Efug" x="12" y="50" width="28"/>

-            </children>

-            <children xmi:type="notation:Shape" xmi:id="_p4j5cMaFEeWfFdnv26Efug" type="3091">

-              <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_p60jQMaFEeWfFdnv26Efug" source="PapyrusCSSForceValue">

-                <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_p60jQcaFEeWfFdnv26Efug" key="mutable" value="true"/>

-              </eAnnotations>

-              <children xmi:type="notation:DecorationNode" xmi:id="_p4lHkMaFEeWfFdnv26Efug" type="5160"/>

-              <children xmi:type="notation:DecorationNode" xmi:id="_p4lHkcaFEeWfFdnv26Efug" type="6019">

-                <layoutConstraint xmi:type="notation:Location" xmi:id="_p4lHksaFEeWfFdnv26Efug" y="5"/>

-              </children>

-              <children xmi:type="notation:BasicCompartment" xmi:id="_p47s4MaFEeWfFdnv26Efug" type="compartment_shape_display">

-                <styles xmi:type="notation:TitleStyle" xmi:id="_p47s4caFEeWfFdnv26Efug"/>

-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_p47s4saFEeWfFdnv26Efug"/>

-              </children>

-              <children xmi:type="notation:Shape" xmi:id="_p48T8MaFEeWfFdnv26Efug" type="3092">

-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_p60jQsaFEeWfFdnv26Efug" source="PapyrusCSSForceValue">

-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_p60jQ8aFEeWfFdnv26Efug" key="mutable" value="true"/>

-                </eAnnotations>

-                <children xmi:type="notation:DecorationNode" xmi:id="_p48T88aFEeWfFdnv26Efug" type="5154">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_p48T9MaFEeWfFdnv26Efug" x="20" y="-3"/>

-                </children>

-                <children xmi:type="notation:DecorationNode" xmi:id="_p48T9caFEeWfFdnv26Efug" type="5155">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_p48T9saFEeWfFdnv26Efug" y="5"/>

-                </children>

-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_p48T8caFEeWfFdnv26Efug"/>

-                <element xmi:type="uml:InputPin" href="FMU_Examples.uml#_p4Y6UMaFEeWfFdnv26Efug"/>

-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_p48T8saFEeWfFdnv26Efug" x="-15" y="9"/>

-              </children>

-              <children xmi:type="notation:Shape" xmi:id="_p487AMaFEeWfFdnv26Efug" type="3093">

-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_p60jRMaFEeWfFdnv26Efug" source="PapyrusCSSForceValue">

-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_p60jRcaFEeWfFdnv26Efug" key="mutable" value="true"/>

-                </eAnnotations>

-                <children xmi:type="notation:DecorationNode" xmi:id="_p487A8aFEeWfFdnv26Efug" type="5156">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_p487BMaFEeWfFdnv26Efug" x="22" y="-2"/>

-                </children>

-                <children xmi:type="notation:DecorationNode" xmi:id="_p487BcaFEeWfFdnv26Efug" type="5157">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_p487BsaFEeWfFdnv26Efug" y="5"/>

-                </children>

-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_p487AcaFEeWfFdnv26Efug"/>

-                <element xmi:type="uml:InputPin" href="FMU_Examples.uml#_p4gPEMaFEeWfFdnv26Efug"/>

-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_p487AsaFEeWfFdnv26Efug" x="-15" y="53"/>

-              </children>

-              <children xmi:type="notation:Shape" xmi:id="_p487B8aFEeWfFdnv26Efug" type="3094">

-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_p60jRsaFEeWfFdnv26Efug" source="PapyrusCSSForceValue">

-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_p60jR8aFEeWfFdnv26Efug" key="mutable" value="true"/>

-                </eAnnotations>

-                <children xmi:type="notation:DecorationNode" xmi:id="_p487CsaFEeWfFdnv26Efug" visible="false" type="5158">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_p487C8aFEeWfFdnv26Efug" y="5"/>

-                </children>

-                <children xmi:type="notation:DecorationNode" xmi:id="_p487DMaFEeWfFdnv26Efug" type="5159">

-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_p487DcaFEeWfFdnv26Efug" y="5"/>

-                </children>

-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_p487CMaFEeWfFdnv26Efug"/>

-                <element xmi:type="uml:OutputPin" href="FMU_Examples.uml#_p4avgMaFEeWfFdnv26Efug"/>

-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_p487CcaFEeWfFdnv26Efug" x="86" y="28"/>

-              </children>

-              <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_p4j5ccaFEeWfFdnv26Efug"/>

-              <element xmi:type="uml:AddStructuralFeatureValueAction" href="FMU_Examples.uml#_p4VP8MaFEeWfFdnv26Efug"/>

-              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_p4j5csaFEeWfFdnv26Efug" x="119" y="9" width="87" height="75"/>

-            </children>

-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LaemZcaFEeWfFdnv26Efug"/>

-          </children>

-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_LaemYcaFEeWfFdnv26Efug"/>

-          <element xmi:type="uml:StructuredActivityNode" href="FMU_Examples.uml#_LaTnQMaFEeWfFdnv26Efug"/>

-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LaemYsaFEeWfFdnv26Efug" x="85" y="443" width="258" height="132"/>

-        </children>

-        <children xmi:type="notation:Shape" xmi:id="_KrlqoMaGEeWfFdnv26Efug" type="3005">

-          <children xmi:type="notation:DecorationNode" xmi:id="_Krlqo8aGEeWfFdnv26Efug" visible="false" type="6033">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_KrlqpMaGEeWfFdnv26Efug" y="5"/>

-          </children>

-          <children xmi:type="notation:DecorationNode" xmi:id="_KrlqpcaGEeWfFdnv26Efug" type="5081">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_KrlqpsaGEeWfFdnv26Efug" y="5"/>

-          </children>

-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_KrlqocaGEeWfFdnv26Efug"/>

-          <element xmi:type="uml:ActivityFinalNode" href="FMU_Examples.uml#_KrKz4MaGEeWfFdnv26Efug"/>

-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KrlqosaGEeWfFdnv26Efug" x="392" y="506"/>

-        </children>

-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_E0DhgcaEEeWfFdnv26Efug"/>

-      </children>

-      <element xmi:type="uml:Activity" href="FMU_Examples.uml#_BxUJMMaEEeWfFdnv26Efug"/>

-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_E0DhgsaEEeWfFdnv26Efug" width="878" height="579"/>

-    </children>

-    <styles xmi:type="notation:StringValueStyle" xmi:id="_E0Dhg8aEEeWfFdnv26Efug" name="diagram_compatibility_version" stringValue="1.1.0"/>

-    <styles xmi:type="notation:DiagramStyle" xmi:id="_E0DhhMaEEeWfFdnv26Efug"/>

-    <styles xmi:type="style:PapyrusViewStyle" xmi:id="_E0DhhcaEEeWfFdnv26Efug">

-      <owner xmi:type="uml:Activity" href="FMU_Examples.uml#_BxUJMMaEEeWfFdnv26Efug"/>

-      <configuration xmi:type="configuration:PapyrusDiagram" href="platform:/plugin/org.eclipse.papyrus.moka.simex/config/simex.configuration#_VerKMGAyEeWAtYeYccnjOA"/>

-    </styles>

-    <element xmi:type="uml:Activity" href="FMU_Examples.uml#_BxUJMMaEEeWfFdnv26Efug"/>

-    <edges xmi:type="notation:Connector" xmi:id="_0QPe8MaFEeWfFdnv26Efug" type="4003" source="_Q5DH4MaFEeWfFdnv26Efug" target="_ZIDwsMaFEeWfFdnv26Efug">

-      <children xmi:type="notation:DecorationNode" xmi:id="_0QPe88aFEeWfFdnv26Efug" type="6001">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0QPe9MaFEeWfFdnv26Efug" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_0QPe9caFEeWfFdnv26Efug" visible="false" type="6002">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0QQGAMaFEeWfFdnv26Efug" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_0QQGAcaFEeWfFdnv26Efug" type="6005">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0QQGAsaFEeWfFdnv26Efug" x="20" y="40"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_0QQGA8aFEeWfFdnv26Efug" type="6006">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0QQGBMaFEeWfFdnv26Efug" x="-20" y="-60"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_0QQGBcaFEeWfFdnv26Efug" type="6007">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0QQGBsaFEeWfFdnv26Efug" y="-20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_0QQGB8aFEeWfFdnv26Efug" visible="false" type="6008">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0QQGCMaFEeWfFdnv26Efug" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_0QQGCcaFEeWfFdnv26Efug" type="6010">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0QQGCsaFEeWfFdnv26Efug" y="-20"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_0QPe8caFEeWfFdnv26Efug"/>

-      <element xmi:type="uml:ObjectFlow" href="FMU_Examples.uml#_0P45oMaFEeWfFdnv26Efug"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0QPe8saFEeWfFdnv26Efug" points="[150, 293, -643984, -643984]$[199, 290, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7vlFQM5PEeWaRpodR1S6WA" id="(0.8125,0.5625)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0Q5mQMaFEeWfFdnv26Efug" id="(0.1875,0.25)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_0oXEAMaFEeWfFdnv26Efug" type="4003" source="_SuCTkMaFEeWfFdnv26Efug" target="_ZIEXwsaFEeWfFdnv26Efug">

-      <children xmi:type="notation:DecorationNode" xmi:id="_0oXEA8aFEeWfFdnv26Efug" type="6001">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0oXEBMaFEeWfFdnv26Efug" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_0oXEBcaFEeWfFdnv26Efug" visible="false" type="6002">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0oXEBsaFEeWfFdnv26Efug" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_0oXEB8aFEeWfFdnv26Efug" type="6005">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0oXECMaFEeWfFdnv26Efug" x="20" y="40"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_0oXECcaFEeWfFdnv26Efug" type="6006">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0oXECsaFEeWfFdnv26Efug" x="-20" y="-60"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_0oXEC8aFEeWfFdnv26Efug" type="6007">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0oXEDMaFEeWfFdnv26Efug" y="-20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_0oXEDcaFEeWfFdnv26Efug" visible="false" type="6008">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0oXEDsaFEeWfFdnv26Efug" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_0oXED8aFEeWfFdnv26Efug" type="6010">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0oXEEMaFEeWfFdnv26Efug" y="-20"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_0oXEAcaFEeWfFdnv26Efug"/>

-      <element xmi:type="uml:ObjectFlow" href="FMU_Examples.uml#_0oCT4MaFEeWfFdnv26Efug"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0oXEAsaFEeWfFdnv26Efug" points="[150, 334, -643984, -643984]$[199, 334, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_87fewM5PEeWaRpodR1S6WA" id="(0.8125,0.625)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0pCZcMaFEeWfFdnv26Efug" id="(0.125,0.625)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_0-fsEMaFEeWfFdnv26Efug" type="4003" source="_fU0N4MaFEeWfFdnv26Efug" target="_p48T8MaFEeWfFdnv26Efug">

-      <children xmi:type="notation:DecorationNode" xmi:id="_0-fsE8aFEeWfFdnv26Efug" type="6001">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0-fsFMaFEeWfFdnv26Efug" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_0-fsFcaFEeWfFdnv26Efug" visible="false" type="6002">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0-fsFsaFEeWfFdnv26Efug" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_0-fsF8aFEeWfFdnv26Efug" type="6005">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0-fsGMaFEeWfFdnv26Efug" x="20" y="40"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_0-fsGcaFEeWfFdnv26Efug" type="6006">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0-fsGsaFEeWfFdnv26Efug" x="-20" y="-60"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_0-fsG8aFEeWfFdnv26Efug" type="6007">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0-fsHMaFEeWfFdnv26Efug" y="-20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_0-fsHcaFEeWfFdnv26Efug" visible="false" type="6008">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0-fsHsaFEeWfFdnv26Efug" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_0-fsH8aFEeWfFdnv26Efug" type="6010">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0-fsIMaFEeWfFdnv26Efug" y="-20"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_0-fsEcaFEeWfFdnv26Efug"/>

-      <element xmi:type="uml:ObjectFlow" href="FMU_Examples.uml#_0-K78MaFEeWfFdnv26Efug"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0-fsEsaFEeWfFdnv26Efug" points="[150, 531, -643984, -643984]$[204, 527, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-5v7MM5PEeWaRpodR1S6WA" id="(0.875,0.5)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__SPTsM5PEeWaRpodR1S6WA" id="(0.125,0.4375)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_1bfxIMaFEeWfFdnv26Efug" type="4003" source="_hCzZsMaFEeWfFdnv26Efug" target="_p487AMaFEeWfFdnv26Efug">

-      <children xmi:type="notation:DecorationNode" xmi:id="_1bgYMMaFEeWfFdnv26Efug" type="6001">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_1bgYMcaFEeWfFdnv26Efug" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_1bgYMsaFEeWfFdnv26Efug" visible="false" type="6002">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_1bgYM8aFEeWfFdnv26Efug" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_1bgYNMaFEeWfFdnv26Efug" type="6005">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_1bgYNcaFEeWfFdnv26Efug" x="20" y="40"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_1bgYNsaFEeWfFdnv26Efug" type="6006">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_1bgYN8aFEeWfFdnv26Efug" x="-20" y="-60"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_1bgYOMaFEeWfFdnv26Efug" type="6007">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_1bgYOcaFEeWfFdnv26Efug" y="-20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_1bgYOsaFEeWfFdnv26Efug" visible="false" type="6008">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_1bgYO8aFEeWfFdnv26Efug" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_1bgYPMaFEeWfFdnv26Efug" type="6010">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_1bgYPcaFEeWfFdnv26Efug" y="-20"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_1bfxIcaFEeWfFdnv26Efug"/>

-      <element xmi:type="uml:ObjectFlow" href="FMU_Examples.uml#_1bLBAMaFEeWfFdnv26Efug"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_1bfxIsaFEeWfFdnv26Efug" points="[150, 576, -643984, -643984]$[204, 571, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_1cVeoMaFEeWfFdnv26Efug" id="(0.1875,0.375)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CImc0M5QEeWaRpodR1S6WA" id="(0.0625,0.5)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_MuHjEMaGEeWfFdnv26Efug" type="4004" source="_ITJpEMaFEeWfFdnv26Efug" target="_tNOkoMaEEeWfFdnv26Efug">

-      <children xmi:type="notation:DecorationNode" xmi:id="_MuHjE8aGEeWfFdnv26Efug" type="6003">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_MuHjFMaGEeWfFdnv26Efug" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_MuHjFcaGEeWfFdnv26Efug" type="6004">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_MuHjFsaGEeWfFdnv26Efug" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_MuHjF8aGEeWfFdnv26Efug" type="6009">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_MuHjGMaGEeWfFdnv26Efug" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_MuHjGcaGEeWfFdnv26Efug" type="6011">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_MuHjGsaGEeWfFdnv26Efug" y="-20"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_MuHjEcaGEeWfFdnv26Efug"/>

-      <element xmi:type="uml:ControlFlow" href="FMU_Examples.uml#_MtuhgMaGEeWfFdnv26Efug"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_MuHjEsaGEeWfFdnv26Efug" points="[214, 104, -643984, -643984]$[214, 159, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MuyRcMaGEeWfFdnv26Efug" id="(0.45,0.9)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MuyRccaGEeWfFdnv26Efug" id="(0.496,0.0425531914893617)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_NLfbkMaGEeWfFdnv26Efug" type="4004" source="_tNOkoMaEEeWfFdnv26Efug" target="_KilVEMaFEeWfFdnv26Efug">

-      <children xmi:type="notation:DecorationNode" xmi:id="_NLfbk8aGEeWfFdnv26Efug" type="6003">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_NLgCoMaGEeWfFdnv26Efug" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_NLgCocaGEeWfFdnv26Efug" type="6004">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_NLgCosaGEeWfFdnv26Efug" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_NLgCo8aGEeWfFdnv26Efug" type="6009">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_NLgCpMaGEeWfFdnv26Efug" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_NLgCpcaGEeWfFdnv26Efug" type="6011">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_NLgCpsaGEeWfFdnv26Efug" y="-20"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_NLfbkcaGEeWfFdnv26Efug"/>

-      <element xmi:type="uml:ControlFlow" href="FMU_Examples.uml#_NLL5kMaGEeWfFdnv26Efug"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NLfbksaGEeWfFdnv26Efug" points="[215, 200, -643984, -643984]$[215, 240, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NMFRcMaGEeWfFdnv26Efug" id="(0.47907692307692307,0.9148936170212766)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NMFRccaGEeWfFdnv26Efug" id="(0.48672699849170437,0.0)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_NyJL4MaGEeWfFdnv26Efug" type="4004" source="_KilVEMaFEeWfFdnv26Efug" target="_-HgUcMaEEeWfFdnv26Efug">

-      <children xmi:type="notation:DecorationNode" xmi:id="_NyJL48aGEeWfFdnv26Efug" type="6003">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_R-qPoMaGEeWfFdnv26Efug" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_NyJL5MaGEeWfFdnv26Efug" x="-4" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_NyJL5caGEeWfFdnv26Efug" type="6004">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_R--YsMaGEeWfFdnv26Efug" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_NyJL5saGEeWfFdnv26Efug" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_NyJL58aGEeWfFdnv26Efug" type="6009">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_R_QskMaGEeWfFdnv26Efug" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_NyJL6MaGEeWfFdnv26Efug" x="4" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_NyJL6caGEeWfFdnv26Efug" type="6011">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_R_kOkMaGEeWfFdnv26Efug" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_NyJL6saGEeWfFdnv26Efug" y="-20"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_NyJL4caGEeWfFdnv26Efug"/>

-      <element xmi:type="uml:ControlFlow" href="FMU_Examples.uml#_NxbaMMaGEeWfFdnv26Efug"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NyJL4saGEeWfFdnv26Efug" points="[213, 364, -643984, -643984]$[215, 390, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Nyw28MaGEeWfFdnv26Efug" id="(0.48627450980392156,1.0)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NyxeAMaGEeWfFdnv26Efug" id="(0.4791351351351352,0.0425531914893617)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_OKtc4MaGEeWfFdnv26Efug" type="4004" source="_-HgUcMaEEeWfFdnv26Efug" target="_LaemYMaFEeWfFdnv26Efug">

-      <children xmi:type="notation:DecorationNode" xmi:id="_OKtc48aGEeWfFdnv26Efug" type="6003">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_R9WBAMaGEeWfFdnv26Efug" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_OKtc5MaGEeWfFdnv26Efug" x="-8" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_OKtc5caGEeWfFdnv26Efug" type="6004">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_R9t0cMaGEeWfFdnv26Efug" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_OKuD8MaGEeWfFdnv26Efug" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_OKuD8caGEeWfFdnv26Efug" type="6009">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_R9_hQMaGEeWfFdnv26Efug" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_OKuD8saGEeWfFdnv26Efug" x="8" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_OKuD88aGEeWfFdnv26Efug" type="6011">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_R-WtoMaGEeWfFdnv26Efug" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_OKuD9MaGEeWfFdnv26Efug" y="-20"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_OKtc4caGEeWfFdnv26Efug"/>

-      <element xmi:type="uml:ControlFlow" href="FMU_Examples.uml#_OKWQgMaGEeWfFdnv26Efug"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_OKtc4saGEeWfFdnv26Efug" points="[215, 428, -643984, -643984]$[217, 479, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OLWWEMaGEeWfFdnv26Efug" id="(0.488,0.851063829787234)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OLWWEcaGEeWfFdnv26Efug" id="(0.4945384073291049,0.0)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_On7kYMaGEeWfFdnv26Efug" type="4004" source="_LaemYMaFEeWfFdnv26Efug" target="_KrlqoMaGEeWfFdnv26Efug">

-      <children xmi:type="notation:DecorationNode" xmi:id="_On7kY8aGEeWfFdnv26Efug" type="6003">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_PAiRoMaGEeWfFdnv26Efug" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_On7kZMaGEeWfFdnv26Efug" x="-18" y="19"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_On7kZcaGEeWfFdnv26Efug" type="6004">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_PA6FEMaGEeWfFdnv26Efug" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_On7kZsaGEeWfFdnv26Efug" x="1" y="18"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_On8LcMaGEeWfFdnv26Efug" type="6009">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_PBTGoMaGEeWfFdnv26Efug" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_On8LccaGEeWfFdnv26Efug" x="18" y="19"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_On8LcsaGEeWfFdnv26Efug" type="6011">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_PBtWUMaGEeWfFdnv26Efug" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_On8Lc8aGEeWfFdnv26Efug" x="2" y="-17"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_On7kYcaGEeWfFdnv26Efug"/>

-      <element xmi:type="uml:ControlFlow" href="FMU_Examples.uml#_Onh7wMaGEeWfFdnv26Efug"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_On7kYsaGEeWfFdnv26Efug" points="[348, 552, -643984, -643984]$[465, 553, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Oom50MaGEeWfFdnv26Efug" id="(1.0,0.5541958041958036)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Oom50caGEeWfFdnv26Efug" id="(0.05,0.5476923076923071)"/>

-    </edges>

-  </notation:Diagram>

-  <notation:Diagram xmi:id="_XQQbsOxPEeWP6eN_6Zcgmw" type="PapyrusUMLClassDiagram" name="Examples Class Diagram" measurementUnit="Pixel">

-    <children xmi:type="notation:Shape" xmi:id="_aK3ysOxPEeWP6eN_6Zcgmw" type="Class_Shape">

-      <children xmi:type="notation:DecorationNode" xmi:id="_aK5A0OxPEeWP6eN_6Zcgmw" type="Class_NameLabel"/>

-      <children xmi:type="notation:DecorationNode" xmi:id="_aK5A0exPEeWP6eN_6Zcgmw" type="Class_FloatingNameLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_aK5A0uxPEeWP6eN_6Zcgmw" y="5"/>

-      </children>

-      <children xmi:type="notation:BasicCompartment" xmi:id="__PtMMCQGEeaCtZpD0ATfCw" type="Class_AttributeCompartment">

-        <children xmi:type="notation:Shape" xmi:id="_eHD7cOxPEeWP6eN_6Zcgmw" type="Property_ClassAttributeLabel">

-          <styles xmi:type="notation:StringListValueStyle" xmi:id="_mtCdUOxQEeWP6eN_6Zcgmw" name="maskLabel">

-            <stringListValue>multiplicity</stringListValue>

-            <stringListValue>visibility</stringListValue>

-            <stringListValue>defaultValue</stringListValue>

-            <stringListValue>name</stringListValue>

-            <stringListValue>type</stringListValue>

-            <stringListValue>derived</stringListValue>

-          </styles>

-          <element xmi:type="uml:Property" href="FMU_Examples.uml#_eG3HIOxPEeWP6eN_6Zcgmw"/>

-          <layoutConstraint xmi:type="notation:Location" xmi:id="_eHD7cexPEeWP6eN_6Zcgmw"/>

-        </children>

-        <children xmi:type="notation:Shape" xmi:id="_fP4ksOxPEeWP6eN_6Zcgmw" type="Property_ClassAttributeLabel">

-          <styles xmi:type="notation:StringListValueStyle" xmi:id="_QQTmcCQHEeaCtZpD0ATfCw" name="maskLabel">

-            <stringListValue>multiplicity</stringListValue>

-            <stringListValue>visibility</stringListValue>

-            <stringListValue>defaultValue</stringListValue>

-            <stringListValue>name</stringListValue>

-            <stringListValue>type</stringListValue>

-            <stringListValue>derived</stringListValue>

-          </styles>

-          <element xmi:type="uml:Property" href="FMU_Examples.uml#_fPzFIOxPEeWP6eN_6Zcgmw"/>

-          <layoutConstraint xmi:type="notation:Location" xmi:id="_fP5LwOxPEeWP6eN_6Zcgmw"/>

-        </children>

-        <styles xmi:type="notation:TitleStyle" xmi:id="_aK5n4exPEeWP6eN_6Zcgmw"/>

-        <styles xmi:type="notation:SortingStyle" xmi:id="_aK5n4uxPEeWP6eN_6Zcgmw"/>

-        <styles xmi:type="notation:FilteringStyle" xmi:id="_aK5n4-xPEeWP6eN_6Zcgmw"/>

-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aK5n5OxPEeWP6eN_6Zcgmw"/>

-      </children>

-      <children xmi:type="notation:BasicCompartment" xmi:id="__PtzQCQGEeaCtZpD0ATfCw" type="Class_OperationCompartment">

-        <children xmi:type="notation:Shape" xmi:id="_QQ7coOxQEeWP6eN_6Zcgmw" type="Operation_ClassOperationLabel">

-          <element xmi:type="uml:Operation" href="FMU_Examples.uml#_QQv2cOxQEeWP6eN_6Zcgmw"/>

-          <layoutConstraint xmi:type="notation:Location" xmi:id="_QQ7coexQEeWP6eN_6Zcgmw"/>

-        </children>

-        <styles xmi:type="notation:TitleStyle" xmi:id="_aK5n5uxPEeWP6eN_6Zcgmw"/>

-        <styles xmi:type="notation:SortingStyle" xmi:id="_aK5n5-xPEeWP6eN_6Zcgmw"/>

-        <styles xmi:type="notation:FilteringStyle" xmi:id="_aK5n6OxPEeWP6eN_6Zcgmw"/>

-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aK5n6exPEeWP6eN_6Zcgmw"/>

-      </children>

-      <children xmi:type="notation:BasicCompartment" xmi:id="__PtzQSQGEeaCtZpD0ATfCw" visible="false" type="Class_NestedClassifierCompartment">

-        <styles xmi:type="notation:TitleStyle" xmi:id="_aK5n6-xPEeWP6eN_6Zcgmw"/>

-        <styles xmi:type="notation:SortingStyle" xmi:id="_aK5n7OxPEeWP6eN_6Zcgmw"/>

-        <styles xmi:type="notation:FilteringStyle" xmi:id="_aK5n7exPEeWP6eN_6Zcgmw"/>

-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aK5n7uxPEeWP6eN_6Zcgmw"/>

-      </children>

-      <element xmi:type="uml:Class" href="FMU_Examples.uml#_aKy6MOxPEeWP6eN_6Zcgmw"/>

-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_aK3ysexPEeWP6eN_6Zcgmw" x="193" y="145" width="334" height="169"/>

-    </children>

-    <children xmi:type="notation:Shape" xmi:id="_b3r50OxPEeWP6eN_6Zcgmw" type="StereotypeComment">

-      <styles xmi:type="notation:TitleStyle" xmi:id="_b3r50exPEeWP6eN_6Zcgmw" showTitle="true"/>

-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_b3tvAOxPEeWP6eN_6Zcgmw" name="BASE_ELEMENT">

-        <eObjectValue xmi:type="uml:Class" href="FMU_Examples.uml#_aKy6MOxPEeWP6eN_6Zcgmw"/>

-      </styles>

-      <element xsi:nil="true"/>

-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_b3r50uxPEeWP6eN_6Zcgmw" x="456" y="106"/>

-    </children>

-    <styles xmi:type="notation:StringValueStyle" xmi:id="_XQQbsexPEeWP6eN_6Zcgmw" name="diagram_compatibility_version" stringValue="1.2.0"/>

-    <styles xmi:type="notation:DiagramStyle" xmi:id="_XQQbsuxPEeWP6eN_6Zcgmw"/>

-    <styles xmi:type="style:PapyrusViewStyle" xmi:id="_XQQbs-xPEeWP6eN_6Zcgmw">

-      <owner xmi:type="uml:Package" href="FMU_Examples.uml#_-JGxEOxOEeWP6eN_6Zcgmw"/>

-    </styles>

-    <element xmi:type="uml:Package" href="FMU_Examples.uml#_-JGxEOxOEeWP6eN_6Zcgmw"/>

-    <edges xmi:type="notation:Connector" xmi:id="_b3uWEOxPEeWP6eN_6Zcgmw" type="StereotypeCommentLink" source="_aK3ysOxPEeWP6eN_6Zcgmw" target="_b3r50OxPEeWP6eN_6Zcgmw">

-      <styles xmi:type="notation:FontStyle" xmi:id="_b3uWEexPEeWP6eN_6Zcgmw"/>

-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_b3uWFexPEeWP6eN_6Zcgmw" name="BASE_ELEMENT">

-        <eObjectValue xmi:type="uml:Class" href="FMU_Examples.uml#_aKy6MOxPEeWP6eN_6Zcgmw"/>

-      </styles>

-      <element xsi:nil="true"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_b3uWEuxPEeWP6eN_6Zcgmw" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_b3uWE-xPEeWP6eN_6Zcgmw"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_b3uWFOxPEeWP6eN_6Zcgmw"/>

-    </edges>

-  </notation:Diagram>

-  <notation:Diagram xmi:id="_IkIBoOxTEeWP6eN_6Zcgmw" type="PapyrusUMLActivityDiagram" name="compare_impl diagram" measurementUnit="Pixel">

-    <children xmi:type="notation:Shape" xmi:id="_IkIBoexTEeWP6eN_6Zcgmw" type="Activity_Shape">

-      <children xmi:type="notation:DecorationNode" xmi:id="_IkIBouxTEeWP6eN_6Zcgmw" type="Activity_NameLabel"/>

-      <children xmi:type="notation:BasicCompartment" xmi:id="_Kt3aICQeEeaoQb5K-iEePQ" type="Activity_ParameterCompartment">

-        <styles xmi:type="notation:SortingStyle" xmi:id="_IkIBpexTEeWP6eN_6Zcgmw"/>

-        <styles xmi:type="notation:FilteringStyle" xmi:id="_IkIBpuxTEeWP6eN_6Zcgmw"/>

-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IkIBp-xTEeWP6eN_6Zcgmw"/>

-      </children>

-      <children xmi:type="notation:BasicCompartment" xmi:id="_Kt3aISQeEeaoQb5K-iEePQ" type="Activity_PreconditionCompartment">

-        <styles xmi:type="notation:SortingStyle" xmi:id="_IkIBqexTEeWP6eN_6Zcgmw"/>

-        <styles xmi:type="notation:FilteringStyle" xmi:id="_IkIBquxTEeWP6eN_6Zcgmw"/>

-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IkIBq-xTEeWP6eN_6Zcgmw"/>

-      </children>

-      <children xmi:type="notation:BasicCompartment" xmi:id="_Kt4BMCQeEeaoQb5K-iEePQ" type="Activity_PostconditionCompartment">

-        <styles xmi:type="notation:SortingStyle" xmi:id="_IkIBrexTEeWP6eN_6Zcgmw"/>

-        <styles xmi:type="notation:FilteringStyle" xmi:id="_IkIBruxTEeWP6eN_6Zcgmw"/>

-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IkIBr-xTEeWP6eN_6Zcgmw"/>

-      </children>

-      <children xmi:type="notation:BasicCompartment" xmi:id="_Kt4BMSQeEeaoQb5K-iEePQ" type="Activity_ActivityNodeCompartment">

-        <children xmi:type="notation:Shape" xmi:id="_b8C4kOxTEeWP6eN_6Zcgmw" type="CallBehaviorAction_Shape">

-          <children xmi:type="notation:Shape" xmi:id="_b8FU0OxTEeWP6eN_6Zcgmw" type="OutputPin_CallBehaviorActionResultShape">

-            <children xmi:type="notation:DecorationNode" xmi:id="_b8FU0-xTEeWP6eN_6Zcgmw" type="OutputPin_CallBehaviorActionResultNameLabel">

-              <layoutConstraint xmi:type="notation:Location" xmi:id="_b8FU1OxTEeWP6eN_6Zcgmw" x="-41" y="12"/>

-            </children>

-            <children xmi:type="notation:DecorationNode" xmi:id="_b8FU1exTEeWP6eN_6Zcgmw" type="OutputPin_CallBehaviorActionResultStereotypeLabel">

-              <layoutConstraint xmi:type="notation:Location" xmi:id="_b8FU1uxTEeWP6eN_6Zcgmw" x="-3" y="18"/>

-            </children>

-            <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_b8FU0exTEeWP6eN_6Zcgmw"/>

-            <element xmi:type="uml:OutputPin" href="FMU_Examples.uml#_b7-nIOxTEeWP6eN_6Zcgmw"/>

-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_b8FU0uxTEeWP6eN_6Zcgmw" x="102" y="53"/>

-          </children>

-          <children xmi:type="notation:Shape" xmi:id="_b8EtwOxTEeWP6eN_6Zcgmw" type="InputPin_CallBehaviorActionArgumentShape">

-            <children xmi:type="notation:DecorationNode" xmi:id="_b8Etw-xTEeWP6eN_6Zcgmw" type="InputPin_CallBehaviorActionArgumentNameLabel">

-              <layoutConstraint xmi:type="notation:Location" xmi:id="_b8EtxOxTEeWP6eN_6Zcgmw" x="21" y="-2"/>

-            </children>

-            <children xmi:type="notation:DecorationNode" xmi:id="_b8EtxexTEeWP6eN_6Zcgmw" type="InputPin_CallBehaviorActionArgumentStereotypeLabel">

-              <layoutConstraint xmi:type="notation:Location" xmi:id="_b8EtxuxTEeWP6eN_6Zcgmw" y="5"/>

-            </children>

-            <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_b8EtwexTEeWP6eN_6Zcgmw"/>

-            <element xmi:type="uml:InputPin" href="FMU_Examples.uml#_b7v9oOxTEeWP6eN_6Zcgmw"/>

-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_b8EtwuxTEeWP6eN_6Zcgmw"/>

-          </children>

-          <children xmi:type="notation:Shape" xmi:id="_b8Etx-xTEeWP6eN_6Zcgmw" type="InputPin_CallBehaviorActionArgumentShape">

-            <children xmi:type="notation:DecorationNode" xmi:id="_b8EtyuxTEeWP6eN_6Zcgmw" type="InputPin_CallBehaviorActionArgumentNameLabel">

-              <layoutConstraint xmi:type="notation:Location" xmi:id="_b8Ety-xTEeWP6eN_6Zcgmw" x="26" y="-4"/>

-            </children>

-            <children xmi:type="notation:DecorationNode" xmi:id="_b8EtzOxTEeWP6eN_6Zcgmw" type="InputPin_CallBehaviorActionArgumentStereotypeLabel">

-              <layoutConstraint xmi:type="notation:Location" xmi:id="_b8EtzexTEeWP6eN_6Zcgmw" y="5"/>

-            </children>

-            <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_b8EtyOxTEeWP6eN_6Zcgmw"/>

-            <element xmi:type="uml:InputPin" href="FMU_Examples.uml#_b77j0OxTEeWP6eN_6Zcgmw"/>

-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_b8EtyexTEeWP6eN_6Zcgmw" x="-15" y="86"/>

-          </children>

-          <children xmi:type="notation:DecorationNode" xmi:id="_b8DfoOxTEeWP6eN_6Zcgmw" type="CallBehaviorAction_NameLabel"/>

-          <children xmi:type="notation:DecorationNode" xmi:id="_b8DfoexTEeWP6eN_6Zcgmw" type="CallBehaviorAction_FloatingNameLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_b8DfouxTEeWP6eN_6Zcgmw" y="5"/>

-          </children>

-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_b8C4kexTEeWP6eN_6Zcgmw"/>

-          <element xmi:type="uml:CallBehaviorAction" href="FMU_Examples.uml#_b7NLEOxTEeWP6eN_6Zcgmw"/>

-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_b8EGsOxTEeWP6eN_6Zcgmw" x="154" y="28" width="103" height="112"/>

-        </children>

-        <children xmi:type="notation:Shape" xmi:id="_souRQOxTEeWP6eN_6Zcgmw" type="ValueSpecificationAction_Shape">

-          <children xmi:type="notation:DecorationNode" xmi:id="_sou4UOxTEeWP6eN_6Zcgmw" type="ValueSpecificationAction_NameLabel"/>

-          <children xmi:type="notation:DecorationNode" xmi:id="_sou4UexTEeWP6eN_6Zcgmw" type="ValueSpecificationAction_FloatingNameLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_sou4UuxTEeWP6eN_6Zcgmw" y="5"/>

-          </children>

-          <children xmi:type="notation:BasicCompartment" xmi:id="_so0X4OxTEeWP6eN_6Zcgmw" type="compartment_shape_display">

-            <styles xmi:type="notation:TitleStyle" xmi:id="_so0X4exTEeWP6eN_6Zcgmw"/>

-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_so0X4uxTEeWP6eN_6Zcgmw"/>

-          </children>

-          <children xmi:type="notation:Shape" xmi:id="_5FqTEOxTEeWP6eN_6Zcgmw" type="OutputPin_ValueSpecificationActionResultShape">

-            <children xmi:type="notation:DecorationNode" xmi:id="_5FqTE-xTEeWP6eN_6Zcgmw" visible="false" type="OutputPin_ValueSpecificationActionResultNameLabel">

-              <layoutConstraint xmi:type="notation:Location" xmi:id="_5FqTFOxTEeWP6eN_6Zcgmw" y="5"/>

-            </children>

-            <children xmi:type="notation:DecorationNode" xmi:id="_5FqTFexTEeWP6eN_6Zcgmw" type="OutputPin_ValueSpecificationActionResultStereotypeLabel">

-              <layoutConstraint xmi:type="notation:Location" xmi:id="_5FqTFuxTEeWP6eN_6Zcgmw" y="5"/>

-            </children>

-            <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_5FqTEexTEeWP6eN_6Zcgmw"/>

-            <element xmi:type="uml:OutputPin" href="FMU_Examples.uml#_sojSIOxTEeWP6eN_6Zcgmw"/>

-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5FqTEuxTEeWP6eN_6Zcgmw"/>

-          </children>

-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_souRQexTEeWP6eN_6Zcgmw"/>

-          <element xmi:type="uml:ValueSpecificationAction" href="FMU_Examples.uml#_soiEAOxTEeWP6eN_6Zcgmw"/>

-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_souRQuxTEeWP6eN_6Zcgmw" x="18" y="100" width="51"/>

-        </children>

-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IkIBsexTEeWP6eN_6Zcgmw"/>

-      </children>

-      <children xmi:type="notation:Shape" xmi:id="_Tu0YcOxTEeWP6eN_6Zcgmw" type="ActivityParameterNode_Shape">

-        <children xmi:type="notation:DecorationNode" xmi:id="_Tu0Yc-xTEeWP6eN_6Zcgmw" type="ActivityParameterNode_NameLabel"/>

-        <children xmi:type="notation:DecorationNode" xmi:id="_Tu0YdOxTEeWP6eN_6Zcgmw" visible="false" type="ActivityParameterNode_StreamLabel">

-          <layoutConstraint xmi:type="notation:Location" xmi:id="_Tu0_gOxTEeWP6eN_6Zcgmw" y="5"/>

-        </children>

-        <children xmi:type="notation:DecorationNode" xmi:id="_Tu1mkOxTEeWP6eN_6Zcgmw" visible="false" type="ActivityParameterNode_ExceptionLabel">

-          <layoutConstraint xmi:type="notation:Location" xmi:id="_Tu1mkexTEeWP6eN_6Zcgmw" y="5"/>

-        </children>

-        <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_Tu0YcexTEeWP6eN_6Zcgmw"/>

-        <element xmi:type="uml:ActivityParameterNode" href="FMU_Examples.uml#_TuqAYOxTEeWP6eN_6Zcgmw"/>

-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Tu0YcuxTEeWP6eN_6Zcgmw" y="84"/>

-      </children>

-      <children xmi:type="notation:Shape" xmi:id="_BF1OoOxUEeWP6eN_6Zcgmw" type="ActivityParameterNode_Shape">

-        <children xmi:type="notation:DecorationNode" xmi:id="_BF1Oo-xUEeWP6eN_6Zcgmw" type="ActivityParameterNode_NameLabel"/>

-        <children xmi:type="notation:DecorationNode" xmi:id="_BF1OpOxUEeWP6eN_6Zcgmw" visible="false" type="ActivityParameterNode_StreamLabel">

-          <layoutConstraint xmi:type="notation:Location" xmi:id="_BF1OpexUEeWP6eN_6Zcgmw" y="5"/>

-        </children>

-        <children xmi:type="notation:DecorationNode" xmi:id="_BF1OpuxUEeWP6eN_6Zcgmw" visible="false" type="ActivityParameterNode_ExceptionLabel">

-          <layoutConstraint xmi:type="notation:Location" xmi:id="_BF1Op-xUEeWP6eN_6Zcgmw" y="5"/>

-        </children>

-        <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_BF1OoexUEeWP6eN_6Zcgmw"/>

-        <element xmi:type="uml:ActivityParameterNode" href="FMU_Examples.uml#_BFmlIOxUEeWP6eN_6Zcgmw"/>

-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BF1OouxUEeWP6eN_6Zcgmw" x="385" y="125"/>

-      </children>

-      <element xmi:type="uml:Activity" href="FMU_Examples.uml#_1TmzMOxSEeWP6eN_6Zcgmw"/>

-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IkIBsuxTEeWP6eN_6Zcgmw" width="385" height="103"/>

-    </children>

-    <styles xmi:type="notation:StringValueStyle" xmi:id="_IkIBs-xTEeWP6eN_6Zcgmw" name="diagram_compatibility_version" stringValue="1.2.0"/>

-    <styles xmi:type="notation:DiagramStyle" xmi:id="_IkIBtOxTEeWP6eN_6Zcgmw"/>

-    <styles xmi:type="style:PapyrusViewStyle" xmi:id="_IkIBtexTEeWP6eN_6Zcgmw">

-      <owner xmi:type="uml:Activity" href="FMU_Examples.uml#_1TmzMOxSEeWP6eN_6Zcgmw"/>

-    </styles>

-    <element xmi:type="uml:Activity" href="FMU_Examples.uml#_1TmzMOxSEeWP6eN_6Zcgmw"/>

-    <edges xmi:type="notation:Connector" xmi:id="_KsAesOxUEeWP6eN_6Zcgmw" type="ObjectFlow_Edge" source="_Tu0YcOxTEeWP6eN_6Zcgmw" target="_b8EtwOxTEeWP6eN_6Zcgmw">

-      <children xmi:type="notation:DecorationNode" xmi:id="_KsBFwOxUEeWP6eN_6Zcgmw" type="ObjectFlow_NameLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_KsBFwexUEeWP6eN_6Zcgmw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_KsBFwuxUEeWP6eN_6Zcgmw" visible="false" type="ObjectFlow_WeightLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_KsBFw-xUEeWP6eN_6Zcgmw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_KsBFxOxUEeWP6eN_6Zcgmw" type="ObjectFlow_SelectionLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_KsBFxexUEeWP6eN_6Zcgmw" x="20" y="40"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_KsBFxuxUEeWP6eN_6Zcgmw" type="ObjectFlow_TransformationLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_KsBFx-xUEeWP6eN_6Zcgmw" x="-20" y="-60"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_KsBFyOxUEeWP6eN_6Zcgmw" type="ObjectFlow_KeywordLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_KsBFyexUEeWP6eN_6Zcgmw" y="-20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_KsBFyuxUEeWP6eN_6Zcgmw" visible="false" type="ObjectFlow_GuardLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_KsBFy-xUEeWP6eN_6Zcgmw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_KsBFzOxUEeWP6eN_6Zcgmw" type="ObjectFlow_StereotypeLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_KsBFzexUEeWP6eN_6Zcgmw" y="-20"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_KsAesexUEeWP6eN_6Zcgmw"/>

-      <element xmi:type="uml:ObjectFlow" href="FMU_Examples.uml#_KrzDUOxUEeWP6eN_6Zcgmw"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_KsAesuxUEeWP6eN_6Zcgmw" points="[20, 80, -643984, -643984]$[144, 79, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ksj4UOxUEeWP6eN_6Zcgmw" id="(0.775,0.4)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ksj4UexUEeWP6eN_6Zcgmw" id="(0.125,0.4375)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_LOh88OxUEeWP6eN_6Zcgmw" type="ObjectFlow_Edge" source="_5FqTEOxTEeWP6eN_6Zcgmw" target="_b8Etx-xTEeWP6eN_6Zcgmw">

-      <children xmi:type="notation:DecorationNode" xmi:id="_LOikAOxUEeWP6eN_6Zcgmw" type="ObjectFlow_NameLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_LOikAexUEeWP6eN_6Zcgmw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_LOikAuxUEeWP6eN_6Zcgmw" visible="false" type="ObjectFlow_WeightLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_LOikA-xUEeWP6eN_6Zcgmw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_LOikBOxUEeWP6eN_6Zcgmw" type="ObjectFlow_SelectionLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_LOikBexUEeWP6eN_6Zcgmw" x="20" y="40"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_LOikBuxUEeWP6eN_6Zcgmw" type="ObjectFlow_TransformationLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_LOikB-xUEeWP6eN_6Zcgmw" x="-20" y="-60"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_LOikCOxUEeWP6eN_6Zcgmw" type="ObjectFlow_KeywordLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_LOikCexUEeWP6eN_6Zcgmw" y="-20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_LOikCuxUEeWP6eN_6Zcgmw" visible="false" type="ObjectFlow_GuardLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_LOikC-xUEeWP6eN_6Zcgmw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_LOikDOxUEeWP6eN_6Zcgmw" type="ObjectFlow_StereotypeLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_LOikDexUEeWP6eN_6Zcgmw" y="-20"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_LOh88exUEeWP6eN_6Zcgmw"/>

-      <element xmi:type="uml:ObjectFlow" href="FMU_Examples.uml#_LOWWwOxUEeWP6eN_6Zcgmw"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LOh88uxUEeWP6eN_6Zcgmw" points="[89, 156, -643984, -643984]$[148, 150, -643984, -643984]"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_Llu8AOxUEeWP6eN_6Zcgmw" type="ObjectFlow_Edge" source="_b8FU0OxTEeWP6eN_6Zcgmw" target="_BF1OoOxUEeWP6eN_6Zcgmw">

-      <children xmi:type="notation:DecorationNode" xmi:id="_LlvjEOxUEeWP6eN_6Zcgmw" type="ObjectFlow_NameLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_LlvjEexUEeWP6eN_6Zcgmw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_LlvjEuxUEeWP6eN_6Zcgmw" visible="false" type="ObjectFlow_WeightLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_LlvjE-xUEeWP6eN_6Zcgmw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_LlvjFOxUEeWP6eN_6Zcgmw" type="ObjectFlow_SelectionLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_LlvjFexUEeWP6eN_6Zcgmw" x="20" y="40"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_LlvjFuxUEeWP6eN_6Zcgmw" type="ObjectFlow_TransformationLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_LlvjF-xUEeWP6eN_6Zcgmw" x="-20" y="-60"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_LlvjGOxUEeWP6eN_6Zcgmw" type="ObjectFlow_KeywordLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_LlvjGexUEeWP6eN_6Zcgmw" y="-20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_LlvjGuxUEeWP6eN_6Zcgmw" visible="false" type="ObjectFlow_GuardLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_LlvjG-xUEeWP6eN_6Zcgmw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_LlvjHOxUEeWP6eN_6Zcgmw" type="ObjectFlow_StereotypeLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_LlvjHexUEeWP6eN_6Zcgmw" y="-20"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_Llu8AexUEeWP6eN_6Zcgmw"/>

-      <element xmi:type="uml:ObjectFlow" href="FMU_Examples.uml#_LlhgoOxUEeWP6eN_6Zcgmw"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Llu8AuxUEeWP6eN_6Zcgmw" points="[277, 123, -643984, -643984]$[365, 121, -643984, -643984]"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_LmOEMOxUEeWP6eN_6Zcgmw" id="(0.2,0.45)"/>

-    </edges>

-  </notation:Diagram>

-  <notation:Diagram xmi:id="_Nh438OxaEeWP6eN_6Zcgmw" type="PapyrusUMLActivityDiagram" name="Classifier Behavior diagram" measurementUnit="Pixel">

-    <children xmi:type="notation:Shape" xmi:id="_Nh438exaEeWP6eN_6Zcgmw" type="Activity_Shape" gradient="16777215, -1, 0">

-      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EcpVQOxbEeWP6eN_6Zcgmw" source="PapyrusCSSForceValue">

-        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_EcpVQexbEeWP6eN_6Zcgmw" key="gradient" value="true"/>

-        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_E-mLwOxbEeWP6eN_6Zcgmw" key="fillColor" value="true"/>

-      </eAnnotations>

-      <children xmi:type="notation:DecorationNode" xmi:id="_Nh438uxaEeWP6eN_6Zcgmw" type="Activity_NameLabel"/>

-      <children xmi:type="notation:BasicCompartment" xmi:id="_Ba0Y4CQHEeaCtZpD0ATfCw" type="Activity_ParameterCompartment">

-        <styles xmi:type="notation:SortingStyle" xmi:id="_Nh439exaEeWP6eN_6Zcgmw"/>

-        <styles xmi:type="notation:FilteringStyle" xmi:id="_Nh439uxaEeWP6eN_6Zcgmw"/>

-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Nh439-xaEeWP6eN_6Zcgmw"/>

-      </children>

-      <children xmi:type="notation:BasicCompartment" xmi:id="_Ba0_8CQHEeaCtZpD0ATfCw" type="Activity_PreconditionCompartment">

-        <styles xmi:type="notation:SortingStyle" xmi:id="_Nh43-exaEeWP6eN_6Zcgmw"/>

-        <styles xmi:type="notation:FilteringStyle" xmi:id="_Nh43-uxaEeWP6eN_6Zcgmw"/>

-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Nh43--xaEeWP6eN_6Zcgmw"/>

-      </children>

-      <children xmi:type="notation:BasicCompartment" xmi:id="_Ba1nACQHEeaCtZpD0ATfCw" type="Activity_PostconditionCompartment">

-        <styles xmi:type="notation:SortingStyle" xmi:id="_Nh43_exaEeWP6eN_6Zcgmw"/>

-        <styles xmi:type="notation:FilteringStyle" xmi:id="_Nh43_uxaEeWP6eN_6Zcgmw"/>

-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Nh43_-xaEeWP6eN_6Zcgmw"/>

-      </children>

-      <children xmi:type="notation:BasicCompartment" xmi:id="_Ba3cMCQHEeaCtZpD0ATfCw" type="Activity_ActivityNodeCompartment">

-        <children xmi:type="notation:Shape" xmi:id="_15hDAOxaEeWP6eN_6Zcgmw" type="ReadSelfAction_Shape">

-          <children xmi:type="notation:DecorationNode" xmi:id="_15hDA-xaEeWP6eN_6Zcgmw" type="ReadSelfAction_NameLabel"/>

-          <children xmi:type="notation:DecorationNode" xmi:id="_15hqEOxaEeWP6eN_6Zcgmw" type="ReadSelfAction_FloatingNameLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_15hqEexaEeWP6eN_6Zcgmw" y="5"/>

-          </children>

-          <children xmi:type="notation:BasicCompartment" xmi:id="_15l7gOxaEeWP6eN_6Zcgmw" type="compartment_shape_display">

-            <styles xmi:type="notation:TitleStyle" xmi:id="_15l7gexaEeWP6eN_6Zcgmw"/>

-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_15l7guxaEeWP6eN_6Zcgmw"/>

-          </children>

-          <children xmi:type="notation:Shape" xmi:id="_21s-cOxaEeWP6eN_6Zcgmw" type="OutputPin_ReadSelfActionResultShape">

-            <children xmi:type="notation:DecorationNode" xmi:id="_21s-c-xaEeWP6eN_6Zcgmw" visible="false" type="OutputPin_ReadSelfActionResultNameLabel">

-              <layoutConstraint xmi:type="notation:Location" xmi:id="_21s-dOxaEeWP6eN_6Zcgmw" y="5"/>

-            </children>

-            <children xmi:type="notation:DecorationNode" xmi:id="_21s-dexaEeWP6eN_6Zcgmw" type="OutputPin_ReadSelfActionResultStereotypeLabel">

-              <layoutConstraint xmi:type="notation:Location" xmi:id="_21s-duxaEeWP6eN_6Zcgmw" y="5"/>

-            </children>

-            <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_21s-cexaEeWP6eN_6Zcgmw"/>

-            <element xmi:type="uml:OutputPin" href="FMU_Examples.uml#_15d_sOxaEeWP6eN_6Zcgmw"/>

-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_21s-cuxaEeWP6eN_6Zcgmw"/>

-          </children>

-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_15hDAexaEeWP6eN_6Zcgmw"/>

-          <element xmi:type="uml:ReadSelfAction" href="FMU_Examples.uml#_15a8YOxaEeWP6eN_6Zcgmw"/>

-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_15hDAuxaEeWP6eN_6Zcgmw" x="206" y="209" width="65"/>

-        </children>

-        <children xmi:type="notation:Shape" xmi:id="_5yjxIOxaEeWP6eN_6Zcgmw" type="ForkNode_Shape">

-          <children xmi:type="notation:DecorationNode" xmi:id="_5yjxI-xaEeWP6eN_6Zcgmw" visible="false" type="ForkNode_FloatingNameLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_5yjxJOxaEeWP6eN_6Zcgmw" y="5"/>

-          </children>

-          <children xmi:type="notation:DecorationNode" xmi:id="_5yjxJexaEeWP6eN_6Zcgmw" type="ForkNode_StereotypeLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_5yjxJuxaEeWP6eN_6Zcgmw" y="5"/>

-          </children>

-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_5yjxIexaEeWP6eN_6Zcgmw"/>

-          <element xmi:type="uml:ForkNode" href="FMU_Examples.uml#_5ydqgOxaEeWP6eN_6Zcgmw"/>

-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5yjxIuxaEeWP6eN_6Zcgmw" x="334" y="90" width="10" height="274"/>

-        </children>

-        <children xmi:type="notation:Shape" xmi:id="_9mn4oOxaEeWP6eN_6Zcgmw" type="ReadStructuralFeatureAction_Shape">

-          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-wHQQOxaEeWP6eN_6Zcgmw" source="PapyrusCSSForceValue">

-            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-wHQQexaEeWP6eN_6Zcgmw" key="canonical" value="true"/>

-            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-0n80OxaEeWP6eN_6Zcgmw" key="mutable" value="true"/>

-          </eAnnotations>

-          <children xmi:type="notation:DecorationNode" xmi:id="_9mofsOxaEeWP6eN_6Zcgmw" type="ReadStructuralFeatureAction_NameLabel"/>

-          <children xmi:type="notation:DecorationNode" xmi:id="_9mofsexaEeWP6eN_6Zcgmw" type="ReadStructuralFeatureAction_FloatingNameLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_9mofsuxaEeWP6eN_6Zcgmw" y="5"/>

-          </children>

-          <children xmi:type="notation:BasicCompartment" xmi:id="_9nOVkOxaEeWP6eN_6Zcgmw" type="compartment_shape_display">

-            <styles xmi:type="notation:TitleStyle" xmi:id="_9nOVkexaEeWP6eN_6Zcgmw"/>

-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9nOVkuxaEeWP6eN_6Zcgmw"/>

-          </children>

-          <children xmi:type="notation:Shape" xmi:id="_-zFrwOxaEeWP6eN_6Zcgmw" type="InputPin_ReadStructuralFeatureActionObjectShape">

-            <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-0n80exaEeWP6eN_6Zcgmw" source="PapyrusCSSForceValue">

-              <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-0n80uxaEeWP6eN_6Zcgmw" key="mutable" value="true"/>

-            </eAnnotations>

-            <children xmi:type="notation:DecorationNode" xmi:id="_-zFrw-xaEeWP6eN_6Zcgmw" visible="false" type="InputPin_ReadStructuralFeatureActionObjectNameLabel">

-              <layoutConstraint xmi:type="notation:Location" xmi:id="_-zFrxOxaEeWP6eN_6Zcgmw" y="5"/>

-            </children>

-            <children xmi:type="notation:DecorationNode" xmi:id="_-zFrxexaEeWP6eN_6Zcgmw" type="InputPin_ReadStructuralFeatureActionObjectStereotypeLabel">

-              <layoutConstraint xmi:type="notation:Location" xmi:id="_-zFrxuxaEeWP6eN_6Zcgmw" y="5"/>

-            </children>

-            <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_-zFrwexaEeWP6eN_6Zcgmw"/>

-            <element xmi:type="uml:InputPin" href="FMU_Examples.uml#_9mjnMOxaEeWP6eN_6Zcgmw"/>

-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-zFrwuxaEeWP6eN_6Zcgmw" x="-15" y="13"/>

-          </children>

-          <children xmi:type="notation:Shape" xmi:id="_-zGS0OxaEeWP6eN_6Zcgmw" type="OutputPin_ReadStructuralFeatureActionResultShape">

-            <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-0n80-xaEeWP6eN_6Zcgmw" source="PapyrusCSSForceValue">

-              <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-0n81OxaEeWP6eN_6Zcgmw" key="mutable" value="true"/>

-            </eAnnotations>

-            <children xmi:type="notation:DecorationNode" xmi:id="_-zGS0-xaEeWP6eN_6Zcgmw" visible="false" type="OutputPin_ReadStructuralFeatureActionResultNameLabel">

-              <layoutConstraint xmi:type="notation:Location" xmi:id="_-zGS1OxaEeWP6eN_6Zcgmw" y="5"/>

-            </children>

-            <children xmi:type="notation:DecorationNode" xmi:id="_-zGS1exaEeWP6eN_6Zcgmw" type="OutputPin_ReadStructuralFeatureActionResultStereotypeLabel">

-              <layoutConstraint xmi:type="notation:Location" xmi:id="_-zGS1uxaEeWP6eN_6Zcgmw" y="5"/>

-            </children>

-            <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_-zGS0exaEeWP6eN_6Zcgmw"/>

-            <element xmi:type="uml:OutputPin" href="FMU_Examples.uml#_9mk1UOxaEeWP6eN_6Zcgmw"/>

-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-zGS0uxaEeWP6eN_6Zcgmw" x="59" y="14"/>

-          </children>

-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_9mn4oexaEeWP6eN_6Zcgmw"/>

-          <styles xmi:type="notation:CanonicalStyle" xmi:id="_-wGpMOxaEeWP6eN_6Zcgmw"/>

-          <element xmi:type="uml:ReadStructuralFeatureAction" href="FMU_Examples.uml#_9mYoEOxaEeWP6eN_6Zcgmw"/>

-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9mn4ouxaEeWP6eN_6Zcgmw" x="396" y="110" width="60"/>

-        </children>

-        <children xmi:type="notation:Shape" xmi:id="_HTveMOxbEeWP6eN_6Zcgmw" type="Comment_Shape">

-          <children xmi:type="notation:DecorationNode" xmi:id="_HTwFQOxbEeWP6eN_6Zcgmw" type="Comment_BodyLabel"/>

-          <element xmi:type="uml:Comment" href="FMU_Examples.uml#_HTpXkOxbEeWP6eN_6Zcgmw"/>

-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HTveMexbEeWP6eN_6Zcgmw" x="388" y="32" width="248" height="34"/>

-        </children>

-        <children xmi:type="notation:Shape" xmi:id="_MsGC8uxbEeWP6eN_6Zcgmw" type="CallOperationAction_Shape">

-          <children xmi:type="notation:Shape" xmi:id="_MsHRGuxbEeWP6eN_6Zcgmw" type="OutputPin_CallOperationActionResultShape">

-            <children xmi:type="notation:DecorationNode" xmi:id="_MsHRHexbEeWP6eN_6Zcgmw" visible="false" type="OutputPin_CallOperationActionResultNameLabel">

-              <layoutConstraint xmi:type="notation:Location" xmi:id="_MsHRHuxbEeWP6eN_6Zcgmw" y="5"/>

-            </children>

-            <children xmi:type="notation:DecorationNode" xmi:id="_MsHRH-xbEeWP6eN_6Zcgmw" type="OutputPin_CallOperationActionResultStereotypeLabel">

-              <layoutConstraint xmi:type="notation:Location" xmi:id="_MsHRIOxbEeWP6eN_6Zcgmw" y="5"/>

-            </children>

-            <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_MsHRG-xbEeWP6eN_6Zcgmw"/>

-            <element xmi:type="uml:OutputPin" href="FMU_Examples.uml#_MsDmsOxbEeWP6eN_6Zcgmw"/>

-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MsHRHOxbEeWP6eN_6Zcgmw" x="103" y="29"/>

-          </children>

-          <children xmi:type="notation:Shape" xmi:id="_MsGqBOxbEeWP6eN_6Zcgmw" type="InputPin_CallOperationActionArgumentShape">

-            <children xmi:type="notation:DecorationNode" xmi:id="_MsGqB-xbEeWP6eN_6Zcgmw" type="InputPin_CallOperationActionArgumentNameLabel">

-              <layoutConstraint xmi:type="notation:Location" xmi:id="_MsHREOxbEeWP6eN_6Zcgmw" x="26" y="-5"/>

-            </children>

-            <children xmi:type="notation:DecorationNode" xmi:id="_MsHREexbEeWP6eN_6Zcgmw" type="InputPin_CallOperationActionArgumentStereotypeLabel">

-              <layoutConstraint xmi:type="notation:Location" xmi:id="_MsHREuxbEeWP6eN_6Zcgmw" y="5"/>

-            </children>

-            <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_MsGqBexbEeWP6eN_6Zcgmw"/>

-            <element xmi:type="uml:InputPin" href="FMU_Examples.uml#_Mr_VQOxbEeWP6eN_6Zcgmw"/>

-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MsGqBuxbEeWP6eN_6Zcgmw" x="-15" y="9"/>

-          </children>

-          <children xmi:type="notation:Shape" xmi:id="_MsHRE-xbEeWP6eN_6Zcgmw" type="InputPin_CallOperationActionTargetShape">

-            <children xmi:type="notation:DecorationNode" xmi:id="_MsHRFuxbEeWP6eN_6Zcgmw" visible="false" type="InputPin_CallOperationActionTargetNameLabel">

-              <layoutConstraint xmi:type="notation:Location" xmi:id="_MsHRF-xbEeWP6eN_6Zcgmw" y="5"/>

-            </children>

-            <children xmi:type="notation:DecorationNode" xmi:id="_MsHRGOxbEeWP6eN_6Zcgmw" type="InputPin_CallOperationActionTargetStereotypeLabel">

-              <layoutConstraint xmi:type="notation:Location" xmi:id="_MsHRGexbEeWP6eN_6Zcgmw" y="5"/>

-            </children>

-            <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_MsHRFOxbEeWP6eN_6Zcgmw"/>

-            <element xmi:type="uml:InputPin" href="FMU_Examples.uml#_Mr9gEOxbEeWP6eN_6Zcgmw"/>

-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MsHRFexbEeWP6eN_6Zcgmw" x="-15" y="40"/>

-          </children>

-          <children xmi:type="notation:DecorationNode" xmi:id="_MsGqAOxbEeWP6eN_6Zcgmw" type="CallOperationAction_NameLabel"/>

-          <children xmi:type="notation:DecorationNode" xmi:id="_MsGqAexbEeWP6eN_6Zcgmw" type="CallOperationAction_FloatingNameLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_MsGqAuxbEeWP6eN_6Zcgmw" y="5"/>

-          </children>

-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_MsGC8-xbEeWP6eN_6Zcgmw"/>

-          <element xmi:type="uml:CallOperationAction" href="FMU_Examples.uml#_Mrov8OxbEeWP6eN_6Zcgmw"/>

-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MsGqA-xbEeWP6eN_6Zcgmw" x="521" y="184" width="104" height="66"/>

-        </children>

-        <children xmi:type="notation:Shape" xmi:id="_Zs0HQOxbEeWP6eN_6Zcgmw" type="Comment_Shape">

-          <children xmi:type="notation:DecorationNode" xmi:id="_Zs0HQuxbEeWP6eN_6Zcgmw" type="Comment_BodyLabel"/>

-          <element xmi:type="uml:Comment" href="FMU_Examples.uml#_ZsnS8OxbEeWP6eN_6Zcgmw"/>

-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Zs0HQexbEeWP6eN_6Zcgmw" x="513" y="110" height="32"/>

-        </children>

-        <children xmi:type="notation:Shape" xmi:id="_wBOkgOxbEeWP6eN_6Zcgmw" type="AddStructuralFeatureValueAction_Shape">

-          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_w4HJMOxbEeWP6eN_6Zcgmw" source="PapyrusCSSForceValue">

-            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_w4HJMexbEeWP6eN_6Zcgmw" key="canonical" value="true"/>

-            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_w5NVYOxbEeWP6eN_6Zcgmw" key="mutable" value="true"/>

-          </eAnnotations>

-          <children xmi:type="notation:DecorationNode" xmi:id="_wBPLkOxbEeWP6eN_6Zcgmw" type="AddStructuralFeatureValueAction_NameLabel"/>

-          <children xmi:type="notation:DecorationNode" xmi:id="_wBPLkexbEeWP6eN_6Zcgmw" type="AddStructuralFeatureValueAction_FloatingNameLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_wBPLkuxbEeWP6eN_6Zcgmw" y="5"/>

-          </children>

-          <children xmi:type="notation:BasicCompartment" xmi:id="_wBV5QOxbEeWP6eN_6Zcgmw" type="compartment_shape_display">

-            <styles xmi:type="notation:TitleStyle" xmi:id="_wBV5QexbEeWP6eN_6Zcgmw"/>

-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wBV5QuxbEeWP6eN_6Zcgmw"/>

-          </children>

-          <children xmi:type="notation:Shape" xmi:id="_w4TWcOxbEeWP6eN_6Zcgmw" type="InputPin_AddStructuralFeatureValueActionObjectShape">

-            <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_w5NVYexbEeWP6eN_6Zcgmw" source="PapyrusCSSForceValue">

-              <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_w5NVYuxbEeWP6eN_6Zcgmw" key="mutable" value="true"/>

-            </eAnnotations>

-            <children xmi:type="notation:DecorationNode" xmi:id="_w4T9gOxbEeWP6eN_6Zcgmw" visible="false" type="InputPin_AddStructuralFeatureValueActionObjectNameLabel">

-              <layoutConstraint xmi:type="notation:Location" xmi:id="_w4T9gexbEeWP6eN_6Zcgmw" y="5"/>

-            </children>

-            <children xmi:type="notation:DecorationNode" xmi:id="_w4T9guxbEeWP6eN_6Zcgmw" type="InputPin_AddStructuralFeatureValueActionObjectStereotypeLabel">

-              <layoutConstraint xmi:type="notation:Location" xmi:id="_w4T9g-xbEeWP6eN_6Zcgmw" y="5"/>

-            </children>

-            <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_w4TWcexbEeWP6eN_6Zcgmw"/>

-            <element xmi:type="uml:InputPin" href="FMU_Examples.uml#_wBHPwOxbEeWP6eN_6Zcgmw"/>

-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w4TWcuxbEeWP6eN_6Zcgmw" x="-15" y="38"/>

-          </children>

-          <children xmi:type="notation:Shape" xmi:id="_w4UkkOxbEeWP6eN_6Zcgmw" type="InputPin_AddStructuralFeatureValueActionValueShape">

-            <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_w5NVY-xbEeWP6eN_6Zcgmw" source="PapyrusCSSForceValue">

-              <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_w5NVZOxbEeWP6eN_6Zcgmw" key="mutable" value="true"/>

-            </eAnnotations>

-            <children xmi:type="notation:DecorationNode" xmi:id="_w4Ukk-xbEeWP6eN_6Zcgmw" type="InputPin_AddStructuralFeatureValueActionValueNameLabel">

-              <layoutConstraint xmi:type="notation:Location" xmi:id="_w4UklOxbEeWP6eN_6Zcgmw" x="19" y="-1"/>

-            </children>

-            <children xmi:type="notation:DecorationNode" xmi:id="_w4UklexbEeWP6eN_6Zcgmw" type="InputPin_AddStructuralFeatureValueActionValueStereotypeLabel">

-              <layoutConstraint xmi:type="notation:Location" xmi:id="_w4UkluxbEeWP6eN_6Zcgmw" y="5"/>

-            </children>

-            <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_w4UkkexbEeWP6eN_6Zcgmw"/>

-            <element xmi:type="uml:InputPin" href="FMU_Examples.uml#_wBJE8OxbEeWP6eN_6Zcgmw"/>

-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w4UkkuxbEeWP6eN_6Zcgmw" x="-15" y="4"/>

-          </children>

-          <children xmi:type="notation:Shape" xmi:id="_w4VLoOxbEeWP6eN_6Zcgmw" type="OutputPin_AddStructuralFeatureValueActionResultShape">

-            <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_w5NVZexbEeWP6eN_6Zcgmw" source="PapyrusCSSForceValue">

-              <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_w5NVZuxbEeWP6eN_6Zcgmw" key="mutable" value="true"/>

-            </eAnnotations>

-            <children xmi:type="notation:DecorationNode" xmi:id="_w4VLo-xbEeWP6eN_6Zcgmw" visible="false" type="OutputPin_AddStructuralFeatureValueActionResultNameLabel">

-              <layoutConstraint xmi:type="notation:Location" xmi:id="_w4VLpOxbEeWP6eN_6Zcgmw" x="2" y="21"/>

-            </children>

-            <children xmi:type="notation:DecorationNode" xmi:id="_w4VLpexbEeWP6eN_6Zcgmw" type="OutputPin_AddStructuralFeatureValueActionResultStereotypeLabel">

-              <layoutConstraint xmi:type="notation:Location" xmi:id="_w4VLpuxbEeWP6eN_6Zcgmw" y="5"/>

-            </children>

-            <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_w4VLoexbEeWP6eN_6Zcgmw"/>

-            <element xmi:type="uml:OutputPin" href="FMU_Examples.uml#_wBH20OxbEeWP6eN_6Zcgmw"/>

-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_w4VLouxbEeWP6eN_6Zcgmw" x="59" y="20"/>

-          </children>

-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_wBOkgexbEeWP6eN_6Zcgmw"/>

-          <styles xmi:type="notation:CanonicalStyle" xmi:id="_w4GiIOxbEeWP6eN_6Zcgmw" canonical="false"/>

-          <element xmi:type="uml:AddStructuralFeatureValueAction" href="FMU_Examples.uml#_wBEMcOxbEeWP6eN_6Zcgmw"/>

-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wBOkguxbEeWP6eN_6Zcgmw" x="707" y="290" width="60" height="62"/>

-        </children>

-        <children xmi:type="notation:Shape" xmi:id="_IUG5kOxcEeWP6eN_6Zcgmw" type="Comment_Shape">

-          <children xmi:type="notation:DecorationNode" xmi:id="_IUG5kuxcEeWP6eN_6Zcgmw" type="Comment_BodyLabel"/>

-          <element xmi:type="uml:Comment" href="FMU_Examples.uml#_IT1z0OxcEeWP6eN_6Zcgmw"/>

-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IUG5kexcEeWP6eN_6Zcgmw" x="702" y="200"/>

-        </children>

-        <children xmi:type="notation:Shape" xmi:id="_mamyEOxnEeWP6eN_6Zcgmw" type="AcceptEventAction_Shape">

-          <children xmi:type="notation:DecorationNode" xmi:id="_manZIOxnEeWP6eN_6Zcgmw" type="AcceptEventAction_NameLabel"/>

-          <children xmi:type="notation:DecorationNode" xmi:id="_manZIexnEeWP6eN_6Zcgmw" type="AcceptEventAction_TriggerLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_manZIuxnEeWP6eN_6Zcgmw" y="5"/>

-          </children>

-          <children xmi:type="notation:DecorationNode" xmi:id="_manZI-xnEeWP6eN_6Zcgmw" type="AcceptEventAction_StereotypeLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_manZJOxnEeWP6eN_6Zcgmw" y="5"/>

-          </children>

-          <children xmi:type="notation:DecorationNode" xmi:id="_manZJexnEeWP6eN_6Zcgmw" type="AcceptEventAction_FloatingNameLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_manZJuxnEeWP6eN_6Zcgmw" y="5"/>

-          </children>

-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_mamyEexnEeWP6eN_6Zcgmw"/>

-          <element xmi:type="uml:AcceptEventAction" href="FMU_Examples.uml#_maTQEOxnEeWP6eN_6Zcgmw"/>

-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mamyEuxnEeWP6eN_6Zcgmw" x="23" y="191" width="122" height="77"/>

-        </children>

-        <children xmi:type="notation:Shape" xmi:id="_yypFwOxnEeWP6eN_6Zcgmw" type="InitialNode_Shape">

-          <children xmi:type="notation:DecorationNode" xmi:id="_yypFw-xnEeWP6eN_6Zcgmw" visible="false" type="InitialNode_FloatingNameLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_yypFxOxnEeWP6eN_6Zcgmw" y="5"/>

-          </children>

-          <children xmi:type="notation:DecorationNode" xmi:id="_yypFxexnEeWP6eN_6Zcgmw" type="InitialNode_StereotypeLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_yypFxuxnEeWP6eN_6Zcgmw" y="5"/>

-          </children>

-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_yypFwexnEeWP6eN_6Zcgmw"/>

-          <element xmi:type="uml:InitialNode" href="FMU_Examples.uml#_yyR5YOxnEeWP6eN_6Zcgmw"/>

-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yypFwuxnEeWP6eN_6Zcgmw" x="76" y="118"/>

-        </children>

-        <children xmi:type="notation:Shape" xmi:id="_2gIrMOxnEeWP6eN_6Zcgmw" type="AcceptEventAction_Shape">

-          <children xmi:type="notation:DecorationNode" xmi:id="_2gIrM-xnEeWP6eN_6Zcgmw" type="AcceptEventAction_NameLabel"/>

-          <children xmi:type="notation:DecorationNode" xmi:id="_2gIrNOxnEeWP6eN_6Zcgmw" type="AcceptEventAction_TriggerLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_2gIrNexnEeWP6eN_6Zcgmw" x="33" y="-24"/>

-          </children>

-          <children xmi:type="notation:DecorationNode" xmi:id="_2gIrNuxnEeWP6eN_6Zcgmw" type="AcceptEventAction_StereotypeLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_2gIrN-xnEeWP6eN_6Zcgmw" y="5"/>

-          </children>

-          <children xmi:type="notation:DecorationNode" xmi:id="_2gIrOOxnEeWP6eN_6Zcgmw" type="AcceptEventAction_FloatingNameLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_2gJSQOxnEeWP6eN_6Zcgmw" y="5"/>

-          </children>

-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_2gIrMexnEeWP6eN_6Zcgmw"/>

-          <element xmi:type="uml:AcceptEventAction" href="FMU_Examples.uml#_2fvCkOxnEeWP6eN_6Zcgmw"/>

-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2gIrMuxnEeWP6eN_6Zcgmw" x="518" y="382"/>

-        </children>

-        <children xmi:type="notation:Shape" xmi:id="_LHM10OxoEeWP6eN_6Zcgmw" type="ActivityFinalNode_Shape">

-          <children xmi:type="notation:DecorationNode" xmi:id="_LHM10-xoEeWP6eN_6Zcgmw" visible="false" type="ActivityFinalNode_FloatingNameLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_LHM11OxoEeWP6eN_6Zcgmw" y="5"/>

-          </children>

-          <children xmi:type="notation:DecorationNode" xmi:id="_LHM11exoEeWP6eN_6Zcgmw" type="ActivityFinalNode_StereotypeLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_LHM11uxoEeWP6eN_6Zcgmw" x="-1" y="-2"/>

-          </children>

-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_LHM10exoEeWP6eN_6Zcgmw"/>

-          <element xmi:type="uml:ActivityFinalNode" href="FMU_Examples.uml#_LGz0QOxoEeWP6eN_6Zcgmw"/>

-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LHM10uxoEeWP6eN_6Zcgmw" x="877" y="333"/>

-        </children>

-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Nh44AexaEeWP6eN_6Zcgmw"/>

-      </children>

-      <element xmi:type="uml:Activity" href="FMU_Examples.uml#_MczfMOxaEeWP6eN_6Zcgmw"/>

-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Nh44AuxaEeWP6eN_6Zcgmw" width="935" height="368"/>

-    </children>

-    <styles xmi:type="notation:StringValueStyle" xmi:id="_Nh44A-xaEeWP6eN_6Zcgmw" name="diagram_compatibility_version" stringValue="1.2.0"/>

-    <styles xmi:type="notation:DiagramStyle" xmi:id="_Nh44BOxaEeWP6eN_6Zcgmw"/>

-    <styles xmi:type="style:PapyrusViewStyle" xmi:id="_Nh44BexaEeWP6eN_6Zcgmw">

-      <owner xmi:type="uml:Activity" href="FMU_Examples.uml#_MczfMOxaEeWP6eN_6Zcgmw"/>

-    </styles>

-    <element xmi:type="uml:Activity" href="FMU_Examples.uml#_MczfMOxaEeWP6eN_6Zcgmw"/>

-    <edges xmi:type="notation:Connector" xmi:id="_YeFqUOxbEeWP6eN_6Zcgmw" type="Comment_AnnotatedElementEdge" source="_HTveMOxbEeWP6eN_6Zcgmw" target="_9mn4oOxaEeWP6eN_6Zcgmw">

-      <styles xmi:type="notation:FontStyle" xmi:id="_YeFqUexbEeWP6eN_6Zcgmw"/>

-      <element xsi:nil="true"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_YeFqUuxbEeWP6eN_6Zcgmw" points="[436, 135, -643984, -643984]$[430, 146, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YebokOxbEeWP6eN_6Zcgmw" id="(0.174916573971079,1.0)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YebokexbEeWP6eN_6Zcgmw" id="(0.48333333333333334,0.0)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_dT3tgOxbEeWP6eN_6Zcgmw" type="ObjectFlow_Edge" source="_5yjxIOxaEeWP6eN_6Zcgmw" target="_-zFrwOxaEeWP6eN_6Zcgmw">

-      <children xmi:type="notation:DecorationNode" xmi:id="_dT3tg-xbEeWP6eN_6Zcgmw" type="ObjectFlow_NameLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_TCGFQOxnEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_dT3thOxbEeWP6eN_6Zcgmw" x="-6" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_dT3thexbEeWP6eN_6Zcgmw" visible="false" type="ObjectFlow_WeightLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_TCjYQOxnEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_dT3thuxbEeWP6eN_6Zcgmw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_dT3th-xbEeWP6eN_6Zcgmw" type="ObjectFlow_SelectionLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_TCxasOxnEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_dT4UkOxbEeWP6eN_6Zcgmw" x="70" y="40"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_dT4UkexbEeWP6eN_6Zcgmw" type="ObjectFlow_TransformationLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_TDAEMOxnEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_dT4UkuxbEeWP6eN_6Zcgmw" x="30" y="-60"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_dT4Uk-xbEeWP6eN_6Zcgmw" type="ObjectFlow_KeywordLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_TDOGoOxnEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_dT4UlOxbEeWP6eN_6Zcgmw" x="-6" y="-20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_dT4UlexbEeWP6eN_6Zcgmw" visible="false" type="ObjectFlow_GuardLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_TDfzcOxnEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_dT4UluxbEeWP6eN_6Zcgmw" x="6" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_dT4Ul-xbEeWP6eN_6Zcgmw" type="ObjectFlow_StereotypeLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_TDsnwOxnEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_dT4UmOxbEeWP6eN_6Zcgmw" y="-20"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_dT3tgexbEeWP6eN_6Zcgmw"/>

-      <element xmi:type="uml:ObjectFlow" href="FMU_Examples.uml#_dTqSIOxbEeWP6eN_6Zcgmw"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dT3tguxbEeWP6eN_6Zcgmw" points="[349, 164, -643984, -643984]$[386, 163, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dUR9MOxbEeWP6eN_6Zcgmw" id="(1.0,0.1386861313868613)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_dUR9MexbEeWP6eN_6Zcgmw" id="(0.125,0.3125)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_ez6j8OxbEeWP6eN_6Zcgmw" type="ObjectFlow_Edge" source="_-zGS0OxaEeWP6eN_6Zcgmw" target="_MsGqBOxbEeWP6eN_6Zcgmw" routing="Rectilinear">

-      <children xmi:type="notation:DecorationNode" xmi:id="_ez6j8-xbEeWP6eN_6Zcgmw" type="ObjectFlow_NameLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_hgOZMOxbEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_ez7LAOxbEeWP6eN_6Zcgmw" x="-15" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_ez7LAexbEeWP6eN_6Zcgmw" visible="false" type="ObjectFlow_WeightLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_hgbNgOxbEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_ez7LAuxbEeWP6eN_6Zcgmw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_ez7LA-xbEeWP6eN_6Zcgmw" type="ObjectFlow_SelectionLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_hgjwYOxbEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_ez7LBOxbEeWP6eN_6Zcgmw" x="20" y="-10"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_ez7LBexbEeWP6eN_6Zcgmw" type="ObjectFlow_TransformationLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_hgvWkOxbEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_ez7LBuxbEeWP6eN_6Zcgmw" x="-20" y="-110"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_ez7LB-xbEeWP6eN_6Zcgmw" type="ObjectFlow_KeywordLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_hg7j0OxbEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_ez7LCOxbEeWP6eN_6Zcgmw" x="-15" y="-20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_ez7LCexbEeWP6eN_6Zcgmw" visible="false" type="ObjectFlow_GuardLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_hhF74OxbEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_ez7LCuxbEeWP6eN_6Zcgmw" x="15" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_ez7LC-xbEeWP6eN_6Zcgmw" type="ObjectFlow_StereotypeLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_hhQ7AOxbEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_ez7LDOxbEeWP6eN_6Zcgmw" y="-20"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_ez6j8exbEeWP6eN_6Zcgmw"/>

-      <element xmi:type="uml:ObjectFlow" href="FMU_Examples.uml#_eznpAOxbEeWP6eN_6Zcgmw"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ez6j8uxbEeWP6eN_6Zcgmw" points="[476, 168, -643984, -643984]$[491, 168, -643984, -643984]$[491, 236, -643984, -643984]$[511, 236, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_hf0JgOxbEeWP6eN_6Zcgmw" id="(1.0,0.5)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_e0Wo0OxbEeWP6eN_6Zcgmw" id="(0.0,0.4375)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_in2IkOxbEeWP6eN_6Zcgmw" type="ObjectFlow_Edge" source="_5yjxIOxaEeWP6eN_6Zcgmw" target="_MsHRE-xbEeWP6eN_6Zcgmw">

-      <children xmi:type="notation:DecorationNode" xmi:id="_in2Ik-xbEeWP6eN_6Zcgmw" type="ObjectFlow_NameLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_TD6qMOxnEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_in2IlOxbEeWP6eN_6Zcgmw" x="-24" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_in2IlexbEeWP6eN_6Zcgmw" visible="false" type="ObjectFlow_WeightLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_TEKh0OxnEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_in2IluxbEeWP6eN_6Zcgmw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_in2voOxbEeWP6eN_6Zcgmw" type="ObjectFlow_SelectionLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_TEZLUOxnEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_in2voexbEeWP6eN_6Zcgmw" x="70" y="40"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_in2vouxbEeWP6eN_6Zcgmw" type="ObjectFlow_TransformationLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_TEl_oOxnEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_in2vo-xbEeWP6eN_6Zcgmw" x="30" y="-60"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_in2vpOxbEeWP6eN_6Zcgmw" type="ObjectFlow_KeywordLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_TE0CEOxnEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_in2vpexbEeWP6eN_6Zcgmw" x="-24" y="-20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_in2vpuxbEeWP6eN_6Zcgmw" visible="false" type="ObjectFlow_GuardLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_TFCEgOxnEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_in2vp-xbEeWP6eN_6Zcgmw" x="24" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_in2vqOxbEeWP6eN_6Zcgmw" type="ObjectFlow_StereotypeLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_TFR8IOxnEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_in2vqexbEeWP6eN_6Zcgmw" y="-20"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_in2IkexbEeWP6eN_6Zcgmw"/>

-      <element xmi:type="uml:ObjectFlow" href="FMU_Examples.uml#_innfEOxbEeWP6eN_6Zcgmw"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_in2IkuxbEeWP6eN_6Zcgmw" points="[349, 272, -643984, -643984]$[511, 266, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ioN8AOxbEeWP6eN_6Zcgmw" id="(1.0,0.5145985401459854)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ioN8AexbEeWP6eN_6Zcgmw" id="(0.125,0.4375)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_lzm58OxbEeWP6eN_6Zcgmw" type="ObjectFlow_Edge" source="_21s-cOxaEeWP6eN_6Zcgmw" target="_5yjxIOxaEeWP6eN_6Zcgmw">

-      <children xmi:type="notation:DecorationNode" xmi:id="_lzm58-xbEeWP6eN_6Zcgmw" type="ObjectFlow_NameLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_THMnsOxnEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_lzm59OxbEeWP6eN_6Zcgmw" x="-7" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_lzm59exbEeWP6eN_6Zcgmw" visible="false" type="ObjectFlow_WeightLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_THaDEOxnEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_lzm59uxbEeWP6eN_6Zcgmw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_lzm59-xbEeWP6eN_6Zcgmw" type="ObjectFlow_SelectionLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_THnecOxnEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_lzm5-OxbEeWP6eN_6Zcgmw" x="70" y="40"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_lzm5-exbEeWP6eN_6Zcgmw" type="ObjectFlow_TransformationLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_TH050OxnEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_lzm5-uxbEeWP6eN_6Zcgmw" x="30" y="-60"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_lzm5--xbEeWP6eN_6Zcgmw" type="ObjectFlow_KeywordLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_TICVMOxnEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_lzm5_OxbEeWP6eN_6Zcgmw" x="-7" y="-20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_lzm5_exbEeWP6eN_6Zcgmw" visible="false" type="ObjectFlow_GuardLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_TISM0OxnEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_lzm5_uxbEeWP6eN_6Zcgmw" x="7" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_lzm5_-xbEeWP6eN_6Zcgmw" type="ObjectFlow_StereotypeLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_TIfoMOxnEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_lzm6AOxbEeWP6eN_6Zcgmw" y="-20"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_lzm58exbEeWP6eN_6Zcgmw"/>

-      <element xmi:type="uml:ObjectFlow" href="FMU_Examples.uml#_lzQ7sOxbEeWP6eN_6Zcgmw"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_lzm58uxbEeWP6eN_6Zcgmw" points="[291, 267, -643984, -643984]$[339, 268, -643984, -643984]"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_l0EM8OxbEeWP6eN_6Zcgmw" id="(0.1,0.5145985401459854)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_uCyh4OxbEeWP6eN_6Zcgmw" type="Comment_AnnotatedElementEdge" source="_Zs0HQOxbEeWP6eN_6Zcgmw" target="_MsGC8uxbEeWP6eN_6Zcgmw">

-      <styles xmi:type="notation:FontStyle" xmi:id="_uCyh4exbEeWP6eN_6Zcgmw"/>

-      <element xsi:nil="true"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uCyh4uxbEeWP6eN_6Zcgmw" points="[582, 210, -643984, -643984]$[578, 220, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_uDOmwOxbEeWP6eN_6Zcgmw" id="(0.31081536388140174,1.0)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_uDOmwexbEeWP6eN_6Zcgmw" id="(0.5,0.0)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_7PNf4OxbEeWP6eN_6Zcgmw" type="ObjectFlow_Edge" source="_5yjxIOxaEeWP6eN_6Zcgmw" target="_w4TWcOxbEeWP6eN_6Zcgmw">

-      <children xmi:type="notation:DecorationNode" xmi:id="_7PNf4-xbEeWP6eN_6Zcgmw" type="ObjectFlow_NameLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_TFfXgOxnEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_7PNf5OxbEeWP6eN_6Zcgmw" x="-52" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_7PNf5exbEeWP6eN_6Zcgmw" visible="false" type="ObjectFlow_WeightLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_TFuoEOxnEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_7PNf5uxbEeWP6eN_6Zcgmw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_7PNf5-xbEeWP6eN_6Zcgmw" type="ObjectFlow_SelectionLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_TGA78OxnEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_7PNf6OxbEeWP6eN_6Zcgmw" x="70" y="40"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_7PNf6exbEeWP6eN_6Zcgmw" type="ObjectFlow_TransformationLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_TGQzkOxnEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_7PNf6uxbEeWP6eN_6Zcgmw" x="30" y="-60"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_7PNf6-xbEeWP6eN_6Zcgmw" type="ObjectFlow_KeywordLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_TGe2AOxnEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_7PNf7OxbEeWP6eN_6Zcgmw" x="-52" y="-20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_7PNf7exbEeWP6eN_6Zcgmw" visible="false" type="ObjectFlow_GuardLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_TGtfgOxnEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_7PNf7uxbEeWP6eN_6Zcgmw" x="52" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_7PNf7-xbEeWP6eN_6Zcgmw" type="ObjectFlow_StereotypeLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_TG-lQOxnEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_7PNf8OxbEeWP6eN_6Zcgmw" y="-20"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_7PNf4exbEeWP6eN_6Zcgmw"/>

-      <element xmi:type="uml:ObjectFlow" href="FMU_Examples.uml#_7O4IsOxbEeWP6eN_6Zcgmw"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7PNf4uxbEeWP6eN_6Zcgmw" points="[349, 373, -643984, -643984]$[697, 372, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7P2ZEOxbEeWP6eN_6Zcgmw" id="(1.0,0.9014598540145985)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_8vm7oOxbEeWP6eN_6Zcgmw" type="ObjectFlow_Edge" source="_MsHRGuxbEeWP6eN_6Zcgmw" target="_w4UkkOxbEeWP6eN_6Zcgmw" routing="Rectilinear">

-      <children xmi:type="notation:DecorationNode" xmi:id="_8vm7o-xbEeWP6eN_6Zcgmw" type="ObjectFlow_NameLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="__BUfkOxbEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_8vm7pOxbEeWP6eN_6Zcgmw" x="-19" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_8vm7pexbEeWP6eN_6Zcgmw" visible="false" type="ObjectFlow_WeightLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="__BiiAOxbEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_8vm7puxbEeWP6eN_6Zcgmw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_8vm7p-xbEeWP6eN_6Zcgmw" type="ObjectFlow_SelectionLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="__BvWUOxbEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_8vm7qOxbEeWP6eN_6Zcgmw" x="70" y="40"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_8vm7qexbEeWP6eN_6Zcgmw" type="ObjectFlow_TransformationLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="__B9YwOxbEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_8vm7quxbEeWP6eN_6Zcgmw" x="30" y="-60"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_8vm7q-xbEeWP6eN_6Zcgmw" type="ObjectFlow_KeywordLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="__CMpUOxbEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_8vm7rOxbEeWP6eN_6Zcgmw" x="-19" y="-20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_8vm7rexbEeWP6eN_6Zcgmw" visible="false" type="ObjectFlow_GuardLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="__CZdoOxbEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_8vm7ruxbEeWP6eN_6Zcgmw" x="7" y="8"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_8vm7r-xbEeWP6eN_6Zcgmw" type="ObjectFlow_StereotypeLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="__CngEOxbEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_8vm7sOxbEeWP6eN_6Zcgmw" y="-20"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_8vm7oexbEeWP6eN_6Zcgmw"/>

-      <element xmi:type="uml:ObjectFlow" href="FMU_Examples.uml#_8vTZoOxbEeWP6eN_6Zcgmw"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8vm7ouxbEeWP6eN_6Zcgmw" points="[645, 257, -643984, -643984]$[664, 257, -643984, -643984]$[664, 337, -643984, -643984]$[697, 337, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8wH5AOxbEeWP6eN_6Zcgmw" id="(1.0,0.5)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__A1XYOxbEeWP6eN_6Zcgmw" id="(0.0,0.4375)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_SDTiwOxcEeWP6eN_6Zcgmw" type="Comment_AnnotatedElementEdge" source="_IUG5kOxcEeWP6eN_6Zcgmw" target="_wBOkgOxbEeWP6eN_6Zcgmw">

-      <styles xmi:type="notation:FontStyle" xmi:id="_SDTiwexcEeWP6eN_6Zcgmw"/>

-      <element xsi:nil="true"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_SDTiwuxcEeWP6eN_6Zcgmw" points="[746, 296, -643984, -643984]$[737, 326, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_SDtycOxcEeWP6eN_6Zcgmw" id="(0.16441931274467156,1.0)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_SDuZgOxcEeWP6eN_6Zcgmw" id="(0.4166666666666667,0.0)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_pCEjkOxnEeWP6eN_6Zcgmw" type="ControlFlow_Edge" source="_mamyEOxnEeWP6eN_6Zcgmw" target="_15hDAOxaEeWP6eN_6Zcgmw">

-      <children xmi:type="notation:DecorationNode" xmi:id="_pCEjk-xnEeWP6eN_6Zcgmw" type="ControlFlow_NameLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_HRLmgOxoEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_pCEjlOxnEeWP6eN_6Zcgmw" x="-9" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_pCEjlexnEeWP6eN_6Zcgmw" type="ControlFlow_WeightLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_HRgWoOxoEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_pCEjluxnEeWP6eN_6Zcgmw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_pCEjl-xnEeWP6eN_6Zcgmw" type="ControlFlow_GuardLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_HRzRkOxoEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_pCEjmOxnEeWP6eN_6Zcgmw" x="9" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_pCEjmexnEeWP6eN_6Zcgmw" type="ControlFlow_StereotypeLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_HSGzkOxoEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_pCEjmuxnEeWP6eN_6Zcgmw" y="-20"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_pCEjkexnEeWP6eN_6Zcgmw"/>

-      <element xmi:type="uml:ControlFlow" href="FMU_Examples.uml#_pBriAOxnEeWP6eN_6Zcgmw"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_pCEjkuxnEeWP6eN_6Zcgmw" points="[149, 267, -643984, -643984]$[211, 267, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_pC4b4OxnEeWP6eN_6Zcgmw" id="(0.9918032786885246,0.5297493204469947)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_pC4b4exnEeWP6eN_6Zcgmw" id="(0.0,0.55)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_06jNcOxnEeWP6eN_6Zcgmw" type="ControlFlow_Edge" source="_yypFwOxnEeWP6eN_6Zcgmw" target="_mamyEOxnEeWP6eN_6Zcgmw">

-      <children xmi:type="notation:DecorationNode" xmi:id="_06j0gOxnEeWP6eN_6Zcgmw" type="ControlFlow_NameLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_HSZHcOxoEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_06j0gexnEeWP6eN_6Zcgmw" x="-8" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_06j0guxnEeWP6eN_6Zcgmw" type="ControlFlow_WeightLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_HSq0QOxoEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_06j0g-xnEeWP6eN_6Zcgmw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_06j0hOxnEeWP6eN_6Zcgmw" type="ControlFlow_GuardLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_HS8hEOxoEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_06j0hexnEeWP6eN_6Zcgmw" x="8" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_06j0huxnEeWP6eN_6Zcgmw" type="ControlFlow_StereotypeLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_HTQDEOxoEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_06j0h-xnEeWP6eN_6Zcgmw" y="-20"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_06jNcexnEeWP6eN_6Zcgmw"/>

-      <element xmi:type="uml:ControlFlow" href="FMU_Examples.uml#_06MoIOxnEeWP6eN_6Zcgmw"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_06jNcuxnEeWP6eN_6Zcgmw" points="[90, 172, -643984, -643984]$[90, 228, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_07SNQOxnEeWP6eN_6Zcgmw" id="(0.4546099290780141,0.9273049645390075)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_07SNQexnEeWP6eN_6Zcgmw" id="(0.515354421611637,0.012987012987012988)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="__nTEAOxnEeWP6eN_6Zcgmw" type="ControlFlow_Edge" source="_mamyEOxnEeWP6eN_6Zcgmw" target="_2gIrMOxnEeWP6eN_6Zcgmw" routing="Rectilinear">

-      <children xmi:type="notation:DecorationNode" xmi:id="__nTEA-xnEeWP6eN_6Zcgmw" type="ControlFlow_NameLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_BTKv8OxoEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="__nTEBOxnEeWP6eN_6Zcgmw" x="-89" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="__nTEBexnEeWP6eN_6Zcgmw" type="ControlFlow_WeightLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_BTnb4OxoEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="__nTEBuxnEeWP6eN_6Zcgmw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="__nTEB-xnEeWP6eN_6Zcgmw" type="ControlFlow_GuardLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_BT5IsOxoEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="__nTECOxnEeWP6eN_6Zcgmw" x="89" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="__nTECexnEeWP6eN_6Zcgmw" type="ControlFlow_StereotypeLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_BUK1gOxoEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="__nTECuxnEeWP6eN_6Zcgmw" y="-20"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="__nTEAexnEeWP6eN_6Zcgmw"/>

-      <element xmi:type="uml:ControlFlow" href="FMU_Examples.uml#__m4NQOxnEeWP6eN_6Zcgmw"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__nTEAuxnEeWP6eN_6Zcgmw" points="[87, 301, -643984, -643984]$[87, 439, -643984, -643984]$[583, 439, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="__n5g8OxnEeWP6eN_6Zcgmw" id="(0.48360655737704916,0.961038961038961)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__n5g8exnEeWP6eN_6Zcgmw" id="(0.488,0.46808510638297873)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_C_4wcOxoEeWP6eN_6Zcgmw" type="ControlFlow_Edge" source="_2gIrMOxnEeWP6eN_6Zcgmw" target="_wBOkgOxbEeWP6eN_6Zcgmw" routing="Rectilinear">

-      <children xmi:type="notation:DecorationNode" xmi:id="_C_5XgOxoEeWP6eN_6Zcgmw" type="ControlFlow_NameLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_E7e6cOxoEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_C_5XgexoEeWP6eN_6Zcgmw" x="-31" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_C_5XguxoEeWP6eN_6Zcgmw" type="ControlFlow_WeightLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_E7-psOxoEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_C_5Xg-xoEeWP6eN_6Zcgmw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_C_5XhOxoEeWP6eN_6Zcgmw" type="ControlFlow_GuardLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_E8PvcOxoEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_C_5XhexoEeWP6eN_6Zcgmw" x="31" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_C_5XhuxoEeWP6eN_6Zcgmw" type="ControlFlow_StereotypeLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_E8g1MOxoEeWP6eN_6Zcgmw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_C_5Xh-xoEeWP6eN_6Zcgmw" y="-20"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_C_4wcexoEeWP6eN_6Zcgmw"/>

-      <element xmi:type="uml:ControlFlow" href="FMU_Examples.uml#_C_egwOxoEeWP6eN_6Zcgmw"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_C_4wcuxoEeWP6eN_6Zcgmw" points="[588, 438, -643984, -643984]$[742, 438, -643984, -643984]$[742, 388, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DAo-YOxoEeWP6eN_6Zcgmw" id="(0.512,0.44680851063829785)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DAo-YexoEeWP6eN_6Zcgmw" id="(0.5,1.0)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_OKkgMOxoEeWP6eN_6Zcgmw" type="ControlFlow_Edge" source="_wBOkgOxbEeWP6eN_6Zcgmw" target="_LHM10OxoEeWP6eN_6Zcgmw">

-      <children xmi:type="notation:DecorationNode" xmi:id="_OKkgM-xoEeWP6eN_6Zcgmw" type="ControlFlow_NameLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_OKkgNOxoEeWP6eN_6Zcgmw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_OKkgNexoEeWP6eN_6Zcgmw" type="ControlFlow_WeightLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_OKkgNuxoEeWP6eN_6Zcgmw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_OKkgN-xoEeWP6eN_6Zcgmw" type="ControlFlow_GuardLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_OKkgOOxoEeWP6eN_6Zcgmw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_OKkgOexoEeWP6eN_6Zcgmw" type="ControlFlow_StereotypeLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_OKkgOuxoEeWP6eN_6Zcgmw" y="-20"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_OKkgMexoEeWP6eN_6Zcgmw"/>

-      <element xmi:type="uml:ControlFlow" href="FMU_Examples.uml#_OKK3kOxoEeWP6eN_6Zcgmw"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_OKkgMuxoEeWP6eN_6Zcgmw" points="[772, 375, -643984, -643984]$[883, 375, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OLPOkOxoEeWP6eN_6Zcgmw" id="(1.0,0.7903225806451613)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OLPOkexoEeWP6eN_6Zcgmw" id="(0.05,0.34868421052631504)"/>

-    </edges>

-  </notation:Diagram>

-  <notation:Diagram xmi:id="_JlIhMCZzEeaNDtUa3wAGMw" type="PapyrusUMLActivityDiagram" name="Classifier Behavior diagram" measurementUnit="Pixel">

-    <children xmi:type="notation:Shape" xmi:id="_JlIhMSZzEeaNDtUa3wAGMw" type="Activity_Shape" gradient="16777215, -1, 0">

-      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JlIhMiZzEeaNDtUa3wAGMw" source="PapyrusCSSForceValue">

-        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JlIhMyZzEeaNDtUa3wAGMw" key="gradient" value="true"/>

-        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JlIhNCZzEeaNDtUa3wAGMw" key="fillColor" value="true"/>

-      </eAnnotations>

-      <children xmi:type="notation:DecorationNode" xmi:id="_JlIhNSZzEeaNDtUa3wAGMw" type="Activity_NameLabel"/>

-      <children xmi:type="notation:BasicCompartment" xmi:id="_JlIhNiZzEeaNDtUa3wAGMw" type="Activity_ParameterCompartment">

-        <styles xmi:type="notation:SortingStyle" xmi:id="_JlIhNyZzEeaNDtUa3wAGMw"/>

-        <styles xmi:type="notation:FilteringStyle" xmi:id="_JlIhOCZzEeaNDtUa3wAGMw"/>

-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JlIhOSZzEeaNDtUa3wAGMw"/>

-      </children>

-      <children xmi:type="notation:BasicCompartment" xmi:id="_JlIhOiZzEeaNDtUa3wAGMw" type="Activity_PreconditionCompartment">

-        <styles xmi:type="notation:SortingStyle" xmi:id="_JlIhOyZzEeaNDtUa3wAGMw"/>

-        <styles xmi:type="notation:FilteringStyle" xmi:id="_JlIhPCZzEeaNDtUa3wAGMw"/>

-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JlIhPSZzEeaNDtUa3wAGMw"/>

-      </children>

-      <children xmi:type="notation:BasicCompartment" xmi:id="_JlIhPiZzEeaNDtUa3wAGMw" type="Activity_PostconditionCompartment">

-        <styles xmi:type="notation:SortingStyle" xmi:id="_JlIhPyZzEeaNDtUa3wAGMw"/>

-        <styles xmi:type="notation:FilteringStyle" xmi:id="_JlIhQCZzEeaNDtUa3wAGMw"/>

-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JlIhQSZzEeaNDtUa3wAGMw"/>

-      </children>

-      <children xmi:type="notation:BasicCompartment" xmi:id="_JlIhQiZzEeaNDtUa3wAGMw" type="Activity_ActivityNodeCompartment">

-        <children xmi:type="notation:Shape" xmi:id="_JlIhQyZzEeaNDtUa3wAGMw" type="ReadSelfAction_Shape">

-          <children xmi:type="notation:DecorationNode" xmi:id="_JlIhRCZzEeaNDtUa3wAGMw" type="ReadSelfAction_NameLabel"/>

-          <children xmi:type="notation:DecorationNode" xmi:id="_JlIhRSZzEeaNDtUa3wAGMw" type="ReadSelfAction_FloatingNameLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_JlIhRiZzEeaNDtUa3wAGMw" y="5"/>

-          </children>

-          <children xmi:type="notation:BasicCompartment" xmi:id="_JlIhRyZzEeaNDtUa3wAGMw" type="compartment_shape_display">

-            <styles xmi:type="notation:TitleStyle" xmi:id="_JlIhSCZzEeaNDtUa3wAGMw"/>

-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JlIhSSZzEeaNDtUa3wAGMw"/>

-          </children>

-          <children xmi:type="notation:Shape" xmi:id="_JlIhSiZzEeaNDtUa3wAGMw" type="OutputPin_ReadSelfActionResultShape">

-            <children xmi:type="notation:DecorationNode" xmi:id="_JlIhSyZzEeaNDtUa3wAGMw" visible="false" type="OutputPin_ReadSelfActionResultNameLabel">

-              <layoutConstraint xmi:type="notation:Location" xmi:id="_JlIhTCZzEeaNDtUa3wAGMw" y="5"/>

-            </children>

-            <children xmi:type="notation:DecorationNode" xmi:id="_JlIhTSZzEeaNDtUa3wAGMw" type="OutputPin_ReadSelfActionResultStereotypeLabel">

-              <layoutConstraint xmi:type="notation:Location" xmi:id="_JlIhTiZzEeaNDtUa3wAGMw" y="5"/>

-            </children>

-            <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_JlIhTyZzEeaNDtUa3wAGMw"/>

-            <element xmi:type="uml:OutputPin" href="FMU_Examples.uml#_JlBzviZzEeaNDtUa3wAGMw"/>

-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JlIhUCZzEeaNDtUa3wAGMw"/>

-          </children>

-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_JlIhUSZzEeaNDtUa3wAGMw"/>

-          <element xmi:type="uml:ReadSelfAction" href="FMU_Examples.uml#_JlBzvSZzEeaNDtUa3wAGMw"/>

-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JlIhUiZzEeaNDtUa3wAGMw" x="347" y="200" width="65"/>

-        </children>

-        <children xmi:type="notation:Shape" xmi:id="_JlIhUyZzEeaNDtUa3wAGMw" type="ForkNode_Shape">

-          <children xmi:type="notation:DecorationNode" xmi:id="_JlIhVCZzEeaNDtUa3wAGMw" visible="false" type="ForkNode_FloatingNameLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_JlIhVSZzEeaNDtUa3wAGMw" y="5"/>

-          </children>

-          <children xmi:type="notation:DecorationNode" xmi:id="_JlIhViZzEeaNDtUa3wAGMw" type="ForkNode_StereotypeLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_JlIhVyZzEeaNDtUa3wAGMw" y="5"/>

-          </children>

-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_JlIhWCZzEeaNDtUa3wAGMw"/>

-          <element xmi:type="uml:ForkNode" href="FMU_Examples.uml#_JlBzvyZzEeaNDtUa3wAGMw"/>

-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JlIhXCZzEeaNDtUa3wAGMw" x="446" y="165" width="10" height="102"/>

-        </children>

-        <children xmi:type="notation:Shape" xmi:id="_JlIhXSZzEeaNDtUa3wAGMw" type="ReadStructuralFeatureAction_Shape">

-          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JlIhXiZzEeaNDtUa3wAGMw" source="PapyrusCSSForceValue">

-            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JlIhXyZzEeaNDtUa3wAGMw" key="canonical" value="true"/>

-            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JlIhYCZzEeaNDtUa3wAGMw" key="mutable" value="true"/>

-          </eAnnotations>

-          <children xmi:type="notation:DecorationNode" xmi:id="_JlIhYSZzEeaNDtUa3wAGMw" type="ReadStructuralFeatureAction_NameLabel"/>

-          <children xmi:type="notation:DecorationNode" xmi:id="_JlIhYiZzEeaNDtUa3wAGMw" type="ReadStructuralFeatureAction_FloatingNameLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_JlIhYyZzEeaNDtUa3wAGMw" y="5"/>

-          </children>

-          <children xmi:type="notation:BasicCompartment" xmi:id="_JlIhZCZzEeaNDtUa3wAGMw" type="compartment_shape_display">

-            <styles xmi:type="notation:TitleStyle" xmi:id="_JlIhZSZzEeaNDtUa3wAGMw"/>

-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JlIhZiZzEeaNDtUa3wAGMw"/>

-          </children>

-          <children xmi:type="notation:Shape" xmi:id="_JlIhZyZzEeaNDtUa3wAGMw" type="InputPin_ReadStructuralFeatureActionObjectShape">

-            <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JlIhaCZzEeaNDtUa3wAGMw" source="PapyrusCSSForceValue">

-              <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JlIhaSZzEeaNDtUa3wAGMw" key="mutable" value="true"/>

-            </eAnnotations>

-            <children xmi:type="notation:DecorationNode" xmi:id="_JlIhaiZzEeaNDtUa3wAGMw" visible="false" type="InputPin_ReadStructuralFeatureActionObjectNameLabel">

-              <layoutConstraint xmi:type="notation:Location" xmi:id="_JlIhayZzEeaNDtUa3wAGMw" y="5"/>

-            </children>

-            <children xmi:type="notation:DecorationNode" xmi:id="_JlIhbCZzEeaNDtUa3wAGMw" type="InputPin_ReadStructuralFeatureActionObjectStereotypeLabel">

-              <layoutConstraint xmi:type="notation:Location" xmi:id="_JlIhbSZzEeaNDtUa3wAGMw" y="5"/>

-            </children>

-            <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_JlIhbiZzEeaNDtUa3wAGMw"/>

-            <element xmi:type="uml:InputPin" href="FMU_Examples.uml#_JlBzwSZzEeaNDtUa3wAGMw"/>

-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JlIhbyZzEeaNDtUa3wAGMw" x="-16" y="9" width="16" height="16"/>

-          </children>

-          <children xmi:type="notation:Shape" xmi:id="_JlIhcCZzEeaNDtUa3wAGMw" type="OutputPin_ReadStructuralFeatureActionResultShape">

-            <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JlIhcSZzEeaNDtUa3wAGMw" source="PapyrusCSSForceValue">

-              <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JlIhciZzEeaNDtUa3wAGMw" key="mutable" value="true"/>

-            </eAnnotations>

-            <children xmi:type="notation:DecorationNode" xmi:id="_JlIhcyZzEeaNDtUa3wAGMw" visible="false" type="OutputPin_ReadStructuralFeatureActionResultNameLabel">

-              <layoutConstraint xmi:type="notation:Location" xmi:id="_JlIhdCZzEeaNDtUa3wAGMw" y="5"/>

-            </children>

-            <children xmi:type="notation:DecorationNode" xmi:id="_JlIhdSZzEeaNDtUa3wAGMw" type="OutputPin_ReadStructuralFeatureActionResultStereotypeLabel">

-              <layoutConstraint xmi:type="notation:Location" xmi:id="_JlIhdiZzEeaNDtUa3wAGMw" y="5"/>

-            </children>

-            <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_JlIhdyZzEeaNDtUa3wAGMw"/>

-            <element xmi:type="uml:OutputPin" href="FMU_Examples.uml#_JlBzwiZzEeaNDtUa3wAGMw"/>

-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JlIheCZzEeaNDtUa3wAGMw" x="108" y="8" width="13" height="18"/>

-          </children>

-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_JlIheSZzEeaNDtUa3wAGMw"/>

-          <styles xmi:type="notation:CanonicalStyle" xmi:id="_JlIheiZzEeaNDtUa3wAGMw"/>

-          <element xmi:type="uml:ReadStructuralFeatureAction" href="FMU_Examples.uml#_JlBzwCZzEeaNDtUa3wAGMw"/>

-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JlIheyZzEeaNDtUa3wAGMw" x="508" y="171" width="110" height="54"/>

-        </children>

-        <children xmi:type="notation:Shape" xmi:id="_JlIhfCZzEeaNDtUa3wAGMw" type="Comment_Shape">

-          <children xmi:type="notation:DecorationNode" xmi:id="_JlIhfSZzEeaNDtUa3wAGMw" type="Comment_BodyLabel"/>

-          <element xmi:type="uml:Comment" href="FMU_Examples.uml#_JlBzoyZzEeaNDtUa3wAGMw"/>

-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JlIhfiZzEeaNDtUa3wAGMw" x="497" y="72" width="248" height="34"/>

-        </children>

-        <children xmi:type="notation:Shape" xmi:id="_JlIhoCZzEeaNDtUa3wAGMw" type="AddStructuralFeatureValueAction_Shape">

-          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JlIhoSZzEeaNDtUa3wAGMw" source="PapyrusCSSForceValue">

-            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JlIhoiZzEeaNDtUa3wAGMw" key="canonical" value="true"/>

-            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JlIhoyZzEeaNDtUa3wAGMw" key="mutable" value="true"/>

-          </eAnnotations>

-          <children xmi:type="notation:DecorationNode" xmi:id="_JlIhpCZzEeaNDtUa3wAGMw" type="AddStructuralFeatureValueAction_NameLabel"/>

-          <children xmi:type="notation:DecorationNode" xmi:id="_JlIhpSZzEeaNDtUa3wAGMw" type="AddStructuralFeatureValueAction_FloatingNameLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_JlIhpiZzEeaNDtUa3wAGMw" y="5"/>

-          </children>

-          <children xmi:type="notation:BasicCompartment" xmi:id="_JlIhpyZzEeaNDtUa3wAGMw" type="compartment_shape_display">

-            <styles xmi:type="notation:TitleStyle" xmi:id="_JlIhqCZzEeaNDtUa3wAGMw"/>

-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JlIhqSZzEeaNDtUa3wAGMw"/>

-          </children>

-          <children xmi:type="notation:Shape" xmi:id="_JlIhqiZzEeaNDtUa3wAGMw" type="InputPin_AddStructuralFeatureValueActionObjectShape">

-            <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JlIhqyZzEeaNDtUa3wAGMw" source="PapyrusCSSForceValue">

-              <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JlIhrCZzEeaNDtUa3wAGMw" key="mutable" value="true"/>

-            </eAnnotations>

-            <children xmi:type="notation:DecorationNode" xmi:id="_JlIhrSZzEeaNDtUa3wAGMw" visible="false" type="InputPin_AddStructuralFeatureValueActionObjectNameLabel">

-              <layoutConstraint xmi:type="notation:Location" xmi:id="_JlIhriZzEeaNDtUa3wAGMw" y="5"/>

-            </children>

-            <children xmi:type="notation:DecorationNode" xmi:id="_JlIhryZzEeaNDtUa3wAGMw" type="InputPin_AddStructuralFeatureValueActionObjectStereotypeLabel">

-              <layoutConstraint xmi:type="notation:Location" xmi:id="_JlIhsCZzEeaNDtUa3wAGMw" y="5"/>

-            </children>

-            <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_JlIhsSZzEeaNDtUa3wAGMw"/>

-            <element xmi:type="uml:InputPin" href="FMU_Examples.uml#_JlBzziZzEeaNDtUa3wAGMw"/>

-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JlIhsiZzEeaNDtUa3wAGMw" x="-15" y="38"/>

-          </children>

-          <children xmi:type="notation:Shape" xmi:id="_JlIhsyZzEeaNDtUa3wAGMw" type="InputPin_AddStructuralFeatureValueActionValueShape">

-            <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JlIhtCZzEeaNDtUa3wAGMw" source="PapyrusCSSForceValue">

-              <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JlIhtSZzEeaNDtUa3wAGMw" key="mutable" value="true"/>

-            </eAnnotations>

-            <children xmi:type="notation:DecorationNode" xmi:id="_JlIhtiZzEeaNDtUa3wAGMw" type="InputPin_AddStructuralFeatureValueActionValueNameLabel">

-              <layoutConstraint xmi:type="notation:Location" xmi:id="_JlIhtyZzEeaNDtUa3wAGMw" x="20" y="1"/>

-            </children>

-            <children xmi:type="notation:DecorationNode" xmi:id="_JlIhuCZzEeaNDtUa3wAGMw" type="InputPin_AddStructuralFeatureValueActionValueStereotypeLabel">

-              <layoutConstraint xmi:type="notation:Location" xmi:id="_JlIhuSZzEeaNDtUa3wAGMw" y="5"/>

-            </children>

-            <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_JlIhuiZzEeaNDtUa3wAGMw"/>

-            <element xmi:type="uml:InputPin" href="FMU_Examples.uml#_JlBz0CZzEeaNDtUa3wAGMw"/>

-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JlIhuyZzEeaNDtUa3wAGMw" x="-15" y="4"/>

-          </children>

-          <children xmi:type="notation:Shape" xmi:id="_JlIhvCZzEeaNDtUa3wAGMw" type="OutputPin_AddStructuralFeatureValueActionResultShape">

-            <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JlIhvSZzEeaNDtUa3wAGMw" source="PapyrusCSSForceValue">

-              <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JlIhviZzEeaNDtUa3wAGMw" key="mutable" value="true"/>

-            </eAnnotations>

-            <children xmi:type="notation:DecorationNode" xmi:id="_JlIhvyZzEeaNDtUa3wAGMw" visible="false" type="OutputPin_AddStructuralFeatureValueActionResultNameLabel">

-              <layoutConstraint xmi:type="notation:Location" xmi:id="_JlIhwCZzEeaNDtUa3wAGMw" x="2" y="21"/>

-            </children>

-            <children xmi:type="notation:DecorationNode" xmi:id="_JlIhwSZzEeaNDtUa3wAGMw" type="OutputPin_AddStructuralFeatureValueActionResultStereotypeLabel">

-              <layoutConstraint xmi:type="notation:Location" xmi:id="_JlIhwiZzEeaNDtUa3wAGMw" y="5"/>

-            </children>

-            <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_JlIhwyZzEeaNDtUa3wAGMw"/>

-            <element xmi:type="uml:OutputPin" href="FMU_Examples.uml#_JlBzzyZzEeaNDtUa3wAGMw"/>

-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JlIhxCZzEeaNDtUa3wAGMw" x="147" y="25"/>

-          </children>

-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_JlIhxSZzEeaNDtUa3wAGMw"/>

-          <styles xmi:type="notation:CanonicalStyle" xmi:id="_JlIhxiZzEeaNDtUa3wAGMw" canonical="false"/>

-          <element xmi:type="uml:AddStructuralFeatureValueAction" href="FMU_Examples.uml#_JlBzzSZzEeaNDtUa3wAGMw"/>

-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JlIhxyZzEeaNDtUa3wAGMw" x="736" y="193" width="148" height="62"/>

-        </children>

-        <children xmi:type="notation:Shape" xmi:id="_JlIhyCZzEeaNDtUa3wAGMw" type="Comment_Shape">

-          <children xmi:type="notation:DecorationNode" xmi:id="_JlIhySZzEeaNDtUa3wAGMw" type="Comment_BodyLabel"/>

-          <element xmi:type="uml:Comment" href="FMU_Examples.uml#_JlBzpSZzEeaNDtUa3wAGMw"/>

-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JlIhyiZzEeaNDtUa3wAGMw" x="797" y="110"/>

-        </children>

-        <children xmi:type="notation:Shape" xmi:id="_JlIhyyZzEeaNDtUa3wAGMw" type="AcceptEventAction_Shape">

-          <children xmi:type="notation:DecorationNode" xmi:id="_JlIhzCZzEeaNDtUa3wAGMw" type="AcceptEventAction_NameLabel"/>

-          <children xmi:type="notation:DecorationNode" xmi:id="_JlIhzSZzEeaNDtUa3wAGMw" type="AcceptEventAction_TriggerLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_JlIhziZzEeaNDtUa3wAGMw" y="5"/>

-          </children>

-          <children xmi:type="notation:DecorationNode" xmi:id="_JlIhzyZzEeaNDtUa3wAGMw" type="AcceptEventAction_StereotypeLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_JlIh0CZzEeaNDtUa3wAGMw" y="5"/>

-          </children>

-          <children xmi:type="notation:DecorationNode" xmi:id="_JlIh0SZzEeaNDtUa3wAGMw" type="AcceptEventAction_FloatingNameLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_JlIh0iZzEeaNDtUa3wAGMw" y="5"/>

-          </children>

-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_JlIh0yZzEeaNDtUa3wAGMw"/>

-          <element xmi:type="uml:AcceptEventAction" href="FMU_Examples.uml#_JlBz0SZzEeaNDtUa3wAGMw"/>

-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JlIh1yZzEeaNDtUa3wAGMw" x="39" y="30" width="122" height="77"/>

-        </children>

-        <children xmi:type="notation:Shape" xmi:id="_WMWC4CZ_Eea7EYxrzn_7lA" type="AcceptEventAction_Shape">

-          <children xmi:type="notation:DecorationNode" xmi:id="_WMWp8CZ_Eea7EYxrzn_7lA" type="AcceptEventAction_NameLabel"/>

-          <children xmi:type="notation:DecorationNode" xmi:id="_WMWp8SZ_Eea7EYxrzn_7lA" type="AcceptEventAction_TriggerLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_WMWp8iZ_Eea7EYxrzn_7lA" y="5"/>

-          </children>

-          <children xmi:type="notation:DecorationNode" xmi:id="_WMXRACZ_Eea7EYxrzn_7lA" type="AcceptEventAction_StereotypeLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_WMXRASZ_Eea7EYxrzn_7lA" y="5"/>

-          </children>

-          <children xmi:type="notation:DecorationNode" xmi:id="_WMXRAiZ_Eea7EYxrzn_7lA" type="AcceptEventAction_FloatingNameLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_WMXRAyZ_Eea7EYxrzn_7lA" y="5"/>

-          </children>

-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_WMWC4SZ_Eea7EYxrzn_7lA"/>

-          <element xmi:type="uml:AcceptEventAction" href="FMU_Examples.uml#_UabZUCZ_Eea7EYxrzn_7lA"/>

-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WMWC4iZ_Eea7EYxrzn_7lA" x="36" y="135"/>

-        </children>

-        <children xmi:type="notation:Shape" xmi:id="_3l54ECcNEeaoMtQifi-PpA" type="AcceptEventAction_Shape">

-          <children xmi:type="notation:DecorationNode" xmi:id="_3l54EycNEeaoMtQifi-PpA" type="AcceptEventAction_NameLabel"/>

-          <children xmi:type="notation:DecorationNode" xmi:id="_3l54FCcNEeaoMtQifi-PpA" type="AcceptEventAction_TriggerLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_3l54FScNEeaoMtQifi-PpA" y="5"/>

-          </children>

-          <children xmi:type="notation:DecorationNode" xmi:id="_3l54FicNEeaoMtQifi-PpA" type="AcceptEventAction_StereotypeLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_3l54FycNEeaoMtQifi-PpA" y="5"/>

-          </children>

-          <children xmi:type="notation:DecorationNode" xmi:id="_3l54GCcNEeaoMtQifi-PpA" type="AcceptEventAction_FloatingNameLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_3l54GScNEeaoMtQifi-PpA" y="5"/>

-          </children>

-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_3l54EScNEeaoMtQifi-PpA"/>

-          <element xmi:type="uml:AcceptEventAction" href="FMU_Examples.uml#_22aU0CcNEeaoMtQifi-PpA"/>

-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3l54EicNEeaoMtQifi-PpA" x="28" y="237"/>

-        </children>

-        <children xmi:type="notation:Shape" xmi:id="_9SUBQCcNEeaoMtQifi-PpA" type="MergeNode_Shape">

-          <children xmi:type="notation:DecorationNode" xmi:id="_9SUBQycNEeaoMtQifi-PpA" type="MergeNode_FloatingNameLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_9SUBRCcNEeaoMtQifi-PpA" x="-5" y="-36"/>

-          </children>

-          <children xmi:type="notation:DecorationNode" xmi:id="_9SUBRScNEeaoMtQifi-PpA" type="MergeNode_StereotypeLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_9SUBRicNEeaoMtQifi-PpA" y="5"/>

-          </children>

-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_9SUBQScNEeaoMtQifi-PpA"/>

-          <element xmi:type="uml:MergeNode" href="FMU_Examples.uml#_9Ryc0CcNEeaoMtQifi-PpA"/>

-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9SUBQicNEeaoMtQifi-PpA" x="243" y="216"/>

-        </children>

-        <children xmi:type="notation:Shape" xmi:id="_gdANYCcOEeaoMtQifi-PpA" type="AcceptEventAction_Shape">

-          <children xmi:type="notation:DecorationNode" xmi:id="_gdANYycOEeaoMtQifi-PpA" type="AcceptEventAction_NameLabel"/>

-          <children xmi:type="notation:DecorationNode" xmi:id="_gdANZCcOEeaoMtQifi-PpA" type="AcceptEventAction_TriggerLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_gdANZScOEeaoMtQifi-PpA" y="5"/>

-          </children>

-          <children xmi:type="notation:DecorationNode" xmi:id="_gdBbgCcOEeaoMtQifi-PpA" type="AcceptEventAction_StereotypeLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_gdBbgScOEeaoMtQifi-PpA" y="5"/>

-          </children>

-          <children xmi:type="notation:DecorationNode" xmi:id="_gdBbgicOEeaoMtQifi-PpA" type="AcceptEventAction_FloatingNameLabel">

-            <layoutConstraint xmi:type="notation:Location" xmi:id="_gdBbgycOEeaoMtQifi-PpA" y="5"/>

-          </children>

-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_gdANYScOEeaoMtQifi-PpA"/>

-          <element xmi:type="uml:AcceptEventAction" href="FMU_Examples.uml#_fbJu0CcOEeaoMtQifi-PpA"/>

-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gdANYicOEeaoMtQifi-PpA" x="39" y="328"/>

-        </children>

-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JlIh-SZzEeaNDtUa3wAGMw"/>

-      </children>

-      <element xmi:type="uml:Activity" href="FMU_Examples.uml#_JlBzoiZzEeaNDtUa3wAGMw"/>

-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JlIh_SZzEeaNDtUa3wAGMw" width="1087" height="450"/>

-    </children>

-    <styles xmi:type="notation:StringValueStyle" xmi:id="_JlIh_iZzEeaNDtUa3wAGMw" name="diagram_compatibility_version" stringValue="1.2.0"/>

-    <styles xmi:type="notation:DiagramStyle" xmi:id="_JlIh_yZzEeaNDtUa3wAGMw"/>

-    <styles xmi:type="style:PapyrusViewStyle" xmi:id="_JlIiACZzEeaNDtUa3wAGMw">

-      <owner xmi:type="uml:Activity" href="FMU_Examples.uml#_JlBzoiZzEeaNDtUa3wAGMw"/>

-    </styles>

-    <element xmi:type="uml:Activity" href="FMU_Examples.uml#_JlBzoiZzEeaNDtUa3wAGMw"/>

-    <edges xmi:type="notation:Connector" xmi:id="_JlIiASZzEeaNDtUa3wAGMw" type="Comment_AnnotatedElementEdge" source="_JlIhfCZzEeaNDtUa3wAGMw" target="_JlIhXSZzEeaNDtUa3wAGMw">

-      <styles xmi:type="notation:FontStyle" xmi:id="_JlIiAiZzEeaNDtUa3wAGMw"/>

-      <element xsi:nil="true"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_JlIiAyZzEeaNDtUa3wAGMw" points="[548, 210, -643984, -643984]$[542, 221, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JlIiBCZzEeaNDtUa3wAGMw" id="(0.174916573971079,1.0)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JlIiBSZzEeaNDtUa3wAGMw" id="(0.48333333333333334,0.0)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_JlIiBiZzEeaNDtUa3wAGMw" type="ObjectFlow_Edge" source="_JlIhUyZzEeaNDtUa3wAGMw" target="_JlIhZyZzEeaNDtUa3wAGMw">

-      <children xmi:type="notation:DecorationNode" xmi:id="_JlIiByZzEeaNDtUa3wAGMw" type="ObjectFlow_NameLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_JlIiCCZzEeaNDtUa3wAGMw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_JlIiCSZzEeaNDtUa3wAGMw" x="-6" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_JlIiCiZzEeaNDtUa3wAGMw" visible="false" type="ObjectFlow_WeightLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_JlIiCyZzEeaNDtUa3wAGMw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_JlIiDCZzEeaNDtUa3wAGMw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_JlIiDSZzEeaNDtUa3wAGMw" type="ObjectFlow_SelectionLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_JlIiDiZzEeaNDtUa3wAGMw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_JlIiDyZzEeaNDtUa3wAGMw" x="70" y="40"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_JlIiECZzEeaNDtUa3wAGMw" type="ObjectFlow_TransformationLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_JlIiESZzEeaNDtUa3wAGMw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_JlIiEiZzEeaNDtUa3wAGMw" x="30" y="-60"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_JlIiEyZzEeaNDtUa3wAGMw" type="ObjectFlow_KeywordLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_JlIiFCZzEeaNDtUa3wAGMw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_JlIiFSZzEeaNDtUa3wAGMw" x="-6" y="-20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_JlIiFiZzEeaNDtUa3wAGMw" visible="false" type="ObjectFlow_GuardLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_JlIiFyZzEeaNDtUa3wAGMw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_JlIiGCZzEeaNDtUa3wAGMw" x="6" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_JlIiGSZzEeaNDtUa3wAGMw" type="ObjectFlow_StereotypeLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_JlIiGiZzEeaNDtUa3wAGMw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_JlIiGyZzEeaNDtUa3wAGMw" y="-20"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_JlIiHCZzEeaNDtUa3wAGMw"/>

-      <element xmi:type="uml:ObjectFlow" href="FMU_Examples.uml#_JlBzpiZzEeaNDtUa3wAGMw"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_JlIiHSZzEeaNDtUa3wAGMw" points="[461, 239, -643984, -643984]$[498, 238, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JlIiHiZzEeaNDtUa3wAGMw" id="(1.0,0.3333333333333333)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JlIiHyZzEeaNDtUa3wAGMw" id="(0.125,0.3125)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_JlIiVCZzEeaNDtUa3wAGMw" type="ObjectFlow_Edge" source="_JlIhSiZzEeaNDtUa3wAGMw" target="_JlIhUyZzEeaNDtUa3wAGMw">

-      <children xmi:type="notation:DecorationNode" xmi:id="_JlIiVSZzEeaNDtUa3wAGMw" type="ObjectFlow_NameLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_JlIiViZzEeaNDtUa3wAGMw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_JlIiVyZzEeaNDtUa3wAGMw" x="-7" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_JlIiWCZzEeaNDtUa3wAGMw" visible="false" type="ObjectFlow_WeightLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_JlIiWSZzEeaNDtUa3wAGMw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_JlIiWiZzEeaNDtUa3wAGMw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_JlIiWyZzEeaNDtUa3wAGMw" type="ObjectFlow_SelectionLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_JlIiXCZzEeaNDtUa3wAGMw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_JlIiXSZzEeaNDtUa3wAGMw" x="70" y="40"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_JlIiXiZzEeaNDtUa3wAGMw" type="ObjectFlow_TransformationLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_JlIiXyZzEeaNDtUa3wAGMw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_JlIiYCZzEeaNDtUa3wAGMw" x="30" y="-60"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_JlIiYSZzEeaNDtUa3wAGMw" type="ObjectFlow_KeywordLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_JlIiYiZzEeaNDtUa3wAGMw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_JlIiYyZzEeaNDtUa3wAGMw" x="-7" y="-20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_JlIiZCZzEeaNDtUa3wAGMw" visible="false" type="ObjectFlow_GuardLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_JlIiZSZzEeaNDtUa3wAGMw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_JlIiZiZzEeaNDtUa3wAGMw" x="7" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_JlIiZyZzEeaNDtUa3wAGMw" type="ObjectFlow_StereotypeLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_JlIiaCZzEeaNDtUa3wAGMw" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_JlIiaSZzEeaNDtUa3wAGMw" y="-20"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_JlIiaiZzEeaNDtUa3wAGMw"/>

-      <element xmi:type="uml:ObjectFlow" href="FMU_Examples.uml#_JlBzryZzEeaNDtUa3wAGMw"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_JlIiayZzEeaNDtUa3wAGMw" points="[403, 342, -643984, -643984]$[451, 343, -643984, -643984]"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JlIibCZzEeaNDtUa3wAGMw" id="(0.1,0.5145985401459854)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_JlIipSZzEeaNDtUa3wAGMw" type="Comment_AnnotatedElementEdge" source="_JlIhyCZzEeaNDtUa3wAGMw" target="_JlIhoCZzEeaNDtUa3wAGMw">

-      <styles xmi:type="notation:FontStyle" xmi:id="_JlIipiZzEeaNDtUa3wAGMw"/>

-      <element xsi:nil="true"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_JlIipyZzEeaNDtUa3wAGMw" points="[858, 371, -643984, -643984]$[849, 401, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JlIiqCZzEeaNDtUa3wAGMw" id="(0.16441931274467156,1.0)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JlIiqSZzEeaNDtUa3wAGMw" id="(0.4166666666666667,0.0)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_4Eo0ACZ0Eea_2cPCpxkxZw" type="ObjectFlow_Edge" source="_JlIhUyZzEeaNDtUa3wAGMw" target="_JlIhqiZzEeaNDtUa3wAGMw">

-      <children xmi:type="notation:DecorationNode" xmi:id="_4EpbECZ0Eea_2cPCpxkxZw" type="ObjectFlow_NameLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_EaYiECcMEeaoMtQifi-PpA" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_4EqCICZ0Eea_2cPCpxkxZw" x="-40" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_4EqCISZ0Eea_2cPCpxkxZw" visible="false" type="ObjectFlow_WeightLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Ea77sCcMEeaoMtQifi-PpA" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_4EqCIiZ0Eea_2cPCpxkxZw" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_4EqCIyZ0Eea_2cPCpxkxZw" type="ObjectFlow_SelectionLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_EbRS4CcMEeaoMtQifi-PpA" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_4EqCJCZ0Eea_2cPCpxkxZw" x="70" y="40"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_4EqCJSZ0Eea_2cPCpxkxZw" type="ObjectFlow_TransformationLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Ebt-0CcMEeaoMtQifi-PpA" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_4EqCJiZ0Eea_2cPCpxkxZw" x="30" y="-60"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_4EqCJyZ0Eea_2cPCpxkxZw" type="ObjectFlow_KeywordLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Eb_EkCcMEeaoMtQifi-PpA" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_4EqCKCZ0Eea_2cPCpxkxZw" x="-40" y="-20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_4EqCKSZ0Eea_2cPCpxkxZw" visible="false" type="ObjectFlow_GuardLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_EcOVICcMEeaoMtQifi-PpA" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_4EqpMCZ0Eea_2cPCpxkxZw" x="40" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_4EqpMSZ0Eea_2cPCpxkxZw" type="ObjectFlow_StereotypeLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_EcbwgCcMEeaoMtQifi-PpA" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_4EqpMiZ0Eea_2cPCpxkxZw" y="-20"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_4Eo0ASZ0Eea_2cPCpxkxZw"/>

-      <element xmi:type="uml:ObjectFlow" href="FMU_Examples.uml#_4D3_ACZ0Eea_2cPCpxkxZw"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_4Eo0AiZ0Eea_2cPCpxkxZw" points="[461, 267, -643984, -643984]$[648, 265, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4FnEYCZ0Eea_2cPCpxkxZw" id="(1.0,0.7058823529411765)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_5_tZkCZ0Eea_2cPCpxkxZw" type="ObjectFlow_Edge" source="_JlIhcCZzEeaNDtUa3wAGMw" target="_JlIhsyZzEeaNDtUa3wAGMw">

-      <children xmi:type="notation:DecorationNode" xmi:id="_5_uAoCZ0Eea_2cPCpxkxZw" type="ObjectFlow_NameLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_myTvkCZ_Eea7EYxrzn_7lA" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_5_uAoSZ0Eea_2cPCpxkxZw" x="-21" y="19"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_5_uAoiZ0Eea_2cPCpxkxZw" visible="false" type="ObjectFlow_WeightLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_my924CZ_Eea7EYxrzn_7lA" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_5_uAoyZ0Eea_2cPCpxkxZw" x="-1" y="19"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_5_uApCZ0Eea_2cPCpxkxZw" type="ObjectFlow_SelectionLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_mzRY4CZ_Eea7EYxrzn_7lA" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_5_uApSZ0Eea_2cPCpxkxZw" x="68" y="50"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_5_uApiZ0Eea_2cPCpxkxZw" type="ObjectFlow_TransformationLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_mzeNMCZ_Eea7EYxrzn_7lA" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_5_uApyZ0Eea_2cPCpxkxZw" x="29" y="-48"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_5_unsCZ0Eea_2cPCpxkxZw" type="ObjectFlow_KeywordLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_mzrokCZ_Eea7EYxrzn_7lA" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_5_unsSZ0Eea_2cPCpxkxZw" x="-19" y="-18"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_5_unsiZ0Eea_2cPCpxkxZw" visible="false" type="ObjectFlow_GuardLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_mz5D8CZ_Eea7EYxrzn_7lA" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_5_unsyZ0Eea_2cPCpxkxZw" x="20" y="19"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_5_untCZ0Eea_2cPCpxkxZw" type="ObjectFlow_StereotypeLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_m0HGYCZ_Eea7EYxrzn_7lA" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_5_untSZ0Eea_2cPCpxkxZw" x="1" y="-18"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_5_tZkSZ0Eea_2cPCpxkxZw"/>

-      <element xmi:type="uml:ObjectFlow" href="FMU_Examples.uml#_5_BdECZ0Eea_2cPCpxkxZw"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5_tZkiZ0Eea_2cPCpxkxZw" points="[588, 236, -643984, -643984]$[643, 235, -643984, -643984]"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_6An_kCZ0Eea_2cPCpxkxZw" id="(0.0625,0.3125)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_KHP-QCcMEeaoMtQifi-PpA" type="ControlFlow_Edge" source="_WMWC4CZ_Eea7EYxrzn_7lA" target="_9SUBQCcNEeaoMtQifi-PpA">

-      <children xmi:type="notation:DecorationNode" xmi:id="_KHP-QycMEeaoMtQifi-PpA" type="ControlFlow_NameLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_35D6ECcMEeaoMtQifi-PpA" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_KHP-RCcMEeaoMtQifi-PpA" x="-21" y="19"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_KHP-RScMEeaoMtQifi-PpA" type="ControlFlow_WeightLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_35UYwCcMEeaoMtQifi-PpA" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_KHP-RicMEeaoMtQifi-PpA" x="-1" y="17"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_KHP-RycMEeaoMtQifi-PpA" type="ControlFlow_GuardLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_35ibMCcMEeaoMtQifi-PpA" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_KHP-SCcMEeaoMtQifi-PpA" x="21" y="19"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_KHP-SScMEeaoMtQifi-PpA" type="ControlFlow_StereotypeLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_35uocCcMEeaoMtQifi-PpA" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_KHP-SicMEeaoMtQifi-PpA" x="1" y="-18"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_KHP-QScMEeaoMtQifi-PpA"/>

-      <element xmi:type="uml:ControlFlow" href="FMU_Examples.uml#_KGrWgCcMEeaoMtQifi-PpA"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_KHP-QicMEeaoMtQifi-PpA" points="[167, 261, -643984, -643984]$[247, 258, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KH76wCcMEeaoMtQifi-PpA" id="(1.0,0.4558457711442789)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KH76wScMEeaoMtQifi-PpA" id="(0.15,0.3)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_K86a8CcMEeaoMtQifi-PpA" type="ControlFlow_Edge" source="_JlIhyyZzEeaNDtUa3wAGMw" target="_9SUBQCcNEeaoMtQifi-PpA">

-      <children xmi:type="notation:DecorationNode" xmi:id="_K86a8ycMEeaoMtQifi-PpA" type="ControlFlow_NameLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_3561sCcMEeaoMtQifi-PpA" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_K86a9CcMEeaoMtQifi-PpA" x="-25" y="16"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_K88QICcMEeaoMtQifi-PpA" type="ControlFlow_WeightLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_36KGQCcMEeaoMtQifi-PpA" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_K89eQCcMEeaoMtQifi-PpA" x="-1" y="18"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_K8_TcCcMEeaoMtQifi-PpA" type="ControlFlow_GuardLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_36ZW0CcMEeaoMtQifi-PpA" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_K8_TcScMEeaoMtQifi-PpA" x="24" y="18"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_K8_TcicMEeaoMtQifi-PpA" type="ControlFlow_StereotypeLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_36lkECcMEeaoMtQifi-PpA" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_K8_TcycMEeaoMtQifi-PpA" x="1" y="-18"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_K86a8ScMEeaoMtQifi-PpA"/>

-      <element xmi:type="uml:ControlFlow" href="FMU_Examples.uml#_K8VzMCcMEeaoMtQifi-PpA"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_K86a8icMEeaoMtQifi-PpA" points="[164, 177, -643984, -643984]$[250, 248, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_K9lJUCcMEeaoMtQifi-PpA" id="(1.0,0.5748741054863503)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_K9lJUScMEeaoMtQifi-PpA" id="(0.3,0.16666666666666666)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_L_jjsCcMEeaoMtQifi-PpA" type="ControlFlow_Edge" source="_9SUBQCcNEeaoMtQifi-PpA" target="_JlIhQyZzEeaNDtUa3wAGMw">

-      <children xmi:type="notation:DecorationNode" xmi:id="_L_kx0CcMEeaoMtQifi-PpA" type="ControlFlow_NameLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_33vrcCcMEeaoMtQifi-PpA" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_L_kx0ScMEeaoMtQifi-PpA" x="-19" y="17"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_L_kx0icMEeaoMtQifi-PpA" type="ControlFlow_WeightLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_34RP4CcMEeaoMtQifi-PpA" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_L_kx0ycMEeaoMtQifi-PpA" y="19"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_L_kx1CcMEeaoMtQifi-PpA" type="ControlFlow_GuardLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_34ggcCcMEeaoMtQifi-PpA" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_L_kx1ScMEeaoMtQifi-PpA" x="18" y="19"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_L_kx1icMEeaoMtQifi-PpA" type="ControlFlow_StereotypeLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_34ui4CcMEeaoMtQifi-PpA" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_L_kx1ycMEeaoMtQifi-PpA" x="-1" y="-17"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_L_jjsScMEeaoMtQifi-PpA"/>

-      <element xmi:type="uml:ControlFlow" href="FMU_Examples.uml#_L-1yACcMEeaoMtQifi-PpA"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_L_jjsicMEeaoMtQifi-PpA" points="[264, 254, -643984, -643984]$[352, 254, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MAdioCcMEeaoMtQifi-PpA" id="(0.8,0.3)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MAewwCcMEeaoMtQifi-PpA" id="(0.0,0.45)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_C-Bm4CcOEeaoMtQifi-PpA" type="ControlFlow_Edge" source="_3l54ECcNEeaoMtQifi-PpA" target="_9SUBQCcNEeaoMtQifi-PpA">

-      <children xmi:type="notation:DecorationNode" xmi:id="_C-Bm4ycOEeaoMtQifi-PpA" type="ControlFlow_NameLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_UMVF8CcOEeaoMtQifi-PpA" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_C-Bm5CcOEeaoMtQifi-PpA" x="-16" y="17"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_C-Bm5ScOEeaoMtQifi-PpA" type="ControlFlow_WeightLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_UM2qYCcOEeaoMtQifi-PpA" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_C-Bm5icOEeaoMtQifi-PpA" y="19"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_C-Bm5ycOEeaoMtQifi-PpA" type="ControlFlow_GuardLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_UNMBkCcOEeaoMtQifi-PpA" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_C-Bm6CcOEeaoMtQifi-PpA" x="17" y="17"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_C-Bm6ScOEeaoMtQifi-PpA" type="ControlFlow_StereotypeLabel">

-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_UNdHUCcOEeaoMtQifi-PpA" name="IS_UPDATED_POSITION" booleanValue="true"/>

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_C-Bm6icOEeaoMtQifi-PpA" x="-1" y="-17"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_C-Bm4ScOEeaoMtQifi-PpA"/>

-      <element xmi:type="uml:ControlFlow" href="FMU_Examples.uml#_C9O8sCcOEeaoMtQifi-PpA"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_C-Bm4icOEeaoMtQifi-PpA" points="[169, 352, -643984, -643984]$[252, 273, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_C-5woCcOEeaoMtQifi-PpA" id="(1.0,0.2944500796985952)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_C-5woScOEeaoMtQifi-PpA" id="(0.21544554455445564,0.7154455445544575)"/>

-    </edges>

-    <edges xmi:type="notation:Connector" xmi:id="_lkFb8CcOEeaoMtQifi-PpA" type="ControlFlow_Edge" source="_gdANYCcOEeaoMtQifi-PpA" target="_9SUBQCcNEeaoMtQifi-PpA">

-      <children xmi:type="notation:DecorationNode" xmi:id="_lkFb8ycOEeaoMtQifi-PpA" type="ControlFlow_NameLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_lkFb9CcOEeaoMtQifi-PpA" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_lkFb9ScOEeaoMtQifi-PpA" type="ControlFlow_WeightLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_lkFb9icOEeaoMtQifi-PpA" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_lkFb9ycOEeaoMtQifi-PpA" type="ControlFlow_GuardLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_lkFb-CcOEeaoMtQifi-PpA" y="20"/>

-      </children>

-      <children xmi:type="notation:DecorationNode" xmi:id="_lkFb-ScOEeaoMtQifi-PpA" type="ControlFlow_StereotypeLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_lkFb-icOEeaoMtQifi-PpA" y="-20"/>

-      </children>

-      <styles xmi:type="notation:FontStyle" xmi:id="_lkFb8ScOEeaoMtQifi-PpA"/>

-      <element xmi:type="uml:ControlFlow" href="FMU_Examples.uml#_ljipYCcOEeaoMtQifi-PpA"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_lkFb8icOEeaoMtQifi-PpA" points="[172, 387, -643984, -643984]$[254, 276, -643984, -643984]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_lkwKUCcOEeaoMtQifi-PpA" id="(1.0,0.34654850746268656)"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_lkwKUScOEeaoMtQifi-PpA" id="(0.3181318681318686,0.8181318681318677)"/>

-    </edges>

-  </notation:Diagram>

-  <notation:Diagram xmi:id="_ZwqnUCl2Eeaq4LUBd_Y9sA" type="CompositeStructure" name="NewSimexCompositeStructureDiagram" measurementUnit="Pixel">

-    <children xmi:type="notation:Shape" xmi:id="_amdm4Cl2Eeaq4LUBd_Y9sA" type="Class_Shape">

-      <children xmi:type="notation:DecorationNode" xmi:id="_ameN8Cl2Eeaq4LUBd_Y9sA" type="Class_NameLabel"/>

-      <children xmi:type="notation:DecorationNode" xmi:id="_ameN8Sl2Eeaq4LUBd_Y9sA" type="Class_FloatingNameLabel">

-        <layoutConstraint xmi:type="notation:Location" xmi:id="_ameN8il2Eeaq4LUBd_Y9sA" y="5"/>

-      </children>

-      <children xmi:type="notation:BasicCompartment" xmi:id="_ameN8yl2Eeaq4LUBd_Y9sA" type="Class_StructureCompartment">

-        <styles xmi:type="notation:TitleStyle" xmi:id="_ameN9Cl2Eeaq4LUBd_Y9sA"/>

-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ameN9Sl2Eeaq4LUBd_Y9sA"/>

-      </children>

-      <element xmi:type="uml:Class" href="FMU_Examples.uml#_JlBzgCZzEeaNDtUa3wAGMw"/>

-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_amdm4Sl2Eeaq4LUBd_Y9sA" x="202" y="84" width="690" height="301"/>

-    </children>

-    <children xmi:type="notation:Shape" xmi:id="_anKxgCl2Eeaq4LUBd_Y9sA" type="StereotypeComment">

-      <styles xmi:type="notation:TitleStyle" xmi:id="_anKxgSl2Eeaq4LUBd_Y9sA"/>

-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_anLYkCl2Eeaq4LUBd_Y9sA" name="BASE_ELEMENT">

-        <eObjectValue xmi:type="uml:Class" href="FMU_Examples.uml#_JlBzgCZzEeaNDtUa3wAGMw"/>

-      </styles>

-      <element xsi:nil="true"/>

-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_anKxgil2Eeaq4LUBd_Y9sA" x="200"/>

-    </children>

-    <styles xmi:type="notation:StringValueStyle" xmi:id="_ZwqnUSl2Eeaq4LUBd_Y9sA" name="diagram_compatibility_version" stringValue="1.2.0"/>

-    <styles xmi:type="notation:DiagramStyle" xmi:id="_ZwqnUil2Eeaq4LUBd_Y9sA"/>

-    <styles xmi:type="style:PapyrusViewStyle" xmi:id="_ZwqnUyl2Eeaq4LUBd_Y9sA">

-      <owner xmi:type="uml:Package" href="FMU_Examples.uml#_FSdyICZzEeaNDtUa3wAGMw"/>

-      <configuration xmi:type="configuration:PapyrusDiagram" href="platform:/plugin/org.eclipse.papyrus.moka.simex/config/simex.configuration#_a-WsUFiaEeWZUMJhjgTKEw"/>

-    </styles>

-    <element xmi:type="uml:Package" href="FMU_Examples.uml#_FSdyICZzEeaNDtUa3wAGMw"/>

-    <edges xmi:type="notation:Connector" xmi:id="_anL_oCl2Eeaq4LUBd_Y9sA" type="StereotypeCommentLink" source="_amdm4Cl2Eeaq4LUBd_Y9sA" target="_anKxgCl2Eeaq4LUBd_Y9sA">

-      <styles xmi:type="notation:FontStyle" xmi:id="_anL_oSl2Eeaq4LUBd_Y9sA"/>

-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_anOb4Cl2Eeaq4LUBd_Y9sA" name="BASE_ELEMENT">

-        <eObjectValue xmi:type="uml:Class" href="FMU_Examples.uml#_JlBzgCZzEeaNDtUa3wAGMw"/>

-      </styles>

-      <element xsi:nil="true"/>

-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_anL_oil2Eeaq4LUBd_Y9sA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>

-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_anN00Cl2Eeaq4LUBd_Y9sA"/>

-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_anN00Sl2Eeaq4LUBd_Y9sA"/>

-    </edges>

-  </notation:Diagram>

-</xmi:XMI>

diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/fmu_build/resources/FMU_Examples.uml b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/fmu_build/resources/FMU_Examples.uml
deleted file mode 100644
index b2ed75b..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/fmu_build/resources/FMU_Examples.uml
+++ /dev/null
@@ -1,680 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:fmiprofile="http://www.eclipse.org/papyrus/FMIProfile/1.0.0" xmlns:standard="http://www.eclipse.org/uml2/5.0.0/UML/Profile/Standard" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">

-  <uml:Model xmi:id="_q8DOcMXPEeWwx_puHDzFYw" name="FMU Examples">

-    <packageImport xmi:type="uml:PackageImport" xmi:id="_rEUZoMXPEeWwx_puHDzFYw">

-      <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>

-    </packageImport>

-    <packageImport xmi:type="uml:PackageImport" xmi:id="_ZvjL0OxTEeWP6eN_6Zcgmw">

-      <importedPackage xmi:type="uml:Model" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#_0"/>

-    </packageImport>

-    <packagedElement xmi:type="uml:Package" xmi:id="_7SAoIOxOEeWP6eN_6Zcgmw" name="EDF">

-      <packagedElement xmi:type="uml:Class" xmi:id="_NO0UEMXQEeWwx_puHDzFYw" name="C1" classifierBehavior="_bnRAUMXQEeWwx_puHDzFYw" isActive="true">

-        <ownedAttribute xmi:type="uml:Property" xmi:id="_RUkBcMXQEeWwx_puHDzFYw" name="valve" visibility="public">

-          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>

-          <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_Vs8W8MXQEeWwx_puHDzFYw"/>

-        </ownedAttribute>

-        <ownedBehavior xmi:type="uml:Activity" xmi:id="_bnRAUMXQEeWwx_puHDzFYw" name="C1 ClassifierBehavior" node="_xrAkUMXQEeWwx_puHDzFYw _x6JMgMXQEeWwx_puHDzFYw _yIGwAMXQEeWwx_puHDzFYw _MwEQoMXSEeWwx_puHDzFYw _be-foMXTEeWwx_puHDzFYw _hclboMXVEeWwx_puHDzFYw _ia5zIMXXEeWwx_puHDzFYw _xF9SUMXXEeWwx_puHDzFYw" group="_be-foMXTEeWwx_puHDzFYw _ia5zIMXXEeWwx_puHDzFYw _xF9SUMXXEeWwx_puHDzFYw">

-          <ownedComment xmi:type="uml:Comment" xmi:id="_sRT7wMXQEeWwx_puHDzFYw">

-            <body>model C1&#xD;

-  discrete output Boolean valve(start = false, fixed = false);&#xD;

-equation&#xD;

-  when time >= 0.5 then&#xD;

-    valve = true;&#xD;

-  elsewhen time >= 3.2 then&#xD;

-    valve = false;&#xD;

-  elsewhen time >= 5.2 then&#xD;

-    valve = true;&#xD;

-  end when;&#xD;

-end C1;</body>

-          </ownedComment>

-          <edge xmi:type="uml:ControlFlow" xmi:id="_WOXPsMXVEeWwx_puHDzFYw" target="_xrAkUMXQEeWwx_puHDzFYw" source="_MwEQoMXSEeWwx_puHDzFYw"/>

-          <edge xmi:type="uml:ControlFlow" xmi:id="_c6JyQMXVEeWwx_puHDzFYw" target="_be-foMXTEeWwx_puHDzFYw" source="_xrAkUMXQEeWwx_puHDzFYw"/>

-          <edge xmi:type="uml:ControlFlow" xmi:id="_dcHP0MXVEeWwx_puHDzFYw" target="_x6JMgMXQEeWwx_puHDzFYw" source="_be-foMXTEeWwx_puHDzFYw"/>

-          <edge xmi:type="uml:ControlFlow" xmi:id="_PzgkwMXYEeWwx_puHDzFYw" target="_ia5zIMXXEeWwx_puHDzFYw" source="_x6JMgMXQEeWwx_puHDzFYw"/>

-          <edge xmi:type="uml:ControlFlow" xmi:id="_QYv_0MXYEeWwx_puHDzFYw" target="_yIGwAMXQEeWwx_puHDzFYw" source="_ia5zIMXXEeWwx_puHDzFYw"/>

-          <edge xmi:type="uml:ControlFlow" xmi:id="_QyYn0MXYEeWwx_puHDzFYw" target="_xF9SUMXXEeWwx_puHDzFYw" source="_yIGwAMXQEeWwx_puHDzFYw"/>

-          <edge xmi:type="uml:ControlFlow" xmi:id="_RS1CcMXYEeWwx_puHDzFYw" target="_hclboMXVEeWwx_puHDzFYw" source="_xF9SUMXXEeWwx_puHDzFYw"/>

-          <structuredNode xmi:type="uml:StructuredActivityNode" xmi:id="_be-foMXTEeWwx_puHDzFYw" name="StructuredActivityNode1" incoming="_c6JyQMXVEeWwx_puHDzFYw" outgoing="_dcHP0MXVEeWwx_puHDzFYw">

-            <edge xmi:type="uml:ObjectFlow" xmi:id="_upAEgMXTEeWwx_puHDzFYw" target="_Jr-_IMXTEeWwx_puHDzFYw" source="_l0m2sMXTEeWwx_puHDzFYw">

-              <guard xmi:type="uml:LiteralBoolean" xmi:id="_upRxUMXTEeWwx_puHDzFYw" value="true"/>

-              <weight xmi:type="uml:LiteralInteger" xmi:id="_upSYYMXTEeWwx_puHDzFYw" value="1"/>

-            </edge>

-            <edge xmi:type="uml:ObjectFlow" xmi:id="_s5i5EMXTEeWwx_puHDzFYw" target="_Jr8i4MXTEeWwx_puHDzFYw" source="_jzRREMXTEeWwx_puHDzFYw">

-              <guard xmi:type="uml:LiteralBoolean" xmi:id="_s5vtYMXTEeWwx_puHDzFYw" value="true"/>

-              <weight xmi:type="uml:LiteralInteger" xmi:id="_s5vtYcXTEeWwx_puHDzFYw" value="1"/>

-            </edge>

-            <node xmi:type="uml:AddStructuralFeatureValueAction" xmi:id="_JrzY8MXTEeWwx_puHDzFYw" name="set Valve" structuralFeature="_RUkBcMXQEeWwx_puHDzFYw" isReplaceAll="true">

-              <object xmi:type="uml:InputPin" xmi:id="_Jr8i4MXTEeWwx_puHDzFYw" name="object" incoming="_s5i5EMXTEeWwx_puHDzFYw" type="_NO0UEMXQEeWwx_puHDzFYw"/>

-              <result xmi:type="uml:OutputPin" xmi:id="_Jr9xAMXTEeWwx_puHDzFYw" name="result" type="_NO0UEMXQEeWwx_puHDzFYw"/>

-              <value xmi:type="uml:InputPin" xmi:id="_Jr-_IMXTEeWwx_puHDzFYw" name="value" incoming="_upAEgMXTEeWwx_puHDzFYw">

-                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>

-              </value>

-            </node>

-            <node xmi:type="uml:ReadSelfAction" xmi:id="_jzQC8MXTEeWwx_puHDzFYw" name="this">

-              <result xmi:type="uml:OutputPin" xmi:id="_jzRREMXTEeWwx_puHDzFYw" name="result" outgoing="_s5i5EMXTEeWwx_puHDzFYw" type="_bnRAUMXQEeWwx_puHDzFYw"/>

-            </node>

-            <node xmi:type="uml:ValueSpecificationAction" xmi:id="_l0ceoMXTEeWwx_puHDzFYw" name="true">

-              <result xmi:type="uml:OutputPin" xmi:id="_l0m2sMXTEeWwx_puHDzFYw" name="result" outgoing="_upAEgMXTEeWwx_puHDzFYw">

-                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>

-                <upperBound xmi:type="uml:LiteralInteger" xmi:id="_mXe6QMXTEeWwx_puHDzFYw" value="1"/>

-                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mXeTMMXTEeWwx_puHDzFYw" value="1"/>

-              </result>

-              <value xmi:type="uml:LiteralBoolean" xmi:id="_mXWXYMXTEeWwx_puHDzFYw" value="true">

-                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>

-              </value>

-            </node>

-          </structuredNode>

-          <structuredNode xmi:type="uml:StructuredActivityNode" xmi:id="_ia5zIMXXEeWwx_puHDzFYw" name="StructuredActivityNode2" incoming="_PzgkwMXYEeWwx_puHDzFYw" outgoing="_QYv_0MXYEeWwx_puHDzFYw">

-            <edge xmi:type="uml:ObjectFlow" xmi:id="_FHrUMMXYEeWwx_puHDzFYw" target="_mJEG8MXXEeWwx_puHDzFYw" source="_rwlJEMXXEeWwx_puHDzFYw">

-              <guard xmi:type="uml:LiteralBoolean" xmi:id="_FIJ1UMXYEeWwx_puHDzFYw" value="true"/>

-              <weight xmi:type="uml:LiteralInteger" xmi:id="_FIJ1UcXYEeWwx_puHDzFYw" value="1"/>

-            </edge>

-            <edge xmi:type="uml:ObjectFlow" xmi:id="_HFo1sMXYEeWwx_puHDzFYw" target="_mJHKQMXXEeWwx_puHDzFYw" source="_uIQLEMXXEeWwx_puHDzFYw">

-              <guard xmi:type="uml:LiteralBoolean" xmi:id="_HGCeUMXYEeWwx_puHDzFYw" value="true"/>

-              <weight xmi:type="uml:LiteralInteger" xmi:id="_HGCeUcXYEeWwx_puHDzFYw" value="1"/>

-            </edge>

-            <node xmi:type="uml:AddStructuralFeatureValueAction" xmi:id="_mI_OcMXXEeWwx_puHDzFYw" name="set Valve" structuralFeature="_RUkBcMXQEeWwx_puHDzFYw" isReplaceAll="true">

-              <object xmi:type="uml:InputPin" xmi:id="_mJEG8MXXEeWwx_puHDzFYw" name="object" incoming="_FHrUMMXYEeWwx_puHDzFYw" type="_NO0UEMXQEeWwx_puHDzFYw"/>

-              <result xmi:type="uml:OutputPin" xmi:id="_mJFVEMXXEeWwx_puHDzFYw" name="result" type="_NO0UEMXQEeWwx_puHDzFYw"/>

-              <value xmi:type="uml:InputPin" xmi:id="_mJHKQMXXEeWwx_puHDzFYw" name="value" incoming="_HFo1sMXYEeWwx_puHDzFYw">

-                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>

-              </value>

-            </node>

-            <node xmi:type="uml:ReadSelfAction" xmi:id="_rwkiAMXXEeWwx_puHDzFYw" name="self">

-              <result xmi:type="uml:OutputPin" xmi:id="_rwlJEMXXEeWwx_puHDzFYw" name="result" outgoing="_FHrUMMXYEeWwx_puHDzFYw" type="_bnRAUMXQEeWwx_puHDzFYw"/>

-            </node>

-            <node xmi:type="uml:ValueSpecificationAction" xmi:id="_uIPkAMXXEeWwx_puHDzFYw" name="false">

-              <result xmi:type="uml:OutputPin" xmi:id="_uIQLEMXXEeWwx_puHDzFYw" name="result" outgoing="_HFo1sMXYEeWwx_puHDzFYw">

-                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>

-                <upperBound xmi:type="uml:LiteralInteger" xmi:id="_ujJ-YMXXEeWwx_puHDzFYw" value="1"/>

-                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ujJXUMXXEeWwx_puHDzFYw" value="1"/>

-              </result>

-              <value xmi:type="uml:LiteralBoolean" xmi:id="_ujIwQMXXEeWwx_puHDzFYw">

-                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>

-              </value>

-            </node>

-          </structuredNode>

-          <structuredNode xmi:type="uml:StructuredActivityNode" xmi:id="_xF9SUMXXEeWwx_puHDzFYw" name="StructuredActivityNode3" incoming="_QyYn0MXYEeWwx_puHDzFYw" outgoing="_RS1CcMXYEeWwx_puHDzFYw">

-            <edge xmi:type="uml:ObjectFlow" xmi:id="_KlY6EMXYEeWwx_puHDzFYw" target="_y2PkMMXXEeWwx_puHDzFYw" source="_4mxYYMXXEeWwx_puHDzFYw">

-              <guard xmi:type="uml:LiteralBoolean" xmi:id="_KlxUkMXYEeWwx_puHDzFYw" value="true"/>

-              <weight xmi:type="uml:LiteralInteger" xmi:id="_KlxUkcXYEeWwx_puHDzFYw" value="1"/>

-            </edge>

-            <edge xmi:type="uml:ObjectFlow" xmi:id="_MSnQ4MXYEeWwx_puHDzFYw" target="_y2SAcMXXEeWwx_puHDzFYw" source="_61JUcMXXEeWwx_puHDzFYw">

-              <guard xmi:type="uml:LiteralBoolean" xmi:id="_MTDVwMXYEeWwx_puHDzFYw" value="true"/>

-              <weight xmi:type="uml:LiteralInteger" xmi:id="_MTDVwcXYEeWwx_puHDzFYw" value="1"/>

-            </edge>

-            <node xmi:type="uml:AddStructuralFeatureValueAction" xmi:id="_y2Mg4MXXEeWwx_puHDzFYw" name="set Valve" structuralFeature="_RUkBcMXQEeWwx_puHDzFYw" isReplaceAll="true">

-              <object xmi:type="uml:InputPin" xmi:id="_y2PkMMXXEeWwx_puHDzFYw" name="object" incoming="_KlY6EMXYEeWwx_puHDzFYw" type="_NO0UEMXQEeWwx_puHDzFYw"/>

-              <result xmi:type="uml:OutputPin" xmi:id="_y2QyUMXXEeWwx_puHDzFYw" name="result" type="_NO0UEMXQEeWwx_puHDzFYw"/>

-              <value xmi:type="uml:InputPin" xmi:id="_y2SAcMXXEeWwx_puHDzFYw" name="value" incoming="_MSnQ4MXYEeWwx_puHDzFYw">

-                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>

-              </value>

-            </node>

-            <node xmi:type="uml:ReadSelfAction" xmi:id="_4mrRwMXXEeWwx_puHDzFYw" name="self">

-              <result xmi:type="uml:OutputPin" xmi:id="_4mxYYMXXEeWwx_puHDzFYw" name="result" outgoing="_KlY6EMXYEeWwx_puHDzFYw" type="_bnRAUMXQEeWwx_puHDzFYw"/>

-            </node>

-            <node xmi:type="uml:ValueSpecificationAction" xmi:id="_61ItYMXXEeWwx_puHDzFYw" name="true">

-              <result xmi:type="uml:OutputPin" xmi:id="_61JUcMXXEeWwx_puHDzFYw" name="result" outgoing="_MSnQ4MXYEeWwx_puHDzFYw">

-                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>

-                <upperBound xmi:type="uml:LiteralInteger" xmi:id="_7MzmgcXXEeWwx_puHDzFYw" value="1"/>

-                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7MzmgMXXEeWwx_puHDzFYw" value="1"/>

-              </result>

-              <value xmi:type="uml:LiteralBoolean" xmi:id="_7My_cMXXEeWwx_puHDzFYw" value="true">

-                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>

-              </value>

-            </node>

-          </structuredNode>

-          <node xmi:type="uml:AcceptEventAction" xmi:id="_xrAkUMXQEeWwx_puHDzFYw" name="at 0.5" incoming="_WOXPsMXVEeWwx_puHDzFYw" outgoing="_c6JyQMXVEeWwx_puHDzFYw">

-            <trigger xmi:type="uml:Trigger" xmi:id="_dDHd0MXREeWwx_puHDzFYw" event="_FOFiYMXREeWwx_puHDzFYw"/>

-          </node>

-          <node xmi:type="uml:AcceptEventAction" xmi:id="_x6JMgMXQEeWwx_puHDzFYw" name="at 3.2" incoming="_dcHP0MXVEeWwx_puHDzFYw" outgoing="_PzgkwMXYEeWwx_puHDzFYw">

-            <trigger xmi:type="uml:Trigger" xmi:id="_l3ePYMXREeWwx_puHDzFYw" event="_LG7lEMXREeWwx_puHDzFYw"/>

-          </node>

-          <node xmi:type="uml:AcceptEventAction" xmi:id="_yIGwAMXQEeWwx_puHDzFYw" name="at 5.2" incoming="_QYv_0MXYEeWwx_puHDzFYw" outgoing="_QyYn0MXYEeWwx_puHDzFYw">

-            <trigger xmi:type="uml:Trigger" xmi:id="_qedooMXREeWwx_puHDzFYw" event="_LWmYwMXREeWwx_puHDzFYw"/>

-          </node>

-          <node xmi:type="uml:InitialNode" xmi:id="_MwEQoMXSEeWwx_puHDzFYw" name="InitialNode1" outgoing="_WOXPsMXVEeWwx_puHDzFYw"/>

-          <node xmi:type="uml:ActivityFinalNode" xmi:id="_hclboMXVEeWwx_puHDzFYw" name="ActivityFinalNode1" incoming="_RS1CcMXYEeWwx_puHDzFYw"/>

-        </ownedBehavior>

-        <ownedBehavior xmi:type="uml:Activity" xmi:id="_ClNpYMXWEeWwx_puHDzFYw" name="C1_Factory" node="_ClO3gcXWEeWwx_puHDzFYw _CouQYMXWEeWwx_puHDzFYw _Cou3csXWEeWwx_puHDzFYw _CowsocXWEeWwx_puHDzFYw _CoxTscXWEeWwx_puHDzFYw">

-          <ownedParameter xmi:type="uml:Parameter" xmi:id="_ClO3gMXWEeWwx_puHDzFYw" name="result" type="_NO0UEMXQEeWwx_puHDzFYw" direction="return"/>

-          <edge xmi:type="uml:ObjectFlow" xmi:id="_CowFksXWEeWwx_puHDzFYw" name="createObjectAction to callConstructor" target="_CovegMXWEeWwx_puHDzFYw" source="_Cou3cMXWEeWwx_puHDzFYw">

-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_Co8S0MXWEeWwx_puHDzFYw" value="true"/>

-            <weight xmi:type="uml:LiteralInteger" xmi:id="_Co8S0cXWEeWwx_puHDzFYw" value="1"/>

-          </edge>

-          <edge xmi:type="uml:ObjectFlow" xmi:id="_CowsoMXWEeWwx_puHDzFYw" name="callConstructor to returnParamNode" target="_ClO3gcXWEeWwx_puHDzFYw" source="_CoxTscXWEeWwx_puHDzFYw">

-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_Co8S0sXWEeWwx_puHDzFYw" value="true"/>

-            <weight xmi:type="uml:LiteralInteger" xmi:id="_Co8S08XWEeWwx_puHDzFYw" value="1"/>

-          </edge>

-          <edge xmi:type="uml:ObjectFlow" xmi:id="_CoxTssXWEeWwx_puHDzFYw" name="fork to startbehavior input pin" target="_CowsosXWEeWwx_puHDzFYw" source="_CoxTscXWEeWwx_puHDzFYw">

-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_Co854MXWEeWwx_puHDzFYw" value="true"/>

-            <weight xmi:type="uml:LiteralInteger" xmi:id="_Co854cXWEeWwx_puHDzFYw" value="1"/>

-          </edge>

-          <edge xmi:type="uml:ObjectFlow" xmi:id="_CoxTs8XWEeWwx_puHDzFYw" name="callConstructor to startBehavior" target="_CoxTscXWEeWwx_puHDzFYw" source="_CowFkMXWEeWwx_puHDzFYw">

-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_Co854sXWEeWwx_puHDzFYw" value="true"/>

-            <weight xmi:type="uml:LiteralInteger" xmi:id="_Co8548XWEeWwx_puHDzFYw" value="1"/>

-          </edge>

-          <node xmi:type="uml:ActivityParameterNode" xmi:id="_ClO3gcXWEeWwx_puHDzFYw" name="resultParameterNode" incoming="_CowsoMXWEeWwx_puHDzFYw" type="_NO0UEMXQEeWwx_puHDzFYw" parameter="_ClO3gMXWEeWwx_puHDzFYw">

-            <upperBound xmi:type="uml:LiteralInteger" xmi:id="_ClPekMXWEeWwx_puHDzFYw" value="1"/>

-          </node>

-          <node xmi:type="uml:CreateObjectAction" xmi:id="_CouQYMXWEeWwx_puHDzFYw" name="createObject" classifier="_NO0UEMXQEeWwx_puHDzFYw">

-            <result xmi:type="uml:OutputPin" xmi:id="_Cou3cMXWEeWwx_puHDzFYw" name="result" outgoing="_CowFksXWEeWwx_puHDzFYw" type="_NO0UEMXQEeWwx_puHDzFYw">

-              <upperBound xmi:type="uml:LiteralInteger" xmi:id="_Cou3ccXWEeWwx_puHDzFYw" value="1"/>

-            </result>

-          </node>

-          <node xmi:type="uml:CallOperationAction" xmi:id="_Cou3csXWEeWwx_puHDzFYw" name="callConstructor" operation="_ColtgMXWEeWwx_puHDzFYw">

-            <result xmi:type="uml:OutputPin" xmi:id="_CowFkMXWEeWwx_puHDzFYw" name="result" outgoing="_CoxTs8XWEeWwx_puHDzFYw" type="_NO0UEMXQEeWwx_puHDzFYw">

-              <upperBound xmi:type="uml:LiteralInteger" xmi:id="_CowFkcXWEeWwx_puHDzFYw" value="1"/>

-            </result>

-            <target xmi:type="uml:InputPin" xmi:id="_CovegMXWEeWwx_puHDzFYw" name="target" incoming="_CowFksXWEeWwx_puHDzFYw" type="_NO0UEMXQEeWwx_puHDzFYw">

-              <upperBound xmi:type="uml:LiteralInteger" xmi:id="_CovegcXWEeWwx_puHDzFYw" value="1"/>

-            </target>

-          </node>

-          <node xmi:type="uml:StartObjectBehaviorAction" xmi:id="_CowsocXWEeWwx_puHDzFYw" name="start classifier behavior">

-            <object xmi:type="uml:InputPin" xmi:id="_CowsosXWEeWwx_puHDzFYw" name="object" incoming="_CoxTssXWEeWwx_puHDzFYw" type="_NO0UEMXQEeWwx_puHDzFYw">

-              <upperBound xmi:type="uml:LiteralInteger" xmi:id="_CoxTsMXWEeWwx_puHDzFYw" value="1"/>

-            </object>

-          </node>

-          <node xmi:type="uml:ForkNode" xmi:id="_CoxTscXWEeWwx_puHDzFYw" name="forkInstanciatedObject" incoming="_CoxTs8XWEeWwx_puHDzFYw" outgoing="_CowsoMXWEeWwx_puHDzFYw _CoxTssXWEeWwx_puHDzFYw"/>

-        </ownedBehavior>

-        <ownedOperation xmi:type="uml:Operation" xmi:id="_ColtgMXWEeWwx_puHDzFYw" name="C1">

-          <ownedParameter xmi:type="uml:Parameter" xmi:id="_CoqmAMXWEeWwx_puHDzFYw" name="return" type="_NO0UEMXQEeWwx_puHDzFYw" direction="return"/>

-        </ownedOperation>

-      </packagedElement>

-      <packagedElement xmi:type="uml:Package" xmi:id="_BsDmEMXREeWwx_puHDzFYw" name="Events C1">

-        <packagedElement xmi:type="uml:TimeEvent" xmi:id="_FOFiYMXREeWwx_puHDzFYw" name="at 0.5">

-          <when xmi:type="uml:TimeExpression" xmi:id="_JOSocMXREeWwx_puHDzFYw">

-            <expr xmi:type="uml:LiteralReal" xmi:id="_JOSoccXREeWwx_puHDzFYw" value="0.5"/>

-          </when>

-        </packagedElement>

-        <packagedElement xmi:type="uml:TimeEvent" xmi:id="_LG7lEMXREeWwx_puHDzFYw" name="at 3.2">

-          <when xmi:type="uml:TimeExpression" xmi:id="_LG7lEcXREeWwx_puHDzFYw">

-            <expr xmi:type="uml:LiteralReal" xmi:id="_LG7lEsXREeWwx_puHDzFYw" value="3.2"/>

-          </when>

-        </packagedElement>

-        <packagedElement xmi:type="uml:TimeEvent" xmi:id="_LWmYwMXREeWwx_puHDzFYw" name="at 5.2">

-          <when xmi:type="uml:TimeExpression" xmi:id="_LWmYwcXREeWwx_puHDzFYw">

-            <expr xmi:type="uml:LiteralReal" xmi:id="_LWmYwsXREeWwx_puHDzFYw" value="5.2"/>

-          </when>

-        </packagedElement>

-      </packagedElement>

-      <packagedElement xmi:type="uml:Class" xmi:id="_V9MCEMaDEeWfFdnv26Efug" name="C2" classifierBehavior="_BxUJMMaEEeWfFdnv26Efug" isActive="true">

-        <ownedAttribute xmi:type="uml:Property" xmi:id="_auAFsMaDEeWfFdnv26Efug" name="abort" visibility="public">

-          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>

-          <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_lTy_sMaDEeWfFdnv26Efug"/>

-        </ownedAttribute>

-        <ownedAttribute xmi:type="uml:Property" xmi:id="_wQ2jIMaDEeWfFdnv26Efug" name="size" visibility="public">

-          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>

-          <defaultValue xmi:type="uml:LiteralReal" xmi:id="_15xTcMaDEeWfFdnv26Efug" value="1.0"/>

-        </ownedAttribute>

-        <ownedBehavior xmi:type="uml:Activity" xmi:id="_BxUJMMaEEeWfFdnv26Efug" name="C2 Classifier Behavior" node="_tNIeAMaEEeWfFdnv26Efug _9nmsYMaEEeWfFdnv26Efug _ITC7YMaFEeWfFdnv26Efug _KiYgwMaFEeWfFdnv26Efug _LaTnQMaFEeWfFdnv26Efug _KrKz4MaGEeWfFdnv26Efug" group="_KiYgwMaFEeWfFdnv26Efug _LaTnQMaFEeWfFdnv26Efug">

-          <ownedComment xmi:type="uml:Comment" xmi:id="_NmKQQMaEEeWfFdnv26Efug">

-            <body>model C2&#xD;

-  discrete output Boolean abort(start = false, fixed = false);&#xD;

-  discrete output Real size(start = 1.0, fixed = false);&#xD;

-equation&#xD;

-  when time >= 1.9 then&#xD;

-    abort = true;&#xD;

-  end when;&#xD;

-  when time >= 6.5 then&#xD;

-    size = 0.5;&#xD;

-  end when;&#xD;

-end C2;</body>

-          </ownedComment>

-          <edge xmi:type="uml:ControlFlow" xmi:id="_MtuhgMaGEeWfFdnv26Efug" target="_tNIeAMaEEeWfFdnv26Efug" source="_ITC7YMaFEeWfFdnv26Efug"/>

-          <edge xmi:type="uml:ControlFlow" xmi:id="_NLL5kMaGEeWfFdnv26Efug" target="_KiYgwMaFEeWfFdnv26Efug" source="_tNIeAMaEEeWfFdnv26Efug"/>

-          <edge xmi:type="uml:ControlFlow" xmi:id="_NxbaMMaGEeWfFdnv26Efug" target="_9nmsYMaEEeWfFdnv26Efug" source="_KiYgwMaFEeWfFdnv26Efug"/>

-          <edge xmi:type="uml:ControlFlow" xmi:id="_OKWQgMaGEeWfFdnv26Efug" target="_LaTnQMaFEeWfFdnv26Efug" source="_9nmsYMaEEeWfFdnv26Efug"/>

-          <edge xmi:type="uml:ControlFlow" xmi:id="_Onh7wMaGEeWfFdnv26Efug" target="_KrKz4MaGEeWfFdnv26Efug" source="_LaTnQMaFEeWfFdnv26Efug"/>

-          <structuredNode xmi:type="uml:StructuredActivityNode" xmi:id="_KiYgwMaFEeWfFdnv26Efug" name="StructuredActivityNode1" incoming="_NLL5kMaGEeWfFdnv26Efug" outgoing="_NxbaMMaGEeWfFdnv26Efug">

-            <edge xmi:type="uml:ObjectFlow" xmi:id="_0P45oMaFEeWfFdnv26Efug" target="_ZEyaQMaFEeWfFdnv26Efug" source="_Q4yCIMaFEeWfFdnv26Efug">

-              <guard xmi:type="uml:LiteralBoolean" xmi:id="_0QL0kMaFEeWfFdnv26Efug" value="true"/>

-              <weight xmi:type="uml:LiteralInteger" xmi:id="_0QL0kcaFEeWfFdnv26Efug" value="1"/>

-            </edge>

-            <edge xmi:type="uml:ObjectFlow" xmi:id="_0oCT4MaFEeWfFdnv26Efug" target="_ZE3SwMaFEeWfFdnv26Efug" source="_StuKgMaFEeWfFdnv26Efug">

-              <guard xmi:type="uml:LiteralBoolean" xmi:id="_0oVO0MaFEeWfFdnv26Efug" value="true"/>

-              <weight xmi:type="uml:LiteralInteger" xmi:id="_0oVO0caFEeWfFdnv26Efug" value="1"/>

-            </edge>

-            <node xmi:type="uml:ReadSelfAction" xmi:id="_Q4mb8MaFEeWfFdnv26Efug" name="self">

-              <result xmi:type="uml:OutputPin" xmi:id="_Q4yCIMaFEeWfFdnv26Efug" name="result" outgoing="_0P45oMaFEeWfFdnv26Efug" type="_BxUJMMaEEeWfFdnv26Efug"/>

-            </node>

-            <node xmi:type="uml:ValueSpecificationAction" xmi:id="_StruQMaFEeWfFdnv26Efug" name="true">

-              <result xmi:type="uml:OutputPin" xmi:id="_StuKgMaFEeWfFdnv26Efug" name="result" outgoing="_0oCT4MaFEeWfFdnv26Efug">

-                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>

-                <upperBound xmi:type="uml:LiteralInteger" xmi:id="_TfgMwMaFEeWfFdnv26Efug" value="1"/>

-                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_TfflsMaFEeWfFdnv26Efug" value="1"/>

-              </result>

-              <value xmi:type="uml:LiteralBoolean" xmi:id="_TfatMMaFEeWfFdnv26Efug" value="true">

-                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>

-              </value>

-            </node>

-            <node xmi:type="uml:AddStructuralFeatureValueAction" xmi:id="_ZEp3YMaFEeWfFdnv26Efug" name="set Abort" structuralFeature="_auAFsMaDEeWfFdnv26Efug" isReplaceAll="true">

-              <object xmi:type="uml:InputPin" xmi:id="_ZEyaQMaFEeWfFdnv26Efug" name="object" incoming="_0P45oMaFEeWfFdnv26Efug" type="_V9MCEMaDEeWfFdnv26Efug"/>

-              <result xmi:type="uml:OutputPin" xmi:id="_ZE02gMaFEeWfFdnv26Efug" name="result" type="_V9MCEMaDEeWfFdnv26Efug"/>

-              <value xmi:type="uml:InputPin" xmi:id="_ZE3SwMaFEeWfFdnv26Efug" name="value" incoming="_0oCT4MaFEeWfFdnv26Efug">

-                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>

-              </value>

-            </node>

-          </structuredNode>

-          <structuredNode xmi:type="uml:StructuredActivityNode" xmi:id="_LaTnQMaFEeWfFdnv26Efug" name="StructuredActivityNode2" incoming="_OKWQgMaGEeWfFdnv26Efug" outgoing="_Onh7wMaGEeWfFdnv26Efug">

-            <edge xmi:type="uml:ObjectFlow" xmi:id="_0-K78MaFEeWfFdnv26Efug" target="_p4Y6UMaFEeWfFdnv26Efug" source="_fUT3kMaFEeWfFdnv26Efug">

-              <guard xmi:type="uml:LiteralBoolean" xmi:id="_0-dP0MaFEeWfFdnv26Efug" value="true"/>

-              <weight xmi:type="uml:LiteralInteger" xmi:id="_0-d24MaFEeWfFdnv26Efug" value="1"/>

-            </edge>

-            <edge xmi:type="uml:ObjectFlow" xmi:id="_1bLBAMaFEeWfFdnv26Efug" target="_p4gPEMaFEeWfFdnv26Efug" source="_hCQnIMaFEeWfFdnv26Efug">

-              <guard xmi:type="uml:LiteralBoolean" xmi:id="_1bfKEMaFEeWfFdnv26Efug" value="true"/>

-              <weight xmi:type="uml:LiteralInteger" xmi:id="_1bfKEcaFEeWfFdnv26Efug" value="1"/>

-            </edge>

-            <node xmi:type="uml:ReadSelfAction" xmi:id="_fUSpcMaFEeWfFdnv26Efug" name="self">

-              <result xmi:type="uml:OutputPin" xmi:id="_fUT3kMaFEeWfFdnv26Efug" name="result" outgoing="_0-K78MaFEeWfFdnv26Efug" type="_BxUJMMaEEeWfFdnv26Efug"/>

-            </node>

-            <node xmi:type="uml:ValueSpecificationAction" xmi:id="_hCPZAMaFEeWfFdnv26Efug" name="0.5">

-              <result xmi:type="uml:OutputPin" xmi:id="_hCQnIMaFEeWfFdnv26Efug" name="result" outgoing="_1bLBAMaFEeWfFdnv26Efug">

-                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>

-                <upperBound xmi:type="uml:LiteralInteger" xmi:id="_BZsIYM5QEeWaRpodR1S6WA" value="1"/>

-                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_h0FFoMaFEeWfFdnv26Efug" value="1"/>

-              </result>

-              <value xmi:type="uml:LiteralReal" xmi:id="_BZgiMM5QEeWaRpodR1S6WA" value="0.5">

-                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>

-              </value>

-            </node>

-            <node xmi:type="uml:AddStructuralFeatureValueAction" xmi:id="_p4VP8MaFEeWfFdnv26Efug" name="set Size" structuralFeature="_wQ2jIMaDEeWfFdnv26Efug" isReplaceAll="true">

-              <object xmi:type="uml:InputPin" xmi:id="_p4Y6UMaFEeWfFdnv26Efug" name="object" incoming="_0-K78MaFEeWfFdnv26Efug" type="_V9MCEMaDEeWfFdnv26Efug"/>

-              <result xmi:type="uml:OutputPin" xmi:id="_p4avgMaFEeWfFdnv26Efug" name="result" type="_V9MCEMaDEeWfFdnv26Efug"/>

-              <value xmi:type="uml:InputPin" xmi:id="_p4gPEMaFEeWfFdnv26Efug" name="value" incoming="_1bLBAMaFEeWfFdnv26Efug">

-                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>

-              </value>

-            </node>

-          </structuredNode>

-          <node xmi:type="uml:AcceptEventAction" xmi:id="_tNIeAMaEEeWfFdnv26Efug" name="at 1.9" incoming="_MtuhgMaGEeWfFdnv26Efug" outgoing="_NLL5kMaGEeWfFdnv26Efug">

-            <trigger xmi:type="uml:Trigger" xmi:id="_yG7egMaEEeWfFdnv26Efug" event="_XhppAMaEEeWfFdnv26Efug"/>

-          </node>

-          <node xmi:type="uml:AcceptEventAction" xmi:id="_9nmsYMaEEeWfFdnv26Efug" name="at 6.5" incoming="_NxbaMMaGEeWfFdnv26Efug" outgoing="_OKWQgMaGEeWfFdnv26Efug">

-            <trigger xmi:type="uml:Trigger" xmi:id="_9nmsYcaEEeWfFdnv26Efug" event="_iY44UMaEEeWfFdnv26Efug"/>

-          </node>

-          <node xmi:type="uml:InitialNode" xmi:id="_ITC7YMaFEeWfFdnv26Efug" outgoing="_MtuhgMaGEeWfFdnv26Efug"/>

-          <node xmi:type="uml:ActivityFinalNode" xmi:id="_KrKz4MaGEeWfFdnv26Efug" name="ActivityFinalNode1" incoming="_Onh7wMaGEeWfFdnv26Efug"/>

-        </ownedBehavior>

-        <ownedBehavior xmi:type="uml:Activity" xmi:id="_W-aHIMaGEeWfFdnv26Efug" name="C2_Factory" node="_fYeJYMaGEeWfFdnv26Efug _fYhMsMaGEeWfFdnv26Efug _fYhzwMaGEeWfFdnv26Efug _fYia0caGEeWfFdnv26Efug _fYjB4saGEeWfFdnv26Efug">

-          <ownedParameter xmi:type="uml:Parameter" xmi:id="_W-auMMaGEeWfFdnv26Efug" name="result" type="_V9MCEMaDEeWfFdnv26Efug" direction="return"/>

-          <edge xmi:type="uml:ObjectFlow" xmi:id="_fYhzxcaGEeWfFdnv26Efug" name="createObjectAction to callConstructor" target="_fYhzwcaGEeWfFdnv26Efug" source="_fYhMscaGEeWfFdnv26Efug">

-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_fYkQAMaGEeWfFdnv26Efug" value="true"/>

-            <weight xmi:type="uml:LiteralInteger" xmi:id="_fYk3EMaGEeWfFdnv26Efug" value="1"/>

-          </edge>

-          <edge xmi:type="uml:ObjectFlow" xmi:id="_fYia0MaGEeWfFdnv26Efug" name="callConstructor to returnParamNode" target="_fYeJYMaGEeWfFdnv26Efug" source="_fYjB4saGEeWfFdnv26Efug">

-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_fYk3EcaGEeWfFdnv26Efug" value="true"/>

-            <weight xmi:type="uml:LiteralInteger" xmi:id="_fYk3EsaGEeWfFdnv26Efug" value="1"/>

-          </edge>

-          <edge xmi:type="uml:ObjectFlow" xmi:id="_fYjo8MaGEeWfFdnv26Efug" name="fork to startbehavior input pin" target="_fYjB4MaGEeWfFdnv26Efug" source="_fYjB4saGEeWfFdnv26Efug">

-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_fYk3E8aGEeWfFdnv26Efug" value="true"/>

-            <weight xmi:type="uml:LiteralInteger" xmi:id="_fYk3FMaGEeWfFdnv26Efug" value="1"/>

-          </edge>

-          <edge xmi:type="uml:ObjectFlow" xmi:id="_fYjo8caGEeWfFdnv26Efug" name="callConstructor to startBehavior" target="_fYjB4saGEeWfFdnv26Efug" source="_fYhzw8aGEeWfFdnv26Efug">

-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_fYk3FcaGEeWfFdnv26Efug" value="true"/>

-            <weight xmi:type="uml:LiteralInteger" xmi:id="_fYk3FsaGEeWfFdnv26Efug" value="1"/>

-          </edge>

-          <node xmi:type="uml:ActivityParameterNode" xmi:id="_fYeJYMaGEeWfFdnv26Efug" name="resultParameterNode" incoming="_fYia0MaGEeWfFdnv26Efug" type="_V9MCEMaDEeWfFdnv26Efug" parameter="_W-auMMaGEeWfFdnv26Efug">

-            <upperBound xmi:type="uml:LiteralInteger" xmi:id="_fYgloMaGEeWfFdnv26Efug" value="1"/>

-          </node>

-          <node xmi:type="uml:CreateObjectAction" xmi:id="_fYhMsMaGEeWfFdnv26Efug" name="createObject" classifier="_V9MCEMaDEeWfFdnv26Efug">

-            <result xmi:type="uml:OutputPin" xmi:id="_fYhMscaGEeWfFdnv26Efug" name="result" outgoing="_fYhzxcaGEeWfFdnv26Efug" type="_V9MCEMaDEeWfFdnv26Efug">

-              <upperBound xmi:type="uml:LiteralInteger" xmi:id="_fYhMssaGEeWfFdnv26Efug" value="1"/>

-            </result>

-          </node>

-          <node xmi:type="uml:CallOperationAction" xmi:id="_fYhzwMaGEeWfFdnv26Efug" name="callConstructor" operation="_XBWGYMaGEeWfFdnv26Efug">

-            <result xmi:type="uml:OutputPin" xmi:id="_fYhzw8aGEeWfFdnv26Efug" name="result" outgoing="_fYjo8caGEeWfFdnv26Efug" type="_V9MCEMaDEeWfFdnv26Efug">

-              <upperBound xmi:type="uml:LiteralInteger" xmi:id="_fYhzxMaGEeWfFdnv26Efug" value="1"/>

-            </result>

-            <target xmi:type="uml:InputPin" xmi:id="_fYhzwcaGEeWfFdnv26Efug" name="target" incoming="_fYhzxcaGEeWfFdnv26Efug" type="_V9MCEMaDEeWfFdnv26Efug">

-              <upperBound xmi:type="uml:LiteralInteger" xmi:id="_fYhzwsaGEeWfFdnv26Efug" value="1"/>

-            </target>

-          </node>

-          <node xmi:type="uml:StartObjectBehaviorAction" xmi:id="_fYia0caGEeWfFdnv26Efug" name="start classifier behavior">

-            <object xmi:type="uml:InputPin" xmi:id="_fYjB4MaGEeWfFdnv26Efug" name="object" incoming="_fYjo8MaGEeWfFdnv26Efug" type="_V9MCEMaDEeWfFdnv26Efug">

-              <upperBound xmi:type="uml:LiteralInteger" xmi:id="_fYjB4caGEeWfFdnv26Efug" value="1"/>

-            </object>

-          </node>

-          <node xmi:type="uml:ForkNode" xmi:id="_fYjB4saGEeWfFdnv26Efug" name="forkInstanciatedObject" incoming="_fYjo8caGEeWfFdnv26Efug" outgoing="_fYia0MaGEeWfFdnv26Efug _fYjo8MaGEeWfFdnv26Efug"/>

-        </ownedBehavior>

-        <ownedOperation xmi:type="uml:Operation" xmi:id="_XBWGYMaGEeWfFdnv26Efug" name="C2">

-          <ownedParameter xmi:type="uml:Parameter" xmi:id="_XBbl8MaGEeWfFdnv26Efug" name="return" type="_V9MCEMaDEeWfFdnv26Efug" direction="return"/>

-        </ownedOperation>

-      </packagedElement>

-      <packagedElement xmi:type="uml:Package" xmi:id="_TI9xgMaEEeWfFdnv26Efug" name="Events C2">

-        <packagedElement xmi:type="uml:TimeEvent" xmi:id="_XhppAMaEEeWfFdnv26Efug" name="at 1.9">

-          <when xmi:type="uml:TimeExpression" xmi:id="_XhppAcaEEeWfFdnv26Efug">

-            <expr xmi:type="uml:LiteralReal" xmi:id="_XhppAsaEEeWfFdnv26Efug" value="1.9"/>

-          </when>

-        </packagedElement>

-        <packagedElement xmi:type="uml:TimeEvent" xmi:id="_iY44UMaEEeWfFdnv26Efug" name="at 6.5">

-          <when xmi:type="uml:TimeExpression" xmi:id="_iY44UcaEEeWfFdnv26Efug">

-            <expr xmi:type="uml:LiteralReal" xmi:id="_iY44UsaEEeWfFdnv26Efug" value="6.5"/>

-          </when>

-        </packagedElement>

-      </packagedElement>

-    </packagedElement>

-    <packagedElement xmi:type="uml:Package" xmi:id="_-JGxEOxOEeWP6eN_6Zcgmw" name="Basic">

-      <packagedElement xmi:type="uml:Class" xmi:id="_aKy6MOxPEeWP6eN_6Zcgmw" name="A" classifierBehavior="_MczfMOxaEeWP6eN_6Zcgmw" isActive="true">

-        <ownedAttribute xmi:type="uml:Property" xmi:id="_eG3HIOxPEeWP6eN_6Zcgmw" name="x">

-          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>

-          <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_hf1_sOxQEeWP6eN_6Zcgmw" value="1"/>

-        </ownedAttribute>

-        <ownedAttribute xmi:type="uml:Property" xmi:id="_fPzFIOxPEeWP6eN_6Zcgmw" name="y">

-          <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>

-          <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_PBPyUCQHEeaCtZpD0ATfCw"/>

-        </ownedAttribute>

-        <ownedBehavior xmi:type="uml:Activity" xmi:id="_1TmzMOxSEeWP6eN_6Zcgmw" name="compare_impl" specification="_QQv2cOxQEeWP6eN_6Zcgmw" node="_TuqAYOxTEeWP6eN_6Zcgmw _b7NLEOxTEeWP6eN_6Zcgmw _soiEAOxTEeWP6eN_6Zcgmw _BFmlIOxUEeWP6eN_6Zcgmw">

-          <ownedParameter xmi:type="uml:Parameter" xmi:id="_LNhs0OxTEeWP6eN_6Zcgmw" name="v">

-            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>

-          </ownedParameter>

-          <ownedParameter xmi:type="uml:Parameter" xmi:id="_LxQE8OxTEeWP6eN_6Zcgmw" name="result" direction="return">

-            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>

-          </ownedParameter>

-          <edge xmi:type="uml:ObjectFlow" xmi:id="_KrzDUOxUEeWP6eN_6Zcgmw" target="_b7v9oOxTEeWP6eN_6Zcgmw" source="_TuqAYOxTEeWP6eN_6Zcgmw">

-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_Kr-pgOxUEeWP6eN_6Zcgmw" value="true"/>

-            <weight xmi:type="uml:LiteralInteger" xmi:id="_Kr-pgexUEeWP6eN_6Zcgmw" value="1"/>

-          </edge>

-          <edge xmi:type="uml:ObjectFlow" xmi:id="_LOWWwOxUEeWP6eN_6Zcgmw" target="_b77j0OxTEeWP6eN_6Zcgmw" source="_sojSIOxTEeWP6eN_6Zcgmw">

-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_LOgu0OxUEeWP6eN_6Zcgmw" value="true"/>

-            <weight xmi:type="uml:LiteralInteger" xmi:id="_LOhV4OxUEeWP6eN_6Zcgmw" value="1"/>

-          </edge>

-          <edge xmi:type="uml:ObjectFlow" xmi:id="_LlhgoOxUEeWP6eN_6Zcgmw" target="_BFmlIOxUEeWP6eN_6Zcgmw" source="_b7-nIOxTEeWP6eN_6Zcgmw">

-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_LluU8OxUEeWP6eN_6Zcgmw" value="true"/>

-            <weight xmi:type="uml:LiteralInteger" xmi:id="_LluU8exUEeWP6eN_6Zcgmw" value="1"/>

-          </edge>

-          <node xmi:type="uml:ActivityParameterNode" xmi:id="_TuqAYOxTEeWP6eN_6Zcgmw" name="v" outgoing="_KrzDUOxUEeWP6eN_6Zcgmw" parameter="_LNhs0OxTEeWP6eN_6Zcgmw">

-            <upperBound xmi:type="uml:LiteralInteger" xmi:id="_TuuR0OxTEeWP6eN_6Zcgmw" value="1"/>

-          </node>

-          <node xmi:type="uml:CallBehaviorAction" xmi:id="_b7NLEOxTEeWP6eN_6Zcgmw" name=">">

-            <argument xmi:type="uml:InputPin" xmi:id="_b7v9oOxTEeWP6eN_6Zcgmw" name="x" incoming="_KrzDUOxUEeWP6eN_6Zcgmw">

-              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>

-              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_b72rUOxTEeWP6eN_6Zcgmw" value="1"/>

-              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_b71dMOxTEeWP6eN_6Zcgmw" value="1"/>

-            </argument>

-            <argument xmi:type="uml:InputPin" xmi:id="_b77j0OxTEeWP6eN_6Zcgmw" name="y" incoming="_LOWWwOxUEeWP6eN_6Zcgmw">

-              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>

-              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_b7-AEexTEeWP6eN_6Zcgmw" value="1"/>

-              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_b7-AEOxTEeWP6eN_6Zcgmw" value="1"/>

-            </argument>

-            <result xmi:type="uml:OutputPin" xmi:id="_b7-nIOxTEeWP6eN_6Zcgmw" name="result" outgoing="_LlhgoOxUEeWP6eN_6Zcgmw">

-              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>

-              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_b8AcUexTEeWP6eN_6Zcgmw" value="1"/>

-              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_b8AcUOxTEeWP6eN_6Zcgmw" value="1"/>

-            </result>

-            <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-IntegerFunctions-gt"/>

-          </node>

-          <node xmi:type="uml:ValueSpecificationAction" xmi:id="_soiEAOxTEeWP6eN_6Zcgmw" name="2">

-            <result xmi:type="uml:OutputPin" xmi:id="_sojSIOxTEeWP6eN_6Zcgmw" name="result" outgoing="_LOWWwOxUEeWP6eN_6Zcgmw"/>

-            <value xmi:type="uml:LiteralInteger" xmi:id="_2OppsOxTEeWP6eN_6Zcgmw" value="2"/>

-          </node>

-          <node xmi:type="uml:ActivityParameterNode" xmi:id="_BFmlIOxUEeWP6eN_6Zcgmw" name="result" incoming="_LlhgoOxUEeWP6eN_6Zcgmw" parameter="_LxQE8OxTEeWP6eN_6Zcgmw">

-            <upperBound xmi:type="uml:LiteralInteger" xmi:id="_BFoaUOxUEeWP6eN_6Zcgmw" value="1"/>

-          </node>

-        </ownedBehavior>

-        <ownedBehavior xmi:type="uml:Activity" xmi:id="_MczfMOxaEeWP6eN_6Zcgmw" name="Classifier Behavior" node="_15a8YOxaEeWP6eN_6Zcgmw _5ydqgOxaEeWP6eN_6Zcgmw _9mYoEOxaEeWP6eN_6Zcgmw _Mrov8OxbEeWP6eN_6Zcgmw _wBEMcOxbEeWP6eN_6Zcgmw _maTQEOxnEeWP6eN_6Zcgmw _yyR5YOxnEeWP6eN_6Zcgmw _2fvCkOxnEeWP6eN_6Zcgmw _LGz0QOxoEeWP6eN_6Zcgmw">

-          <ownedComment xmi:type="uml:Comment" xmi:id="_HTpXkOxbEeWP6eN_6Zcgmw" annotatedElement="_9mYoEOxaEeWP6eN_6Zcgmw">

-            <body>ReadStructuralFeatureValueAction&#xD;

-Lecture de la valeur d'entrée x</body>

-          </ownedComment>

-          <ownedComment xmi:type="uml:Comment" xmi:id="_ZsnS8OxbEeWP6eN_6Zcgmw" annotatedElement="_Mrov8OxbEeWP6eN_6Zcgmw">

-            <body>CallOperationAction&#xD;

-Appel à l'opération compare</body>

-          </ownedComment>

-          <ownedComment xmi:type="uml:Comment" xmi:id="_IT1z0OxcEeWP6eN_6Zcgmw" annotatedElement="_wBEMcOxbEeWP6eN_6Zcgmw">

-            <body>AddStructuralFeatureValueAction&#xD;

-Ecriture du résultat sur la sortie y</body>

-          </ownedComment>

-          <edge xmi:type="uml:ObjectFlow" xmi:id="_dTqSIOxbEeWP6eN_6Zcgmw" target="_9mjnMOxaEeWP6eN_6Zcgmw" source="_5ydqgOxaEeWP6eN_6Zcgmw">

-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_dT2fYOxbEeWP6eN_6Zcgmw" value="true"/>

-            <weight xmi:type="uml:LiteralInteger" xmi:id="_dT2fYexbEeWP6eN_6Zcgmw" value="1"/>

-          </edge>

-          <edge xmi:type="uml:ObjectFlow" xmi:id="_eznpAOxbEeWP6eN_6Zcgmw" target="_Mr_VQOxbEeWP6eN_6Zcgmw" source="_9mk1UOxaEeWP6eN_6Zcgmw">

-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_ez3goOxbEeWP6eN_6Zcgmw" value="true"/>

-            <weight xmi:type="uml:LiteralInteger" xmi:id="_ez3goexbEeWP6eN_6Zcgmw" value="1"/>

-          </edge>

-          <edge xmi:type="uml:ObjectFlow" xmi:id="_innfEOxbEeWP6eN_6Zcgmw" target="_Mr9gEOxbEeWP6eN_6Zcgmw" source="_5ydqgOxaEeWP6eN_6Zcgmw">

-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_in0TYOxbEeWP6eN_6Zcgmw" value="true"/>

-            <weight xmi:type="uml:LiteralInteger" xmi:id="_in0TYexbEeWP6eN_6Zcgmw" value="1"/>

-          </edge>

-          <edge xmi:type="uml:ObjectFlow" xmi:id="_lzQ7sOxbEeWP6eN_6Zcgmw" target="_5ydqgOxaEeWP6eN_6Zcgmw" source="_15d_sOxaEeWP6eN_6Zcgmw">

-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_lzlEwOxbEeWP6eN_6Zcgmw" value="true"/>

-            <weight xmi:type="uml:LiteralInteger" xmi:id="_lzlEwexbEeWP6eN_6Zcgmw" value="1"/>

-          </edge>

-          <edge xmi:type="uml:ObjectFlow" xmi:id="_7O4IsOxbEeWP6eN_6Zcgmw" target="_wBHPwOxbEeWP6eN_6Zcgmw" source="_5ydqgOxaEeWP6eN_6Zcgmw">

-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_7PMRwOxbEeWP6eN_6Zcgmw" value="true"/>

-            <weight xmi:type="uml:LiteralInteger" xmi:id="_7PMRwexbEeWP6eN_6Zcgmw" value="1"/>

-          </edge>

-          <edge xmi:type="uml:ObjectFlow" xmi:id="_8vTZoOxbEeWP6eN_6Zcgmw" target="_wBJE8OxbEeWP6eN_6Zcgmw" source="_MsDmsOxbEeWP6eN_6Zcgmw">

-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_8vltgOxbEeWP6eN_6Zcgmw" value="true"/>

-            <weight xmi:type="uml:LiteralInteger" xmi:id="_8vltgexbEeWP6eN_6Zcgmw" value="1"/>

-          </edge>

-          <edge xmi:type="uml:ControlFlow" xmi:id="_pBriAOxnEeWP6eN_6Zcgmw" target="_15a8YOxaEeWP6eN_6Zcgmw" source="_maTQEOxnEeWP6eN_6Zcgmw"/>

-          <edge xmi:type="uml:ControlFlow" xmi:id="_06MoIOxnEeWP6eN_6Zcgmw" target="_maTQEOxnEeWP6eN_6Zcgmw" source="_yyR5YOxnEeWP6eN_6Zcgmw"/>

-          <edge xmi:type="uml:ControlFlow" xmi:id="__m4NQOxnEeWP6eN_6Zcgmw" target="_2fvCkOxnEeWP6eN_6Zcgmw" source="_maTQEOxnEeWP6eN_6Zcgmw"/>

-          <edge xmi:type="uml:ControlFlow" xmi:id="_C_egwOxoEeWP6eN_6Zcgmw" target="_wBEMcOxbEeWP6eN_6Zcgmw" source="_2fvCkOxnEeWP6eN_6Zcgmw"/>

-          <edge xmi:type="uml:ControlFlow" xmi:id="_OKK3kOxoEeWP6eN_6Zcgmw" target="_LGz0QOxoEeWP6eN_6Zcgmw" source="_wBEMcOxbEeWP6eN_6Zcgmw"/>

-          <node xmi:type="uml:ReadSelfAction" xmi:id="_15a8YOxaEeWP6eN_6Zcgmw" name="self" incoming="_pBriAOxnEeWP6eN_6Zcgmw">

-            <result xmi:type="uml:OutputPin" xmi:id="_15d_sOxaEeWP6eN_6Zcgmw" name="result" outgoing="_lzQ7sOxbEeWP6eN_6Zcgmw" type="_MczfMOxaEeWP6eN_6Zcgmw"/>

-          </node>

-          <node xmi:type="uml:ForkNode" xmi:id="_5ydqgOxaEeWP6eN_6Zcgmw" name="ForkNode1" incoming="_lzQ7sOxbEeWP6eN_6Zcgmw" outgoing="_dTqSIOxbEeWP6eN_6Zcgmw _innfEOxbEeWP6eN_6Zcgmw _7O4IsOxbEeWP6eN_6Zcgmw"/>

-          <node xmi:type="uml:ReadStructuralFeatureAction" xmi:id="_9mYoEOxaEeWP6eN_6Zcgmw" name="read x" structuralFeature="_eG3HIOxPEeWP6eN_6Zcgmw">

-            <object xmi:type="uml:InputPin" xmi:id="_9mjnMOxaEeWP6eN_6Zcgmw" name="object" incoming="_dTqSIOxbEeWP6eN_6Zcgmw" type="_aKy6MOxPEeWP6eN_6Zcgmw"/>

-            <result xmi:type="uml:OutputPin" xmi:id="_9mk1UOxaEeWP6eN_6Zcgmw" name="x" outgoing="_eznpAOxbEeWP6eN_6Zcgmw">

-              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>

-              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9mnRkexaEeWP6eN_6Zcgmw" value="1"/>

-              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9mnRkOxaEeWP6eN_6Zcgmw" value="1"/>

-            </result>

-          </node>

-          <node xmi:type="uml:CallOperationAction" xmi:id="_Mrov8OxbEeWP6eN_6Zcgmw" name="call compare" operation="_QQv2cOxQEeWP6eN_6Zcgmw">

-            <argument xmi:type="uml:InputPin" xmi:id="_Mr_VQOxbEeWP6eN_6Zcgmw" name="v" incoming="_eznpAOxbEeWP6eN_6Zcgmw">

-              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>

-              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MsBxgOxbEeWP6eN_6Zcgmw" value="1"/>

-              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MsBKcOxbEeWP6eN_6Zcgmw" value="1"/>

-            </argument>

-            <result xmi:type="uml:OutputPin" xmi:id="_MsDmsOxbEeWP6eN_6Zcgmw" name="result" outgoing="_8vTZoOxbEeWP6eN_6Zcgmw">

-              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>

-              <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MsGC8exbEeWP6eN_6Zcgmw" value="1"/>

-              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MsGC8OxbEeWP6eN_6Zcgmw" value="1"/>

-            </result>

-            <target xmi:type="uml:InputPin" xmi:id="_Mr9gEOxbEeWP6eN_6Zcgmw" name="target" incoming="_innfEOxbEeWP6eN_6Zcgmw" type="_aKy6MOxPEeWP6eN_6Zcgmw"/>

-          </node>

-          <node xmi:type="uml:AddStructuralFeatureValueAction" xmi:id="_wBEMcOxbEeWP6eN_6Zcgmw" name="setY" incoming="_C_egwOxoEeWP6eN_6Zcgmw" outgoing="_OKK3kOxoEeWP6eN_6Zcgmw" structuralFeature="_fPzFIOxPEeWP6eN_6Zcgmw" isReplaceAll="true">

-            <object xmi:type="uml:InputPin" xmi:id="_wBHPwOxbEeWP6eN_6Zcgmw" name="object" incoming="_7O4IsOxbEeWP6eN_6Zcgmw" type="_aKy6MOxPEeWP6eN_6Zcgmw"/>

-            <result xmi:type="uml:OutputPin" xmi:id="_wBH20OxbEeWP6eN_6Zcgmw" name="result" type="_aKy6MOxPEeWP6eN_6Zcgmw"/>

-            <value xmi:type="uml:InputPin" xmi:id="_wBJE8OxbEeWP6eN_6Zcgmw" name="value" incoming="_8vTZoOxbEeWP6eN_6Zcgmw">

-              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>

-            </value>

-          </node>

-          <node xmi:type="uml:AcceptEventAction" xmi:id="_maTQEOxnEeWP6eN_6Zcgmw" name="Change on x" incoming="_06MoIOxnEeWP6eN_6Zcgmw" outgoing="_pBriAOxnEeWP6eN_6Zcgmw __m4NQOxnEeWP6eN_6Zcgmw">

-            <trigger xmi:type="uml:Trigger" xmi:id="_uNCzoOxnEeWP6eN_6Zcgmw" event="_ZAf9YOxnEeWP6eN_6Zcgmw"/>

-          </node>

-          <node xmi:type="uml:InitialNode" xmi:id="_yyR5YOxnEeWP6eN_6Zcgmw" name="InitialNode1" outgoing="_06MoIOxnEeWP6eN_6Zcgmw"/>

-          <node xmi:type="uml:AcceptEventAction" xmi:id="_2fvCkOxnEeWP6eN_6Zcgmw" name="After 0.5" incoming="__m4NQOxnEeWP6eN_6Zcgmw" outgoing="_C_egwOxoEeWP6eN_6Zcgmw">

-            <trigger xmi:type="uml:Trigger" xmi:id="_6t328OxnEeWP6eN_6Zcgmw" event="_e07aIOxnEeWP6eN_6Zcgmw"/>

-          </node>

-          <node xmi:type="uml:ActivityFinalNode" xmi:id="_LGz0QOxoEeWP6eN_6Zcgmw" name="ActivityFinalNode1" incoming="_OKK3kOxoEeWP6eN_6Zcgmw"/>

-        </ownedBehavior>

-        <ownedOperation xmi:type="uml:Operation" xmi:id="_QQv2cOxQEeWP6eN_6Zcgmw" name="compare" method="_1TmzMOxSEeWP6eN_6Zcgmw">

-          <ownedParameter xmi:type="uml:Parameter" xmi:id="_TS_fcOxQEeWP6eN_6Zcgmw" name="v">

-            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>

-          </ownedParameter>

-          <ownedParameter xmi:type="uml:Parameter" xmi:id="_cnRuQOxQEeWP6eN_6Zcgmw" name="result" direction="return">

-            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>

-          </ownedParameter>

-        </ownedOperation>

-      </packagedElement>

-      <packagedElement xmi:type="uml:Package" xmi:id="_XF7HEOxnEeWP6eN_6Zcgmw" name="Events">

-        <packagedElement xmi:type="uml:ChangeEvent" xmi:id="_ZAf9YOxnEeWP6eN_6Zcgmw" name="Change on x">

-          <changeExpression xmi:type="uml:LiteralString" xmi:id="_bv_pgOxnEeWP6eN_6Zcgmw" name="x" value="x"/>

-        </packagedElement>

-        <packagedElement xmi:type="uml:TimeEvent" xmi:id="_e07aIOxnEeWP6eN_6Zcgmw" name="After 0.5" isRelative="true">

-          <when xmi:type="uml:TimeExpression" xmi:id="_iZoP8OxnEeWP6eN_6Zcgmw">

-            <expr xmi:type="uml:LiteralReal" xmi:id="_iZoP8exnEeWP6eN_6Zcgmw" value="0.5"/>

-          </when>

-        </packagedElement>

-      </packagedElement>

-    </packagedElement>

-    <packagedElement xmi:type="uml:Package" xmi:id="_ZoWm0CZrEeaNDtUa3wAGMw" name="Change events">

-      <packagedElement xmi:type="uml:Package" xmi:id="_FSdyICZzEeaNDtUa3wAGMw" name="Example 1">

-        <packagedElement xmi:type="uml:Class" xmi:id="_JlBzgCZzEeaNDtUa3wAGMw" name="A" classifierBehavior="_JlBzoiZzEeaNDtUa3wAGMw" isActive="true">

-          <ownedAttribute xmi:type="uml:Property" xmi:id="_JlBzgSZzEeaNDtUa3wAGMw" name="inBoolean">

-            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>

-            <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_POvYkCZ0Eea_2cPCpxkxZw"/>

-          </ownedAttribute>

-          <ownedAttribute xmi:type="uml:Property" xmi:id="_u1kR0CZzEeaNDtUa3wAGMw" name="inInteger">

-            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>

-            <defaultValue xmi:type="uml:LiteralInteger" xmi:id="_2SHi8CZzEeaNDtUa3wAGMw"/>

-          </ownedAttribute>

-          <ownedAttribute xmi:type="uml:Property" xmi:id="_vKYEMCZzEeaNDtUa3wAGMw" name="inReal">

-            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>

-            <defaultValue xmi:type="uml:LiteralReal" xmi:id="_-YlTwCZzEeaNDtUa3wAGMw"/>

-          </ownedAttribute>

-          <ownedAttribute xmi:type="uml:Property" xmi:id="_vdnJQCZzEeaNDtUa3wAGMw" name="inString">

-            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>

-            <defaultValue xmi:type="uml:LiteralString" xmi:id="_Ma1GgCZ0Eea_2cPCpxkxZw" value=""/>

-          </ownedAttribute>

-          <ownedAttribute xmi:type="uml:Property" xmi:id="_JlBzgyZzEeaNDtUa3wAGMw" name="outBoolean">

-            <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>

-            <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_JlBzhCZzEeaNDtUa3wAGMw"/>

-          </ownedAttribute>

-          <ownedBehavior xmi:type="uml:Activity" xmi:id="_JlBzoiZzEeaNDtUa3wAGMw" name="Classifier Behavior" node="_JlBzvSZzEeaNDtUa3wAGMw _JlBzvyZzEeaNDtUa3wAGMw _JlBzwCZzEeaNDtUa3wAGMw _JlBzzSZzEeaNDtUa3wAGMw _JlBz0SZzEeaNDtUa3wAGMw _UabZUCZ_Eea7EYxrzn_7lA _22aU0CcNEeaoMtQifi-PpA _9Ryc0CcNEeaoMtQifi-PpA _fbJu0CcOEeaoMtQifi-PpA">

-            <ownedComment xmi:type="uml:Comment" xmi:id="_JlBzoyZzEeaNDtUa3wAGMw" annotatedElement="_JlBzwCZzEeaNDtUa3wAGMw">

-              <body>ReadStructuralFeatureValueAction&#xD;

-Reading input value on inBoolean</body>

-            </ownedComment>

-            <ownedComment xmi:type="uml:Comment" xmi:id="_JlBzpSZzEeaNDtUa3wAGMw" annotatedElement="_JlBzzSZzEeaNDtUa3wAGMw">

-              <body>AddStructuralFeatureValueAction&#xD;

-Writing output value on outBoolean</body>

-            </ownedComment>

-            <edge xmi:type="uml:ObjectFlow" xmi:id="_JlBzpiZzEeaNDtUa3wAGMw" target="_JlBzwSZzEeaNDtUa3wAGMw" source="_JlBzvyZzEeaNDtUa3wAGMw">

-              <guard xmi:type="uml:LiteralBoolean" xmi:id="_JlBzpyZzEeaNDtUa3wAGMw" value="true"/>

-              <weight xmi:type="uml:LiteralInteger" xmi:id="_JlBzqCZzEeaNDtUa3wAGMw" value="1"/>

-            </edge>

-            <edge xmi:type="uml:ObjectFlow" xmi:id="_JlBzryZzEeaNDtUa3wAGMw" target="_JlBzvyZzEeaNDtUa3wAGMw" source="_JlBzviZzEeaNDtUa3wAGMw">

-              <guard xmi:type="uml:LiteralBoolean" xmi:id="_JlBzsCZzEeaNDtUa3wAGMw" value="true"/>

-              <weight xmi:type="uml:LiteralInteger" xmi:id="_JlBzsSZzEeaNDtUa3wAGMw" value="1"/>

-            </edge>

-            <edge xmi:type="uml:ObjectFlow" xmi:id="_4D3_ACZ0Eea_2cPCpxkxZw" target="_JlBzziZzEeaNDtUa3wAGMw" source="_JlBzvyZzEeaNDtUa3wAGMw">

-              <guard xmi:type="uml:LiteralBoolean" xmi:id="_4Ej7gCZ0Eea_2cPCpxkxZw" value="true"/>

-              <weight xmi:type="uml:LiteralInteger" xmi:id="_4EkikCZ0Eea_2cPCpxkxZw" value="1"/>

-            </edge>

-            <edge xmi:type="uml:ObjectFlow" xmi:id="_5_BdECZ0Eea_2cPCpxkxZw" target="_JlBz0CZzEeaNDtUa3wAGMw" source="_JlBzwiZzEeaNDtUa3wAGMw">

-              <guard xmi:type="uml:LiteralBoolean" xmi:id="_5_jBgCZ0Eea_2cPCpxkxZw" value="true"/>

-              <weight xmi:type="uml:LiteralInteger" xmi:id="_5_jokCZ0Eea_2cPCpxkxZw" value="1"/>

-            </edge>

-            <edge xmi:type="uml:ControlFlow" xmi:id="_KGrWgCcMEeaoMtQifi-PpA" target="_9Ryc0CcNEeaoMtQifi-PpA" source="_UabZUCZ_Eea7EYxrzn_7lA"/>

-            <edge xmi:type="uml:ControlFlow" xmi:id="_K8VzMCcMEeaoMtQifi-PpA" target="_9Ryc0CcNEeaoMtQifi-PpA" source="_JlBz0SZzEeaNDtUa3wAGMw"/>

-            <edge xmi:type="uml:ControlFlow" xmi:id="_L-1yACcMEeaoMtQifi-PpA" target="_JlBzvSZzEeaNDtUa3wAGMw" source="_9Ryc0CcNEeaoMtQifi-PpA"/>

-            <edge xmi:type="uml:ControlFlow" xmi:id="_C9O8sCcOEeaoMtQifi-PpA" target="_9Ryc0CcNEeaoMtQifi-PpA" source="_22aU0CcNEeaoMtQifi-PpA"/>

-            <edge xmi:type="uml:ControlFlow" xmi:id="_ljipYCcOEeaoMtQifi-PpA" target="_9Ryc0CcNEeaoMtQifi-PpA" source="_fbJu0CcOEeaoMtQifi-PpA"/>

-            <node xmi:type="uml:ReadSelfAction" xmi:id="_JlBzvSZzEeaNDtUa3wAGMw" name="self" incoming="_L-1yACcMEeaoMtQifi-PpA">

-              <result xmi:type="uml:OutputPin" xmi:id="_JlBzviZzEeaNDtUa3wAGMw" name="result" outgoing="_JlBzryZzEeaNDtUa3wAGMw" type="_JlBzoiZzEeaNDtUa3wAGMw"/>

-            </node>

-            <node xmi:type="uml:ForkNode" xmi:id="_JlBzvyZzEeaNDtUa3wAGMw" name="ForkNode1" incoming="_JlBzryZzEeaNDtUa3wAGMw" outgoing="_JlBzpiZzEeaNDtUa3wAGMw _4D3_ACZ0Eea_2cPCpxkxZw"/>

-            <node xmi:type="uml:ReadStructuralFeatureAction" xmi:id="_JlBzwCZzEeaNDtUa3wAGMw" name="read inBoolean" structuralFeature="_JlBzgSZzEeaNDtUa3wAGMw">

-              <object xmi:type="uml:InputPin" xmi:id="_JlBzwSZzEeaNDtUa3wAGMw" name="object" incoming="_JlBzpiZzEeaNDtUa3wAGMw" type="_JlBzgCZzEeaNDtUa3wAGMw"/>

-              <result xmi:type="uml:OutputPin" xmi:id="_JlBzwiZzEeaNDtUa3wAGMw" name="x" outgoing="_5_BdECZ0Eea_2cPCpxkxZw">

-                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>

-                <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JlBzwyZzEeaNDtUa3wAGMw" value="1"/>

-                <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JlBzxCZzEeaNDtUa3wAGMw" value="1"/>

-              </result>

-            </node>

-            <node xmi:type="uml:AddStructuralFeatureValueAction" xmi:id="_JlBzzSZzEeaNDtUa3wAGMw" name="set outBoolean" structuralFeature="_JlBzgyZzEeaNDtUa3wAGMw" isReplaceAll="true">

-              <object xmi:type="uml:InputPin" xmi:id="_JlBzziZzEeaNDtUa3wAGMw" name="object" incoming="_4D3_ACZ0Eea_2cPCpxkxZw" type="_JlBzgCZzEeaNDtUa3wAGMw"/>

-              <result xmi:type="uml:OutputPin" xmi:id="_JlBzzyZzEeaNDtUa3wAGMw" name="result" type="_JlBzgCZzEeaNDtUa3wAGMw"/>

-              <value xmi:type="uml:InputPin" xmi:id="_JlBz0CZzEeaNDtUa3wAGMw" name="value" incoming="_5_BdECZ0Eea_2cPCpxkxZw">

-                <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>

-              </value>

-            </node>

-            <node xmi:type="uml:AcceptEventAction" xmi:id="_JlBz0SZzEeaNDtUa3wAGMw" name="Change on inBoolean" outgoing="_K8VzMCcMEeaoMtQifi-PpA">

-              <trigger xmi:type="uml:Trigger" xmi:id="_JlBz0iZzEeaNDtUa3wAGMw" event="_jtOEYCZzEeaNDtUa3wAGMw"/>

-            </node>

-            <node xmi:type="uml:AcceptEventAction" xmi:id="_UabZUCZ_Eea7EYxrzn_7lA" name="Change on inReal" outgoing="_KGrWgCcMEeaoMtQifi-PpA">

-              <result xmi:type="uml:OutputPin" xmi:id="_IWb9YCcLEeaoMtQifi-PpA" name="result">

-                <upperBound xmi:type="uml:LiteralInteger" xmi:id="_IWp_0CcLEeaoMtQifi-PpA" value="1"/>

-              </result>

-              <trigger xmi:type="uml:Trigger" xmi:id="_UabZUSZ_Eea7EYxrzn_7lA" event="_Dt-qICZ_Eea7EYxrzn_7lA"/>

-            </node>

-            <node xmi:type="uml:AcceptEventAction" xmi:id="_22aU0CcNEeaoMtQifi-PpA" name="Change on inInteger" outgoing="_C9O8sCcOEeaoMtQifi-PpA">

-              <result xmi:type="uml:OutputPin" xmi:id="_22aU0ScNEeaoMtQifi-PpA" name="result">

-                <upperBound xmi:type="uml:LiteralInteger" xmi:id="_22aU0icNEeaoMtQifi-PpA" value="1"/>

-              </result>

-              <trigger xmi:type="uml:Trigger" xmi:id="_22aU0ycNEeaoMtQifi-PpA" event="_iH1M8CcNEeaoMtQifi-PpA"/>

-            </node>

-            <node xmi:type="uml:MergeNode" xmi:id="_9Ryc0CcNEeaoMtQifi-PpA" name="MergeNode1" incoming="_KGrWgCcMEeaoMtQifi-PpA _K8VzMCcMEeaoMtQifi-PpA _C9O8sCcOEeaoMtQifi-PpA _ljipYCcOEeaoMtQifi-PpA" outgoing="_L-1yACcMEeaoMtQifi-PpA"/>

-            <node xmi:type="uml:AcceptEventAction" xmi:id="_fbJu0CcOEeaoMtQifi-PpA" name="Change on inString" outgoing="_ljipYCcOEeaoMtQifi-PpA">

-              <result xmi:type="uml:OutputPin" xmi:id="_fbJu0ScOEeaoMtQifi-PpA" name="result">

-                <upperBound xmi:type="uml:LiteralInteger" xmi:id="_fbJu0icOEeaoMtQifi-PpA" value="1"/>

-              </result>

-              <trigger xmi:type="uml:Trigger" xmi:id="_fbJu0ycOEeaoMtQifi-PpA" event="_Y0vbgCcOEeaoMtQifi-PpA"/>

-            </node>

-          </ownedBehavior>

-        </packagedElement>

-        <packagedElement xmi:type="uml:Package" xmi:id="_L51HsCZzEeaNDtUa3wAGMw" name="Events">

-          <packagedElement xmi:type="uml:ChangeEvent" xmi:id="_jtOEYCZzEeaNDtUa3wAGMw" name="Change on inBoolean">

-            <changeExpression xmi:type="uml:LiteralString" xmi:id="_jtOEYSZzEeaNDtUa3wAGMw" name="inBoolean" value="inBoolean"/>

-          </packagedElement>

-          <packagedElement xmi:type="uml:ChangeEvent" xmi:id="_Dt-qICZ_Eea7EYxrzn_7lA" name="Change on inReal">

-            <changeExpression xmi:type="uml:LiteralString" xmi:id="_Dt_RMCZ_Eea7EYxrzn_7lA" name="inReal" value="inReal"/>

-          </packagedElement>

-          <packagedElement xmi:type="uml:ChangeEvent" xmi:id="_iH1M8CcNEeaoMtQifi-PpA" name="Change on inInteger">

-            <changeExpression xmi:type="uml:LiteralString" xmi:id="_iH1M8ScNEeaoMtQifi-PpA" name="inInteger" value="inInteger"/>

-          </packagedElement>

-          <packagedElement xmi:type="uml:ChangeEvent" xmi:id="_Y0vbgCcOEeaoMtQifi-PpA" name="Change on inString">

-            <changeExpression xmi:type="uml:LiteralString" xmi:id="_Y0vbgScOEeaoMtQifi-PpA" name="inString" value="inString"/>

-          </packagedElement>

-        </packagedElement>

-      </packagedElement>

-    </packagedElement>

-    <packagedElement xmi:type="uml:Package" xmi:id="_VS2YMCl2Eeaq4LUBd_Y9sA" name="Events"/>

-    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_CmL5wMXWEeWwx_puHDzFYw">

-      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CmQLMMXWEeWwx_puHDzFYw" source="http://www.eclipse.org/uml2/2.0.0/UML">

-        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/uml2/5.0.0/UML/Profile/Standard#/"/>

-      </eAnnotations>

-      <appliedProfile xmi:type="uml:Profile" href="pathmap://UML_PROFILES/Standard.profile.uml#_0"/>

-    </profileApplication>

-    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_W_MKQMaGEeWfFdnv26Efug">

-      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_W_OmgMaGEeWfFdnv26Efug" source="http://www.eclipse.org/uml2/2.0.0/UML">

-        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/uml2/5.0.0/UML/Profile/Standard#/"/>

-      </eAnnotations>

-      <appliedProfile xmi:type="uml:Profile" href="pathmap://UML_PROFILES/Standard.profile.uml#_0"/>

-    </profileApplication>

-    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_5nyw0M44EeW5W4GIqJpyFA">

-      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5n10IM44EeW5W4GIqJpyFA" source="PapyrusVersion">

-        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5n10Ic44EeW5W4GIqJpyFA" key="Version" value="0.0.69"/>

-        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5n10Is44EeW5W4GIqJpyFA" key="Comment" value=""/>

-        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5n10I844EeW5W4GIqJpyFA" key="Copyright" value=""/>

-        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5n10JM44EeW5W4GIqJpyFA" key="Date" value="2015-12-09"/>

-        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5n10Jc44EeW5W4GIqJpyFA" key="Author" value=""/>

-      </eAnnotations>

-      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5n0mAM44EeW5W4GIqJpyFA" source="http://www.eclipse.org/uml2/2.0.0/UML">

-        <references xmi:type="ecore:EPackage" href="pathmap://FmiML_PROFILE/FmiML.profile.uml#_fW3TcJ5QEeW4hpViu084wQ"/>

-      </eAnnotations>

-      <appliedProfile xmi:type="uml:Profile" href="pathmap://FmiML_PROFILE/FmiML.profile.uml#__Ki3oKvFEeSXqKqlHzx1gA"/>

-    </profileApplication>

-    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_LvJdwBwXEea0GMhvQ4xFnA"/>

-    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_cbF5cCMkEea2OavBPNFsjQ"/>

-    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_UhSFsCZzEeaNDtUa3wAGMw">

-      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_UhVJACZzEeaNDtUa3wAGMw" source="http://www.eclipse.org/uml2/2.0.0/UML">

-        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/FMIProfile/1.0.0#/"/>

-      </eAnnotations>

-      <appliedProfile xmi:type="uml:Profile" href="pathmap://PAPYRUS_FMI_PROFILE/FMI.profile.uml#__Ki3oKvFEeSXqKqlHzx1gA"/>

-    </profileApplication>

-  </uml:Model>

-  <standard:Create xmi:id="_CotCQMXWEeWwx_puHDzFYw" base_BehavioralFeature="_ColtgMXWEeWwx_puHDzFYw"/>

-  <standard:Create xmi:id="_XBc0EMaGEeWfFdnv26Efug" base_BehavioralFeature="_XBWGYMaGEeWfFdnv26Efug"/>

-  <fmiprofile:CS_FMU xmi:id="_8VtIkM44EeW5W4GIqJpyFA" base_Class="_NO0UEMXQEeWwx_puHDzFYw" canNotUseMemoryManagementFunctions="true" canHandleVariableCommunicationStepSize="true"/>

-  <fmiprofile:CS_FMU xmi:id="_-41MoM44EeW5W4GIqJpyFA" base_Class="_V9MCEMaDEeWfFdnv26Efug"/>

-  <fmiprofile:Port xmi:id="_IFSVIM45EeW5W4GIqJpyFA" base_Property="_RUkBcMXQEeWwx_puHDzFYw" description="" variability="discrete" valueReference="1" direction="out"/>

-  <fmiprofile:Port xmi:id="_TZaUwM45EeW5W4GIqJpyFA" base_Property="_auAFsMaDEeWfFdnv26Efug" variability="discrete" direction="out"/>

-  <fmiprofile:Port xmi:id="_WYYAQM45EeW5W4GIqJpyFA" base_Property="_wQ2jIMaDEeWfFdnv26Efug" variability="discrete" valueReference="1" direction="out"/>

-  <fmiprofile:CS_FMU xmi:id="_b3AkYOxPEeWP6eN_6Zcgmw" base_Class="_aKy6MOxPEeWP6eN_6Zcgmw"/>

-  <fmiprofile:Port xmi:id="_7DE-0OxPEeWP6eN_6Zcgmw" base_Property="_eG3HIOxPEeWP6eN_6Zcgmw"/>

-  <fmiprofile:Port xmi:id="_9AJIcOxPEeWP6eN_6Zcgmw" base_Property="_fPzFIOxPEeWP6eN_6Zcgmw" valueReference="1" direction="out"/>

-  <fmiprofile:Port xmi:id="_st_hUCZzEeaNDtUa3wAGMw" base_Property="_JlBzgSZzEeaNDtUa3wAGMw"/>

-  <fmiprofile:Port xmi:id="_u1muECZzEeaNDtUa3wAGMw" base_Property="_u1kR0CZzEeaNDtUa3wAGMw" valueReference="1"/>

-  <fmiprofile:Port xmi:id="_vKZSUCZzEeaNDtUa3wAGMw" base_Property="_vKYEMCZzEeaNDtUa3wAGMw" valueReference="2"/>

-  <fmiprofile:Port xmi:id="_vdoXYCZzEeaNDtUa3wAGMw" base_Property="_vdnJQCZzEeaNDtUa3wAGMw" valueReference="3"/>

-  <fmiprofile:Port xmi:id="_c2kgMCZ0Eea_2cPCpxkxZw" base_Property="_JlBzgyZzEeaNDtUa3wAGMw" valueReference="4" direction="out"/>

-  <fmiprofile:CS_FMU xmi:id="_QHg-MCZ1Eea_2cPCpxkxZw" base_Class="_JlBzgCZzEeaNDtUa3wAGMw"/>

-</xmi:XMI>

diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/fmu_build/resources/TankBarrelExample.di b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/fmu_build/resources/TankBarrelExample.di
deleted file mode 100644
index 8634d4c..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/fmu_build/resources/TankBarrelExample.di
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI"/>

diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/fmu_build/resources/TankBarrelExample.notation b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/fmu_build/resources/TankBarrelExample.notation
deleted file mode 100644
index 54d7632..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/fmu_build/resources/TankBarrelExample.notation
+++ /dev/null
@@ -1,1580 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:configuration="http://www.eclipse.org/papyrus/infra/viewpoints/configuration" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
-  <notation:Diagram xmi:id="_DEi4cMXQEeWwx_puHDzFYw" type="PapyrusUMLClassDiagram" name="Class diagram" measurementUnit="Pixel">
-    <children xmi:type="notation:Shape" xmi:id="_NO-FEMXQEeWwx_puHDzFYw" type="2008">
-      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZGsJoMaDEeWfFdnv26Efug" source="PapyrusCSSForceValue">
-        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZGsJocaDEeWfFdnv26Efug" key="visible" value="true"/>
-      </eAnnotations>
-      <children xmi:type="notation:DecorationNode" xmi:id="_NO-sIMXQEeWwx_puHDzFYw" type="5029">
-        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZGsJosaDEeWfFdnv26Efug" source="PapyrusCSSForceValue">
-          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZGsJo8aDEeWfFdnv26Efug" key="visible" value="true"/>
-        </eAnnotations>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_NO-sIcXQEeWwx_puHDzFYw" type="8510">
-        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZGswsMaDEeWfFdnv26Efug" source="PapyrusCSSForceValue">
-          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZGswscaDEeWfFdnv26Efug" key="visible" value="true"/>
-        </eAnnotations>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_NO-sIsXQEeWwx_puHDzFYw" y="5"/>
-      </children>
-      <children xmi:type="notation:BasicCompartment" xmi:id="_NO_TMMXQEeWwx_puHDzFYw" type="7017">
-        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZGswssaDEeWfFdnv26Efug" source="PapyrusCSSForceValue">
-          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZGsws8aDEeWfFdnv26Efug" key="visible" value="true"/>
-        </eAnnotations>
-        <children xmi:type="notation:Shape" xmi:id="_RUqvIMXQEeWwx_puHDzFYw" type="3012">
-          <children xmi:type="notation:BasicCompartment" xmi:id="_IFX0s845EeW5W4GIqJpyFA" type="StereotypeBrace">
-            <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_PruiEM45EeW5W4GIqJpyFA" source="PapyrusCSSForceValue">
-              <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PruiEc45EeW5W4GIqJpyFA" key="visible" value="true"/>
-            </eAnnotations>
-            <styles xmi:type="notation:TitleStyle" xmi:id="_IFX0tM45EeW5W4GIqJpyFA" showTitle="true"/>
-            <styles xmi:type="notation:StringValueStyle" xmi:id="_IFX0tc45EeW5W4GIqJpyFA" name="stereotype" stringValue="FmiMLProfile::Port"/>
-            <element xmi:type="uml:Stereotype" href="pathmap://FmiML_PROFILE/FmiML.profile.uml#_0Ab54OyjEeSEBKJWDCrAIQ"/>
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IFX0ts45EeW5W4GIqJpyFA"/>
-          </children>
-          <styles xmi:type="notation:StringListValueStyle" xmi:id="_XSQu8MXQEeWwx_puHDzFYw" name="maskLabel">
-            <stringListValue>multiplicity</stringListValue>
-            <stringListValue>visibility</stringListValue>
-            <stringListValue>defaultValue</stringListValue>
-            <stringListValue>name</stringListValue>
-            <stringListValue>type</stringListValue>
-            <stringListValue>derived</stringListValue>
-          </styles>
-          <element xmi:type="uml:Property" href="TankBarrelExample.uml#_RUkBcMXQEeWwx_puHDzFYw"/>
-          <layoutConstraint xmi:type="notation:Location" xmi:id="_RUqvIcXQEeWwx_puHDzFYw"/>
-        </children>
-        <styles xmi:type="notation:TitleStyle" xmi:id="_NO_TMcXQEeWwx_puHDzFYw"/>
-        <styles xmi:type="notation:SortingStyle" xmi:id="_NO_TMsXQEeWwx_puHDzFYw"/>
-        <styles xmi:type="notation:FilteringStyle" xmi:id="_NO_TM8XQEeWwx_puHDzFYw"/>
-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NO_TNMXQEeWwx_puHDzFYw"/>
-      </children>
-      <children xmi:type="notation:BasicCompartment" xmi:id="_NO_TNcXQEeWwx_puHDzFYw" visible="false" type="7018">
-        <styles xmi:type="notation:TitleStyle" xmi:id="_NO_TNsXQEeWwx_puHDzFYw"/>
-        <styles xmi:type="notation:SortingStyle" xmi:id="_NO_TN8XQEeWwx_puHDzFYw"/>
-        <styles xmi:type="notation:FilteringStyle" xmi:id="_NO_TOMXQEeWwx_puHDzFYw"/>
-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NO_TOcXQEeWwx_puHDzFYw"/>
-      </children>
-      <children xmi:type="notation:BasicCompartment" xmi:id="_NO_TOsXQEeWwx_puHDzFYw" visible="false" type="7019">
-        <styles xmi:type="notation:TitleStyle" xmi:id="_NO_TO8XQEeWwx_puHDzFYw"/>
-        <styles xmi:type="notation:SortingStyle" xmi:id="_NO_TPMXQEeWwx_puHDzFYw"/>
-        <styles xmi:type="notation:FilteringStyle" xmi:id="_NO_TPcXQEeWwx_puHDzFYw"/>
-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NO_TPsXQEeWwx_puHDzFYw"/>
-      </children>
-      <element xmi:type="uml:Class" href="TankBarrelExample.uml#_NO0UEMXQEeWwx_puHDzFYw"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NO-FEcXQEeWwx_puHDzFYw" x="177" y="211" width="382" height="141"/>
-    </children>
-    <children xmi:type="notation:Shape" xmi:id="_V-PyAMaDEeWfFdnv26Efug" type="2008">
-      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZGptYMaDEeWfFdnv26Efug" source="PapyrusCSSForceValue">
-        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZGqUcMaDEeWfFdnv26Efug" key="visible" value="true"/>
-      </eAnnotations>
-      <children xmi:type="notation:DecorationNode" xmi:id="_V-RnMMaDEeWfFdnv26Efug" type="5029">
-        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZGq7gMaDEeWfFdnv26Efug" source="PapyrusCSSForceValue">
-          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZGq7gcaDEeWfFdnv26Efug" key="visible" value="true"/>
-        </eAnnotations>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_V-RnMcaDEeWfFdnv26Efug" type="8510">
-        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZGq7gsaDEeWfFdnv26Efug" source="PapyrusCSSForceValue">
-          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZGq7g8aDEeWfFdnv26Efug" key="visible" value="true"/>
-        </eAnnotations>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_V-RnMsaDEeWfFdnv26Efug" y="5"/>
-      </children>
-      <children xmi:type="notation:BasicCompartment" xmi:id="_V-SOQMaDEeWfFdnv26Efug" type="7017">
-        <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZGq7hMaDEeWfFdnv26Efug" source="PapyrusCSSForceValue">
-          <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZGq7hcaDEeWfFdnv26Efug" key="visible" value="true"/>
-        </eAnnotations>
-        <children xmi:type="notation:Shape" xmi:id="_auLr4MaDEeWfFdnv26Efug" type="3012">
-          <children xmi:type="notation:BasicCompartment" xmi:id="_TZf0U845EeW5W4GIqJpyFA" type="StereotypeBrace">
-            <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_aSMxgM45EeW5W4GIqJpyFA" source="PapyrusCSSForceValue">
-              <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_aSMxgc45EeW5W4GIqJpyFA" key="visible" value="true"/>
-            </eAnnotations>
-            <styles xmi:type="notation:TitleStyle" xmi:id="_TZf0VM45EeW5W4GIqJpyFA" showTitle="true"/>
-            <styles xmi:type="notation:StringValueStyle" xmi:id="_TZf0Vc45EeW5W4GIqJpyFA" name="stereotype" stringValue="FmiMLProfile::Port"/>
-            <element xmi:type="uml:Stereotype" href="pathmap://FmiML_PROFILE/FmiML.profile.uml#_0Ab54OyjEeSEBKJWDCrAIQ"/>
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_TZf0Vs45EeW5W4GIqJpyFA"/>
-          </children>
-          <styles xmi:type="notation:StringListValueStyle" xmi:id="_u66D4MaDEeWfFdnv26Efug" name="maskLabel">
-            <stringListValue>multiplicity</stringListValue>
-            <stringListValue>visibility</stringListValue>
-            <stringListValue>defaultValue</stringListValue>
-            <stringListValue>name</stringListValue>
-            <stringListValue>type</stringListValue>
-            <stringListValue>derived</stringListValue>
-          </styles>
-          <element xmi:type="uml:Property" href="TankBarrelExample.uml#_auAFsMaDEeWfFdnv26Efug"/>
-          <layoutConstraint xmi:type="notation:Location" xmi:id="_auLr4caDEeWfFdnv26Efug"/>
-        </children>
-        <children xmi:type="notation:Shape" xmi:id="_wRAUIMaDEeWfFdnv26Efug" type="3012">
-          <children xmi:type="notation:BasicCompartment" xmi:id="_WYc4w845EeW5W4GIqJpyFA" type="StereotypeBrace">
-            <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_audPsM45EeW5W4GIqJpyFA" source="PapyrusCSSForceValue">
-              <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_audPsc45EeW5W4GIqJpyFA" key="visible" value="true"/>
-            </eAnnotations>
-            <styles xmi:type="notation:TitleStyle" xmi:id="_WYc4xM45EeW5W4GIqJpyFA" showTitle="true"/>
-            <styles xmi:type="notation:StringValueStyle" xmi:id="_WYc4xc45EeW5W4GIqJpyFA" name="stereotype" stringValue="FmiMLProfile::Port"/>
-            <element xmi:type="uml:Stereotype" href="pathmap://FmiML_PROFILE/FmiML.profile.uml#_0Ab54OyjEeSEBKJWDCrAIQ"/>
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WYc4xs45EeW5W4GIqJpyFA"/>
-          </children>
-          <styles xmi:type="notation:StringListValueStyle" xmi:id="_y9iL0MaDEeWfFdnv26Efug" name="maskLabel">
-            <stringListValue>multiplicity</stringListValue>
-            <stringListValue>visibility</stringListValue>
-            <stringListValue>defaultValue</stringListValue>
-            <stringListValue>name</stringListValue>
-            <stringListValue>type</stringListValue>
-            <stringListValue>derived</stringListValue>
-          </styles>
-          <element xmi:type="uml:Property" href="TankBarrelExample.uml#_wQ2jIMaDEeWfFdnv26Efug"/>
-          <layoutConstraint xmi:type="notation:Location" xmi:id="_wRAUIcaDEeWfFdnv26Efug"/>
-        </children>
-        <styles xmi:type="notation:TitleStyle" xmi:id="_V-SOQcaDEeWfFdnv26Efug"/>
-        <styles xmi:type="notation:SortingStyle" xmi:id="_V-SOQsaDEeWfFdnv26Efug"/>
-        <styles xmi:type="notation:FilteringStyle" xmi:id="_V-SOQ8aDEeWfFdnv26Efug"/>
-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V-SORMaDEeWfFdnv26Efug"/>
-      </children>
-      <children xmi:type="notation:BasicCompartment" xmi:id="_V-SORcaDEeWfFdnv26Efug" visible="false" type="7018">
-        <styles xmi:type="notation:TitleStyle" xmi:id="_V-SORsaDEeWfFdnv26Efug"/>
-        <styles xmi:type="notation:SortingStyle" xmi:id="_V-SOR8aDEeWfFdnv26Efug"/>
-        <styles xmi:type="notation:FilteringStyle" xmi:id="_V-SOSMaDEeWfFdnv26Efug"/>
-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V-SOScaDEeWfFdnv26Efug"/>
-      </children>
-      <children xmi:type="notation:BasicCompartment" xmi:id="_V-SOSsaDEeWfFdnv26Efug" visible="false" type="7019">
-        <styles xmi:type="notation:TitleStyle" xmi:id="_V-SOS8aDEeWfFdnv26Efug"/>
-        <styles xmi:type="notation:SortingStyle" xmi:id="_V-SOTMaDEeWfFdnv26Efug"/>
-        <styles xmi:type="notation:FilteringStyle" xmi:id="_V-SOTcaDEeWfFdnv26Efug"/>
-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V-SOTsaDEeWfFdnv26Efug"/>
-      </children>
-      <element xmi:type="uml:Class" href="TankBarrelExample.uml#_V9MCEMaDEeWfFdnv26Efug"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V-PyAcaDEeWfFdnv26Efug" x="177" y="425" width="378" height="141"/>
-    </children>
-    <children xmi:type="notation:Shape" xmi:id="_8Wa6QM44EeW5W4GIqJpyFA" type="StereotypeComment">
-      <styles xmi:type="notation:TitleStyle" xmi:id="_8Wa6Qc44EeW5W4GIqJpyFA" showTitle="true"/>
-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_8Wa6Q844EeW5W4GIqJpyFA" name="BASE_ELEMENT">
-        <eObjectValue xmi:type="uml:Class" href="TankBarrelExample.uml#_NO0UEMXQEeWwx_puHDzFYw"/>
-      </styles>
-      <element xsi:nil="true"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8Wa6Qs44EeW5W4GIqJpyFA" x="377" y="211"/>
-    </children>
-    <children xmi:type="notation:Shape" xmi:id="_-5DPEM44EeW5W4GIqJpyFA" type="StereotypeComment">
-      <styles xmi:type="notation:TitleStyle" xmi:id="_-5DPEc44EeW5W4GIqJpyFA" showTitle="true"/>
-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_-5D2IM44EeW5W4GIqJpyFA" name="BASE_ELEMENT">
-        <eObjectValue xmi:type="uml:Class" href="TankBarrelExample.uml#_V9MCEMaDEeWfFdnv26Efug"/>
-      </styles>
-      <element xsi:nil="true"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-5DPEs44EeW5W4GIqJpyFA" x="377" y="425"/>
-    </children>
-    <styles xmi:type="notation:StringValueStyle" xmi:id="_DEi4ccXQEeWwx_puHDzFYw" name="diagram_compatibility_version" stringValue="1.1.0"/>
-    <styles xmi:type="notation:DiagramStyle" xmi:id="_DEi4csXQEeWwx_puHDzFYw"/>
-    <styles xmi:type="style:PapyrusViewStyle" xmi:id="_DEi4c8XQEeWwx_puHDzFYw">
-      <owner xmi:type="uml:Model" href="TankBarrelExample.uml#_q8DOcMXPEeWwx_puHDzFYw"/>
-      <configuration xmi:type="configuration:PapyrusDiagram" href="platform:/plugin/org.eclipse.papyrus.moka.simex/config/simex.configuration#_1PVVsFY9EeWcmuYjB__atg"/>
-    </styles>
-    <element xmi:type="uml:Model" href="TankBarrelExample.uml#_q8DOcMXPEeWwx_puHDzFYw"/>
-    <edges xmi:type="notation:Connector" xmi:id="_8Wa6RM44EeW5W4GIqJpyFA" type="StereotypeCommentLink" source="_NO-FEMXQEeWwx_puHDzFYw" target="_8Wa6QM44EeW5W4GIqJpyFA">
-      <styles xmi:type="notation:FontStyle" xmi:id="_8Wa6Rc44EeW5W4GIqJpyFA"/>
-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_8Wa6Sc44EeW5W4GIqJpyFA" name="BASE_ELEMENT">
-        <eObjectValue xmi:type="uml:Class" href="TankBarrelExample.uml#_NO0UEMXQEeWwx_puHDzFYw"/>
-      </styles>
-      <element xsi:nil="true"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8Wa6Rs44EeW5W4GIqJpyFA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8Wa6R844EeW5W4GIqJpyFA"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8Wa6SM44EeW5W4GIqJpyFA"/>
-    </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_-5D2Ic44EeW5W4GIqJpyFA" type="StereotypeCommentLink" source="_V-PyAMaDEeWfFdnv26Efug" target="_-5DPEM44EeW5W4GIqJpyFA">
-      <styles xmi:type="notation:FontStyle" xmi:id="_-5D2Is44EeW5W4GIqJpyFA"/>
-      <styles xmi:type="notation:EObjectValueStyle" xmi:id="_-5D2Js44EeW5W4GIqJpyFA" name="BASE_ELEMENT">
-        <eObjectValue xmi:type="uml:Class" href="TankBarrelExample.uml#_V9MCEMaDEeWfFdnv26Efug"/>
-      </styles>
-      <element xsi:nil="true"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_-5D2I844EeW5W4GIqJpyFA" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-5D2JM44EeW5W4GIqJpyFA"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-5D2Jc44EeW5W4GIqJpyFA"/>
-    </edges>
-  </notation:Diagram>
-  <notation:Diagram xmi:id="_o4hbAMXQEeWwx_puHDzFYw" type="PapyrusUMLActivityDiagram" name="C1 classifier behavior diagram" measurementUnit="Pixel">
-    <children xmi:type="notation:Shape" xmi:id="_o4hbAcXQEeWwx_puHDzFYw" type="Activity_Shape">
-      <children xmi:type="notation:DecorationNode" xmi:id="_o4iCEMXQEeWwx_puHDzFYw" type="Activity_NameLabel"/>
-      <children xmi:type="notation:BasicCompartment" xmi:id="_o4iCEsXQEeWwx_puHDzFYw" type="Activity_ParameterCompartment">
-        <styles xmi:type="notation:SortingStyle" xmi:id="_o4iCE8XQEeWwx_puHDzFYw"/>
-        <styles xmi:type="notation:FilteringStyle" xmi:id="_o4iCFMXQEeWwx_puHDzFYw"/>
-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_o4iCFcXQEeWwx_puHDzFYw"/>
-      </children>
-      <children xmi:type="notation:BasicCompartment" xmi:id="_o4iCFsXQEeWwx_puHDzFYw" type="Activity_PreconditionCompartment">
-        <styles xmi:type="notation:SortingStyle" xmi:id="_o4iCF8XQEeWwx_puHDzFYw"/>
-        <styles xmi:type="notation:FilteringStyle" xmi:id="_o4iCGMXQEeWwx_puHDzFYw"/>
-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_o4iCGcXQEeWwx_puHDzFYw"/>
-      </children>
-      <children xmi:type="notation:BasicCompartment" xmi:id="_o4iCGsXQEeWwx_puHDzFYw" type="Activity_PostconditionCompartment">
-        <styles xmi:type="notation:SortingStyle" xmi:id="_o4iCG8XQEeWwx_puHDzFYw"/>
-        <styles xmi:type="notation:FilteringStyle" xmi:id="_o4iCHMXQEeWwx_puHDzFYw"/>
-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_o4iCHcXQEeWwx_puHDzFYw"/>
-      </children>
-      <children xmi:type="notation:BasicCompartment" xmi:id="_o4iCHsXQEeWwx_puHDzFYw" type="Activity_ActivityNodeCompartment">
-        <children xmi:type="notation:Shape" xmi:id="_sRY0QMXQEeWwx_puHDzFYw" type="Comment_Shape">
-          <children xmi:type="notation:DecorationNode" xmi:id="_sRY0QsXQEeWwx_puHDzFYw" type="Comment_BodyLabel"/>
-          <element xmi:type="uml:Comment" href="TankBarrelExample.uml#_sRT7wMXQEeWwx_puHDzFYw"/>
-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sRY0QcXQEeWwx_puHDzFYw" x="484" y="88"/>
-        </children>
-        <children xmi:type="notation:Shape" xmi:id="_xrHSAMXQEeWwx_puHDzFYw" type="AcceptEventAction_Shape">
-          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_dFHB4MXREeWwx_puHDzFYw" source="PapyrusCSSForceValue">
-            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dFHB4cXREeWwx_puHDzFYw" key="mutable" value="true"/>
-          </eAnnotations>
-          <children xmi:type="notation:DecorationNode" xmi:id="_xrH5EMXQEeWwx_puHDzFYw" type="AcceptEventAction_NameLabel"/>
-          <children xmi:type="notation:DecorationNode" xmi:id="_xrH5EcXQEeWwx_puHDzFYw" type="AcceptEventAction_TriggerLabel">
-            <layoutConstraint xmi:type="notation:Location" xmi:id="_xrH5EsXQEeWwx_puHDzFYw" x="89" y="13"/>
-          </children>
-          <children xmi:type="notation:DecorationNode" xmi:id="_xrH5E8XQEeWwx_puHDzFYw" type="AcceptEventAction_StereotypeLabel">
-            <layoutConstraint xmi:type="notation:Location" xmi:id="_xrH5FMXQEeWwx_puHDzFYw" y="5"/>
-          </children>
-          <children xmi:type="notation:DecorationNode" xmi:id="_xrH5FcXQEeWwx_puHDzFYw" type="AcceptEventAction_FloatingNameLabel">
-            <layoutConstraint xmi:type="notation:Location" xmi:id="_xrH5FsXQEeWwx_puHDzFYw" y="5"/>
-          </children>
-          <children xmi:type="notation:BasicCompartment" xmi:id="_xst0gMXQEeWwx_puHDzFYw" type="compartment_shape_display">
-            <styles xmi:type="notation:TitleStyle" xmi:id="_xst0gcXQEeWwx_puHDzFYw"/>
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xst0gsXQEeWwx_puHDzFYw"/>
-          </children>
-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_xrHSAcXQEeWwx_puHDzFYw"/>
-          <element xmi:type="uml:AcceptEventAction" href="TankBarrelExample.uml#_xrAkUMXQEeWwx_puHDzFYw"/>
-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xrHSAsXQEeWwx_puHDzFYw" x="176" y="73"/>
-        </children>
-        <children xmi:type="notation:Shape" xmi:id="_x6RvYMXQEeWwx_puHDzFYw" type="AcceptEventAction_Shape">
-          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_l406QMXREeWwx_puHDzFYw" source="PapyrusCSSForceValue">
-            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_l406QcXREeWwx_puHDzFYw" key="mutable" value="true"/>
-          </eAnnotations>
-          <children xmi:type="notation:DecorationNode" xmi:id="_x6SWcMXQEeWwx_puHDzFYw" type="AcceptEventAction_NameLabel"/>
-          <children xmi:type="notation:DecorationNode" xmi:id="_x6SWccXQEeWwx_puHDzFYw" type="AcceptEventAction_TriggerLabel">
-            <layoutConstraint xmi:type="notation:Location" xmi:id="_x6SWcsXQEeWwx_puHDzFYw" x="90" y="11"/>
-          </children>
-          <children xmi:type="notation:DecorationNode" xmi:id="_x6SWc8XQEeWwx_puHDzFYw" type="AcceptEventAction_StereotypeLabel">
-            <layoutConstraint xmi:type="notation:Location" xmi:id="_x6SWdMXQEeWwx_puHDzFYw" y="5"/>
-          </children>
-          <children xmi:type="notation:DecorationNode" xmi:id="_x6SWdcXQEeWwx_puHDzFYw" type="AcceptEventAction_FloatingNameLabel">
-            <layoutConstraint xmi:type="notation:Location" xmi:id="_x6SWdsXQEeWwx_puHDzFYw" y="5"/>
-          </children>
-          <children xmi:type="notation:BasicCompartment" xmi:id="_x6a5UMXQEeWwx_puHDzFYw" type="compartment_shape_display">
-            <styles xmi:type="notation:TitleStyle" xmi:id="_x6a5UcXQEeWwx_puHDzFYw"/>
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_x6a5UsXQEeWwx_puHDzFYw"/>
-          </children>
-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_x6RvYcXQEeWwx_puHDzFYw"/>
-          <element xmi:type="uml:AcceptEventAction" href="TankBarrelExample.uml#_x6JMgMXQEeWwx_puHDzFYw"/>
-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_x6RvYsXQEeWwx_puHDzFYw" x="176" y="319"/>
-        </children>
-        <children xmi:type="notation:Shape" xmi:id="_yIP58MXQEeWwx_puHDzFYw" type="AcceptEventAction_Shape">
-          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qfzscMXREeWwx_puHDzFYw" source="PapyrusCSSForceValue">
-            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qf0TgMXREeWwx_puHDzFYw" key="mutable" value="true"/>
-          </eAnnotations>
-          <children xmi:type="notation:DecorationNode" xmi:id="_yIQhAMXQEeWwx_puHDzFYw" type="AcceptEventAction_NameLabel"/>
-          <children xmi:type="notation:DecorationNode" xmi:id="_yIQhAcXQEeWwx_puHDzFYw" type="AcceptEventAction_TriggerLabel">
-            <layoutConstraint xmi:type="notation:Location" xmi:id="_yIQhAsXQEeWwx_puHDzFYw" x="92" y="11"/>
-          </children>
-          <children xmi:type="notation:DecorationNode" xmi:id="_yIQhA8XQEeWwx_puHDzFYw" type="AcceptEventAction_StereotypeLabel">
-            <layoutConstraint xmi:type="notation:Location" xmi:id="_yIQhBMXQEeWwx_puHDzFYw" y="5"/>
-          </children>
-          <children xmi:type="notation:DecorationNode" xmi:id="_yIQhBcXQEeWwx_puHDzFYw" type="AcceptEventAction_FloatingNameLabel">
-            <layoutConstraint xmi:type="notation:Location" xmi:id="_yIQhBsXQEeWwx_puHDzFYw" y="5"/>
-          </children>
-          <children xmi:type="notation:BasicCompartment" xmi:id="_yIbgIMXQEeWwx_puHDzFYw" type="compartment_shape_display">
-            <styles xmi:type="notation:TitleStyle" xmi:id="_yIbgIcXQEeWwx_puHDzFYw"/>
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yIbgIsXQEeWwx_puHDzFYw"/>
-          </children>
-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_yIP58cXQEeWwx_puHDzFYw"/>
-          <element xmi:type="uml:AcceptEventAction" href="TankBarrelExample.uml#_yIGwAMXQEeWwx_puHDzFYw"/>
-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_yIP58sXQEeWwx_puHDzFYw" x="176" y="562"/>
-        </children>
-        <children xmi:type="notation:Shape" xmi:id="_MwP20MXSEeWwx_puHDzFYw" type="InitialNode_Shape">
-          <children xmi:type="notation:DecorationNode" xmi:id="_MwQd4MXSEeWwx_puHDzFYw" visible="false" type="InitialNode_FloatingNameLabel">
-            <layoutConstraint xmi:type="notation:Location" xmi:id="_MwQd4cXSEeWwx_puHDzFYw" y="5"/>
-          </children>
-          <children xmi:type="notation:DecorationNode" xmi:id="_MwQd4sXSEeWwx_puHDzFYw" type="InitialNode_StereotypeLabel">
-            <layoutConstraint xmi:type="notation:Location" xmi:id="_MwQd48XSEeWwx_puHDzFYw" y="5"/>
-          </children>
-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_MwP20cXSEeWwx_puHDzFYw"/>
-          <element xmi:type="uml:InitialNode" href="TankBarrelExample.uml#_MwEQoMXSEeWwx_puHDzFYw"/>
-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MwP20sXSEeWwx_puHDzFYw" x="229" y="20"/>
-        </children>
-        <children xmi:type="notation:Shape" xmi:id="_bfOXQMXTEeWwx_puHDzFYw" type="StructuredActivityNode_Shape">
-          <children xmi:type="notation:DecorationNode" xmi:id="_bfOXQ8XTEeWwx_puHDzFYw" type="StructuredActivityNode_KeywordLabel"/>
-          <children xmi:type="notation:BasicCompartment" xmi:id="_bfO-UMXTEeWwx_puHDzFYw" type="StructuredActivityNode_ActivityNodeCompartment">
-            <children xmi:type="notation:Shape" xmi:id="_JsDQkMXTEeWwx_puHDzFYw" type="AddStructuralFeatureValueAction_Shape">
-              <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JxejIMXTEeWwx_puHDzFYw" source="PapyrusCSSForceValue">
-                <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JxejIcXTEeWwx_puHDzFYw" key="mutable" value="true"/>
-              </eAnnotations>
-              <children xmi:type="notation:DecorationNode" xmi:id="_JsD3oMXTEeWwx_puHDzFYw" type="AddStructuralFeatureValueAction_NameLabel"/>
-              <children xmi:type="notation:DecorationNode" xmi:id="_JsD3ocXTEeWwx_puHDzFYw" type="AddStructuralFeatureValueAction_FloatingNameLabel">
-                <layoutConstraint xmi:type="notation:Location" xmi:id="_JsD3osXTEeWwx_puHDzFYw" y="5"/>
-              </children>
-              <children xmi:type="notation:BasicCompartment" xmi:id="_JsQr8MXTEeWwx_puHDzFYw" type="compartment_shape_display">
-                <styles xmi:type="notation:TitleStyle" xmi:id="_JsQr8cXTEeWwx_puHDzFYw"/>
-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JsQr8sXTEeWwx_puHDzFYw"/>
-              </children>
-              <children xmi:type="notation:Shape" xmi:id="_JvEIUMXTEeWwx_puHDzFYw" type="InputPin_AddStructuralFeatureValueActionObjectShape">
-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JxejIsXTEeWwx_puHDzFYw" source="PapyrusCSSForceValue">
-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JxejI8XTEeWwx_puHDzFYw" key="mutable" value="true"/>
-                </eAnnotations>
-                <children xmi:type="notation:DecorationNode" xmi:id="_JvEIU8XTEeWwx_puHDzFYw" type="InputPin_AddStructuralFeatureValueActionObjectNameLabel">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_JvEIVMXTEeWwx_puHDzFYw" x="22" y="-2"/>
-                </children>
-                <children xmi:type="notation:DecorationNode" xmi:id="_JvEIVcXTEeWwx_puHDzFYw" type="InputPin_AddStructuralFeatureValueActionObjectStereotypeLabel">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_JvEvYMXTEeWwx_puHDzFYw" y="5"/>
-                </children>
-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_JvEIUcXTEeWwx_puHDzFYw"/>
-                <element xmi:type="uml:InputPin" href="TankBarrelExample.uml#_Jr8i4MXTEeWwx_puHDzFYw"/>
-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JvEIUsXTEeWwx_puHDzFYw" x="-15" y="17"/>
-              </children>
-              <children xmi:type="notation:Shape" xmi:id="_JvEvYcXTEeWwx_puHDzFYw" type="InputPin_AddStructuralFeatureValueActionValueShape">
-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JxejJMXTEeWwx_puHDzFYw" source="PapyrusCSSForceValue">
-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JxejJcXTEeWwx_puHDzFYw" key="mutable" value="true"/>
-                </eAnnotations>
-                <children xmi:type="notation:DecorationNode" xmi:id="_JvEvZMXTEeWwx_puHDzFYw" type="InputPin_AddStructuralFeatureValueActionValueNameLabel">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_JvEvZcXTEeWwx_puHDzFYw" x="24" y="-1"/>
-                </children>
-                <children xmi:type="notation:DecorationNode" xmi:id="_JvEvZsXTEeWwx_puHDzFYw" type="InputPin_AddStructuralFeatureValueActionValueStereotypeLabel">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_JvEvZ8XTEeWwx_puHDzFYw" y="5"/>
-                </children>
-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_JvEvYsXTEeWwx_puHDzFYw"/>
-                <element xmi:type="uml:InputPin" href="TankBarrelExample.uml#_Jr-_IMXTEeWwx_puHDzFYw"/>
-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JvEvY8XTEeWwx_puHDzFYw" x="-15" y="62"/>
-              </children>
-              <children xmi:type="notation:Shape" xmi:id="_JvEvaMXTEeWwx_puHDzFYw" type="OutputPin_AddStructuralFeatureValueActionResultShape">
-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JxejJsXTEeWwx_puHDzFYw" source="PapyrusCSSForceValue">
-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JxejJ8XTEeWwx_puHDzFYw" key="mutable" value="true"/>
-                </eAnnotations>
-                <children xmi:type="notation:DecorationNode" xmi:id="_JvFWcsXTEeWwx_puHDzFYw" visible="false" type="OutputPin_AddStructuralFeatureValueActionResultNameLabel">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_JvFWc8XTEeWwx_puHDzFYw" x="-43" y="16"/>
-                </children>
-                <children xmi:type="notation:DecorationNode" xmi:id="_JvFWdMXTEeWwx_puHDzFYw" type="OutputPin_AddStructuralFeatureValueActionResultStereotypeLabel">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_JvFWdcXTEeWwx_puHDzFYw" y="5"/>
-                </children>
-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_JvFWcMXTEeWwx_puHDzFYw"/>
-                <element xmi:type="uml:OutputPin" href="TankBarrelExample.uml#_Jr9xAMXTEeWwx_puHDzFYw"/>
-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JvFWccXTEeWwx_puHDzFYw" x="148" y="25"/>
-              </children>
-              <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_JsDQkcXTEeWwx_puHDzFYw"/>
-              <element xmi:type="uml:AddStructuralFeatureValueAction" href="TankBarrelExample.uml#_JrzY8MXTEeWwx_puHDzFYw"/>
-              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JsDQksXTEeWwx_puHDzFYw" x="134" y="9" width="118" height="85"/>
-            </children>
-            <children xmi:type="notation:Shape" xmi:id="_jzeFYMXTEeWwx_puHDzFYw" type="ReadSelfAction_Shape">
-              <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_j0kRkMXTEeWwx_puHDzFYw" source="PapyrusCSSForceValue">
-                <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_j0kRkcXTEeWwx_puHDzFYw" key="mutable" value="true"/>
-              </eAnnotations>
-              <children xmi:type="notation:DecorationNode" xmi:id="_jzescMXTEeWwx_puHDzFYw" type="ReadSelfAction_NameLabel"/>
-              <children xmi:type="notation:DecorationNode" xmi:id="_jzesccXTEeWwx_puHDzFYw" type="ReadSelfAction_FloatingNameLabel">
-                <layoutConstraint xmi:type="notation:Location" xmi:id="_jzescsXTEeWwx_puHDzFYw" y="5"/>
-              </children>
-              <children xmi:type="notation:BasicCompartment" xmi:id="_jzprkMXTEeWwx_puHDzFYw" type="compartment_shape_display">
-                <styles xmi:type="notation:TitleStyle" xmi:id="_jzprkcXTEeWwx_puHDzFYw"/>
-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jzprksXTEeWwx_puHDzFYw"/>
-              </children>
-              <children xmi:type="notation:Shape" xmi:id="_jzqSoMXTEeWwx_puHDzFYw" type="OutputPin_ReadSelfActionResultShape">
-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_j0kRksXTEeWwx_puHDzFYw" source="PapyrusCSSForceValue">
-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_j0kRk8XTEeWwx_puHDzFYw" key="mutable" value="true"/>
-                </eAnnotations>
-                <children xmi:type="notation:DecorationNode" xmi:id="_jzqSo8XTEeWwx_puHDzFYw" visible="false" type="OutputPin_ReadSelfActionResultNameLabel">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_jzqSpMXTEeWwx_puHDzFYw" x="8" y="14"/>
-                </children>
-                <children xmi:type="notation:DecorationNode" xmi:id="_jzqSpcXTEeWwx_puHDzFYw" type="OutputPin_ReadSelfActionResultStereotypeLabel">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_jzqSpsXTEeWwx_puHDzFYw" y="5"/>
-                </children>
-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_jzqSocXTEeWwx_puHDzFYw"/>
-                <element xmi:type="uml:OutputPin" href="TankBarrelExample.uml#_jzRREMXTEeWwx_puHDzFYw"/>
-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jzqSosXTEeWwx_puHDzFYw"/>
-              </children>
-              <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_jzeFYcXTEeWwx_puHDzFYw"/>
-              <element xmi:type="uml:ReadSelfAction" href="TankBarrelExample.uml#_jzQC8MXTEeWwx_puHDzFYw"/>
-              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jzeFYsXTEeWwx_puHDzFYw" x="14" y="9"/>
-            </children>
-            <children xmi:type="notation:Shape" xmi:id="_l0yc4MXTEeWwx_puHDzFYw" type="ValueSpecificationAction_Shape">
-              <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_l1uRAMXTEeWwx_puHDzFYw" source="PapyrusCSSForceValue">
-                <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_l1uRAcXTEeWwx_puHDzFYw" key="mutable" value="true"/>
-              </eAnnotations>
-              <children xmi:type="notation:DecorationNode" xmi:id="_l0zD8sXTEeWwx_puHDzFYw" type="ValueSpecificationAction_NameLabel"/>
-              <children xmi:type="notation:DecorationNode" xmi:id="_l0zD88XTEeWwx_puHDzFYw" type="ValueSpecificationAction_FloatingNameLabel">
-                <layoutConstraint xmi:type="notation:Location" xmi:id="_l0zD9MXTEeWwx_puHDzFYw" y="5"/>
-              </children>
-              <children xmi:type="notation:BasicCompartment" xmi:id="_l06_wMXTEeWwx_puHDzFYw" type="compartment_shape_display">
-                <styles xmi:type="notation:TitleStyle" xmi:id="_l06_wcXTEeWwx_puHDzFYw"/>
-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l06_wsXTEeWwx_puHDzFYw"/>
-              </children>
-              <children xmi:type="notation:Shape" xmi:id="_l07m0MXTEeWwx_puHDzFYw" type="OutputPin_ValueSpecificationActionResultShape">
-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_l1uRAsXTEeWwx_puHDzFYw" source="PapyrusCSSForceValue">
-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_l1uRA8XTEeWwx_puHDzFYw" key="mutable" value="true"/>
-                </eAnnotations>
-                <children xmi:type="notation:DecorationNode" xmi:id="_l07m08XTEeWwx_puHDzFYw" visible="false" type="OutputPin_ValueSpecificationActionResultNameLabel">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_l08N4MXTEeWwx_puHDzFYw" y="5"/>
-                </children>
-                <children xmi:type="notation:DecorationNode" xmi:id="_l08N4cXTEeWwx_puHDzFYw" type="OutputPin_ValueSpecificationActionResultStereotypeLabel">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_l08N4sXTEeWwx_puHDzFYw" y="5"/>
-                </children>
-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_l07m0cXTEeWwx_puHDzFYw"/>
-                <element xmi:type="uml:OutputPin" href="TankBarrelExample.uml#_l0m2sMXTEeWwx_puHDzFYw"/>
-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l07m0sXTEeWwx_puHDzFYw"/>
-              </children>
-              <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_l0zD8MXTEeWwx_puHDzFYw"/>
-              <element xmi:type="uml:ValueSpecificationAction" href="TankBarrelExample.uml#_l0ceoMXTEeWwx_puHDzFYw"/>
-              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l0zD8cXTEeWwx_puHDzFYw" x="14" y="54"/>
-            </children>
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bfO-UcXTEeWwx_puHDzFYw"/>
-          </children>
-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_bfOXQcXTEeWwx_puHDzFYw"/>
-          <element xmi:type="uml:StructuredActivityNode" href="TankBarrelExample.uml#_be-foMXTEeWwx_puHDzFYw"/>
-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bfOXQsXTEeWwx_puHDzFYw" x="93" y="152" width="292" height="135"/>
-        </children>
-        <children xmi:type="notation:Shape" xmi:id="_hdHAEMXVEeWwx_puHDzFYw" type="ActivityFinalNode_Shape">
-          <children xmi:type="notation:DecorationNode" xmi:id="_hdHAE8XVEeWwx_puHDzFYw" visible="false" type="ActivityFinalNode_FloatingNameLabel">
-            <layoutConstraint xmi:type="notation:Location" xmi:id="_hdHAFMXVEeWwx_puHDzFYw" y="5"/>
-          </children>
-          <children xmi:type="notation:DecorationNode" xmi:id="_hdHAFcXVEeWwx_puHDzFYw" type="ActivityFinalNode_StereotypeLabel">
-            <layoutConstraint xmi:type="notation:Location" xmi:id="_hdHAFsXVEeWwx_puHDzFYw" y="5"/>
-          </children>
-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_hdHAEcXVEeWwx_puHDzFYw"/>
-          <element xmi:type="uml:ActivityFinalNode" href="TankBarrelExample.uml#_hclboMXVEeWwx_puHDzFYw"/>
-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hdHAEsXVEeWwx_puHDzFYw" x="438" y="702"/>
-        </children>
-        <children xmi:type="notation:Shape" xmi:id="_ibQ_gMXXEeWwx_puHDzFYw" type="StructuredActivityNode_Shape">
-          <children xmi:type="notation:DecorationNode" xmi:id="_ibS0sMXXEeWwx_puHDzFYw" type="StructuredActivityNode_KeywordLabel"/>
-          <children xmi:type="notation:BasicCompartment" xmi:id="_ibS0scXXEeWwx_puHDzFYw" type="StructuredActivityNode_ActivityNodeCompartment">
-            <children xmi:type="notation:Shape" xmi:id="_mJKNkMXXEeWwx_puHDzFYw" type="AddStructuralFeatureValueAction_Shape">
-              <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mLB10MXXEeWwx_puHDzFYw" source="PapyrusCSSForceValue">
-                <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mLCc4MXXEeWwx_puHDzFYw" key="mutable" value="true"/>
-              </eAnnotations>
-              <children xmi:type="notation:DecorationNode" xmi:id="_mJK0oMXXEeWwx_puHDzFYw" type="AddStructuralFeatureValueAction_NameLabel"/>
-              <children xmi:type="notation:DecorationNode" xmi:id="_mJK0ocXXEeWwx_puHDzFYw" type="AddStructuralFeatureValueAction_FloatingNameLabel">
-                <layoutConstraint xmi:type="notation:Location" xmi:id="_mJK0osXXEeWwx_puHDzFYw" y="5"/>
-              </children>
-              <children xmi:type="notation:BasicCompartment" xmi:id="_mJgy4MXXEeWwx_puHDzFYw" type="compartment_shape_display">
-                <styles xmi:type="notation:TitleStyle" xmi:id="_mJgy4cXXEeWwx_puHDzFYw"/>
-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mJgy4sXXEeWwx_puHDzFYw"/>
-              </children>
-              <children xmi:type="notation:Shape" xmi:id="_mJiBAMXXEeWwx_puHDzFYw" type="InputPin_AddStructuralFeatureValueActionObjectShape">
-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mLCc4cXXEeWwx_puHDzFYw" source="PapyrusCSSForceValue">
-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mLCc4sXXEeWwx_puHDzFYw" key="mutable" value="true"/>
-                </eAnnotations>
-                <children xmi:type="notation:DecorationNode" xmi:id="_mJiBA8XXEeWwx_puHDzFYw" type="InputPin_AddStructuralFeatureValueActionObjectNameLabel">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_mJiBBMXXEeWwx_puHDzFYw" x="19" y="1"/>
-                </children>
-                <children xmi:type="notation:DecorationNode" xmi:id="_mJioEMXXEeWwx_puHDzFYw" type="InputPin_AddStructuralFeatureValueActionObjectStereotypeLabel">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_mJioEcXXEeWwx_puHDzFYw" y="5"/>
-                </children>
-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_mJiBAcXXEeWwx_puHDzFYw"/>
-                <element xmi:type="uml:InputPin" href="TankBarrelExample.uml#_mJEG8MXXEeWwx_puHDzFYw"/>
-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mJiBAsXXEeWwx_puHDzFYw" x="-15" y="13"/>
-              </children>
-              <children xmi:type="notation:Shape" xmi:id="_mJioEsXXEeWwx_puHDzFYw" type="InputPin_AddStructuralFeatureValueActionValueShape">
-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mLCc48XXEeWwx_puHDzFYw" source="PapyrusCSSForceValue">
-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mLCc5MXXEeWwx_puHDzFYw" key="mutable" value="true"/>
-                </eAnnotations>
-                <children xmi:type="notation:DecorationNode" xmi:id="_mJioFcXXEeWwx_puHDzFYw" type="InputPin_AddStructuralFeatureValueActionValueNameLabel">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_mJioFsXXEeWwx_puHDzFYw" x="21" y="-2"/>
-                </children>
-                <children xmi:type="notation:DecorationNode" xmi:id="_mJioF8XXEeWwx_puHDzFYw" type="InputPin_AddStructuralFeatureValueActionValueStereotypeLabel">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_mJioGMXXEeWwx_puHDzFYw" y="5"/>
-                </children>
-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_mJioE8XXEeWwx_puHDzFYw"/>
-                <element xmi:type="uml:InputPin" href="TankBarrelExample.uml#_mJHKQMXXEeWwx_puHDzFYw"/>
-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mJioFMXXEeWwx_puHDzFYw" x="-15" y="58"/>
-              </children>
-              <children xmi:type="notation:Shape" xmi:id="_mJioGcXXEeWwx_puHDzFYw" type="OutputPin_AddStructuralFeatureValueActionResultShape">
-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_mLCc5cXXEeWwx_puHDzFYw" source="PapyrusCSSForceValue">
-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_mLCc5sXXEeWwx_puHDzFYw" key="mutable" value="true"/>
-                </eAnnotations>
-                <children xmi:type="notation:DecorationNode" xmi:id="_mJioHMXXEeWwx_puHDzFYw" visible="false" type="OutputPin_AddStructuralFeatureValueActionResultNameLabel">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_mJioHcXXEeWwx_puHDzFYw" y="5"/>
-                </children>
-                <children xmi:type="notation:DecorationNode" xmi:id="_mJioHsXXEeWwx_puHDzFYw" type="OutputPin_AddStructuralFeatureValueActionResultStereotypeLabel">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_mJioH8XXEeWwx_puHDzFYw" y="5"/>
-                </children>
-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_mJioGsXXEeWwx_puHDzFYw"/>
-                <element xmi:type="uml:OutputPin" href="TankBarrelExample.uml#_mJFVEMXXEeWwx_puHDzFYw"/>
-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mJioG8XXEeWwx_puHDzFYw" x="117" y="31"/>
-              </children>
-              <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_mJKNkcXXEeWwx_puHDzFYw"/>
-              <element xmi:type="uml:AddStructuralFeatureValueAction" href="TankBarrelExample.uml#_mI_OcMXXEeWwx_puHDzFYw"/>
-              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mJKNksXXEeWwx_puHDzFYw" x="131" y="3" width="118" height="85"/>
-            </children>
-            <children xmi:type="notation:Shape" xmi:id="_rw55MMXXEeWwx_puHDzFYw" type="ReadSelfAction_Shape">
-              <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ryU1gMXXEeWwx_puHDzFYw" source="PapyrusCSSForceValue">
-                <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ryU1gcXXEeWwx_puHDzFYw" key="mutable" value="true"/>
-              </eAnnotations>
-              <children xmi:type="notation:DecorationNode" xmi:id="_rw55M8XXEeWwx_puHDzFYw" type="ReadSelfAction_NameLabel"/>
-              <children xmi:type="notation:DecorationNode" xmi:id="_rw55NMXXEeWwx_puHDzFYw" type="ReadSelfAction_FloatingNameLabel">
-                <layoutConstraint xmi:type="notation:Location" xmi:id="_rw55NcXXEeWwx_puHDzFYw" y="5"/>
-              </children>
-              <children xmi:type="notation:BasicCompartment" xmi:id="_rxFfYMXXEeWwx_puHDzFYw" type="compartment_shape_display">
-                <styles xmi:type="notation:TitleStyle" xmi:id="_rxFfYcXXEeWwx_puHDzFYw"/>
-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rxFfYsXXEeWwx_puHDzFYw"/>
-              </children>
-              <children xmi:type="notation:Shape" xmi:id="_rxGGcMXXEeWwx_puHDzFYw" type="OutputPin_ReadSelfActionResultShape">
-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ryU1gsXXEeWwx_puHDzFYw" source="PapyrusCSSForceValue">
-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ryU1g8XXEeWwx_puHDzFYw" key="mutable" value="true"/>
-                </eAnnotations>
-                <children xmi:type="notation:DecorationNode" xmi:id="_rxGGc8XXEeWwx_puHDzFYw" visible="false" type="OutputPin_ReadSelfActionResultNameLabel">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_rxGGdMXXEeWwx_puHDzFYw" y="5"/>
-                </children>
-                <children xmi:type="notation:DecorationNode" xmi:id="_rxGGdcXXEeWwx_puHDzFYw" type="OutputPin_ReadSelfActionResultStereotypeLabel">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_rxGGdsXXEeWwx_puHDzFYw" y="5"/>
-                </children>
-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_rxGGccXXEeWwx_puHDzFYw"/>
-                <element xmi:type="uml:OutputPin" href="TankBarrelExample.uml#_rwlJEMXXEeWwx_puHDzFYw"/>
-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rxGGcsXXEeWwx_puHDzFYw"/>
-              </children>
-              <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_rw55McXXEeWwx_puHDzFYw"/>
-              <element xmi:type="uml:ReadSelfAction" href="TankBarrelExample.uml#_rwkiAMXXEeWwx_puHDzFYw"/>
-              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rw55MsXXEeWwx_puHDzFYw" x="11" y="3"/>
-            </children>
-            <children xmi:type="notation:Shape" xmi:id="_uImJUMXXEeWwx_puHDzFYw" type="ValueSpecificationAction_Shape">
-              <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uKltYMXXEeWwx_puHDzFYw" source="PapyrusCSSForceValue">
-                <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uKltYcXXEeWwx_puHDzFYw" key="mutable" value="true"/>
-              </eAnnotations>
-              <children xmi:type="notation:DecorationNode" xmi:id="_uImwYMXXEeWwx_puHDzFYw" type="ValueSpecificationAction_NameLabel"/>
-              <children xmi:type="notation:DecorationNode" xmi:id="_uImwYcXXEeWwx_puHDzFYw" type="ValueSpecificationAction_FloatingNameLabel">
-                <layoutConstraint xmi:type="notation:Location" xmi:id="_uImwYsXXEeWwx_puHDzFYw" y="5"/>
-              </children>
-              <children xmi:type="notation:BasicCompartment" xmi:id="_uIyWkMXXEeWwx_puHDzFYw" type="compartment_shape_display">
-                <styles xmi:type="notation:TitleStyle" xmi:id="_uIyWkcXXEeWwx_puHDzFYw"/>
-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uIyWksXXEeWwx_puHDzFYw"/>
-              </children>
-              <children xmi:type="notation:Shape" xmi:id="_uIy9oMXXEeWwx_puHDzFYw" type="OutputPin_ValueSpecificationActionResultShape">
-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uKltYsXXEeWwx_puHDzFYw" source="PapyrusCSSForceValue">
-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_uKltY8XXEeWwx_puHDzFYw" key="mutable" value="true"/>
-                </eAnnotations>
-                <children xmi:type="notation:DecorationNode" xmi:id="_uIy9o8XXEeWwx_puHDzFYw" visible="false" type="OutputPin_ValueSpecificationActionResultNameLabel">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_uIy9pMXXEeWwx_puHDzFYw" y="5"/>
-                </children>
-                <children xmi:type="notation:DecorationNode" xmi:id="_uIy9pcXXEeWwx_puHDzFYw" type="OutputPin_ValueSpecificationActionResultStereotypeLabel">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_uIy9psXXEeWwx_puHDzFYw" y="5"/>
-                </children>
-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_uIy9ocXXEeWwx_puHDzFYw"/>
-                <element xmi:type="uml:OutputPin" href="TankBarrelExample.uml#_uIQLEMXXEeWwx_puHDzFYw"/>
-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uIy9osXXEeWwx_puHDzFYw"/>
-              </children>
-              <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_uImJUcXXEeWwx_puHDzFYw"/>
-              <element xmi:type="uml:ValueSpecificationAction" href="TankBarrelExample.uml#_uIPkAMXXEeWwx_puHDzFYw"/>
-              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uImJUsXXEeWwx_puHDzFYw" x="11" y="48"/>
-            </children>
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ibS0ssXXEeWwx_puHDzFYw"/>
-          </children>
-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_ibQ_gcXXEeWwx_puHDzFYw"/>
-          <element xmi:type="uml:StructuredActivityNode" href="TankBarrelExample.uml#_ia5zIMXXEeWwx_puHDzFYw"/>
-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ibQ_gsXXEeWwx_puHDzFYw" x="96" y="394" width="292" height="135"/>
-        </children>
-        <children xmi:type="notation:Shape" xmi:id="_xGTQkMXXEeWwx_puHDzFYw" type="StructuredActivityNode_Shape">
-          <children xmi:type="notation:DecorationNode" xmi:id="_xGTQk8XXEeWwx_puHDzFYw" type="StructuredActivityNode_KeywordLabel"/>
-          <children xmi:type="notation:BasicCompartment" xmi:id="_xGTQlMXXEeWwx_puHDzFYw" type="StructuredActivityNode_ActivityNodeCompartment">
-            <children xmi:type="notation:Shape" xmi:id="_y2WR4MXXEeWwx_puHDzFYw" type="AddStructuralFeatureValueAction_Shape">
-              <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_y4_WMMXXEeWwx_puHDzFYw" source="PapyrusCSSForceValue">
-                <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_y4_WMcXXEeWwx_puHDzFYw" key="mutable" value="true"/>
-              </eAnnotations>
-              <children xmi:type="notation:DecorationNode" xmi:id="_y2W48MXXEeWwx_puHDzFYw" type="AddStructuralFeatureValueAction_NameLabel"/>
-              <children xmi:type="notation:DecorationNode" xmi:id="_y2W48cXXEeWwx_puHDzFYw" type="AddStructuralFeatureValueAction_FloatingNameLabel">
-                <layoutConstraint xmi:type="notation:Location" xmi:id="_y2W48sXXEeWwx_puHDzFYw" y="5"/>
-              </children>
-              <children xmi:type="notation:BasicCompartment" xmi:id="_y25rgMXXEeWwx_puHDzFYw" type="compartment_shape_display">
-                <styles xmi:type="notation:TitleStyle" xmi:id="_y25rgcXXEeWwx_puHDzFYw"/>
-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y25rgsXXEeWwx_puHDzFYw"/>
-              </children>
-              <children xmi:type="notation:Shape" xmi:id="_y265oMXXEeWwx_puHDzFYw" type="InputPin_AddStructuralFeatureValueActionObjectShape">
-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_y4_WMsXXEeWwx_puHDzFYw" source="PapyrusCSSForceValue">
-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_y4_WM8XXEeWwx_puHDzFYw" key="mutable" value="true"/>
-                </eAnnotations>
-                <children xmi:type="notation:DecorationNode" xmi:id="_y265o8XXEeWwx_puHDzFYw" type="InputPin_AddStructuralFeatureValueActionObjectNameLabel">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_y265pMXXEeWwx_puHDzFYw" x="20" y="1"/>
-                </children>
-                <children xmi:type="notation:DecorationNode" xmi:id="_y265pcXXEeWwx_puHDzFYw" type="InputPin_AddStructuralFeatureValueActionObjectStereotypeLabel">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_y265psXXEeWwx_puHDzFYw" y="5"/>
-                </children>
-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_y265ocXXEeWwx_puHDzFYw"/>
-                <element xmi:type="uml:InputPin" href="TankBarrelExample.uml#_y2PkMMXXEeWwx_puHDzFYw"/>
-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y265osXXEeWwx_puHDzFYw" x="-15" y="12"/>
-              </children>
-              <children xmi:type="notation:Shape" xmi:id="_y27gsMXXEeWwx_puHDzFYw" type="InputPin_AddStructuralFeatureValueActionValueShape">
-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_y4_WNMXXEeWwx_puHDzFYw" source="PapyrusCSSForceValue">
-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_y4_WNcXXEeWwx_puHDzFYw" key="mutable" value="true"/>
-                </eAnnotations>
-                <children xmi:type="notation:DecorationNode" xmi:id="_y27gs8XXEeWwx_puHDzFYw" type="InputPin_AddStructuralFeatureValueActionValueNameLabel">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_y27gtMXXEeWwx_puHDzFYw" x="17" y="1"/>
-                </children>
-                <children xmi:type="notation:DecorationNode" xmi:id="_y27gtcXXEeWwx_puHDzFYw" type="InputPin_AddStructuralFeatureValueActionValueStereotypeLabel">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_y27gtsXXEeWwx_puHDzFYw" y="5"/>
-                </children>
-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_y27gscXXEeWwx_puHDzFYw"/>
-                <element xmi:type="uml:InputPin" href="TankBarrelExample.uml#_y2SAcMXXEeWwx_puHDzFYw"/>
-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y27gssXXEeWwx_puHDzFYw" x="-15" y="52"/>
-              </children>
-              <children xmi:type="notation:Shape" xmi:id="_y27gt8XXEeWwx_puHDzFYw" type="OutputPin_AddStructuralFeatureValueActionResultShape">
-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_y4_WNsXXEeWwx_puHDzFYw" source="PapyrusCSSForceValue">
-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_y4_WN8XXEeWwx_puHDzFYw" key="mutable" value="true"/>
-                </eAnnotations>
-                <children xmi:type="notation:DecorationNode" xmi:id="_y27gusXXEeWwx_puHDzFYw" visible="false" type="OutputPin_AddStructuralFeatureValueActionResultNameLabel">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_y27gu8XXEeWwx_puHDzFYw" y="5"/>
-                </children>
-                <children xmi:type="notation:DecorationNode" xmi:id="_y27gvMXXEeWwx_puHDzFYw" type="OutputPin_AddStructuralFeatureValueActionResultStereotypeLabel">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_y27gvcXXEeWwx_puHDzFYw" y="5"/>
-                </children>
-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_y27guMXXEeWwx_puHDzFYw"/>
-                <element xmi:type="uml:OutputPin" href="TankBarrelExample.uml#_y2QyUMXXEeWwx_puHDzFYw"/>
-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y27gucXXEeWwx_puHDzFYw" x="117" y="34"/>
-              </children>
-              <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_y2WR4cXXEeWwx_puHDzFYw"/>
-              <element xmi:type="uml:AddStructuralFeatureValueAction" href="TankBarrelExample.uml#_y2Mg4MXXEeWwx_puHDzFYw"/>
-              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y2WR4sXXEeWwx_puHDzFYw" x="131" y="9" width="118" height="85"/>
-            </children>
-            <children xmi:type="notation:Shape" xmi:id="_4nJL0MXXEeWwx_puHDzFYw" type="ReadSelfAction_Shape">
-              <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4orc4MXXEeWwx_puHDzFYw" source="PapyrusCSSForceValue">
-                <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4orc4cXXEeWwx_puHDzFYw" key="mutable" value="true"/>
-              </eAnnotations>
-              <children xmi:type="notation:DecorationNode" xmi:id="_4nJL08XXEeWwx_puHDzFYw" type="ReadSelfAction_NameLabel"/>
-              <children xmi:type="notation:DecorationNode" xmi:id="_4nJL1MXXEeWwx_puHDzFYw" type="ReadSelfAction_FloatingNameLabel">
-                <layoutConstraint xmi:type="notation:Location" xmi:id="_4nJL1cXXEeWwx_puHDzFYw" y="5"/>
-              </children>
-              <children xmi:type="notation:BasicCompartment" xmi:id="_4nZqgMXXEeWwx_puHDzFYw" type="compartment_shape_display">
-                <styles xmi:type="notation:TitleStyle" xmi:id="_4nZqgcXXEeWwx_puHDzFYw"/>
-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4nZqgsXXEeWwx_puHDzFYw"/>
-              </children>
-              <children xmi:type="notation:Shape" xmi:id="_4naRkMXXEeWwx_puHDzFYw" type="OutputPin_ReadSelfActionResultShape">
-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4orc4sXXEeWwx_puHDzFYw" source="PapyrusCSSForceValue">
-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4orc48XXEeWwx_puHDzFYw" key="mutable" value="true"/>
-                </eAnnotations>
-                <children xmi:type="notation:DecorationNode" xmi:id="_4naRk8XXEeWwx_puHDzFYw" visible="false" type="OutputPin_ReadSelfActionResultNameLabel">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_4naRlMXXEeWwx_puHDzFYw" y="5"/>
-                </children>
-                <children xmi:type="notation:DecorationNode" xmi:id="_4naRlcXXEeWwx_puHDzFYw" type="OutputPin_ReadSelfActionResultStereotypeLabel">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_4naRlsXXEeWwx_puHDzFYw" y="5"/>
-                </children>
-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_4naRkcXXEeWwx_puHDzFYw"/>
-                <element xmi:type="uml:OutputPin" href="TankBarrelExample.uml#_4mxYYMXXEeWwx_puHDzFYw"/>
-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4naRksXXEeWwx_puHDzFYw"/>
-              </children>
-              <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_4nJL0cXXEeWwx_puHDzFYw"/>
-              <element xmi:type="uml:ReadSelfAction" href="TankBarrelExample.uml#_4mrRwMXXEeWwx_puHDzFYw"/>
-              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_4nJL0sXXEeWwx_puHDzFYw" x="11" y="8"/>
-            </children>
-            <children xmi:type="notation:Shape" xmi:id="_61hu8MXXEeWwx_puHDzFYw" type="ValueSpecificationAction_Shape">
-              <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_63OYEMXXEeWwx_puHDzFYw" source="PapyrusCSSForceValue">
-                <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_63OYEcXXEeWwx_puHDzFYw" key="mutable" value="true"/>
-              </eAnnotations>
-              <children xmi:type="notation:DecorationNode" xmi:id="_61hu88XXEeWwx_puHDzFYw" type="ValueSpecificationAction_NameLabel"/>
-              <children xmi:type="notation:DecorationNode" xmi:id="_61hu9MXXEeWwx_puHDzFYw" type="ValueSpecificationAction_FloatingNameLabel">
-                <layoutConstraint xmi:type="notation:Location" xmi:id="_61hu9cXXEeWwx_puHDzFYw" y="5"/>
-              </children>
-              <children xmi:type="notation:BasicCompartment" xmi:id="_61w_gMXXEeWwx_puHDzFYw" type="compartment_shape_display">
-                <styles xmi:type="notation:TitleStyle" xmi:id="_61w_gcXXEeWwx_puHDzFYw"/>
-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_61w_gsXXEeWwx_puHDzFYw"/>
-              </children>
-              <children xmi:type="notation:Shape" xmi:id="_61xmkMXXEeWwx_puHDzFYw" type="OutputPin_ValueSpecificationActionResultShape">
-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_63OYEsXXEeWwx_puHDzFYw" source="PapyrusCSSForceValue">
-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_63OYE8XXEeWwx_puHDzFYw" key="mutable" value="true"/>
-                </eAnnotations>
-                <children xmi:type="notation:DecorationNode" xmi:id="_61yNosXXEeWwx_puHDzFYw" visible="false" type="OutputPin_ValueSpecificationActionResultNameLabel">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_61yNo8XXEeWwx_puHDzFYw" y="5"/>
-                </children>
-                <children xmi:type="notation:DecorationNode" xmi:id="_61yNpMXXEeWwx_puHDzFYw" type="OutputPin_ValueSpecificationActionResultStereotypeLabel">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_61yNpcXXEeWwx_puHDzFYw" y="5"/>
-                </children>
-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_61yNoMXXEeWwx_puHDzFYw"/>
-                <element xmi:type="uml:OutputPin" href="TankBarrelExample.uml#_61JUcMXXEeWwx_puHDzFYw"/>
-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_61yNocXXEeWwx_puHDzFYw"/>
-              </children>
-              <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_61hu8cXXEeWwx_puHDzFYw"/>
-              <element xmi:type="uml:ValueSpecificationAction" href="TankBarrelExample.uml#_61ItYMXXEeWwx_puHDzFYw"/>
-              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_61hu8sXXEeWwx_puHDzFYw" x="11" y="49"/>
-            </children>
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xGTQlcXXEeWwx_puHDzFYw"/>
-          </children>
-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_xGTQkcXXEeWwx_puHDzFYw"/>
-          <element xmi:type="uml:StructuredActivityNode" href="TankBarrelExample.uml#_xF9SUMXXEeWwx_puHDzFYw"/>
-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xGTQksXXEeWwx_puHDzFYw" x="96" y="653" width="292" height="135"/>
-        </children>
-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_o4iCH8XQEeWwx_puHDzFYw"/>
-      </children>
-      <element xmi:type="uml:Activity" href="TankBarrelExample.uml#_bnRAUMXQEeWwx_puHDzFYw"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_o4iCIMXQEeWwx_puHDzFYw" width="855" height="846"/>
-    </children>
-    <styles xmi:type="notation:StringValueStyle" xmi:id="_o4iCIcXQEeWwx_puHDzFYw" name="diagram_compatibility_version" stringValue="1.2.0"/>
-    <styles xmi:type="notation:DiagramStyle" xmi:id="_o4iCIsXQEeWwx_puHDzFYw"/>
-    <styles xmi:type="style:PapyrusViewStyle" xmi:id="_o4iCI8XQEeWwx_puHDzFYw">
-      <owner xmi:type="uml:Activity" href="TankBarrelExample.uml#_bnRAUMXQEeWwx_puHDzFYw"/>
-      <configuration xmi:type="configuration:PapyrusDiagram" href="platform:/plugin/org.eclipse.papyrus.moka.simex/config/simex.configuration#_VerKMGAyEeWAtYeYccnjOA"/>
-    </styles>
-    <element xmi:type="uml:Activity" href="TankBarrelExample.uml#_bnRAUMXQEeWwx_puHDzFYw"/>
-    <edges xmi:type="notation:Connector" xmi:id="_s5yJoMXTEeWwx_puHDzFYw" type="ObjectFlow_Edge" source="_jzqSoMXTEeWwx_puHDzFYw" target="_JvEIUMXTEeWwx_puHDzFYw">
-      <children xmi:type="notation:DecorationNode" xmi:id="_s5yJo8XTEeWwx_puHDzFYw" type="ObjectFlow_NameLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_s5yJpMXTEeWwx_puHDzFYw" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_s5yJpcXTEeWwx_puHDzFYw" visible="false" type="ObjectFlow_WeightLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_s5yJpsXTEeWwx_puHDzFYw" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_s5yJp8XTEeWwx_puHDzFYw" type="ObjectFlow_SelectionLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_s5yJqMXTEeWwx_puHDzFYw" x="20" y="40"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_s5ywsMXTEeWwx_puHDzFYw" type="ObjectFlow_TransformationLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_s5ywscXTEeWwx_puHDzFYw" x="-20" y="-60"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_s5ywssXTEeWwx_puHDzFYw" type="ObjectFlow_KeywordLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_s5yws8XTEeWwx_puHDzFYw" y="-20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_s5ywtMXTEeWwx_puHDzFYw" visible="false" type="ObjectFlow_GuardLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_s5ywtcXTEeWwx_puHDzFYw" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_s5ywtsXTEeWwx_puHDzFYw" type="ObjectFlow_StereotypeLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_s5ywt8XTEeWwx_puHDzFYw" y="-20"/>
-      </children>
-      <styles xmi:type="notation:FontStyle" xmi:id="_s5yJocXTEeWwx_puHDzFYw"/>
-      <element xmi:type="uml:ObjectFlow" href="TankBarrelExample.uml#_s5i5EMXTEeWwx_puHDzFYw"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_s5yJosXTEeWwx_puHDzFYw" points="[160, 249, -643984, -643984]$[225, 247, -643984, -643984]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rJLTsM5PEeWaRpodR1S6WA" id="(0.8125,0.75)"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_s6etMMXTEeWwx_puHDzFYw" id="(0.0625,0.6875)"/>
-    </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_upS_cMXTEeWwx_puHDzFYw" type="ObjectFlow_Edge" source="_l07m0MXTEeWwx_puHDzFYw" target="_JvEvYcXTEeWwx_puHDzFYw">
-      <children xmi:type="notation:DecorationNode" xmi:id="_upTmgMXTEeWwx_puHDzFYw" type="ObjectFlow_NameLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_upTmgcXTEeWwx_puHDzFYw" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_upTmgsXTEeWwx_puHDzFYw" visible="false" type="ObjectFlow_WeightLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_upTmg8XTEeWwx_puHDzFYw" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_upTmhMXTEeWwx_puHDzFYw" type="ObjectFlow_SelectionLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_upTmhcXTEeWwx_puHDzFYw" x="20" y="40"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_upTmhsXTEeWwx_puHDzFYw" type="ObjectFlow_TransformationLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_upTmh8XTEeWwx_puHDzFYw" x="-20" y="-60"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_upTmiMXTEeWwx_puHDzFYw" type="ObjectFlow_KeywordLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_upTmicXTEeWwx_puHDzFYw" y="-20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_upUNkMXTEeWwx_puHDzFYw" visible="false" type="ObjectFlow_GuardLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_upUNkcXTEeWwx_puHDzFYw" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_upUNksXTEeWwx_puHDzFYw" type="ObjectFlow_StereotypeLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_upUNk8XTEeWwx_puHDzFYw" y="-20"/>
-      </children>
-      <styles xmi:type="notation:FontStyle" xmi:id="_upS_ccXTEeWwx_puHDzFYw"/>
-      <element xmi:type="uml:ObjectFlow" href="TankBarrelExample.uml#_upAEgMXTEeWwx_puHDzFYw"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_upS_csXTEeWwx_puHDzFYw" points="[161, 295, -643984, -643984]$[225, 293, -643984, -643984]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_pssuoM5PEeWaRpodR1S6WA" id="(0.9375,0.625)"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_uqDNYMXTEeWwx_puHDzFYw" id="(0.125,0.4375)"/>
-    </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_WO1w0MXVEeWwx_puHDzFYw" type="ControlFlow_Edge" source="_MwP20MXSEeWwx_puHDzFYw" target="_xrHSAMXQEeWwx_puHDzFYw">
-      <children xmi:type="notation:DecorationNode" xmi:id="_WO2X4MXVEeWwx_puHDzFYw" type="ControlFlow_NameLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_WO2X4cXVEeWwx_puHDzFYw" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_WO2X4sXVEeWwx_puHDzFYw" type="ControlFlow_WeightLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_WO2X48XVEeWwx_puHDzFYw" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_WO2X5MXVEeWwx_puHDzFYw" type="ControlFlow_GuardLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_WO2X5cXVEeWwx_puHDzFYw" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_WO2X5sXVEeWwx_puHDzFYw" type="ControlFlow_StereotypeLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_WO2X58XVEeWwx_puHDzFYw" y="-20"/>
-      </children>
-      <styles xmi:type="notation:FontStyle" xmi:id="_WO1w0cXVEeWwx_puHDzFYw"/>
-      <element xmi:type="uml:ControlFlow" href="TankBarrelExample.uml#_WOXPsMXVEeWwx_puHDzFYw"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_WO1w0sXVEeWwx_puHDzFYw" points="[442, 73, -643984, -643984]$[442, 111, -643984, -643984]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WP0BMMXVEeWwx_puHDzFYw" id="(0.45,0.95)"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_WP0oQMXVEeWwx_puHDzFYw" id="(0.496,0.0425531914893617)"/>
-    </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_c6oTYMXVEeWwx_puHDzFYw" type="ControlFlow_Edge" source="_xrHSAMXQEeWwx_puHDzFYw" target="_bfOXQMXTEeWwx_puHDzFYw">
-      <children xmi:type="notation:DecorationNode" xmi:id="_c6o6cMXVEeWwx_puHDzFYw" type="ControlFlow_NameLabel">
-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_xNCcoMXVEeWwx_puHDzFYw" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_c6o6ccXVEeWwx_puHDzFYw" x="-5" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_c6o6csXVEeWwx_puHDzFYw" type="ControlFlow_WeightLabel">
-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_xNl2QMXVEeWwx_puHDzFYw" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_c6o6c8XVEeWwx_puHDzFYw" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_c6o6dMXVEeWwx_puHDzFYw" type="ControlFlow_GuardLabel">
-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_xOFlgMXVEeWwx_puHDzFYw" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_c6o6dcXVEeWwx_puHDzFYw" x="5" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_c6o6dsXVEeWwx_puHDzFYw" type="ControlFlow_StereotypeLabel">
-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_xOt3oMXVEeWwx_puHDzFYw" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_c6o6d8XVEeWwx_puHDzFYw" y="-20"/>
-      </children>
-      <styles xmi:type="notation:FontStyle" xmi:id="_c6oTYcXVEeWwx_puHDzFYw"/>
-      <element xmi:type="uml:ControlFlow" href="TankBarrelExample.uml#_c6JyQMXVEeWwx_puHDzFYw"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_c6oTYsXVEeWwx_puHDzFYw" points="[437, 152, -643984, -643984]$[437, 187, -643984, -643984]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_c7ZIYMXVEeWwx_puHDzFYw" id="(0.496,0.9148936170212766)"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_c7ZIYcXVEeWwx_puHDzFYw" id="(0.4965753424657534,0.0)"/>
-    </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_dcki0MXVEeWwx_puHDzFYw" type="ControlFlow_Edge" source="_bfOXQMXTEeWwx_puHDzFYw" target="_x6RvYMXQEeWwx_puHDzFYw">
-      <children xmi:type="notation:DecorationNode" xmi:id="_dcki08XVEeWwx_puHDzFYw" type="ControlFlow_NameLabel">
-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_xLC4kMXVEeWwx_puHDzFYw" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_dcki1MXVEeWwx_puHDzFYw" x="4" y="18"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_dcki1cXVEeWwx_puHDzFYw" type="ControlFlow_WeightLabel">
-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_xLoucMXVEeWwx_puHDzFYw" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_dcki1sXVEeWwx_puHDzFYw" x="2" y="-17"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_dcki18XVEeWwx_puHDzFYw" type="ControlFlow_GuardLabel">
-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_xMC-IMXVEeWwx_puHDzFYw" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_dcki2MXVEeWwx_puHDzFYw" x="6" y="18"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_dcki2cXVEeWwx_puHDzFYw" type="ControlFlow_StereotypeLabel">
-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_xMcmwMXVEeWwx_puHDzFYw" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_dcki2sXVEeWwx_puHDzFYw" x="-1" y="-18"/>
-      </children>
-      <styles xmi:type="notation:FontStyle" xmi:id="_dcki0cXVEeWwx_puHDzFYw"/>
-      <element xmi:type="uml:ControlFlow" href="TankBarrelExample.uml#_dcHP0MXVEeWwx_puHDzFYw"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_dcki0sXVEeWwx_puHDzFYw" points="[432, 322, -643984, -643984]$[436, 357, -643984, -643984]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ddWl8MXVEeWwx_puHDzFYw" id="(0.4965753424657534,1.0)"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ddWl8cXVEeWwx_puHDzFYw" id="(0.48876190476190506,0.0425531914893617)"/>
-    </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_FILDcMXYEeWwx_puHDzFYw" type="ObjectFlow_Edge" source="_rxGGcMXXEeWwx_puHDzFYw" target="_mJiBAMXXEeWwx_puHDzFYw">
-      <children xmi:type="notation:DecorationNode" xmi:id="_FILDc8XYEeWwx_puHDzFYw" type="ObjectFlow_NameLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_FILDdMXYEeWwx_puHDzFYw" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_FILDdcXYEeWwx_puHDzFYw" visible="false" type="ObjectFlow_WeightLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_FILDdsXYEeWwx_puHDzFYw" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_FILqgMXYEeWwx_puHDzFYw" type="ObjectFlow_SelectionLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_FILqgcXYEeWwx_puHDzFYw" x="20" y="40"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_FILqgsXYEeWwx_puHDzFYw" type="ObjectFlow_TransformationLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_FILqg8XYEeWwx_puHDzFYw" x="-20" y="-60"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_FILqhMXYEeWwx_puHDzFYw" type="ObjectFlow_KeywordLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_FILqhcXYEeWwx_puHDzFYw" y="-20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_FILqhsXYEeWwx_puHDzFYw" visible="false" type="ObjectFlow_GuardLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_FILqh8XYEeWwx_puHDzFYw" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_FILqiMXYEeWwx_puHDzFYw" type="ObjectFlow_StereotypeLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_FILqicXYEeWwx_puHDzFYw" y="-20"/>
-      </children>
-      <styles xmi:type="notation:FontStyle" xmi:id="_FILDccXYEeWwx_puHDzFYw"/>
-      <element xmi:type="uml:ObjectFlow" href="TankBarrelExample.uml#_FHrUMMXYEeWwx_puHDzFYw"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_FILDcsXYEeWwx_puHDzFYw" points="[157, 483, -643984, -643984]$[227, 476, -643984, -643984]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_om9OkM5PEeWaRpodR1S6WA" id="(0.8125,0.6875)"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_pFVMoM5PEeWaRpodR1S6WA" id="(0.0,0.75)"/>
-    </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_HGDFYMXYEeWwx_puHDzFYw" type="ObjectFlow_Edge" source="_uIy9oMXXEeWwx_puHDzFYw" target="_mJioEsXXEeWwx_puHDzFYw">
-      <children xmi:type="notation:DecorationNode" xmi:id="_HGDFY8XYEeWwx_puHDzFYw" type="ObjectFlow_NameLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_HGDFZMXYEeWwx_puHDzFYw" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_HGDFZcXYEeWwx_puHDzFYw" visible="false" type="ObjectFlow_WeightLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_HGDFZsXYEeWwx_puHDzFYw" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_HGDFZ8XYEeWwx_puHDzFYw" type="ObjectFlow_SelectionLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_HGDFaMXYEeWwx_puHDzFYw" x="20" y="40"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_HGDFacXYEeWwx_puHDzFYw" type="ObjectFlow_TransformationLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_HGDFasXYEeWwx_puHDzFYw" x="-20" y="-60"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_HGDFa8XYEeWwx_puHDzFYw" type="ObjectFlow_KeywordLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_HGDFbMXYEeWwx_puHDzFYw" y="-20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_HGDFbcXYEeWwx_puHDzFYw" visible="false" type="ObjectFlow_GuardLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_HGDFbsXYEeWwx_puHDzFYw" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_HGDFb8XYEeWwx_puHDzFYw" type="ObjectFlow_StereotypeLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_HGDFcMXYEeWwx_puHDzFYw" y="-20"/>
-      </children>
-      <styles xmi:type="notation:FontStyle" xmi:id="_HGDFYcXYEeWwx_puHDzFYw"/>
-      <element xmi:type="uml:ObjectFlow" href="TankBarrelExample.uml#_HFo1sMXYEeWwx_puHDzFYw"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_HGDFYsXYEeWwx_puHDzFYw" points="[165, 529, -643984, -643984]$[222, 529, -643984, -643984]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nDa_QM5PEeWaRpodR1S6WA" id="(0.9375,0.625)"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_nbA_4M5PEeWaRpodR1S6WA" id="(0.125,0.6875)"/>
-    </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_Klx7oMXYEeWwx_puHDzFYw" type="ObjectFlow_Edge" source="_4naRkMXXEeWwx_puHDzFYw" target="_y265oMXXEeWwx_puHDzFYw">
-      <children xmi:type="notation:DecorationNode" xmi:id="_KlyisMXYEeWwx_puHDzFYw" type="ObjectFlow_NameLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_KlyiscXYEeWwx_puHDzFYw" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_KlyissXYEeWwx_puHDzFYw" visible="false" type="ObjectFlow_WeightLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_Klyis8XYEeWwx_puHDzFYw" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_KlyitMXYEeWwx_puHDzFYw" type="ObjectFlow_SelectionLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_KlyitcXYEeWwx_puHDzFYw" x="20" y="40"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_KlyitsXYEeWwx_puHDzFYw" type="ObjectFlow_TransformationLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_Klyit8XYEeWwx_puHDzFYw" x="-20" y="-60"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_KlyiuMXYEeWwx_puHDzFYw" type="ObjectFlow_KeywordLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_KlyiucXYEeWwx_puHDzFYw" y="-20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_KlyiusXYEeWwx_puHDzFYw" visible="false" type="ObjectFlow_GuardLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_Klyiu8XYEeWwx_puHDzFYw" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_KlyivMXYEeWwx_puHDzFYw" type="ObjectFlow_StereotypeLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_KlyivcXYEeWwx_puHDzFYw" y="-20"/>
-      </children>
-      <styles xmi:type="notation:FontStyle" xmi:id="_Klx7ocXYEeWwx_puHDzFYw"/>
-      <element xmi:type="uml:ObjectFlow" href="TankBarrelExample.uml#_KlY6EMXYEeWwx_puHDzFYw"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Klx7osXYEeWwx_puHDzFYw" points="[157, 747, -643984, -643984]$[227, 740, -643984, -643984]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_lzkg8M5PEeWaRpodR1S6WA" id="(0.9375,0.4375)"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mMhMcM5PEeWaRpodR1S6WA" id="(0.0625,0.5625)"/>
-    </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_MTD80MXYEeWwx_puHDzFYw" type="ObjectFlow_Edge" source="_61xmkMXXEeWwx_puHDzFYw" target="_y27gsMXXEeWwx_puHDzFYw">
-      <children xmi:type="notation:DecorationNode" xmi:id="_MTD808XYEeWwx_puHDzFYw" type="ObjectFlow_NameLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_MTD81MXYEeWwx_puHDzFYw" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_MTD81cXYEeWwx_puHDzFYw" visible="false" type="ObjectFlow_WeightLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_MTD81sXYEeWwx_puHDzFYw" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_MTD818XYEeWwx_puHDzFYw" type="ObjectFlow_SelectionLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_MTD82MXYEeWwx_puHDzFYw" x="20" y="40"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_MTD82cXYEeWwx_puHDzFYw" type="ObjectFlow_TransformationLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_MTD82sXYEeWwx_puHDzFYw" x="-20" y="-60"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_MTD828XYEeWwx_puHDzFYw" type="ObjectFlow_KeywordLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_MTD83MXYEeWwx_puHDzFYw" y="-20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_MTD83cXYEeWwx_puHDzFYw" visible="false" type="ObjectFlow_GuardLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_MTD83sXYEeWwx_puHDzFYw" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_MTD838XYEeWwx_puHDzFYw" type="ObjectFlow_StereotypeLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_MTD84MXYEeWwx_puHDzFYw" y="-20"/>
-      </children>
-      <styles xmi:type="notation:FontStyle" xmi:id="_MTD80cXYEeWwx_puHDzFYw"/>
-      <element xmi:type="uml:ObjectFlow" href="TankBarrelExample.uml#_MSnQ4MXYEeWwx_puHDzFYw"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_MTD80sXYEeWwx_puHDzFYw" points="[160, 789, -643984, -643984]$[226, 796, -643984, -643984]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_joxdUM5PEeWaRpodR1S6WA" id="(0.9375,0.4375)"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kV7eQM5PEeWaRpodR1S6WA" id="(0.0625,0.5625)"/>
-    </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_Pz93wMXYEeWwx_puHDzFYw" type="ControlFlow_Edge" source="_x6RvYMXQEeWwx_puHDzFYw" target="_ibQ_gMXXEeWwx_puHDzFYw">
-      <children xmi:type="notation:DecorationNode" xmi:id="_Pz93w8XYEeWwx_puHDzFYw" type="ControlFlow_NameLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_Pz93xMXYEeWwx_puHDzFYw" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_Pz93xcXYEeWwx_puHDzFYw" type="ControlFlow_WeightLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_Pz93xsXYEeWwx_puHDzFYw" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_Pz93x8XYEeWwx_puHDzFYw" type="ControlFlow_GuardLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_Pz93yMXYEeWwx_puHDzFYw" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_Pz93ycXYEeWwx_puHDzFYw" type="ControlFlow_StereotypeLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_Pz93ysXYEeWwx_puHDzFYw" y="-20"/>
-      </children>
-      <styles xmi:type="notation:FontStyle" xmi:id="_Pz93wcXYEeWwx_puHDzFYw"/>
-      <element xmi:type="uml:ControlFlow" href="TankBarrelExample.uml#_PzgkwMXYEeWwx_puHDzFYw"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Pz93wsXYEeWwx_puHDzFYw" points="[240, 398, -643984, -643984]$[240, 430, -643984, -643984]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_P0xJAMXYEeWwx_puHDzFYw" id="(0.47843478260869576,0.9148936170212766)"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_P0xJAcXYEeWwx_puHDzFYw" id="(0.4763996426444313,0.0)"/>
-    </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_QZMrwMXYEeWwx_puHDzFYw" type="ControlFlow_Edge" source="_ibQ_gMXXEeWwx_puHDzFYw" target="_yIP58MXQEeWwx_puHDzFYw">
-      <children xmi:type="notation:DecorationNode" xmi:id="_QZMrw8XYEeWwx_puHDzFYw" type="ControlFlow_NameLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_QZMrxMXYEeWwx_puHDzFYw" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_QZMrxcXYEeWwx_puHDzFYw" type="ControlFlow_WeightLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_QZMrxsXYEeWwx_puHDzFYw" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_QZMrx8XYEeWwx_puHDzFYw" type="ControlFlow_GuardLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_QZMryMXYEeWwx_puHDzFYw" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_QZMrycXYEeWwx_puHDzFYw" type="ControlFlow_StereotypeLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_QZMrysXYEeWwx_puHDzFYw" y="-20"/>
-      </children>
-      <styles xmi:type="notation:FontStyle" xmi:id="_QZMrwcXYEeWwx_puHDzFYw"/>
-      <element xmi:type="uml:ControlFlow" href="TankBarrelExample.uml#_QYv_0MXYEeWwx_puHDzFYw"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QZMrwsXYEeWwx_puHDzFYw" points="[238, 565, -643984, -643984]$[241, 600, -643984, -643984]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QZ_9AMXYEeWwx_puHDzFYw" id="(0.4794520547945205,1.0)"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QZ_9AcXYEeWwx_puHDzFYw" id="(0.487304347826087,0.0425531914893617)"/>
-    </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_QyzekMXYEeWwx_puHDzFYw" type="ControlFlow_Edge" source="_yIP58MXQEeWwx_puHDzFYw" target="_xGTQkMXXEeWwx_puHDzFYw">
-      <children xmi:type="notation:DecorationNode" xmi:id="_Qy0FoMXYEeWwx_puHDzFYw" type="ControlFlow_NameLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_Qy0FocXYEeWwx_puHDzFYw" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_Qy0FosXYEeWwx_puHDzFYw" type="ControlFlow_WeightLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_Qy0Fo8XYEeWwx_puHDzFYw" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_Qy0FpMXYEeWwx_puHDzFYw" type="ControlFlow_GuardLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_Qy0FpcXYEeWwx_puHDzFYw" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_Qy0FpsXYEeWwx_puHDzFYw" type="ControlFlow_StereotypeLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_Qy0Fp8XYEeWwx_puHDzFYw" y="-20"/>
-      </children>
-      <styles xmi:type="notation:FontStyle" xmi:id="_QyzekcXYEeWwx_puHDzFYw"/>
-      <element xmi:type="uml:ControlFlow" href="TankBarrelExample.uml#_QyYn0MXYEeWwx_puHDzFYw"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QyzeksXYEeWwx_puHDzFYw" points="[242, 641, -643984, -643984]$[240, 689, -643984, -643984]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QznW4MXYEeWwx_puHDzFYw" id="(0.4932459016393443,0.9148936170212766)"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QznW4cXYEeWwx_puHDzFYw" id="(0.4828767123287671,0.0)"/>
-    </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_RTSVcMXYEeWwx_puHDzFYw" type="ControlFlow_Edge" source="_xGTQkMXXEeWwx_puHDzFYw" target="_hdHAEMXVEeWwx_puHDzFYw">
-      <children xmi:type="notation:DecorationNode" xmi:id="_RTSVc8XYEeWwx_puHDzFYw" type="ControlFlow_NameLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_RTSVdMXYEeWwx_puHDzFYw" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_RTSVdcXYEeWwx_puHDzFYw" type="ControlFlow_WeightLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_RTSVdsXYEeWwx_puHDzFYw" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_RTSVd8XYEeWwx_puHDzFYw" type="ControlFlow_GuardLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_RTSVeMXYEeWwx_puHDzFYw" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_RTSVecXYEeWwx_puHDzFYw" type="ControlFlow_StereotypeLabel">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_RTSVesXYEeWwx_puHDzFYw" y="-20"/>
-      </children>
-      <styles xmi:type="notation:FontStyle" xmi:id="_RTSVccXYEeWwx_puHDzFYw"/>
-      <element xmi:type="uml:ControlFlow" href="TankBarrelExample.uml#_RS1CcMXYEeWwx_puHDzFYw"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_RTSVcsXYEeWwx_puHDzFYw" points="[393, 751, -643984, -643984]$[444, 751, -643984, -643984]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RUkH0MXYEeWwx_puHDzFYw" id="(1.0,0.46567164179104514)"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_RUkH0cXYEeWwx_puHDzFYw" id="(0.07740740740740648,0.654814814814813)"/>
-    </edges>
-  </notation:Diagram>
-  <notation:Diagram xmi:id="_E0DhcMaEEeWfFdnv26Efug" type="PapyrusUMLActivityDiagram" name="C2 Classifier Behavior diagram" measurementUnit="Pixel">
-    <children xmi:type="notation:Shape" xmi:id="_E0DhccaEEeWfFdnv26Efug" type="2001">
-      <children xmi:type="notation:DecorationNode" xmi:id="_E0DhcsaEEeWfFdnv26Efug" type="5001"/>
-      <children xmi:type="notation:BasicCompartment" xmi:id="_E0DhdMaEEeWfFdnv26Efug" type="7001">
-        <styles xmi:type="notation:SortingStyle" xmi:id="_E0DhdcaEEeWfFdnv26Efug"/>
-        <styles xmi:type="notation:FilteringStyle" xmi:id="_E0DhdsaEEeWfFdnv26Efug"/>
-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_E0Dhd8aEEeWfFdnv26Efug"/>
-      </children>
-      <children xmi:type="notation:BasicCompartment" xmi:id="_E0DheMaEEeWfFdnv26Efug" type="7002">
-        <styles xmi:type="notation:SortingStyle" xmi:id="_E0DhecaEEeWfFdnv26Efug"/>
-        <styles xmi:type="notation:FilteringStyle" xmi:id="_E0DhesaEEeWfFdnv26Efug"/>
-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_E0Dhe8aEEeWfFdnv26Efug"/>
-      </children>
-      <children xmi:type="notation:BasicCompartment" xmi:id="_E0DhfMaEEeWfFdnv26Efug" type="7003">
-        <styles xmi:type="notation:SortingStyle" xmi:id="_E0DhfcaEEeWfFdnv26Efug"/>
-        <styles xmi:type="notation:FilteringStyle" xmi:id="_E0DhfsaEEeWfFdnv26Efug"/>
-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_E0Dhf8aEEeWfFdnv26Efug"/>
-      </children>
-      <children xmi:type="notation:BasicCompartment" xmi:id="_E0DhgMaEEeWfFdnv26Efug" type="7004">
-        <children xmi:type="notation:Shape" xmi:id="_NmOhsMaEEeWfFdnv26Efug" type="3080">
-          <children xmi:type="notation:DecorationNode" xmi:id="_NmPIwMaEEeWfFdnv26Efug" type="5138"/>
-          <element xmi:type="uml:Comment" href="TankBarrelExample.uml#_NmKQQMaEEeWfFdnv26Efug"/>
-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NmOhscaEEeWfFdnv26Efug" x="426" y="31"/>
-        </children>
-        <children xmi:type="notation:Shape" xmi:id="_tNOkoMaEEeWfFdnv26Efug" type="3063">
-          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_yIkdQMaEEeWfFdnv26Efug" source="PapyrusCSSForceValue">
-            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_yIlEUMaEEeWfFdnv26Efug" key="mutable" value="true"/>
-          </eAnnotations>
-          <children xmi:type="notation:DecorationNode" xmi:id="_tNOko8aEEeWfFdnv26Efug" type="5078"/>
-          <children xmi:type="notation:DecorationNode" xmi:id="_tNPLsMaEEeWfFdnv26Efug" type="5079">
-            <layoutConstraint xmi:type="notation:Location" xmi:id="_tNPLscaEEeWfFdnv26Efug" x="92" y="14"/>
-          </children>
-          <children xmi:type="notation:DecorationNode" xmi:id="_tNPLssaEEeWfFdnv26Efug" type="5115">
-            <layoutConstraint xmi:type="notation:Location" xmi:id="_tNPLs8aEEeWfFdnv26Efug" y="5"/>
-          </children>
-          <children xmi:type="notation:DecorationNode" xmi:id="_tNPLtMaEEeWfFdnv26Efug" type="6040">
-            <layoutConstraint xmi:type="notation:Location" xmi:id="_tNPLtcaEEeWfFdnv26Efug" y="5"/>
-          </children>
-          <children xmi:type="notation:BasicCompartment" xmi:id="_tNcnEMaEEeWfFdnv26Efug" type="compartment_shape_display">
-            <styles xmi:type="notation:TitleStyle" xmi:id="_tNcnEcaEEeWfFdnv26Efug"/>
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tNcnEsaEEeWfFdnv26Efug"/>
-          </children>
-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_tNOkocaEEeWfFdnv26Efug"/>
-          <element xmi:type="uml:AcceptEventAction" href="TankBarrelExample.uml#_tNIeAMaEEeWfFdnv26Efug"/>
-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tNOkosaEEeWfFdnv26Efug" x="151" y="121"/>
-        </children>
-        <children xmi:type="notation:Shape" xmi:id="_-HgUcMaEEeWfFdnv26Efug" type="3063">
-          <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_B10ZQMaFEeWfFdnv26Efug" source="PapyrusCSSForceValue">
-            <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_B10ZQcaFEeWfFdnv26Efug" key="mutable" value="true"/>
-          </eAnnotations>
-          <children xmi:type="notation:DecorationNode" xmi:id="_-Hg7gMaEEeWfFdnv26Efug" type="5078"/>
-          <children xmi:type="notation:DecorationNode" xmi:id="_-Hg7gcaEEeWfFdnv26Efug" type="5079">
-            <layoutConstraint xmi:type="notation:Location" xmi:id="_-Hg7gsaEEeWfFdnv26Efug" x="91" y="15"/>
-          </children>
-          <children xmi:type="notation:DecorationNode" xmi:id="_-Hg7g8aEEeWfFdnv26Efug" type="5115">
-            <layoutConstraint xmi:type="notation:Location" xmi:id="_-Hg7hMaEEeWfFdnv26Efug" y="5"/>
-          </children>
-          <children xmi:type="notation:DecorationNode" xmi:id="_-HhikMaEEeWfFdnv26Efug" type="6040">
-            <layoutConstraint xmi:type="notation:Location" xmi:id="_-HhikcaEEeWfFdnv26Efug" y="5"/>
-          </children>
-          <children xmi:type="notation:BasicCompartment" xmi:id="_-HmbEMaEEeWfFdnv26Efug" type="compartment_shape_display">
-            <styles xmi:type="notation:TitleStyle" xmi:id="_-HmbEcaEEeWfFdnv26Efug"/>
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-HmbEsaEEeWfFdnv26Efug"/>
-          </children>
-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_-HgUccaEEeWfFdnv26Efug"/>
-          <element xmi:type="uml:AcceptEventAction" href="TankBarrelExample.uml#_9nmsYMaEEeWfFdnv26Efug"/>
-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-HgUcsaEEeWfFdnv26Efug" x="151" y="358"/>
-        </children>
-        <children xmi:type="notation:Shape" xmi:id="_ITJpEMaFEeWfFdnv26Efug" type="3004">
-          <children xmi:type="notation:DecorationNode" xmi:id="_ITKQIMaFEeWfFdnv26Efug" type="6034">
-            <layoutConstraint xmi:type="notation:Location" xmi:id="_ITKQIcaFEeWfFdnv26Efug" y="5"/>
-          </children>
-          <children xmi:type="notation:DecorationNode" xmi:id="_ITKQIsaFEeWfFdnv26Efug" type="5080">
-            <layoutConstraint xmi:type="notation:Location" xmi:id="_ITKQI8aFEeWfFdnv26Efug" y="5"/>
-          </children>
-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_ITJpEcaFEeWfFdnv26Efug"/>
-          <element xmi:type="uml:InitialNode" href="TankBarrelExample.uml#_ITC7YMaFEeWfFdnv26Efug"/>
-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ITJpEsaFEeWfFdnv26Efug" x="204" y="50"/>
-        </children>
-        <children xmi:type="notation:Shape" xmi:id="_KilVEMaFEeWfFdnv26Efug" type="3065">
-          <children xmi:type="notation:DecorationNode" xmi:id="_KilVE8aFEeWfFdnv26Efug" type="5117"/>
-          <children xmi:type="notation:BasicCompartment" xmi:id="_KilVFMaFEeWfFdnv26Efug" type="7005">
-            <children xmi:type="notation:Shape" xmi:id="_Q46lAMaFEeWfFdnv26Efug" type="3081">
-              <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Q6JUEMaFEeWfFdnv26Efug" source="PapyrusCSSForceValue">
-                <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Q6JUEcaFEeWfFdnv26Efug" key="mutable" value="true"/>
-              </eAnnotations>
-              <children xmi:type="notation:DecorationNode" xmi:id="_Q46lA8aFEeWfFdnv26Efug" type="5139"/>
-              <children xmi:type="notation:DecorationNode" xmi:id="_Q46lBMaFEeWfFdnv26Efug" type="6025">
-                <layoutConstraint xmi:type="notation:Location" xmi:id="_Q46lBcaFEeWfFdnv26Efug" y="5"/>
-              </children>
-              <children xmi:type="notation:BasicCompartment" xmi:id="_Q5B5wMaFEeWfFdnv26Efug" type="compartment_shape_display">
-                <styles xmi:type="notation:TitleStyle" xmi:id="_Q5B5wcaFEeWfFdnv26Efug"/>
-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Q5B5wsaFEeWfFdnv26Efug"/>
-              </children>
-              <children xmi:type="notation:Shape" xmi:id="_Q5DH4MaFEeWfFdnv26Efug" type="3084">
-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Q6JUEsaFEeWfFdnv26Efug" source="PapyrusCSSForceValue">
-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Q6JUE8aFEeWfFdnv26Efug" key="mutable" value="true"/>
-                </eAnnotations>
-                <children xmi:type="notation:DecorationNode" xmi:id="_Q5DH48aFEeWfFdnv26Efug" visible="false" type="5144">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_Q5DH5MaFEeWfFdnv26Efug" y="5"/>
-                </children>
-                <children xmi:type="notation:DecorationNode" xmi:id="_Q5DH5caFEeWfFdnv26Efug" type="5145">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_Q5DH5saFEeWfFdnv26Efug" y="5"/>
-                </children>
-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_Q5DH4caFEeWfFdnv26Efug"/>
-                <element xmi:type="uml:OutputPin" href="TankBarrelExample.uml#_Q4yCIMaFEeWfFdnv26Efug"/>
-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Q5DH4saFEeWfFdnv26Efug"/>
-              </children>
-              <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_Q46lAcaFEeWfFdnv26Efug"/>
-              <element xmi:type="uml:ReadSelfAction" href="TankBarrelExample.uml#_Q4mb8MaFEeWfFdnv26Efug"/>
-              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Q46lAsaFEeWfFdnv26Efug" x="12" width="28"/>
-            </children>
-            <children xmi:type="notation:Shape" xmi:id="_St5wsMaFEeWfFdnv26Efug" type="3076">
-              <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SvDAMMaFEeWfFdnv26Efug" source="PapyrusCSSForceValue">
-                <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SvDAMcaFEeWfFdnv26Efug" key="mutable" value="true"/>
-              </eAnnotations>
-              <children xmi:type="notation:DecorationNode" xmi:id="_St5ws8aFEeWfFdnv26Efug" type="5126"/>
-              <children xmi:type="notation:DecorationNode" xmi:id="_St5wtMaFEeWfFdnv26Efug" type="6026">
-                <layoutConstraint xmi:type="notation:Location" xmi:id="_St5wtcaFEeWfFdnv26Efug" y="5"/>
-              </children>
-              <children xmi:type="notation:BasicCompartment" xmi:id="_SuBsgMaFEeWfFdnv26Efug" type="compartment_shape_display">
-                <styles xmi:type="notation:TitleStyle" xmi:id="_SuBsgcaFEeWfFdnv26Efug"/>
-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SuBsgsaFEeWfFdnv26Efug"/>
-              </children>
-              <children xmi:type="notation:Shape" xmi:id="_SuCTkMaFEeWfFdnv26Efug" type="3077">
-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SvDAMsaFEeWfFdnv26Efug" source="PapyrusCSSForceValue">
-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_SvDAM8aFEeWfFdnv26Efug" key="mutable" value="true"/>
-                </eAnnotations>
-                <children xmi:type="notation:DecorationNode" xmi:id="_SuCTk8aFEeWfFdnv26Efug" visible="false" type="5124">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_SuC6oMaFEeWfFdnv26Efug" y="5"/>
-                </children>
-                <children xmi:type="notation:DecorationNode" xmi:id="_SuC6ocaFEeWfFdnv26Efug" type="5125">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_SuC6osaFEeWfFdnv26Efug" y="5"/>
-                </children>
-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_SuCTkcaFEeWfFdnv26Efug"/>
-                <element xmi:type="uml:OutputPin" href="TankBarrelExample.uml#_StuKgMaFEeWfFdnv26Efug"/>
-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SuCTksaFEeWfFdnv26Efug"/>
-              </children>
-              <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_St5wscaFEeWfFdnv26Efug"/>
-              <element xmi:type="uml:ValueSpecificationAction" href="TankBarrelExample.uml#_StruQMaFEeWfFdnv26Efug"/>
-              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_St5wssaFEeWfFdnv26Efug" x="12" y="43"/>
-            </children>
-            <children xmi:type="notation:Shape" xmi:id="_ZE-AcMaFEeWfFdnv26Efug" type="3091">
-              <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZKuqMMaFEeWfFdnv26Efug" source="PapyrusCSSForceValue">
-                <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZKuqMcaFEeWfFdnv26Efug" key="mutable" value="true"/>
-              </eAnnotations>
-              <children xmi:type="notation:DecorationNode" xmi:id="_ZE-Ac8aFEeWfFdnv26Efug" type="5160"/>
-              <children xmi:type="notation:DecorationNode" xmi:id="_ZE-ngMaFEeWfFdnv26Efug" type="6019">
-                <layoutConstraint xmi:type="notation:Location" xmi:id="_ZE-ngcaFEeWfFdnv26Efug" y="5"/>
-              </children>
-              <children xmi:type="notation:BasicCompartment" xmi:id="_ZFLb0MaFEeWfFdnv26Efug" type="compartment_shape_display">
-                <styles xmi:type="notation:TitleStyle" xmi:id="_ZFLb0caFEeWfFdnv26Efug"/>
-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZFLb0saFEeWfFdnv26Efug"/>
-              </children>
-              <children xmi:type="notation:Shape" xmi:id="_ZIDwsMaFEeWfFdnv26Efug" type="3092">
-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZKuqMsaFEeWfFdnv26Efug" source="PapyrusCSSForceValue">
-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZKuqM8aFEeWfFdnv26Efug" key="mutable" value="true"/>
-                </eAnnotations>
-                <children xmi:type="notation:DecorationNode" xmi:id="_ZIDws8aFEeWfFdnv26Efug" type="5154">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_ZIDwtMaFEeWfFdnv26Efug" x="18" y="-2"/>
-                </children>
-                <children xmi:type="notation:DecorationNode" xmi:id="_ZIEXwMaFEeWfFdnv26Efug" type="5155">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_ZIEXwcaFEeWfFdnv26Efug" y="5"/>
-                </children>
-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_ZIDwscaFEeWfFdnv26Efug"/>
-                <element xmi:type="uml:InputPin" href="TankBarrelExample.uml#_ZEyaQMaFEeWfFdnv26Efug"/>
-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZIDwssaFEeWfFdnv26Efug" x="-15" y="12"/>
-              </children>
-              <children xmi:type="notation:Shape" xmi:id="_ZIEXwsaFEeWfFdnv26Efug" type="3093">
-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZKuqNMaFEeWfFdnv26Efug" source="PapyrusCSSForceValue">
-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZKuqNcaFEeWfFdnv26Efug" key="mutable" value="true"/>
-                </eAnnotations>
-                <children xmi:type="notation:DecorationNode" xmi:id="_ZIEXxcaFEeWfFdnv26Efug" type="5156">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_ZIEXxsaFEeWfFdnv26Efug" x="21" y="-2"/>
-                </children>
-                <children xmi:type="notation:DecorationNode" xmi:id="_ZIE-0MaFEeWfFdnv26Efug" type="5157">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_ZIE-0caFEeWfFdnv26Efug" y="5"/>
-                </children>
-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_ZIEXw8aFEeWfFdnv26Efug"/>
-                <element xmi:type="uml:InputPin" href="TankBarrelExample.uml#_ZE3SwMaFEeWfFdnv26Efug"/>
-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZIEXxMaFEeWfFdnv26Efug" x="-15" y="52"/>
-              </children>
-              <children xmi:type="notation:Shape" xmi:id="_ZIE-0saFEeWfFdnv26Efug" type="3094">
-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ZKuqNsaFEeWfFdnv26Efug" source="PapyrusCSSForceValue">
-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ZKuqN8aFEeWfFdnv26Efug" key="mutable" value="true"/>
-                </eAnnotations>
-                <children xmi:type="notation:DecorationNode" xmi:id="_ZIE-1caFEeWfFdnv26Efug" visible="false" type="5158">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_ZIE-1saFEeWfFdnv26Efug" y="5"/>
-                </children>
-                <children xmi:type="notation:DecorationNode" xmi:id="_ZIE-18aFEeWfFdnv26Efug" type="5159">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_ZIE-2MaFEeWfFdnv26Efug" y="5"/>
-                </children>
-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_ZIE-08aFEeWfFdnv26Efug"/>
-                <element xmi:type="uml:OutputPin" href="TankBarrelExample.uml#_ZE02gMaFEeWfFdnv26Efug"/>
-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZIE-1MaFEeWfFdnv26Efug" x="86" y="28"/>
-              </children>
-              <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_ZE-AccaFEeWfFdnv26Efug"/>
-              <element xmi:type="uml:AddStructuralFeatureValueAction" href="TankBarrelExample.uml#_ZEp3YMaFEeWfFdnv26Efug"/>
-              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZE-AcsaFEeWfFdnv26Efug" x="119" y="7" width="87" height="75"/>
-            </children>
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KilVFcaFEeWfFdnv26Efug"/>
-          </children>
-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_KilVEcaFEeWfFdnv26Efug"/>
-          <element xmi:type="uml:StructuredActivityNode" href="TankBarrelExample.uml#_KiYgwMaFEeWfFdnv26Efug"/>
-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KilVEsaFEeWfFdnv26Efug" x="86" y="204" width="255" height="124"/>
-        </children>
-        <children xmi:type="notation:Shape" xmi:id="_LaemYMaFEeWfFdnv26Efug" type="3065">
-          <children xmi:type="notation:DecorationNode" xmi:id="_LaemY8aFEeWfFdnv26Efug" type="5117"/>
-          <children xmi:type="notation:BasicCompartment" xmi:id="_LaemZMaFEeWfFdnv26Efug" type="7005">
-            <children xmi:type="notation:Shape" xmi:id="_fUoAoMaFEeWfFdnv26Efug" type="3081">
-              <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fVwCAMaFEeWfFdnv26Efug" source="PapyrusCSSForceValue">
-                <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fVwCAcaFEeWfFdnv26Efug" key="mutable" value="true"/>
-              </eAnnotations>
-              <children xmi:type="notation:DecorationNode" xmi:id="_fUoAo8aFEeWfFdnv26Efug" type="5139"/>
-              <children xmi:type="notation:DecorationNode" xmi:id="_fUoApMaFEeWfFdnv26Efug" type="6025">
-                <layoutConstraint xmi:type="notation:Location" xmi:id="_fUoApcaFEeWfFdnv26Efug" y="5"/>
-              </children>
-              <children xmi:type="notation:BasicCompartment" xmi:id="_fUzm0MaFEeWfFdnv26Efug" type="compartment_shape_display">
-                <styles xmi:type="notation:TitleStyle" xmi:id="_fUzm0caFEeWfFdnv26Efug"/>
-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fUzm0saFEeWfFdnv26Efug"/>
-              </children>
-              <children xmi:type="notation:Shape" xmi:id="_fU0N4MaFEeWfFdnv26Efug" type="3084">
-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_fVwCAsaFEeWfFdnv26Efug" source="PapyrusCSSForceValue">
-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_fVwCA8aFEeWfFdnv26Efug" key="mutable" value="true"/>
-                </eAnnotations>
-                <children xmi:type="notation:DecorationNode" xmi:id="_fU0N48aFEeWfFdnv26Efug" visible="false" type="5144">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_fU0N5MaFEeWfFdnv26Efug" y="5"/>
-                </children>
-                <children xmi:type="notation:DecorationNode" xmi:id="_fU0N5caFEeWfFdnv26Efug" type="5145">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_fU0N5saFEeWfFdnv26Efug" y="5"/>
-                </children>
-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_fU0N4caFEeWfFdnv26Efug"/>
-                <element xmi:type="uml:OutputPin" href="TankBarrelExample.uml#_fUT3kMaFEeWfFdnv26Efug"/>
-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fU0N4saFEeWfFdnv26Efug"/>
-              </children>
-              <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_fUoAocaFEeWfFdnv26Efug"/>
-              <element xmi:type="uml:ReadSelfAction" href="TankBarrelExample.uml#_fUSpcMaFEeWfFdnv26Efug"/>
-              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fUoAosaFEeWfFdnv26Efug" x="12" y="2" width="28"/>
-            </children>
-            <children xmi:type="notation:Shape" xmi:id="_hChs4MaFEeWfFdnv26Efug" type="3076">
-              <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hD4-0MaFEeWfFdnv26Efug" source="PapyrusCSSForceValue">
-                <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hD4-0caFEeWfFdnv26Efug" key="mutable" value="true"/>
-              </eAnnotations>
-              <children xmi:type="notation:DecorationNode" xmi:id="_hCiT8MaFEeWfFdnv26Efug" type="5126"/>
-              <children xmi:type="notation:DecorationNode" xmi:id="_hCiT8caFEeWfFdnv26Efug" type="6026">
-                <layoutConstraint xmi:type="notation:Location" xmi:id="_hCiT8saFEeWfFdnv26Efug" y="5"/>
-              </children>
-              <children xmi:type="notation:BasicCompartment" xmi:id="_hCyyoMaFEeWfFdnv26Efug" type="compartment_shape_display">
-                <styles xmi:type="notation:TitleStyle" xmi:id="_hCyyocaFEeWfFdnv26Efug"/>
-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hCyyosaFEeWfFdnv26Efug"/>
-              </children>
-              <children xmi:type="notation:Shape" xmi:id="_hCzZsMaFEeWfFdnv26Efug" type="3077">
-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hD4-0saFEeWfFdnv26Efug" source="PapyrusCSSForceValue">
-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_hD4-08aFEeWfFdnv26Efug" key="mutable" value="true"/>
-                </eAnnotations>
-                <children xmi:type="notation:DecorationNode" xmi:id="_hCzZs8aFEeWfFdnv26Efug" visible="false" type="5124">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_hCzZtMaFEeWfFdnv26Efug" y="5"/>
-                </children>
-                <children xmi:type="notation:DecorationNode" xmi:id="_hCzZtcaFEeWfFdnv26Efug" type="5125">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_hCzZtsaFEeWfFdnv26Efug" y="5"/>
-                </children>
-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_hCzZscaFEeWfFdnv26Efug"/>
-                <element xmi:type="uml:OutputPin" href="TankBarrelExample.uml#_hCQnIMaFEeWfFdnv26Efug"/>
-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hCzZssaFEeWfFdnv26Efug"/>
-              </children>
-              <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_hChs4caFEeWfFdnv26Efug"/>
-              <element xmi:type="uml:ValueSpecificationAction" href="TankBarrelExample.uml#_hCPZAMaFEeWfFdnv26Efug"/>
-              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hChs4saFEeWfFdnv26Efug" x="12" y="50" width="28"/>
-            </children>
-            <children xmi:type="notation:Shape" xmi:id="_p4j5cMaFEeWfFdnv26Efug" type="3091">
-              <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_p60jQMaFEeWfFdnv26Efug" source="PapyrusCSSForceValue">
-                <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_p60jQcaFEeWfFdnv26Efug" key="mutable" value="true"/>
-              </eAnnotations>
-              <children xmi:type="notation:DecorationNode" xmi:id="_p4lHkMaFEeWfFdnv26Efug" type="5160"/>
-              <children xmi:type="notation:DecorationNode" xmi:id="_p4lHkcaFEeWfFdnv26Efug" type="6019">
-                <layoutConstraint xmi:type="notation:Location" xmi:id="_p4lHksaFEeWfFdnv26Efug" y="5"/>
-              </children>
-              <children xmi:type="notation:BasicCompartment" xmi:id="_p47s4MaFEeWfFdnv26Efug" type="compartment_shape_display">
-                <styles xmi:type="notation:TitleStyle" xmi:id="_p47s4caFEeWfFdnv26Efug"/>
-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_p47s4saFEeWfFdnv26Efug"/>
-              </children>
-              <children xmi:type="notation:Shape" xmi:id="_p48T8MaFEeWfFdnv26Efug" type="3092">
-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_p60jQsaFEeWfFdnv26Efug" source="PapyrusCSSForceValue">
-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_p60jQ8aFEeWfFdnv26Efug" key="mutable" value="true"/>
-                </eAnnotations>
-                <children xmi:type="notation:DecorationNode" xmi:id="_p48T88aFEeWfFdnv26Efug" type="5154">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_p48T9MaFEeWfFdnv26Efug" x="20" y="-3"/>
-                </children>
-                <children xmi:type="notation:DecorationNode" xmi:id="_p48T9caFEeWfFdnv26Efug" type="5155">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_p48T9saFEeWfFdnv26Efug" y="5"/>
-                </children>
-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_p48T8caFEeWfFdnv26Efug"/>
-                <element xmi:type="uml:InputPin" href="TankBarrelExample.uml#_p4Y6UMaFEeWfFdnv26Efug"/>
-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_p48T8saFEeWfFdnv26Efug" x="-15" y="9"/>
-              </children>
-              <children xmi:type="notation:Shape" xmi:id="_p487AMaFEeWfFdnv26Efug" type="3093">
-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_p60jRMaFEeWfFdnv26Efug" source="PapyrusCSSForceValue">
-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_p60jRcaFEeWfFdnv26Efug" key="mutable" value="true"/>
-                </eAnnotations>
-                <children xmi:type="notation:DecorationNode" xmi:id="_p487A8aFEeWfFdnv26Efug" type="5156">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_p487BMaFEeWfFdnv26Efug" x="22" y="-2"/>
-                </children>
-                <children xmi:type="notation:DecorationNode" xmi:id="_p487BcaFEeWfFdnv26Efug" type="5157">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_p487BsaFEeWfFdnv26Efug" y="5"/>
-                </children>
-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_p487AcaFEeWfFdnv26Efug"/>
-                <element xmi:type="uml:InputPin" href="TankBarrelExample.uml#_p4gPEMaFEeWfFdnv26Efug"/>
-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_p487AsaFEeWfFdnv26Efug" x="-15" y="53"/>
-              </children>
-              <children xmi:type="notation:Shape" xmi:id="_p487B8aFEeWfFdnv26Efug" type="3094">
-                <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_p60jRsaFEeWfFdnv26Efug" source="PapyrusCSSForceValue">
-                  <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_p60jR8aFEeWfFdnv26Efug" key="mutable" value="true"/>
-                </eAnnotations>
-                <children xmi:type="notation:DecorationNode" xmi:id="_p487CsaFEeWfFdnv26Efug" visible="false" type="5158">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_p487C8aFEeWfFdnv26Efug" y="5"/>
-                </children>
-                <children xmi:type="notation:DecorationNode" xmi:id="_p487DMaFEeWfFdnv26Efug" type="5159">
-                  <layoutConstraint xmi:type="notation:Location" xmi:id="_p487DcaFEeWfFdnv26Efug" y="5"/>
-                </children>
-                <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_p487CMaFEeWfFdnv26Efug"/>
-                <element xmi:type="uml:OutputPin" href="TankBarrelExample.uml#_p4avgMaFEeWfFdnv26Efug"/>
-                <layoutConstraint xmi:type="notation:Bounds" xmi:id="_p487CcaFEeWfFdnv26Efug" x="86" y="28"/>
-              </children>
-              <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_p4j5ccaFEeWfFdnv26Efug"/>
-              <element xmi:type="uml:AddStructuralFeatureValueAction" href="TankBarrelExample.uml#_p4VP8MaFEeWfFdnv26Efug"/>
-              <layoutConstraint xmi:type="notation:Bounds" xmi:id="_p4j5csaFEeWfFdnv26Efug" x="119" y="9" width="87" height="75"/>
-            </children>
-            <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LaemZcaFEeWfFdnv26Efug"/>
-          </children>
-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_LaemYcaFEeWfFdnv26Efug"/>
-          <element xmi:type="uml:StructuredActivityNode" href="TankBarrelExample.uml#_LaTnQMaFEeWfFdnv26Efug"/>
-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_LaemYsaFEeWfFdnv26Efug" x="85" y="443" width="258" height="132"/>
-        </children>
-        <children xmi:type="notation:Shape" xmi:id="_KrlqoMaGEeWfFdnv26Efug" type="3005">
-          <children xmi:type="notation:DecorationNode" xmi:id="_Krlqo8aGEeWfFdnv26Efug" visible="false" type="6033">
-            <layoutConstraint xmi:type="notation:Location" xmi:id="_KrlqpMaGEeWfFdnv26Efug" y="5"/>
-          </children>
-          <children xmi:type="notation:DecorationNode" xmi:id="_KrlqpcaGEeWfFdnv26Efug" type="5081">
-            <layoutConstraint xmi:type="notation:Location" xmi:id="_KrlqpsaGEeWfFdnv26Efug" y="5"/>
-          </children>
-          <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_KrlqocaGEeWfFdnv26Efug"/>
-          <element xmi:type="uml:ActivityFinalNode" href="TankBarrelExample.uml#_KrKz4MaGEeWfFdnv26Efug"/>
-          <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KrlqosaGEeWfFdnv26Efug" x="392" y="506"/>
-        </children>
-        <layoutConstraint xmi:type="notation:Bounds" xmi:id="_E0DhgcaEEeWfFdnv26Efug"/>
-      </children>
-      <element xmi:type="uml:Activity" href="TankBarrelExample.uml#_BxUJMMaEEeWfFdnv26Efug"/>
-      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_E0DhgsaEEeWfFdnv26Efug" width="878" height="579"/>
-    </children>
-    <styles xmi:type="notation:StringValueStyle" xmi:id="_E0Dhg8aEEeWfFdnv26Efug" name="diagram_compatibility_version" stringValue="1.1.0"/>
-    <styles xmi:type="notation:DiagramStyle" xmi:id="_E0DhhMaEEeWfFdnv26Efug"/>
-    <styles xmi:type="style:PapyrusViewStyle" xmi:id="_E0DhhcaEEeWfFdnv26Efug">
-      <owner xmi:type="uml:Activity" href="TankBarrelExample.uml#_BxUJMMaEEeWfFdnv26Efug"/>
-      <configuration xmi:type="configuration:PapyrusDiagram" href="platform:/plugin/org.eclipse.papyrus.moka.simex/config/simex.configuration#_VerKMGAyEeWAtYeYccnjOA"/>
-    </styles>
-    <element xmi:type="uml:Activity" href="TankBarrelExample.uml#_BxUJMMaEEeWfFdnv26Efug"/>
-    <edges xmi:type="notation:Connector" xmi:id="_0QPe8MaFEeWfFdnv26Efug" type="4003" source="_Q5DH4MaFEeWfFdnv26Efug" target="_ZIDwsMaFEeWfFdnv26Efug">
-      <children xmi:type="notation:DecorationNode" xmi:id="_0QPe88aFEeWfFdnv26Efug" type="6001">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0QPe9MaFEeWfFdnv26Efug" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_0QPe9caFEeWfFdnv26Efug" visible="false" type="6002">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0QQGAMaFEeWfFdnv26Efug" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_0QQGAcaFEeWfFdnv26Efug" type="6005">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0QQGAsaFEeWfFdnv26Efug" x="20" y="40"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_0QQGA8aFEeWfFdnv26Efug" type="6006">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0QQGBMaFEeWfFdnv26Efug" x="-20" y="-60"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_0QQGBcaFEeWfFdnv26Efug" type="6007">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0QQGBsaFEeWfFdnv26Efug" y="-20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_0QQGB8aFEeWfFdnv26Efug" visible="false" type="6008">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0QQGCMaFEeWfFdnv26Efug" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_0QQGCcaFEeWfFdnv26Efug" type="6010">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0QQGCsaFEeWfFdnv26Efug" y="-20"/>
-      </children>
-      <styles xmi:type="notation:FontStyle" xmi:id="_0QPe8caFEeWfFdnv26Efug"/>
-      <element xmi:type="uml:ObjectFlow" href="TankBarrelExample.uml#_0P45oMaFEeWfFdnv26Efug"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0QPe8saFEeWfFdnv26Efug" points="[150, 293, -643984, -643984]$[199, 290, -643984, -643984]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7vlFQM5PEeWaRpodR1S6WA" id="(0.8125,0.5625)"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0Q5mQMaFEeWfFdnv26Efug" id="(0.1875,0.25)"/>
-    </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_0oXEAMaFEeWfFdnv26Efug" type="4003" source="_SuCTkMaFEeWfFdnv26Efug" target="_ZIEXwsaFEeWfFdnv26Efug">
-      <children xmi:type="notation:DecorationNode" xmi:id="_0oXEA8aFEeWfFdnv26Efug" type="6001">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0oXEBMaFEeWfFdnv26Efug" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_0oXEBcaFEeWfFdnv26Efug" visible="false" type="6002">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0oXEBsaFEeWfFdnv26Efug" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_0oXEB8aFEeWfFdnv26Efug" type="6005">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0oXECMaFEeWfFdnv26Efug" x="20" y="40"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_0oXECcaFEeWfFdnv26Efug" type="6006">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0oXECsaFEeWfFdnv26Efug" x="-20" y="-60"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_0oXEC8aFEeWfFdnv26Efug" type="6007">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0oXEDMaFEeWfFdnv26Efug" y="-20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_0oXEDcaFEeWfFdnv26Efug" visible="false" type="6008">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0oXEDsaFEeWfFdnv26Efug" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_0oXED8aFEeWfFdnv26Efug" type="6010">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0oXEEMaFEeWfFdnv26Efug" y="-20"/>
-      </children>
-      <styles xmi:type="notation:FontStyle" xmi:id="_0oXEAcaFEeWfFdnv26Efug"/>
-      <element xmi:type="uml:ObjectFlow" href="TankBarrelExample.uml#_0oCT4MaFEeWfFdnv26Efug"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0oXEAsaFEeWfFdnv26Efug" points="[150, 334, -643984, -643984]$[199, 334, -643984, -643984]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_87fewM5PEeWaRpodR1S6WA" id="(0.8125,0.625)"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_0pCZcMaFEeWfFdnv26Efug" id="(0.125,0.625)"/>
-    </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_0-fsEMaFEeWfFdnv26Efug" type="4003" source="_fU0N4MaFEeWfFdnv26Efug" target="_p48T8MaFEeWfFdnv26Efug">
-      <children xmi:type="notation:DecorationNode" xmi:id="_0-fsE8aFEeWfFdnv26Efug" type="6001">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0-fsFMaFEeWfFdnv26Efug" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_0-fsFcaFEeWfFdnv26Efug" visible="false" type="6002">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0-fsFsaFEeWfFdnv26Efug" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_0-fsF8aFEeWfFdnv26Efug" type="6005">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0-fsGMaFEeWfFdnv26Efug" x="20" y="40"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_0-fsGcaFEeWfFdnv26Efug" type="6006">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0-fsGsaFEeWfFdnv26Efug" x="-20" y="-60"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_0-fsG8aFEeWfFdnv26Efug" type="6007">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0-fsHMaFEeWfFdnv26Efug" y="-20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_0-fsHcaFEeWfFdnv26Efug" visible="false" type="6008">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0-fsHsaFEeWfFdnv26Efug" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_0-fsH8aFEeWfFdnv26Efug" type="6010">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_0-fsIMaFEeWfFdnv26Efug" y="-20"/>
-      </children>
-      <styles xmi:type="notation:FontStyle" xmi:id="_0-fsEcaFEeWfFdnv26Efug"/>
-      <element xmi:type="uml:ObjectFlow" href="TankBarrelExample.uml#_0-K78MaFEeWfFdnv26Efug"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0-fsEsaFEeWfFdnv26Efug" points="[150, 531, -643984, -643984]$[204, 527, -643984, -643984]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_-5v7MM5PEeWaRpodR1S6WA" id="(0.875,0.5)"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__SPTsM5PEeWaRpodR1S6WA" id="(0.125,0.4375)"/>
-    </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_1bfxIMaFEeWfFdnv26Efug" type="4003" source="_hCzZsMaFEeWfFdnv26Efug" target="_p487AMaFEeWfFdnv26Efug">
-      <children xmi:type="notation:DecorationNode" xmi:id="_1bgYMMaFEeWfFdnv26Efug" type="6001">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_1bgYMcaFEeWfFdnv26Efug" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_1bgYMsaFEeWfFdnv26Efug" visible="false" type="6002">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_1bgYM8aFEeWfFdnv26Efug" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_1bgYNMaFEeWfFdnv26Efug" type="6005">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_1bgYNcaFEeWfFdnv26Efug" x="20" y="40"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_1bgYNsaFEeWfFdnv26Efug" type="6006">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_1bgYN8aFEeWfFdnv26Efug" x="-20" y="-60"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_1bgYOMaFEeWfFdnv26Efug" type="6007">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_1bgYOcaFEeWfFdnv26Efug" y="-20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_1bgYOsaFEeWfFdnv26Efug" visible="false" type="6008">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_1bgYO8aFEeWfFdnv26Efug" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_1bgYPMaFEeWfFdnv26Efug" type="6010">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_1bgYPcaFEeWfFdnv26Efug" y="-20"/>
-      </children>
-      <styles xmi:type="notation:FontStyle" xmi:id="_1bfxIcaFEeWfFdnv26Efug"/>
-      <element xmi:type="uml:ObjectFlow" href="TankBarrelExample.uml#_1bLBAMaFEeWfFdnv26Efug"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_1bfxIsaFEeWfFdnv26Efug" points="[150, 576, -643984, -643984]$[204, 571, -643984, -643984]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_1cVeoMaFEeWfFdnv26Efug" id="(0.1875,0.375)"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CImc0M5QEeWaRpodR1S6WA" id="(0.0625,0.5)"/>
-    </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_MuHjEMaGEeWfFdnv26Efug" type="4004" source="_ITJpEMaFEeWfFdnv26Efug" target="_tNOkoMaEEeWfFdnv26Efug">
-      <children xmi:type="notation:DecorationNode" xmi:id="_MuHjE8aGEeWfFdnv26Efug" type="6003">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_MuHjFMaGEeWfFdnv26Efug" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_MuHjFcaGEeWfFdnv26Efug" type="6004">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_MuHjFsaGEeWfFdnv26Efug" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_MuHjF8aGEeWfFdnv26Efug" type="6009">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_MuHjGMaGEeWfFdnv26Efug" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_MuHjGcaGEeWfFdnv26Efug" type="6011">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_MuHjGsaGEeWfFdnv26Efug" y="-20"/>
-      </children>
-      <styles xmi:type="notation:FontStyle" xmi:id="_MuHjEcaGEeWfFdnv26Efug"/>
-      <element xmi:type="uml:ControlFlow" href="TankBarrelExample.uml#_MtuhgMaGEeWfFdnv26Efug"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_MuHjEsaGEeWfFdnv26Efug" points="[214, 104, -643984, -643984]$[214, 159, -643984, -643984]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MuyRcMaGEeWfFdnv26Efug" id="(0.45,0.9)"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MuyRccaGEeWfFdnv26Efug" id="(0.496,0.0425531914893617)"/>
-    </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_NLfbkMaGEeWfFdnv26Efug" type="4004" source="_tNOkoMaEEeWfFdnv26Efug" target="_KilVEMaFEeWfFdnv26Efug">
-      <children xmi:type="notation:DecorationNode" xmi:id="_NLfbk8aGEeWfFdnv26Efug" type="6003">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_NLgCoMaGEeWfFdnv26Efug" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_NLgCocaGEeWfFdnv26Efug" type="6004">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_NLgCosaGEeWfFdnv26Efug" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_NLgCo8aGEeWfFdnv26Efug" type="6009">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_NLgCpMaGEeWfFdnv26Efug" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_NLgCpcaGEeWfFdnv26Efug" type="6011">
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_NLgCpsaGEeWfFdnv26Efug" y="-20"/>
-      </children>
-      <styles xmi:type="notation:FontStyle" xmi:id="_NLfbkcaGEeWfFdnv26Efug"/>
-      <element xmi:type="uml:ControlFlow" href="TankBarrelExample.uml#_NLL5kMaGEeWfFdnv26Efug"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NLfbksaGEeWfFdnv26Efug" points="[215, 200, -643984, -643984]$[215, 240, -643984, -643984]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NMFRcMaGEeWfFdnv26Efug" id="(0.47907692307692307,0.9148936170212766)"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NMFRccaGEeWfFdnv26Efug" id="(0.48672699849170437,0.0)"/>
-    </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_NyJL4MaGEeWfFdnv26Efug" type="4004" source="_KilVEMaFEeWfFdnv26Efug" target="_-HgUcMaEEeWfFdnv26Efug">
-      <children xmi:type="notation:DecorationNode" xmi:id="_NyJL48aGEeWfFdnv26Efug" type="6003">
-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_R-qPoMaGEeWfFdnv26Efug" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_NyJL5MaGEeWfFdnv26Efug" x="-4" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_NyJL5caGEeWfFdnv26Efug" type="6004">
-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_R--YsMaGEeWfFdnv26Efug" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_NyJL5saGEeWfFdnv26Efug" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_NyJL58aGEeWfFdnv26Efug" type="6009">
-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_R_QskMaGEeWfFdnv26Efug" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_NyJL6MaGEeWfFdnv26Efug" x="4" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_NyJL6caGEeWfFdnv26Efug" type="6011">
-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_R_kOkMaGEeWfFdnv26Efug" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_NyJL6saGEeWfFdnv26Efug" y="-20"/>
-      </children>
-      <styles xmi:type="notation:FontStyle" xmi:id="_NyJL4caGEeWfFdnv26Efug"/>
-      <element xmi:type="uml:ControlFlow" href="TankBarrelExample.uml#_NxbaMMaGEeWfFdnv26Efug"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NyJL4saGEeWfFdnv26Efug" points="[213, 364, -643984, -643984]$[215, 390, -643984, -643984]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Nyw28MaGEeWfFdnv26Efug" id="(0.48627450980392156,1.0)"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_NyxeAMaGEeWfFdnv26Efug" id="(0.4791351351351352,0.0425531914893617)"/>
-    </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_OKtc4MaGEeWfFdnv26Efug" type="4004" source="_-HgUcMaEEeWfFdnv26Efug" target="_LaemYMaFEeWfFdnv26Efug">
-      <children xmi:type="notation:DecorationNode" xmi:id="_OKtc48aGEeWfFdnv26Efug" type="6003">
-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_R9WBAMaGEeWfFdnv26Efug" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_OKtc5MaGEeWfFdnv26Efug" x="-8" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_OKtc5caGEeWfFdnv26Efug" type="6004">
-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_R9t0cMaGEeWfFdnv26Efug" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_OKuD8MaGEeWfFdnv26Efug" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_OKuD8caGEeWfFdnv26Efug" type="6009">
-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_R9_hQMaGEeWfFdnv26Efug" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_OKuD8saGEeWfFdnv26Efug" x="8" y="20"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_OKuD88aGEeWfFdnv26Efug" type="6011">
-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_R-WtoMaGEeWfFdnv26Efug" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_OKuD9MaGEeWfFdnv26Efug" y="-20"/>
-      </children>
-      <styles xmi:type="notation:FontStyle" xmi:id="_OKtc4caGEeWfFdnv26Efug"/>
-      <element xmi:type="uml:ControlFlow" href="TankBarrelExample.uml#_OKWQgMaGEeWfFdnv26Efug"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_OKtc4saGEeWfFdnv26Efug" points="[215, 428, -643984, -643984]$[217, 479, -643984, -643984]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OLWWEMaGEeWfFdnv26Efug" id="(0.488,0.851063829787234)"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OLWWEcaGEeWfFdnv26Efug" id="(0.4945384073291049,0.0)"/>
-    </edges>
-    <edges xmi:type="notation:Connector" xmi:id="_On7kYMaGEeWfFdnv26Efug" type="4004" source="_LaemYMaFEeWfFdnv26Efug" target="_KrlqoMaGEeWfFdnv26Efug">
-      <children xmi:type="notation:DecorationNode" xmi:id="_On7kY8aGEeWfFdnv26Efug" type="6003">
-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_PAiRoMaGEeWfFdnv26Efug" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_On7kZMaGEeWfFdnv26Efug" x="-18" y="19"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_On7kZcaGEeWfFdnv26Efug" type="6004">
-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_PA6FEMaGEeWfFdnv26Efug" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_On7kZsaGEeWfFdnv26Efug" x="1" y="18"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_On8LcMaGEeWfFdnv26Efug" type="6009">
-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_PBTGoMaGEeWfFdnv26Efug" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_On8LccaGEeWfFdnv26Efug" x="18" y="19"/>
-      </children>
-      <children xmi:type="notation:DecorationNode" xmi:id="_On8LcsaGEeWfFdnv26Efug" type="6011">
-        <styles xmi:type="notation:BooleanValueStyle" xmi:id="_PBtWUMaGEeWfFdnv26Efug" name="IS_UPDATED_POSITION" booleanValue="true"/>
-        <layoutConstraint xmi:type="notation:Location" xmi:id="_On8Lc8aGEeWfFdnv26Efug" x="2" y="-17"/>
-      </children>
-      <styles xmi:type="notation:FontStyle" xmi:id="_On7kYcaGEeWfFdnv26Efug"/>
-      <element xmi:type="uml:ControlFlow" href="TankBarrelExample.uml#_Onh7wMaGEeWfFdnv26Efug"/>
-      <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_On7kYsaGEeWfFdnv26Efug" points="[348, 552, -643984, -643984]$[465, 553, -643984, -643984]"/>
-      <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Oom50MaGEeWfFdnv26Efug" id="(1.0,0.5541958041958036)"/>
-      <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Oom50caGEeWfFdnv26Efug" id="(0.05,0.5476923076923071)"/>
-    </edges>
-  </notation:Diagram>
-</xmi:XMI>
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/fmu_build/resources/TankBarrelExample.uml b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/fmu_build/resources/TankBarrelExample.uml
deleted file mode 100644
index afbfe8d..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/fmu_build/resources/TankBarrelExample.uml
+++ /dev/null
@@ -1,378 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:fmiprofile="http://www.eclipse.org/papyrus/FMIProfile/1.0.0" xmlns:standard="http://www.eclipse.org/uml2/5.0.0/UML/Profile/Standard" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
-  <uml:Model xmi:id="_q8DOcMXPEeWwx_puHDzFYw" name="TankBarrelExample">
-    <packageImport xmi:type="uml:PackageImport" xmi:id="_rEUZoMXPEeWwx_puHDzFYw">
-      <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
-    </packageImport>
-    <packagedElement xmi:type="uml:Class" xmi:id="_NO0UEMXQEeWwx_puHDzFYw" name="C1" classifierBehavior="_bnRAUMXQEeWwx_puHDzFYw" isActive="true">
-      <ownedAttribute xmi:type="uml:Property" xmi:id="_RUkBcMXQEeWwx_puHDzFYw" name="valve" visibility="public">
-        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_Vs8W8MXQEeWwx_puHDzFYw"/>
-      </ownedAttribute>
-      <ownedBehavior xmi:type="uml:Activity" xmi:id="_bnRAUMXQEeWwx_puHDzFYw" name="C1 ClassifierBehavior" node="_xrAkUMXQEeWwx_puHDzFYw _x6JMgMXQEeWwx_puHDzFYw _yIGwAMXQEeWwx_puHDzFYw _MwEQoMXSEeWwx_puHDzFYw _be-foMXTEeWwx_puHDzFYw _hclboMXVEeWwx_puHDzFYw _ia5zIMXXEeWwx_puHDzFYw _xF9SUMXXEeWwx_puHDzFYw" group="_be-foMXTEeWwx_puHDzFYw _ia5zIMXXEeWwx_puHDzFYw _xF9SUMXXEeWwx_puHDzFYw">
-        <ownedComment xmi:type="uml:Comment" xmi:id="_sRT7wMXQEeWwx_puHDzFYw">
-          <body>model C1&#xD;
-  discrete output Boolean valve(start = false, fixed = false);&#xD;
-equation&#xD;
-  when time >= 0.5 then&#xD;
-    valve = true;&#xD;
-  elsewhen time >= 3.2 then&#xD;
-    valve = false;&#xD;
-  elsewhen time >= 5.2 then&#xD;
-    valve = true;&#xD;
-  end when;&#xD;
-end C1;</body>
-        </ownedComment>
-        <edge xmi:type="uml:ControlFlow" xmi:id="_WOXPsMXVEeWwx_puHDzFYw" target="_xrAkUMXQEeWwx_puHDzFYw" source="_MwEQoMXSEeWwx_puHDzFYw"/>
-        <edge xmi:type="uml:ControlFlow" xmi:id="_c6JyQMXVEeWwx_puHDzFYw" target="_be-foMXTEeWwx_puHDzFYw" source="_xrAkUMXQEeWwx_puHDzFYw"/>
-        <edge xmi:type="uml:ControlFlow" xmi:id="_dcHP0MXVEeWwx_puHDzFYw" target="_x6JMgMXQEeWwx_puHDzFYw" source="_be-foMXTEeWwx_puHDzFYw"/>
-        <edge xmi:type="uml:ControlFlow" xmi:id="_PzgkwMXYEeWwx_puHDzFYw" target="_ia5zIMXXEeWwx_puHDzFYw" source="_x6JMgMXQEeWwx_puHDzFYw"/>
-        <edge xmi:type="uml:ControlFlow" xmi:id="_QYv_0MXYEeWwx_puHDzFYw" target="_yIGwAMXQEeWwx_puHDzFYw" source="_ia5zIMXXEeWwx_puHDzFYw"/>
-        <edge xmi:type="uml:ControlFlow" xmi:id="_QyYn0MXYEeWwx_puHDzFYw" target="_xF9SUMXXEeWwx_puHDzFYw" source="_yIGwAMXQEeWwx_puHDzFYw"/>
-        <edge xmi:type="uml:ControlFlow" xmi:id="_RS1CcMXYEeWwx_puHDzFYw" target="_hclboMXVEeWwx_puHDzFYw" source="_xF9SUMXXEeWwx_puHDzFYw"/>
-        <structuredNode xmi:type="uml:StructuredActivityNode" xmi:id="_be-foMXTEeWwx_puHDzFYw" name="StructuredActivityNode1" incoming="_c6JyQMXVEeWwx_puHDzFYw" outgoing="_dcHP0MXVEeWwx_puHDzFYw">
-          <edge xmi:type="uml:ObjectFlow" xmi:id="_upAEgMXTEeWwx_puHDzFYw" target="_Jr-_IMXTEeWwx_puHDzFYw" source="_l0m2sMXTEeWwx_puHDzFYw">
-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_upRxUMXTEeWwx_puHDzFYw" value="true"/>
-            <weight xmi:type="uml:LiteralInteger" xmi:id="_upSYYMXTEeWwx_puHDzFYw" value="1"/>
-          </edge>
-          <edge xmi:type="uml:ObjectFlow" xmi:id="_s5i5EMXTEeWwx_puHDzFYw" target="_Jr8i4MXTEeWwx_puHDzFYw" source="_jzRREMXTEeWwx_puHDzFYw">
-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_s5vtYMXTEeWwx_puHDzFYw" value="true"/>
-            <weight xmi:type="uml:LiteralInteger" xmi:id="_s5vtYcXTEeWwx_puHDzFYw" value="1"/>
-          </edge>
-          <node xmi:type="uml:AddStructuralFeatureValueAction" xmi:id="_JrzY8MXTEeWwx_puHDzFYw" name="set Valve" structuralFeature="_RUkBcMXQEeWwx_puHDzFYw" isReplaceAll="true">
-            <object xmi:type="uml:InputPin" xmi:id="_Jr8i4MXTEeWwx_puHDzFYw" name="object" incoming="_s5i5EMXTEeWwx_puHDzFYw" type="_NO0UEMXQEeWwx_puHDzFYw"/>
-            <result xmi:type="uml:OutputPin" xmi:id="_Jr9xAMXTEeWwx_puHDzFYw" name="result" type="_NO0UEMXQEeWwx_puHDzFYw"/>
-            <value xmi:type="uml:InputPin" xmi:id="_Jr-_IMXTEeWwx_puHDzFYw" name="value" incoming="_upAEgMXTEeWwx_puHDzFYw">
-              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
-            </value>
-          </node>
-          <node xmi:type="uml:ReadSelfAction" xmi:id="_jzQC8MXTEeWwx_puHDzFYw" name="this">
-            <result xmi:type="uml:OutputPin" xmi:id="_jzRREMXTEeWwx_puHDzFYw" name="result" outgoing="_s5i5EMXTEeWwx_puHDzFYw" type="_bnRAUMXQEeWwx_puHDzFYw"/>
-          </node>
-          <node xmi:type="uml:ValueSpecificationAction" xmi:id="_l0ceoMXTEeWwx_puHDzFYw" name="true">
-            <result xmi:type="uml:OutputPin" xmi:id="_l0m2sMXTEeWwx_puHDzFYw" name="result" outgoing="_upAEgMXTEeWwx_puHDzFYw">
-              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
-              <upperBound xmi:type="uml:LiteralInteger" xmi:id="_mXe6QMXTEeWwx_puHDzFYw" value="1"/>
-              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mXeTMMXTEeWwx_puHDzFYw" value="1"/>
-            </result>
-            <value xmi:type="uml:LiteralBoolean" xmi:id="_mXWXYMXTEeWwx_puHDzFYw" value="true">
-              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
-            </value>
-          </node>
-        </structuredNode>
-        <structuredNode xmi:type="uml:StructuredActivityNode" xmi:id="_ia5zIMXXEeWwx_puHDzFYw" name="StructuredActivityNode2" incoming="_PzgkwMXYEeWwx_puHDzFYw" outgoing="_QYv_0MXYEeWwx_puHDzFYw">
-          <edge xmi:type="uml:ObjectFlow" xmi:id="_FHrUMMXYEeWwx_puHDzFYw" target="_mJEG8MXXEeWwx_puHDzFYw" source="_rwlJEMXXEeWwx_puHDzFYw">
-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_FIJ1UMXYEeWwx_puHDzFYw" value="true"/>
-            <weight xmi:type="uml:LiteralInteger" xmi:id="_FIJ1UcXYEeWwx_puHDzFYw" value="1"/>
-          </edge>
-          <edge xmi:type="uml:ObjectFlow" xmi:id="_HFo1sMXYEeWwx_puHDzFYw" target="_mJHKQMXXEeWwx_puHDzFYw" source="_uIQLEMXXEeWwx_puHDzFYw">
-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_HGCeUMXYEeWwx_puHDzFYw" value="true"/>
-            <weight xmi:type="uml:LiteralInteger" xmi:id="_HGCeUcXYEeWwx_puHDzFYw" value="1"/>
-          </edge>
-          <node xmi:type="uml:AddStructuralFeatureValueAction" xmi:id="_mI_OcMXXEeWwx_puHDzFYw" name="set Valve" structuralFeature="_RUkBcMXQEeWwx_puHDzFYw" isReplaceAll="true">
-            <object xmi:type="uml:InputPin" xmi:id="_mJEG8MXXEeWwx_puHDzFYw" name="object" incoming="_FHrUMMXYEeWwx_puHDzFYw" type="_NO0UEMXQEeWwx_puHDzFYw"/>
-            <result xmi:type="uml:OutputPin" xmi:id="_mJFVEMXXEeWwx_puHDzFYw" name="result" type="_NO0UEMXQEeWwx_puHDzFYw"/>
-            <value xmi:type="uml:InputPin" xmi:id="_mJHKQMXXEeWwx_puHDzFYw" name="value" incoming="_HFo1sMXYEeWwx_puHDzFYw">
-              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
-            </value>
-          </node>
-          <node xmi:type="uml:ReadSelfAction" xmi:id="_rwkiAMXXEeWwx_puHDzFYw" name="self">
-            <result xmi:type="uml:OutputPin" xmi:id="_rwlJEMXXEeWwx_puHDzFYw" name="result" outgoing="_FHrUMMXYEeWwx_puHDzFYw" type="_bnRAUMXQEeWwx_puHDzFYw"/>
-          </node>
-          <node xmi:type="uml:ValueSpecificationAction" xmi:id="_uIPkAMXXEeWwx_puHDzFYw" name="false">
-            <result xmi:type="uml:OutputPin" xmi:id="_uIQLEMXXEeWwx_puHDzFYw" name="result" outgoing="_HFo1sMXYEeWwx_puHDzFYw">
-              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
-              <upperBound xmi:type="uml:LiteralInteger" xmi:id="_ujJ-YMXXEeWwx_puHDzFYw" value="1"/>
-              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ujJXUMXXEeWwx_puHDzFYw" value="1"/>
-            </result>
-            <value xmi:type="uml:LiteralBoolean" xmi:id="_ujIwQMXXEeWwx_puHDzFYw">
-              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
-            </value>
-          </node>
-        </structuredNode>
-        <structuredNode xmi:type="uml:StructuredActivityNode" xmi:id="_xF9SUMXXEeWwx_puHDzFYw" name="StructuredActivityNode3" incoming="_QyYn0MXYEeWwx_puHDzFYw" outgoing="_RS1CcMXYEeWwx_puHDzFYw">
-          <edge xmi:type="uml:ObjectFlow" xmi:id="_KlY6EMXYEeWwx_puHDzFYw" target="_y2PkMMXXEeWwx_puHDzFYw" source="_4mxYYMXXEeWwx_puHDzFYw">
-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_KlxUkMXYEeWwx_puHDzFYw" value="true"/>
-            <weight xmi:type="uml:LiteralInteger" xmi:id="_KlxUkcXYEeWwx_puHDzFYw" value="1"/>
-          </edge>
-          <edge xmi:type="uml:ObjectFlow" xmi:id="_MSnQ4MXYEeWwx_puHDzFYw" target="_y2SAcMXXEeWwx_puHDzFYw" source="_61JUcMXXEeWwx_puHDzFYw">
-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_MTDVwMXYEeWwx_puHDzFYw" value="true"/>
-            <weight xmi:type="uml:LiteralInteger" xmi:id="_MTDVwcXYEeWwx_puHDzFYw" value="1"/>
-          </edge>
-          <node xmi:type="uml:AddStructuralFeatureValueAction" xmi:id="_y2Mg4MXXEeWwx_puHDzFYw" name="set Valve" structuralFeature="_RUkBcMXQEeWwx_puHDzFYw" isReplaceAll="true">
-            <object xmi:type="uml:InputPin" xmi:id="_y2PkMMXXEeWwx_puHDzFYw" name="object" incoming="_KlY6EMXYEeWwx_puHDzFYw" type="_NO0UEMXQEeWwx_puHDzFYw"/>
-            <result xmi:type="uml:OutputPin" xmi:id="_y2QyUMXXEeWwx_puHDzFYw" name="result" type="_NO0UEMXQEeWwx_puHDzFYw"/>
-            <value xmi:type="uml:InputPin" xmi:id="_y2SAcMXXEeWwx_puHDzFYw" name="value" incoming="_MSnQ4MXYEeWwx_puHDzFYw">
-              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
-            </value>
-          </node>
-          <node xmi:type="uml:ReadSelfAction" xmi:id="_4mrRwMXXEeWwx_puHDzFYw" name="self">
-            <result xmi:type="uml:OutputPin" xmi:id="_4mxYYMXXEeWwx_puHDzFYw" name="result" outgoing="_KlY6EMXYEeWwx_puHDzFYw" type="_bnRAUMXQEeWwx_puHDzFYw"/>
-          </node>
-          <node xmi:type="uml:ValueSpecificationAction" xmi:id="_61ItYMXXEeWwx_puHDzFYw" name="true">
-            <result xmi:type="uml:OutputPin" xmi:id="_61JUcMXXEeWwx_puHDzFYw" name="result" outgoing="_MSnQ4MXYEeWwx_puHDzFYw">
-              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
-              <upperBound xmi:type="uml:LiteralInteger" xmi:id="_7MzmgcXXEeWwx_puHDzFYw" value="1"/>
-              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_7MzmgMXXEeWwx_puHDzFYw" value="1"/>
-            </result>
-            <value xmi:type="uml:LiteralBoolean" xmi:id="_7My_cMXXEeWwx_puHDzFYw" value="true">
-              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
-            </value>
-          </node>
-        </structuredNode>
-        <node xmi:type="uml:AcceptEventAction" xmi:id="_xrAkUMXQEeWwx_puHDzFYw" name="at 0.5" incoming="_WOXPsMXVEeWwx_puHDzFYw" outgoing="_c6JyQMXVEeWwx_puHDzFYw">
-          <trigger xmi:type="uml:Trigger" xmi:id="_dDHd0MXREeWwx_puHDzFYw" event="_FOFiYMXREeWwx_puHDzFYw"/>
-        </node>
-        <node xmi:type="uml:AcceptEventAction" xmi:id="_x6JMgMXQEeWwx_puHDzFYw" name="at 3.2" incoming="_dcHP0MXVEeWwx_puHDzFYw" outgoing="_PzgkwMXYEeWwx_puHDzFYw">
-          <trigger xmi:type="uml:Trigger" xmi:id="_l3ePYMXREeWwx_puHDzFYw" event="_LG7lEMXREeWwx_puHDzFYw"/>
-        </node>
-        <node xmi:type="uml:AcceptEventAction" xmi:id="_yIGwAMXQEeWwx_puHDzFYw" name="at 5.2" incoming="_QYv_0MXYEeWwx_puHDzFYw" outgoing="_QyYn0MXYEeWwx_puHDzFYw">
-          <trigger xmi:type="uml:Trigger" xmi:id="_qedooMXREeWwx_puHDzFYw" event="_LWmYwMXREeWwx_puHDzFYw"/>
-        </node>
-        <node xmi:type="uml:InitialNode" xmi:id="_MwEQoMXSEeWwx_puHDzFYw" name="InitialNode1" outgoing="_WOXPsMXVEeWwx_puHDzFYw"/>
-        <node xmi:type="uml:ActivityFinalNode" xmi:id="_hclboMXVEeWwx_puHDzFYw" name="ActivityFinalNode1" incoming="_RS1CcMXYEeWwx_puHDzFYw"/>
-      </ownedBehavior>
-      <ownedBehavior xmi:type="uml:Activity" xmi:id="_ClNpYMXWEeWwx_puHDzFYw" name="C1_Factory" node="_ClO3gcXWEeWwx_puHDzFYw _CouQYMXWEeWwx_puHDzFYw _Cou3csXWEeWwx_puHDzFYw _CowsocXWEeWwx_puHDzFYw _CoxTscXWEeWwx_puHDzFYw">
-        <ownedParameter xmi:type="uml:Parameter" xmi:id="_ClO3gMXWEeWwx_puHDzFYw" name="result" type="_NO0UEMXQEeWwx_puHDzFYw" direction="return"/>
-        <edge xmi:type="uml:ObjectFlow" xmi:id="_CowFksXWEeWwx_puHDzFYw" name="createObjectAction to callConstructor" target="_CovegMXWEeWwx_puHDzFYw" source="_Cou3cMXWEeWwx_puHDzFYw">
-          <guard xmi:type="uml:LiteralBoolean" xmi:id="_Co8S0MXWEeWwx_puHDzFYw" value="true"/>
-          <weight xmi:type="uml:LiteralInteger" xmi:id="_Co8S0cXWEeWwx_puHDzFYw" value="1"/>
-        </edge>
-        <edge xmi:type="uml:ObjectFlow" xmi:id="_CowsoMXWEeWwx_puHDzFYw" name="callConstructor to returnParamNode" target="_ClO3gcXWEeWwx_puHDzFYw" source="_CoxTscXWEeWwx_puHDzFYw">
-          <guard xmi:type="uml:LiteralBoolean" xmi:id="_Co8S0sXWEeWwx_puHDzFYw" value="true"/>
-          <weight xmi:type="uml:LiteralInteger" xmi:id="_Co8S08XWEeWwx_puHDzFYw" value="1"/>
-        </edge>
-        <edge xmi:type="uml:ObjectFlow" xmi:id="_CoxTssXWEeWwx_puHDzFYw" name="fork to startbehavior input pin" target="_CowsosXWEeWwx_puHDzFYw" source="_CoxTscXWEeWwx_puHDzFYw">
-          <guard xmi:type="uml:LiteralBoolean" xmi:id="_Co854MXWEeWwx_puHDzFYw" value="true"/>
-          <weight xmi:type="uml:LiteralInteger" xmi:id="_Co854cXWEeWwx_puHDzFYw" value="1"/>
-        </edge>
-        <edge xmi:type="uml:ObjectFlow" xmi:id="_CoxTs8XWEeWwx_puHDzFYw" name="callConstructor to startBehavior" target="_CoxTscXWEeWwx_puHDzFYw" source="_CowFkMXWEeWwx_puHDzFYw">
-          <guard xmi:type="uml:LiteralBoolean" xmi:id="_Co854sXWEeWwx_puHDzFYw" value="true"/>
-          <weight xmi:type="uml:LiteralInteger" xmi:id="_Co8548XWEeWwx_puHDzFYw" value="1"/>
-        </edge>
-        <node xmi:type="uml:ActivityParameterNode" xmi:id="_ClO3gcXWEeWwx_puHDzFYw" name="resultParameterNode" incoming="_CowsoMXWEeWwx_puHDzFYw" type="_NO0UEMXQEeWwx_puHDzFYw" parameter="_ClO3gMXWEeWwx_puHDzFYw">
-          <upperBound xmi:type="uml:LiteralInteger" xmi:id="_ClPekMXWEeWwx_puHDzFYw" value="1"/>
-        </node>
-        <node xmi:type="uml:CreateObjectAction" xmi:id="_CouQYMXWEeWwx_puHDzFYw" name="createObject" classifier="_NO0UEMXQEeWwx_puHDzFYw">
-          <result xmi:type="uml:OutputPin" xmi:id="_Cou3cMXWEeWwx_puHDzFYw" name="result" outgoing="_CowFksXWEeWwx_puHDzFYw" type="_NO0UEMXQEeWwx_puHDzFYw">
-            <upperBound xmi:type="uml:LiteralInteger" xmi:id="_Cou3ccXWEeWwx_puHDzFYw" value="1"/>
-          </result>
-        </node>
-        <node xmi:type="uml:CallOperationAction" xmi:id="_Cou3csXWEeWwx_puHDzFYw" name="callConstructor" operation="_ColtgMXWEeWwx_puHDzFYw">
-          <result xmi:type="uml:OutputPin" xmi:id="_CowFkMXWEeWwx_puHDzFYw" name="result" outgoing="_CoxTs8XWEeWwx_puHDzFYw" type="_NO0UEMXQEeWwx_puHDzFYw">
-            <upperBound xmi:type="uml:LiteralInteger" xmi:id="_CowFkcXWEeWwx_puHDzFYw" value="1"/>
-          </result>
-          <target xmi:type="uml:InputPin" xmi:id="_CovegMXWEeWwx_puHDzFYw" name="target" incoming="_CowFksXWEeWwx_puHDzFYw" type="_NO0UEMXQEeWwx_puHDzFYw">
-            <upperBound xmi:type="uml:LiteralInteger" xmi:id="_CovegcXWEeWwx_puHDzFYw" value="1"/>
-          </target>
-        </node>
-        <node xmi:type="uml:StartObjectBehaviorAction" xmi:id="_CowsocXWEeWwx_puHDzFYw" name="start classifier behavior">
-          <object xmi:type="uml:InputPin" xmi:id="_CowsosXWEeWwx_puHDzFYw" name="object" incoming="_CoxTssXWEeWwx_puHDzFYw" type="_NO0UEMXQEeWwx_puHDzFYw">
-            <upperBound xmi:type="uml:LiteralInteger" xmi:id="_CoxTsMXWEeWwx_puHDzFYw" value="1"/>
-          </object>
-        </node>
-        <node xmi:type="uml:ForkNode" xmi:id="_CoxTscXWEeWwx_puHDzFYw" name="forkInstanciatedObject" incoming="_CoxTs8XWEeWwx_puHDzFYw" outgoing="_CowsoMXWEeWwx_puHDzFYw _CoxTssXWEeWwx_puHDzFYw"/>
-      </ownedBehavior>
-      <ownedOperation xmi:type="uml:Operation" xmi:id="_ColtgMXWEeWwx_puHDzFYw" name="C1">
-        <ownedParameter xmi:type="uml:Parameter" xmi:id="_CoqmAMXWEeWwx_puHDzFYw" name="return" type="_NO0UEMXQEeWwx_puHDzFYw" direction="return"/>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Package" xmi:id="_BsDmEMXREeWwx_puHDzFYw" name="Events C1">
-      <packagedElement xmi:type="uml:TimeEvent" xmi:id="_FOFiYMXREeWwx_puHDzFYw" name="at 0.5">
-        <when xmi:type="uml:TimeExpression" xmi:id="_JOSocMXREeWwx_puHDzFYw">
-          <expr xmi:type="uml:LiteralReal" xmi:id="_JOSoccXREeWwx_puHDzFYw" value="0.5"/>
-        </when>
-      </packagedElement>
-      <packagedElement xmi:type="uml:TimeEvent" xmi:id="_LG7lEMXREeWwx_puHDzFYw" name="at 3.2">
-        <when xmi:type="uml:TimeExpression" xmi:id="_LG7lEcXREeWwx_puHDzFYw">
-          <expr xmi:type="uml:LiteralReal" xmi:id="_LG7lEsXREeWwx_puHDzFYw" value="3.2"/>
-        </when>
-      </packagedElement>
-      <packagedElement xmi:type="uml:TimeEvent" xmi:id="_LWmYwMXREeWwx_puHDzFYw" name="at 5.2">
-        <when xmi:type="uml:TimeExpression" xmi:id="_LWmYwcXREeWwx_puHDzFYw">
-          <expr xmi:type="uml:LiteralReal" xmi:id="_LWmYwsXREeWwx_puHDzFYw" value="5.2"/>
-        </when>
-      </packagedElement>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Class" xmi:id="_V9MCEMaDEeWfFdnv26Efug" name="C2" classifierBehavior="_BxUJMMaEEeWfFdnv26Efug" isActive="true">
-      <ownedAttribute xmi:type="uml:Property" xmi:id="_auAFsMaDEeWfFdnv26Efug" name="abort" visibility="public">
-        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
-        <defaultValue xmi:type="uml:LiteralBoolean" xmi:id="_lTy_sMaDEeWfFdnv26Efug"/>
-      </ownedAttribute>
-      <ownedAttribute xmi:type="uml:Property" xmi:id="_wQ2jIMaDEeWfFdnv26Efug" name="size" visibility="public">
-        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
-        <defaultValue xmi:type="uml:LiteralReal" xmi:id="_15xTcMaDEeWfFdnv26Efug" value="1.0"/>
-      </ownedAttribute>
-      <ownedBehavior xmi:type="uml:Activity" xmi:id="_BxUJMMaEEeWfFdnv26Efug" name="C2 Classifier Behavior" node="_tNIeAMaEEeWfFdnv26Efug _9nmsYMaEEeWfFdnv26Efug _ITC7YMaFEeWfFdnv26Efug _KiYgwMaFEeWfFdnv26Efug _LaTnQMaFEeWfFdnv26Efug _KrKz4MaGEeWfFdnv26Efug" group="_KiYgwMaFEeWfFdnv26Efug _LaTnQMaFEeWfFdnv26Efug">
-        <ownedComment xmi:type="uml:Comment" xmi:id="_NmKQQMaEEeWfFdnv26Efug">
-          <body>model C2&#xD;
-  discrete output Boolean abort(start = false, fixed = false);&#xD;
-  discrete output Real size(start = 1.0, fixed = false);&#xD;
-equation&#xD;
-  when time >= 1.9 then&#xD;
-    abort = true;&#xD;
-  end when;&#xD;
-  when time >= 6.5 then&#xD;
-    size = 0.5;&#xD;
-  end when;&#xD;
-end C2;</body>
-        </ownedComment>
-        <edge xmi:type="uml:ControlFlow" xmi:id="_MtuhgMaGEeWfFdnv26Efug" target="_tNIeAMaEEeWfFdnv26Efug" source="_ITC7YMaFEeWfFdnv26Efug"/>
-        <edge xmi:type="uml:ControlFlow" xmi:id="_NLL5kMaGEeWfFdnv26Efug" target="_KiYgwMaFEeWfFdnv26Efug" source="_tNIeAMaEEeWfFdnv26Efug"/>
-        <edge xmi:type="uml:ControlFlow" xmi:id="_NxbaMMaGEeWfFdnv26Efug" target="_9nmsYMaEEeWfFdnv26Efug" source="_KiYgwMaFEeWfFdnv26Efug"/>
-        <edge xmi:type="uml:ControlFlow" xmi:id="_OKWQgMaGEeWfFdnv26Efug" target="_LaTnQMaFEeWfFdnv26Efug" source="_9nmsYMaEEeWfFdnv26Efug"/>
-        <edge xmi:type="uml:ControlFlow" xmi:id="_Onh7wMaGEeWfFdnv26Efug" target="_KrKz4MaGEeWfFdnv26Efug" source="_LaTnQMaFEeWfFdnv26Efug"/>
-        <structuredNode xmi:type="uml:StructuredActivityNode" xmi:id="_KiYgwMaFEeWfFdnv26Efug" name="StructuredActivityNode1" incoming="_NLL5kMaGEeWfFdnv26Efug" outgoing="_NxbaMMaGEeWfFdnv26Efug">
-          <edge xmi:type="uml:ObjectFlow" xmi:id="_0P45oMaFEeWfFdnv26Efug" target="_ZEyaQMaFEeWfFdnv26Efug" source="_Q4yCIMaFEeWfFdnv26Efug">
-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_0QL0kMaFEeWfFdnv26Efug" value="true"/>
-            <weight xmi:type="uml:LiteralInteger" xmi:id="_0QL0kcaFEeWfFdnv26Efug" value="1"/>
-          </edge>
-          <edge xmi:type="uml:ObjectFlow" xmi:id="_0oCT4MaFEeWfFdnv26Efug" target="_ZE3SwMaFEeWfFdnv26Efug" source="_StuKgMaFEeWfFdnv26Efug">
-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_0oVO0MaFEeWfFdnv26Efug" value="true"/>
-            <weight xmi:type="uml:LiteralInteger" xmi:id="_0oVO0caFEeWfFdnv26Efug" value="1"/>
-          </edge>
-          <node xmi:type="uml:ReadSelfAction" xmi:id="_Q4mb8MaFEeWfFdnv26Efug" name="self">
-            <result xmi:type="uml:OutputPin" xmi:id="_Q4yCIMaFEeWfFdnv26Efug" name="result" outgoing="_0P45oMaFEeWfFdnv26Efug" type="_BxUJMMaEEeWfFdnv26Efug"/>
-          </node>
-          <node xmi:type="uml:ValueSpecificationAction" xmi:id="_StruQMaFEeWfFdnv26Efug" name="true">
-            <result xmi:type="uml:OutputPin" xmi:id="_StuKgMaFEeWfFdnv26Efug" name="result" outgoing="_0oCT4MaFEeWfFdnv26Efug">
-              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
-              <upperBound xmi:type="uml:LiteralInteger" xmi:id="_TfgMwMaFEeWfFdnv26Efug" value="1"/>
-              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_TfflsMaFEeWfFdnv26Efug" value="1"/>
-            </result>
-            <value xmi:type="uml:LiteralBoolean" xmi:id="_TfatMMaFEeWfFdnv26Efug" value="true">
-              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
-            </value>
-          </node>
-          <node xmi:type="uml:AddStructuralFeatureValueAction" xmi:id="_ZEp3YMaFEeWfFdnv26Efug" name="set Abort" structuralFeature="_auAFsMaDEeWfFdnv26Efug" isReplaceAll="true">
-            <object xmi:type="uml:InputPin" xmi:id="_ZEyaQMaFEeWfFdnv26Efug" name="object" incoming="_0P45oMaFEeWfFdnv26Efug" type="_V9MCEMaDEeWfFdnv26Efug"/>
-            <result xmi:type="uml:OutputPin" xmi:id="_ZE02gMaFEeWfFdnv26Efug" name="result" type="_V9MCEMaDEeWfFdnv26Efug"/>
-            <value xmi:type="uml:InputPin" xmi:id="_ZE3SwMaFEeWfFdnv26Efug" name="value" incoming="_0oCT4MaFEeWfFdnv26Efug">
-              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
-            </value>
-          </node>
-        </structuredNode>
-        <structuredNode xmi:type="uml:StructuredActivityNode" xmi:id="_LaTnQMaFEeWfFdnv26Efug" name="StructuredActivityNode2" incoming="_OKWQgMaGEeWfFdnv26Efug" outgoing="_Onh7wMaGEeWfFdnv26Efug">
-          <edge xmi:type="uml:ObjectFlow" xmi:id="_0-K78MaFEeWfFdnv26Efug" target="_p4Y6UMaFEeWfFdnv26Efug" source="_fUT3kMaFEeWfFdnv26Efug">
-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_0-dP0MaFEeWfFdnv26Efug" value="true"/>
-            <weight xmi:type="uml:LiteralInteger" xmi:id="_0-d24MaFEeWfFdnv26Efug" value="1"/>
-          </edge>
-          <edge xmi:type="uml:ObjectFlow" xmi:id="_1bLBAMaFEeWfFdnv26Efug" target="_p4gPEMaFEeWfFdnv26Efug" source="_hCQnIMaFEeWfFdnv26Efug">
-            <guard xmi:type="uml:LiteralBoolean" xmi:id="_1bfKEMaFEeWfFdnv26Efug" value="true"/>
-            <weight xmi:type="uml:LiteralInteger" xmi:id="_1bfKEcaFEeWfFdnv26Efug" value="1"/>
-          </edge>
-          <node xmi:type="uml:ReadSelfAction" xmi:id="_fUSpcMaFEeWfFdnv26Efug" name="self">
-            <result xmi:type="uml:OutputPin" xmi:id="_fUT3kMaFEeWfFdnv26Efug" name="result" outgoing="_0-K78MaFEeWfFdnv26Efug" type="_BxUJMMaEEeWfFdnv26Efug"/>
-          </node>
-          <node xmi:type="uml:ValueSpecificationAction" xmi:id="_hCPZAMaFEeWfFdnv26Efug" name="0.5">
-            <result xmi:type="uml:OutputPin" xmi:id="_hCQnIMaFEeWfFdnv26Efug" name="result" outgoing="_1bLBAMaFEeWfFdnv26Efug">
-              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
-              <upperBound xmi:type="uml:LiteralInteger" xmi:id="_BZsIYM5QEeWaRpodR1S6WA" value="1"/>
-              <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_h0FFoMaFEeWfFdnv26Efug" value="1"/>
-            </result>
-            <value xmi:type="uml:LiteralReal" xmi:id="_BZgiMM5QEeWaRpodR1S6WA" value="0.5">
-              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
-            </value>
-          </node>
-          <node xmi:type="uml:AddStructuralFeatureValueAction" xmi:id="_p4VP8MaFEeWfFdnv26Efug" name="set Size" structuralFeature="_wQ2jIMaDEeWfFdnv26Efug" isReplaceAll="true">
-            <object xmi:type="uml:InputPin" xmi:id="_p4Y6UMaFEeWfFdnv26Efug" name="object" incoming="_0-K78MaFEeWfFdnv26Efug" type="_V9MCEMaDEeWfFdnv26Efug"/>
-            <result xmi:type="uml:OutputPin" xmi:id="_p4avgMaFEeWfFdnv26Efug" name="result" type="_V9MCEMaDEeWfFdnv26Efug"/>
-            <value xmi:type="uml:InputPin" xmi:id="_p4gPEMaFEeWfFdnv26Efug" name="value" incoming="_1bLBAMaFEeWfFdnv26Efug">
-              <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
-            </value>
-          </node>
-        </structuredNode>
-        <node xmi:type="uml:AcceptEventAction" xmi:id="_tNIeAMaEEeWfFdnv26Efug" name="at 1.9" incoming="_MtuhgMaGEeWfFdnv26Efug" outgoing="_NLL5kMaGEeWfFdnv26Efug">
-          <trigger xmi:type="uml:Trigger" xmi:id="_yG7egMaEEeWfFdnv26Efug" event="_XhppAMaEEeWfFdnv26Efug"/>
-        </node>
-        <node xmi:type="uml:AcceptEventAction" xmi:id="_9nmsYMaEEeWfFdnv26Efug" name="at 6.5" incoming="_NxbaMMaGEeWfFdnv26Efug" outgoing="_OKWQgMaGEeWfFdnv26Efug">
-          <trigger xmi:type="uml:Trigger" xmi:id="_9nmsYcaEEeWfFdnv26Efug" event="_iY44UMaEEeWfFdnv26Efug"/>
-        </node>
-        <node xmi:type="uml:InitialNode" xmi:id="_ITC7YMaFEeWfFdnv26Efug" outgoing="_MtuhgMaGEeWfFdnv26Efug"/>
-        <node xmi:type="uml:ActivityFinalNode" xmi:id="_KrKz4MaGEeWfFdnv26Efug" name="ActivityFinalNode1" incoming="_Onh7wMaGEeWfFdnv26Efug"/>
-      </ownedBehavior>
-      <ownedBehavior xmi:type="uml:Activity" xmi:id="_W-aHIMaGEeWfFdnv26Efug" name="C2_Factory" node="_fYeJYMaGEeWfFdnv26Efug _fYhMsMaGEeWfFdnv26Efug _fYhzwMaGEeWfFdnv26Efug _fYia0caGEeWfFdnv26Efug _fYjB4saGEeWfFdnv26Efug">
-        <ownedParameter xmi:type="uml:Parameter" xmi:id="_W-auMMaGEeWfFdnv26Efug" name="result" type="_V9MCEMaDEeWfFdnv26Efug" direction="return"/>
-        <edge xmi:type="uml:ObjectFlow" xmi:id="_fYhzxcaGEeWfFdnv26Efug" name="createObjectAction to callConstructor" target="_fYhzwcaGEeWfFdnv26Efug" source="_fYhMscaGEeWfFdnv26Efug">
-          <guard xmi:type="uml:LiteralBoolean" xmi:id="_fYkQAMaGEeWfFdnv26Efug" value="true"/>
-          <weight xmi:type="uml:LiteralInteger" xmi:id="_fYk3EMaGEeWfFdnv26Efug" value="1"/>
-        </edge>
-        <edge xmi:type="uml:ObjectFlow" xmi:id="_fYia0MaGEeWfFdnv26Efug" name="callConstructor to returnParamNode" target="_fYeJYMaGEeWfFdnv26Efug" source="_fYjB4saGEeWfFdnv26Efug">
-          <guard xmi:type="uml:LiteralBoolean" xmi:id="_fYk3EcaGEeWfFdnv26Efug" value="true"/>
-          <weight xmi:type="uml:LiteralInteger" xmi:id="_fYk3EsaGEeWfFdnv26Efug" value="1"/>
-        </edge>
-        <edge xmi:type="uml:ObjectFlow" xmi:id="_fYjo8MaGEeWfFdnv26Efug" name="fork to startbehavior input pin" target="_fYjB4MaGEeWfFdnv26Efug" source="_fYjB4saGEeWfFdnv26Efug">
-          <guard xmi:type="uml:LiteralBoolean" xmi:id="_fYk3E8aGEeWfFdnv26Efug" value="true"/>
-          <weight xmi:type="uml:LiteralInteger" xmi:id="_fYk3FMaGEeWfFdnv26Efug" value="1"/>
-        </edge>
-        <edge xmi:type="uml:ObjectFlow" xmi:id="_fYjo8caGEeWfFdnv26Efug" name="callConstructor to startBehavior" target="_fYjB4saGEeWfFdnv26Efug" source="_fYhzw8aGEeWfFdnv26Efug">
-          <guard xmi:type="uml:LiteralBoolean" xmi:id="_fYk3FcaGEeWfFdnv26Efug" value="true"/>
-          <weight xmi:type="uml:LiteralInteger" xmi:id="_fYk3FsaGEeWfFdnv26Efug" value="1"/>
-        </edge>
-        <node xmi:type="uml:ActivityParameterNode" xmi:id="_fYeJYMaGEeWfFdnv26Efug" name="resultParameterNode" incoming="_fYia0MaGEeWfFdnv26Efug" type="_V9MCEMaDEeWfFdnv26Efug" parameter="_W-auMMaGEeWfFdnv26Efug">
-          <upperBound xmi:type="uml:LiteralInteger" xmi:id="_fYgloMaGEeWfFdnv26Efug" value="1"/>
-        </node>
-        <node xmi:type="uml:CreateObjectAction" xmi:id="_fYhMsMaGEeWfFdnv26Efug" name="createObject" classifier="_V9MCEMaDEeWfFdnv26Efug">
-          <result xmi:type="uml:OutputPin" xmi:id="_fYhMscaGEeWfFdnv26Efug" name="result" outgoing="_fYhzxcaGEeWfFdnv26Efug" type="_V9MCEMaDEeWfFdnv26Efug">
-            <upperBound xmi:type="uml:LiteralInteger" xmi:id="_fYhMssaGEeWfFdnv26Efug" value="1"/>
-          </result>
-        </node>
-        <node xmi:type="uml:CallOperationAction" xmi:id="_fYhzwMaGEeWfFdnv26Efug" name="callConstructor" operation="_XBWGYMaGEeWfFdnv26Efug">
-          <result xmi:type="uml:OutputPin" xmi:id="_fYhzw8aGEeWfFdnv26Efug" name="result" outgoing="_fYjo8caGEeWfFdnv26Efug" type="_V9MCEMaDEeWfFdnv26Efug">
-            <upperBound xmi:type="uml:LiteralInteger" xmi:id="_fYhzxMaGEeWfFdnv26Efug" value="1"/>
-          </result>
-          <target xmi:type="uml:InputPin" xmi:id="_fYhzwcaGEeWfFdnv26Efug" name="target" incoming="_fYhzxcaGEeWfFdnv26Efug" type="_V9MCEMaDEeWfFdnv26Efug">
-            <upperBound xmi:type="uml:LiteralInteger" xmi:id="_fYhzwsaGEeWfFdnv26Efug" value="1"/>
-          </target>
-        </node>
-        <node xmi:type="uml:StartObjectBehaviorAction" xmi:id="_fYia0caGEeWfFdnv26Efug" name="start classifier behavior">
-          <object xmi:type="uml:InputPin" xmi:id="_fYjB4MaGEeWfFdnv26Efug" name="object" incoming="_fYjo8MaGEeWfFdnv26Efug" type="_V9MCEMaDEeWfFdnv26Efug">
-            <upperBound xmi:type="uml:LiteralInteger" xmi:id="_fYjB4caGEeWfFdnv26Efug" value="1"/>
-          </object>
-        </node>
-        <node xmi:type="uml:ForkNode" xmi:id="_fYjB4saGEeWfFdnv26Efug" name="forkInstanciatedObject" incoming="_fYjo8caGEeWfFdnv26Efug" outgoing="_fYia0MaGEeWfFdnv26Efug _fYjo8MaGEeWfFdnv26Efug"/>
-      </ownedBehavior>
-      <ownedOperation xmi:type="uml:Operation" xmi:id="_XBWGYMaGEeWfFdnv26Efug" name="C2">
-        <ownedParameter xmi:type="uml:Parameter" xmi:id="_XBbl8MaGEeWfFdnv26Efug" name="return" type="_V9MCEMaDEeWfFdnv26Efug" direction="return"/>
-      </ownedOperation>
-    </packagedElement>
-    <packagedElement xmi:type="uml:Package" xmi:id="_TI9xgMaEEeWfFdnv26Efug" name="Events C2">
-      <packagedElement xmi:type="uml:TimeEvent" xmi:id="_XhppAMaEEeWfFdnv26Efug" name="at 1.9">
-        <when xmi:type="uml:TimeExpression" xmi:id="_XhppAcaEEeWfFdnv26Efug">
-          <expr xmi:type="uml:LiteralReal" xmi:id="_XhppAsaEEeWfFdnv26Efug" value="1.9"/>
-        </when>
-      </packagedElement>
-      <packagedElement xmi:type="uml:TimeEvent" xmi:id="_iY44UMaEEeWfFdnv26Efug" name="at 6.5">
-        <when xmi:type="uml:TimeExpression" xmi:id="_iY44UcaEEeWfFdnv26Efug">
-          <expr xmi:type="uml:LiteralReal" xmi:id="_iY44UsaEEeWfFdnv26Efug" value="6.5"/>
-        </when>
-      </packagedElement>
-    </packagedElement>
-    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_CmL5wMXWEeWwx_puHDzFYw">
-      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CmQLMMXWEeWwx_puHDzFYw" source="http://www.eclipse.org/uml2/2.0.0/UML">
-        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/uml2/5.0.0/UML/Profile/Standard#/"/>
-      </eAnnotations>
-      <appliedProfile xmi:type="uml:Profile" href="pathmap://UML_PROFILES/Standard.profile.uml#_0"/>
-    </profileApplication>
-    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_W_MKQMaGEeWfFdnv26Efug">
-      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_W_OmgMaGEeWfFdnv26Efug" source="http://www.eclipse.org/uml2/2.0.0/UML">
-        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/uml2/5.0.0/UML/Profile/Standard#/"/>
-      </eAnnotations>
-      <appliedProfile xmi:type="uml:Profile" href="pathmap://UML_PROFILES/Standard.profile.uml#_0"/>
-    </profileApplication>
-    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_-lr-UBkPEeaboPj-isH3JQ"/>
-    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_A3XGABkQEeaboPj-isH3JQ">
-      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_A3YUIBkQEeaboPj-isH3JQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
-        <references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/FMIProfile/1.0.0#/"/>
-      </eAnnotations>
-      <appliedProfile xmi:type="uml:Profile" href="pathmap://PAPYRUS_FMI_PROFILE/FMI.profile.uml#__Ki3oKvFEeSXqKqlHzx1gA"/>
-    </profileApplication>
-  </uml:Model>
-  <standard:Create xmi:id="_CotCQMXWEeWwx_puHDzFYw" base_BehavioralFeature="_ColtgMXWEeWwx_puHDzFYw"/>
-  <standard:Create xmi:id="_XBc0EMaGEeWfFdnv26Efug" base_BehavioralFeature="_XBWGYMaGEeWfFdnv26Efug"/>
-  <fmiprofile:CS_FMU xmi:id="_8VtIkM44EeW5W4GIqJpyFA" base_Class="_NO0UEMXQEeWwx_puHDzFYw" canNotUseMemoryManagementFunctions="true" canHandleVariableCommunicationStepSize="true"/>
-  <fmiprofile:CS_FMU xmi:id="_-41MoM44EeW5W4GIqJpyFA" base_Class="_V9MCEMaDEeWfFdnv26Efug"/>
-  <fmiprofile:Port xmi:id="_IFSVIM45EeW5W4GIqJpyFA" base_Property="_RUkBcMXQEeWwx_puHDzFYw" description="" variability="discrete" valueReference="1"/>
-  <fmiprofile:Port xmi:id="_TZaUwM45EeW5W4GIqJpyFA" base_Property="_auAFsMaDEeWfFdnv26Efug" variability="discrete"/>
-  <fmiprofile:Port xmi:id="_WYYAQM45EeW5W4GIqJpyFA" base_Property="_wQ2jIMaDEeWfFdnv26Efug" variability="discrete" valueReference="1"/>
-</xmi:XMI>
diff --git a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/fmu_build/resources/moka.properties b/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/fmu_build/resources/moka.properties
deleted file mode 100644
index d415e51..0000000
--- a/bundles/fmi/tools/org.eclipse.papyrus.moka.fmu.wrapper/test/fmu_build/resources/moka.properties
+++ /dev/null
@@ -1,3 +0,0 @@
-#Fri Jun 10 12:43:59 CEST 2016
-fmu.qualifiedname=FMU Examples\:\:Change events\:\:Example 1\:\:A
-model.path=FMU_Examples.uml
diff --git a/bundles/fmi/tools/pom.xml b/bundles/fmi/tools/pom.xml
index 1ef93f8..48c6b2c 100644
--- a/bundles/fmi/tools/pom.xml
+++ b/bundles/fmi/tools/pom.xml
@@ -9,7 +9,7 @@
 	<parent>

 		<groupId>org.eclipse.papyrus.moka</groupId>

 		<artifactId>org.eclipse.papyrus.moka.bundles.fmi</artifactId>

-		<version>2.0.100-SNAPSHOT</version>

+		<version>2.1.0-SNAPSHOT</version>

 	</parent>

 	

 	<!-- POM Description -->

@@ -22,7 +22,7 @@
 		<module>org.eclipse.papyrus.moka.fmi</module>

 		<module>org.eclipse.papyrus.moka.fmi.fmi2uml</module>

 		<module>org.eclipse.papyrus.moka.fmi.profile.ui</module>

-		<module>org.eclipse.papyrus.moka.fmi.exporter</module>

+		<module>org.eclipse.papyrus.moka.fmi.rcp.export</module>

 		<module>org.eclipse.papyrus.moka.fmu.rcp</module>

 	</modules>

 	

diff --git a/bundles/fmi/ui/org.eclipse.papyrus.moka.fmi.ui/META-INF/MANIFEST.MF b/bundles/fmi/ui/org.eclipse.papyrus.moka.fmi.ui/META-INF/MANIFEST.MF
index c92d650..7d924ec 100644
--- a/bundles/fmi/ui/org.eclipse.papyrus.moka.fmi.ui/META-INF/MANIFEST.MF
+++ b/bundles/fmi/ui/org.eclipse.papyrus.moka.fmi.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: FMI UI
 Bundle-SymbolicName: org.eclipse.papyrus.moka.fmi.ui;singleton:=true
-Bundle-Version: 2.0.100.qualifier
+Bundle-Version: 2.1.0.qualifier
 Bundle-Activator: org.eclipse.papyrus.moka.fmi.ui.Activator
 Require-Bundle: org.eclipse.ui;bundle-version="[3.109.0,4.0.0)",
  org.eclipse.core.runtime;bundle-version="[3.13.0,4.0.0)",
@@ -12,7 +12,6 @@
  org.eclipse.papyrus.moka.ui;bundle-version="2.0.100",
  org.eclipse.papyrus.moka.composites.utils;bundle-version="2.0.100",
  org.eclipse.papyrus.moka.fmu.engine;bundle-version="2.0.100",
- org.eclipse.papyrus.moka.fmi.exporter;bundle-version="2.0.100",
  org.eclipse.papyrus.moka.fmi.fmi2uml;bundle-version="2.0.100",
  org.eclipse.gmf.runtime.diagram.ui;bundle-version="[1.8.0,2.0.0)",
  org.eclipse.papyrus.infra.gmfdiag.css;bundle-version="[2.1.0,3.0.0)",
diff --git a/bundles/fmi/ui/org.eclipse.papyrus.moka.fmi.ui/plugin.xml b/bundles/fmi/ui/org.eclipse.papyrus.moka.fmi.ui/plugin.xml
index a419cd8..45b030c 100644
--- a/bundles/fmi/ui/org.eclipse.papyrus.moka.fmi.ui/plugin.xml
+++ b/bundles/fmi/ui/org.eclipse.papyrus.moka.fmi.ui/plugin.xml
@@ -28,21 +28,6 @@
             </visibleWhen>

          </menu>

       </menuContribution>

-      <menuContribution

-            allPopups="false"

-            locationURI="popup:org.eclipse.papyrus.views.modelexplorer.popup.moka.fmi">

-         <command

-               commandId="org.eclipse.papyrus.moka.fmi.ui.handlers.ExportFMUHandlerCommand"

-               icon="platform:/plugin/org.eclipse.papyrus.uml.icons/resource/gif/Component.gif"

-               id="org.eclipse.papyrus.moka.ui.utils.handlers.ExportFMUMenu"

-               label="Export FMU for co-simulation"

-               style="push"

-               tooltip="Export FMU for co-simulation">

-            <visibleWhen

-                  checkEnabled="false">

-            </visibleWhen>

-         </command>

-      </menuContribution>

        <menuContribution

             allPopups="false"

             locationURI="popup:org.eclipse.papyrus.views.modelexplorer.popup.moka.fmi">

@@ -100,12 +85,6 @@
    </extension>

    <extension

          point="org.eclipse.ui.commands">

-      <command

-            categoryId="org.eclipse.papyrus.editor.category"

-            description="Export FMU"

-            id="org.eclipse.papyrus.moka.fmi.ui.handlers.ExportFMUHandlerCommand"

-            name="Export FMU">

-      </command>

        <command

             categoryId="org.eclipse.papyrus.editor.category"

             description="Import FMU"

@@ -116,25 +95,6 @@
    <extension

          point="org.eclipse.ui.handlers">

       <handler

-            class="org.eclipse.papyrus.moka.fmi.ui.handlers.ExportFMUHandler"

-            commandId="org.eclipse.papyrus.moka.fmi.ui.handlers.ExportFMUHandlerCommand">

-         <enabledWhen>

-            <with

-                  variable="selection">

-               <iterate

-                     ifEmpty="false"

-                     operator="and">

-                  <adapt

-                        type="org.eclipse.emf.ecore.EObject">

-                     <instanceof

-                           value="org.eclipse.uml2.uml.Class">

-                     </instanceof>

-                  </adapt>

-               </iterate>

-            </with>

-         </enabledWhen>

-      </handler>

-      <handler

             class="org.eclipse.papyrus.moka.fmi.ui.handlers.ImportFMULibHandler"

             commandId="org.eclipse.papyrus.moka.fmi.ui.handlers.ImportFMUHandlerCommand">

              <enabledWhen>

diff --git a/bundles/fmi/ui/org.eclipse.papyrus.moka.fmi.ui/pom.xml b/bundles/fmi/ui/org.eclipse.papyrus.moka.fmi.ui/pom.xml
index e84b6ae..b6dabc7 100644
--- a/bundles/fmi/ui/org.eclipse.papyrus.moka.fmi.ui/pom.xml
+++ b/bundles/fmi/ui/org.eclipse.papyrus.moka.fmi.ui/pom.xml
@@ -9,7 +9,7 @@
 	<parent>

 		<groupId>org.eclipse.papyrus.moka</groupId>

 		<artifactId>org.eclipse.papyrus.moka.bundles.fmi.ui</artifactId>

-		<version>2.0.100-SNAPSHOT</version>

+		<version>2.1.0-SNAPSHOT</version>

 	</parent>

 

 	<!-- POM description -->

diff --git a/bundles/fmi/ui/org.eclipse.papyrus.moka.fmi.ui/src/org/eclipse/papyrus/moka/fmi/ui/handlers/ExportFMUHandler.java b/bundles/fmi/ui/org.eclipse.papyrus.moka.fmi.ui/src/org/eclipse/papyrus/moka/fmi/ui/handlers/ExportFMUHandler.java
deleted file mode 100644
index 2cf2732..0000000
--- a/bundles/fmi/ui/org.eclipse.papyrus.moka.fmi.ui/src/org/eclipse/papyrus/moka/fmi/ui/handlers/ExportFMUHandler.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*****************************************************************************
- * Copyright (c) 2016 CEA LIST.
- *
- * 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:
- *  CEA LIST - Initial API and implementation
- *****************************************************************************/
-package org.eclipse.papyrus.moka.fmi.ui.handlers;
-
-import org.eclipse.emf.transaction.RecordingCommand;
-import org.eclipse.emf.transaction.TransactionalEditingDomain;
-import org.eclipse.papyrus.moka.composites.utils.handlers.AbstractCompositeUtilsHandler;
-import org.eclipse.papyrus.moka.composites.utils.handlers.Utils;
-import org.eclipse.papyrus.moka.fmi.exporter.FMUExporter;
-import org.eclipse.papyrus.moka.fmi.profile.util.FMIProfileUtil;
-import org.eclipse.papyrus.moka.fmi.ui.dialogs.ExportFMUDialog;
-import org.eclipse.swt.SWT;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.uml2.uml.Behavior;
-import org.eclipse.uml2.uml.Class;
-import org.eclipse.uml2.uml.Element;
-
-
-public class ExportFMUHandler extends AbstractCompositeUtilsHandler {
-
-	@Override
-	public RecordingCommand getUpdateCommand(Class context, TransactionalEditingDomain domain) {
-		return new ExportFMUCommand(context, domain);
-	}
-	
-	@Override
-	public boolean isEnabled() {
-		Element selectedElement = Utils.getSelection();
-		if (selectedElement != null) {
-			if (selectedElement instanceof Class && !(selectedElement instanceof Behavior)) {
-				return FMIProfileUtil.isCS_FMU((Class)selectedElement) ;
-			}
-		}
-		return false;
-	}
-
-
-
-	/**
-	 * Command that exports the FMU for a given CS_FMU.
-	 *
-	 */
-	protected class ExportFMUCommand extends RecordingCommand {
-
-		protected Class context;
-
-		public ExportFMUCommand(Class context, TransactionalEditingDomain domain) {
-			super(domain);
-			this.context = context;
-		}
-
-		/*
-		 * (non-Javadoc)
-		 *
-		 * @see
-		 * org.eclipse.gmf.runtime.emf.commands.core.command.AbstractTransactionalCommand#doExecuteWithResult(org.eclipse.core.runtime.IProgressMonitor
-		 * , org.eclipse.core.runtime.IAdaptable)
-		 */
-		@Override
-		protected void doExecute() {
-			Display display = Display.getDefault() ;
-			display.syncExec(new Runnable() {
-				@Override
-				public void run() {
-					
-					
-					ExportFMUDialog dialog = new ExportFMUDialog(Display.getCurrent().getActiveShell(), context.getName()) ;
-//					IPreferenceStore store = Activator.getDefault().getPreferenceStore();
-//					dialog.setPreferenceStore(store);
-					int status = dialog.open() ;
-					if (status != SWT.ABORT) {
-						FMUExporter.generateFMU(context, dialog.getFmuName(),dialog.getSelectedDir(),dialog.getSelectedPlatform(),dialog.getSelectedJrePath());
-					}
-				}
-			});
-		}
-	}
-}
diff --git a/bundles/fmi/ui/pom.xml b/bundles/fmi/ui/pom.xml
index e42b04d..819d3e0 100644
--- a/bundles/fmi/ui/pom.xml
+++ b/bundles/fmi/ui/pom.xml
@@ -9,7 +9,7 @@
 	<parent>

 		<groupId>org.eclipse.papyrus.moka</groupId>

 		<artifactId>org.eclipse.papyrus.moka.bundles.fmi</artifactId>

-		<version>2.0.100-SNAPSHOT</version>

+		<version>2.1.0-SNAPSHOT</version>

 	</parent>

 	

 	<!-- POM Description -->

diff --git a/bundles/pom.xml b/bundles/pom.xml
index aa67545..c1778a0 100644
--- a/bundles/pom.xml
+++ b/bundles/pom.xml
@@ -9,7 +9,7 @@
 	<parent>
 		<groupId>org.eclipse.papyrus.moka</groupId>
 		<artifactId>org.eclipse.papyrus.moka.root</artifactId>
-		<version>2.0.100-SNAPSHOT</version>
+		<version>2.1.0-SNAPSHOT</version>
 	</parent>
 	
 	<!-- POM Description -->
diff --git a/features/org.eclipse.papyrus.moka.feature/pom.xml b/features/org.eclipse.papyrus.moka.feature/pom.xml
index 0898142..f1fd990 100644
--- a/features/org.eclipse.papyrus.moka.feature/pom.xml
+++ b/features/org.eclipse.papyrus.moka.feature/pom.xml
@@ -6,13 +6,14 @@
 	<parent>
 		<groupId>org.eclipse.papyrus.moka</groupId>
 		<artifactId>org.eclipse.papyrus.moka.features</artifactId>
-		<version>2.0.100-SNAPSHOT</version>
+		<version>2.1.0-SNAPSHOT</version>
 	</parent>
 
 	<!-- POM description -->
 	<artifactId>org.eclipse.papyrus.moka.feature</artifactId>
 	<packaging>eclipse-feature</packaging>
 	<name>Moka Core Feature</name>
+	<version>2.0.100-SNAPSHOT</version>
 
 	<build>
 		<plugins>
diff --git a/features/org.eclipse.papyrus.moka.fmi.feature/feature.xml b/features/org.eclipse.papyrus.moka.fmi.feature/feature.xml
index 5f03044..aea7f15 100644
--- a/features/org.eclipse.papyrus.moka.fmi.feature/feature.xml
+++ b/features/org.eclipse.papyrus.moka.fmi.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature

       id="org.eclipse.papyrus.moka.fmi.feature"

       label="Moka For Cosimulation (Incubation)"

-      version="2.0.100.qualifier"

+      version="2.1.0.qualifier"

       provider-name="Eclipse Modeling Project">

 

    <description url="http://www.example.com/description">

diff --git a/features/org.eclipse.papyrus.moka.fmi.feature/pom.xml b/features/org.eclipse.papyrus.moka.fmi.feature/pom.xml
index 5266476..14a3bf7 100644
--- a/features/org.eclipse.papyrus.moka.fmi.feature/pom.xml
+++ b/features/org.eclipse.papyrus.moka.fmi.feature/pom.xml
@@ -5,7 +5,7 @@
 	<parent>
 		<groupId>org.eclipse.papyrus.moka</groupId>
 		<artifactId>org.eclipse.papyrus.moka.features</artifactId>
-		<version>2.0.100-SNAPSHOT</version>
+		<version>2.0.1-SNAPSHOT</version>
 	</parent>
 	
 	<!-- POM description -->
diff --git a/features/pom.xml b/features/pom.xml
index 9b249bd..9a8ab8c 100644
--- a/features/pom.xml
+++ b/features/pom.xml
@@ -7,7 +7,7 @@
 	<parent>

 		<groupId>org.eclipse.papyrus.moka</groupId>

 		<artifactId>org.eclipse.papyrus.moka.root</artifactId>

-		<version>2.0.100-SNAPSHOT</version>

+		<version>2.1.0-SNAPSHOT</version>

 	</parent>

 	

 	<!-- POM Description -->

diff --git a/pom.xml b/pom.xml
index fcf6177..ceb8d23 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
 
 	<!-- Parent of this POM -->
 	<parent>
-		<version>2.0.100-SNAPSHOT</version>
+		<version>2.1.0-SNAPSHOT</version>
 		<groupId>org.eclipse.papyrus.moka</groupId>
 		<artifactId>org.eclipse.papyrus.moka.releng.configuration</artifactId>
 		<relativePath>./releng/org.eclipse.papyrus.moka.configuration</relativePath>
diff --git a/products/org.eclipse.papyrus.moka.fmu.product/pom.xml b/products/org.eclipse.papyrus.moka.fmu.product/pom.xml
index b4afdce..dcf6996 100644
--- a/products/org.eclipse.papyrus.moka.fmu.product/pom.xml
+++ b/products/org.eclipse.papyrus.moka.fmu.product/pom.xml
@@ -17,7 +17,7 @@
 	<version>2.0.0-SNAPSHOT</version>

 

 	<properties>

-		<fmi.exporter.target.folder>../../bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.exporter/resources/</fmi.exporter.target.folder>

+		<fmi.exporter.target.folder>../../bundles/fmi/tools/org.eclipse.papyrus.moka.fmi.rcp.export/resources/</fmi.exporter.target.folder>

 	</properties>

 

 	<!-- Specific build -->

diff --git a/products/pom.xml b/products/pom.xml
index 8f02d65..153f0a7 100644
--- a/products/pom.xml
+++ b/products/pom.xml
@@ -9,13 +9,14 @@
 	<parent>

 		<groupId>org.eclipse.papyrus.moka</groupId>

 		<artifactId>org.eclipse.papyrus.moka.root</artifactId>

-		<version>2.0.100-SNAPSHOT</version>

+		<version>2.1.0-SNAPSHOT</version>

 	</parent>

 	

 	<!-- POM Description -->

 	<artifactId>org.eclipse.papyrus.moka.products</artifactId>

 	<packaging>pom</packaging>

 	<name>Moka RCP (Bundles folder)</name>

+	<version>2.0.100-SNAPSHOT</version>

 	

 	<!-- Modules to build -->

 	<modules>

diff --git a/releng/org.eclipse.papyrus.moka.configuration/pom.xml b/releng/org.eclipse.papyrus.moka.configuration/pom.xml
index 27c95ad..a135797 100644
--- a/releng/org.eclipse.papyrus.moka.configuration/pom.xml
+++ b/releng/org.eclipse.papyrus.moka.configuration/pom.xml
@@ -14,7 +14,7 @@
 	<!-- Moka root POM: general information -->

 	<groupId>org.eclipse.papyrus.moka</groupId>

 	<artifactId>org.eclipse.papyrus.moka.releng.configuration</artifactId>

-	<version>2.0.100-SNAPSHOT</version>

+	<version>2.1.0-SNAPSHOT</version>

 	<packaging>pom</packaging>

 	<name>Moka</name>

 	<description>Papyrus Model Execution Platform</description>

diff --git a/releng/org.eclipse.papyrus.moka.p2/category.xml b/releng/org.eclipse.papyrus.moka.p2/category.xml
index e57d04a..4e0bb86 100644
--- a/releng/org.eclipse.papyrus.moka.p2/category.xml
+++ b/releng/org.eclipse.papyrus.moka.p2/category.xml
@@ -3,7 +3,7 @@
    <feature url="features/org.eclipse.papyrus.moka.feature_2.0.100.qualifier.jar" id="org.eclipse.papyrus.moka.feature" version="2.0.100.qualifier">

       <category name="org.eclipse.papyrus.moka"/>

    </feature>

-   <feature url="features/org.eclipse.papyrus.moka.fmi.feature_2.0.100.qualifier.jar" id="org.eclipse.papyrus.moka.fmi.feature" version="2.0.100.qualifier">

+   <feature url="features/org.eclipse.papyrus.moka.fmi.feature_2.1.0.qualifier.jar" id="org.eclipse.papyrus.moka.fmi.feature" version="2.1.0.qualifier">

       <category name="org.eclipse.papyrus.moka"/>

    </feature>

    <category-def name="org.eclipse.papyrus.moka" label="Moka">

diff --git a/releng/pom.xml b/releng/pom.xml
index c0d6541..0419766 100644
--- a/releng/pom.xml
+++ b/releng/pom.xml
@@ -7,13 +7,14 @@
 	<parent>
 		<groupId>org.eclipse.papyrus.moka</groupId>
 		<artifactId>org.eclipse.papyrus.moka.root</artifactId>
-		<version>2.0.100-SNAPSHOT</version>
+		<version>2.1.0-SNAPSHOT</version>
 	</parent>
 	
 	<!-- POM description -->
 	<artifactId>org.eclipse.papyrus.moka.releng</artifactId>
 	<name>Moka Tycho Configuration (Releng folder)</name>
 	<packaging>pom</packaging>
+	<version>2.0.100-SNAPSHOT</version>
 	
 	<!-- Modules to build -->
 	<modules>
diff --git a/tests/pom.xml b/tests/pom.xml
index 00f9d97..f38b5ec 100644
--- a/tests/pom.xml
+++ b/tests/pom.xml
@@ -8,7 +8,7 @@
 	<parent>

 		<groupId>org.eclipse.papyrus.moka</groupId>

 		<artifactId>org.eclipse.papyrus.moka.root</artifactId>

-		<version>2.0.100-SNAPSHOT</version>

+		<version>2.1.0-SNAPSHOT</version>

 	</parent>

 

 	<!-- POM Description -->