Merge "[PapyrusReq] add Allocation Matrix and update existing matrix"
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy.ui/.classpath b/plugins/proxy/org.eclipse.papyrus.proxy.ui/.classpath
new file mode 100644
index 0000000..eca7bdb
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy.ui/.classpath
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8"/>
+	<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+	<classpathentry kind="src" path="src"/>
+	<classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy.ui/.project b/plugins/proxy/org.eclipse.papyrus.proxy.ui/.project
new file mode 100644
index 0000000..169b589
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy.ui/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.proxy.ui</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy.ui/.settings/org.eclipse.jdt.core.prefs b/plugins/proxy/org.eclipse.papyrus.proxy.ui/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..0c68a61
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy.ui/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy.ui/META-INF/MANIFEST.MF b/plugins/proxy/org.eclipse.papyrus.proxy.ui/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..cbe34b6
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy.ui/META-INF/MANIFEST.MF
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.proxy.ui;singleton:=true
+Bundle-Version: 0.7.0.qualifier
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-Localization: plugin
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.osgi;bundle-version="3.12.50",
+ org.eclipse.ui.workbench;bundle-version="3.110.1",
+ org.eclipse.core.runtime;bundle-version="3.13.0",
+ org.eclipse.ui;bundle-version="3.109.0",
+ org.eclipse.uml2.uml,
+ org.eclipse.papyrus.proxy;bundle-version="0.7.0",
+ org.eclipse.emf.edit.ui,
+ org.eclipse.core.resources,
+ org.eclipse.papyrus.infra.ui
+Bundle-Activator: org.eclipse.papyrus.proxy.ui.Activator
+Bundle-Vendor: %providerName
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy.ui/about.html b/plugins/proxy/org.eclipse.papyrus.proxy.ui/about.html
new file mode 100644
index 0000000..d35d5ae
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy.ui/about.html
@@ -0,0 +1,28 @@
+<!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/plugins/proxy/org.eclipse.papyrus.proxy.ui/build.properties b/plugins/proxy/org.eclipse.papyrus.proxy.ui/build.properties
new file mode 100644
index 0000000..e9863e2
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy.ui/build.properties
@@ -0,0 +1,5 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .,\
+               plugin.xml
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy.ui/plugin.properties b/plugins/proxy/org.eclipse.papyrus.proxy.ui/plugin.properties
new file mode 100644
index 0000000..ddcab68
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy.ui/plugin.properties
@@ -0,0 +1,14 @@
+#################################################################################
+# Copyright (c) 2008, 2017 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:
+#     Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr - initial API and implementation
+##################################################################################
+pluginName=GUI Proxy plugin
+providerName=Eclipse Modeling Project
+
+pluginDescription=The goal of this plugin is to bring GUI to connect other element of the environment
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy.ui/plugin.xml b/plugins/proxy/org.eclipse.papyrus.proxy.ui/plugin.xml
new file mode 100644
index 0000000..28c810c
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy.ui/plugin.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+   <extension
+         point="org.eclipse.ui.commands">
+      <command
+            categoryId="org.eclipse.papyrus.editor.category"
+            defaultHandler="org.eclipse.papyrus.proxy.ui.handler.LinkToEcoreModelHandler"
+            description="Link to ecore element"
+            id="org.eclipse.papyrus.proxy.ui.handler.LinkToEcoreModelHandler"
+            name="Link to ecore element">
+      </command>
+   </extension>
+   <extension
+         point="org.eclipse.ui.menus">
+      <menuContribution
+            allPopups="false"
+            locationURI="popup:org.eclipse.papyrus.views.modelexplorer.modelexplorer.popup">
+         <command
+               commandId="org.eclipse.papyrus.proxy.ui.handler.LinkToEcoreModelHandler"
+               id="org.eclipse.papyrus.proxy.ui.handler.LinkToEcoreModelMenu"
+               label="Link to ecore element"
+               style="push">
+            <visibleWhen
+                  checkEnabled="true">
+            </visibleWhen>
+         </command>
+      </menuContribution>
+   </extension>
+   <extension
+         point="org.eclipse.ui.startup">
+      <startup
+            class="org.eclipse.papyrus.proxy.ui.Activator">
+      </startup>
+   </extension>
+
+</plugin>
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy.ui/src/org/eclipse/papyrus/proxy/ui/Activator.java b/plugins/proxy/org.eclipse.papyrus.proxy.ui/src/org/eclipse/papyrus/proxy/ui/Activator.java
new file mode 100644
index 0000000..9122916
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy.ui/src/org/eclipse/papyrus/proxy/ui/Activator.java
@@ -0,0 +1,61 @@
+package org.eclipse.papyrus.proxy.ui;
+
+import org.eclipse.ui.IStartup;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * This class manage the launch and stop of the plugin
+ *
+ */
+public class Activator extends AbstractUIPlugin implements IStartup {
+
+	/** The plug-in ID **/
+	public static final String PLUGIN_ID = "org.eclipse.papyrus.proxy.ui"; //$NON-NLS-1$
+
+	// The shared instance
+	private static Activator plugin;
+
+	/**
+	 * The constructor
+	 */
+	public Activator() {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		plugin = this;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext context) throws Exception {
+		plugin = null;
+		super.stop(context);
+	}
+
+	/**
+	 * Returns the shared instance
+	 *
+	 * @return the shared instance
+	 */
+	public static Activator getDefault() {
+		return plugin;
+	}
+
+	@Override
+	public void earlyStartup() {
+		// TODO Auto-generated method stub
+
+	}
+
+
+}
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy.ui/src/org/eclipse/papyrus/proxy/ui/apiaccess/PapyrusResourceAccess.java b/plugins/proxy/org.eclipse.papyrus.proxy.ui/src/org/eclipse/papyrus/proxy/ui/apiaccess/PapyrusResourceAccess.java
new file mode 100644
index 0000000..100b8e1
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy.ui/src/org/eclipse/papyrus/proxy/ui/apiaccess/PapyrusResourceAccess.java
@@ -0,0 +1,162 @@
+/*****************************************************************************
+ * Copyright (c) 2017 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:
+ *  Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.proxy.ui.apiaccess;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.jface.viewers.Viewer;
+import org.eclipse.papyrus.infra.core.resource.ModelSet;
+import org.eclipse.papyrus.infra.core.services.ServicesRegistry;
+import org.eclipse.papyrus.infra.ui.editor.IMultiDiagramEditor;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchWindow;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.dialogs.ElementTreeSelectionDialog;
+import org.eclipse.ui.dialogs.PatternFilter;
+import org.eclipse.ui.model.BaseWorkbenchContentProvider;
+import org.eclipse.ui.model.WorkbenchLabelProvider;
+import org.osgi.framework.ServiceException;
+
+
+/**
+ * This class is used to access of loading file by using papyrus
+ * 
+ */
+public class PapyrusResourceAccess {
+
+	protected ModelSet modelSet;
+
+	/**
+	 * 
+	 * @return the editing domain of papyrus
+	 */
+	public TransactionalEditingDomain getDomain() {
+		return getCurrentModelSet().getTransactionalEditingDomain();
+	}
+
+	public EObject getRootEObjectFromResource() {
+		ElementTreeSelectionDialog dialog = new ElementTreeSelectionDialog(Display.getDefault().getActiveShell(), new WorkbenchLabelProvider(), new BaseWorkbenchContentProvider());
+		dialog.setInput(ResourcesPlugin.getWorkspace().getRoot());
+
+		PatternFilter UMLPattern = new PatternFilter() {
+			@Override
+			public boolean isElementVisible(Viewer viewer, Object element) {
+				if (viewer != null) {
+					return super.isElementVisible(viewer, element);
+				}
+				return true;
+			}
+		};
+		UMLPattern.setPattern("*.*");
+		dialog.setAllowMultiple(false);
+		dialog.addFilter(UMLPattern);
+		dialog.open();
+		if (dialog.getResult().length > 0) {
+			Object object = dialog.getResult()[0];
+			if (object instanceof IFile) {
+				IFile aReviewModel = ((IFile) object);
+				Resource tmpResource = getCurrentModelSet().getResource(URI.createPlatformResourceURI(aReviewModel.getFullPath().toOSString(), true), true);
+				return tmpResource.getContents().get(0);
+
+			}
+		}
+		return null;
+	}
+
+	/**
+	 * used to get the the current workbenchPart
+	 * 
+	 * @return
+	 */
+	protected IWorkbenchPart getBootstrapPart() {
+
+
+		IWorkbenchPart part = null;
+		try {
+			IWorkbenchWindow activeWorkbenchWindow = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
+			if (activeWorkbenchWindow != null) {
+				IWorkbenchPage activePage = activeWorkbenchWindow.getActivePage();
+				if (activePage != null) {
+					part = activePage.getActiveEditor();
+				}
+			}
+		} catch (NullPointerException e) {
+			// An element is not active yet
+			return null;
+		}
+		if (isImportant(part)) {
+			return part;
+		}
+		// The current active part is not for us.
+		return null;
+	}
+
+	/**
+	 * return true if the activated part is a {@link IMultiDiagramEditor}.
+	 *
+	 * @see org.eclipse.ui.part.PageBookView#isImportant(org.eclipse.ui.IWorkbenchPart)
+	 *
+	 * @param part
+	 * @return
+	 */
+	protected boolean isImportant(IWorkbenchPart part) {
+
+
+		if (part instanceof IMultiDiagramEditor) {
+			return true;
+		}
+
+		return false;
+	}
+
+	/**
+	 * 
+	 * @return the current model set of papyrus.
+	 */
+	public ModelSet getCurrentModelSet() {
+		if (modelSet != null) {
+			return modelSet;
+		}
+		IWorkbenchPart part = getBootstrapPart();
+		if (part instanceof IMultiDiagramEditor) {
+			try {
+				modelSet = getServiceRegistry().getService(ModelSet.class);
+			} catch (ServiceException e) {
+				e.printStackTrace();
+			} catch (org.eclipse.papyrus.infra.core.services.ServiceException e) {
+				e.printStackTrace();
+			}
+		}
+		return modelSet;
+	}
+
+	/**
+	 * @return current service registry
+	 */
+	public ServicesRegistry getServiceRegistry() {
+		IWorkbenchPart part = getBootstrapPart();
+		if (part instanceof IMultiDiagramEditor) {
+			ServicesRegistry registry = ((IMultiDiagramEditor) part).getServicesRegistry();
+			return registry;
+		}
+		return null;
+	}
+
+}
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy.ui/src/org/eclipse/papyrus/proxy/ui/handler/LinkToEcoreModelHandler.java b/plugins/proxy/org.eclipse.papyrus.proxy.ui/src/org/eclipse/papyrus/proxy/ui/handler/LinkToEcoreModelHandler.java
new file mode 100644
index 0000000..88fadd9
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy.ui/src/org/eclipse/papyrus/proxy/ui/handler/LinkToEcoreModelHandler.java
@@ -0,0 +1,48 @@
+/*****************************************************************************
+ * Copyright (c) 2017 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:
+ *  Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.proxy.ui.handler;
+
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.proxy.command.SetEReferenceCommand;
+import org.eclipse.papyrus.proxy.proxy.EcoreReference;
+import org.eclipse.papyrus.proxy.ui.apiaccess.PapyrusResourceAccess;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.util.UMLUtil;
+
+public class LinkToEcoreModelHandler extends ProxyAbstractHandler {
+
+
+	@Override
+	public Object execute(ExecutionEvent event) throws ExecutionException {
+		PapyrusResourceAccess papyrusResourceAccess = new PapyrusResourceAccess();
+		EObject root = papyrusResourceAccess.getRootEObjectFromResource();
+		if (root != null) {
+			SetEReferenceCommand setEReferenceCommand = new SetEReferenceCommand(papyrusResourceAccess.getDomain(), getSelection(), root);
+			papyrusResourceAccess.getDomain().getCommandStack().execute(setEReferenceCommand);
+		}
+		return null;
+	}
+
+
+	@Override
+	public boolean isEnabled() {
+		Element selectedElement = getSelection();
+		if (UMLUtil.getStereotypeApplication(selectedElement, EcoreReference.class) != null) {
+			return true;
+		}
+		return false;
+	}
+}
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy.ui/src/org/eclipse/papyrus/proxy/ui/handler/ProxyAbstractHandler.java b/plugins/proxy/org.eclipse.papyrus.proxy.ui/src/org/eclipse/papyrus/proxy/ui/handler/ProxyAbstractHandler.java
new file mode 100644
index 0000000..39099e8
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy.ui/src/org/eclipse/papyrus/proxy/ui/handler/ProxyAbstractHandler.java
@@ -0,0 +1,92 @@
+/*****************************************************************************
+ * Copyright (c) 2014, 2017 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:
+ *  Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.proxy.ui.handler;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.ui.ISelectionService;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.uml2.uml.Element;
+
+/**
+ * This is an abstract handler that can be used by other handlers. it provides methods to get list of selected elements.
+ *
+ */
+public abstract class ProxyAbstractHandler extends AbstractHandler {
+
+	/**
+	 * the constructor
+	 */
+	public ProxyAbstractHandler() {
+		super();
+	}
+
+	/**
+	 * getSelected element in the diagram or in hte model explorer
+	 * 
+	 * @return Element or null
+	 */
+	protected Element getSelection() {
+		org.eclipse.uml2.uml.Element selectedElement = null;
+		final ISelectionService selectionService = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService();
+		final ISelection selection = selectionService.getSelection();
+
+		if (selection instanceof IStructuredSelection) {
+			final Object selectedobject = ((IStructuredSelection) selection).getFirstElement();
+
+			if (selectedobject instanceof IAdaptable) {
+				final EObject selectedEObject = ((IAdaptable) selectedobject).getAdapter(EObject.class);
+				if (selectedEObject instanceof org.eclipse.uml2.uml.Element) {
+					selectedElement = (Element) selectedEObject;
+				}
+			}
+
+			return selectedElement;
+		}
+		return null;
+	}
+
+	/**
+	 * getSelected element in the diagram or in hte model explorer
+	 * 
+	 * @return Element or null
+	 */
+	protected ArrayList<Element> getSelectionSet() {
+		ArrayList<Element> selectedSet = new ArrayList<Element>();
+		ISelectionService selectionService = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService();
+		ISelection selection = selectionService.getSelection();
+
+		// look for papyrus
+
+		if (selection instanceof IStructuredSelection) {
+			@SuppressWarnings("rawtypes")
+			Iterator selectedobjectIteractor = ((IStructuredSelection) selection).iterator();
+			while (selectedobjectIteractor.hasNext()) {
+				Object currentSelection = selectedobjectIteractor.next();
+				if (currentSelection instanceof org.eclipse.uml2.uml.Element) {
+					selectedSet.add((Element) currentSelection);
+				}
+			}
+
+
+		}
+		return selectedSet;
+	}
+}
\ No newline at end of file
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/.classpath b/plugins/proxy/org.eclipse.papyrus.proxy/.classpath
new file mode 100644
index 0000000..2ff2a90
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/.classpath
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+	<classpathentry kind="src" path="src-gen">
+		<attributes>
+			<attribute name="ignore_optional_problems" value="true"/>
+		</attributes>
+	</classpathentry>
+	<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="bin"/>
+</classpath>
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/.project b/plugins/proxy/org.eclipse.papyrus.proxy/.project
new file mode 100644
index 0000000..776fe76
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/.project
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.papyrus.proxy</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.jdt.core.javabuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.ManifestBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.pde.SchemaBuilder</name>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.pde.PluginNature</nature>
+		<nature>org.eclipse.jdt.core.javanature</nature>
+	</natures>
+</projectDescription>
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/.settings/org.eclipse.jdt.core.prefs b/plugins/proxy/org.eclipse.papyrus.proxy/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..beab376
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,26 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.methodParameters=do not generate
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.doc.comment.support=enabled
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.problem.invalidJavadoc=error
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTags=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsDeprecatedRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsNotVisibleRef=disabled
+org.eclipse.jdt.core.compiler.problem.invalidJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingJavadocComments=error
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocCommentsVisibility=protected
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagDescription=return_tag
+org.eclipse.jdt.core.compiler.problem.missingJavadocTags=error
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsMethodTypeParameters=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsOverriding=disabled
+org.eclipse.jdt.core.compiler.problem.missingJavadocTagsVisibility=protected
+org.eclipse.jdt.core.compiler.source=1.8
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/META-INF/MANIFEST.MF b/plugins/proxy/org.eclipse.papyrus.proxy/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..643f47a
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/META-INF/MANIFEST.MF
@@ -0,0 +1,25 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.proxy;singleton:=true
+Bundle-Version: 0.7.0.qualifier
+Bundle-ClassPath: .
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Export-Package: org.eclipse.papyrus.proxy,
+ org.eclipse.papyrus.proxy.command,
+ org.eclipse.papyrus.proxy.proxy,
+ org.eclipse.papyrus.proxy.proxy.impl,
+ org.eclipse.papyrus.proxy.proxy.util
+Bundle-ActivationPolicy: lazy
+Require-Bundle: org.eclipse.osgi,
+ org.eclipse.ui.workbench,
+ org.eclipse.core.runtime;bundle-version="3.13.0",
+ org.eclipse.emf.ecore;visibility:=reexport,
+ org.eclipse.uml2.types;visibility:=reexport,
+ org.eclipse.uml2.uml;visibility:=reexport,
+ org.eclipse.papyrus.uml.extensionpoints;bundle-version="1.3.0",
+ org.eclipse.ui;bundle-version="3.109.0",
+ org.eclipse.emf.transaction
+Bundle-Activator: org.eclipse.papyrus.proxy.Activator
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/about.html b/plugins/proxy/org.eclipse.papyrus.proxy/about.html
new file mode 100644
index 0000000..d35d5ae
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/about.html
@@ -0,0 +1,28 @@
+<!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/plugins/proxy/org.eclipse.papyrus.proxy/build.properties b/plugins/proxy/org.eclipse.papyrus.proxy/build.properties
new file mode 100644
index 0000000..cc3c96b
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/build.properties
@@ -0,0 +1,11 @@
+#
+
+bin.includes = .,\
+               META-INF/,\
+               plugin.xml,\
+               plugin.properties,\
+               resource/
+jars.compile.order = .
+source.. = src-gen/,\
+           src/
+output.. = bin/
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/plugin.properties b/plugins/proxy/org.eclipse.papyrus.proxy/plugin.properties
new file mode 100644
index 0000000..e28a64e
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/plugin.properties
@@ -0,0 +1,14 @@
+#################################################################################
+# Copyright (c) 2008, 2017 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:
+#     Patrick Tessier (CEA LIST) Patrick.tessier@cea.fr - initial API and implementation
+##################################################################################
+pluginName=proxy plugin
+providerName=Eclipse Modeling Project
+
+pluginDescription=The goal of this plugin is to bring to other element of the environment
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/plugin.xml b/plugins/proxy/org.eclipse.papyrus.proxy/plugin.xml
new file mode 100644
index 0000000..a7b9aff
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/plugin.xml
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.0"?>
+
+<!--
+-->
+
+<plugin>
+
+   <extension point="org.eclipse.emf.ecore.generated_package">
+      <!-- @generated proxy -->
+      <package
+            uri="http://org.eclipse.papyrus/proxy"
+            class="org.eclipse.papyrus.proxy.proxy.ProxyPackage"
+            genModel="resource/profil/proxy.genmodel"/>
+   </extension>
+   <extension
+         point="org.eclipse.papyrus.uml.extensionpoints.UMLProfile">
+      <profile
+            description="This profile is used to connect to other model of file of this environment"
+            iconpath="resource/icons/reference.GIF"
+            name="Proxy profile"
+            path="platform:/plugin/org.eclipse.papyrus.proxy/resource/profil/Proxy.profile.uml"
+            qualifiednames="QSProject">
+      </profile>
+   </extension>
+   <extension
+         point="org.eclipse.uml2.uml.generated_package">
+      <profile
+            location="platform:/plugin/org.eclipse.papyrus.proxy/resource/profil/Proxy.profile.uml#_yTEaoK9cEeeX4J2fh1dVPQ"
+            uri="http://org.eclipse.papyrus/proxy">
+      </profile>
+   </extension>
+
+</plugin>
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/resource/icons/reference.GIF b/plugins/proxy/org.eclipse.papyrus.proxy/resource/icons/reference.GIF
new file mode 100644
index 0000000..4914941
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/resource/icons/reference.GIF
Binary files differ
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/resource/profil/Proxy.profile.di b/plugins/proxy/org.eclipse.papyrus.proxy/resource/profil/Proxy.profile.di
new file mode 100644
index 0000000..247ed5e
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/resource/profil/Proxy.profile.di
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<architecture:ArchitectureDescription xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:architecture="http://www.eclipse.org/papyrus/infra/core/architecture" contextId="org.eclipse.papyrus.uml.architecture.Profile"/>
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/resource/profil/Proxy.profile.notation b/plugins/proxy/org.eclipse.papyrus.proxy/resource/profil/Proxy.profile.notation
new file mode 100644
index 0000000..e11d2de
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/resource/profil/Proxy.profile.notation
@@ -0,0 +1,133 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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/gmfdiag/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xmi:id="_yYRqwK9cEeeX4J2fh1dVPQ" type="PapyrusUMLProfileDiagram" name="Profile Diagram" measurementUnit="Pixel">
+  <children xmi:type="notation:Shape" xmi:id="_2OGFwK9cEeeX4J2fh1dVPQ" type="Class_MetaclassShape">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2P-VEK9cEeeX4J2fh1dVPQ" source="Stereotype_Annotation">
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2P-8IK9cEeeX4J2fh1dVPQ" key="StereotypeWithQualifiedNameList" value=""/>
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2P-8Ia9cEeeX4J2fh1dVPQ" key="StereotypeList" value="StandardProfile::Metaclass"/>
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2P-8Iq9cEeeX4J2fh1dVPQ" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2P-8I69cEeeX4J2fh1dVPQ" key="PropStereoDisplay" value=""/>
+      <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2P-8JK9cEeeX4J2fh1dVPQ" key="StereotypePropertyLocation" value="Compartment"/>
+    </eAnnotations>
+    <children xmi:type="notation:DecorationNode" xmi:id="_2POHIK9cEeeX4J2fh1dVPQ" type="Class_MetaclassNameLabel"/>
+    <element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Element"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2POuMK9cEeeX4J2fh1dVPQ" x="380" y="80" width="141"/>
+  </children>
+  <children xmi:type="notation:Shape" xmi:id="_2WVbwK9cEeeX4J2fh1dVPQ" type="StereotypeComment">
+    <styles xmi:type="notation:TitleStyle" xmi:id="_2WVbwa9cEeeX4J2fh1dVPQ"/>
+    <styles xmi:type="notation:EObjectValueStyle" xmi:id="_2WWC0K9cEeeX4J2fh1dVPQ" name="BASE_ELEMENT">
+      <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Element"/>
+    </styles>
+    <element xsi:nil="true"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2WVbwq9cEeeX4J2fh1dVPQ" x="580" y="80"/>
+  </children>
+  <children xmi:type="notation:Shape" xmi:id="_3OsAEK9cEeeX4J2fh1dVPQ" type="Stereotype_Shape">
+    <children xmi:type="notation:DecorationNode" xmi:id="_3OtOMK9cEeeX4J2fh1dVPQ" type="Stereotype_NameLabel"/>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_3OvDYK9cEeeX4J2fh1dVPQ" type="Stereotype_AttributeCompartment">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_e73QkLIpEeeoUNX41D-9qA" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_e73QkbIpEeeoUNX41D-9qA" key="visible" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:Shape" xmi:id="_gq4XILIpEeeoUNX41D-9qA" type="Property_ClassAttributeLabel">
+        <element xmi:type="uml:Property" href="Proxy.profile.uml#_gqTvYLIpEeeoUNX41D-9qA"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_gq4XIbIpEeeoUNX41D-9qA"/>
+      </children>
+      <styles xmi:type="notation:TitleStyle" xmi:id="_3OvDYa9cEeeX4J2fh1dVPQ"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_3OvDYq9cEeeX4J2fh1dVPQ"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_3OvqcK9cEeeX4J2fh1dVPQ"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Ovqca9cEeeX4J2fh1dVPQ"/>
+    </children>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_3Ovqcq9cEeeX4J2fh1dVPQ" visible="false" type="Stereotype_OperationCompartment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_3Ovqc69cEeeX4J2fh1dVPQ"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_3OvqdK9cEeeX4J2fh1dVPQ"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_3Ovqda9cEeeX4J2fh1dVPQ"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3Ovqdq9cEeeX4J2fh1dVPQ"/>
+    </children>
+    <element xmi:type="uml:Stereotype" href="Proxy.profile.uml#_3OjdMK9cEeeX4J2fh1dVPQ"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3OsAEa9cEeeX4J2fh1dVPQ" x="520" y="420" height="81"/>
+  </children>
+  <children xmi:type="notation:Shape" xmi:id="_bk1d8bC2EeeytNa0G5wlRQ" type="Stereotype_Shape">
+    <children xmi:type="notation:DecorationNode" xmi:id="_bk1d87C2EeeytNa0G5wlRQ" type="Stereotype_NameLabel"/>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_bk_O8LC2EeeytNa0G5wlRQ" type="Stereotype_AttributeCompartment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_bk_O8bC2EeeytNa0G5wlRQ"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_bk_O8rC2EeeytNa0G5wlRQ"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_bk_O87C2EeeytNa0G5wlRQ"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bk_O9LC2EeeytNa0G5wlRQ"/>
+    </children>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_bk_O9bC2EeeytNa0G5wlRQ" visible="false" type="Stereotype_OperationCompartment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_bk_O9rC2EeeytNa0G5wlRQ"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_bk_O97C2EeeytNa0G5wlRQ"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_bk_O-LC2EeeytNa0G5wlRQ"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bk_O-bC2EeeytNa0G5wlRQ"/>
+    </children>
+    <element xmi:type="uml:Stereotype" href="Proxy.profile.uml#_bk1d8LC2EeeytNa0G5wlRQ"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bk1d8rC2EeeytNa0G5wlRQ" x="380" y="220" width="141"/>
+  </children>
+  <children xmi:type="notation:Shape" xmi:id="_-bGSMLC2EeeytNa0G5wlRQ" type="Stereotype_Shape">
+    <children xmi:type="notation:DecorationNode" xmi:id="_-bGSMrC2EeeytNa0G5wlRQ" type="Stereotype_NameLabel"/>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_-bGSM7C2EeeytNa0G5wlRQ" type="Stereotype_AttributeCompartment">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_PcN2QLIqEeeoUNX41D-9qA" source="PapyrusCSSForceValue">
+        <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PcT84LIqEeeoUNX41D-9qA" key="visible" value="true"/>
+      </eAnnotations>
+      <children xmi:type="notation:Shape" xmi:id="_RDFtcLIqEeeoUNX41D-9qA" type="Property_ClassAttributeLabel">
+        <element xmi:type="uml:Property" href="Proxy.profile.uml#__zn1kK9cEeeX4J2fh1dVPQ"/>
+        <layoutConstraint xmi:type="notation:Location" xmi:id="_RDFtcbIqEeeoUNX41D-9qA"/>
+      </children>
+      <styles xmi:type="notation:TitleStyle" xmi:id="_-bGSNLC2EeeytNa0G5wlRQ"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_-bGSNbC2EeeytNa0G5wlRQ"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_-bGSNrC2EeeytNa0G5wlRQ"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-bGSN7C2EeeytNa0G5wlRQ"/>
+    </children>
+    <children xmi:type="notation:BasicCompartment" xmi:id="_-bGSOLC2EeeytNa0G5wlRQ" visible="false" type="Stereotype_OperationCompartment">
+      <styles xmi:type="notation:TitleStyle" xmi:id="_-bGSObC2EeeytNa0G5wlRQ"/>
+      <styles xmi:type="notation:SortingStyle" xmi:id="_-bGSOrC2EeeytNa0G5wlRQ"/>
+      <styles xmi:type="notation:FilteringStyle" xmi:id="_-bGSO7C2EeeytNa0G5wlRQ"/>
+      <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-bGSPLC2EeeytNa0G5wlRQ"/>
+    </children>
+    <element xmi:type="uml:Stereotype" href="Proxy.profile.uml#_-a8hMLC2EeeytNa0G5wlRQ"/>
+    <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-bGSMbC2EeeytNa0G5wlRQ" x="180" y="420" width="181" height="81"/>
+  </children>
+  <styles xmi:type="notation:StringValueStyle" xmi:id="_yYRqwa9cEeeX4J2fh1dVPQ" name="diagram_compatibility_version" stringValue="1.3.0"/>
+  <styles xmi:type="notation:DiagramStyle" xmi:id="_yYRqwq9cEeeX4J2fh1dVPQ"/>
+  <styles xmi:type="style:PapyrusDiagramStyle" xmi:id="_yYRqw69cEeeX4J2fh1dVPQ" diagramKindId="org.eclipse.papyrus.uml.diagram.profile">
+    <owner xmi:type="uml:Profile" href="Proxy.profile.uml#_yTEaoK9cEeeX4J2fh1dVPQ"/>
+  </styles>
+  <element xmi:type="uml:Profile" href="Proxy.profile.uml#_yTEaoK9cEeeX4J2fh1dVPQ"/>
+  <edges xmi:type="notation:Connector" xmi:id="_2WcwgK9cEeeX4J2fh1dVPQ" type="StereotypeCommentLink" source="_2OGFwK9cEeeX4J2fh1dVPQ" target="_2WVbwK9cEeeX4J2fh1dVPQ">
+    <styles xmi:type="notation:FontStyle" xmi:id="_2Wcwga9cEeeX4J2fh1dVPQ"/>
+    <styles xmi:type="notation:EObjectValueStyle" xmi:id="_2WdXkq9cEeeX4J2fh1dVPQ" name="BASE_ELEMENT">
+      <eObjectValue xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Element"/>
+    </styles>
+    <element xsi:nil="true"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_2Wcwgq9cEeeX4J2fh1dVPQ" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2WdXkK9cEeeX4J2fh1dVPQ"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_2WdXka9cEeeX4J2fh1dVPQ"/>
+  </edges>
+  <edges xmi:type="notation:Connector" xmi:id="_fhv_cLC2EeeytNa0G5wlRQ" type="Extension_Edge" source="_bk1d8bC2EeeytNa0G5wlRQ" target="_2OGFwK9cEeeX4J2fh1dVPQ">
+    <styles xmi:type="notation:FontStyle" xmi:id="_fhv_cbC2EeeytNa0G5wlRQ"/>
+    <element xmi:type="uml:Extension" href="Proxy.profile.uml#_fhKJkLC2EeeytNa0G5wlRQ"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_fhv_crC2EeeytNa0G5wlRQ" points="[420, 220, -643984, -643984]$[440, 130, -643984, -643984]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fiV1ULC2EeeytNa0G5wlRQ" id="(0.425531914893617,0.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fiV1UbC2EeeytNa0G5wlRQ" id="(0.425531914893617,1.0)"/>
+  </edges>
+  <edges xmi:type="notation:Connector" xmi:id="_ucIUELC2EeeytNa0G5wlRQ" type="Generalization_Edge" source="_3OsAEK9cEeeX4J2fh1dVPQ" target="_bk1d8bC2EeeytNa0G5wlRQ" routing="Rectilinear">
+    <children xmi:type="notation:DecorationNode" xmi:id="_ucIUE7C2EeeytNa0G5wlRQ" type="Generalization_StereotypeLabel">
+      <styles xmi:type="notation:BooleanValueStyle" xmi:id="_wEIMoLC2EeeytNa0G5wlRQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_ucIUFLC2EeeytNa0G5wlRQ" x="-1" y="58"/>
+    </children>
+    <styles xmi:type="notation:FontStyle" xmi:id="_ucIUEbC2EeeytNa0G5wlRQ"/>
+    <element xmi:type="uml:Generalization" href="Proxy.profile.uml#_ubieMLC2EeeytNa0G5wlRQ"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ucIUErC2EeeytNa0G5wlRQ" points="[580, 420, -643984, -643984]$[580, 380, -643984, -643984]$[480, 380, -643984, -643984]$[480, 330, -643984, -643984]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_uclAALC2EeeytNa0G5wlRQ" id="(0.603448275862069,0.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_uclAAbC2EeeytNa0G5wlRQ" id="(0.7092198581560284,1.0)"/>
+  </edges>
+  <edges xmi:type="notation:Connector" xmi:id="_IbHloLC3EeeytNa0G5wlRQ" type="Generalization_Edge" source="_-bGSMLC2EeeytNa0G5wlRQ" target="_bk1d8bC2EeeytNa0G5wlRQ" routing="Rectilinear">
+    <children xmi:type="notation:DecorationNode" xmi:id="_IbHlo7C3EeeytNa0G5wlRQ" type="Generalization_StereotypeLabel">
+      <styles xmi:type="notation:BooleanValueStyle" xmi:id="_Iz9jcLC3EeeytNa0G5wlRQ" name="IS_UPDATED_POSITION" booleanValue="true"/>
+      <layoutConstraint xmi:type="notation:Location" xmi:id="_IbHlpLC3EeeytNa0G5wlRQ" y="59"/>
+    </children>
+    <styles xmi:type="notation:FontStyle" xmi:id="_IbHlobC3EeeytNa0G5wlRQ"/>
+    <element xmi:type="uml:Generalization" href="Proxy.profile.uml#_Ia0qsLC3EeeytNa0G5wlRQ"/>
+    <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_IbHlorC3EeeytNa0G5wlRQ" points="[340, 420, -643984, -643984]$[340, 380, -643984, -643984]$[420, 380, -643984, -643984]$[440, 326, -643984, -643984]"/>
+    <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_IbkRkLC3EeeytNa0G5wlRQ" id="(0.6629834254143646,0.0)"/>
+    <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_IbkRkbC3EeeytNa0G5wlRQ" id="(0.28368794326241137,1.0)"/>
+  </edges>
+</notation:Diagram>
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/resource/profil/Proxy.profile.uml b/plugins/proxy/org.eclipse.papyrus.proxy/resource/profil/Proxy.profile.uml
new file mode 100644
index 0000000..a8cd637
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/resource/profil/Proxy.profile.uml
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/5" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/5 pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA">
+  <uml:Profile xmi:id="_yTEaoK9cEeeX4J2fh1dVPQ" name="Proxy" metaclassReference="_2NiFEK9cEeeX4J2fh1dVPQ">
+    <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_OZDN4K9dEeeX4J2fh1dVPQ" source="http://www.eclipse.org/uml2/2.0.0/UML"/>
+    <elementImport xmi:type="uml:ElementImport" xmi:id="_2NiFEK9cEeeX4J2fh1dVPQ" alias="Element">
+      <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Element"/>
+    </elementImport>
+    <elementImport xmi:type="uml:ElementImport" xmi:id="_5ceMkLKZEeeXdNpCuqJQzg" alias="EObject">
+      <importedElement xmi:type="uml:Class" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EObject"/>
+    </elementImport>
+    <packageImport xmi:type="uml:PackageImport" xmi:id="_yjh4gK9cEeeX4J2fh1dVPQ">
+      <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
+    </packageImport>
+    <packageImport xmi:type="uml:PackageImport" xmi:id="_yjk70K9cEeeX4J2fh1dVPQ">
+      <importedPackage xmi:type="uml:Model" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_0"/>
+    </packageImport>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_3OjdMK9cEeeX4J2fh1dVPQ" name="EcoreReference">
+      <generalization xmi:type="uml:Generalization" xmi:id="_ubieMLC2EeeytNa0G5wlRQ" general="_bk1d8LC2EeeytNa0G5wlRQ"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_gqTvYLIpEeeoUNX41D-9qA" name="ref" visibility="public">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_METAMODELS/Ecore.metamodel.uml#EObject"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uQyMILIpEeeoUNX41D-9qA"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uQ6vALIpEeeoUNX41D-9qA" value="1"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_bk1d8LC2EeeytNa0G5wlRQ" name="Proxy" isAbstract="true">
+      <ownedAttribute xmi:type="uml:Property" xmi:id="_fhTTgbC2EeeytNa0G5wlRQ" name="base_Element" association="_fhKJkLC2EeeytNa0G5wlRQ">
+        <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Element"/>
+      </ownedAttribute>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Extension" xmi:id="_fhKJkLC2EeeytNa0G5wlRQ" name="E_Proxy_Element1" memberEnd="_fhTTgLC2EeeytNa0G5wlRQ _fhTTgbC2EeeytNa0G5wlRQ">
+      <ownedEnd xmi:type="uml:ExtensionEnd" xmi:id="_fhTTgLC2EeeytNa0G5wlRQ" name="extension_Proxy" type="_bk1d8LC2EeeytNa0G5wlRQ" aggregation="composite" association="_fhKJkLC2EeeytNa0G5wlRQ"/>
+    </packagedElement>
+    <packagedElement xmi:type="uml:Stereotype" xmi:id="_-a8hMLC2EeeytNa0G5wlRQ" name="FileReference">
+      <generalization xmi:type="uml:Generalization" xmi:id="_Ia0qsLC3EeeytNa0G5wlRQ" general="_bk1d8LC2EeeytNa0G5wlRQ"/>
+      <ownedAttribute xmi:type="uml:Property" xmi:id="__zn1kK9cEeeX4J2fh1dVPQ" name="ref" visibility="public">
+        <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+        <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_H_tGMK9dEeeX4J2fh1dVPQ"/>
+        <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_H_5TcK9dEeeX4J2fh1dVPQ" value="1"/>
+        <defaultValue xmi:type="uml:LiteralString" xmi:id="_U-8dkLA-Eee0iN1NNqo2iQ" name="defaultValue" value=" "/>
+      </ownedAttribute>
+    </packagedElement>
+    <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_3d2l8LA3Eee0iN1NNqo2iQ">
+      <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_3d_v4LA3Eee0iN1NNqo2iQ" 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 xmi:type="uml:Profile" href="pathmap://UML_PROFILES/Ecore.profile.uml#_0"/>
+    </profileApplication>
+  </uml:Profile>
+  <Ecore:EPackage xmi:id="_4zZckLA3Eee0iN1NNqo2iQ" base_Package="_yTEaoK9cEeeX4J2fh1dVPQ" packageName="proxy" nsURI="http://org.eclipse.papyrus/proxy" basePackage="org.eclipse.papyrus.proxy" prefix="Proxy"/>
+</xmi:XMI>
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/resource/profil/proxy.ecore b/plugins/proxy/org.eclipse.papyrus.proxy/resource/profil/proxy.ecore
new file mode 100644
index 0000000..ade38b8
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/resource/profil/proxy.ecore
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ecore:EPackage xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" name="proxy" nsURI="http://org.eclipse.papyrus/proxy" nsPrefix="Proxy">
+  <eAnnotations source="http://www.eclipse.org/uml2/2.0.0/UML">
+    <details key="originalName" value="Proxy"/>
+  </eAnnotations>
+  <eClassifiers xsi:type="ecore:EClass" name="EcoreReference" eSuperTypes="#//Proxy">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="ref" ordered="false" eType="ecore:EClass ../../../org.eclipse.emf.ecore/model/Ecore.ecore#//EObject"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="Proxy" abstract="true">
+    <eStructuralFeatures xsi:type="ecore:EReference" name="base_Element" ordered="false"
+        lowerBound="1" eType="ecore:EClass ../../../org.eclipse.uml2.uml/model/UML.ecore#//Element"/>
+  </eClassifiers>
+  <eClassifiers xsi:type="ecore:EClass" name="FileReference" eSuperTypes="#//Proxy">
+    <eStructuralFeatures xsi:type="ecore:EAttribute" name="ref" ordered="false" eType="ecore:EDataType ../../../org.eclipse.uml2.types/model/Types.ecore#//String"
+        defaultValueLiteral=" "/>
+  </eClassifiers>
+</ecore:EPackage>
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/resource/profil/proxy.genmodel b/plugins/proxy/org.eclipse.papyrus.proxy/resource/profil/proxy.genmodel
new file mode 100644
index 0000000..fdfb1ce
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/resource/profil/proxy.genmodel
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<genmodel:GenModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:genmodel="http://www.eclipse.org/uml2/2.2.0/GenModel"
+    modelDirectory="/org.eclipse.papyrus.proxy/src-gen" editDirectory="/org.eclipse.papyrus.proxy.edit/src-gen"
+    editorDirectory="/org.eclipse.papyrus.proxy.editor/src-gen" modelPluginID="org.eclipse.papyrus.proxy"
+    modelName="Proxy" rootExtendsClass="org.eclipse.emf.ecore.impl.MinimalEObjectImpl$Container"
+    importerID="org.eclipse.uml2.uml.ecore.importer" complianceLevel="8.0" copyrightFields="false"
+    usedGenPackages="../../../org.eclipse.emf.ecore/model/Ecore.genmodel#//ecore ../../../org.eclipse.uml2.types/model/Types.genmodel#//types ../../../org.eclipse.uml2.uml/model/UML.genmodel#//uml"
+    operationReflection="true" importOrganizing="true">
+  <genAnnotations source="http://www.eclipse.org/emf/2002/GenModel/importer/org.eclipse.uml2.uml.ecore.importer">
+    <details key="OPPOSITE_ROLE_NAMES" value="IGNORE"/>
+    <details key="DUPLICATE_FEATURES" value="DISCARD"/>
+    <details key="ANNOTATION_DETAILS" value="PROCESS"/>
+    <details key="PROPERTY_DEFAULT_EXPRESSIONS" value="IGNORE"/>
+    <details key="DUPLICATE_FEATURE_INHERITANCE" value="DISCARD"/>
+    <details key="COMMENTS" value="PROCESS"/>
+    <details key="DERIVED_FEATURES" value="PROCESS"/>
+    <details key="SUPER_CLASS_ORDER" value="PROCESS"/>
+    <details key="DUPLICATE_OPERATION_INHERITANCE" value="DISCARD"/>
+    <details key="REDEFINING_OPERATIONS" value="REPORT"/>
+    <details key="INVARIANT_CONSTRAINTS" value="PROCESS"/>
+    <details key="UNION_PROPERTIES" value="REPORT"/>
+    <details key="DUPLICATE_OPERATIONS" value="DISCARD"/>
+    <details key="NON_API_INVARIANTS" value="IGNORE"/>
+    <details key="CAMEL_CASE_NAMES" value="IGNORE"/>
+    <details key="SUBSETTING_PROPERTIES" value="REPORT"/>
+    <details key="OPERATION_BODIES" value="IGNORE"/>
+    <details key="ECORE_TAGGED_VALUES" value="PROCESS"/>
+    <details key="UNTYPED_PROPERTIES" value="REPORT"/>
+    <details key="REDEFINING_PROPERTIES" value="REPORT"/>
+    <details key="INVOCATION_DELEGATES" value="IGNORE"/>
+    <details key="VALIDATION_DELEGATES" value="IGNORE"/>
+  </genAnnotations>
+  <foreignModel>Proxy.profile.uml</foreignModel>
+  <genPackages xsi:type="genmodel:GenPackage" prefix="Proxy" basePackage="org.eclipse.papyrus.proxy"
+      disposableProviderFactory="true" ecorePackage="proxy.ecore#/">
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="proxy.ecore#//EcoreReference">
+      <genFeatures xsi:type="genmodel:GenFeature" property="None" children="true"
+          createChild="true" ecoreFeature="ecore:EReference proxy.ecore#//EcoreReference/ref"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" image="false" ecoreClass="proxy.ecore#//Proxy">
+      <genFeatures xsi:type="genmodel:GenFeature" notify="false" createChild="false"
+          propertySortChoices="true" ecoreFeature="ecore:EReference proxy.ecore#//Proxy/base_Element"/>
+    </genClasses>
+    <genClasses xsi:type="genmodel:GenClass" ecoreClass="proxy.ecore#//FileReference">
+      <genFeatures xsi:type="genmodel:GenFeature" createChild="false" ecoreFeature="ecore:EAttribute proxy.ecore#//FileReference/ref"/>
+    </genClasses>
+  </genPackages>
+</genmodel:GenModel>
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/EcoreReference.java b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/EcoreReference.java
new file mode 100644
index 0000000..99db3ef
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/EcoreReference.java
@@ -0,0 +1,51 @@
+/**
+ */
+package org.eclipse.papyrus.proxy.proxy;
+
+import org.eclipse.emf.ecore.EObject;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Ecore Reference</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.proxy.proxy.EcoreReference#getRef <em>Ref</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.proxy.proxy.ProxyPackage#getEcoreReference()
+ * @model
+ * @generated
+ */
+public interface EcoreReference extends Proxy {
+
+	/**
+	 * Returns the value of the '<em><b>Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Ref</em>' containment reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Ref</em>' reference.
+	 * @see #setRef(EObject)
+	 * @see org.eclipse.papyrus.proxy.proxy.ProxyPackage#getEcoreReference_Ref()
+	 * @model ordered="false"
+	 * @generated
+	 */
+	EObject getRef();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.proxy.proxy.EcoreReference#getRef <em>Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Ref</em>' reference.
+	 * @see #getRef()
+	 * @generated
+	 */
+	void setRef(EObject value);
+} // EcoreReference
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/FileReference.java b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/FileReference.java
new file mode 100644
index 0000000..97ba139
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/FileReference.java
@@ -0,0 +1,50 @@
+/**
+ */
+package org.eclipse.papyrus.proxy.proxy;
+
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>File Reference</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.proxy.proxy.FileReference#getRef <em>Ref</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.proxy.proxy.ProxyPackage#getFileReference()
+ * @model
+ * @generated
+ */
+public interface FileReference extends Proxy {
+
+	/**
+	 * Returns the value of the '<em><b>Ref</b></em>' attribute.
+	 * The default value is <code>" "</code>.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Ref</em>' attribute isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Ref</em>' attribute.
+	 * @see #setRef(String)
+	 * @see org.eclipse.papyrus.proxy.proxy.ProxyPackage#getFileReference_Ref()
+	 * @model default=" " dataType="org.eclipse.uml2.types.String" ordered="false"
+	 * @generated
+	 */
+	String getRef();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.proxy.proxy.FileReference#getRef <em>Ref</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Ref</em>' attribute.
+	 * @see #getRef()
+	 * @generated
+	 */
+	void setRef(String value);
+} // FileReference
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/Proxy.java b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/Proxy.java
new file mode 100644
index 0000000..3313a71
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/Proxy.java
@@ -0,0 +1,52 @@
+/**
+ */
+package org.eclipse.papyrus.proxy.proxy;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.uml2.uml.Element;
+
+/**
+ * <!-- begin-user-doc -->
+ * A representation of the model object '<em><b>Proxy</b></em>'.
+ * <!-- end-user-doc -->
+ *
+ * <p>
+ * The following features are supported:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.proxy.proxy.Proxy#getBase_Element <em>Base Element</em>}</li>
+ * </ul>
+ *
+ * @see org.eclipse.papyrus.proxy.proxy.ProxyPackage#getProxy()
+ * @model abstract="true"
+ * @generated
+ */
+public interface Proxy extends EObject {
+	/**
+	 * Returns the value of the '<em><b>Base Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <p>
+	 * If the meaning of the '<em>Base Element</em>' reference isn't clear,
+	 * there really should be more of a description here...
+	 * </p>
+	 * <!-- end-user-doc -->
+	 * @return the value of the '<em>Base Element</em>' reference.
+	 * @see #setBase_Element(Element)
+	 * @see org.eclipse.papyrus.proxy.proxy.ProxyPackage#getProxy_Base_Element()
+	 * @model required="true" ordered="false"
+	 * @generated
+	 */
+	Element getBase_Element();
+
+	/**
+	 * Sets the value of the '{@link org.eclipse.papyrus.proxy.proxy.Proxy#getBase_Element <em>Base Element</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param value the new value of the '<em>Base Element</em>' reference.
+	 * @see #getBase_Element()
+	 * @generated
+	 */
+	void setBase_Element(Element value);
+
+} // Proxy
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/ProxyFactory.java b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/ProxyFactory.java
new file mode 100644
index 0000000..fec923c
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/ProxyFactory.java
@@ -0,0 +1,51 @@
+/**
+ */
+package org.eclipse.papyrus.proxy.proxy;
+
+import org.eclipse.emf.ecore.EFactory;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Factory</b> for the model.
+ * It provides a create method for each non-abstract class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.proxy.proxy.ProxyPackage
+ * @generated
+ */
+public interface ProxyFactory extends EFactory {
+	/**
+	 * The singleton instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	ProxyFactory eINSTANCE = org.eclipse.papyrus.proxy.proxy.impl.ProxyFactoryImpl.init();
+
+	/**
+	 * Returns a new object of class '<em>Ecore Reference</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>Ecore Reference</em>'.
+	 * @generated
+	 */
+	EcoreReference createEcoreReference();
+
+	/**
+	 * Returns a new object of class '<em>File Reference</em>'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return a new object of class '<em>File Reference</em>'.
+	 * @generated
+	 */
+	FileReference createFileReference();
+
+	/**
+	 * Returns the package supported by this factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the package supported by this factory.
+	 * @generated
+	 */
+	ProxyPackage getProxyPackage();
+
+} //ProxyFactory
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/ProxyPackage.java b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/ProxyPackage.java
new file mode 100644
index 0000000..88a26a4
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/ProxyPackage.java
@@ -0,0 +1,332 @@
+/**
+ */
+package org.eclipse.papyrus.proxy.proxy;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ *   <li>each class,</li>
+ *   <li>each feature of each class,</li>
+ *   <li>each operation of each class,</li>
+ *   <li>each enum,</li>
+ *   <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.proxy.proxy.ProxyFactory
+ * @model kind="package"
+ *        annotation="http://www.eclipse.org/uml2/2.0.0/UML originalName='Proxy'"
+ * @generated
+ */
+public interface ProxyPackage extends EPackage {
+	/**
+	 * The package name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNAME = "proxy";
+
+	/**
+	 * The package namespace URI.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_URI = "http://org.eclipse.papyrus/proxy";
+
+	/**
+	 * The package namespace name.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	String eNS_PREFIX = "Proxy";
+
+	/**
+	 * The singleton instance of the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	ProxyPackage eINSTANCE = org.eclipse.papyrus.proxy.proxy.impl.ProxyPackageImpl.init();
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.proxy.proxy.impl.ProxyImpl <em>Proxy</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.proxy.proxy.impl.ProxyImpl
+	 * @see org.eclipse.papyrus.proxy.proxy.impl.ProxyPackageImpl#getProxy()
+	 * @generated
+	 */
+	int PROXY = 1;
+
+	/**
+	 * The feature id for the '<em><b>Base Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROXY__BASE_ELEMENT = 0;
+
+	/**
+	 * The number of structural features of the '<em>Proxy</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROXY_FEATURE_COUNT = 1;
+
+	/**
+	 * The number of operations of the '<em>Proxy</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int PROXY_OPERATION_COUNT = 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.proxy.proxy.impl.EcoreReferenceImpl <em>Ecore Reference</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.proxy.proxy.impl.EcoreReferenceImpl
+	 * @see org.eclipse.papyrus.proxy.proxy.impl.ProxyPackageImpl#getEcoreReference()
+	 * @generated
+	 */
+	int ECORE_REFERENCE = 0;
+
+	/**
+	 * The feature id for the '<em><b>Base Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ECORE_REFERENCE__BASE_ELEMENT = PROXY__BASE_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Ref</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ECORE_REFERENCE__REF = PROXY_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>Ecore Reference</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ECORE_REFERENCE_FEATURE_COUNT = PROXY_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>Ecore Reference</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int ECORE_REFERENCE_OPERATION_COUNT = PROXY_OPERATION_COUNT + 0;
+
+	/**
+	 * The meta object id for the '{@link org.eclipse.papyrus.proxy.proxy.impl.FileReferenceImpl <em>File Reference</em>}' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.papyrus.proxy.proxy.impl.FileReferenceImpl
+	 * @see org.eclipse.papyrus.proxy.proxy.impl.ProxyPackageImpl#getFileReference()
+	 * @generated
+	 */
+	int FILE_REFERENCE = 2;
+
+	/**
+	 * The feature id for the '<em><b>Base Element</b></em>' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FILE_REFERENCE__BASE_ELEMENT = PROXY__BASE_ELEMENT;
+
+	/**
+	 * The feature id for the '<em><b>Ref</b></em>' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FILE_REFERENCE__REF = PROXY_FEATURE_COUNT + 0;
+
+	/**
+	 * The number of structural features of the '<em>File Reference</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FILE_REFERENCE_FEATURE_COUNT = PROXY_FEATURE_COUNT + 1;
+
+	/**
+	 * The number of operations of the '<em>File Reference</em>' class.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 * @ordered
+	 */
+	int FILE_REFERENCE_OPERATION_COUNT = PROXY_OPERATION_COUNT + 0;
+
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.proxy.proxy.EcoreReference <em>Ecore Reference</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Ecore Reference</em>'.
+	 * @see org.eclipse.papyrus.proxy.proxy.EcoreReference
+	 * @generated
+	 */
+	EClass getEcoreReference();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.proxy.proxy.EcoreReference#getRef <em>Ref</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Ref</em>'.
+	 * @see org.eclipse.papyrus.proxy.proxy.EcoreReference#getRef()
+	 * @see #getEcoreReference()
+	 * @generated
+	 */
+	EReference getEcoreReference_Ref();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.proxy.proxy.Proxy <em>Proxy</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>Proxy</em>'.
+	 * @see org.eclipse.papyrus.proxy.proxy.Proxy
+	 * @generated
+	 */
+	EClass getProxy();
+
+	/**
+	 * Returns the meta object for the reference '{@link org.eclipse.papyrus.proxy.proxy.Proxy#getBase_Element <em>Base Element</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the reference '<em>Base Element</em>'.
+	 * @see org.eclipse.papyrus.proxy.proxy.Proxy#getBase_Element()
+	 * @see #getProxy()
+	 * @generated
+	 */
+	EReference getProxy_Base_Element();
+
+	/**
+	 * Returns the meta object for class '{@link org.eclipse.papyrus.proxy.proxy.FileReference <em>File Reference</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for class '<em>File Reference</em>'.
+	 * @see org.eclipse.papyrus.proxy.proxy.FileReference
+	 * @generated
+	 */
+	EClass getFileReference();
+
+	/**
+	 * Returns the meta object for the attribute '{@link org.eclipse.papyrus.proxy.proxy.FileReference#getRef <em>Ref</em>}'.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the meta object for the attribute '<em>Ref</em>'.
+	 * @see org.eclipse.papyrus.proxy.proxy.FileReference#getRef()
+	 * @see #getFileReference()
+	 * @generated
+	 */
+	EAttribute getFileReference_Ref();
+
+	/**
+	 * Returns the factory that creates the instances of the model.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the factory that creates the instances of the model.
+	 * @generated
+	 */
+	ProxyFactory getProxyFactory();
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * Defines literals for the meta objects that represent
+	 * <ul>
+	 *   <li>each class,</li>
+	 *   <li>each feature of each class,</li>
+	 *   <li>each operation of each class,</li>
+	 *   <li>each enum,</li>
+	 *   <li>and each data type</li>
+	 * </ul>
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	interface Literals {
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.proxy.proxy.impl.EcoreReferenceImpl <em>Ecore Reference</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.proxy.proxy.impl.EcoreReferenceImpl
+		 * @see org.eclipse.papyrus.proxy.proxy.impl.ProxyPackageImpl#getEcoreReference()
+		 * @generated
+		 */
+		EClass ECORE_REFERENCE = eINSTANCE.getEcoreReference();
+
+		/**
+		 * The meta object literal for the '<em><b>Ref</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference ECORE_REFERENCE__REF = eINSTANCE.getEcoreReference_Ref();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.proxy.proxy.impl.ProxyImpl <em>Proxy</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.proxy.proxy.impl.ProxyImpl
+		 * @see org.eclipse.papyrus.proxy.proxy.impl.ProxyPackageImpl#getProxy()
+		 * @generated
+		 */
+		EClass PROXY = eINSTANCE.getProxy();
+
+		/**
+		 * The meta object literal for the '<em><b>Base Element</b></em>' reference feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EReference PROXY__BASE_ELEMENT = eINSTANCE.getProxy_Base_Element();
+
+		/**
+		 * The meta object literal for the '{@link org.eclipse.papyrus.proxy.proxy.impl.FileReferenceImpl <em>File Reference</em>}' class.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @see org.eclipse.papyrus.proxy.proxy.impl.FileReferenceImpl
+		 * @see org.eclipse.papyrus.proxy.proxy.impl.ProxyPackageImpl#getFileReference()
+		 * @generated
+		 */
+		EClass FILE_REFERENCE = eINSTANCE.getFileReference();
+
+		/**
+		 * The meta object literal for the '<em><b>Ref</b></em>' attribute feature.
+		 * <!-- begin-user-doc -->
+		 * <!-- end-user-doc -->
+		 * @generated
+		 */
+		EAttribute FILE_REFERENCE__REF = eINSTANCE.getFileReference_Ref();
+
+	}
+
+} //ProxyPackage
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/impl/EcoreReferenceImpl.java b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/impl/EcoreReferenceImpl.java
new file mode 100644
index 0000000..0652627
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/impl/EcoreReferenceImpl.java
@@ -0,0 +1,153 @@
+/**
+ */
+package org.eclipse.papyrus.proxy.proxy.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.InternalEObject;
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.papyrus.proxy.proxy.EcoreReference;
+import org.eclipse.papyrus.proxy.proxy.ProxyPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Ecore Reference</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.proxy.proxy.impl.EcoreReferenceImpl#getRef <em>Ref</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class EcoreReferenceImpl extends ProxyImpl implements EcoreReference {
+	/**
+	 * The cached value of the '{@link #getRef() <em>Ref</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRef()
+	 * @generated
+	 * @ordered
+	 */
+	protected EObject ref;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected EcoreReferenceImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ProxyPackage.Literals.ECORE_REFERENCE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EObject getRef() {
+		if (ref != null && ref.eIsProxy()) {
+			InternalEObject oldRef = (InternalEObject)ref;
+			ref = eResolveProxy(oldRef);
+			if (ref != oldRef) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProxyPackage.ECORE_REFERENCE__REF, oldRef, ref));
+			}
+		}
+		return ref;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EObject basicGetRef() {
+		return ref;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setRef(EObject newRef) {
+		EObject oldRef = ref;
+		ref = newRef;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ProxyPackage.ECORE_REFERENCE__REF, oldRef, ref));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ProxyPackage.ECORE_REFERENCE__REF:
+				if (resolve) return getRef();
+				return basicGetRef();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ProxyPackage.ECORE_REFERENCE__REF:
+				setRef((EObject)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ProxyPackage.ECORE_REFERENCE__REF:
+				setRef((EObject)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ProxyPackage.ECORE_REFERENCE__REF:
+				return ref != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} // EcoreReferenceImpl
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/impl/FileReferenceImpl.java b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/impl/FileReferenceImpl.java
new file mode 100644
index 0000000..7e23955
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/impl/FileReferenceImpl.java
@@ -0,0 +1,159 @@
+/**
+ */
+package org.eclipse.papyrus.proxy.proxy.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EClass;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.papyrus.proxy.proxy.FileReference;
+import org.eclipse.papyrus.proxy.proxy.ProxyPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>File Reference</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.proxy.proxy.impl.FileReferenceImpl#getRef <em>Ref</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public class FileReferenceImpl extends ProxyImpl implements FileReference {
+	/**
+	 * The default value of the '{@link #getRef() <em>Ref</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRef()
+	 * @generated
+	 * @ordered
+	 */
+	protected static final String REF_EDEFAULT = " ";
+	/**
+	 * The cached value of the '{@link #getRef() <em>Ref</em>}' attribute.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getRef()
+	 * @generated
+	 * @ordered
+	 */
+	protected String ref = REF_EDEFAULT;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected FileReferenceImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ProxyPackage.Literals.FILE_REFERENCE;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public String getRef() {
+		return ref;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setRef(String newRef) {
+		String oldRef = ref;
+		ref = newRef;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ProxyPackage.FILE_REFERENCE__REF, oldRef, ref));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ProxyPackage.FILE_REFERENCE__REF:
+				return getRef();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ProxyPackage.FILE_REFERENCE__REF:
+				setRef((String)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ProxyPackage.FILE_REFERENCE__REF:
+				setRef(REF_EDEFAULT);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ProxyPackage.FILE_REFERENCE__REF:
+				return REF_EDEFAULT == null ? ref != null : !REF_EDEFAULT.equals(ref);
+		}
+		return super.eIsSet(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public String toString() {
+		if (eIsProxy()) return super.toString();
+
+		StringBuffer result = new StringBuffer(super.toString());
+		result.append(" (ref: ");
+		result.append(ref);
+		result.append(')');
+		return result.toString();
+	}
+
+} //FileReferenceImpl
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/impl/ProxyFactoryImpl.java b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/impl/ProxyFactoryImpl.java
new file mode 100644
index 0000000..738643c
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/impl/ProxyFactoryImpl.java
@@ -0,0 +1,107 @@
+/**
+ */
+package org.eclipse.papyrus.proxy.proxy.impl;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.impl.EFactoryImpl;
+import org.eclipse.emf.ecore.plugin.EcorePlugin;
+import org.eclipse.papyrus.proxy.proxy.*;
+import org.eclipse.papyrus.proxy.proxy.EcoreReference;
+import org.eclipse.papyrus.proxy.proxy.FileReference;
+import org.eclipse.papyrus.proxy.proxy.ProxyFactory;
+import org.eclipse.papyrus.proxy.proxy.ProxyPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Factory</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ProxyFactoryImpl extends EFactoryImpl implements ProxyFactory {
+	/**
+	 * Creates the default factory implementation.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public static ProxyFactory init() {
+		try {
+			ProxyFactory theProxyFactory = (ProxyFactory)EPackage.Registry.INSTANCE.getEFactory(ProxyPackage.eNS_URI);
+			if (theProxyFactory != null) {
+				return theProxyFactory;
+			}
+		}
+		catch (Exception exception) {
+			EcorePlugin.INSTANCE.log(exception);
+		}
+		return new ProxyFactoryImpl();
+	}
+
+	/**
+	 * Creates an instance of the factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ProxyFactoryImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public EObject create(EClass eClass) {
+		switch (eClass.getClassifierID()) {
+			case ProxyPackage.ECORE_REFERENCE: return createEcoreReference();
+			case ProxyPackage.FILE_REFERENCE: return createFileReference();
+			default:
+				throw new IllegalArgumentException("The class '" + eClass.getName() + "' is not a valid classifier");
+		}
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EcoreReference createEcoreReference() {
+		EcoreReferenceImpl ecoreReference = new EcoreReferenceImpl();
+		return ecoreReference;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public FileReference createFileReference() {
+		FileReferenceImpl fileReference = new FileReferenceImpl();
+		return fileReference;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ProxyPackage getProxyPackage() {
+		return (ProxyPackage)getEPackage();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @deprecated
+	 * @generated
+	 */
+	@Deprecated
+	public static ProxyPackage getPackage() {
+		return ProxyPackage.eINSTANCE;
+	}
+
+} // ProxyFactoryImpl
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/impl/ProxyImpl.java b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/impl/ProxyImpl.java
new file mode 100644
index 0000000..537996f
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/impl/ProxyImpl.java
@@ -0,0 +1,158 @@
+/**
+ */
+package org.eclipse.papyrus.proxy.proxy.impl;
+
+import org.eclipse.emf.common.notify.Notification;
+
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.InternalEObject;
+
+import org.eclipse.emf.ecore.impl.ENotificationImpl;
+import org.eclipse.emf.ecore.impl.MinimalEObjectImpl;
+
+import org.eclipse.papyrus.proxy.proxy.Proxy;
+import org.eclipse.papyrus.proxy.proxy.ProxyPackage;
+
+import org.eclipse.uml2.uml.Element;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model object '<em><b>Proxy</b></em>'.
+ * <!-- end-user-doc -->
+ * <p>
+ * The following features are implemented:
+ * </p>
+ * <ul>
+ *   <li>{@link org.eclipse.papyrus.proxy.proxy.impl.ProxyImpl#getBase_Element <em>Base Element</em>}</li>
+ * </ul>
+ *
+ * @generated
+ */
+public abstract class ProxyImpl extends MinimalEObjectImpl.Container implements Proxy {
+	/**
+	 * The cached value of the '{@link #getBase_Element() <em>Base Element</em>}' reference.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #getBase_Element()
+	 * @generated
+	 * @ordered
+	 */
+	protected Element base_Element;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ProxyImpl() {
+		super();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	protected EClass eStaticClass() {
+		return ProxyPackage.Literals.PROXY;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Element getBase_Element() {
+		if (base_Element != null && base_Element.eIsProxy()) {
+			InternalEObject oldBase_Element = (InternalEObject)base_Element;
+			base_Element = (Element)eResolveProxy(oldBase_Element);
+			if (base_Element != oldBase_Element) {
+				if (eNotificationRequired())
+					eNotify(new ENotificationImpl(this, Notification.RESOLVE, ProxyPackage.PROXY__BASE_ELEMENT, oldBase_Element, base_Element));
+			}
+		}
+		return base_Element;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public Element basicGetBase_Element() {
+		return base_Element;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void setBase_Element(Element newBase_Element) {
+		Element oldBase_Element = base_Element;
+		base_Element = newBase_Element;
+		if (eNotificationRequired())
+			eNotify(new ENotificationImpl(this, Notification.SET, ProxyPackage.PROXY__BASE_ELEMENT, oldBase_Element, base_Element));
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public Object eGet(int featureID, boolean resolve, boolean coreType) {
+		switch (featureID) {
+			case ProxyPackage.PROXY__BASE_ELEMENT:
+				if (resolve) return getBase_Element();
+				return basicGetBase_Element();
+		}
+		return super.eGet(featureID, resolve, coreType);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eSet(int featureID, Object newValue) {
+		switch (featureID) {
+			case ProxyPackage.PROXY__BASE_ELEMENT:
+				setBase_Element((Element)newValue);
+				return;
+		}
+		super.eSet(featureID, newValue);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public void eUnset(int featureID) {
+		switch (featureID) {
+			case ProxyPackage.PROXY__BASE_ELEMENT:
+				setBase_Element((Element)null);
+				return;
+		}
+		super.eUnset(featureID);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	@Override
+	public boolean eIsSet(int featureID) {
+		switch (featureID) {
+			case ProxyPackage.PROXY__BASE_ELEMENT:
+				return base_Element != null;
+		}
+		return super.eIsSet(featureID);
+	}
+
+} //ProxyImpl
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/impl/ProxyPackageImpl.java b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/impl/ProxyPackageImpl.java
new file mode 100644
index 0000000..4d6b480
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/impl/ProxyPackageImpl.java
@@ -0,0 +1,278 @@
+/**
+ */
+package org.eclipse.papyrus.proxy.proxy.impl;
+
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.emf.ecore.EcorePackage;
+
+import org.eclipse.emf.ecore.impl.EPackageImpl;
+
+import org.eclipse.papyrus.proxy.proxy.EcoreReference;
+import org.eclipse.papyrus.proxy.proxy.FileReference;
+import org.eclipse.papyrus.proxy.proxy.Proxy;
+import org.eclipse.papyrus.proxy.proxy.ProxyFactory;
+import org.eclipse.papyrus.proxy.proxy.ProxyPackage;
+import org.eclipse.uml2.types.TypesPackage;
+
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ * <!-- begin-user-doc -->
+ * An implementation of the model <b>Package</b>.
+ * <!-- end-user-doc -->
+ * @generated
+ */
+public class ProxyPackageImpl extends EPackageImpl implements ProxyPackage {
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass ecoreReferenceEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass proxyEClass = null;
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private EClass fileReferenceEClass = null;
+
+	/**
+	 * Creates an instance of the model <b>Package</b>, registered with
+	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
+	 * package URI value.
+	 * <p>Note: the correct way to create the package is via the static
+	 * factory method {@link #init init()}, which also performs
+	 * initialization of the package, or returns the registered package,
+	 * if one already exists.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see org.eclipse.emf.ecore.EPackage.Registry
+	 * @see org.eclipse.papyrus.proxy.proxy.ProxyPackage#eNS_URI
+	 * @see #init()
+	 * @generated
+	 */
+	private ProxyPackageImpl() {
+		super(eNS_URI, ProxyFactory.eINSTANCE);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private static boolean isInited = false;
+
+	/**
+	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
+	 * 
+	 * <p>This method is used to initialize {@link ProxyPackage#eINSTANCE} when that field is accessed.
+	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @see #eNS_URI
+	 * @see #createPackageContents()
+	 * @see #initializePackageContents()
+	 * @generated
+	 */
+	public static ProxyPackage init() {
+		if (isInited) return (ProxyPackage)EPackage.Registry.INSTANCE.getEPackage(ProxyPackage.eNS_URI);
+
+		// Obtain or create and register package
+		ProxyPackageImpl theProxyPackage = (ProxyPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof ProxyPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new ProxyPackageImpl());
+
+		isInited = true;
+
+		// Initialize simple dependencies
+		EcorePackage.eINSTANCE.eClass();
+		TypesPackage.eINSTANCE.eClass();
+		UMLPackage.eINSTANCE.eClass();
+
+		// Create package meta-data objects
+		theProxyPackage.createPackageContents();
+
+		// Initialize created meta-data
+		theProxyPackage.initializePackageContents();
+
+		// Mark meta-data to indicate it can't be changed
+		theProxyPackage.freeze();
+
+  
+		// Update the registry and return the package
+		EPackage.Registry.INSTANCE.put(ProxyPackage.eNS_URI, theProxyPackage);
+		return theProxyPackage;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getEcoreReference() {
+		return ecoreReferenceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getEcoreReference_Ref() {
+		return (EReference)ecoreReferenceEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getProxy() {
+		return proxyEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EReference getProxy_Base_Element() {
+		return (EReference)proxyEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EClass getFileReference() {
+		return fileReferenceEClass;
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public EAttribute getFileReference_Ref() {
+		return (EAttribute)fileReferenceEClass.getEStructuralFeatures().get(0);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ProxyFactory getProxyFactory() {
+		return (ProxyFactory)getEFactoryInstance();
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isCreated = false;
+
+	/**
+	 * Creates the meta-model objects for the package.  This method is
+	 * guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void createPackageContents() {
+		if (isCreated) return;
+		isCreated = true;
+
+		// Create classes and their features
+		ecoreReferenceEClass = createEClass(ECORE_REFERENCE);
+		createEReference(ecoreReferenceEClass, ECORE_REFERENCE__REF);
+
+		proxyEClass = createEClass(PROXY);
+		createEReference(proxyEClass, PROXY__BASE_ELEMENT);
+
+		fileReferenceEClass = createEClass(FILE_REFERENCE);
+		createEAttribute(fileReferenceEClass, FILE_REFERENCE__REF);
+	}
+
+	/**
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	private boolean isInitialized = false;
+
+	/**
+	 * Complete the initialization of the package and its meta-model.  This
+	 * method is guarded to have no affect on any invocation but its first.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public void initializePackageContents() {
+		if (isInitialized) return;
+		isInitialized = true;
+
+		// Initialize package
+		setName(eNAME);
+		setNsPrefix(eNS_PREFIX);
+		setNsURI(eNS_URI);
+
+		// Obtain other dependent packages
+		EcorePackage theEcorePackage = (EcorePackage)EPackage.Registry.INSTANCE.getEPackage(EcorePackage.eNS_URI);
+		UMLPackage theUMLPackage = (UMLPackage)EPackage.Registry.INSTANCE.getEPackage(UMLPackage.eNS_URI);
+		TypesPackage theTypesPackage = (TypesPackage)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
+
+		// Create type parameters
+
+		// Set bounds for type parameters
+
+		// Add supertypes to classes
+		ecoreReferenceEClass.getESuperTypes().add(this.getProxy());
+		fileReferenceEClass.getESuperTypes().add(this.getProxy());
+
+		// Initialize classes, features, and operations; add parameters
+		initEClass(ecoreReferenceEClass, EcoreReference.class, "EcoreReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getEcoreReference_Ref(), theEcorePackage.getEObject(), null, "ref", null, 0, 1, EcoreReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		initEClass(proxyEClass, Proxy.class, "Proxy", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEReference(getProxy_Base_Element(), theUMLPackage.getElement(), null, "base_Element", null, 1, 1, Proxy.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		initEClass(fileReferenceEClass, FileReference.class, "FileReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
+		initEAttribute(getFileReference_Ref(), theTypesPackage.getString(), "ref", " ", 0, 1, FileReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, !IS_ORDERED);
+
+		// Create resource
+		createResource(eNS_URI);
+
+		// Create annotations
+		// http://www.eclipse.org/uml2/2.0.0/UML
+		createUMLAnnotations();
+	}
+
+	/**
+	 * Initializes the annotations for <b>http://www.eclipse.org/uml2/2.0.0/UML</b>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected void createUMLAnnotations() {
+		String source = "http://www.eclipse.org/uml2/2.0.0/UML";	
+		addAnnotation
+		  (this, 
+		   source, 
+		   new String[] {
+			 "originalName", "Proxy"
+		   });
+	}
+
+} //ProxyPackageImpl
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/util/ProxyAdapterFactory.java b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/util/ProxyAdapterFactory.java
new file mode 100644
index 0000000..f13cde4
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/util/ProxyAdapterFactory.java
@@ -0,0 +1,156 @@
+/**
+ */
+package org.eclipse.papyrus.proxy.proxy.util;
+
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notifier;
+
+import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl;
+
+import org.eclipse.emf.ecore.EObject;
+
+import org.eclipse.papyrus.proxy.proxy.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Adapter Factory</b> for the model.
+ * It provides an adapter <code>createXXX</code> method for each class of the model.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.proxy.proxy.ProxyPackage
+ * @generated
+ */
+public class ProxyAdapterFactory extends AdapterFactoryImpl {
+	/**
+	 * The cached model package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static ProxyPackage modelPackage;
+
+	/**
+	 * Creates an instance of the adapter factory.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ProxyAdapterFactory() {
+		if (modelPackage == null) {
+			modelPackage = ProxyPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Returns whether this factory is applicable for the type of the object.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns <code>true</code> if the object is either the model's package or is an instance object of the model.
+	 * <!-- end-user-doc -->
+	 * @return whether this factory is applicable for the type of the object.
+	 * @generated
+	 */
+	@Override
+	public boolean isFactoryForType(Object object) {
+		if (object == modelPackage) {
+			return true;
+		}
+		if (object instanceof EObject) {
+			return ((EObject)object).eClass().getEPackage() == modelPackage;
+		}
+		return false;
+	}
+
+	/**
+	 * The switch that delegates to the <code>createXXX</code> methods.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected ProxySwitch<Adapter> modelSwitch =
+		new ProxySwitch<Adapter>() {
+			@Override
+			public Adapter caseEcoreReference(EcoreReference object) {
+				return createEcoreReferenceAdapter();
+			}
+			@Override
+			public Adapter caseProxy(Proxy object) {
+				return createProxyAdapter();
+			}
+			@Override
+			public Adapter caseFileReference(FileReference object) {
+				return createFileReferenceAdapter();
+			}
+			@Override
+			public Adapter defaultCase(EObject object) {
+				return createEObjectAdapter();
+			}
+		};
+
+	/**
+	 * Creates an adapter for the <code>target</code>.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param target the object to adapt.
+	 * @return the adapter for the <code>target</code>.
+	 * @generated
+	 */
+	@Override
+	public Adapter createAdapter(Notifier target) {
+		return modelSwitch.doSwitch((EObject)target);
+	}
+
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.proxy.proxy.EcoreReference <em>Ecore Reference</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.proxy.proxy.EcoreReference
+	 * @generated
+	 */
+	public Adapter createEcoreReferenceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.proxy.proxy.Proxy <em>Proxy</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.proxy.proxy.Proxy
+	 * @generated
+	 */
+	public Adapter createProxyAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for an object of class '{@link org.eclipse.papyrus.proxy.proxy.FileReference <em>File Reference</em>}'.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null so that we can easily ignore cases;
+	 * it's useful to ignore a case when inheritance will catch all the cases anyway.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @see org.eclipse.papyrus.proxy.proxy.FileReference
+	 * @generated
+	 */
+	public Adapter createFileReferenceAdapter() {
+		return null;
+	}
+
+	/**
+	 * Creates a new adapter for the default case.
+	 * <!-- begin-user-doc -->
+	 * This default implementation returns null.
+	 * <!-- end-user-doc -->
+	 * @return the new adapter.
+	 * @generated
+	 */
+	public Adapter createEObjectAdapter() {
+		return null;
+	}
+
+} //ProxyAdapterFactory
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/util/ProxySwitch.java b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/util/ProxySwitch.java
new file mode 100644
index 0000000..dcd46be
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/src-gen/org/eclipse/papyrus/proxy/proxy/util/ProxySwitch.java
@@ -0,0 +1,154 @@
+/**
+ */
+package org.eclipse.papyrus.proxy.proxy.util;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+
+import org.eclipse.emf.ecore.util.Switch;
+
+import org.eclipse.papyrus.proxy.proxy.*;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Switch</b> for the model's inheritance hierarchy.
+ * It supports the call {@link #doSwitch(EObject) doSwitch(object)}
+ * to invoke the <code>caseXXX</code> method for each class of the model,
+ * starting with the actual class of the object
+ * and proceeding up the inheritance hierarchy
+ * until a non-null result is returned,
+ * which is the result of the switch.
+ * <!-- end-user-doc -->
+ * @see org.eclipse.papyrus.proxy.proxy.ProxyPackage
+ * @generated
+ */
+public class ProxySwitch<T> extends Switch<T> {
+	/**
+	 * The cached model package
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	protected static ProxyPackage modelPackage;
+
+	/**
+	 * Creates an instance of the switch.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @generated
+	 */
+	public ProxySwitch() {
+		if (modelPackage == null) {
+			modelPackage = ProxyPackage.eINSTANCE;
+		}
+	}
+
+	/**
+	 * Checks whether this is a switch for the given package.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @param ePackage the package in question.
+	 * @return whether this is a switch for the given package.
+	 * @generated
+	 */
+	@Override
+	protected boolean isSwitchFor(EPackage ePackage) {
+		return ePackage == modelPackage;
+	}
+
+	/**
+	 * Calls <code>caseXXX</code> for each class of the model until one returns a non null result; it yields that result.
+	 * <!-- begin-user-doc -->
+	 * <!-- end-user-doc -->
+	 * @return the first non-null result returned by a <code>caseXXX</code> call.
+	 * @generated
+	 */
+	@Override
+	protected T doSwitch(int classifierID, EObject theEObject) {
+		switch (classifierID) {
+			case ProxyPackage.ECORE_REFERENCE: {
+				EcoreReference ecoreReference = (EcoreReference)theEObject;
+				T result = caseEcoreReference(ecoreReference);
+				if (result == null) result = caseProxy(ecoreReference);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ProxyPackage.PROXY: {
+				Proxy proxy = (Proxy)theEObject;
+				T result = caseProxy(proxy);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			case ProxyPackage.FILE_REFERENCE: {
+				FileReference fileReference = (FileReference)theEObject;
+				T result = caseFileReference(fileReference);
+				if (result == null) result = caseProxy(fileReference);
+				if (result == null) result = defaultCase(theEObject);
+				return result;
+			}
+			default: return defaultCase(theEObject);
+		}
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Ecore Reference</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Ecore Reference</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseEcoreReference(EcoreReference object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>Proxy</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>Proxy</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseProxy(Proxy object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>File Reference</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>File Reference</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject) doSwitch(EObject)
+	 * @generated
+	 */
+	public T caseFileReference(FileReference object) {
+		return null;
+	}
+
+	/**
+	 * Returns the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * <!-- begin-user-doc -->
+	 * This implementation returns null;
+	 * returning a non-null result will terminate the switch, but this is the last case anyway.
+	 * <!-- end-user-doc -->
+	 * @param object the target of the switch.
+	 * @return the result of interpreting the object as an instance of '<em>EObject</em>'.
+	 * @see #doSwitch(org.eclipse.emf.ecore.EObject)
+	 * @generated
+	 */
+	@Override
+	public T defaultCase(EObject object) {
+		return null;
+	}
+
+} //ProxySwitch
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/src/org/eclipse/papyrus/proxy/Activator.java b/plugins/proxy/org.eclipse.papyrus.proxy/src/org/eclipse/papyrus/proxy/Activator.java
new file mode 100644
index 0000000..17b55e4
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/src/org/eclipse/papyrus/proxy/Activator.java
@@ -0,0 +1,54 @@
+package org.eclipse.papyrus.proxy;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * This class manage the launch and stop of the plugin
+ *
+ */
+public class Activator extends AbstractUIPlugin {
+
+	/** The plug-in ID **/
+	public static final String PLUGIN_ID = "org.eclipse.papyrus.proxy"; //$NON-NLS-1$
+
+	// The shared instance
+	private static Activator plugin;
+
+	/**
+	 * The constructor
+	 */
+	public Activator() {
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+	 */
+	public void start(BundleContext context) throws Exception {
+		super.start(context);
+		plugin = this;
+	}
+
+	/*
+	 * (non-Javadoc)
+	 * 
+	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+	 */
+	public void stop(BundleContext context) throws Exception {
+		plugin = null;
+		super.stop(context);
+	}
+
+	/**
+	 * Returns the shared instance
+	 *
+	 * @return the shared instance
+	 */
+	public static Activator getDefault() {
+		return plugin;
+	}
+
+
+}
diff --git a/plugins/proxy/org.eclipse.papyrus.proxy/src/org/eclipse/papyrus/proxy/command/SetEReferenceCommand.java b/plugins/proxy/org.eclipse.papyrus.proxy/src/org/eclipse/papyrus/proxy/command/SetEReferenceCommand.java
new file mode 100644
index 0000000..0ca763b
--- /dev/null
+++ b/plugins/proxy/org.eclipse.papyrus.proxy/src/org/eclipse/papyrus/proxy/command/SetEReferenceCommand.java
@@ -0,0 +1,56 @@
+/*****************************************************************************
+ * Copyright (c)  2017 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:
+ *  Patrick Tessier (CEA LIST) patrick.tessier@cea.fr - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.proxy.command;
+
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.papyrus.proxy.proxy.EcoreReference;
+import org.eclipse.uml2.uml.Element;
+import org.eclipse.uml2.uml.util.UMLUtil;
+
+/**
+ * this command is used to create a refeence to an EcoreReference Sterotype application
+ *
+ */
+public class SetEReferenceCommand extends RecordingCommand {
+
+
+	private Element ecoreReferenceElement;
+	private EObject eobject;
+
+	/**
+	 * use to create a review
+	 * 
+	 * @param domain
+	 *            the transactional editing domain in order to execute the command
+	 * @param ecoreReferenceElement
+	 *            the uml element that can reference an eObject
+	 * @param eobject
+	 *            the eobject
+	 */
+	public SetEReferenceCommand(TransactionalEditingDomain domain, Element ecoreReferenceElement, EObject eobject) {
+		super(domain, "create Review");
+		this.ecoreReferenceElement = ecoreReferenceElement;
+		this.eobject = eobject;
+	}
+
+	@Override
+	protected void doExecute() {
+
+		EcoreReference ecoreReferenceApp = UMLUtil.getStereotypeApplication(ecoreReferenceElement, EcoreReference.class);
+		ecoreReferenceApp.setRef(eobject);
+	}
+
+}